diff --git a/images/activity-bar-fold-m.svg b/images/activity-bar-fold-m.svg new file mode 100644 index 0000000..0a44b6e --- /dev/null +++ b/images/activity-bar-fold-m.svg @@ -0,0 +1,9 @@ + diff --git a/media/preview.css b/media/preview.css index cd9a46e..b7b43d9 100644 --- a/media/preview.css +++ b/media/preview.css @@ -1,9 +1,39 @@ :root { color-scheme: light dark; + --sm-scrollbar-size: 10px; + --sm-scrollbar-track: transparent; + --sm-scrollbar-thumb: rgba(127, 127, 127, 0.38); + --sm-scrollbar-thumb-hover: rgba(127, 127, 127, 0.58); } * { box-sizing: border-box; + scrollbar-color: var(--sm-scrollbar-thumb) var(--sm-scrollbar-track); + scrollbar-width: thin; +} + +*::-webkit-scrollbar { + width: var(--sm-scrollbar-size); + height: var(--sm-scrollbar-size); +} + +*::-webkit-scrollbar-track { + background: var(--sm-scrollbar-track); +} + +*::-webkit-scrollbar-thumb { + min-height: 36px; + border: 2px solid var(--sm-scrollbar-track); + border-radius: 999px; + background-color: var(--sm-scrollbar-thumb); +} + +*::-webkit-scrollbar-thumb:hover { + background-color: var(--sm-scrollbar-thumb-hover); +} + +*::-webkit-scrollbar-corner { + background: var(--sm-scrollbar-track); } html, @@ -38,6 +68,9 @@ body { --sm-quote-text: var(--vscode-textBlockQuote-foreground); --sm-table-header-bg: var(--vscode-editorWidget-background); --sm-focus: var(--vscode-focusBorder); + --sm-scrollbar-track: color-mix(in srgb, var(--sm-page-bg) 94%, var(--sm-border)); + --sm-scrollbar-thumb: color-mix(in srgb, var(--sm-muted) 44%, transparent); + --sm-scrollbar-thumb-hover: color-mix(in srgb, var(--sm-muted) 68%, var(--sm-border)); background: var(--sm-page-bg); color: var(--sm-text); @@ -1498,14 +1531,24 @@ body.sm-theme-high-contrast .diagram-block:not(.render-block-tone-light) { white-space: pre; } -body.vscode-dark .code-block:not(.render-block-tone-light) .shiki, -body.vscode-high-contrast .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-system.vscode-dark .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-system.vscode-high-contrast .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-dark .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-forest .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-ink .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-terminal .code-block:not(.render-block-tone-light) .shiki, +body.sm-theme-high-contrast .code-block:not(.render-block-tone-light) .shiki, .code-block.render-block-tone-dark .shiki { color: var(--shiki-dark, var(--sm-render-block-text)); } -body.vscode-dark .code-block:not(.render-block-tone-light) .shiki span, -body.vscode-high-contrast .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-system.vscode-dark .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-system.vscode-high-contrast .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-dark .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-forest .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-ink .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-terminal .code-block:not(.render-block-tone-light) .shiki span, +body.sm-theme-high-contrast .code-block:not(.render-block-tone-light) .shiki span, .code-block.render-block-tone-dark .shiki span { color: var(--shiki-dark, var(--sm-render-block-text)); } @@ -1516,8 +1559,8 @@ body.vscode-high-contrast .code-block:not(.render-block-tone-light) .shiki span, } @media (prefers-color-scheme: dark) { - body:not(.vscode-light) .code-block:not(.render-block-tone-light) .shiki, - body:not(.vscode-light) .code-block:not(.render-block-tone-light) .shiki span { + body.sm-theme-system:not(.vscode-light) .code-block:not(.render-block-tone-light) .shiki, + body.sm-theme-system:not(.vscode-light) .code-block:not(.render-block-tone-light) .shiki span { color: var(--shiki-dark, var(--sm-render-block-text)); } } diff --git a/media/wysiwyg/editor-runtime.ts b/media/wysiwyg/editor-runtime.ts index a2d532c..cffa310 100644 --- a/media/wysiwyg/editor-runtime.ts +++ b/media/wysiwyg/editor-runtime.ts @@ -20,6 +20,7 @@ import { listener, listenerCtx } from "@milkdown/kit/plugin/listener"; import { clipboard } from "@milkdown/kit/plugin/clipboard"; import { history } from "@milkdown/kit/plugin/history"; import { trailing } from "@milkdown/kit/plugin/trailing"; +import { upload, uploadConfig } from "@milkdown/kit/plugin/upload"; import { $nodeSchema, $remark, callCommand, getMarkdown, insert, replaceAll, replaceRange } from "@milkdown/kit/utils"; import { CODE_BLOCK_CLASSES, @@ -64,18 +65,21 @@ type Payload = { translations?: { toolbar?: Record; noHeadings?: string; + outlineRevealCurrent?: string; + outlineCollapse?: string; copiedCode?: string; copyCode?: string; - codeTheme?: string; - codeThemeAuto?: string; - codeThemeLight?: string; - codeThemeDark?: string; - editLanguage?: string; - mathEdit?: string; - mathDone?: string; - rawHtmlEscaped?: string; - }; - }; + codeTheme?: string; + codeThemeAuto?: string; + codeThemeLight?: string; + codeThemeDark?: string; + editLanguage?: string; + mathEdit?: string; + mathDone?: string; + rawHtmlEscaped?: string; + footnote?: string; + }; +}; const vscode = acquireVsCodeApi(); const payloadElement = document.getElementById("payload") as HTMLElement | null; @@ -109,7 +113,8 @@ const visualLabels = { editLanguage: translations.editLanguage || "Edit language", mathEdit: translations.mathEdit || "Edit", mathDone: translations.mathDone || "Done", - rawHtmlEscaped: translations.rawHtmlEscaped || "Raw HTML escaped" + rawHtmlEscaped: translations.rawHtmlEscaped || "Raw HTML escaped", + footnote: translations.footnote || "Footnote" }; const mathRenderOptions = { katexEnabled: payload.katexEnabled !== false }; const sourceEditor = mustElement("source-editor"); @@ -122,10 +127,18 @@ const sidePanelCollapseElement = document.getElementById("side-panel-collapse") const outlineCurrentElement = document.getElementById("outline-current") as HTMLButtonElement | null; const outlineElement = mustElement("outline"); const searchElement = mustElement("outline-search"); +const editorPanelElement = document.querySelector(".editor-panel") as HTMLElement | null; +const previewPanelElement = document.querySelector(".preview-panel") as HTMLElement | null; +const splitResizerElement = document.getElementById("split-resizer") as HTMLElement | null; +const initialRuntimeState = readRuntimeState(); +const DEFAULT_SPLIT_RATIO = 0.5; +const SPLIT_KEYBOARD_STEP = 0.03; +const SPLIT_MIN_PANE_WIDTH = 240; let currentMarkdown = payload.text || ""; let currentMode = normalizeMode(payload.mode || "source"); let currentLayout = normalizeLayout(payload.layout || "workbench"); +let splitRatio = normalizeSplitRatio(initialRuntimeState.splitRatio); let previewState = normalizePreviewState(payload.preview); let imageResources = normalizeImageResources(payload.imageResources); let milkdownEditor: Editor | null = null; @@ -143,6 +156,31 @@ let activeSourceSelection = { start: 0, end: 0 }; let sidePanelOpen = false; let currentOutlineHeadings: PreviewState["headings"] = []; let activeOutlineId = ""; +let hoverTooltipTimer: number | undefined; +let hoverTooltipElement: HTMLElement | null = null; +let hoverTooltipTarget: HTMLElement | null = null; +let splitResizePointerId: number | null = null; +const HOVER_TOOLTIP_TARGET_SELECTOR = [ + "[data-hover-tooltip]", + ".toolbar-button", + ".toolbar-menu-button", + ".side-panel-toggle", + ".outline-tool", + ".outline-item", + ".visual-math-inline", + ".visual-footnote-reference", + ".visual-html-source", + ".mermaid-render-error", + `.${CODE_BLOCK_CLASSES.language}`, + `.${CODE_BLOCK_CLASSES.toneButton}`, + `.${CODE_BLOCK_CLASSES.copyButton}` +].join(","); + +type UploadedMarkdownImage = { id?: string; name?: string; markdown: string }; +const pendingImageUploads = new Map void; + reject: (error: unknown) => void; +}>(); async function boot(): Promise { try { @@ -151,6 +189,7 @@ async function boot(): Promise { renderPreview(); renderSidePanels(currentMarkdown); bindEvents(); + applySplitRatio(false); applyLayout(); setScriptState("runtime-ready", "ready"); post("ready"); @@ -205,6 +244,25 @@ function normalizeLayout(layout: string): string { return ["workbench", "editorOnly", "splitEdit", "previewOnly"].includes(layout) ? layout : "workbench"; } +function readRuntimeState(): Record { + const state = vscode.getState(); + return state && typeof state === "object" ? state as Record : {}; +} + +function saveRuntimeState(update: Record): void { + vscode.setState({ ...readRuntimeState(), ...update }); +} + +function normalizeSplitRatio(value: unknown): number { + return typeof value === "number" && Number.isFinite(value) + ? clamp(value, 0.2, 0.8) + : DEFAULT_SPLIT_RATIO; +} + +function clamp(value: number, min: number, max: number): number { + return Math.min(Math.max(value, min), max); +} + function normalizePreviewState(value: unknown): PreviewState | null { if (!value || typeof value !== "object") { return null; @@ -307,12 +365,12 @@ function renderToolbarItem(action: string): string { } function toolbarButton(action: string, title: string, icon: string): string { - return ``; + return ``; } function toolbarMenu(action: string, title: string, icon: string, menuActions: string[], className: string): string { return `
- @@ -324,7 +382,7 @@ function toolbarMenu(action: string, title: string, icon: string, menuActions: s function toolbarMenuButton(action: string): string { const title = toolbarTitle(action); - return ``; @@ -363,6 +421,7 @@ function toolbarTitle(action: string): string { more: label("more", "More"), organizeMarkdown: label("organizeMarkdown", "Organize Markdown"), switchBackgroundTheme: label("switchBackgroundTheme", "Switch Reading Theme"), + switchDisplayLanguage: label("switchDisplayLanguage", "Switch display language"), help: label("help", "Help"), "export-html": `${label("export", "Export")} HTML`, "export-pdf": `${label("export", "Export")} PDF`, @@ -379,6 +438,13 @@ function bindEvents(): void { syncMilkdownFromMarkdown(currentMarkdown); syncToHost(); }); + sourceEditor.addEventListener("paste", (event) => { + void handleSourceImagePaste(event); + }); + sourceEditor.addEventListener("dragover", handleSourceImageDragOver); + sourceEditor.addEventListener("drop", (event) => { + void handleSourceImageDrop(event); + }); for (const eventName of ["focus", "select", "click", "keyup", "mouseup"]) { sourceEditor.addEventListener(eventName, rememberSourceSelection); } @@ -403,11 +469,20 @@ function bindEvents(): void { }); previewElement.addEventListener("click", handleCodeBlockActionClick); visualEditor.addEventListener("click", handleCodeBlockActionClick); + visualEditor.addEventListener("paste", (event) => { + void handleVisualImagePaste(event); + }); + visualEditor.addEventListener("dragover", handleVisualImageDragOver); + visualEditor.addEventListener("drop", (event) => { + void handleVisualImageDrop(event); + }); sidePanelToggleElement.addEventListener("click", toggleSidePanelFromEvent); sidePanelCollapseElement?.addEventListener("click", () => setSidePanelOpen(false)); outlineCurrentElement?.addEventListener("click", revealActiveOutlineItem); searchElement.addEventListener("input", () => renderSidePanels(currentMarkdown)); outlineElement.addEventListener("click", handleOutlineClick); + bindHoverTooltips(); + bindSplitResizer(); document.addEventListener("click", (event) => { if (!toolbarElement.contains(event.target as Node)) { closeToolbarMenus(); @@ -421,6 +496,234 @@ function bindEvents(): void { window.addEventListener("message", handleHostMessage); } +function bindHoverTooltips(): void { + document.addEventListener("mouseover", (event) => { + const target = getHoverTooltipTarget(event.target); + if (!target || target.contains(event.relatedTarget as Node | null)) { + return; + } + scheduleHoverTooltip(target); + }); + document.addEventListener("mouseout", (event) => { + const target = getHoverTooltipTarget(event.target); + if (!target || target.contains(event.relatedTarget as Node | null)) { + return; + } + hideHoverTooltip(); + }); + document.addEventListener("focusin", (event) => { + const target = getHoverTooltipTarget(event.target); + if (target) { + scheduleHoverTooltip(target); + } + }); + document.addEventListener("focusout", hideHoverTooltip); + document.addEventListener("click", (event) => { + if (getHoverTooltipTarget(event.target)) { + hideHoverTooltip(); + } + }); + window.addEventListener("scroll", hideHoverTooltip, true); + window.addEventListener("resize", hideHoverTooltip); +} + +function getHoverTooltipTarget(target: EventTarget | null): HTMLElement | null { + return closestElement(target, HOVER_TOOLTIP_TARGET_SELECTOR); +} + +function scheduleHoverTooltip(target: HTMLElement): void { + const title = target.getAttribute("title") || ""; + const text = target.dataset.hoverTooltip || title || target.getAttribute("aria-label") || ""; + if (!text.trim()) { + return; + } + if (!target.dataset.hoverTooltip) { + target.dataset.hoverTooltip = text; + } + if (title) { + target.removeAttribute("title"); + } + hideHoverTooltip(); + hoverTooltipTarget = target; + hoverTooltipTimer = window.setTimeout(() => showHoverTooltip(target, text), 500); +} + +function showHoverTooltip(target: HTMLElement, text: string): void { + const tooltip = ensureHoverTooltip(); + tooltip.textContent = text; + tooltip.style.visibility = "hidden"; + tooltip.classList.add("is-visible"); + target.setAttribute("aria-describedby", tooltip.id); + + const targetRect = target.getBoundingClientRect(); + const tooltipRect = tooltip.getBoundingClientRect(); + const gap = 8; + const viewportPadding = 8; + const maxLeft = Math.max(viewportPadding, window.innerWidth - tooltipRect.width - viewportPadding); + const left = Math.min( + Math.max(viewportPadding, targetRect.left + targetRect.width / 2 - tooltipRect.width / 2), + maxLeft + ); + const bottomTop = targetRect.bottom + gap; + const top = bottomTop + tooltipRect.height <= window.innerHeight - viewportPadding + ? bottomTop + : Math.max(viewportPadding, targetRect.top - tooltipRect.height - gap); + + tooltip.style.left = `${Math.round(left)}px`; + tooltip.style.top = `${Math.round(top)}px`; + tooltip.style.visibility = ""; +} + +function ensureHoverTooltip(): HTMLElement { + if (hoverTooltipElement) { + return hoverTooltipElement; + } + hoverTooltipElement = document.createElement("div"); + hoverTooltipElement.id = "hover-tooltip"; + hoverTooltipElement.className = "hover-tooltip"; + hoverTooltipElement.setAttribute("role", "tooltip"); + document.body.appendChild(hoverTooltipElement); + return hoverTooltipElement; +} + +function hideHoverTooltip(): void { + window.clearTimeout(hoverTooltipTimer); + hoverTooltipTimer = undefined; + hoverTooltipTarget?.removeAttribute("aria-describedby"); + hoverTooltipTarget = null; + if (hoverTooltipElement) { + hoverTooltipElement.classList.remove("is-visible"); + hoverTooltipElement.removeAttribute("style"); + } +} + +function bindSplitResizer(): void { + if (!splitResizerElement) { + return; + } + splitResizerElement.addEventListener("pointerdown", beginSplitResize); + splitResizerElement.addEventListener("pointermove", handleSplitResizePointerMove); + splitResizerElement.addEventListener("pointerup", endSplitResize); + splitResizerElement.addEventListener("pointercancel", endSplitResize); + splitResizerElement.addEventListener("lostpointercapture", endSplitResize); + splitResizerElement.addEventListener("dblclick", () => setSplitRatio(DEFAULT_SPLIT_RATIO, true)); + splitResizerElement.addEventListener("keydown", handleSplitResizeKeydown); + window.addEventListener("resize", () => applySplitRatio(false)); +} + +function beginSplitResize(event: PointerEvent): void { + if (!isSplitResizeAvailable() || event.button !== 0 || !splitResizerElement) { + return; + } + event.preventDefault(); + hideHoverTooltip(); + splitResizePointerId = event.pointerId; + splitResizerElement.setPointerCapture(event.pointerId); + document.body.classList.add("is-resizing-split"); + updateSplitRatioFromClientX(event.clientX); +} + +function handleSplitResizePointerMove(event: PointerEvent): void { + if (splitResizePointerId !== event.pointerId) { + return; + } + event.preventDefault(); + updateSplitRatioFromClientX(event.clientX); +} + +function endSplitResize(event?: PointerEvent): void { + if (splitResizePointerId === null) { + return; + } + if (event && event.pointerId !== splitResizePointerId) { + return; + } + if (event && splitResizerElement?.hasPointerCapture(event.pointerId)) { + splitResizerElement.releasePointerCapture(event.pointerId); + } + splitResizePointerId = null; + document.body.classList.remove("is-resizing-split"); +} + +function handleSplitResizeKeydown(event: KeyboardEvent): void { + if (!isSplitResizeAvailable()) { + return; + } + if (event.key === "ArrowLeft") { + event.preventDefault(); + setSplitRatio(splitRatio - SPLIT_KEYBOARD_STEP, true); + } else if (event.key === "ArrowRight") { + event.preventDefault(); + setSplitRatio(splitRatio + SPLIT_KEYBOARD_STEP, true); + } else if (event.key === "Home") { + event.preventDefault(); + setSplitRatio(0.2, true); + } else if (event.key === "End") { + event.preventDefault(); + setSplitRatio(0.8, true); + } else if (event.key === "Enter" || event.key === " ") { + event.preventDefault(); + setSplitRatio(DEFAULT_SPLIT_RATIO, true); + } +} + +function updateSplitRatioFromClientX(clientX: number): void { + const bounds = getSplitResizeBounds(); + if (!bounds) { + return; + } + setSplitRatio((clientX - bounds.left) / bounds.width, true, bounds.width); +} + +function getSplitResizeBounds(): { left: number; width: number } | null { + if (!editorPanelElement || !previewPanelElement) { + return null; + } + const editorRect = editorPanelElement.getBoundingClientRect(); + const previewRect = previewPanelElement.getBoundingClientRect(); + const left = editorRect.left; + const right = previewRect.right; + const width = right - left; + return width > 0 ? { left, width } : null; +} + +function setSplitRatio(nextRatio: number, persist: boolean, availableWidth?: number): void { + const bounds = availableWidth === undefined ? getSplitResizeBounds() : { width: availableWidth }; + splitRatio = clampSplitRatio(nextRatio, bounds?.width); + applySplitRatio(persist); +} + +function applySplitRatio(persist: boolean): void { + const editorSize = Math.round(splitRatio * 1000) / 1000; + const previewSize = Math.round((1 - splitRatio) * 1000) / 1000; + document.body.style.setProperty("--sm-split-editor-size", `${editorSize}fr`); + document.body.style.setProperty("--sm-split-preview-size", `${previewSize}fr`); + if (splitResizerElement) { + const percentage = Math.round(splitRatio * 100); + splitResizerElement.setAttribute("aria-valuenow", String(percentage)); + splitResizerElement.setAttribute("aria-valuetext", `${percentage}%`); + splitResizerElement.setAttribute("aria-hidden", isSplitResizeAvailable() ? "false" : "true"); + } + if (persist) { + saveRuntimeState({ splitRatio }); + } +} + +function clampSplitRatio(nextRatio: number, availableWidth?: number): number { + if (!Number.isFinite(nextRatio)) { + return splitRatio; + } + if (!availableWidth || availableWidth <= 0) { + return clamp(nextRatio, 0.2, 0.8); + } + const minimumRatio = Math.min(0.45, SPLIT_MIN_PANE_WIDTH / availableWidth); + return clamp(nextRatio, minimumRatio, 1 - minimumRatio); +} + +function isSplitResizeAvailable(): boolean { + return Boolean(splitResizerElement && (currentMode === "split" || currentLayout === "splitEdit") && window.innerWidth > 820); +} + function handleHostMessage(event: MessageEvent): void { const message = event.data || {}; if (message.type === "setMarkdown" && typeof message.text === "string") { @@ -436,12 +739,200 @@ function handleHostMessage(event: MessageEvent): void { } applyLayout(); } else if (message.type === "uploadImagesResult") { + handleUploadImagesResult(message); + } +} + +function handleUploadImagesResult(message: { requestId?: unknown; images?: unknown; error?: unknown }): void { + const requestId = typeof message.requestId === "string" ? message.requestId : ""; + const pending = requestId ? pendingImageUploads.get(requestId) : undefined; + if (pending) { + pendingImageUploads.delete(requestId); if (Array.isArray(message.images)) { - insertMarkdown(message.images.map((image: { markdown?: string }) => image.markdown).filter(Boolean).join("\n")); - } else if (message.error !== undefined) { - insertMarkdown("![alt](image.png)"); - post("error", { message: getErrorMessage(message.error) }); + pending.resolve(normalizeUploadedMarkdownImages(message.images)); + } else { + pending.reject(message.error === undefined ? new Error("Image upload failed") : message.error); + } + return; + } + + if (Array.isArray(message.images)) { + insertMarkdown(markdownFromUploadedImages(normalizeUploadedMarkdownImages(message.images))); + } else if (message.error !== undefined) { + post("error", { message: getErrorMessage(message.error) }); + } +} + +function normalizeUploadedMarkdownImages(images: unknown[]): UploadedMarkdownImage[] { + return images + .map((image) => { + const candidate = image as Partial; + if (typeof candidate.markdown !== "string" || !candidate.markdown.trim()) { + return null; + } + return { + id: typeof candidate.id === "string" ? candidate.id : undefined, + name: typeof candidate.name === "string" ? candidate.name : undefined, + markdown: candidate.markdown + }; + }) + .filter((image): image is UploadedMarkdownImage => Boolean(image)); +} + +function markdownFromUploadedImages(images: UploadedMarkdownImage[]): string { + return images.map((image) => image.markdown).filter(Boolean).join("\n"); +} + +function createImageNodeFromMarkdown(markdown: string, imageNode: { createAndFill(attrs: Record): ProseNode | null }): ProseNode | null { + const parsed = parseUploadedImageMarkdown(markdown); + if (!parsed) { + return null; + } + return imageNode.createAndFill({ src: parsed.src, alt: parsed.alt }); +} + +function parseUploadedImageMarkdown(markdown: string): { alt: string; src: string } | null { + const match = markdown.match(/^!\[((?:\\.|[^\]])*)\]\(([^)]+)\)$/); + if (!match) { + return null; + } + return { + alt: match[1].replace(/\\([[\\\]])/g, "$1"), + src: match[2].trim() + }; +} + +async function uploadImageFiles(files: File[]): Promise { + const images = files.filter(isImageFile); + if (!images.length) { + return []; + } + const requestId = createUploadRequestId(); + const payloadImages = await Promise.all(images.map(readImageFileData)); + const result = new Promise((resolve, reject) => { + pendingImageUploads.set(requestId, { resolve, reject }); + }); + post("uploadImages", { requestId, images: payloadImages }); + return result; +} + +function createUploadRequestId(): string { + return `${Date.now()}-${Math.random().toString(16).slice(2)}`; +} + +function isImageFile(file: File): boolean { + return file.type.startsWith("image/"); +} + +function getImageFilesFromTransfer(dataTransfer: DataTransfer | null | undefined): File[] { + if (!dataTransfer) { + return []; + } + const files: File[] = []; + const seen = new Set(); + const addFile = (file: File | null) => { + if (!file || !isImageFile(file)) { + return; } + const key = `${file.name}:${file.size}:${file.lastModified}`; + if (!seen.has(key)) { + seen.add(key); + files.push(file); + } + }; + + Array.from(dataTransfer.files || []).forEach(addFile); + Array.from(dataTransfer.items || []).forEach((item) => { + if (item.kind === "file" && item.type.startsWith("image/")) { + addFile(item.getAsFile()); + } + }); + return files; +} + +async function handleSourceImagePaste(event: ClipboardEvent): Promise { + const files = getImageFilesFromTransfer(event.clipboardData); + if (!files.length) { + return; + } + event.preventDefault(); + await uploadAndInsertSourceImages(files); +} + +function handleSourceImageDragOver(event: DragEvent): void { + const files = getImageFilesFromTransfer(event.dataTransfer); + if (!files.length) { + return; + } + event.preventDefault(); + if (event.dataTransfer) { + event.dataTransfer.dropEffect = "copy"; + } +} + +async function handleSourceImageDrop(event: DragEvent): Promise { + const files = getImageFilesFromTransfer(event.dataTransfer); + if (!files.length) { + return; + } + event.preventDefault(); + sourceEditor.focus(); + await uploadAndInsertSourceImages(files); +} + +async function uploadAndInsertSourceImages(files: File[]): Promise { + try { + const uploaded = await uploadImageFiles(files); + const markdown = markdownFromUploadedImages(uploaded); + if (markdown) { + insertSourceBlockSnippet(markdown); + } + } catch (error) { + post("error", { message: getErrorMessage(error) }); + } +} + +async function handleVisualImagePaste(event: ClipboardEvent): Promise { + if (event.defaultPrevented) { + return; + } + const files = getImageFilesFromTransfer(event.clipboardData); + if (!files.length) { + return; + } + event.preventDefault(); + await uploadAndInsertVisualImages(files); +} + +function handleVisualImageDragOver(event: DragEvent): void { + const files = getImageFilesFromTransfer(event.dataTransfer); + if (!files.length) { + return; + } + event.preventDefault(); + if (event.dataTransfer) { + event.dataTransfer.dropEffect = "copy"; + } +} + +async function handleVisualImageDrop(event: DragEvent): Promise { + if (event.defaultPrevented) { + return; + } + const files = getImageFilesFromTransfer(event.dataTransfer); + if (!files.length) { + return; + } + event.preventDefault(); + await uploadAndInsertVisualImages(files); +} + +async function uploadAndInsertVisualImages(files: File[]): Promise { + try { + const uploaded = await uploadImageFiles(files); + insertMarkdown(markdownFromUploadedImages(uploaded)); + } catch (error) { + post("error", { message: getErrorMessage(error) }); } } @@ -587,6 +1078,8 @@ function createCodeBlockCopyButton(): HTMLButtonElement { button.className = CODE_BLOCK_CLASSES.copyButton; button.dataset.copyLabel = codeCopyLabels.copyLabel; button.dataset.copiedLabel = codeCopyLabels.copiedLabel; + button.dataset.hoverTooltip = codeCopyLabels.copyLabel; + button.setAttribute("aria-label", codeCopyLabels.copyLabel); button.textContent = codeCopyLabels.copyLabel; return button; } @@ -624,7 +1117,7 @@ function createCodeBlockNodeView(node: ProseNode, view: unknown, getPos: (() => const language = document.createElement("button"); language.type = "button"; language.className = `${CODE_BLOCK_CLASSES.language} visual-code-language-button`; - language.title = visualLabels.editLanguage; + language.dataset.hoverTooltip = visualLabels.editLanguage; language.setAttribute("aria-label", visualLabels.editLanguage); const languageInput = document.createElement("input"); @@ -1111,7 +1604,7 @@ function createMathInlineNodeView(node: ProseNode, view: unknown, getPos: (() => currentNode = nextNode; const value = getNodeTextAttribute(nextNode, "value"); dom.dataset.value = value; - dom.title = value; + dom.dataset.hoverTooltip = value; preview.innerHTML = renderKatexHtml(value, false, mathRenderOptions); if (!dom.classList.contains("is-editing")) { input.value = value; @@ -1270,7 +1763,7 @@ function createFootnoteReferenceNodeView(node: ProseNode): NodeView { dom.id = model.referenceId; dom.dataset.label = model.label; dom.textContent = model.label; - dom.title = `Footnote ${model.label}`; + dom.dataset.hoverTooltip = `${visualLabels.footnote} ${model.label}`; }; update(currentNode); @@ -1342,7 +1835,7 @@ function createHtmlNodeView(node: ProseNode): NodeView { currentNode = nextNode; const value = getNodeTextAttribute(nextNode, "value"); dom.dataset.value = value; - dom.title = `${visualLabels.rawHtmlEscaped}: ${value}`; + dom.dataset.hoverTooltip = `${visualLabels.rawHtmlEscaped}: ${value}`; source.innerHTML = renderInertInlineHtml(value); }; update(currentNode); @@ -1544,8 +2037,8 @@ async function renderMermaidNode(mermaid: MermaidRuntime, node: HTMLElement): Pr function markMermaidRenderError(node: HTMLElement, error: unknown, source = node.dataset.superMarkdownMermaidSource || node.textContent || ""): void { const message = getErrorMessage(error); node.dataset.superMarkdownMermaidError = message; + node.dataset.hoverTooltip = message; node.classList.add("mermaid-render-error"); - node.title = message; node.textContent = source ? `${message}\n\n${source}` : message; } @@ -1554,7 +2047,7 @@ function resetMermaidElement(node: HTMLElement, source: string): void { node.removeAttribute("data-processed"); delete node.dataset.superMarkdownMermaidError; delete node.dataset.superMarkdownMermaidSource; - node.title = ""; + delete node.dataset.hoverTooltip; node.textContent = source; } @@ -1623,6 +2116,7 @@ function setMode(mode: string, notify: boolean): void { function applyMode(): void { document.body.classList.remove("mode-source", "mode-wysiwyg", "mode-preview", "mode-split"); document.body.classList.add(`mode-${currentMode}`); + applySplitRatio(false); if (currentMode === "wysiwyg") { void ensureMilkdown().catch(() => undefined); } @@ -1652,6 +2146,26 @@ async function ensureMilkdown(): Promise { syncToHost(); }); ctx.update(nodeViewCtx, registerVisualNodeViews); + ctx.update(uploadConfig.key, (config) => ({ + ...config, + enableHtmlFileUploader: false, + uploader: async (files, schema) => { + let uploaded: UploadedMarkdownImage[]; + try { + uploaded = await uploadImageFiles(Array.from(files || [])); + } catch (error) { + post("error", { message: getErrorMessage(error) }); + throw error; + } + const imageNode = schema.nodes.image; + if (!imageNode) { + throw new Error("Missing image node schema"); + } + return uploaded + .map((image) => createImageNodeFromMarkdown(image.markdown, imageNode)) + .filter((node): node is ProseNode => Boolean(node)); + } + })); }) .use(commonmark) .use(gfm) @@ -1662,6 +2176,7 @@ async function ensureMilkdown(): Promise { .use(safeHtmlInlineSchema) .use(listener) .use(clipboard) + .use(upload) .use(history) .use(trailing); await milkdownEditor.create(); @@ -1711,6 +2226,10 @@ async function handleToolbarAction(action: string): Promise { post("toolbarCommand", { action }); return; } + if (action === "switchDisplayLanguage") { + post("toolbarCommand", { action }); + return; + } if (action.startsWith("export-")) { post("export", { format: action.replace("export-", "") }); return; @@ -1905,6 +2424,30 @@ function insertSourceSnippet(snippet: string): void { syncToHost(); } +function insertSourceBlockSnippet(snippet: string): void { + if (!snippet) { + return; + } + const selection = getSourceSelection(); + const prefix = getBlockInsertionPrefix(selection.start); + const suffix = selection.end < sourceEditor.value.length && !sourceEditor.value.slice(selection.end).startsWith("\n") + ? "\n\n" + : ""; + sourceEditor.setRangeText(`${prefix}${snippet}${suffix}`, selection.start, selection.end, "end"); + currentMarkdown = sourceEditor.value; + rememberSourceSelection(); + syncMilkdownFromMarkdown(currentMarkdown); + syncToHost(); +} + +function getBlockInsertionPrefix(position: number): string { + const before = sourceEditor.value.slice(0, position); + if (!before || before.endsWith("\n\n")) { + return ""; + } + return before.endsWith("\n") ? "\n" : "\n\n"; +} + function needsBlockPadding(position: number): boolean { return position > 0 && !sourceEditor.value.slice(0, position).endsWith("\n\n"); } @@ -1941,8 +2484,15 @@ async function chooseImagesForInsert(): Promise { if (!files.length) { return; } - const images = await Promise.all(files.map(readImageFileData)); - post("uploadImages", { requestId: Date.now(), images }); + const uploaded = await uploadImageFiles(files); + const markdown = markdownFromUploadedImages(uploaded); + if (currentMode === "wysiwyg" && milkdownEditor) { + insertMarkdown(markdown); + } else { + insertSourceBlockSnippet(markdown); + } + } catch (error) { + post("error", { message: getErrorMessage(error) }); } finally { input.remove(); } @@ -2051,7 +2601,7 @@ function renderOutline(headings: PreviewState["headings"]): void { return `
- +
`; }).join("") @@ -2368,7 +2918,7 @@ function cycleCodeBlockTone(buttonElement: HTMLElement): void { function updateToneButtonTitle(buttonElement: HTMLElement, tone: string): void { const title = `${codeToneLabels.toneLabel}: ${codeBlockToneLabel(normalizeCodeBlockTone(tone), codeToneLabels)}`; - buttonElement.setAttribute("title", title); + buttonElement.dataset.hoverTooltip = title; buttonElement.setAttribute("aria-label", title); } diff --git a/media/wysiwyg/editor.css b/media/wysiwyg/editor.css index 5d475c4..3c024fd 100644 --- a/media/wysiwyg/editor.css +++ b/media/wysiwyg/editor.css @@ -8,6 +8,44 @@ body { font-family: var(--vscode-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif); } +body { + --sm-split-editor-size: 1fr; + --sm-split-preview-size: 1fr; + --sm-toolbar-bg: color-mix(in srgb, var(--sm-page-bg, var(--vscode-editor-background, #ffffff)) 90%, var(--sm-code-header-bg, var(--vscode-editorWidget-background, #f6f8fa))); + --sm-toolbar-text: var(--sm-text, var(--vscode-editor-foreground, #24292f)); + --sm-toolbar-icon: var(--sm-muted, var(--vscode-descriptionForeground, #57606a)); + --sm-toolbar-border: var(--sm-border, var(--vscode-editorWidget-border, #d0d7de)); + --sm-toolbar-focus: var(--sm-focus, var(--vscode-focusBorder, #0969da)); + --sm-toolbar-hover-bg: color-mix(in srgb, var(--sm-code-header-bg, var(--sm-page-bg, #ffffff)) 84%, var(--sm-toolbar-focus) 16%); + --sm-toolbar-hover-border: color-mix(in srgb, var(--sm-toolbar-focus) 55%, var(--sm-toolbar-border)); + --sm-toolbar-active-bg: color-mix(in srgb, var(--sm-toolbar-focus) 15%, var(--sm-toolbar-bg)); + --sm-toolbar-active-border: color-mix(in srgb, var(--sm-toolbar-focus) 72%, var(--sm-toolbar-border)); + --sm-toolbar-active-text: var(--sm-toolbar-focus); + --sm-menu-bg: color-mix(in srgb, var(--sm-page-bg, var(--vscode-editor-background, #ffffff)) 92%, var(--sm-code-header-bg, var(--vscode-editorWidget-background, #f6f8fa))); + --sm-menu-text: var(--sm-text, var(--vscode-editor-foreground, #24292f)); + --sm-menu-icon: var(--sm-muted, var(--vscode-descriptionForeground, #57606a)); + --sm-menu-border: var(--sm-border, var(--vscode-editorWidget-border, #d0d7de)); + --sm-menu-hover-bg: color-mix(in srgb, var(--sm-code-header-bg, var(--sm-page-bg, #ffffff)) 88%, var(--sm-toolbar-focus) 12%); + --sm-menu-shadow: 0 8px 22px rgba(0, 0, 0, 0.16); +} + +body.sm-theme-system { + --sm-toolbar-bg: var(--vscode-editor-background, var(--sm-page-bg, #ffffff)); + --sm-toolbar-text: var(--vscode-editor-foreground, var(--sm-text, #24292f)); + --sm-toolbar-icon: var(--vscode-icon-foreground, var(--sm-toolbar-text)); + --sm-toolbar-border: var(--sm-border, var(--vscode-editorWidget-border, #d0d7de)); + --sm-toolbar-focus: var(--vscode-focusBorder, var(--sm-focus, #0969da)); + --sm-toolbar-hover-bg: var(--vscode-list-hoverBackground, rgba(127, 127, 127, 0.12)); + --sm-toolbar-hover-border: color-mix(in srgb, var(--sm-toolbar-focus) 55%, var(--sm-toolbar-border)); + --sm-toolbar-active-bg: color-mix(in srgb, var(--sm-toolbar-focus) 12%, var(--sm-toolbar-bg)); + --sm-toolbar-active-border: color-mix(in srgb, var(--sm-toolbar-focus) 70%, var(--sm-toolbar-border)); + --sm-menu-bg: var(--vscode-dropdown-background, var(--vscode-editorWidget-background, var(--sm-page-bg, #ffffff))); + --sm-menu-text: var(--vscode-dropdown-foreground, var(--sm-text, var(--vscode-editor-foreground, #24292f))); + --sm-menu-icon: var(--vscode-descriptionForeground, var(--sm-muted, #57606a)); + --sm-menu-border: var(--vscode-dropdown-border, var(--vscode-editorWidget-border, var(--sm-border, #d0d7de))); + --sm-menu-hover-bg: var(--vscode-list-hoverBackground, rgba(127, 127, 127, 0.12)); +} + button, input, textarea { @@ -34,7 +72,7 @@ body.layout-previewOnly .workbench-shell { body.layout-splitEdit .workbench-shell, body.mode-split .workbench-shell { - grid-template-columns: var(--outline-rail-width) minmax(0, 1fr) minmax(0, 1fr); + grid-template-columns: var(--outline-rail-width) minmax(0, var(--sm-split-editor-size)) minmax(0, var(--sm-split-preview-size)); } body.side-panel-open .workbench-shell { @@ -48,7 +86,7 @@ body.layout-previewOnly.side-panel-open .workbench-shell { body.layout-splitEdit.side-panel-open .workbench-shell, body.mode-split.side-panel-open .workbench-shell { - grid-template-columns: var(--side-panel-dock-width) minmax(0, 1fr) minmax(0, 1fr); + grid-template-columns: var(--side-panel-dock-width) minmax(0, var(--sm-split-editor-size)) minmax(0, var(--sm-split-preview-size)); } .editor-toolbar-slot { @@ -57,6 +95,7 @@ body.mode-split.side-panel-open .workbench-shell { grid-row: 1; z-index: 2; display: flex; + min-width: 0; min-height: 52px; align-items: center; align-content: center; @@ -66,8 +105,8 @@ body.mode-split.side-panel-open .workbench-shell { overflow-x: hidden; overflow-y: visible; padding: 8px 14px; - border-bottom: 1px solid var(--sm-border, var(--vscode-editorWidget-border, #d0d7de)); - background: var(--vscode-editor-background, var(--sm-page-bg, #ffffff)); + border-bottom: 1px solid var(--sm-toolbar-border); + background: var(--sm-toolbar-bg); } body.layout-previewOnly .editor-toolbar-slot, @@ -83,7 +122,7 @@ body.mode-preview .editor-toolbar-slot { gap: 6px; row-gap: 6px; padding: 0 12px; - border-right: 1px solid var(--sm-border, var(--vscode-editorWidget-border, #d0d7de)); + border-right: 1px solid var(--sm-toolbar-border); } .toolbar-group:first-child { @@ -104,7 +143,7 @@ body.mode-preview .editor-toolbar-slot { padding: 0; border: 1px solid transparent; border-radius: 4px; - color: var(--vscode-icon-foreground, var(--sm-text, var(--vscode-editor-foreground, #24292f))); + color: var(--sm-toolbar-icon); background: transparent; font-size: 16px; font-weight: 400; @@ -114,8 +153,9 @@ body.mode-preview .editor-toolbar-slot { .toolbar-button:hover, .toolbar-button:focus { - border-color: color-mix(in srgb, var(--vscode-focusBorder, #0969da) 55%, transparent); - background: var(--vscode-list-hoverBackground, rgba(127, 127, 127, 0.12)); + border-color: var(--sm-toolbar-hover-border); + color: var(--sm-toolbar-text); + background: var(--sm-toolbar-hover-bg); outline: none; } @@ -124,10 +164,11 @@ body.mode-preview .editor-toolbar-slot { cursor: default; } -.toolbar-button.is-active { - border-color: color-mix(in srgb, var(--vscode-focusBorder, #0969da) 70%, transparent); - color: var(--vscode-focusBorder, #0969da); - background: color-mix(in srgb, var(--vscode-focusBorder, #0969da) 12%, transparent); +.toolbar-button.is-active, +.toolbar-menu-wrapper.is-open > .toolbar-menu-toggle { + border-color: var(--sm-toolbar-active-border); + color: var(--sm-toolbar-active-text); + background: var(--sm-toolbar-active-bg); } .toolbar-menu-wrapper { @@ -186,11 +227,13 @@ body.mode-preview .editor-toolbar-slot { display: grid; min-width: 170px; max-width: min(260px, calc(100vw - 16px)); + max-height: min(320px, calc(100vh - 16px)); + overflow-y: auto; padding: 5px; - border: 1px solid var(--sm-border, var(--vscode-editorWidget-border, #d0d7de)); + border: 1px solid var(--sm-menu-border); border-radius: 6px; - background: var(--vscode-dropdown-background, var(--sm-page-bg, #ffffff)); - box-shadow: 0 8px 22px rgba(0, 0, 0, 0.16); + background: var(--sm-menu-bg); + box-shadow: var(--sm-menu-shadow); } .toolbar-menu[hidden] { @@ -206,7 +249,7 @@ body.mode-preview .editor-toolbar-slot { padding: 0 8px; border: 0; border-radius: 4px; - color: var(--sm-text, var(--vscode-editor-foreground, #24292f)); + color: var(--sm-menu-text); background: transparent; text-align: left; cursor: pointer; @@ -214,7 +257,7 @@ body.mode-preview .editor-toolbar-slot { .toolbar-menu-button:hover, .toolbar-menu-button:focus { - background: var(--vscode-list-hoverBackground, rgba(127, 127, 127, 0.12)); + background: var(--sm-menu-hover-bg); outline: none; } @@ -225,7 +268,7 @@ body.mode-preview .editor-toolbar-slot { align-items: center; justify-content: center; justify-self: center; - color: var(--vscode-descriptionForeground, #57606a); + color: var(--sm-menu-icon); line-height: 1; } @@ -309,6 +352,58 @@ body[data-script-state="error"] .editor-toolbar-slot::after { border-left: 1px solid var(--sm-border, var(--vscode-sideBar-border, #d0d7de)); } +.split-resizer { + position: relative; + z-index: 6; + display: none; + width: 28px; + min-width: 28px; + height: 100%; + grid-column: 3; + grid-row: 2; + justify-self: start; + align-self: stretch; + margin-left: -14px; + border: 0; + background: transparent; + cursor: col-resize; + touch-action: none; +} + +.split-resizer::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 13px; + width: 2px; + border-radius: 999px; + background: var(--vscode-focusBorder, var(--sm-focus, #0969da)); + opacity: 0; +} + +.split-resizer:hover::before, +.split-resizer:focus-visible::before, +body.is-resizing-split .split-resizer::before { + opacity: 1; +} + +body.layout-splitEdit .split-resizer, +body.mode-split .split-resizer { + display: block; +} + +body.is-resizing-split, +body.is-resizing-split * { + cursor: col-resize !important; + user-select: none; +} + +body.is-resizing-split .editor-panel, +body.is-resizing-split .preview-panel { + pointer-events: none; +} + body.layout-editorOnly .preview-panel, body.mode-source.layout-editorOnly .preview-panel, body.mode-wysiwyg.layout-editorOnly .preview-panel { @@ -660,19 +755,34 @@ body.mode-preview .preview-title { color: var(--shiki-dark, var(--sm-render-block-text)); } -body.vscode-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, -body.vscode-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, -body.vscode-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, -body.vscode-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, -body.vscode-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, -body.vscode-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span { +body.sm-theme-system.vscode-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-system.vscode-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-system.vscode-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, +body.sm-theme-system.vscode-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-system.vscode-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-system.vscode-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, +body.sm-theme-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-dark .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, +body.sm-theme-forest .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-forest .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-forest .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, +body.sm-theme-ink .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-ink .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-ink .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, +body.sm-theme-terminal .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-terminal .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-terminal .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span, +body.sm-theme-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, +body.sm-theme-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, +body.sm-theme-high-contrast .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span { color: var(--shiki-dark, var(--sm-render-block-text)); } @media (prefers-color-scheme: dark) { - body:not(.vscode-light) .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, - body:not(.vscode-light) .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, - body:not(.vscode-light) .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span { + body.sm-theme-system:not(.vscode-light) .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight, + body.sm-theme-system:not(.vscode-light) .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight code, + body.sm-theme-system:not(.vscode-light) .visual-editor .ProseMirror .visual-code-node-view:not(.render-block-tone-light) .visual-code-highlight span { color: var(--shiki-dark, var(--sm-render-block-text)); } } @@ -1416,7 +1526,7 @@ body.side-panel-open .side-panel-toggle { .outline-disclosure { border: 0; - color: var(--vscode-descriptionForeground, #6e7781); + color: var(--sm-muted, var(--vscode-descriptionForeground, #6e7781)); background: transparent; font-size: 12px; cursor: pointer; @@ -1424,7 +1534,7 @@ body.side-panel-open .side-panel-toggle { .outline-disclosure:hover, .outline-disclosure:focus { - color: var(--vscode-foreground, #24292f); + color: var(--vscode-sideBar-foreground, var(--sm-text, var(--vscode-foreground, #24292f))); background: var(--vscode-list-hoverBackground, rgba(127, 127, 127, 0.12)); outline: none; } @@ -1438,7 +1548,7 @@ body.side-panel-open .side-panel-toggle { padding: 0 7px; border: 0; border-radius: 4px; - color: var(--vscode-foreground, #24292f); + color: var(--vscode-sideBar-foreground, var(--sm-text, var(--vscode-foreground, #24292f))); background: transparent; font-size: 13px; line-height: 28px; @@ -1455,7 +1565,7 @@ body.side-panel-open .side-panel-toggle { } .outline-item.is-active { - color: var(--vscode-list-activeSelectionForeground, var(--vscode-foreground, #24292f)); + color: var(--vscode-sideBar-foreground, var(--sm-text, var(--vscode-foreground, #24292f))); background: var(--vscode-list-activeSelectionBackground, rgba(9, 105, 218, 0.16)); } @@ -1473,7 +1583,7 @@ body.side-panel-open .side-panel-toggle { justify-content: space-between; gap: 6px; padding: 0 8px 0 14px; - color: var(--vscode-descriptionForeground, #57606a); + color: var(--sm-muted, var(--vscode-descriptionForeground, #57606a)); font-weight: 600; } @@ -1506,6 +1616,31 @@ body.side-panel-open .side-panel-toggle { outline: none; } +.hover-tooltip { + position: fixed; + z-index: 20; + max-width: min(260px, calc(100vw - 16px)); + padding: 4px 8px; + border: 1px solid var(--vscode-editorHoverWidget-border, var(--vscode-editorWidget-border, var(--sm-border, #d0d7de))); + border-radius: 4px; + color: var(--vscode-editorHoverWidget-foreground, var(--vscode-editorWidget-foreground, var(--vscode-foreground, #24292f))); + background: var(--vscode-editorHoverWidget-background, var(--vscode-editorWidget-background, var(--vscode-editor-background, #ffffff))); + box-shadow: 0 3px 10px rgba(15, 23, 42, 0.18); + font-family: var(--vscode-font-family, inherit); + font-size: 12px; + font-weight: 400; + line-height: 18px; + overflow-wrap: anywhere; + opacity: 0; + pointer-events: none; + visibility: hidden; +} + +.hover-tooltip.is-visible { + opacity: 1; + visibility: visible; +} + .outline-empty, .static-preview-source { color: var(--vscode-descriptionForeground, #57606a); @@ -1530,6 +1665,12 @@ body.side-panel-open .side-panel-toggle { display: none; } + .split-resizer, + body.layout-splitEdit .split-resizer, + body.mode-split .split-resizer { + display: none; + } + body.mode-preview .preview-panel { display: flex; grid-column: 2; diff --git a/media/wysiwyg/editor.js b/media/wysiwyg/editor.js index 2aa3f08..385b3c5 100644 --- a/media/wysiwyg/editor.js +++ b/media/wysiwyg/editor.js @@ -1,51 +1,51 @@ -"use strict";(()=>{var c5=Object.create;var cd=Object.defineProperty;var u5=Object.getOwnPropertyDescriptor;var p5=Object.getOwnPropertyNames;var d5=Object.getPrototypeOf,m5=Object.prototype.hasOwnProperty;var h5=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),kb=(t,e)=>{for(var n in e)cd(t,n,{get:e[n],enumerable:!0})},f5=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p5(e))!m5.call(t,r)&&r!==n&&cd(t,r,{get:()=>e[r],enumerable:!(a=u5(e,r))||a.enumerable});return t};var g5=(t,e,n)=>(n=t!=null?c5(d5(t)):{},f5(e||!t||!t.__esModule?cd(n,"default",{value:t,enumerable:!0}):n,t));var Hy=h5((HP,Gy)=>{"use strict";var xc=Object.prototype.hasOwnProperty,Py=Object.prototype.toString,Oy=Object.defineProperty,By=Object.getOwnPropertyDescriptor,Ly=function(e){return typeof Array.isArray=="function"?Array.isArray(e):Py.call(e)==="[object Array]"},Dy=function(e){if(!e||Py.call(e)!=="[object Object]")return!1;var n=xc.call(e,"constructor"),a=e.constructor&&e.constructor.prototype&&xc.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!a)return!1;var r;for(r in e);return typeof r>"u"||xc.call(e,r)},Fy=function(e,n){Oy&&n.name==="__proto__"?Oy(e,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):e[n.name]=n.newValue},qy=function(e,n){if(n==="__proto__")if(xc.call(e,n)){if(By)return By(e,n).value}else return;return e[n]};Gy.exports=function t(){var e,n,a,r,i,s,o=arguments[0],l=1,c=arguments.length,u=!1;for(typeof o=="boolean"&&(u=o,o=arguments[1]||{},l=2),(o==null||typeof o!="object"&&typeof o!="function")&&(o={});ltypeof e=="function"?"[Function]":e,Jl=t=>JSON.stringify(t,b5);function wb(t){return new Yt(Jt.docTypeError,`Doc type error, unsupported type: ${Jl(t)}`)}function _b(t){return new Yt(Jt.contextNotFound,`Context "${t}" not found, do you forget to inject it?`)}function vb(t){return new Yt(Jt.timerNotFound,`Timer "${t}" not found, do you forget to record it?`)}function Ti(){return new Yt(Jt.ctxCallOutOfScope,"Should not call a context out of the plugin.")}function $b(t,e,n){let a=`Cannot create node for ${"name"in t?t.name:t}`,r=s=>{if(s==null)return"null";if(Array.isArray(s))return`[${s.map(r).join(", ")}]`;if(typeof s=="object")return"toJSON"in s&&typeof s.toJSON=="function"?JSON.stringify(s.toJSON()):"spec"in s?JSON.stringify(s.spec):JSON.stringify(s);if(typeof s=="string"||typeof s=="number"||typeof s=="boolean")return JSON.stringify(s);if(typeof s=="function")return`[Function: ${s.name||"anonymous"}]`;try{return String(s)}catch{return"[Unserializable]"}},i=[["[Description]",a],["[Attributes]",e],["[Content]",(n??[]).map(s=>s?typeof s=="object"&&"type"in s?`${s}`:r(s):"null")]].reduce((s,[o,l])=>{let c=`${o}: ${r(l)}.`;return s.concat(c)},[]);return new Yt(Jt.createNodeInParserFail,i.join(` -`))}function ud(){return new Yt(Jt.stackOverFlow,"Stack over flow, cannot pop on an empty stack.")}function Cb(t){return new Yt(Jt.parserMatchError,`Cannot match target parser for node: ${Jl(t)}.`)}function jb(t){return new Yt(Jt.serializerMatchError,`Cannot match target serializer for node: ${Jl(t)}.`)}function Sb(t,e){return new Yt(Jt.getAtomFromSchemaFail,`Cannot get ${t}: ${e} from schema.`)}function Qt(t){return new Yt(Jt.expectDomTypeError,`Expect to be a dom, but get: ${Jl(t)}.`)}function Yl(){return new Yt(Jt.callCommandBeforeEditorView,"You're trying to call a command before editor view initialized, make sure to get commandManager from ctx after editor view has been initialized")}function Eb(t){return new Yt(Jt.missingNodeInSchema,`Missing node in schema, milkdown cannot find "${t}" in schema.`)}function Ab(t){return new Yt(Jt.missingMarkInSchema,`Missing mark in schema, milkdown cannot find "${t}" in schema.`)}var pd=class{constructor(){this.sliceMap=new Map,this.get=t=>{let e=typeof t=="string"?[...this.sliceMap.values()].find(n=>n.type.name===t):this.sliceMap.get(t.id);if(!e)throw _b(typeof t=="string"?t:t.name);return e},this.remove=t=>{let e=typeof t=="string"?[...this.sliceMap.values()].find(n=>n.type.name===t):this.sliceMap.get(t.id);e&&this.sliceMap.delete(e.type.id)},this.has=t=>typeof t=="string"?[...this.sliceMap.values()].some(e=>e.type.name===t):this.sliceMap.has(t.id)}},y5=class{#t=[];#e;#a=()=>{this.#t.forEach(t=>t(this.#e))};constructor(t,e,n){this.set=a=>{this.#e=a,this.#a()},this.get=()=>this.#e,this.update=a=>{this.#e=a(this.#e),this.#a()},this.type=n,this.#e=e,t.set(n.id,this)}on(t){return this.#t.push(t),()=>{this.#t=this.#t.filter(e=>e!==t)}}once(t){let e=this.on(n=>{t(n),e()});return e}off(t){this.#t=this.#t.filter(e=>e!==t)}offAll(){this.#t=[]}},x5=class{constructor(t,e){this.id=Symbol(`Context-${e}`),this.name=e,this._defaultValue=t,this._typeInfo=()=>{throw Ti()}}create(t,e=this._defaultValue){return new y5(t,e,this)}},ge=(t,e)=>new x5(t,e),k5=class{#t;#e;#a;#n=new Set;#i=new Set;#s=new Map;#r=new Map;constructor(t,e,n){this.read=()=>({metadata:this.#t,injectedSlices:[...this.#n].map(a=>({name:typeof a=="string"?a:a.name,value:this.#o(a)})),consumedSlices:[...this.#i].map(a=>({name:typeof a=="string"?a:a.name,value:this.#o(a)})),recordedTimers:[...this.#s].map(([a,{duration:r}])=>({name:a.name,duration:r,status:this.#l(a)})),waitTimers:[...this.#r].map(([a,{duration:r}])=>({name:a.name,duration:r,status:this.#l(a)}))}),this.onRecord=a=>{this.#s.set(a,{start:Date.now(),duration:0})},this.onClear=a=>{this.#s.delete(a)},this.onDone=a=>{let r=this.#s.get(a);r&&(r.duration=Date.now()-r.start)},this.onWait=(a,r)=>{let i=Date.now();r.finally(()=>{this.#r.set(a,{duration:Date.now()-i})}).catch(console.error)},this.onInject=a=>{this.#n.add(a)},this.onRemove=a=>{this.#n.delete(a)},this.onUse=a=>{this.#i.add(a)},this.#e=t,this.#a=e,this.#t=n}#o=t=>this.#e.get(t).get();#l=t=>this.#a.get(t).status},Tb=class Mb{#t;#e;#a;#n;constructor(e,n,a){this.produce=r=>r&&Object.keys(r).length?new Mb(this.#t,this.#e,{...r}):this,this.inject=(r,i)=>{let s=r.create(this.#t.sliceMap);return i!=null&&s.set(i),this.#n?.onInject(r),this},this.remove=r=>(this.#t.remove(r),this.#n?.onRemove(r),this),this.record=r=>(r.create(this.#e.store),this.#n?.onRecord(r),this),this.clearTimer=r=>(this.#e.remove(r),this.#n?.onClear(r),this),this.isInjected=r=>this.#t.has(r),this.isRecorded=r=>this.#e.has(r),this.use=r=>(this.#n?.onUse(r),this.#t.get(r)),this.get=r=>this.use(r).get(),this.set=(r,i)=>this.use(r).set(i),this.update=(r,i)=>this.use(r).update(i),this.timer=r=>this.#e.get(r),this.done=r=>{this.timer(r).done(),this.#n?.onDone(r)},this.wait=r=>{let i=this.timer(r).start();return this.#n?.onWait(r,i),i},this.waitTimers=async r=>{await Promise.all(this.get(r).map(i=>this.wait(i)))},this.#t=e,this.#e=n,this.#a=a,a&&(this.#n=new k5(e,n,a))}get meta(){return this.#a}get inspector(){return this.#n}},Nb=class{constructor(){this.store=new Map,this.get=t=>{let e=this.store.get(t.id);if(!e)throw vb(t.name);return e},this.remove=t=>{this.store.delete(t.id)},this.has=t=>this.store.has(t.id)}},w5=class{#t=null;#e=null;#a;#n="pending";constructor(t,e){this.start=()=>(this.#t??=new Promise((n,a)=>{this.#e=r=>{r instanceof CustomEvent&&r.detail.id===this.#a&&(this.#n="resolved",this.#i(),r.stopImmediatePropagation(),n())},this.#s(()=>{this.#n==="pending"&&(this.#n="rejected"),this.#i(),a(new Error(`Timing ${this.type.name} timeout.`))}),this.#n="pending",addEventListener(this.type.name,this.#e)}),this.#t),this.done=()=>{let n=new CustomEvent(this.type.name,{detail:{id:this.#a}});dispatchEvent(n)},this.#a=Symbol(e.name),this.type=e,t.set(e.id,this)}get status(){return this.#n}#i=()=>{this.#e&&removeEventListener(this.type.name,this.#e)};#s=t=>{setTimeout(()=>{t()},this.type.timeout)}},_5=class{constructor(t,e=3e3){this.create=n=>new w5(n,this),this.id=Symbol(`Timer-${t}`),this.name=t,this.timeout=e}},hn=(t,e=3e3)=>new _5(t,e);var v5={};function Sr(t,e){let n=e||v5,a=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,r=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return Rb(t,a,r)}function Rb(t,e,n){if($5(t)){if("value"in t)return t.type==="html"&&!n?"":t.value;if(e&&"alt"in t&&t.alt)return t.alt;if("children"in t)return Ib(t.children,e,n)}return Array.isArray(t)?Ib(t,e,n):""}function Ib(t,e,n){let a=[],r=-1;for(;++rr?0:r+e:e=e>r?r:e,n=n>0?n:0,a.length<1e4)s=Array.from(a),s.unshift(e,n),t.splice(...s);else for(n&&t.splice(e,n);i0?(Ve(t,t.length,0,e),t):e}var Ob={}.hasOwnProperty;function Ql(t){let e={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"\uFFFD":String.fromCodePoint(n)}function vt(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var et=Ha(/[A-Za-z]/),tt=Ha(/[\dA-Za-z]/),Bb=Ha(/[#-'*+\--9=?A-Z^-~]/);function Er(t){return t!==null&&(t<32||t===127)}var Zs=Ha(/\d/),Lb=Ha(/[\dA-Fa-f]/),Db=Ha(/[!-/:-@[-`{-~]/);function W(t){return t!==null&&t<-2}function be(t){return t!==null&&(t<0||t===32)}function te(t){return t===-2||t===-1||t===32}var Ar=Ha(/\p{P}|\p{S}/u),Pn=Ha(/\s/);function Ha(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Q(t,e,n,a){let r=a?a-1:Number.POSITIVE_INFINITY,i=0;return s;function s(l){return te(l)?(t.enter(n),o(l)):e(l)}function o(l){return te(l)&&i++s))return;let I=e.events.length,F=I,L,T;for(;F--;)if(e.events[F][0]==="exit"&&e.events[F][1].type==="chunkFlow"){if(L){T=e.events[F][1].end;break}L=!0}for(k(a),E=I;E$;){let N=n[M];e.containerState=N[1],N[0].exit.call(e,t)}n.length=$}function _(){r.write([null]),i=void 0,r=void 0,e.containerState._closeFlow=void 0}}function A5(t,e,n){return Q(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ua(t){if(t===null||be(t)||Pn(t))return 1;if(Ar(t))return 2}function Va(t,e,n){let a=[],r=-1;for(;++r1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;let p={...t[a][1].end},d={...t[n][1].start};Gb(p,-l),Gb(d,l),s={type:l>1?"strongSequence":"emphasisSequence",start:p,end:{...t[a][1].end}},o={type:l>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:d},i={type:l>1?"strongText":"emphasisText",start:{...t[a][1].end},end:{...t[n][1].start}},r={type:l>1?"strong":"emphasis",start:{...s.start},end:{...o.end}},t[a][1].end={...s.start},t[n][1].start={...o.end},c=[],t[a][1].end.offset-t[a][1].start.offset&&(c=It(c,[["enter",t[a][1],e],["exit",t[a][1],e]])),c=It(c,[["enter",r,e],["enter",s,e],["exit",s,e],["enter",i,e]]),c=It(c,Va(e.parser.constructs.insideSpan.null,t.slice(a+1,n),e)),c=It(c,[["exit",i,e],["enter",o,e],["exit",o,e],["exit",r,e]]),t[n][1].end.offset-t[n][1].start.offset?(u=2,c=It(c,[["enter",t[n][1],e],["exit",t[n][1],e]])):u=0,Ve(t,a-1,n-a+3,c),n=a+c.length-u-2;break}}for(n=-1;++n0&&te(E)?Q(t,_,"linePrefix",i+1)(E):_(E)}function _(E){return E===null||W(E)?t.check(Hb,b,M)(E):(t.enter("codeFlowValue"),$(E))}function $(E){return E===null||W(E)?(t.exit("codeFlowValue"),_(E)):(t.consume(E),$)}function M(E){return t.exit("codeFenced"),e(E)}function N(E,I,F){let L=0;return T;function T(ee){return E.enter("lineEnding"),E.consume(ee),E.exit("lineEnding"),ce}function ce(ee){return E.enter("codeFencedFence"),te(ee)?Q(E,Y,"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(ee):Y(ee)}function Y(ee){return ee===o?(E.enter("codeFencedFenceSequence"),K(ee)):F(ee)}function K(ee){return ee===o?(L++,E.consume(ee),K):L>=s?(E.exit("codeFencedFenceSequence"),te(ee)?Q(E,J,"whitespace")(ee):J(ee)):F(ee)}function J(ee){return ee===null||W(ee)?(E.exit("codeFencedFence"),I(ee)):F(ee)}}}function F5(t,e,n){let a=this;return r;function r(s){return s===null?n(s):(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),i)}function i(s){return a.parser.lazy[a.now().line]?n(s):e(s)}}var Ys={name:"codeIndented",tokenize:P5},q5={partial:!0,tokenize:G5};function P5(t,e,n){let a=this;return r;function r(c){return t.enter("codeIndented"),Q(t,i,"linePrefix",5)(c)}function i(c){let u=a.events[a.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?s(c):n(c)}function s(c){return c===null?l(c):W(c)?t.attempt(q5,s,l)(c):(t.enter("codeFlowValue"),o(c))}function o(c){return c===null||W(c)?(t.exit("codeFlowValue"),s(c)):(t.consume(c),o)}function l(c){return t.exit("codeIndented"),e(c)}}function G5(t,e,n){let a=this;return r;function r(s){return a.parser.lazy[a.now().line]?n(s):W(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),r):Q(t,i,"linePrefix",5)(s)}function i(s){let o=a.events[a.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?e(s):W(s)?r(s):n(s)}}var md={name:"codeText",previous:V5,resolve:H5,tokenize:W5};function H5(t){let e=t.length-4,n=3,a,r;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(a=n;++a=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-a+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-a+this.left.length).reverse())}splice(e,n,a){let r=n||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,Number.POSITIVE_INFINITY);return a&&Qs(this.left,a),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Qs(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Qs(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(s):t.interrupt(a.parser.constructs.flow,n,e)(s)}}function oc(t,e,n,a,r,i,s,o,l){let c=l||Number.POSITIVE_INFINITY,u=0;return p;function p(k){return k===60?(t.enter(a),t.enter(r),t.enter(i),t.consume(k),t.exit(i),d):k===null||k===32||k===41||Er(k)?n(k):(t.enter(a),t.enter(s),t.enter(o),t.enter("chunkString",{contentType:"string"}),b(k))}function d(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(r),t.exit(a),e):(t.enter(o),t.enter("chunkString",{contentType:"string"}),m(k))}function m(k){return k===62?(t.exit("chunkString"),t.exit(o),d(k)):k===null||k===60||W(k)?n(k):(t.consume(k),k===92?h:m)}function h(k){return k===60||k===62||k===92?(t.consume(k),m):m(k)}function b(k){return!u&&(k===null||k===41||be(k))?(t.exit("chunkString"),t.exit(o),t.exit(s),t.exit(a),e(k)):u999||m===null||m===91||m===93&&!l||m===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs?n(m):m===93?(t.exit(i),t.enter(r),t.consume(m),t.exit(r),t.exit(a),e):W(m)?(t.enter("lineEnding"),t.consume(m),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),p(m))}function p(m){return m===null||m===91||m===93||W(m)||o++>999?(t.exit("chunkString"),u(m)):(t.consume(m),l||(l=!te(m)),m===92?d:p)}function d(m){return m===91||m===92||m===93?(t.consume(m),o++,p):p(m)}}function cc(t,e,n,a,r,i){let s;return o;function o(d){return d===34||d===39||d===40?(t.enter(a),t.enter(r),t.consume(d),t.exit(r),s=d===40?41:d,l):n(d)}function l(d){return d===s?(t.enter(r),t.consume(d),t.exit(r),t.exit(a),e):(t.enter(i),c(d))}function c(d){return d===s?(t.exit(i),l(s)):d===null?n(d):W(d)?(t.enter("lineEnding"),t.consume(d),t.exit("lineEnding"),Q(t,c,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(d))}function u(d){return d===s||d===null||W(d)?(t.exit("chunkString"),c(d)):(t.consume(d),d===92?p:u)}function p(d){return d===s||d===92?(t.consume(d),u):u(d)}}function Tr(t,e){let n;return a;function a(r){return W(r)?(t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),n=!0,a):te(r)?Q(t,a,n?"linePrefix":"lineSuffix")(r):e(r)}}var fd={name:"definition",tokenize:Q5},Y5={partial:!0,tokenize:e9};function Q5(t,e,n){let a=this,r;return i;function i(m){return t.enter("definition"),s(m)}function s(m){return lc.call(a,t,o,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(m)}function o(m){return r=vt(a.sliceSerialize(a.events[a.events.length-1][1]).slice(1,-1)),m===58?(t.enter("definitionMarker"),t.consume(m),t.exit("definitionMarker"),l):n(m)}function l(m){return be(m)?Tr(t,c)(m):c(m)}function c(m){return oc(t,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(m)}function u(m){return t.attempt(Y5,p,p)(m)}function p(m){return te(m)?Q(t,d,"whitespace")(m):d(m)}function d(m){return m===null||W(m)?(t.exit("definition"),a.parser.defined.push(r),e(m)):n(m)}}function e9(t,e,n){return a;function a(o){return be(o)?Tr(t,r)(o):n(o)}function r(o){return cc(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function i(o){return te(o)?Q(t,s,"whitespace")(o):s(o)}function s(o){return o===null||W(o)?e(o):n(o)}}var gd={name:"hardBreakEscape",tokenize:t9};function t9(t,e,n){return a;function a(i){return t.enter("hardBreakEscape"),t.consume(i),r}function r(i){return W(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}var bd={name:"headingAtx",resolve:n9,tokenize:a9};function n9(t,e){let n=t.length-2,a=3,r,i;return t[a][1].type==="whitespace"&&(a+=2),n-2>a&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(a===n-1||n-4>a&&t[n-2][1].type==="whitespace")&&(n-=a+1===n?2:4),n>a&&(r={type:"atxHeadingText",start:t[a][1].start,end:t[n][1].end},i={type:"chunkText",start:t[a][1].start,end:t[n][1].end,contentType:"text"},Ve(t,a,n-a+1,[["enter",r,e],["enter",i,e],["exit",i,e],["exit",r,e]])),t}function a9(t,e,n){let a=0;return r;function r(u){return t.enter("atxHeading"),i(u)}function i(u){return t.enter("atxHeadingSequence"),s(u)}function s(u){return u===35&&a++<6?(t.consume(u),s):u===null||be(u)?(t.exit("atxHeadingSequence"),o(u)):n(u)}function o(u){return u===35?(t.enter("atxHeadingSequence"),l(u)):u===null||W(u)?(t.exit("atxHeading"),e(u)):te(u)?Q(t,o,"whitespace")(u):(t.enter("atxHeadingText"),c(u))}function l(u){return u===35?(t.consume(u),l):(t.exit("atxHeadingSequence"),o(u))}function c(u){return u===null||u===35||be(u)?(t.exit("atxHeadingText"),o(u)):(t.consume(u),c)}}var Vb=["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","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],yd=["pre","script","style","textarea"];var xd={concrete:!0,name:"htmlFlow",resolveTo:s9,tokenize:o9},r9={partial:!0,tokenize:c9},i9={partial:!0,tokenize:l9};function s9(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function o9(t,e,n){let a=this,r,i,s,o,l;return c;function c(S){return u(S)}function u(S){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(S),p}function p(S){return S===33?(t.consume(S),d):S===47?(t.consume(S),i=!0,b):S===63?(t.consume(S),r=3,a.interrupt?e:j):et(S)?(t.consume(S),s=String.fromCharCode(S),y):n(S)}function d(S){return S===45?(t.consume(S),r=2,m):S===91?(t.consume(S),r=5,o=0,h):et(S)?(t.consume(S),r=4,a.interrupt?e:j):n(S)}function m(S){return S===45?(t.consume(S),a.interrupt?e:j):n(S)}function h(S){let st="CDATA[";return S===st.charCodeAt(o++)?(t.consume(S),o===st.length?a.interrupt?e:Y:h):n(S)}function b(S){return et(S)?(t.consume(S),s=String.fromCharCode(S),y):n(S)}function y(S){if(S===null||S===47||S===62||be(S)){let st=S===47,Fn=s.toLowerCase();return!st&&!i&&yd.includes(Fn)?(r=1,a.interrupt?e(S):Y(S)):Vb.includes(s.toLowerCase())?(r=6,st?(t.consume(S),k):a.interrupt?e(S):Y(S)):(r=7,a.interrupt&&!a.parser.lazy[a.now().line]?n(S):i?_(S):$(S))}return S===45||tt(S)?(t.consume(S),s+=String.fromCharCode(S),y):n(S)}function k(S){return S===62?(t.consume(S),a.interrupt?e:Y):n(S)}function _(S){return te(S)?(t.consume(S),_):T(S)}function $(S){return S===47?(t.consume(S),T):S===58||S===95||et(S)?(t.consume(S),M):te(S)?(t.consume(S),$):T(S)}function M(S){return S===45||S===46||S===58||S===95||tt(S)?(t.consume(S),M):N(S)}function N(S){return S===61?(t.consume(S),E):te(S)?(t.consume(S),N):$(S)}function E(S){return S===null||S===60||S===61||S===62||S===96?n(S):S===34||S===39?(t.consume(S),l=S,I):te(S)?(t.consume(S),E):F(S)}function I(S){return S===l?(t.consume(S),l=null,L):S===null||W(S)?n(S):(t.consume(S),I)}function F(S){return S===null||S===34||S===39||S===47||S===60||S===61||S===62||S===96||be(S)?N(S):(t.consume(S),F)}function L(S){return S===47||S===62||te(S)?$(S):n(S)}function T(S){return S===62?(t.consume(S),ce):n(S)}function ce(S){return S===null||W(S)?Y(S):te(S)?(t.consume(S),ce):n(S)}function Y(S){return S===45&&r===2?(t.consume(S),ke):S===60&&r===1?(t.consume(S),Ie):S===62&&r===4?(t.consume(S),He):S===63&&r===3?(t.consume(S),j):S===93&&r===5?(t.consume(S),Pt):W(S)&&(r===6||r===7)?(t.exit("htmlFlowData"),t.check(r9,Nt,K)(S)):S===null||W(S)?(t.exit("htmlFlowData"),K(S)):(t.consume(S),Y)}function K(S){return t.check(i9,J,Nt)(S)}function J(S){return t.enter("lineEnding"),t.consume(S),t.exit("lineEnding"),ee}function ee(S){return S===null||W(S)?K(S):(t.enter("htmlFlowData"),Y(S))}function ke(S){return S===45?(t.consume(S),j):Y(S)}function Ie(S){return S===47?(t.consume(S),s="",it):Y(S)}function it(S){if(S===62){let st=s.toLowerCase();return yd.includes(st)?(t.consume(S),He):Y(S)}return et(S)&&s.length<8?(t.consume(S),s+=String.fromCharCode(S),it):Y(S)}function Pt(S){return S===93?(t.consume(S),j):Y(S)}function j(S){return S===62?(t.consume(S),He):S===45&&r===2?(t.consume(S),j):Y(S)}function He(S){return S===null||W(S)?(t.exit("htmlFlowData"),Nt(S)):(t.consume(S),He)}function Nt(S){return t.exit("htmlFlow"),e(S)}}function l9(t,e,n){let a=this;return r;function r(s){return W(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),i):n(s)}function i(s){return a.parser.lazy[a.now().line]?n(s):e(s)}}function c9(t,e,n){return a;function a(r){return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),t.attempt(Gn,e,n)}}var kd={name:"htmlText",tokenize:u9};function u9(t,e,n){let a=this,r,i,s;return o;function o(j){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(j),l}function l(j){return j===33?(t.consume(j),c):j===47?(t.consume(j),N):j===63?(t.consume(j),$):et(j)?(t.consume(j),F):n(j)}function c(j){return j===45?(t.consume(j),u):j===91?(t.consume(j),i=0,h):et(j)?(t.consume(j),_):n(j)}function u(j){return j===45?(t.consume(j),m):n(j)}function p(j){return j===null?n(j):j===45?(t.consume(j),d):W(j)?(s=p,Ie(j)):(t.consume(j),p)}function d(j){return j===45?(t.consume(j),m):p(j)}function m(j){return j===62?ke(j):j===45?d(j):p(j)}function h(j){let He="CDATA[";return j===He.charCodeAt(i++)?(t.consume(j),i===He.length?b:h):n(j)}function b(j){return j===null?n(j):j===93?(t.consume(j),y):W(j)?(s=b,Ie(j)):(t.consume(j),b)}function y(j){return j===93?(t.consume(j),k):b(j)}function k(j){return j===62?ke(j):j===93?(t.consume(j),k):b(j)}function _(j){return j===null||j===62?ke(j):W(j)?(s=_,Ie(j)):(t.consume(j),_)}function $(j){return j===null?n(j):j===63?(t.consume(j),M):W(j)?(s=$,Ie(j)):(t.consume(j),$)}function M(j){return j===62?ke(j):$(j)}function N(j){return et(j)?(t.consume(j),E):n(j)}function E(j){return j===45||tt(j)?(t.consume(j),E):I(j)}function I(j){return W(j)?(s=I,Ie(j)):te(j)?(t.consume(j),I):ke(j)}function F(j){return j===45||tt(j)?(t.consume(j),F):j===47||j===62||be(j)?L(j):n(j)}function L(j){return j===47?(t.consume(j),ke):j===58||j===95||et(j)?(t.consume(j),T):W(j)?(s=L,Ie(j)):te(j)?(t.consume(j),L):ke(j)}function T(j){return j===45||j===46||j===58||j===95||tt(j)?(t.consume(j),T):ce(j)}function ce(j){return j===61?(t.consume(j),Y):W(j)?(s=ce,Ie(j)):te(j)?(t.consume(j),ce):L(j)}function Y(j){return j===null||j===60||j===61||j===62||j===96?n(j):j===34||j===39?(t.consume(j),r=j,K):W(j)?(s=Y,Ie(j)):te(j)?(t.consume(j),Y):(t.consume(j),J)}function K(j){return j===r?(t.consume(j),r=void 0,ee):j===null?n(j):W(j)?(s=K,Ie(j)):(t.consume(j),K)}function J(j){return j===null||j===34||j===39||j===60||j===61||j===96?n(j):j===47||j===62||be(j)?L(j):(t.consume(j),J)}function ee(j){return j===47||j===62||be(j)?L(j):n(j)}function ke(j){return j===62?(t.consume(j),t.exit("htmlTextData"),t.exit("htmlText"),e):n(j)}function Ie(j){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(j),t.exit("lineEnding"),it}function it(j){return te(j)?Q(t,Pt,"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):Pt(j)}function Pt(j){return t.enter("htmlTextData"),s(j)}}var Mr={name:"labelEnd",resolveAll:h9,resolveTo:f9,tokenize:g9},p9={tokenize:b9},d9={tokenize:y9},m9={tokenize:x9};function h9(t){let e=-1,n=[];for(;++e=3&&(c===null||W(c))?(t.exit("thematicBreak"),e(c)):n(c)}function l(c){return c===r?(t.consume(c),a++,l):(t.exit("thematicBreakSequence"),te(c)?Q(t,o,"whitespace")(c):o(c))}}var $t={continuation:{tokenize:S9},exit:A9,name:"list",tokenize:j9},$9={partial:!0,tokenize:T9},C9={partial:!0,tokenize:E9};function j9(t,e,n){let a=this,r=a.events[a.events.length-1],i=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(m){let h=a.containerState.type||(m===42||m===43||m===45?"listUnordered":"listOrdered");if(h==="listUnordered"?!a.containerState.marker||m===a.containerState.marker:Zs(m)){if(a.containerState.type||(a.containerState.type=h,t.enter(h,{_container:!0})),h==="listUnordered")return t.enter("listItemPrefix"),m===42||m===45?t.check(Nr,n,c)(m):c(m);if(!a.interrupt||m===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),l(m)}return n(m)}function l(m){return Zs(m)&&++s<10?(t.consume(m),l):(!a.interrupt||s<2)&&(a.containerState.marker?m===a.containerState.marker:m===41||m===46)?(t.exit("listItemValue"),c(m)):n(m)}function c(m){return t.enter("listItemMarker"),t.consume(m),t.exit("listItemMarker"),a.containerState.marker=a.containerState.marker||m,t.check(Gn,a.interrupt?n:u,t.attempt($9,d,p))}function u(m){return a.containerState.initialBlankLine=!0,i++,d(m)}function p(m){return te(m)?(t.enter("listItemPrefixWhitespace"),t.consume(m),t.exit("listItemPrefixWhitespace"),d):n(m)}function d(m){return a.containerState.size=i+a.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(m)}}function S9(t,e,n){let a=this;return a.containerState._closeFlow=void 0,t.check(Gn,r,i);function r(o){return a.containerState.furtherBlankLines=a.containerState.furtherBlankLines||a.containerState.initialBlankLine,Q(t,e,"listItemIndent",a.containerState.size+1)(o)}function i(o){return a.containerState.furtherBlankLines||!te(o)?(a.containerState.furtherBlankLines=void 0,a.containerState.initialBlankLine=void 0,s(o)):(a.containerState.furtherBlankLines=void 0,a.containerState.initialBlankLine=void 0,t.attempt(C9,e,s)(o))}function s(o){return a.containerState._closeFlow=!0,a.interrupt=void 0,Q(t,t.attempt($t,e,n),"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function E9(t,e,n){let a=this;return Q(t,r,"listItemIndent",a.containerState.size+1);function r(i){let s=a.events[a.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===a.containerState.size?e(i):n(i)}}function A9(t){t.exit(this.containerState.type)}function T9(t,e,n){let a=this;return Q(t,r,"listItemPrefixWhitespace",a.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(i){let s=a.events[a.events.length-1];return!te(i)&&s&&s[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}var uc={name:"setextUnderline",resolveTo:M9,tokenize:N9};function M9(t,e){let n=t.length,a,r,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){a=n;break}t[n][1].type==="paragraph"&&(r=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);let s={type:"setextHeading",start:{...t[a][1].start},end:{...t[t.length-1][1].end}};return t[r][1].type="setextHeadingText",i?(t.splice(r,0,["enter",s,e]),t.splice(i+1,0,["exit",t[a][1],e]),t[a][1].end={...t[i][1].end}):t[a][1]=s,t.push(["exit",s,e]),t}function N9(t,e,n){let a=this,r;return i;function i(c){let u=a.events.length,p;for(;u--;)if(a.events[u][1].type!=="lineEnding"&&a.events[u][1].type!=="linePrefix"&&a.events[u][1].type!=="content"){p=a.events[u][1].type==="paragraph";break}return!a.parser.lazy[a.now().line]&&(a.interrupt||p)?(t.enter("setextHeadingLine"),r=c,s(c)):n(c)}function s(c){return t.enter("setextHeadingLineSequence"),o(c)}function o(c){return c===r?(t.consume(c),o):(t.exit("setextHeadingLineSequence"),te(c)?Q(t,l,"lineSuffix")(c):l(c))}function l(c){return c===null||W(c)?(t.exit("setextHeadingLine"),e(c)):n(c)}}var Wb={tokenize:I9};function I9(t){let e=this,n=t.attempt(Gn,a,t.attempt(this.parser.constructs.flowInitial,r,Q(t,t.attempt(this.parser.constructs.flow,r,t.attempt(hd,r)),"linePrefix")));return n;function a(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function r(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}var Ub={resolveAll:Jb()},Kb=Zb("string"),Xb=Zb("text");function Zb(t){return{resolveAll:Jb(t==="text"?R9:void 0),tokenize:e};function e(n){let a=this,r=this.parser.constructs[t],i=n.attempt(r,s,o);return s;function s(u){return c(u)?i(u):o(u)}function o(u){if(u===null){n.consume(u);return}return n.enter("data"),n.consume(u),l}function l(u){return c(u)?(n.exit("data"),i(u)):(n.consume(u),l)}function c(u){if(u===null)return!0;let p=r[u],d=-1;if(p)for(;++dP9,contentInitial:()=>O9,disable:()=>G9,document:()=>z9,flow:()=>L9,flowInitial:()=>B9,insideSpan:()=>q9,string:()=>D9,text:()=>F9});var z9={42:$t,43:$t,45:$t,48:$t,49:$t,50:$t,51:$t,52:$t,53:$t,54:$t,55:$t,56:$t,57:$t,62:tc},O9={91:fd},B9={[-2]:Ys,[-1]:Ys,32:Ys},L9={35:bd,42:Nr,45:[uc,Nr],60:xd,61:uc,95:Nr,96:rc,126:rc},D9={38:ac,92:nc},F9={[-5]:eo,[-4]:eo,[-3]:eo,33:wd,38:ac,42:Js,60:[dd,kd],91:_d,92:[gd,nc],93:Mr,95:Js,96:md},q9={null:[Js,Ub]},P9={null:[42,95]},G9={null:[]};function Yb(t,e,n){let a={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},r={},i=[],s=[],o=[],l=!0,c={attempt:L(I),check:L(F),consume:M,enter:N,exit:E,interrupt:L(F,{interrupt:!0})},u={code:null,containerState:{},defineSkip:k,events:[],now:y,parser:t,previous:null,sliceSerialize:h,sliceStream:b,write:m},p=e.tokenize.call(u,c),d;return e.resolveAll&&i.push(e),u;function m(K){return s=It(s,K),_(),s[s.length-1]!==null?[]:(T(e,0),u.events=Va(i,u.events,u),u.events)}function h(K,J){return V9(b(K),J)}function b(K){return H9(s,K)}function y(){let{_bufferIndex:K,_index:J,line:ee,column:ke,offset:Ie}=a;return{_bufferIndex:K,_index:J,line:ee,column:ke,offset:Ie}}function k(K){r[K.line]=K.column,Y()}function _(){let K;for(;a._index-1){let o=s[0];typeof o=="string"?s[0]=o.slice(a):s.shift()}i>0&&s.push(t[r].slice(0,i))}return s}function V9(t,e){let n=-1,a=[],r;for(;++n{var G5=Object.create;var _d=Object.defineProperty;var H5=Object.getOwnPropertyDescriptor;var V5=Object.getOwnPropertyNames;var W5=Object.getPrototypeOf,U5=Object.prototype.hasOwnProperty;var K5=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),qb=(t,e)=>{for(var n in e)_d(t,n,{get:e[n],enumerable:!0})},X5=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of V5(e))!U5.call(t,r)&&r!==n&&_d(t,r,{get:()=>e[r],enumerable:!(a=H5(e,r))||a.enumerable});return t};var Z5=(t,e,n)=>(n=t!=null?G5(W5(t)):{},X5(e||!t||!t.__esModule?_d(n,"default",{value:t,enumerable:!0}):n,t));var p1=K5((XG,u1)=>{"use strict";var Ec=Object.prototype.hasOwnProperty,c1=Object.prototype.toString,a1=Object.defineProperty,r1=Object.getOwnPropertyDescriptor,i1=function(e){return typeof Array.isArray=="function"?Array.isArray(e):c1.call(e)==="[object Array]"},s1=function(e){if(!e||c1.call(e)!=="[object Object]")return!1;var n=Ec.call(e,"constructor"),a=e.constructor&&e.constructor.prototype&&Ec.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!a)return!1;var r;for(r in e);return typeof r>"u"||Ec.call(e,r)},o1=function(e,n){a1&&n.name==="__proto__"?a1(e,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):e[n.name]=n.newValue},l1=function(e,n){if(n==="__proto__")if(Ec.call(e,n)){if(r1)return r1(e,n).value}else return;return e[n]};u1.exports=function t(){var e,n,a,r,i,s,o=arguments[0],l=1,c=arguments.length,u=!1;for(typeof o=="boolean"&&(u=o,o=arguments[1]||{},l=2),(o==null||typeof o!="object"&&typeof o!="function")&&(o={});ltypeof e=="function"?"[Function]":e,ic=t=>JSON.stringify(t,J5);function Gb(t){return new nn(tn.docTypeError,`Doc type error, unsupported type: ${ic(t)}`)}function Hb(t){return new nn(tn.contextNotFound,`Context "${t}" not found, do you forget to inject it?`)}function Vb(t){return new nn(tn.timerNotFound,`Timer "${t}" not found, do you forget to record it?`)}function Di(){return new nn(tn.ctxCallOutOfScope,"Should not call a context out of the plugin.")}function Wb(t,e,n){let a=`Cannot create node for ${"name"in t?t.name:t}`,r=s=>{if(s==null)return"null";if(Array.isArray(s))return`[${s.map(r).join(", ")}]`;if(typeof s=="object")return"toJSON"in s&&typeof s.toJSON=="function"?JSON.stringify(s.toJSON()):"spec"in s?JSON.stringify(s.spec):JSON.stringify(s);if(typeof s=="string"||typeof s=="number"||typeof s=="boolean")return JSON.stringify(s);if(typeof s=="function")return`[Function: ${s.name||"anonymous"}]`;try{return String(s)}catch{return"[Unserializable]"}},i=[["[Description]",a],["[Attributes]",e],["[Content]",(n??[]).map(s=>s?typeof s=="object"&&"type"in s?`${s}`:r(s):"null")]].reduce((s,[o,l])=>{let c=`${o}: ${r(l)}.`;return s.concat(c)},[]);return new nn(tn.createNodeInParserFail,i.join(` +`))}function vd(){return new nn(tn.stackOverFlow,"Stack over flow, cannot pop on an empty stack.")}function Ub(t){return new nn(tn.parserMatchError,`Cannot match target parser for node: ${ic(t)}.`)}function Kb(t){return new nn(tn.serializerMatchError,`Cannot match target serializer for node: ${ic(t)}.`)}function Xb(t,e){return new nn(tn.getAtomFromSchemaFail,`Cannot get ${t}: ${e} from schema.`)}function an(t){return new nn(tn.expectDomTypeError,`Expect to be a dom, but get: ${ic(t)}.`)}function sc(){return new nn(tn.callCommandBeforeEditorView,"You're trying to call a command before editor view initialized, make sure to get commandManager from ctx after editor view has been initialized")}function oc(t){return new nn(tn.missingNodeInSchema,`Missing node in schema, milkdown cannot find "${t}" in schema.`)}function Zb(t){return new nn(tn.missingMarkInSchema,`Missing mark in schema, milkdown cannot find "${t}" in schema.`)}var $d=class{constructor(){this.sliceMap=new Map,this.get=t=>{let e=typeof t=="string"?[...this.sliceMap.values()].find(n=>n.type.name===t):this.sliceMap.get(t.id);if(!e)throw Hb(typeof t=="string"?t:t.name);return e},this.remove=t=>{let e=typeof t=="string"?[...this.sliceMap.values()].find(n=>n.type.name===t):this.sliceMap.get(t.id);e&&this.sliceMap.delete(e.type.id)},this.has=t=>typeof t=="string"?[...this.sliceMap.values()].some(e=>e.type.name===t):this.sliceMap.has(t.id)}},Y5=class{#t=[];#e;#a=()=>{this.#t.forEach(t=>t(this.#e))};constructor(t,e,n){this.set=a=>{this.#e=a,this.#a()},this.get=()=>this.#e,this.update=a=>{this.#e=a(this.#e),this.#a()},this.type=n,this.#e=e,t.set(n.id,this)}on(t){return this.#t.push(t),()=>{this.#t=this.#t.filter(e=>e!==t)}}once(t){let e=this.on(n=>{t(n),e()});return e}off(t){this.#t=this.#t.filter(e=>e!==t)}offAll(){this.#t=[]}},Q5=class{constructor(t,e){this.id=Symbol(`Context-${e}`),this.name=e,this._defaultValue=t,this._typeInfo=()=>{throw Di()}}create(t,e=this._defaultValue){return new Y5(t,e,this)}},be=(t,e)=>new Q5(t,e),e9=class{#t;#e;#a;#n=new Set;#i=new Set;#s=new Map;#r=new Map;constructor(t,e,n){this.read=()=>({metadata:this.#t,injectedSlices:[...this.#n].map(a=>({name:typeof a=="string"?a:a.name,value:this.#o(a)})),consumedSlices:[...this.#i].map(a=>({name:typeof a=="string"?a:a.name,value:this.#o(a)})),recordedTimers:[...this.#s].map(([a,{duration:r}])=>({name:a.name,duration:r,status:this.#l(a)})),waitTimers:[...this.#r].map(([a,{duration:r}])=>({name:a.name,duration:r,status:this.#l(a)}))}),this.onRecord=a=>{this.#s.set(a,{start:Date.now(),duration:0})},this.onClear=a=>{this.#s.delete(a)},this.onDone=a=>{let r=this.#s.get(a);r&&(r.duration=Date.now()-r.start)},this.onWait=(a,r)=>{let i=Date.now();r.finally(()=>{this.#r.set(a,{duration:Date.now()-i})}).catch(console.error)},this.onInject=a=>{this.#n.add(a)},this.onRemove=a=>{this.#n.delete(a)},this.onUse=a=>{this.#i.add(a)},this.#e=t,this.#a=e,this.#t=n}#o=t=>this.#e.get(t).get();#l=t=>this.#a.get(t).status},Jb=class Yb{#t;#e;#a;#n;constructor(e,n,a){this.produce=r=>r&&Object.keys(r).length?new Yb(this.#t,this.#e,{...r}):this,this.inject=(r,i)=>{let s=r.create(this.#t.sliceMap);return i!=null&&s.set(i),this.#n?.onInject(r),this},this.remove=r=>(this.#t.remove(r),this.#n?.onRemove(r),this),this.record=r=>(r.create(this.#e.store),this.#n?.onRecord(r),this),this.clearTimer=r=>(this.#e.remove(r),this.#n?.onClear(r),this),this.isInjected=r=>this.#t.has(r),this.isRecorded=r=>this.#e.has(r),this.use=r=>(this.#n?.onUse(r),this.#t.get(r)),this.get=r=>this.use(r).get(),this.set=(r,i)=>this.use(r).set(i),this.update=(r,i)=>this.use(r).update(i),this.timer=r=>this.#e.get(r),this.done=r=>{this.timer(r).done(),this.#n?.onDone(r)},this.wait=r=>{let i=this.timer(r).start();return this.#n?.onWait(r,i),i},this.waitTimers=async r=>{await Promise.all(this.get(r).map(i=>this.wait(i)))},this.#t=e,this.#e=n,this.#a=a,a&&(this.#n=new e9(e,n,a))}get meta(){return this.#a}get inspector(){return this.#n}},Qb=class{constructor(){this.store=new Map,this.get=t=>{let e=this.store.get(t.id);if(!e)throw Vb(t.name);return e},this.remove=t=>{this.store.delete(t.id)},this.has=t=>this.store.has(t.id)}},t9=class{#t=null;#e=null;#a;#n="pending";constructor(t,e){this.start=()=>(this.#t??=new Promise((n,a)=>{this.#e=r=>{r instanceof CustomEvent&&r.detail.id===this.#a&&(this.#n="resolved",this.#i(),r.stopImmediatePropagation(),n())},this.#s(()=>{this.#n==="pending"&&(this.#n="rejected"),this.#i(),a(new Error(`Timing ${this.type.name} timeout.`))}),this.#n="pending",addEventListener(this.type.name,this.#e)}),this.#t),this.done=()=>{let n=new CustomEvent(this.type.name,{detail:{id:this.#a}});dispatchEvent(n)},this.#a=Symbol(e.name),this.type=e,t.set(e.id,this)}get status(){return this.#n}#i=()=>{this.#e&&removeEventListener(this.type.name,this.#e)};#s=t=>{setTimeout(()=>{t()},this.type.timeout)}},n9=class{constructor(t,e=3e3){this.create=n=>new t9(n,this),this.id=Symbol(`Timer-${t}`),this.name=t,this.timeout=e}},bn=(t,e=3e3)=>new n9(t,e);var a9={};function Rr(t,e){let n=e||a9,a=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,r=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return ty(t,a,r)}function ty(t,e,n){if(r9(t)){if("value"in t)return t.type==="html"&&!n?"":t.value;if(e&&"alt"in t&&t.alt)return t.alt;if("children"in t)return ey(t.children,e,n)}return Array.isArray(t)?ey(t,e,n):""}function ey(t,e,n){let a=[],r=-1;for(;++rr?0:r+e:e=e>r?r:e,n=n>0?n:0,a.length<1e4)s=Array.from(a),s.unshift(e,n),t.splice(...s);else for(n&&t.splice(e,n);i0?(We(t,t.length,0,e),t):e}var ay={}.hasOwnProperty;function lc(t){let e={},n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"\uFFFD":String.fromCodePoint(n)}function Ct(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var nt=Ua(/[A-Za-z]/),at=Ua(/[\dA-Za-z]/),ry=Ua(/[#-'*+\--9=?A-Z^-~]/);function zr(t){return t!==null&&(t<32||t===127)}var so=Ua(/\d/),iy=Ua(/[\dA-Fa-f]/),sy=Ua(/[!-/:-@[-`{-~]/);function W(t){return t!==null&&t<-2}function ye(t){return t!==null&&(t<0||t===32)}function te(t){return t===-2||t===-1||t===32}var Or=Ua(/\p{P}|\p{S}/u),Vn=Ua(/\s/);function Ua(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Q(t,e,n,a){let r=a?a-1:Number.POSITIVE_INFINITY,i=0;return s;function s(l){return te(l)?(t.enter(n),o(l)):e(l)}function o(l){return te(l)&&i++s))return;let I=e.events.length,F=I,L,T;for(;F--;)if(e.events[F][0]==="exit"&&e.events[F][1].type==="chunkFlow"){if(L){T=e.events[F][1].end;break}L=!0}for(w(a),E=I;E$;){let N=n[M];e.containerState=N[1],N[0].exit.call(e,t)}n.length=$}function _(){r.write([null]),i=void 0,r=void 0,e.containerState._closeFlow=void 0}}function c9(t,e,n){return Q(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function ha(t){if(t===null||ye(t)||Vn(t))return 1;if(Or(t))return 2}function Ka(t,e,n){let a=[],r=-1;for(;++r1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;let p={...t[a][1].end},d={...t[n][1].start};uy(p,-l),uy(d,l),s={type:l>1?"strongSequence":"emphasisSequence",start:p,end:{...t[a][1].end}},o={type:l>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:d},i={type:l>1?"strongText":"emphasisText",start:{...t[a][1].end},end:{...t[n][1].start}},r={type:l>1?"strong":"emphasis",start:{...s.start},end:{...o.end}},t[a][1].end={...s.start},t[n][1].start={...o.end},c=[],t[a][1].end.offset-t[a][1].start.offset&&(c=Ot(c,[["enter",t[a][1],e],["exit",t[a][1],e]])),c=Ot(c,[["enter",r,e],["enter",s,e],["exit",s,e],["enter",i,e]]),c=Ot(c,Ka(e.parser.constructs.insideSpan.null,t.slice(a+1,n),e)),c=Ot(c,[["exit",i,e],["enter",o,e],["exit",o,e],["exit",r,e]]),t[n][1].end.offset-t[n][1].start.offset?(u=2,c=Ot(c,[["enter",t[n][1],e],["exit",t[n][1],e]])):u=0,We(t,a-1,n-a+3,c),n=a+c.length-u-2;break}}for(n=-1;++n0&&te(E)?Q(t,_,"linePrefix",i+1)(E):_(E)}function _(E){return E===null||W(E)?t.check(py,b,M)(E):(t.enter("codeFlowValue"),$(E))}function $(E){return E===null||W(E)?(t.exit("codeFlowValue"),_(E)):(t.consume(E),$)}function M(E){return t.exit("codeFenced"),e(E)}function N(E,I,F){let L=0;return T;function T(ee){return E.enter("lineEnding"),E.consume(ee),E.exit("lineEnding"),ce}function ce(ee){return E.enter("codeFencedFence"),te(ee)?Q(E,Y,"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(ee):Y(ee)}function Y(ee){return ee===o?(E.enter("codeFencedFenceSequence"),K(ee)):F(ee)}function K(ee){return ee===o?(L++,E.consume(ee),K):L>=s?(E.exit("codeFencedFenceSequence"),te(ee)?Q(E,J,"whitespace")(ee):J(ee)):F(ee)}function J(ee){return ee===null||W(ee)?(E.exit("codeFencedFence"),I(ee)):F(ee)}}}function w9(t,e,n){let a=this;return r;function r(s){return s===null?n(s):(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),i)}function i(s){return a.parser.lazy[a.now().line]?n(s):e(s)}}var lo={name:"codeIndented",tokenize:_9},k9={partial:!0,tokenize:v9};function _9(t,e,n){let a=this;return r;function r(c){return t.enter("codeIndented"),Q(t,i,"linePrefix",5)(c)}function i(c){let u=a.events[a.events.length-1];return u&&u[1].type==="linePrefix"&&u[2].sliceSerialize(u[1],!0).length>=4?s(c):n(c)}function s(c){return c===null?l(c):W(c)?t.attempt(k9,s,l)(c):(t.enter("codeFlowValue"),o(c))}function o(c){return c===null||W(c)?(t.exit("codeFlowValue"),s(c)):(t.consume(c),o)}function l(c){return t.exit("codeIndented"),e(c)}}function v9(t,e,n){let a=this;return r;function r(s){return a.parser.lazy[a.now().line]?n(s):W(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),r):Q(t,i,"linePrefix",5)(s)}function i(s){let o=a.events[a.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?e(s):W(s)?r(s):n(s)}}var jd={name:"codeText",previous:C9,resolve:$9,tokenize:j9};function $9(t){let e=t.length-4,n=3,a,r;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(a=n;++a=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-a+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-a+this.left.length).reverse())}splice(e,n,a){let r=n||0;this.setCursor(Math.trunc(e));let i=this.right.splice(this.right.length-r,Number.POSITIVE_INFINITY);return a&&co(this.left,a),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),co(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),co(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(s):t.interrupt(a.parser.constructs.flow,n,e)(s)}}function gc(t,e,n,a,r,i,s,o,l){let c=l||Number.POSITIVE_INFINITY,u=0;return p;function p(w){return w===60?(t.enter(a),t.enter(r),t.enter(i),t.consume(w),t.exit(i),d):w===null||w===32||w===41||zr(w)?n(w):(t.enter(a),t.enter(s),t.enter(o),t.enter("chunkString",{contentType:"string"}),b(w))}function d(w){return w===62?(t.enter(i),t.consume(w),t.exit(i),t.exit(r),t.exit(a),e):(t.enter(o),t.enter("chunkString",{contentType:"string"}),m(w))}function m(w){return w===62?(t.exit("chunkString"),t.exit(o),d(w)):w===null||w===60||W(w)?n(w):(t.consume(w),w===92?h:m)}function h(w){return w===60||w===62||w===92?(t.consume(w),m):m(w)}function b(w){return!u&&(w===null||w===41||ye(w))?(t.exit("chunkString"),t.exit(o),t.exit(s),t.exit(a),e(w)):u999||m===null||m===91||m===93&&!l||m===94&&!o&&"_hiddenFootnoteSupport"in s.parser.constructs?n(m):m===93?(t.exit(i),t.enter(r),t.consume(m),t.exit(r),t.exit(a),e):W(m)?(t.enter("lineEnding"),t.consume(m),t.exit("lineEnding"),u):(t.enter("chunkString",{contentType:"string"}),p(m))}function p(m){return m===null||m===91||m===93||W(m)||o++>999?(t.exit("chunkString"),u(m)):(t.consume(m),l||(l=!te(m)),m===92?d:p)}function d(m){return m===91||m===92||m===93?(t.consume(m),o++,p):p(m)}}function yc(t,e,n,a,r,i){let s;return o;function o(d){return d===34||d===39||d===40?(t.enter(a),t.enter(r),t.consume(d),t.exit(r),s=d===40?41:d,l):n(d)}function l(d){return d===s?(t.enter(r),t.consume(d),t.exit(r),t.exit(a),e):(t.enter(i),c(d))}function c(d){return d===s?(t.exit(i),l(s)):d===null?n(d):W(d)?(t.enter("lineEnding"),t.consume(d),t.exit("lineEnding"),Q(t,c,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),u(d))}function u(d){return d===s||d===null||W(d)?(t.exit("chunkString"),c(d)):(t.consume(d),d===92?p:u)}function p(d){return d===s||d===92?(t.consume(d),u):u(d)}}function Br(t,e){let n;return a;function a(r){return W(r)?(t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),n=!0,a):te(r)?Q(t,a,n?"linePrefix":"lineSuffix")(r):e(r)}}var Ed={name:"definition",tokenize:I9},N9={partial:!0,tokenize:R9};function I9(t,e,n){let a=this,r;return i;function i(m){return t.enter("definition"),s(m)}function s(m){return bc.call(a,t,o,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(m)}function o(m){return r=Ct(a.sliceSerialize(a.events[a.events.length-1][1]).slice(1,-1)),m===58?(t.enter("definitionMarker"),t.consume(m),t.exit("definitionMarker"),l):n(m)}function l(m){return ye(m)?Br(t,c)(m):c(m)}function c(m){return gc(t,u,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(m)}function u(m){return t.attempt(N9,p,p)(m)}function p(m){return te(m)?Q(t,d,"whitespace")(m):d(m)}function d(m){return m===null||W(m)?(t.exit("definition"),a.parser.defined.push(r),e(m)):n(m)}}function R9(t,e,n){return a;function a(o){return ye(o)?Br(t,r)(o):n(o)}function r(o){return yc(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function i(o){return te(o)?Q(t,s,"whitespace")(o):s(o)}function s(o){return o===null||W(o)?e(o):n(o)}}var Ad={name:"hardBreakEscape",tokenize:z9};function z9(t,e,n){return a;function a(i){return t.enter("hardBreakEscape"),t.consume(i),r}function r(i){return W(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}var Td={name:"headingAtx",resolve:O9,tokenize:B9};function O9(t,e){let n=t.length-2,a=3,r,i;return t[a][1].type==="whitespace"&&(a+=2),n-2>a&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(a===n-1||n-4>a&&t[n-2][1].type==="whitespace")&&(n-=a+1===n?2:4),n>a&&(r={type:"atxHeadingText",start:t[a][1].start,end:t[n][1].end},i={type:"chunkText",start:t[a][1].start,end:t[n][1].end,contentType:"text"},We(t,a,n-a+1,[["enter",r,e],["enter",i,e],["exit",i,e],["exit",r,e]])),t}function B9(t,e,n){let a=0;return r;function r(u){return t.enter("atxHeading"),i(u)}function i(u){return t.enter("atxHeadingSequence"),s(u)}function s(u){return u===35&&a++<6?(t.consume(u),s):u===null||ye(u)?(t.exit("atxHeadingSequence"),o(u)):n(u)}function o(u){return u===35?(t.enter("atxHeadingSequence"),l(u)):u===null||W(u)?(t.exit("atxHeading"),e(u)):te(u)?Q(t,o,"whitespace")(u):(t.enter("atxHeadingText"),c(u))}function l(u){return u===35?(t.consume(u),l):(t.exit("atxHeadingSequence"),o(u))}function c(u){return u===null||u===35||ye(u)?(t.exit("atxHeadingText"),o(u)):(t.consume(u),c)}}var dy=["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","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Md=["pre","script","style","textarea"];var Nd={concrete:!0,name:"htmlFlow",resolveTo:F9,tokenize:P9},L9={partial:!0,tokenize:G9},D9={partial:!0,tokenize:q9};function F9(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function P9(t,e,n){let a=this,r,i,s,o,l;return c;function c(S){return u(S)}function u(S){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(S),p}function p(S){return S===33?(t.consume(S),d):S===47?(t.consume(S),i=!0,b):S===63?(t.consume(S),r=3,a.interrupt?e:j):nt(S)?(t.consume(S),s=String.fromCharCode(S),y):n(S)}function d(S){return S===45?(t.consume(S),r=2,m):S===91?(t.consume(S),r=5,o=0,h):nt(S)?(t.consume(S),r=4,a.interrupt?e:j):n(S)}function m(S){return S===45?(t.consume(S),a.interrupt?e:j):n(S)}function h(S){let ut="CDATA[";return S===ut.charCodeAt(o++)?(t.consume(S),o===ut.length?a.interrupt?e:Y:h):n(S)}function b(S){return nt(S)?(t.consume(S),s=String.fromCharCode(S),y):n(S)}function y(S){if(S===null||S===47||S===62||ye(S)){let ut=S===47,Gn=s.toLowerCase();return!ut&&!i&&Md.includes(Gn)?(r=1,a.interrupt?e(S):Y(S)):dy.includes(s.toLowerCase())?(r=6,ut?(t.consume(S),w):a.interrupt?e(S):Y(S)):(r=7,a.interrupt&&!a.parser.lazy[a.now().line]?n(S):i?_(S):$(S))}return S===45||at(S)?(t.consume(S),s+=String.fromCharCode(S),y):n(S)}function w(S){return S===62?(t.consume(S),a.interrupt?e:Y):n(S)}function _(S){return te(S)?(t.consume(S),_):T(S)}function $(S){return S===47?(t.consume(S),T):S===58||S===95||nt(S)?(t.consume(S),M):te(S)?(t.consume(S),$):T(S)}function M(S){return S===45||S===46||S===58||S===95||at(S)?(t.consume(S),M):N(S)}function N(S){return S===61?(t.consume(S),E):te(S)?(t.consume(S),N):$(S)}function E(S){return S===null||S===60||S===61||S===62||S===96?n(S):S===34||S===39?(t.consume(S),l=S,I):te(S)?(t.consume(S),E):F(S)}function I(S){return S===l?(t.consume(S),l=null,L):S===null||W(S)?n(S):(t.consume(S),I)}function F(S){return S===null||S===34||S===39||S===47||S===60||S===61||S===62||S===96||ye(S)?N(S):(t.consume(S),F)}function L(S){return S===47||S===62||te(S)?$(S):n(S)}function T(S){return S===62?(t.consume(S),ce):n(S)}function ce(S){return S===null||W(S)?Y(S):te(S)?(t.consume(S),ce):n(S)}function Y(S){return S===45&&r===2?(t.consume(S),_e):S===60&&r===1?(t.consume(S),Ie):S===62&&r===4?(t.consume(S),Ve):S===63&&r===3?(t.consume(S),j):S===93&&r===5?(t.consume(S),Ut):W(S)&&(r===6||r===7)?(t.exit("htmlFlowData"),t.check(L9,zt,K)(S)):S===null||W(S)?(t.exit("htmlFlowData"),K(S)):(t.consume(S),Y)}function K(S){return t.check(D9,J,zt)(S)}function J(S){return t.enter("lineEnding"),t.consume(S),t.exit("lineEnding"),ee}function ee(S){return S===null||W(S)?K(S):(t.enter("htmlFlowData"),Y(S))}function _e(S){return S===45?(t.consume(S),j):Y(S)}function Ie(S){return S===47?(t.consume(S),s="",ct):Y(S)}function ct(S){if(S===62){let ut=s.toLowerCase();return Md.includes(ut)?(t.consume(S),Ve):Y(S)}return nt(S)&&s.length<8?(t.consume(S),s+=String.fromCharCode(S),ct):Y(S)}function Ut(S){return S===93?(t.consume(S),j):Y(S)}function j(S){return S===62?(t.consume(S),Ve):S===45&&r===2?(t.consume(S),j):Y(S)}function Ve(S){return S===null||W(S)?(t.exit("htmlFlowData"),zt(S)):(t.consume(S),Ve)}function zt(S){return t.exit("htmlFlow"),e(S)}}function q9(t,e,n){let a=this;return r;function r(s){return W(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),i):n(s)}function i(s){return a.parser.lazy[a.now().line]?n(s):e(s)}}function G9(t,e,n){return a;function a(r){return t.enter("lineEnding"),t.consume(r),t.exit("lineEnding"),t.attempt(Wn,e,n)}}var Id={name:"htmlText",tokenize:H9};function H9(t,e,n){let a=this,r,i,s;return o;function o(j){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(j),l}function l(j){return j===33?(t.consume(j),c):j===47?(t.consume(j),N):j===63?(t.consume(j),$):nt(j)?(t.consume(j),F):n(j)}function c(j){return j===45?(t.consume(j),u):j===91?(t.consume(j),i=0,h):nt(j)?(t.consume(j),_):n(j)}function u(j){return j===45?(t.consume(j),m):n(j)}function p(j){return j===null?n(j):j===45?(t.consume(j),d):W(j)?(s=p,Ie(j)):(t.consume(j),p)}function d(j){return j===45?(t.consume(j),m):p(j)}function m(j){return j===62?_e(j):j===45?d(j):p(j)}function h(j){let Ve="CDATA[";return j===Ve.charCodeAt(i++)?(t.consume(j),i===Ve.length?b:h):n(j)}function b(j){return j===null?n(j):j===93?(t.consume(j),y):W(j)?(s=b,Ie(j)):(t.consume(j),b)}function y(j){return j===93?(t.consume(j),w):b(j)}function w(j){return j===62?_e(j):j===93?(t.consume(j),w):b(j)}function _(j){return j===null||j===62?_e(j):W(j)?(s=_,Ie(j)):(t.consume(j),_)}function $(j){return j===null?n(j):j===63?(t.consume(j),M):W(j)?(s=$,Ie(j)):(t.consume(j),$)}function M(j){return j===62?_e(j):$(j)}function N(j){return nt(j)?(t.consume(j),E):n(j)}function E(j){return j===45||at(j)?(t.consume(j),E):I(j)}function I(j){return W(j)?(s=I,Ie(j)):te(j)?(t.consume(j),I):_e(j)}function F(j){return j===45||at(j)?(t.consume(j),F):j===47||j===62||ye(j)?L(j):n(j)}function L(j){return j===47?(t.consume(j),_e):j===58||j===95||nt(j)?(t.consume(j),T):W(j)?(s=L,Ie(j)):te(j)?(t.consume(j),L):_e(j)}function T(j){return j===45||j===46||j===58||j===95||at(j)?(t.consume(j),T):ce(j)}function ce(j){return j===61?(t.consume(j),Y):W(j)?(s=ce,Ie(j)):te(j)?(t.consume(j),ce):L(j)}function Y(j){return j===null||j===60||j===61||j===62||j===96?n(j):j===34||j===39?(t.consume(j),r=j,K):W(j)?(s=Y,Ie(j)):te(j)?(t.consume(j),Y):(t.consume(j),J)}function K(j){return j===r?(t.consume(j),r=void 0,ee):j===null?n(j):W(j)?(s=K,Ie(j)):(t.consume(j),K)}function J(j){return j===null||j===34||j===39||j===60||j===61||j===96?n(j):j===47||j===62||ye(j)?L(j):(t.consume(j),J)}function ee(j){return j===47||j===62||ye(j)?L(j):n(j)}function _e(j){return j===62?(t.consume(j),t.exit("htmlTextData"),t.exit("htmlText"),e):n(j)}function Ie(j){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(j),t.exit("lineEnding"),ct}function ct(j){return te(j)?Q(t,Ut,"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(j):Ut(j)}function Ut(j){return t.enter("htmlTextData"),s(j)}}var Lr={name:"labelEnd",resolveAll:K9,resolveTo:X9,tokenize:Z9},V9={tokenize:J9},W9={tokenize:Y9},U9={tokenize:Q9};function K9(t){let e=-1,n=[];for(;++e=3&&(c===null||W(c))?(t.exit("thematicBreak"),e(c)):n(c)}function l(c){return c===r?(t.consume(c),a++,l):(t.exit("thematicBreakSequence"),te(c)?Q(t,o,"whitespace")(c):o(c))}}var jt={continuation:{tokenize:o6},exit:c6,name:"list",tokenize:s6},r6={partial:!0,tokenize:u6},i6={partial:!0,tokenize:l6};function s6(t,e,n){let a=this,r=a.events[a.events.length-1],i=r&&r[1].type==="linePrefix"?r[2].sliceSerialize(r[1],!0).length:0,s=0;return o;function o(m){let h=a.containerState.type||(m===42||m===43||m===45?"listUnordered":"listOrdered");if(h==="listUnordered"?!a.containerState.marker||m===a.containerState.marker:so(m)){if(a.containerState.type||(a.containerState.type=h,t.enter(h,{_container:!0})),h==="listUnordered")return t.enter("listItemPrefix"),m===42||m===45?t.check(Dr,n,c)(m):c(m);if(!a.interrupt||m===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),l(m)}return n(m)}function l(m){return so(m)&&++s<10?(t.consume(m),l):(!a.interrupt||s<2)&&(a.containerState.marker?m===a.containerState.marker:m===41||m===46)?(t.exit("listItemValue"),c(m)):n(m)}function c(m){return t.enter("listItemMarker"),t.consume(m),t.exit("listItemMarker"),a.containerState.marker=a.containerState.marker||m,t.check(Wn,a.interrupt?n:u,t.attempt(r6,d,p))}function u(m){return a.containerState.initialBlankLine=!0,i++,d(m)}function p(m){return te(m)?(t.enter("listItemPrefixWhitespace"),t.consume(m),t.exit("listItemPrefixWhitespace"),d):n(m)}function d(m){return a.containerState.size=i+a.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(m)}}function o6(t,e,n){let a=this;return a.containerState._closeFlow=void 0,t.check(Wn,r,i);function r(o){return a.containerState.furtherBlankLines=a.containerState.furtherBlankLines||a.containerState.initialBlankLine,Q(t,e,"listItemIndent",a.containerState.size+1)(o)}function i(o){return a.containerState.furtherBlankLines||!te(o)?(a.containerState.furtherBlankLines=void 0,a.containerState.initialBlankLine=void 0,s(o)):(a.containerState.furtherBlankLines=void 0,a.containerState.initialBlankLine=void 0,t.attempt(i6,e,s)(o))}function s(o){return a.containerState._closeFlow=!0,a.interrupt=void 0,Q(t,t.attempt(jt,e,n),"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function l6(t,e,n){let a=this;return Q(t,r,"listItemIndent",a.containerState.size+1);function r(i){let s=a.events[a.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===a.containerState.size?e(i):n(i)}}function c6(t){t.exit(this.containerState.type)}function u6(t,e,n){let a=this;return Q(t,r,"listItemPrefixWhitespace",a.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function r(i){let s=a.events[a.events.length-1];return!te(i)&&s&&s[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}var xc={name:"setextUnderline",resolveTo:p6,tokenize:d6};function p6(t,e){let n=t.length,a,r,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){a=n;break}t[n][1].type==="paragraph"&&(r=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);let s={type:"setextHeading",start:{...t[a][1].start},end:{...t[t.length-1][1].end}};return t[r][1].type="setextHeadingText",i?(t.splice(r,0,["enter",s,e]),t.splice(i+1,0,["exit",t[a][1],e]),t[a][1].end={...t[i][1].end}):t[a][1]=s,t.push(["exit",s,e]),t}function d6(t,e,n){let a=this,r;return i;function i(c){let u=a.events.length,p;for(;u--;)if(a.events[u][1].type!=="lineEnding"&&a.events[u][1].type!=="linePrefix"&&a.events[u][1].type!=="content"){p=a.events[u][1].type==="paragraph";break}return!a.parser.lazy[a.now().line]&&(a.interrupt||p)?(t.enter("setextHeadingLine"),r=c,s(c)):n(c)}function s(c){return t.enter("setextHeadingLineSequence"),o(c)}function o(c){return c===r?(t.consume(c),o):(t.exit("setextHeadingLineSequence"),te(c)?Q(t,l,"lineSuffix")(c):l(c))}function l(c){return c===null||W(c)?(t.exit("setextHeadingLine"),e(c)):n(c)}}var my={tokenize:m6};function m6(t){let e=this,n=t.attempt(Wn,a,t.attempt(this.parser.constructs.flowInitial,r,Q(t,t.attempt(this.parser.constructs.flow,r,t.attempt(Sd,r)),"linePrefix")));return n;function a(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function r(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}var hy={resolveAll:yy()},fy=by("string"),gy=by("text");function by(t){return{resolveAll:yy(t==="text"?h6:void 0),tokenize:e};function e(n){let a=this,r=this.parser.constructs[t],i=n.attempt(r,s,o);return s;function s(u){return c(u)?i(u):o(u)}function o(u){if(u===null){n.consume(u);return}return n.enter("data"),n.consume(u),l}function l(u){return c(u)?(n.exit("data"),i(u)):(n.consume(u),l)}function c(u){if(u===null)return!0;let p=r[u],d=-1;if(p)for(;++d_6,contentInitial:()=>g6,disable:()=>v6,document:()=>f6,flow:()=>y6,flowInitial:()=>b6,insideSpan:()=>k6,string:()=>x6,text:()=>w6});var f6={42:jt,43:jt,45:jt,48:jt,49:jt,50:jt,51:jt,52:jt,53:jt,54:jt,55:jt,56:jt,57:jt,62:uc},g6={91:Ed},b6={[-2]:lo,[-1]:lo,32:lo},y6={35:Td,42:Dr,45:[xc,Dr],60:Nd,61:xc,95:Dr,96:mc,126:mc},x6={38:dc,92:pc},w6={[-5]:uo,[-4]:uo,[-3]:uo,33:Rd,38:dc,42:oo,60:[Cd,Id],91:zd,92:[Ad,pc],93:Lr,95:oo,96:jd},k6={null:[oo,hy]},_6={null:[42,95]},v6={null:[]};function xy(t,e,n){let a={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},r={},i=[],s=[],o=[],l=!0,c={attempt:L(I),check:L(F),consume:M,enter:N,exit:E,interrupt:L(F,{interrupt:!0})},u={code:null,containerState:{},defineSkip:w,events:[],now:y,parser:t,previous:null,sliceSerialize:h,sliceStream:b,write:m},p=e.tokenize.call(u,c),d;return e.resolveAll&&i.push(e),u;function m(K){return s=Ot(s,K),_(),s[s.length-1]!==null?[]:(T(e,0),u.events=Ka(i,u.events,u),u.events)}function h(K,J){return C6(b(K),J)}function b(K){return $6(s,K)}function y(){let{_bufferIndex:K,_index:J,line:ee,column:_e,offset:Ie}=a;return{_bufferIndex:K,_index:J,line:ee,column:_e,offset:Ie}}function w(K){r[K.line]=K.column,Y()}function _(){let K;for(;a._index-1){let o=s[0];typeof o=="string"?s[0]=o.slice(a):s.shift()}i>0&&s.push(t[r].slice(0,i))}return s}function C6(t,e){let n=-1,a=[],r;for(;++n0){let Mn=se.tokenStack[se.tokenStack.length-1];(Mn[1]||ny).call(se,void 0,Mn[0])}for(U.position={start:Ua(R.length>0?R[0][1].start:{line:1,column:1,offset:0}),end:Ua(R.length>0?R[R.length-2][1].end:{line:1,column:1,offset:0})},Te=-1;++Te "),i.shift(2);let s=n.indentLines(n.containerFlow(t,i.current()),Y9);return r(),s}function Y9(t,e,n){return">"+(n?"":" ")+t}function mc(t,e){return ly(t,e.inConstruct,!0)&&!ly(t,e.notInConstruct,!1)}function ly(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let a=-1;for(;++as&&(s=i):i=1,r=a+e.length,a=n.indexOf(e,r);return s}function to(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function cy(t){let e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function uy(t,e,n,a){let r=cy(n),i=t.value||"",s=r==="`"?"GraveAccent":"Tilde";if(to(t,n)){let p=n.enter("codeIndented"),d=n.indentLines(i,Q9);return p(),d}let o=n.createTracker(a),l=r.repeat(Math.max(hc(i,r)+1,3)),c=n.enter("codeFenced"),u=o.move(l);if(t.lang){let p=n.enter(`codeFencedLang${s}`);u+=o.move(n.safe(t.lang,{before:u,after:" ",encode:["`"],...o.current()})),p()}if(t.lang&&t.meta){let p=n.enter(`codeFencedMeta${s}`);u+=o.move(" "),u+=o.move(n.safe(t.meta,{before:u,after:` +`;break}case-2:{s=e?" ":" ";break}case-1:{if(!e&&r)continue;s=" ";break}default:s=String.fromCharCode(i)}r=i===-2,a.push(s)}return a.join("")}function Bd(t){let a={constructs:lc([Od,...(t||{}).extensions||[]]),content:r(oy),defined:[],document:r(cy),flow:r(my),lazy:{},string:r(fy),text:r(gy)};return a;function r(i){return s;function s(o){return xy(a,i,o)}}}function Ld(t){for(;!fc(t););return t}var wy=/[\0\t\n\r]/g;function Dd(){let t=1,e="",n=!0,a;return r;function r(i,s,o){let l=[],c,u,p,d,m;for(i=e+(typeof i=="string"?i.toString():new TextDecoder(s||void 0).decode(i)),p=0,e="",n&&(i.charCodeAt(0)===65279&&p++,n=void 0);p0){let Nn=se.tokenStack[se.tokenStack.length-1];(Nn[1]||vy).call(se,void 0,Nn[0])}for(U.position={start:Za(R.length>0?R[0][1].start:{line:1,column:1,offset:0}),end:Za(R.length>0?R[R.length-2][1].end:{line:1,column:1,offset:0})},Te=-1;++Te "),i.shift(2);let s=n.indentLines(n.containerFlow(t,i.current()),N6);return r(),s}function N6(t,e,n){return">"+(n?"":" ")+t}function _c(t,e){return Ay(t,e.inConstruct,!0)&&!Ay(t,e.notInConstruct,!1)}function Ay(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let a=-1;for(;++as&&(s=i):i=1,r=a+e.length,a=n.indexOf(e,r);return s}function po(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function Ty(t){let e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function My(t,e,n,a){let r=Ty(n),i=t.value||"",s=r==="`"?"GraveAccent":"Tilde";if(po(t,n)){let p=n.enter("codeIndented"),d=n.indentLines(i,I6);return p(),d}let o=n.createTracker(a),l=r.repeat(Math.max(vc(i,r)+1,3)),c=n.enter("codeFenced"),u=o.move(l);if(t.lang){let p=n.enter(`codeFencedLang${s}`);u+=o.move(n.safe(t.lang,{before:u,after:" ",encode:["`"],...o.current()})),p()}if(t.lang&&t.meta){let p=n.enter(`codeFencedMeta${s}`);u+=o.move(" "),u+=o.move(n.safe(t.meta,{before:u,after:` `,encode:["`"],...o.current()})),p()}return u+=o.move(` `),i&&(u+=o.move(i+` -`)),u+=o.move(l),c(),u}function Q9(t,e,n){return(n?"":" ")+t}function Ii(t){let e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function py(t,e,n,a){let r=Ii(n),i=r==='"'?"Quote":"Apostrophe",s=n.enter("definition"),o=n.enter("label"),l=n.createTracker(a),c=l.move("[");return c+=l.move(n.safe(n.associationId(t),{before:c,after:"]",...l.current()})),c+=l.move("]: "),o(),!t.url||/[\0- \u007F]/.test(t.url)?(o=n.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(n.safe(t.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(o=n.enter("destinationRaw"),c+=l.move(n.safe(t.url,{before:c,after:t.title?" ":` -`,...l.current()}))),o(),t.title&&(o=n.enter(`title${i}`),c+=l.move(" "+r),c+=l.move(n.safe(t.title,{before:c,after:r,...l.current()})),c+=l.move(r),o()),s(),c}function dy(t){let e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function en(t){return"&#x"+t.toString(16).toUpperCase()+";"}function Ri(t,e,n){let a=ua(t),r=ua(e);return a===void 0?r===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:r===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:a===1?r===void 0?{inside:!1,outside:!1}:r===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:r===void 0?{inside:!1,outside:!1}:r===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Md.peek=e6;function Md(t,e,n,a){let r=dy(n),i=n.enter("emphasis"),s=n.createTracker(a),o=s.move(r),l=s.move(n.containerPhrasing(t,{after:r,before:o,...s.current()})),c=l.charCodeAt(0),u=Ri(a.before.charCodeAt(a.before.length-1),c,r);u.inside&&(l=en(c)+l.slice(1));let p=l.charCodeAt(l.length-1),d=Ri(a.after.charCodeAt(0),p,r);d.inside&&(l=l.slice(0,-1)+en(p));let m=s.move(r);return i(),n.attentionEncodeSurroundingInfo={after:d.outside,before:u.outside},o+l+m}function e6(t,e,n){return n.options.emphasis||"*"}var Ka=(function(t){if(t==null)return r6;if(typeof t=="function")return fc(t);if(typeof t=="object")return Array.isArray(t)?t6(t):n6(t);if(typeof t=="string")return a6(t);throw new Error("Expected function, string, or object as test")});function t6(t){let e=[],n=-1;for(;++n":""))+")"})}return d;function d(){let m=my,h,b,y;if((!e||i(l,c,u[u.length-1]||void 0))&&(m=s6(n(l,u)),m[0]===Ir))return m;if("children"in l&&l.children){let k=l;if(k.children&&m[0]!==Rr)for(b=(a?k.children.length:-1)+s,y=u.concat(k);b>-1&&b",...l.current()})),c+=l.move(">")):(o=n.enter("destinationRaw"),c+=l.move(n.safe(t.url,{before:c,after:t.title?" ":` +`,...l.current()}))),o(),t.title&&(o=n.enter(`title${i}`),c+=l.move(" "+r),c+=l.move(n.safe(t.title,{before:c,after:r,...l.current()})),c+=l.move(r),o()),s(),c}function Iy(t){let e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function rn(t){return"&#x"+t.toString(16).toUpperCase()+";"}function Gi(t,e,n){let a=ha(t),r=ha(e);return a===void 0?r===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:r===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:a===1?r===void 0?{inside:!1,outside:!1}:r===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:r===void 0?{inside:!1,outside:!1}:r===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Hd.peek=R6;function Hd(t,e,n,a){let r=Iy(n),i=n.enter("emphasis"),s=n.createTracker(a),o=s.move(r),l=s.move(n.containerPhrasing(t,{after:r,before:o,...s.current()})),c=l.charCodeAt(0),u=Gi(a.before.charCodeAt(a.before.length-1),c,r);u.inside&&(l=rn(c)+l.slice(1));let p=l.charCodeAt(l.length-1),d=Gi(a.after.charCodeAt(0),p,r);d.inside&&(l=l.slice(0,-1)+rn(p));let m=s.move(r);return i(),n.attentionEncodeSurroundingInfo={after:d.outside,before:u.outside},o+l+m}function R6(t,e,n){return n.options.emphasis||"*"}var Ja=(function(t){if(t==null)return L6;if(typeof t=="function")return $c(t);if(typeof t=="object")return Array.isArray(t)?z6(t):O6(t);if(typeof t=="string")return B6(t);throw new Error("Expected function, string, or object as test")});function z6(t){let e=[],n=-1;for(;++n":""))+")"})}return d;function d(){let m=Ry,h,b,y;if((!e||i(l,c,u[u.length-1]||void 0))&&(m=F6(n(l,u)),m[0]===Fr))return m;if("children"in l&&l.children){let w=l;if(w.children&&m[0]!==Pr)for(b=(a?w.children.length:-1)+s,y=u.concat(w);b>-1&&b",...l.current()})),c+=l.move(">")):(o=n.enter("destinationRaw"),c+=l.move(n.safe(t.url,{before:c,after:t.title?" ":")",...l.current()}))),o(),t.title&&(o=n.enter(`title${i}`),c+=l.move(" "+r),c+=l.move(n.safe(t.title,{before:c,after:r,...l.current()})),c+=l.move(r),o()),c+=l.move(")"),s(),c}function l6(){return"!"}Rd.peek=c6;function Rd(t,e,n,a){let r=t.referenceType,i=n.enter("imageReference"),s=n.enter("label"),o=n.createTracker(a),l=o.move("!["),c=n.safe(t.alt,{before:l,after:"]",...o.current()});l+=o.move(c+"]["),s();let u=n.stack;n.stack=[],s=n.enter("reference");let p=n.safe(n.associationId(t),{before:l,after:"]",...o.current()});return s(),n.stack=u,i(),r==="full"||!c||c!==p?l+=o.move(p+"]"):r==="shortcut"?l=l.slice(0,-1):l+=o.move("]"),l}function c6(){return"!"}zd.peek=u6;function zd(t,e,n){let a=t.value||"",r="`",i=-1;for(;new RegExp("(^|[^`])"+r+"([^`]|$)").test(a);)r+="`";for(/[^ \r\n]/.test(a)&&(/^[ \r\n]/.test(a)&&/[ \r\n]$/.test(a)||/^`|`$/.test(a))&&(a=" "+a+" ");++i\u007F]/.test(t.url))}Bd.peek=p6;function Bd(t,e,n,a){let r=Ii(n),i=r==='"'?"Quote":"Apostrophe",s=n.createTracker(a),o,l;if(Od(t,n)){let u=n.stack;n.stack=[],o=n.enter("autolink");let p=s.move("<");return p+=s.move(n.containerPhrasing(t,{before:p,after:">",...s.current()})),p+=s.move(">"),o(),n.stack=u,p}o=n.enter("link"),l=n.enter("label");let c=s.move("[");return c+=s.move(n.containerPhrasing(t,{before:c,after:"](",...s.current()})),c+=s.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),c+=s.move("<"),c+=s.move(n.safe(t.url,{before:c,after:">",...s.current()})),c+=s.move(">")):(l=n.enter("destinationRaw"),c+=s.move(n.safe(t.url,{before:c,after:t.title?" ":")",...s.current()}))),l(),t.title&&(l=n.enter(`title${i}`),c+=s.move(" "+r),c+=s.move(n.safe(t.title,{before:c,after:r,...s.current()})),c+=s.move(r),l()),c+=s.move(")"),o(),c}function p6(t,e,n){return Od(t,n)?"<":"["}Ld.peek=d6;function Ld(t,e,n,a){let r=t.referenceType,i=n.enter("linkReference"),s=n.enter("label"),o=n.createTracker(a),l=o.move("["),c=n.containerPhrasing(t,{before:l,after:"]",...o.current()});l+=o.move(c+"]["),s();let u=n.stack;n.stack=[],s=n.enter("reference");let p=n.safe(n.associationId(t),{before:l,after:"]",...o.current()});return s(),n.stack=u,i(),r==="full"||!c||c!==p?l+=o.move(p+"]"):r==="shortcut"?l=l.slice(0,-1):l+=o.move("]"),l}function d6(){return"["}function zi(t){let e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function fy(t){let e=zi(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function gy(t){let e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function yc(t){let e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function by(t,e,n,a){let r=n.enter("list"),i=n.bulletCurrent,s=t.ordered?gy(n):zi(n),o=t.ordered?s==="."?")":".":fy(n),l=e&&n.bulletLastUsed?s===n.bulletLastUsed:!1;if(!t.ordered){let u=t.children?t.children[0]:void 0;if((s==="*"||s==="-")&&u&&(!u.children||!u.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(l=!0),yc(n)===s&&u){let p=-1;for(;++p-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let s=i.length+1;(r==="tab"||r==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(s=Math.ceil(s/4)*4);let o=n.createTracker(a);o.move(i+" ".repeat(s-i.length)),o.shift(s);let l=n.enter("listItem"),c=n.indentLines(n.containerFlow(t,o.current()),u);return l(),c;function u(p,d,m){return d?(m?"":" ".repeat(s))+p:(m?i:i+" ".repeat(s-i.length))+p}}function ky(t,e,n,a){let r=n.enter("paragraph"),i=n.enter("phrasing"),s=n.containerPhrasing(t,a);return i(),r(),s}var Dd=Ka(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function wy(t,e,n,a){return(t.children.some(function(s){return Dd(s)})?n.containerPhrasing:n.containerFlow).call(n,t,a)}function _y(t){let e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}Fd.peek=m6;function Fd(t,e,n,a){let r=_y(n),i=n.enter("strong"),s=n.createTracker(a),o=s.move(r+r),l=s.move(n.containerPhrasing(t,{after:r,before:o,...s.current()})),c=l.charCodeAt(0),u=Ri(a.before.charCodeAt(a.before.length-1),c,r);u.inside&&(l=en(c)+l.slice(1));let p=l.charCodeAt(l.length-1),d=Ri(a.after.charCodeAt(0),p,r);d.inside&&(l=l.slice(0,-1)+en(p));let m=s.move(r+r);return i(),n.attentionEncodeSurroundingInfo={after:d.outside,before:u.outside},o+l+m}function m6(t,e,n){return n.options.strong||"*"}function vy(t,e,n,a){return n.safe(t.value,a)}function $y(t){let e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function Cy(t,e,n){let a=(yc(n)+(n.options.ruleSpaces?" ":"")).repeat($y(n));return n.options.ruleSpaces?a.slice(0,-1):a}var Or={blockquote:oy,break:Td,code:uy,definition:py,emphasis:Md,hardBreak:Td,heading:hy,html:Nd,image:Id,imageReference:Rd,inlineCode:zd,link:Bd,linkReference:Ld,list:by,listItem:xy,paragraph:ky,root:wy,strong:Fd,text:vy,thematicBreak:Cy};var jy=[h6];function h6(t,e,n,a){if(e.type==="code"&&to(e,a)&&(t.type==="list"||t.type===e.type&&to(t,a)))return!1;if("spread"in n&&typeof n.spread=="boolean")return t.type==="paragraph"&&(t.type===e.type||e.type==="definition"||e.type==="heading"&&bc(e,a))?void 0:n.spread?1:0}var Br=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"],Sy=[{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"\r",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:` -`,inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"!",after:"\\[",inConstruct:"phrasing",notInConstruct:Br},{character:'"',inConstruct:"titleQuote"},{atBreak:!0,character:"#"},{character:"#",inConstruct:"headingAtx",after:`(?:[\r -]|$)`},{character:"&",after:"[#A-Za-z]",inConstruct:"phrasing"},{character:"'",inConstruct:"titleApostrophe"},{character:"(",inConstruct:"destinationRaw"},{before:"\\]",character:"(",inConstruct:"phrasing",notInConstruct:Br},{atBreak:!0,before:"\\d+",character:")"},{character:")",inConstruct:"destinationRaw"},{atBreak:!0,character:"*",after:`(?:[ \r -*])`},{character:"*",inConstruct:"phrasing",notInConstruct:Br},{atBreak:!0,character:"+",after:`(?:[ \r +`,...i.current()});return/^[\t ]/.test(c)&&(c=rn(c.charCodeAt(0))+c.slice(1)),c=c?s+" "+c:s,n.options.closeAtx&&(c+=" "+s),l(),o(),c}Vd.peek=P6;function Vd(t){return t.value||""}function P6(){return"<"}Wd.peek=q6;function Wd(t,e,n,a){let r=qi(n),i=r==='"'?"Quote":"Apostrophe",s=n.enter("image"),o=n.enter("label"),l=n.createTracker(a),c=l.move("![");return c+=l.move(n.safe(t.alt,{before:c,after:"]",...l.current()})),c+=l.move("]("),o(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(o=n.enter("destinationLiteral"),c+=l.move("<"),c+=l.move(n.safe(t.url,{before:c,after:">",...l.current()})),c+=l.move(">")):(o=n.enter("destinationRaw"),c+=l.move(n.safe(t.url,{before:c,after:t.title?" ":")",...l.current()}))),o(),t.title&&(o=n.enter(`title${i}`),c+=l.move(" "+r),c+=l.move(n.safe(t.title,{before:c,after:r,...l.current()})),c+=l.move(r),o()),c+=l.move(")"),s(),c}function q6(){return"!"}Ud.peek=G6;function Ud(t,e,n,a){let r=t.referenceType,i=n.enter("imageReference"),s=n.enter("label"),o=n.createTracker(a),l=o.move("!["),c=n.safe(t.alt,{before:l,after:"]",...o.current()});l+=o.move(c+"]["),s();let u=n.stack;n.stack=[],s=n.enter("reference");let p=n.safe(n.associationId(t),{before:l,after:"]",...o.current()});return s(),n.stack=u,i(),r==="full"||!c||c!==p?l+=o.move(p+"]"):r==="shortcut"?l=l.slice(0,-1):l+=o.move("]"),l}function G6(){return"!"}Kd.peek=H6;function Kd(t,e,n){let a=t.value||"",r="`",i=-1;for(;new RegExp("(^|[^`])"+r+"([^`]|$)").test(a);)r+="`";for(/[^ \r\n]/.test(a)&&(/^[ \r\n]/.test(a)&&/[ \r\n]$/.test(a)||/^`|`$/.test(a))&&(a=" "+a+" ");++i\u007F]/.test(t.url))}Zd.peek=V6;function Zd(t,e,n,a){let r=qi(n),i=r==='"'?"Quote":"Apostrophe",s=n.createTracker(a),o,l;if(Xd(t,n)){let u=n.stack;n.stack=[],o=n.enter("autolink");let p=s.move("<");return p+=s.move(n.containerPhrasing(t,{before:p,after:">",...s.current()})),p+=s.move(">"),o(),n.stack=u,p}o=n.enter("link"),l=n.enter("label");let c=s.move("[");return c+=s.move(n.containerPhrasing(t,{before:c,after:"](",...s.current()})),c+=s.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),c+=s.move("<"),c+=s.move(n.safe(t.url,{before:c,after:">",...s.current()})),c+=s.move(">")):(l=n.enter("destinationRaw"),c+=s.move(n.safe(t.url,{before:c,after:t.title?" ":")",...s.current()}))),l(),t.title&&(l=n.enter(`title${i}`),c+=s.move(" "+r),c+=s.move(n.safe(t.title,{before:c,after:r,...s.current()})),c+=s.move(r),l()),c+=s.move(")"),o(),c}function V6(t,e,n){return Xd(t,n)?"<":"["}Jd.peek=W6;function Jd(t,e,n,a){let r=t.referenceType,i=n.enter("linkReference"),s=n.enter("label"),o=n.createTracker(a),l=o.move("["),c=n.containerPhrasing(t,{before:l,after:"]",...o.current()});l+=o.move(c+"]["),s();let u=n.stack;n.stack=[],s=n.enter("reference");let p=n.safe(n.associationId(t),{before:l,after:"]",...o.current()});return s(),n.stack=u,i(),r==="full"||!c||c!==p?l+=o.move(p+"]"):r==="shortcut"?l=l.slice(0,-1):l+=o.move("]"),l}function W6(){return"["}function Hi(t){let e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function Oy(t){let e=Hi(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function By(t){let e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function Sc(t){let e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function Ly(t,e,n,a){let r=n.enter("list"),i=n.bulletCurrent,s=t.ordered?By(n):Hi(n),o=t.ordered?s==="."?")":".":Oy(n),l=e&&n.bulletLastUsed?s===n.bulletLastUsed:!1;if(!t.ordered){let u=t.children?t.children[0]:void 0;if((s==="*"||s==="-")&&u&&(!u.children||!u.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(l=!0),Sc(n)===s&&u){let p=-1;for(;++p-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let s=i.length+1;(r==="tab"||r==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(s=Math.ceil(s/4)*4);let o=n.createTracker(a);o.move(i+" ".repeat(s-i.length)),o.shift(s);let l=n.enter("listItem"),c=n.indentLines(n.containerFlow(t,o.current()),u);return l(),c;function u(p,d,m){return d?(m?"":" ".repeat(s))+p:(m?i:i+" ".repeat(s-i.length))+p}}function Py(t,e,n,a){let r=n.enter("paragraph"),i=n.enter("phrasing"),s=n.containerPhrasing(t,a);return i(),r(),s}var Yd=Ja(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function qy(t,e,n,a){return(t.children.some(function(s){return Yd(s)})?n.containerPhrasing:n.containerFlow).call(n,t,a)}function Gy(t){let e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}Qd.peek=U6;function Qd(t,e,n,a){let r=Gy(n),i=n.enter("strong"),s=n.createTracker(a),o=s.move(r+r),l=s.move(n.containerPhrasing(t,{after:r,before:o,...s.current()})),c=l.charCodeAt(0),u=Gi(a.before.charCodeAt(a.before.length-1),c,r);u.inside&&(l=rn(c)+l.slice(1));let p=l.charCodeAt(l.length-1),d=Gi(a.after.charCodeAt(0),p,r);d.inside&&(l=l.slice(0,-1)+rn(p));let m=s.move(r+r);return i(),n.attentionEncodeSurroundingInfo={after:d.outside,before:u.outside},o+l+m}function U6(t,e,n){return n.options.strong||"*"}function Hy(t,e,n,a){return n.safe(t.value,a)}function Vy(t){let e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function Wy(t,e,n){let a=(Sc(n)+(n.options.ruleSpaces?" ":"")).repeat(Vy(n));return n.options.ruleSpaces?a.slice(0,-1):a}var Gr={blockquote:Ey,break:Gd,code:My,definition:Ny,emphasis:Hd,hardBreak:Gd,heading:zy,html:Vd,image:Wd,imageReference:Ud,inlineCode:Kd,link:Zd,linkReference:Jd,list:Ly,listItem:Fy,paragraph:Py,root:qy,strong:Qd,text:Hy,thematicBreak:Wy};var Uy=[K6];function K6(t,e,n,a){if(e.type==="code"&&po(e,a)&&(t.type==="list"||t.type===e.type&&po(t,a)))return!1;if("spread"in n&&typeof n.spread=="boolean")return t.type==="paragraph"&&(t.type===e.type||e.type==="definition"||e.type==="heading"&&jc(e,a))?void 0:n.spread?1:0}var Hr=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"],Ky=[{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"\r",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:` +`,inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde","codeFencedMetaGraveAccent","codeFencedMetaTilde","destinationLiteral","headingAtx"]},{character:" ",after:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",before:"[\\r\\n]",inConstruct:"phrasing"},{character:" ",inConstruct:["codeFencedLangGraveAccent","codeFencedLangTilde"]},{character:"!",after:"\\[",inConstruct:"phrasing",notInConstruct:Hr},{character:'"',inConstruct:"titleQuote"},{atBreak:!0,character:"#"},{character:"#",inConstruct:"headingAtx",after:`(?:[\r +]|$)`},{character:"&",after:"[#A-Za-z]",inConstruct:"phrasing"},{character:"'",inConstruct:"titleApostrophe"},{character:"(",inConstruct:"destinationRaw"},{before:"\\]",character:"(",inConstruct:"phrasing",notInConstruct:Hr},{atBreak:!0,before:"\\d+",character:")"},{character:")",inConstruct:"destinationRaw"},{atBreak:!0,character:"*",after:`(?:[ \r +*])`},{character:"*",inConstruct:"phrasing",notInConstruct:Hr},{atBreak:!0,character:"+",after:`(?:[ \r ])`},{atBreak:!0,character:"-",after:`(?:[ \r -])`},{atBreak:!0,before:"\\d+",character:".",after:`(?:[ \r -]|$)`},{atBreak:!0,character:"<",after:"[!/?A-Za-z]"},{character:"<",after:"[!/?A-Za-z]",inConstruct:"phrasing",notInConstruct:Br},{character:"<",inConstruct:"destinationLiteral"},{atBreak:!0,character:"="},{atBreak:!0,character:">"},{character:">",inConstruct:"destinationLiteral"},{atBreak:!0,character:"["},{character:"[",inConstruct:"phrasing",notInConstruct:Br},{character:"[",inConstruct:["label","reference"]},{character:"\\",after:"[\\r\\n]",inConstruct:"phrasing"},{character:"]",inConstruct:["label","reference"]},{atBreak:!0,character:"_"},{character:"_",inConstruct:"phrasing",notInConstruct:Br},{atBreak:!0,character:"`"},{character:"`",inConstruct:["codeFencedLangGraveAccent","codeFencedMetaGraveAccent"]},{character:"`",inConstruct:"phrasing",notInConstruct:Br},{atBreak:!0,character:"~"}];function Ey(t){return t.label||!t.identifier?t.label||"":pc(t.identifier)}function Ay(t){if(!t._compiled){let e=(t.atBreak?"[\\r\\n][\\t ]*":"")+(t.before?"(?:"+t.before+")":"");t._compiled=new RegExp((e?"("+e+")":"")+(/[|\\{}()[\]^$+*?.-]/.test(t.character)?"\\":"")+t.character+(t.after?"(?:"+t.after+")":""),"g")}return t._compiled}function Ty(t,e,n){let a=e.indexStack,r=t.children||[],i=[],s=-1,o=n.before,l;a.push(-1);let c=e.createTracker(n);for(;++s0&&(o==="\r"||o===` -`)&&u.type==="html"&&(i[i.length-1]=i[i.length-1].replace(/(\r?\n|\r)$/," "),o=" ",c=e.createTracker(n),c.move(i.join("")));let d=e.handle(u,t,e,{...c.current(),after:p,before:o});l&&l===d.slice(0,1)&&(d=en(l.charCodeAt(0))+d.slice(1));let m=e.attentionEncodeSurroundingInfo;e.attentionEncodeSurroundingInfo=void 0,l=void 0,m&&(i.length>0&&m.before&&o===i[i.length-1].slice(-1)&&(i[i.length-1]=i[i.length-1].slice(0,-1)+en(o.charCodeAt(0))),m.after&&(l=p)),c.move(d),i.push(d),o=d.slice(-1)}return a.pop(),i.join("")}function My(t,e,n){let a=e.indexStack,r=t.children||[],i=e.createTracker(n),s=[],o=-1;for(a.push(-1);++o"},{character:">",inConstruct:"destinationLiteral"},{atBreak:!0,character:"["},{character:"[",inConstruct:"phrasing",notInConstruct:Hr},{character:"[",inConstruct:["label","reference"]},{character:"\\",after:"[\\r\\n]",inConstruct:"phrasing"},{character:"]",inConstruct:["label","reference"]},{atBreak:!0,character:"_"},{character:"_",inConstruct:"phrasing",notInConstruct:Hr},{atBreak:!0,character:"`"},{character:"`",inConstruct:["codeFencedLangGraveAccent","codeFencedMetaGraveAccent"]},{character:"`",inConstruct:"phrasing",notInConstruct:Hr},{atBreak:!0,character:"~"}];function Xy(t){return t.label||!t.identifier?t.label||"":wc(t.identifier)}function Zy(t){if(!t._compiled){let e=(t.atBreak?"[\\r\\n][\\t ]*":"")+(t.before?"(?:"+t.before+")":"");t._compiled=new RegExp((e?"("+e+")":"")+(/[|\\{}()[\]^$+*?.-]/.test(t.character)?"\\":"")+t.character+(t.after?"(?:"+t.after+")":""),"g")}return t._compiled}function Jy(t,e,n){let a=e.indexStack,r=t.children||[],i=[],s=-1,o=n.before,l;a.push(-1);let c=e.createTracker(n);for(;++s0&&(o==="\r"||o===` +`)&&u.type==="html"&&(i[i.length-1]=i[i.length-1].replace(/(\r?\n|\r)$/," "),o=" ",c=e.createTracker(n),c.move(i.join("")));let d=e.handle(u,t,e,{...c.current(),after:p,before:o});l&&l===d.slice(0,1)&&(d=rn(l.charCodeAt(0))+d.slice(1));let m=e.attentionEncodeSurroundingInfo;e.attentionEncodeSurroundingInfo=void 0,l=void 0,m&&(i.length>0&&m.before&&o===i[i.length-1].slice(-1)&&(i[i.length-1]=i[i.length-1].slice(0,-1)+rn(o.charCodeAt(0))),m.after&&(l=p)),c.move(d),i.push(d),o=d.slice(-1)}return a.pop(),i.join("")}function Yy(t,e,n){let a=e.indexStack,r=t.children||[],i=e.createTracker(n),s=[],o=-1;for(a.push(-1);++o `}return` -`}var g6=/\r?\n|\r/g;function Ny(t,e){let n=[],a=0,r=0,i;for(;i=g6.exec(t);)s(t.slice(a,i.index)),n.push(i[0]),a=i.index+i[0].length,r++;return s(t.slice(a)),n.join("");function s(o){n.push(e(o,r,!o))}}function Ry(t,e,n){let a=(n.before||"")+(e||"")+(n.after||""),r=[],i=[],s={},o=-1;for(;++o=c||u+1=c||u+1s.length,l;o&&s.push(r);try{l=t.apply(this,s)}catch(c){let u=c;if(o&&n)throw u;return r(u)}o||(l&&l.then&&typeof l.then=="function"?l.then(i,r):l instanceof Error?r(l):i(l))}function r(s,...o){n||(n=!0,e(s,...o))}function i(s){r(null,s)}}var ot=class extends Error{constructor(e,n,a){super(),typeof n=="string"&&(a=n,n=void 0);let r="",i={},s=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?r=e:!i.cause&&e&&(s=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof a=="string"){let l=a.indexOf(":");l===-1?i.ruleId=a:(i.source=a.slice(0,l),i.ruleId=a.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){let l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}let o=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file="",this.message=r,this.line=o?o.line:void 0,this.name=Wa(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=s&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};ot.prototype.file="";ot.prototype.name="";ot.prototype.reason="";ot.prototype.message="";ot.prototype.stack="";ot.prototype.column=void 0;ot.prototype.line=void 0;ot.prototype.ancestors=void 0;ot.prototype.cause=void 0;ot.prototype.fatal=void 0;ot.prototype.place=void 0;ot.prototype.ruleId=void 0;ot.prototype.source=void 0;var In={basename:$6,dirname:C6,extname:j6,join:S6,sep:"/"};function $6(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');ao(t);let n=0,a=-1,r=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;r--;)if(t.codePointAt(r)===47){if(i){n=r+1;break}}else a<0&&(i=!0,a=r+1);return a<0?"":t.slice(n,a)}if(e===t)return"";let s=-1,o=e.length-1;for(;r--;)if(t.codePointAt(r)===47){if(i){n=r+1;break}}else s<0&&(i=!0,s=r+1),o>-1&&(t.codePointAt(r)===e.codePointAt(o--)?o<0&&(a=r):(o=-1,a=s));return n===a?a=s:a<0&&(a=t.length),t.slice(n,a)}function C6(t){if(ao(t),t.length===0)return".";let e=-1,n=t.length,a;for(;--n;)if(t.codePointAt(n)===47){if(a){e=n;break}}else a||(a=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function j6(t){ao(t);let e=t.length,n=-1,a=0,r=-1,i=0,s;for(;e--;){let o=t.codePointAt(e);if(o===47){if(s){a=e+1;break}continue}n<0&&(s=!0,n=e+1),o===46?r<0?r=e:i!==1&&(i=1):r>-1&&(i=-1)}return r<0||n<0||i===0||i===1&&r===n-1&&r===a+1?"":t.slice(r,n)}function S6(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function A6(t,e){let n="",a=0,r=-1,i=0,s=-1,o,l;for(;++s<=t.length;){if(s2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",a=0):(n=n.slice(0,l),a=n.length-1-n.lastIndexOf("/")),r=s,i=0;continue}}else if(n.length>0){n="",a=0,r=s,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",a=2)}else n.length>0?n+="/"+t.slice(r+1,s):n=t.slice(r+1,s),a=s-r-1;r=s,i=0}else o===46&&i>-1?i++:i=-1}return n}function ao(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}var Wy={cwd:T6};function T6(){return"/"}function Bi(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function Uy(t){if(typeof t=="string")t=new URL(t);else if(!Bi(t)){let e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){let e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return M6(t)}function M6(t){if(t.hostname!==""){let a=new TypeError('File URL host must be "localhost" or empty on darwin');throw a.code="ERR_INVALID_FILE_URL_HOST",a}let e=t.pathname,n=-1;for(;++n0){let[m,...h]=u,b=a[d][1];no(b)&&no(m)&&(m=(0,wc.default)(!0,b,m)),a[d]=[c,m,...h]}}}},io=new Zd().freeze();function Ud(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function Kd(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function Xd(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Zy(t){if(!no(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function Jy(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function kc(t){return R6(t)?t:new ro(t)}function R6(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function z6(t){return typeof t=="string"||O6(t)}function O6(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}function Ct(t){this.content=t}Ct.prototype={constructor:Ct,find:function(t){for(var e=0;e>1}};Ct.from=function(t){if(t instanceof Ct)return t;var e=[];if(t)for(var n in t)e.push(n,t[n]);return new Ct(e)};var Jd=Ct;function o1(t,e,n){for(let a=0;;a++){if(a==t.childCount||a==e.childCount)return t.childCount==e.childCount?null:n;let r=t.child(a),i=e.child(a);if(r==i){n+=r.nodeSize;continue}if(!r.sameMarkup(i))return n;if(r.isText&&r.text!=i.text){for(let s=0;r.text[s]==i.text[s];s++)n++;return n}if(r.content.size||i.content.size){let s=o1(r.content,i.content,n+1);if(s!=null)return s}n+=r.nodeSize}}function l1(t,e,n,a){for(let r=t.childCount,i=e.childCount;;){if(r==0||i==0)return r==i?null:{a:n,b:a};let s=t.child(--r),o=e.child(--i),l=s.nodeSize;if(s==o){n-=l,a-=l;continue}if(!s.sameMarkup(o))return{a:n,b:a};if(s.isText&&s.text!=o.text){let c=0,u=Math.min(s.text.length,o.text.length);for(;ce&&a(l,r+o,i||null,s)!==!1&&l.content.size){let u=o+1;l.nodesBetween(Math.max(0,e-u),Math.min(l.content.size,n-u),a,r+u)}o=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,n,a,r){let i="",s=!0;return this.nodesBetween(e,n,(o,l)=>{let c=o.isText?o.text.slice(Math.max(e,l)-l,n-l):o.isLeaf?r?typeof r=="function"?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):"":"";o.isBlock&&(o.isLeaf&&c||o.isTextblock)&&a&&(s?s=!1:i+=a),i+=c},0),i}append(e){if(!e.size)return this;if(!this.size)return e;let n=this.lastChild,a=e.firstChild,r=this.content.slice(),i=0;for(n.isText&&n.sameMarkup(a)&&(r[r.length-1]=n.withText(n.text+a.text),i=1);ie)for(let i=0,s=0;se&&((sn)&&(o.isText?o=o.cut(Math.max(0,e-s),Math.min(o.text.length,n-s)):o=o.cut(Math.max(0,e-s-1),Math.min(o.content.size,n-s-1))),a.push(o),r+=o.nodeSize),s=l}return new t(a,r)}cutByIndex(e,n){return e==n?t.empty:e==0&&n==this.content.length?this:new t(this.content.slice(e,n))}replaceChild(e,n){let a=this.content[e];if(a==n)return this;let r=this.content.slice(),i=this.size+n.nodeSize-a.nodeSize;return r[e]=n,new t(r,i)}addToStart(e){return new t([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new t(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let n=0;nthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let n=0,a=0;;n++){let r=this.child(n),i=a+r.nodeSize;if(i>=e)return i==e?_c(n+1,i):_c(n,a);a=i}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,n){if(!n)return t.empty;if(!Array.isArray(n))throw new RangeError("Invalid input for Fragment.fromJSON");return new t(n.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return t.empty;let n,a=0;for(let r=0;rthis.type.rank&&(n||(n=e.slice(0,r)),n.push(this),a=!0),n&&n.push(i)}}return n||(n=e.slice()),a||n.push(this),n}removeFromSet(e){for(let n=0;na.type.rank-r.type.rank),n}};ye.none=[];var Fr=class extends Error{},V=class t{constructor(e,n,a){this.content=e,this.openStart=n,this.openEnd=a}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,n){let a=u1(this.content,e+this.openStart,n);return a&&new t(a,this.openStart,this.openEnd)}removeBetween(e,n){return new t(c1(this.content,e+this.openStart,n+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,n){if(!n)return t.empty;let a=n.openStart||0,r=n.openEnd||0;if(typeof a!="number"||typeof r!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new t(B.fromJSON(e,n.content),a,r)}static maxOpen(e,n=!0){let a=0,r=0;for(let i=e.firstChild;i&&!i.isLeaf&&(n||!i.type.spec.isolating);i=i.firstChild)a++;for(let i=e.lastChild;i&&!i.isLeaf&&(n||!i.type.spec.isolating);i=i.lastChild)r++;return new t(e,a,r)}};V.empty=new V(B.empty,0,0);function c1(t,e,n){let{index:a,offset:r}=t.findIndex(e),i=t.maybeChild(a),{index:s,offset:o}=t.findIndex(n);if(r==e||i.isText){if(o!=n&&!t.child(s).isText)throw new RangeError("Removing non-flat range");return t.cut(0,e).append(t.cut(n))}if(a!=s)throw new RangeError("Removing non-flat range");return t.replaceChild(a,i.copy(c1(i.content,e-r-1,n-r-1)))}function u1(t,e,n,a){let{index:r,offset:i}=t.findIndex(e),s=t.maybeChild(r);if(i==e||s.isText)return a&&!a.canReplace(r,r,n)?null:t.cut(0,e).append(n).append(t.cut(e));let o=u1(s.content,e-i-1,n,s);return o&&t.replaceChild(r,s.copy(o))}function B6(t,e,n){if(n.openStart>t.depth)throw new Fr("Inserted content deeper than insertion position");if(t.depth-n.openStart!=e.depth-n.openEnd)throw new Fr("Inconsistent open depths");return p1(t,e,n,0)}function p1(t,e,n,a){let r=t.index(a),i=t.node(a);if(r==e.index(a)&&a=0&&t.isText&&t.sameMarkup(e[n])?e[n]=t.withText(e[n].text+t.text):e.push(t)}function so(t,e,n,a){let r=(e||t).node(n),i=0,s=e?e.index(n):r.childCount;t&&(i=t.index(n),t.depth>n?i++:t.textOffset&&(Lr(t.nodeAfter,a),i++));for(let o=i;or&&em(t,e,r+1),s=a.depth>r&&em(n,a,r+1),o=[];return so(null,t,r,o),i&&s&&e.index(r)==n.index(r)?(d1(i,s),Lr(Dr(i,m1(t,e,n,a,r+1)),o)):(i&&Lr(Dr(i,Cc(t,e,r+1)),o),so(e,n,r,o),s&&Lr(Dr(s,Cc(n,a,r+1)),o)),so(a,null,r,o),new B(o)}function Cc(t,e,n){let a=[];if(so(null,t,n,a),t.depth>n){let r=em(t,e,n+1);Lr(Dr(r,Cc(t,e,n+1)),a)}return so(e,null,n,a),new B(a)}function L6(t,e){let n=e.depth-t.openStart,r=e.node(n).copy(t.content);for(let i=n-1;i>=0;i--)r=e.node(i).copy(B.from(r));return{start:r.resolveNoCache(t.openStart+n),end:r.resolveNoCache(r.content.size-t.openEnd-n)}}var jc=class t{constructor(e,n,a){this.pos=e,this.path=n,this.parentOffset=a,this.depth=n.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,n=this.index(this.depth);if(n==e.childCount)return null;let a=this.pos-this.path[this.path.length-1],r=e.child(n);return a?e.child(n).cut(a):r}get nodeBefore(){let e=this.index(this.depth),n=this.pos-this.path[this.path.length-1];return n?this.parent.child(e).cut(0,n):e==0?null:this.parent.child(e-1)}posAtIndex(e,n){n=this.resolveDepth(n);let a=this.path[n*3],r=n==0?0:this.path[n*3-1]+1;for(let i=0;i0;n--)if(this.start(n)<=e&&this.end(n)>=e)return n;return 0}blockRange(e=this,n){if(e.pos=0;a--)if(e.pos<=this.end(a)&&(!n||n(this.node(a))))return new lo(this,e,a);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&n<=e.content.size))throw new RangeError("Position "+n+" out of range");let a=[],r=0,i=n;for(let s=e;;){let{index:o,offset:l}=s.content.findIndex(i),c=i-l;if(a.push(s,o,r+l),!c||(s=s.child(o),s.isText))break;i=c-1,r+=l+1}return new t(n,a,i)}static resolveCached(e,n){let a=Yy.get(e);if(a)for(let i=0;ie&&this.nodesBetween(e,n,i=>(a.isInSet(i.marks)&&(r=!0),!r)),r}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),h1(this.marks,e)}contentMatchAt(e){let n=this.type.contentMatch.matchFragment(this.content,0,e);if(!n)throw new Error("Called contentMatchAt on a node with invalid content");return n}canReplace(e,n,a=B.empty,r=0,i=a.childCount){let s=this.contentMatchAt(e).matchFragment(a,r,i),o=s&&s.matchFragment(this.content,n);if(!o||!o.validEnd)return!1;for(let l=r;ln.type.name)}`);this.content.forEach(n=>n.check())}toJSON(){let e={type:this.type.name};for(let n in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(n=>n.toJSON())),e}static fromJSON(e,n){if(!n)throw new RangeError("Invalid input for Node.fromJSON");let a;if(n.marks){if(!Array.isArray(n.marks))throw new RangeError("Invalid mark data for Node.fromJSON");a=n.marks.map(e.markFromJSON)}if(n.type=="text"){if(typeof n.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(n.text,a)}let r=B.fromJSON(e,n.content),i=e.nodeType(n.type).create(n.attrs,r,a);return i.type.checkAttrs(i.attrs),i}};Gt.prototype.text=void 0;var nm=class t extends Gt{constructor(e,n,a,r){if(super(e,n,null,r),!a)throw new RangeError("Empty text nodes are not allowed");this.text=a}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):h1(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,n){return this.text.slice(e,n)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new t(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new t(this.type,this.attrs,e,this.marks)}cut(e=0,n=this.text.length){return e==0&&n==this.text.length?this:this.withText(this.text.slice(e,n))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}};function h1(t,e){for(let n=t.length-1;n>=0;n--)e=t[n].type.name+"("+e+")";return e}var qr=class t{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,n){let a=new am(e,n);if(a.next==null)return t.empty;let r=f1(a);a.next&&a.err("Unexpected trailing text");let i=U6(W6(r));return K6(i,a),i}matchType(e){for(let n=0;nc.createAndFill()));for(let c=0;c=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function n(a){e.push(a);for(let r=0;r{let i=r+(a.validEnd?"*":" ")+" ";for(let s=0;s"+e.indexOf(a.next[s].next);return i}).join(` -`)}};qr.empty=new qr(!0);var am=class{constructor(e,n){this.string=e,this.nodeTypes=n,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}};function f1(t){let e=[];do e.push(q6(t));while(t.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function q6(t){let e=[];do e.push(P6(t));while(t.next&&t.next!=")"&&t.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function P6(t){let e=V6(t);for(;;)if(t.eat("+"))e={type:"plus",expr:e};else if(t.eat("*"))e={type:"star",expr:e};else if(t.eat("?"))e={type:"opt",expr:e};else if(t.eat("{"))e=G6(t,e);else break;return e}function Qy(t){/\D/.test(t.next)&&t.err("Expected number, got '"+t.next+"'");let e=Number(t.next);return t.pos++,e}function G6(t,e){let n=Qy(t),a=n;return t.eat(",")&&(t.next!="}"?a=Qy(t):a=-1),t.eat("}")||t.err("Unclosed braced range"),{type:"range",min:n,max:a,expr:e}}function H6(t,e){let n=t.nodeTypes,a=n[e];if(a)return[a];let r=[];for(let i in n){let s=n[i];s.isInGroup(e)&&r.push(s)}return r.length==0&&t.err("No node type or group '"+e+"' found"),r}function V6(t){if(t.eat("(")){let e=f1(t);return t.eat(")")||t.err("Missing closing paren"),e}else if(/\W/.test(t.next))t.err("Unexpected token '"+t.next+"'");else{let e=H6(t,t.next).map(n=>(t.inline==null?t.inline=n.isInline:t.inline!=n.isInline&&t.err("Mixing inline and block content"),{type:"name",value:n}));return t.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function W6(t){let e=[[]];return r(i(t,0),n()),e;function n(){return e.push([])-1}function a(s,o,l){let c={term:l,to:o};return e[s].push(c),c}function r(s,o){s.forEach(l=>l.to=o)}function i(s,o){if(s.type=="choice")return s.exprs.reduce((l,c)=>l.concat(i(c,o)),[]);if(s.type=="seq")for(let l=0;;l++){let c=i(s.exprs[l],o);if(l==s.exprs.length-1)return c;r(c,o=n())}else if(s.type=="star"){let l=n();return a(o,l),r(i(s.expr,l),l),[a(l)]}else if(s.type=="plus"){let l=n();return r(i(s.expr,o),l),r(i(s.expr,l),l),[a(l)]}else{if(s.type=="opt")return[a(o)].concat(i(s.expr,o));if(s.type=="range"){let l=o;for(let c=0;c{t[s].forEach(({term:o,to:l})=>{if(!o)return;let c;for(let u=0;u{c||r.push([o,c=[]]),c.indexOf(u)==-1&&c.push(u)})})});let i=e[a.join(",")]=new qr(a.indexOf(t.length-1)>-1);for(let s=0;s-1}get whitespace(){return this.spec.whitespace||(this.spec.code?"pre":"normal")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:y1(this.attrs,e)}create(e=null,n,a){if(this.isText)throw new Error("NodeType.create can't construct text nodes");return new Gt(this,this.computeAttrs(e),B.from(n),ye.setFrom(a))}createChecked(e=null,n,a){return n=B.from(n),this.checkContent(n),new Gt(this,this.computeAttrs(e),n,ye.setFrom(a))}createAndFill(e=null,n,a){if(e=this.computeAttrs(e),n=B.from(n),n.size){let s=this.contentMatch.fillBefore(n);if(!s)return null;n=s.append(n)}let r=this.contentMatch.matchFragment(n),i=r&&r.fillBefore(B.empty,!0);return i?new Gt(this,e,n.append(i),ye.setFrom(a)):null}validContent(e){let n=this.contentMatch.matchFragment(e);if(!n||!n.validEnd)return!1;for(let a=0;a-1}allowsMarks(e){if(this.markSet==null)return!0;for(let n=0;na[i]=new t(i,n,s));let r=n.spec.topNode||"doc";if(!a[r])throw new RangeError("Schema is missing its top node type ('"+r+"')");if(!a.text)throw new RangeError("Every schema needs a 'text' type");for(let i in a.text.attrs)throw new RangeError("The text node type should not have attributes");return a}};function X6(t,e,n){let a=n.split("|");return r=>{let i=r===null?"null":typeof r;if(a.indexOf(i)<0)throw new RangeError(`Expected value of type ${a} for attribute ${e} on type ${t}, got ${i}`)}}var rm=class{constructor(e,n,a){this.hasDefault=Object.prototype.hasOwnProperty.call(a,"default"),this.default=a.default,this.validate=typeof a.validate=="string"?X6(e,n,a.validate):a.validate}get isRequired(){return!this.hasDefault}},uo=class t{constructor(e,n,a,r){this.name=e,this.rank=n,this.schema=a,this.spec=r,this.attrs=k1(e,r.attrs),this.excluded=null;let i=b1(this.attrs);this.instance=i?new ye(this,i):null}create(e=null){return!e&&this.instance?this.instance:new ye(this,y1(this.attrs,e))}static compile(e,n){let a=Object.create(null),r=0;return e.forEach((i,s)=>a[i]=new t(i,r++,n,s)),a}removeFromSet(e){for(var n=0;n-1}},Sc=class{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let n=this.spec={};for(let r in e)n[r]=e[r];n.nodes=Jd.from(e.nodes),n.marks=Jd.from(e.marks||{}),this.nodes=co.compile(this.spec.nodes,this),this.marks=uo.compile(this.spec.marks,this);let a=Object.create(null);for(let r in this.nodes){if(r in this.marks)throw new RangeError(r+" can not be both a node and a mark");let i=this.nodes[r],s=i.spec.content||"",o=i.spec.marks;if(i.contentMatch=a[s]||(a[s]=qr.parse(s,this.nodes)),i.inlineContent=i.contentMatch.inlineContent,i.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError("Multiple linebreak nodes defined");if(!i.isInline||!i.isLeaf)throw new RangeError("Linebreak replacement nodes must be inline leaf nodes");this.linebreakReplacement=i}i.markSet=o=="_"?null:o?t1(this,o.split(" ")):o==""||!i.inlineContent?[]:null}for(let r in this.marks){let i=this.marks[r],s=i.spec.excludes;i.excluded=s==null?[i]:s==""?[]:t1(this,s.split(" "))}this.nodeFromJSON=r=>Gt.fromJSON(this,r),this.markFromJSON=r=>ye.fromJSON(this,r),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,n=null,a,r){if(typeof e=="string")e=this.nodeType(e);else if(e instanceof co){if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}else throw new RangeError("Invalid node type: "+e);return e.createChecked(n,a,r)}text(e,n){let a=this.nodes.text;return new nm(a,a.defaultAttrs,e,ye.setFrom(n))}mark(e,n){return typeof e=="string"&&(e=this.marks[e]),e.create(n)}nodeType(e){let n=this.nodes[e];if(!n)throw new RangeError("Unknown node type: "+e);return n}};function t1(t,e){let n=[];for(let a=0;a-1)&&n.push(s=l)}if(!s)throw new SyntaxError("Unknown mark type: '"+e[a]+"'")}return n}function Z6(t){return t.tag!=null}function J6(t){return t.style!=null}var Rn=class t{constructor(e,n){this.schema=e,this.rules=n,this.tags=[],this.styles=[];let a=this.matchedStyles=[];n.forEach(r=>{if(Z6(r))this.tags.push(r);else if(J6(r)){let i=/[^=]*/.exec(r.style)[0];a.indexOf(i)<0&&a.push(i),this.styles.push(r)}}),this.normalizeLists=!this.tags.some(r=>{if(!/^(ul|ol)\b/.test(r.tag)||!r.node)return!1;let i=e.nodes[r.node];return i.contentMatch.matchType(i)})}parse(e,n={}){let a=new Ec(this,n,!1);return a.addAll(e,ye.none,n.from,n.to),a.finish()}parseSlice(e,n={}){let a=new Ec(this,n,!0);return a.addAll(e,ye.none,n.from,n.to),V.maxOpen(a.finish())}matchTag(e,n,a){for(let r=a?this.tags.indexOf(a)+1:0;re.length&&(o.charCodeAt(e.length)!=61||o.slice(e.length+1)!=n))){if(s.getAttrs){let l=s.getAttrs(n);if(l===!1)continue;s.attrs=l||void 0}return s}}}static schemaRules(e){let n=[];function a(r){let i=r.priority==null?50:r.priority,s=0;for(;s{a(s=a1(s)),s.mark||s.ignore||s.clearMark||(s.mark=r)})}for(let r in e.nodes){let i=e.nodes[r].spec.parseDOM;i&&i.forEach(s=>{a(s=a1(s)),s.node||s.ignore||s.mark||(s.node=r)})}return n}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new t(e,t.schemaRules(e)))}},w1={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},Y6={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},_1={ol:!0,ul:!0},po=1,im=2,oo=4;function n1(t,e,n){return e!=null?(e?po:0)|(e==="full"?im:0):t&&t.whitespace=="pre"?po|im:n&~oo}var Li=class{constructor(e,n,a,r,i,s){this.type=e,this.attrs=n,this.marks=a,this.solid=r,this.options=s,this.content=[],this.activeMarks=ye.none,this.match=i||(s&oo?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let n=this.type.contentMatch.fillBefore(B.from(e));if(n)this.match=this.type.contentMatch.matchFragment(n);else{let a=this.type.contentMatch,r;return(r=a.findWrapping(e.type))?(this.match=a,r):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&po)){let a=this.content[this.content.length-1],r;if(a&&a.isText&&(r=/[ \t\r\n\u000c]+$/.exec(a.text))){let i=a;a.text.length==r[0].length?this.content.pop():this.content[this.content.length-1]=i.withText(i.text.slice(0,i.text.length-r[0].length))}}let n=B.from(this.content);return!e&&this.match&&(n=n.append(this.match.fillBefore(B.empty,!0))),this.type?this.type.create(this.attrs,n,this.marks):n}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!w1.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},Ec=class{constructor(e,n,a){this.parser=e,this.options=n,this.isOpen=a,this.open=0,this.localPreserveWS=!1;let r=n.topNode,i,s=n1(null,n.preserveWhitespace,0)|(a?oo:0);r?i=new Li(r.type,r.attrs,ye.none,!0,n.topMatch||r.type.contentMatch,s):a?i=new Li(null,null,ye.none,!0,null,s):i=new Li(e.schema.topNodeType,null,ye.none,!0,null,s),this.nodes=[i],this.find=n.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,n){e.nodeType==3?this.addTextNode(e,n):e.nodeType==1&&this.addElement(e,n)}addTextNode(e,n){let a=e.nodeValue,r=this.top,i=r.options&im?"full":this.localPreserveWS||(r.options&po)>0,{schema:s}=this.parser;if(i==="full"||r.inlineContext(e)||/[^ \t\r\n\u000c]/.test(a)){if(i)if(i==="full")a=a.replace(/\r\n?/g,` -`);else if(s.linebreakReplacement&&/[\r\n]/.test(a)&&this.top.findWrapping(s.linebreakReplacement.create())){let o=a.split(/\r?\n|\r/);for(let l=0;l!l.clearMark(c)):n=n.concat(this.parser.schema.marks[l.mark].create(l.attrs)),l.consuming===!1)o=l;else break}}return n}addElementByRule(e,n,a,r){let i,s;if(n.node)if(s=this.parser.schema.nodes[n.node],s.isLeaf)this.insertNode(s.create(n.attrs),a,e.nodeName=="BR")||this.leafFallback(e,a);else{let l=this.enter(s,n.attrs||null,a,n.preserveWhitespace);l&&(i=!0,a=l)}else{let l=this.parser.schema.marks[n.mark];a=a.concat(l.create(n.attrs))}let o=this.top;if(s&&s.isLeaf)this.findInside(e);else if(r)this.addElement(e,a,r);else if(n.getContent)this.findInside(e),n.getContent(e,this.parser.schema).forEach(l=>this.insertNode(l,a,!1));else{let l=e;typeof n.contentElement=="string"?l=e.querySelector(n.contentElement):typeof n.contentElement=="function"?l=n.contentElement(e):n.contentElement&&(l=n.contentElement),this.findAround(e,l,!0),this.addAll(l,a),this.findAround(e,l,!1)}i&&this.sync(o)&&this.open--}addAll(e,n,a,r){let i=a||0;for(let s=a?e.childNodes[a]:e.firstChild,o=r==null?null:e.childNodes[r];s!=o;s=s.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(s,n);this.findAtPoint(e,i)}findPlace(e,n,a){let r,i;for(let s=this.open,o=0;s>=0;s--){let l=this.nodes[s],c=l.findWrapping(e);if(c&&(!r||r.length>c.length+o)&&(r=c,i=l,!c.length))break;if(l.solid){if(a)break;o+=2}}if(!r)return null;this.sync(i);for(let s=0;s(s.type?s.type.allowsMarkType(c.type):r1(c.type,e))?(l=c.addToSet(l),!1):!0),this.nodes.push(new Li(e,n,l,r,null,o)),this.open++,a}closeExtra(e=!1){let n=this.nodes.length-1;if(n>this.open){for(;n>this.open;n--)this.nodes[n-1].content.push(this.nodes[n].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let n=this.open;n>=0;n--){if(this.nodes[n]==e)return this.open=n,!0;this.localPreserveWS&&(this.nodes[n].options|=po)}return!1}get currentPos(){this.closeExtra();let e=0;for(let n=this.open;n>=0;n--){let a=this.nodes[n].content;for(let r=a.length-1;r>=0;r--)e+=a[r].nodeSize;n&&e++}return e}findAtPoint(e,n){if(this.find)for(let a=0;a-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let n=e.split("/"),a=this.options.context,r=!this.isOpen&&(!a||a.parent.type==this.nodes[0].type),i=-(a?a.depth+1:0)+(r?0:1),s=(o,l)=>{for(;o>=0;o--){let c=n[o];if(c==""){if(o==n.length-1||o==0)continue;for(;l>=i;l--)if(s(o-1,l))return!0;return!1}else{let u=l>0||l==0&&r?this.nodes[l].type:a&&l>=i?a.node(l-i).type:null;if(!u||u.name!=c&&!u.isInGroup(c))return!1;l--}}return!0};return s(n.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let n=e.depth;n>=0;n--){let a=e.node(n).contentMatchAt(e.indexAfter(n)).defaultType;if(a&&a.isTextblock&&a.defaultAttrs)return a}for(let n in this.parser.schema.nodes){let a=this.parser.schema.nodes[n];if(a.isTextblock&&a.defaultAttrs)return a}}};function Q6(t){for(let e=t.firstChild,n=null;e;e=e.nextSibling){let a=e.nodeType==1?e.nodeName.toLowerCase():null;a&&_1.hasOwnProperty(a)&&n?(n.appendChild(e),e=n):a=="li"?n=e:a&&(n=null)}}function e7(t,e){return(t.matches||t.msMatchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector).call(t,e)}function a1(t){let e={};for(let n in t)e[n]=t[n];return e}function r1(t,e){let n=e.schema.nodes;for(let a in n){let r=n[a];if(!r.allowsMarkType(t))continue;let i=[],s=o=>{i.push(o);for(let l=0;l{if(i.length||s.marks.length){let o=0,l=0;for(;o=0;r--){let i=this.serializeMark(e.marks[r],e.isInline,n);i&&((i.contentDOM||i.dom).appendChild(a),a=i.dom)}return a}serializeMark(e,n,a={}){let r=this.marks[e.type.name];return r&&vc(Qd(a),r(e,n),null,e.attrs)}static renderSpec(e,n,a=null,r){return vc(e,n,a,r)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new t(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let n=i1(e.nodes);return n.text||(n.text=a=>a.text),n}static marksFromSchema(e){return i1(e.marks)}};function i1(t){let e={};for(let n in t){let a=t[n].spec.toDOM;a&&(e[n]=a)}return e}function Qd(t){return t.document||window.document}var s1=new WeakMap;function t7(t){let e=s1.get(t);return e===void 0&&s1.set(t,e=n7(t)),e}function n7(t){let e=null;function n(a){if(a&&typeof a=="object")if(Array.isArray(a))if(typeof a[0]=="string")e||(e=[]),e.push(a);else for(let r=0;r-1)throw new RangeError("Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.");let s=r.indexOf(" ");s>0&&(n=r.slice(0,s),r=r.slice(s+1));let o,l=n?t.createElementNS(n,r):t.createElement(r),c=e[1],u=1;if(c&&typeof c=="object"&&c.nodeType==null&&!Array.isArray(c)){u=2;for(let p in c)if(c[p]!=null){let d=p.indexOf(" ");d>0?l.setAttributeNS(p.slice(0,d),p.slice(d+1),c[p]):p=="style"&&l.style?l.style.cssText=c[p]:l.setAttribute(p,c[p])}}for(let p=u;pu)throw new RangeError("Content hole must be the only child of its parent node");return{dom:l,contentDOM:l}}else{let{dom:m,contentDOM:h}=vc(t,d,n,a);if(l.appendChild(m),h){if(o)throw new RangeError("Multiple content holes");o=h}}}return{dom:l,contentDOM:o}}var C1=65535,j1=Math.pow(2,16);function a7(t,e){return t+e*j1}function v1(t){return t&C1}function r7(t){return(t-(t&C1))/j1}var S1=1,E1=2,Ac=4,A1=8,fo=class{constructor(e,n,a){this.pos=e,this.delInfo=n,this.recover=a}get deleted(){return(this.delInfo&A1)>0}get deletedBefore(){return(this.delInfo&(S1|Ac))>0}get deletedAfter(){return(this.delInfo&(E1|Ac))>0}get deletedAcross(){return(this.delInfo&Ac)>0}},pa=class t{constructor(e,n=!1){if(this.ranges=e,this.inverted=n,!e.length&&t.empty)return t.empty}recover(e){let n=0,a=v1(e);if(!this.inverted)for(let r=0;re)break;let c=this.ranges[o+i],u=this.ranges[o+s],p=l+c;if(e<=p){let d=c?e==l?-1:e==p?1:n:n,m=l+r+(d<0?0:u);if(a)return m;let h=e==(n<0?l:p)?null:a7(o/3,e-l),b=e==l?E1:e==p?S1:Ac;return(n<0?e!=l:e!=p)&&(b|=A1),new fo(m,b,h)}r+=u-c}return a?e+r:new fo(e+r,0,null)}touches(e,n){let a=0,r=v1(n),i=this.inverted?2:1,s=this.inverted?1:2;for(let o=0;oe)break;let c=this.ranges[o+i],u=l+c;if(e<=u&&o==r*3)return!0;a+=this.ranges[o+s]-c}return!1}forEach(e){let n=this.inverted?2:1,a=this.inverted?1:2;for(let r=0,i=0;r=0;n--){let r=e.getMirror(n);this.appendMap(e._maps[n].invert(),r!=null&&r>n?a-r-1:void 0)}}invert(){let e=new t;return e.appendMappingInverted(this),e}map(e,n=1){if(this.mirror)return this._map(e,n,!0);for(let a=this.from;ai&&l!s.isAtom||!o.type.allowsMarkType(this.mark.type)?s:s.mark(this.mark.addToSet(s.marks)),r),n.openStart,n.openEnd);return dt.fromReplace(e,this.from,this.to,i)}invert(){return new Gr(this.from,this.to,this.mark)}map(e){let n=e.mapResult(this.from,1),a=e.mapResult(this.to,-1);return n.deleted&&a.deleted||n.pos>=a.pos?null:new t(n.pos,a.pos,this.mark)}merge(e){return e instanceof t&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new t(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,n){if(typeof n.from!="number"||typeof n.to!="number")throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new t(n.from,n.to,e.markFromJSON(n.mark))}};lt.jsonID("addMark",Pr);var Gr=class t extends lt{constructor(e,n,a){super(),this.from=e,this.to=n,this.mark=a}apply(e){let n=e.slice(this.from,this.to),a=new V(pm(n.content,r=>r.mark(this.mark.removeFromSet(r.marks)),e),n.openStart,n.openEnd);return dt.fromReplace(e,this.from,this.to,a)}invert(){return new Pr(this.from,this.to,this.mark)}map(e){let n=e.mapResult(this.from,1),a=e.mapResult(this.to,-1);return n.deleted&&a.deleted||n.pos>=a.pos?null:new t(n.pos,a.pos,this.mark)}merge(e){return e instanceof t&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new t(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,n){if(typeof n.from!="number"||typeof n.to!="number")throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new t(n.from,n.to,e.markFromJSON(n.mark))}};lt.jsonID("removeMark",Gr);var bo=class t extends lt{constructor(e,n){super(),this.pos=e,this.mark=n}apply(e){let n=e.nodeAt(this.pos);if(!n)return dt.fail("No node at mark step's position");let a=n.type.create(n.attrs,null,this.mark.addToSet(n.marks));return dt.fromReplace(e,this.pos,this.pos+1,new V(B.from(a),0,n.isLeaf?0:1))}invert(e){let n=e.nodeAt(this.pos);if(n){let a=this.mark.addToSet(n.marks);if(a.length==n.marks.length){for(let r=0;ra.pos?null:new t(n.pos,a.pos,r,i,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,n){if(typeof n.from!="number"||typeof n.to!="number"||typeof n.gapFrom!="number"||typeof n.gapTo!="number"||typeof n.insert!="number")throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new t(n.from,n.to,n.gapFrom,n.gapTo,V.fromJSON(e,n.slice),n.insert,!!n.structure)}};lt.jsonID("replaceAround",ht);function cm(t,e,n){let a=t.resolve(e),r=n-e,i=a.depth;for(;r>0&&i>0&&a.indexAfter(i)==a.node(i).childCount;)i--,r--;if(r>0){let s=a.node(i).maybeChild(a.indexAfter(i));for(;r>0;){if(!s||s.isLeaf)return!0;s=s.firstChild,r--}}return!1}function i7(t,e,n,a){let r=[],i=[],s,o;t.doc.nodesBetween(e,n,(l,c,u)=>{if(!l.isInline)return;let p=l.marks;if(!a.isInSet(p)&&u.type.allowsMarkType(a.type)){let d=Math.max(c,e),m=Math.min(c+l.nodeSize,n),h=a.addToSet(p);for(let b=0;bt.step(l)),i.forEach(l=>t.step(l))}function s7(t,e,n,a){let r=[],i=0;t.doc.nodesBetween(e,n,(s,o)=>{if(!s.isInline)return;i++;let l=null;if(a instanceof uo){let c=s.marks,u;for(;u=a.isInSet(c);)(l||(l=[])).push(u),c=u.removeFromSet(c)}else a?a.isInSet(s.marks)&&(l=[a]):l=s.marks;if(l&&l.length){let c=Math.min(o+s.nodeSize,n);for(let u=0;ut.step(new Gr(s.from,s.to,s.style)))}function dm(t,e,n,a=n.contentMatch,r=!0){let i=t.doc.nodeAt(e),s=[],o=e+1;for(let l=0;l=0;l--)t.step(s[l])}function o7(t,e,n){return(e==0||t.canReplace(e,t.childCount))&&(n==t.childCount||t.canReplace(0,n))}function Pi(t){let n=t.parent.content.cutByIndex(t.startIndex,t.endIndex);for(let a=t.depth,r=0,i=0;;--a){let s=t.$from.node(a),o=t.$from.index(a)+r,l=t.$to.indexAfter(a)-i;if(an;h--)b||a.index(h)>0?(b=!0,u=B.from(a.node(h).copy(u)),p++):l--;let d=B.empty,m=0;for(let h=i,b=!1;h>n;h--)b||r.after(h+1)=0;s--){if(a.size){let o=n[s].type.contentMatch.matchFragment(a);if(!o||!o.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}a=B.from(n[s].type.create(n[s].attrs,a))}let r=e.start,i=e.end;t.step(new ht(r,i,r,i,new V(a,0,0),n.length,!0))}function d7(t,e,n,a,r){if(!a.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let i=t.steps.length;t.doc.nodesBetween(e,n,(s,o)=>{let l=typeof r=="function"?r(s):r;if(s.isTextblock&&!s.hasMarkup(a,l)&&m7(t.doc,t.mapping.slice(i).map(o),a)){let c=null;if(a.schema.linebreakReplacement){let m=a.whitespace=="pre",h=!!a.contentMatch.matchType(a.schema.linebreakReplacement);m&&!h?c=!1:!m&&h&&(c=!0)}c===!1&&M1(t,s,o,i),dm(t,t.mapping.slice(i).map(o,1),a,void 0,c===null);let u=t.mapping.slice(i),p=u.map(o,1),d=u.map(o+s.nodeSize,1);return t.step(new ht(p,d,p+1,d-1,new V(B.from(a.create(l,null,s.marks)),0,0),1,!0)),c===!0&&T1(t,s,o,i),!1}})}function T1(t,e,n,a){e.forEach((r,i)=>{if(r.isText){let s,o=/\r?\n|\r/g;for(;s=o.exec(r.text);){let l=t.mapping.slice(a).map(n+1+i+s.index);t.replaceWith(l,l+1,e.type.schema.linebreakReplacement.create())}}})}function M1(t,e,n,a){e.forEach((r,i)=>{if(r.type==r.type.schema.linebreakReplacement){let s=t.mapping.slice(a).map(n+1+i);t.replaceWith(s,s+1,e.type.schema.text(` -`))}})}function m7(t,e,n){let a=t.resolve(e),r=a.index();return a.parent.canReplaceWith(r,r+1,n)}function h7(t,e,n,a,r){let i=t.doc.nodeAt(e);if(!i)throw new RangeError("No node at given position");n||(n=i.type);let s=n.create(a,null,r||i.marks);if(i.isLeaf)return t.replaceWith(e,e+i.nodeSize,s);if(!n.validContent(i.content))throw new RangeError("Invalid content for node type "+n.name);t.step(new ht(e,e+i.nodeSize,e+1,e+i.nodeSize-1,new V(B.from(s),0,0),1,!0))}function Vr(t,e,n=1,a){let r=t.resolve(e),i=r.depth-n,s=a&&a[a.length-1]||r.parent;if(i<0||r.parent.type.spec.isolating||!r.parent.canReplace(r.index(),r.parent.childCount)||!s.type.validContent(r.parent.content.cutByIndex(r.index(),r.parent.childCount)))return!1;for(let c=r.depth-1,u=n-2;c>i;c--,u--){let p=r.node(c),d=r.index(c);if(p.type.spec.isolating)return!1;let m=p.content.cutByIndex(d,p.childCount),h=a&&a[u+1];h&&(m=m.replaceChild(0,h.type.create(h.attrs)));let b=a&&a[u]||p;if(!p.canReplace(d+1,p.childCount)||!b.type.validContent(m))return!1}let o=r.indexAfter(i),l=a&&a[0];return r.node(i).canReplaceWith(o,o,l?l.type:r.node(i+1).type)}function f7(t,e,n=1,a){let r=t.doc.resolve(e),i=B.empty,s=B.empty;for(let o=r.depth,l=r.depth-n,c=n-1;o>l;o--,c--){i=B.from(r.node(o).copy(i));let u=a&&a[c];s=B.from(u?u.type.create(u.attrs,s):r.node(o).copy(s))}t.step(new mt(e,e,new V(i.append(s),n,n),!0))}function Wr(t,e){let n=t.resolve(e),a=n.index();return b7(n.nodeBefore,n.nodeAfter)&&n.parent.canReplace(a,a+1)}function g7(t,e){e.content.size||t.type.compatibleContent(e.type);let n=t.contentMatchAt(t.childCount),{linebreakReplacement:a}=t.type.schema;for(let r=0;r=0;r--){let i=a.index(r);if(a.node(r).canReplaceWith(i,i,n))return a.before(r+1);if(i>0)return null}if(a.parentOffset==a.parent.content.size)for(let r=a.depth-1;r>=0;r--){let i=a.indexAfter(r);if(a.node(r).canReplaceWith(i,i,n))return a.after(r+1);if(i=0;s--){let o=s==a.depth?0:a.pos<=(a.start(s+1)+a.end(s+1))/2?-1:1,l=a.index(s)+(o>0?1:0),c=a.node(s),u=!1;if(i==1)u=c.canReplace(l,l,r);else{let p=c.contentMatchAt(l).findWrapping(r.firstChild.type);u=p&&c.canReplaceWith(l,l,p[0])}if(u)return o==0?a.pos:o<0?a.before(s+1):a.after(s+1)}return null}function yo(t,e,n=e,a=V.empty){if(e==n&&!a.size)return null;let r=t.resolve(e),i=t.resolve(n);return I1(r,i,a)?new mt(e,n,a):new um(r,i,a).fit()}function I1(t,e,n){return!n.openStart&&!n.openEnd&&t.start()==e.start()&&t.parent.canReplace(t.index(),e.index(),n.content)}var um=class{constructor(e,n,a){this.$from=e,this.$to=n,this.unplaced=a,this.frontier=[],this.placed=B.empty;for(let r=0;r<=e.depth;r++){let i=e.node(r);this.frontier.push({type:i.type,match:i.contentMatchAt(e.indexAfter(r))})}for(let r=e.depth;r>0;r--)this.placed=B.from(e.node(r).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let c=this.findFittable();c?this.placeNodes(c):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),n=this.placed.size-this.depth-this.$from.depth,a=this.$from,r=this.close(e<0?this.$to:a.doc.resolve(e));if(!r)return null;let i=this.placed,s=a.depth,o=r.depth;for(;s&&o&&i.childCount==1;)i=i.firstChild.content,s--,o--;let l=new V(i,s,o);return e>-1?new ht(a.pos,e,this.$to.pos,this.$to.end(),l,n):l.size||a.pos!=this.$to.pos?new mt(a.pos,r.pos,l):null}findFittable(){let e=this.unplaced.openStart;for(let n=this.unplaced.content,a=0,r=this.unplaced.openEnd;a1&&(r=0),i.type.spec.isolating&&r<=a){e=a;break}n=i.content}for(let n=1;n<=2;n++)for(let a=n==1?e:this.unplaced.openStart;a>=0;a--){let r,i=null;a?(i=om(this.unplaced.content,a-1).firstChild,r=i.content):r=this.unplaced.content;let s=r.firstChild;for(let o=this.depth;o>=0;o--){let{type:l,match:c}=this.frontier[o],u,p=null;if(n==1&&(s?c.matchType(s.type)||(p=c.fillBefore(B.from(s),!1)):i&&l.compatibleContent(i.type)))return{sliceDepth:a,frontierDepth:o,parent:i,inject:p};if(n==2&&s&&(u=c.findWrapping(s.type)))return{sliceDepth:a,frontierDepth:o,parent:i,wrap:u};if(i&&c.matchType(i.type))break}}}openMore(){let{content:e,openStart:n,openEnd:a}=this.unplaced,r=om(e,n);return!r.childCount||r.firstChild.isLeaf?!1:(this.unplaced=new V(e,n+1,Math.max(a,r.size+n>=e.size-a?n+1:0)),!0)}dropNode(){let{content:e,openStart:n,openEnd:a}=this.unplaced,r=om(e,n);if(r.childCount<=1&&n>0){let i=e.size-n<=n+r.size;this.unplaced=new V(mo(e,n-1,1),n-1,i?n-1:a)}else this.unplaced=new V(mo(e,n,1),n,a)}placeNodes({sliceDepth:e,frontierDepth:n,parent:a,inject:r,wrap:i}){for(;this.depth>n;)this.closeFrontierNode();if(i)for(let b=0;b1||l==0||b.content.size)&&(p=y,u.push(R1(b.mark(d.allowedMarks(b.marks)),c==1?l:0,c==o.childCount?m:-1)))}let h=c==o.childCount;h||(m=-1),this.placed=ho(this.placed,n,B.from(u)),this.frontier[n].match=p,h&&m<0&&a&&a.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let b=0,y=o;b1&&r==this.$to.end(--a);)++r;return r}findCloseLevel(e){e:for(let n=Math.min(this.depth,e.depth);n>=0;n--){let{match:a,type:r}=this.frontier[n],i=n=0;o--){let{match:l,type:c}=this.frontier[o],u=lm(e,o,c,l,!0);if(!u||u.childCount)continue e}return{depth:n,fit:s,move:i?e.doc.resolve(e.after(n+1)):e}}}}close(e){let n=this.findCloseLevel(e);if(!n)return null;for(;this.depth>n.depth;)this.closeFrontierNode();n.fit.childCount&&(this.placed=ho(this.placed,n.depth,n.fit)),e=n.move;for(let a=n.depth+1;a<=e.depth;a++){let r=e.node(a),i=r.type.contentMatch.fillBefore(r.content,!0,e.index(a));this.openFrontierNode(r.type,r.attrs,i)}return e}openFrontierNode(e,n=null,a){let r=this.frontier[this.depth];r.match=r.match.matchType(e),this.placed=ho(this.placed,this.depth,B.from(e.create(n,a))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let n=this.frontier.pop().match.fillBefore(B.empty,!0);n.childCount&&(this.placed=ho(this.placed,this.frontier.length,n))}};function mo(t,e,n){return e==0?t.cutByIndex(n,t.childCount):t.replaceChild(0,t.firstChild.copy(mo(t.firstChild.content,e-1,n)))}function ho(t,e,n){return e==0?t.append(n):t.replaceChild(t.childCount-1,t.lastChild.copy(ho(t.lastChild.content,e-1,n)))}function om(t,e){for(let n=0;n1&&(a=a.replaceChild(0,R1(a.firstChild,e-1,a.childCount==1?n-1:0))),e>0&&(a=t.type.contentMatch.fillBefore(a).append(a),n<=0&&(a=a.append(t.type.contentMatch.matchFragment(a).fillBefore(B.empty,!0)))),t.copy(a)}function lm(t,e,n,a,r){let i=t.node(e),s=r?t.indexAfter(e):t.index(e);if(s==i.childCount&&!n.compatibleContent(i.type))return null;let o=a.fillBefore(i.content,!0,s);return o&&!k7(n,i.content,s)?o:null}function k7(t,e,n){for(let a=n;a0;d--,m--){let h=r.node(d).type.spec;if(h.defining||h.definingAsContext||h.isolating)break;s.indexOf(d)>-1?o=d:r.before(d)==m&&s.splice(1,0,-d)}let l=s.indexOf(o),c=[],u=a.openStart;for(let d=a.content,m=0;;m++){let h=d.firstChild;if(c.push(h),m==a.openStart)break;d=h.content}for(let d=u-1;d>=0;d--){let m=c[d],h=w7(m.type);if(h&&!m.sameMarkup(r.node(Math.abs(o)-1)))u=d;else if(h||!m.type.isTextblock)break}for(let d=a.openStart;d>=0;d--){let m=(d+u+1)%(a.openStart+1),h=c[m];if(h)for(let b=0;b=0&&(t.replace(e,n,a),!(t.steps.length>p));d--){let m=s[d];m<0||(e=r.before(m),n=i.after(m))}}function z1(t,e,n,a,r){if(ea){let i=r.contentMatchAt(0),s=i.fillBefore(t).append(t);t=s.append(i.matchFragment(s).fillBefore(B.empty,!0))}return t}function v7(t,e,n,a){if(!a.isInline&&e==n&&t.doc.resolve(e).parent.content.size){let r=x7(t.doc,e,a.type);r!=null&&(e=n=r)}t.replaceRange(e,n,new V(B.from(a),0,0))}function $7(t,e,n){let a=t.doc.resolve(e),r=t.doc.resolve(n);if(a.parent.isTextblock&&r.parent.isTextblock&&a.start()!=r.start()&&a.parentOffset==0&&r.parentOffset==0){let s=a.sharedDepth(n),o=!1;for(let l=a.depth;l>s;l--)a.node(l).type.spec.isolating&&(o=!0);for(let l=r.depth;l>s;l--)r.node(l).type.spec.isolating&&(o=!0);if(!o){for(let l=a.depth;l>0&&e==a.start(l);l--)e=a.before(l);for(let l=r.depth;l>0&&n==r.start(l);l--)n=r.before(l);a=t.doc.resolve(e),r=t.doc.resolve(n)}}let i=O1(a,r);for(let s=0;s0&&(l||a.node(o-1).canReplace(a.index(o-1),r.indexAfter(o-1))))return t.delete(a.before(o),r.after(o))}for(let s=1;s<=a.depth&&s<=r.depth;s++)if(e-a.start(s)==a.depth-s&&n>a.end(s)&&r.end(s)-n!=r.depth-s&&a.start(s-1)==r.start(s-1)&&a.node(s-1).canReplace(a.index(s-1),r.index(s-1)))return t.delete(a.before(s),n);t.delete(e,n)}function O1(t,e){let n=[],a=Math.min(t.depth,e.depth);for(let r=a;r>=0;r--){let i=t.start(r);if(ie.pos+(e.depth-r)||t.node(r).type.spec.isolating||e.node(r).type.spec.isolating)break;(i==e.start(r)||r==t.depth&&r==e.depth&&t.parent.inlineContent&&e.parent.inlineContent&&r&&e.start(r-1)==i-1)&&n.push(r)}return n}var Tc=class t extends lt{constructor(e,n,a){super(),this.pos=e,this.attr=n,this.value=a}apply(e){let n=e.nodeAt(this.pos);if(!n)return dt.fail("No node at attribute step's position");let a=Object.create(null);for(let i in n.attrs)a[i]=n.attrs[i];a[this.attr]=this.value;let r=n.type.create(a,null,n.marks);return dt.fromReplace(e,this.pos,this.pos+1,new V(B.from(r),0,n.isLeaf?0:1))}getMap(){return pa.empty}invert(e){return new t(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let n=e.mapResult(this.pos,1);return n.deletedAfter?null:new t(n.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,n){if(typeof n.pos!="number"||typeof n.attr!="string")throw new RangeError("Invalid input for AttrStep.fromJSON");return new t(n.pos,n.attr,n.value)}};lt.jsonID("attr",Tc);var Mc=class t extends lt{constructor(e,n){super(),this.attr=e,this.value=n}apply(e){let n=Object.create(null);for(let r in e.attrs)n[r]=e.attrs[r];n[this.attr]=this.value;let a=e.type.create(n,e.content,e.marks);return dt.ok(a)}getMap(){return pa.empty}invert(e){return new t(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,n){if(typeof n.attr!="string")throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new t(n.attr,n.value)}};lt.jsonID("docAttr",Mc);var Fi=class extends Error{};Fi=function t(e){let n=Error.call(this,e);return n.__proto__=t.prototype,n};Fi.prototype=Object.create(Error.prototype);Fi.prototype.constructor=Fi;Fi.prototype.name="TransformError";var qi=class{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new go}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let n=this.maybeStep(e);if(n.failed)throw new Fi(n.failed);return this}maybeStep(e){let n=e.apply(this.doc);return n.failed||this.addStep(e,n.doc),n}get docChanged(){return this.steps.length>0}changedRange(){let e=1e9,n=-1e9;for(let a=0;a{e=Math.min(e,o),n=Math.max(n,l)})}return e==1e9?null:{from:e,to:n}}addStep(e,n){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=n}replace(e,n=e,a=V.empty){let r=yo(this.doc,e,n,a);return r&&this.step(r),this}replaceWith(e,n,a){return this.replace(e,n,new V(B.from(a),0,0))}delete(e,n){return this.replace(e,n,V.empty)}insert(e,n){return this.replaceWith(e,e,n)}replaceRange(e,n,a){return _7(this,e,n,a),this}replaceRangeWith(e,n,a){return v7(this,e,n,a),this}deleteRange(e,n){return $7(this,e,n),this}lift(e,n){return l7(this,e,n),this}join(e,n=1){return y7(this,e,n),this}wrap(e,n){return p7(this,e,n),this}setBlockType(e,n=e,a,r=null){return d7(this,e,n,a,r),this}setNodeMarkup(e,n,a=null,r){return h7(this,e,n,a,r),this}setNodeAttribute(e,n,a){return this.step(new Tc(e,n,a)),this}setDocAttribute(e,n){return this.step(new Mc(e,n)),this}addNodeMark(e,n){return this.step(new bo(e,n)),this}removeNodeMark(e,n){let a=this.doc.nodeAt(e);if(!a)throw new RangeError("No node at position "+e);if(n instanceof ye)n.isInSet(a.marks)&&this.step(new Di(e,n));else{let r=a.marks,i,s=[];for(;i=n.isInSet(r);)s.push(new Di(e,i)),r=i.removeFromSet(r);for(let o=s.length-1;o>=0;o--)this.step(s[o])}return this}split(e,n=1,a){return f7(this,e,n,a),this}addMark(e,n,a){return i7(this,e,n,a),this}removeMark(e,n,a){return s7(this,e,n,a),this}clearIncompatible(e,n,a){return dm(this,e,n,a),this}};var mm=Object.create(null),ae=class{constructor(e,n,a){this.$anchor=e,this.$head=n,this.ranges=a||[new Xa(e.min(n),e.max(n))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let n=0;n=0;i--){let s=n<0?Gi(e.node(0),e.node(i),e.before(i+1),e.index(i),n,a):Gi(e.node(0),e.node(i),e.after(i+1),e.index(i)+1,n,a);if(s)return s}return null}static near(e,n=1){return this.findFrom(e,n)||this.findFrom(e,-n)||new tn(e.node(0))}static atStart(e){return Gi(e,e,0,0,1)||new tn(e)}static atEnd(e){return Gi(e,e,e.content.size,e.childCount,-1)||new tn(e)}static fromJSON(e,n){if(!n||!n.type)throw new RangeError("Invalid input for Selection.fromJSON");let a=mm[n.type];if(!a)throw new RangeError(`No selection type ${n.type} defined`);return a.fromJSON(e,n)}static jsonID(e,n){if(e in mm)throw new RangeError("Duplicate use of selection JSON ID "+e);return mm[e]=n,n.prototype.jsonID=e,n}getBookmark(){return ue.between(this.$anchor,this.$head).getBookmark()}};ae.prototype.visible=!0;var Xa=class{constructor(e,n){this.$from=e,this.$to=n}},B1=!1;function L1(t){!B1&&!t.parent.inlineContent&&(B1=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+t.parent.type.name+")"))}var ue=class t extends ae{constructor(e,n=e){L1(e),L1(n),super(e,n)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,n){let a=e.resolve(n.map(this.head));if(!a.parent.inlineContent)return ae.near(a);let r=e.resolve(n.map(this.anchor));return new t(r.parent.inlineContent?r:a,a)}replace(e,n=V.empty){if(super.replace(e,n),n==V.empty){let a=this.$from.marksAcross(this.$to);a&&e.ensureMarks(a)}}eq(e){return e instanceof t&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new Ic(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,n){if(typeof n.anchor!="number"||typeof n.head!="number")throw new RangeError("Invalid input for TextSelection.fromJSON");return new t(e.resolve(n.anchor),e.resolve(n.head))}static create(e,n,a=n){let r=e.resolve(n);return new this(r,a==n?r:e.resolve(a))}static between(e,n,a){let r=e.pos-n.pos;if((!a||r)&&(a=r>=0?1:-1),!n.parent.inlineContent){let i=ae.findFrom(n,a,!0)||ae.findFrom(n,-a,!0);if(i)n=i.$head;else return ae.near(n,a)}return e.parent.inlineContent||(r==0?e=n:(e=(ae.findFrom(e,-a,!0)||ae.findFrom(e,a,!0)).$anchor,e.pos0?0:1);r>0?s=0;s+=r){let o=e.child(s);if(o.isAtom){if(!i&&le.isSelectable(o))return le.create(t,n-(r<0?o.nodeSize:0))}else{let l=Gi(t,o,n+r,r<0?o.childCount:0,r,i);if(l)return l}n+=o.nodeSize*r}return null}function D1(t,e,n){let a=t.steps.length-1;if(a{s==null&&(s=u)}),t.setSelection(ae.near(t.doc.resolve(s),n))}var F1=1,Nc=2,q1=4,gm=class extends qi{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=Nc,this}ensureMarks(e){return ye.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(this.updated&Nc)>0}addStep(e,n){super.addStep(e,n),this.updated=this.updated&~Nc,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,n=!0){let a=this.selection;return n&&(e=e.mark(this.storedMarks||(a.empty?a.$from.marks():a.$from.marksAcross(a.$to)||ye.none))),a.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,n,a){let r=this.doc.type.schema;if(n==null)return e?this.replaceSelectionWith(r.text(e),!0):this.deleteSelection();{if(a==null&&(a=n),!e)return this.deleteRange(n,a);let i=this.storedMarks;if(!i){let s=this.doc.resolve(n);i=a==n?s.marks():s.marksAcross(this.doc.resolve(a))}return this.replaceRangeWith(n,a,r.text(e,i)),!this.selection.empty&&this.selection.to==n+e.length&&this.setSelection(ae.near(this.selection.$to)),this}}setMeta(e,n){return this.meta[typeof e=="string"?e:e.key]=n,this}getMeta(e){return this.meta[typeof e=="string"?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=q1,this}get scrolledIntoView(){return(this.updated&q1)>0}};function P1(t,e){return!e||!t?t:t.bind(e)}var Ur=class{constructor(e,n,a){this.name=e,this.init=P1(n.init,a),this.apply=P1(n.apply,a)}},j7=[new Ur("doc",{init(t){return t.doc||t.schema.topNodeType.createAndFill()},apply(t){return t.doc}}),new Ur("selection",{init(t,e){return t.selection||ae.atStart(e.doc)},apply(t){return t.selection}}),new Ur("storedMarks",{init(t){return t.storedMarks||null},apply(t,e,n,a){return a.selection.$cursor?t.storedMarks:null}}),new Ur("scrollToSelection",{init(){return 0},apply(t,e){return t.scrolledIntoView?e+1:e}})],xo=class{constructor(e,n){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=j7.slice(),n&&n.forEach(a=>{if(this.pluginsByKey[a.key])throw new RangeError("Adding different instances of a keyed plugin ("+a.key+")");this.plugins.push(a),this.pluginsByKey[a.key]=a,a.spec.state&&this.fields.push(new Ur(a.key,a.spec.state,a))})}},Hi=class t{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,n=-1){for(let a=0;aa.toJSON())),e&&typeof e=="object")for(let a in e){if(a=="doc"||a=="selection")throw new RangeError("The JSON fields `doc` and `selection` are reserved");let r=e[a],i=r.spec.state;i&&i.toJSON&&(n[a]=i.toJSON.call(r,this[r.key]))}return n}static fromJSON(e,n,a){if(!n)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let r=new xo(e.schema,e.plugins),i=new t(r);return r.fields.forEach(s=>{if(s.name=="doc")i.doc=Gt.fromJSON(e.schema,n.doc);else if(s.name=="selection")i.selection=ae.fromJSON(i.doc,n.selection);else if(s.name=="storedMarks")n.storedMarks&&(i.storedMarks=n.storedMarks.map(e.schema.markFromJSON));else{if(a)for(let o in a){let l=a[o],c=l.spec.state;if(l.key==s.name&&c&&c.fromJSON&&Object.prototype.hasOwnProperty.call(n,o)){i[s.name]=c.fromJSON.call(l,e,n[o],i);return}}i[s.name]=s.init(e,i)}}),i}};function G1(t,e,n){for(let a in t){let r=t[a];r instanceof Function?r=r.bind(e):a=="handleDOMEvents"&&(r=G1(r,e,{})),n[a]=r}return n}var je=class{constructor(e){this.spec=e,this.props={},e.props&&G1(e.props,this,this.props),this.key=e.key?e.key.key:H1("plugin")}getState(e){return e[this.key]}},hm=Object.create(null);function H1(t){return t in hm?t+"$"+ ++hm[t]:(hm[t]=0,t+"$")}var Se=class{constructor(e="key"){this.key=H1(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}};var Rc=(t,e)=>t.selection.empty?!1:(e&&e(t.tr.deleteSelection().scrollIntoView()),!0);function W1(t,e){let{$cursor:n}=t.selection;return!n||(e?!e.endOfTextblock("backward",t):n.parentOffset>0)?null:n}var ym=(t,e,n)=>{let a=W1(t,n);if(!a)return!1;let r=km(a);if(!r){let s=a.blockRange(),o=s&&Pi(s);return o==null?!1:(e&&e(t.tr.lift(s,o).scrollIntoView()),!0)}let i=r.nodeBefore;if(X1(t,r,e,-1))return!0;if(a.parent.content.size==0&&(Vi(i,"end")||le.isSelectable(i)))for(let s=a.depth;;s--){let o=yo(t.doc,a.before(s),a.after(s),V.empty);if(o&&o.slice.size1)break}return i.isAtom&&r.depth==a.depth-1?(e&&e(t.tr.delete(r.pos-i.nodeSize,r.pos).scrollIntoView()),!0):!1},U1=(t,e,n)=>{let a=W1(t,n);if(!a)return!1;let r=km(a);return r?S7(t,r,e):!1};function S7(t,e,n){let a=e.nodeBefore,r=a,i=e.pos-1;for(;!r.isTextblock;i--){if(r.type.spec.isolating)return!1;let u=r.lastChild;if(!u)return!1;r=u}let s=e.nodeAfter,o=s,l=e.pos+1;for(;!o.isTextblock;l++){if(o.type.spec.isolating)return!1;let u=o.firstChild;if(!u)return!1;o=u}let c=yo(t.doc,i,l,V.empty);if(!c||c.from!=i||c instanceof mt&&c.slice.size>=l-i)return!1;if(n){let u=t.tr.step(c);u.setSelection(ue.create(u.doc,i)),n(u.scrollIntoView())}return!0}function Vi(t,e,n=!1){for(let a=t;a;a=e=="start"?a.firstChild:a.lastChild){if(a.isTextblock)return!0;if(n&&a.childCount!=1)return!1}return!1}var xm=(t,e,n)=>{let{$head:a,empty:r}=t.selection,i=a;if(!r)return!1;if(a.parent.isTextblock){if(n?!n.endOfTextblock("backward",t):a.parentOffset>0)return!1;i=km(a)}let s=i&&i.nodeBefore;return!s||!le.isSelectable(s)?!1:(e&&e(t.tr.setSelection(le.create(t.doc,i.pos-s.nodeSize)).scrollIntoView()),!0)};function km(t){if(!t.parent.type.spec.isolating)for(let e=t.depth-1;e>=0;e--){if(t.index(e)>0)return t.doc.resolve(t.before(e+1));if(t.node(e).type.spec.isolating)break}return null}function E7(t,e){let{$cursor:n}=t.selection;return!n||(e?!e.endOfTextblock("forward",t):n.parentOffset{let a=E7(t,n);if(!a)return!1;let r=K1(a);if(!r)return!1;let i=r.nodeAfter;if(X1(t,r,e,1))return!0;if(a.parent.content.size==0&&(Vi(i,"start")||le.isSelectable(i))){let s=yo(t.doc,a.before(),a.after(),V.empty);if(s&&s.slice.size{let{$head:a,empty:r}=t.selection,i=a;if(!r)return!1;if(a.parent.isTextblock){if(n?!n.endOfTextblock("forward",t):a.parentOffset=0;e--){let n=t.node(e);if(t.index(e)+1{let{$head:n,$anchor:a}=t.selection;return!n.parent.type.spec.code||!n.sameParent(a)?!1:(e&&e(t.tr.insertText(` -`).scrollIntoView()),!0)};function wm(t){for(let e=0;e{let{$head:n,$anchor:a}=t.selection;if(!n.parent.type.spec.code||!n.sameParent(a))return!1;let r=n.node(-1),i=n.indexAfter(-1),s=wm(r.contentMatchAt(i));if(!s||!r.canReplaceWith(i,i,s))return!1;if(e){let o=n.after(),l=t.tr.replaceWith(o,o,s.createAndFill());l.setSelection(ae.near(l.doc.resolve(o),1)),e(l.scrollIntoView())}return!0},I7=(t,e)=>{let n=t.selection,{$from:a,$to:r}=n;if(n instanceof tn||a.parent.inlineContent||r.parent.inlineContent)return!1;let i=wm(r.parent.contentMatchAt(r.indexAfter()));if(!i||!i.isTextblock)return!1;if(e){let s=(!a.parentOffset&&r.index(){let{$cursor:n}=t.selection;if(!n||n.parent.content.size)return!1;if(n.depth>1&&n.after()!=n.end(-1)){let i=n.before();if(Vr(t.doc,i))return e&&e(t.tr.split(i).scrollIntoView()),!0}let a=n.blockRange(),r=a&&Pi(a);return r==null?!1:(e&&e(t.tr.lift(a,r).scrollIntoView()),!0)};function z7(t){return(e,n)=>{let{$from:a,$to:r}=e.selection;if(e.selection instanceof le&&e.selection.node.isBlock)return!a.parentOffset||!Vr(e.doc,a.pos)?!1:(n&&n(e.tr.split(a.pos).scrollIntoView()),!0);if(!a.depth)return!1;let i=[],s,o,l=!1,c=!1;for(let m=a.depth;;m--)if(a.node(m).isBlock){l=a.end(m)==a.pos+(a.depth-m),c=a.start(m)==a.pos-(a.depth-m),o=wm(a.node(m-1).contentMatchAt(a.indexAfter(m-1)));let b=t&&t(r.parent,l,a);i.unshift(b||(l&&o?{type:o}:null)),s=m;break}else{if(m==1)return!1;i.unshift(null)}let u=e.tr;(e.selection instanceof ue||e.selection instanceof tn)&&u.deleteSelection();let p=u.mapping.map(a.pos),d=Vr(u.doc,p,i.length,i);if(d||(i[0]=o?{type:o}:null,d=Vr(u.doc,p,i.length,i)),!d)return!1;if(u.split(p,i.length,i),!l&&c&&a.node(s).type!=o){let m=u.mapping.map(a.before(s)),h=u.doc.resolve(m);o&&a.node(s-1).canReplaceWith(h.index(),h.index()+1,o)&&u.setNodeMarkup(u.mapping.map(a.before(s)),o)}return n&&n(u.scrollIntoView()),!0}}var O7=z7();var B7=(t,e)=>(e&&e(t.tr.setSelection(new tn(t.doc))),!0);function L7(t,e,n){let a=e.nodeBefore,r=e.nodeAfter,i=e.index();return!a||!r||!a.type.compatibleContent(r.type)?!1:!a.content.size&&e.parent.canReplace(i-1,i)?(n&&n(t.tr.delete(e.pos-a.nodeSize,e.pos).scrollIntoView()),!0):!e.parent.canReplace(i,i+1)||!(r.isTextblock||Wr(t.doc,e.pos))?!1:(n&&n(t.tr.join(e.pos).scrollIntoView()),!0)}function X1(t,e,n,a){let r=e.nodeBefore,i=e.nodeAfter,s,o,l=r.type.spec.isolating||i.type.spec.isolating;if(!l&&L7(t,e,n))return!0;let c=!l&&e.parent.canReplace(e.index(),e.index()+1);if(c&&(s=(o=r.contentMatchAt(r.childCount)).findWrapping(i.type))&&o.matchType(s[0]||i.type).validEnd){if(n){let m=e.pos+i.nodeSize,h=B.empty;for(let k=s.length-1;k>=0;k--)h=B.from(s[k].create(null,h));h=B.from(r.copy(h));let b=t.tr.step(new ht(e.pos-1,m,e.pos,m,new V(h,1,0),s.length,!0)),y=b.doc.resolve(m+2*s.length);y.nodeAfter&&y.nodeAfter.type==r.type&&Wr(b.doc,y.pos)&&b.join(y.pos),n(b.scrollIntoView())}return!0}let u=i.type.spec.isolating||a>0&&l?null:ae.findFrom(e,1),p=u&&u.$from.blockRange(u.$to),d=p&&Pi(p);if(d!=null&&d>=e.depth)return n&&n(t.tr.lift(p,d).scrollIntoView()),!0;if(c&&Vi(i,"start",!0)&&Vi(r,"end")){let m=r,h=[];for(;h.push(m),!m.isTextblock;)m=m.lastChild;let b=i,y=1;for(;!b.isTextblock;b=b.firstChild)y++;if(m.canReplace(m.childCount,m.childCount,b.content)){if(n){let k=B.empty;for(let $=h.length-1;$>=0;$--)k=B.from(h[$].copy(k));let _=t.tr.step(new ht(e.pos-h.length,e.pos+i.nodeSize,e.pos+y,e.pos+i.nodeSize-y,new V(k,h.length,0),0,!0));n(_.scrollIntoView())}return!0}}return!1}function Z1(t){return function(e,n){let a=e.selection,r=t<0?a.$from:a.$to,i=r.depth;for(;r.node(i).isInline;){if(!i)return!1;i--}return r.node(i).isTextblock?(n&&n(e.tr.setSelection(ue.create(e.doc,t<0?r.start(i):r.end(i)))),!0):!1}}var D7=Z1(-1),F7=Z1(1);function zc(t,e=null){return function(n,a){let{$from:r,$to:i}=n.selection,s=r.blockRange(i),o=s&&Hr(s,t,e);return o?(a&&a(n.tr.wrap(s,o).scrollIntoView()),!0):!1}}function Wi(t,e=null){return function(n,a){let r=!1;for(let i=0;i{if(r)return!1;if(!(!l.isTextblock||l.hasMarkup(t,e)))if(l.type==t)r=!0;else{let u=n.doc.resolve(c),p=u.index();r=u.parent.canReplaceWith(p,p+1,t)}})}if(!r)return!1;if(a){let i=n.tr;for(let s=0;s{if(o||!a&&l.isAtom&&l.isInline&&c>=i.pos&&c+l.nodeSize<=s.pos)return!1;o=l.inlineContent&&l.type.allowsMarkType(n)}),o)return!0}return!1}function P7(t){let e=[];for(let n=0;n{if(i.isAtom&&i.content.size&&i.isInline&&s>=a.pos&&s+i.nodeSize<=r.pos)return s+1>a.pos&&e.push(new Xa(a,a.doc.resolve(s+1))),a=a.doc.resolve(s+1+i.content.size),!1}),a.poss.doc.rangeHasMark(m.$from.pos,m.$to.pos,t)):p=!u.every(m=>{let h=!1;return d.doc.nodesBetween(m.$from.pos,m.$to.pos,(b,y,k)=>{if(h)return!1;h=!t.isInSet(b.marks)&&!!k&&k.type.allowsMarkType(t)&&!(b.isText&&/^\s*$/.test(b.textBetween(Math.max(0,m.$from.pos-y),Math.min(b.nodeSize,m.$to.pos-y))))}),!h});for(let m=0;m0&&(i=n[0].slice(s-o,s)+i,a=r)}return e.tr.insertText(i,a,r)}}var Q1=(t,e)=>{let n=t.plugins;for(let a=0;a=0;l--)s.step(o.steps[l].invert(o.docs[l]));if(i.text){let l=s.doc.resolve(i.from).marks();s.replaceWith(i.from,i.to,t.schema.text(i.text,l))}else s.delete(i.from,i.to);e(s)}return!0}}return!1},OG=new ct(/--$/,"\u2014",{inCodeMark:!1}),BG=new ct(/\.\.\.$/,"\u2026",{inCodeMark:!1}),LG=new ct(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,"\u201C",{inCodeMark:!1}),DG=new ct(/"$/,"\u201D",{inCodeMark:!1}),FG=new ct(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,"\u2018",{inCodeMark:!1}),qG=new ct(/'$/,"\u2019",{inCodeMark:!1});function Oc(t,e,n=null,a){return new ct(t,(r,i,s,o)=>{let l=n instanceof Function?n(i):n,c=r.tr.delete(s,o),u=c.doc.resolve(s),p=u.blockRange(),d=p&&Hr(p,e,l);if(!d)return null;c.wrap(p,d);let m=c.doc.resolve(s-1).nodeBefore;return m&&m.type==e&&Wr(c.doc,s-1)&&(!a||a(i,m))&&c.join(s-1),c})}function _m(t,e,n=null){return new ct(t,(a,r,i,s)=>{let o=a.doc.resolve(i),l=n instanceof Function?n(r):n;return o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),e)?a.tr.delete(i,s).setBlockType(i,i,e,l):null})}var Za=typeof navigator<"u"?navigator:null,ex=typeof document<"u"?document:null,Ja=Za&&Za.userAgent||"",$m=/Edge\/(\d+)/.exec(Ja),tx=/MSIE \d/.exec(Ja),Cm=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Ja),Sm=!!(tx||Cm||$m),UG=tx?document.documentMode:Cm?+Cm[1]:$m?+$m[1]:0,V7=!Sm&&/gecko\/(\d+)/i.test(Ja),KG=V7&&+(/Firefox\/(\d+)/.exec(Ja)||[0,0])[1],jm=!Sm&&/Chrome\/(\d+)/.exec(Ja),W7=!!jm,XG=jm?+jm[1]:0,U7=!Sm&&!!Za&&/Apple Computer/.test(Za.vendor),K7=U7&&(/Mobile\/\w+/.test(Ja)||!!Za&&Za.maxTouchPoints>2),ZG=K7||(Za?/Mac/.test(Za.platform):!1),X7=/Android \d/.test(Ja),Z7=!!ex&&"webkitFontSmoothing"in ex.documentElement.style,JG=Z7?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function vm(t,e,n,a,r,i){if(t.composing)return!1;let s=t.state,o=s.doc.resolve(e);if(o.parent.type.spec.code)return!1;let l=o.parent.textBetween(Math.max(0,o.parentOffset-500),o.parentOffset,void 0,"\uFFFC")+a;for(let c of r){let u=c,p=u.match.exec(l),d=p&&p[0]&&u.handler(s,p,e-(p[0].length-a.length),n);if(d)return u.undoable!==!1&&d.setMeta(i,{transform:d,from:e,to:n,text:a}),t.dispatch(d),!0}return!1}var J7=new Se("MILKDOWN_CUSTOM_INPUTRULES");function nx({rules:t}){let e=new je({key:J7,isInputRules:!0,state:{init(){return null},apply(n,a){let r=n.getMeta(this);return r||(n.selectionSet||n.docChanged?null:a)}},props:{handleTextInput(n,a,r,i){return vm(n,a,r,i,t,e)},handleDOMEvents:{compositionend:n=>(setTimeout(()=>{let{$cursor:a}=n.state.selection;a&&vm(n,a.pos,a.pos,"",t,e)}),!1),keydown:(n,a)=>!(X7&&W7&&a.key==="Enter")||n.composing?!1:n.someProp("handleKeyDown",r=>r(n,a))?(a.preventDefault(),!0):!1},handleKeyDown(n,a){if(a.key!=="Enter")return!1;let{$cursor:r}=n.state.selection;return r?vm(n,r.pos,r.pos,` -`,t,e):!1}}});return e}function Xr(t,e,n={}){return new ct(t,(a,r,i,s)=>{var o,l,c,u;let{tr:p}=a,d=r.length,m=r[d-1],h=r[0],b=[],y,k={group:m,fullMatch:h,start:i,end:s},_=(o=n.updateCaptured)==null?void 0:o.call(n,k);if(Object.assign(k,_),{group:m,fullMatch:h,start:i,end:s}=k,h===null||m?.trim()==="")return null;if(m){let $=h.search(/\S/),M=i+h.indexOf(m),N=M+m.length;b=(l=p.storedMarks)!=null?l:[],Ni&&p.delete(i+$,M),y=i+$+m.length;let E=(c=n.getAttr)==null?void 0:c.call(n,r);p.addMark(i,y,e.create(E)),p.setStoredMarks(b),(u=n.beforeDispatch)==null||u.call(n,{match:r,start:i,end:s,tr:p})}return p})}function Em(t){return Object.assign(Object.create(t),t).setTime(Date.now())}function Y7(t,e){return Array.isArray(t)&&t.includes(e.type)||e.type===t}function ax(t){if(t.content.childCount===1){let e=t.content.firstChild;if(e?.type.name==="text"&&e.marks.length===0)return e;if(e?.type.name==="paragraph"&&e.childCount===1){let n=e.firstChild;if(n?.type.name==="text"&&n.marks.length===0)return n}}return!1}function Q7(t){return e=>{for(let n=e.depth;n>0;n-=1){let a=e.node(n);if(t(a)){let r=e.before(n),i=e.after(n);return{from:r,to:i,node:a}}}}}function rx(t,e){return Q7(n=>n.type===e)(t)}function ix(t,e){let n=e.nodes[t];if(!n)throw Sb("node",t);return n}function sx(t){return e=>{for(let n=e.depth;n>0;n--){let a=e.node(n);if(t(a))return{pos:e.before(n),start:e.start(n),depth:n,node:a}}}}function ox(t,e){if(!(t instanceof le))return;let{node:n,$from:a}=t;if(Y7(e,n))return{node:n,pos:a.pos,start:a.start(a.depth),depth:a.depth}}var lx=(t,e)=>{let{selection:n,doc:a}=t;if(n instanceof le)return{hasNode:n.node.type===e,pos:n.from,target:n.node};let{from:r,to:i}=n,s=!1,o=-1,l=null;return a.nodesBetween(r,i,(c,u)=>l?!1:c.type===e?(s=!0,o=u,l=c,!1):!0),{hasNode:s,pos:o,target:l}};var ma={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Lc={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},eC=typeof navigator<"u"&&/Mac/.test(navigator.platform),tC=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Ze=0;Ze<10;Ze++)ma[48+Ze]=ma[96+Ze]=String(Ze);var Ze;for(Ze=1;Ze<=24;Ze++)ma[Ze+111]="F"+Ze;var Ze;for(Ze=65;Ze<=90;Ze++)ma[Ze]=String.fromCharCode(Ze+32),Lc[Ze]=String.fromCharCode(Ze);var Ze;for(Bc in ma)Lc.hasOwnProperty(Bc)||(Lc[Bc]=ma[Bc]);var Bc;function cx(t){var e=eC&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||tC&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?Lc:ma)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}var nC=typeof navigator<"u"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),aC=typeof navigator<"u"&&/Win/.test(navigator.platform);function rC(t){let e=t.split(/-(?!$)/),n=e[e.length-1];n=="Space"&&(n=" ");let a,r,i,s;for(let o=0;othis.elements.length,this.top=()=>this.elements.at(-1),this.push=t=>{this.top()?.push(t)},this.open=t=>{this.elements.push(t)},this.close=()=>{let t=this.elements.pop();if(!t)throw ud();return t}}},sC=class hx extends dx{constructor(e,n,a){super(),this.type=e,this.content=n,this.attrs=a}push(e,...n){this.content.push(e,...n)}pop(){return this.content.pop()}static create(e,n,a){return new hx(e,n,a)}},fx=class extends mx{#t=ye.none;static{this.create=(t,e)=>{let n=new this(t);return a=>(n.run(e,a),n.toDoc())}}constructor(t){super(),this.injectRoot=(e,n,a)=>(this.openNode(n,a),this.next(e.children),this),this.openNode=(e,n)=>(this.open(sC.create(e,[],n)),this),this.closeNode=()=>{try{this.#s()}catch(e){console.error(e)}return this},this.addNode=(e,n,a)=>{try{this.#r(e,n,a)}catch(r){console.error(r)}return this},this.openMark=(e,n)=>(this.#t=e.create(n).addToSet(this.#t),this),this.closeMark=e=>(this.#t=e.removeFromSet(this.#t),this),this.addText=e=>{try{let n=this.top();if(!n)throw ud();let a=n.pop(),r=this.schema.text(e,this.#t);if(!a)return n.push(r),this;let i=this.#a(a,r);return i?(n.push(i),this):(n.push(a,r),this)}catch(n){return console.error(n),this}},this.build=()=>{let e;do e=this.#s();while(this.size());return e},this.next=(e=[])=>([e].flat().forEach(n=>this.#i(n)),this),this.toDoc=()=>this.build(),this.run=(e,n)=>{let a=e.runSync(e.parse(n),n);return this.next(a),this},this.schema=t}#e=t=>t.isText;#a=(t,e)=>{if(this.#e(t)&&this.#e(e)&&ye.sameSet(t.marks,e.marks))return this.schema.text(t.text+e.text,t.marks)};#n=t=>{let e=Object.values({...this.schema.nodes,...this.schema.marks}).find(n=>n.spec.parseMarkdown.match(t));if(!e)throw Cb(t);return e};#i=t=>{let e=this.#n(t);e.spec.parseMarkdown.runner(this,t,e)};#s=()=>{this.#t=ye.none;let t=this.close();return this.#r(t.type,t.attrs,t.content)};#r=(t,e,n)=>{let a=t.createAndFill(e,n,this.#t);if(!a)throw $b(t,e,n);return this.push(a),a}},px=class gx extends dx{constructor(e,n,a,r={}){super(),this.type=e,this.children=n,this.value=a,this.props=r,this.push=(i,...s)=>{this.children||(this.children=[]),this.children.push(i,...s)},this.pop=()=>this.children?.pop()}static{this.create=(e,n,a,r={})=>new gx(e,n,a,r)}},oC=t=>Object.prototype.hasOwnProperty.call(t,"size"),bx=class extends mx{#t=ye.none;static{this.create=(t,e)=>{let n=new this(t);return a=>(n.run(a),n.toString(e))}}constructor(t){super(),this.openNode=(e,n,a)=>(this.open(px.create(e,void 0,n,a)),this),this.closeNode=()=>(this.#u(),this),this.addNode=(e,n,a,r)=>(this.#c(e,n,a,r),this),this.withMark=(e,n,a,r)=>(this.#p(e,n,a,r),this),this.closeMark=e=>(this.#d(e),this),this.build=()=>{let e=null;do e=this.#u();while(this.size());return e},this.next=e=>oC(e)?(e.forEach(n=>{this.#i(n)}),this):(this.#i(e),this),this.toString=e=>e.stringify(this.build()),this.run=e=>(this.next(e),this),this.schema=t}#e=t=>{let e=Object.values({...this.schema.nodes,...this.schema.marks}).find(n=>n.spec.toMarkdown.match(t));if(!e)throw jb(t.type);return e};#a=t=>this.#e(t).spec.toMarkdown.runner(this,t);#n=(t,e)=>this.#e(t).spec.toMarkdown.runner(this,t,e);#i=t=>{let{marks:e}=t,n=a=>a.type.spec.priority??50;[...e].sort((a,r)=>n(a)-n(r)).every(a=>!this.#n(a,t))&&this.#a(t),e.forEach(a=>this.#d(a))};#s=(t,e)=>{if(t.type===e||t.children?.length!==1)return t;let n=s=>{if(s.type===e)return s.value!=null?null:s;if(s.children?.length!==1)return null;let[o]=s.children;return o?n(o):null},a=n(t);if(!a)return t;let r=a.children?[...a.children]:void 0,i={...t,children:r};return i.children=r,a.children=[i],a};#r=t=>{let{children:e}=t;return e&&(t.children=e.reduce((n,a,r)=>{if(r===0)return[a];let i=n.at(-1);if(i&&i.isMark&&a.isMark){a=this.#s(a,i.type);let{children:s,...o}=a,{children:l,...c}=i;if(a.type===i.type&&s&&l&&JSON.stringify(o)===JSON.stringify(c)){let u={...c,children:[...l,...s]};return n.slice(0,-1).concat(this.#r(u))}}return n.concat(a)},[])),t};#o=t=>{let e={...t.props,type:t.type};return t.children&&(e.children=t.children),t.value&&(e.value=t.value),e};#l=(t,e)=>{let n="",a="",r=t.children,i=-1,s=-1,o=c=>{c&&c.forEach((u,p)=>{u.type==="text"&&u.value&&(i<0&&(i=p),s=p)})};if(r){o(r);let c=r?.[s],u=r?.[i];if(c&&c.value.endsWith(" ")){let p=c.value,d=p.trimEnd();a=p.slice(d.length),c.value=d}if(u&&u.value.startsWith(" ")){let p=u.value,d=p.trimStart();n=p.slice(0,p.length-d.length),u.value=d}}n.length&&this.#c("text",void 0,n);let l=e();return a.length&&this.#c("text",void 0,a),l};#u=(t=!1)=>{let e=this.close(),n=()=>this.#c(e.type,e.children,e.value,e.props);return t?this.#l(e,n):n()};#c=(t,e,n,a)=>{let r=px.create(t,e,n,a),i=this.#r(this.#o(r));return this.push(i),i};#p=(t,e,n,a)=>t.isInSet(this.#t)?this:(this.#t=t.addToSet(this.#t),this.openNode(e,n,{...a,isMark:!0}));#d=t=>{t.isInSet(this.#t)&&(this.#t=t.type.removeFromSet(this.#t),this.#u(!0))}};var ft=function(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e},Yi=function(t){let e=t.assignedSlot||t.parentNode;return e&&e.nodeType==11?e.host:e},Om=null,fa=function(t,e,n){let a=Om||(Om=document.createRange());return a.setEnd(t,n??t.nodeValue.length),a.setStart(t,e||0),a},lC=function(){Om=null},ni=function(t,e,n,a){return n&&(yx(t,e,n,a,-1)||yx(t,e,n,a,1))},cC=/^(img|br|input|textarea|hr)$/i;function yx(t,e,n,a,r){for(var i;;){if(t==n&&e==a)return!0;if(e==(r<0?0:gn(t))){let s=t.parentNode;if(!s||s.nodeType!=1||So(t)||cC.test(t.nodeName)||t.contentEditable=="false")return!1;e=ft(t)+(r<0?0:1),t=s}else if(t.nodeType==1){let s=t.childNodes[e+(r<0?-1:0)];if(s.nodeType==1&&s.contentEditable=="false")if(!((i=s.pmViewDesc)===null||i===void 0)&&i.ignoreForSelection)e+=r;else return!1;else t=s,e=r<0?gn(t):0}else return!1}}function gn(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function uC(t,e){for(;;){if(t.nodeType==3&&e)return t;if(t.nodeType==1&&e>0){if(t.contentEditable=="false")return null;t=t.childNodes[e-1],e=gn(t)}else if(t.parentNode&&!So(t))e=ft(t),t=t.parentNode;else return null}}function pC(t,e){for(;;){if(t.nodeType==3&&e2),fn=Qi||(Hn?/Mac/.test(Hn.platform):!1),Qx=Hn?/Win/.test(Hn.platform):!1,ga=/Android \d/.test(ar),Eo=!!xx&&"webkitFontSmoothing"in xx.documentElement.style,fC=Eo?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function gC(t){let e=t.defaultView&&t.defaultView.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.documentElement.clientWidth,top:0,bottom:t.documentElement.clientHeight}}function ha(t,e){return typeof t=="number"?t:t[e]}function bC(t){let e=t.getBoundingClientRect(),n=e.width/t.offsetWidth||1,a=e.height/t.offsetHeight||1;return{left:e.left,right:e.left+t.clientWidth*n,top:e.top,bottom:e.top+t.clientHeight*a}}function kx(t,e,n){let a=t.someProp("scrollThreshold")||0,r=t.someProp("scrollMargin")||5,i=t.dom.ownerDocument;for(let s=n||t.dom;s;){if(s.nodeType!=1){s=Yi(s);continue}let o=s,l=o==i.body,c=l?gC(i):bC(o),u=0,p=0;if(e.topc.bottom-ha(a,"bottom")&&(p=e.bottom-e.top>c.bottom-c.top?e.top+ha(r,"top")-c.top:e.bottom-c.bottom+ha(r,"bottom")),e.leftc.right-ha(a,"right")&&(u=e.right-c.right+ha(r,"right")),u||p)if(l)i.defaultView.scrollBy(u,p);else{let m=o.scrollLeft,h=o.scrollTop;p&&(o.scrollTop+=p),u&&(o.scrollLeft+=u);let b=o.scrollLeft-m,y=o.scrollTop-h;e={left:e.left-b,top:e.top-y,right:e.right-b,bottom:e.bottom-y}}let d=l?"fixed":getComputedStyle(s).position;if(/^(fixed|sticky)$/.test(d))break;s=d=="absolute"?s.offsetParent:Yi(s)}}function yC(t){let e=t.dom.getBoundingClientRect(),n=Math.max(0,e.top),a,r;for(let i=(e.left+e.right)/2,s=n+1;s=n-20){a=o,r=l.top;break}}return{refDOM:a,refTop:r,stack:ek(t.dom)}}function ek(t){let e=[],n=t.ownerDocument;for(let a=t;a&&(e.push({dom:a,top:a.scrollTop,left:a.scrollLeft}),t!=n);a=Yi(a));return e}function xC({refDOM:t,refTop:e,stack:n}){let a=t?t.getBoundingClientRect().top:0;tk(n,a==0?0:a-e)}function tk(t,e){for(let n=0;n=o){s=Math.max(h.bottom,s),o=Math.min(h.top,o);let b=h.left>e.left?h.left-e.left:h.right=(h.left+h.right)/2?1:0));continue}}else h.top>e.top&&!l&&h.left<=e.left&&h.right>=e.left&&(l=u,c={left:Math.max(h.left,Math.min(h.right,e.left)),top:h.top});!n&&(e.left>=h.right&&e.top>=h.top||e.left>=h.left&&e.top>=h.bottom)&&(i=p+1)}}return!n&&l&&(n=l,r=c,a=0),n&&n.nodeType==3?wC(n,r):!n||a&&n.nodeType==1?{node:t,offset:i}:nk(n,r)}function wC(t,e){let n=t.nodeValue.length,a=document.createRange(),r;for(let i=0;i=(s.left+s.right)/2?1:0)};break}}return a.detach(),r||{node:t,offset:0}}function eh(t,e){return t.left>=e.left-1&&t.left<=e.right+1&&t.top>=e.top-1&&t.top<=e.bottom+1}function _C(t,e){let n=t.parentNode;return n&&/^li$/i.test(n.nodeName)&&e.left(s.left+s.right)/2?1:-1}return t.docView.posFromDOM(a,r,i)}function $C(t,e,n,a){let r=-1;for(let i=e,s=!1;i!=t.dom;){let o=t.docView.nearestDesc(i,!0),l;if(!o)return null;if(o.dom.nodeType==1&&(o.node.isBlock&&o.parent||!o.contentDOM)&&((l=o.dom.getBoundingClientRect()).width||l.height)&&(o.node.isBlock&&o.parent&&!/^T(R|BODY|HEAD|FOOT)$/.test(o.dom.nodeName)&&(!s&&l.left>a.left||l.top>a.top?r=o.posBefore:(!s&&l.right-1?r:t.docView.posFromDOM(e,n,-1)}function ak(t,e,n){let a=t.childNodes.length;if(a&&n.tope.top&&r++}let c;Eo&&r&&a.nodeType==1&&(c=a.childNodes[r-1]).nodeType==1&&c.contentEditable=="false"&&c.getBoundingClientRect().top>=e.top&&r--,a==t.dom&&r==a.childNodes.length-1&&a.lastChild.nodeType==1&&e.top>a.lastChild.getBoundingClientRect().bottom?o=t.state.doc.content.size:(r==0||a.nodeType!=1||a.childNodes[r-1].nodeName!="BR")&&(o=$C(t,a,r,e))}o==null&&(o=vC(t,s,e));let l=t.docView.nearestDesc(s,!0);return{pos:o,inside:l?l.posAtStart-l.border:-1}}function wx(t){return t.top=0&&r==a.nodeValue.length?(l--,u=1):n<0?l--:c++,ko(Ya(fa(a,l,c),u),u<0)}if(!t.state.doc.resolve(e-(i||0)).parent.inlineContent){if(i==null&&r&&(n<0||r==gn(a))){let l=a.childNodes[r-1];if(l.nodeType==1)return Mm(l.getBoundingClientRect(),!1)}if(i==null&&r=0)}if(i==null&&r&&(n<0||r==gn(a))){let l=a.childNodes[r-1],c=l.nodeType==3?fa(l,gn(l)-(s?0:1)):l.nodeType==1&&(l.nodeName!="BR"||!l.nextSibling)?l:null;if(c)return ko(Ya(c,1),!1)}if(i==null&&r=0)}function ko(t,e){if(t.width==0)return t;let n=e?t.left:t.right;return{top:t.top,bottom:t.bottom,left:n,right:n}}function Mm(t,e){if(t.height==0)return t;let n=e?t.top:t.bottom;return{top:n,bottom:n,left:t.left,right:t.right}}function ik(t,e,n){let a=t.state,r=t.root.activeElement;a!=e&&t.updateState(e),r!=t.dom&&t.focus();try{return n()}finally{a!=e&&t.updateState(a),r!=t.dom&&r&&r.focus()}}function SC(t,e,n){let a=e.selection,r=n=="up"?a.$from:a.$to;return ik(t,e,()=>{let{node:i}=t.docView.domFromPos(r.pos,n=="up"?-1:1);for(;;){let o=t.docView.nearestDesc(i,!0);if(!o)break;if(o.node.isBlock){i=o.contentDOM||o.dom;break}i=o.dom.parentNode}let s=rk(t,r.pos,1);for(let o=i.firstChild;o;o=o.nextSibling){let l;if(o.nodeType==1)l=o.getClientRects();else if(o.nodeType==3)l=fa(o,0,o.nodeValue.length).getClientRects();else continue;for(let c=0;cu.top+1&&(n=="up"?s.top-u.top>(u.bottom-s.top)*2:u.bottom-s.bottom>(s.bottom-u.top)*2))return!1}}return!0})}var EC=/[\u0590-\u08ac]/;function AC(t,e,n){let{$head:a}=e.selection;if(!a.parent.isTextblock)return!1;let r=a.parentOffset,i=!r,s=r==a.parent.content.size,o=t.domSelection();return o?!EC.test(a.parent.textContent)||!o.modify?n=="left"||n=="backward"?i:s:ik(t,e,()=>{let{focusNode:l,focusOffset:c,anchorNode:u,anchorOffset:p}=t.domSelectionRange(),d=o.caretBidiLevel;o.modify("move",n,"character");let m=a.depth?t.docView.domAfterPos(a.before()):t.dom,{focusNode:h,focusOffset:b}=t.domSelectionRange(),y=h&&!m.contains(h.nodeType==1?h:h.parentNode)||l==h&&c==b;try{o.collapse(u,p),l&&(l!=u||c!=p)&&o.extend&&o.extend(l,c)}catch{}return d!=null&&(o.caretBidiLevel=d),y}):a.pos==a.start()||a.pos==a.end()}var _x=null,vx=null,$x=!1;function TC(t,e,n){return _x==e&&vx==n?$x:(_x=e,vx=n,$x=n=="up"||n=="down"?SC(t,e,n):AC(t,e,n))}var yn=0,Cx=1,Jr=2,Vn=3,ai=class{constructor(e,n,a,r){this.parent=e,this.children=n,this.dom=a,this.contentDOM=r,this.dirty=yn,a.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,n,a){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let n=0;nft(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))r=e.compareDocumentPosition(this.contentDOM)&2;else if(this.dom.firstChild){if(n==0)for(let i=e;;i=i.parentNode){if(i==this.dom){r=!1;break}if(i.previousSibling)break}if(r==null&&n==e.childNodes.length)for(let i=e;;i=i.parentNode){if(i==this.dom){r=!0;break}if(i.nextSibling)break}}return r??a>0?this.posAtEnd:this.posAtStart}nearestDesc(e,n=!1){for(let a=!0,r=e;r;r=r.parentNode){let i=this.getDesc(r),s;if(i&&(!n||i.node))if(a&&(s=i.nodeDOM)&&!(s.nodeType==1?s.contains(e.nodeType==1?e:e.parentNode):s==e))a=!1;else return i}}getDesc(e){let n=e.pmViewDesc;for(let a=n;a;a=a.parent)if(a==this)return n}posFromDOM(e,n,a){for(let r=e;r;r=r.parentNode){let i=this.getDesc(r);if(i)return i.localPosFromDOM(e,n,a)}return-1}descAt(e){for(let n=0,a=0;ne||s instanceof qc){r=e-i;break}i=o}if(r)return this.children[a].domFromPos(r-this.children[a].border,n);for(let i;a&&!(i=this.children[a-1]).size&&i instanceof Dc&&i.side>=0;a--);if(n<=0){let i,s=!0;for(;i=a?this.children[a-1]:null,!(!i||i.dom.parentNode==this.contentDOM);a--,s=!1);return i&&n&&s&&!i.border&&!i.domAtom?i.domFromPos(i.size,n):{node:this.contentDOM,offset:i?ft(i.dom)+1:0}}else{let i,s=!0;for(;i=a=u&&n<=c-l.border&&l.node&&l.contentDOM&&this.contentDOM.contains(l.contentDOM))return l.parseRange(e,n,u);e=s;for(let p=o;p>0;p--){let d=this.children[p-1];if(d.size&&d.dom.parentNode==this.contentDOM&&!d.emptyChildAt(1)){r=ft(d.dom)+1;break}e-=d.size}r==-1&&(r=0)}if(r>-1&&(c>n||o==this.children.length-1)){n=c;for(let u=o+1;uh&&sn){let h=o;o=l,l=h}let m=document.createRange();m.setEnd(l.node,l.offset),m.setStart(o.node,o.offset),c.removeAllRanges(),c.addRange(m)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,n){for(let a=0,r=0;r=a:ea){let o=a+i.border,l=s-i.border;if(e>=o&&n<=l){this.dirty=e==a||n==s?Jr:Cx,e==o&&n==l&&(i.contentLost||i.dom.parentNode!=this.contentDOM)?i.dirty=Vn:i.markDirty(e-o,n-o);return}else i.dirty=i.dom==i.contentDOM&&i.dom.parentNode==this.contentDOM&&!i.children.length?Jr:Vn}a=s}this.dirty=Jr}markParentsDirty(){let e=1;for(let n=this.parent;n;n=n.parent,e++){let a=e==1?Jr:Cx;n.dirty{if(!i)return r;if(i.parent)return i.parent.posBeforeChild(i)})),!n.type.spec.raw){if(s.nodeType!=1){let o=document.createElement("span");o.appendChild(s),s=o}s.contentEditable="false",s.classList.add("ProseMirror-widget")}super(e,[],s,null),this.widget=n,this.widget=n,i=this}matchesWidget(e){return this.dirty==yn&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let n=this.widget.spec.stopEvent;return n?n(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get ignoreForSelection(){return!!this.widget.type.spec.relaxedSide}get side(){return this.widget.type.side}},Fm=class extends ai{constructor(e,n,a,r){super(e,[],n,null),this.textDOM=a,this.text=r}get size(){return this.text.length}localPosFromDOM(e,n){return e!=this.textDOM?this.posAtStart+(n?this.size:0):this.posAtStart+n}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}},es=class t extends ai{constructor(e,n,a,r,i){super(e,[],a,r),this.mark=n,this.spec=i}static create(e,n,a,r){let i=r.nodeViews[n.type.name],s=i&&i(n,r,a);return(!s||!s.dom)&&(s=zn.renderSpec(document,n.type.spec.toDOM(n,a),null,n.attrs)),new t(e,n,s.dom,s.contentDOM||s.dom,s)}parseRule(){return this.dirty&Vn||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Vn&&this.mark.eq(e)}markDirty(e,n){if(super.markDirty(e,n),this.dirty!=yn){let a=this.parent;for(;!a.node;)a=a.parent;a.dirty0&&(i=Hm(i,0,e,a));for(let o=0;o{if(!l)return s;if(l.parent)return l.parent.posBeforeChild(l)},a,r),u=c&&c.dom,p=c&&c.contentDOM;if(n.isText){if(!u)u=document.createTextNode(n.text);else if(u.nodeType!=3)throw new RangeError("Text must be rendered as a DOM text node")}else u||({dom:u,contentDOM:p}=zn.renderSpec(document,n.type.spec.toDOM(n),null,n.attrs));!p&&!n.isText&&u.nodeName!="BR"&&(u.hasAttribute("contenteditable")||(u.contentEditable="false"),n.type.spec.draggable&&(u.draggable=!0));let d=u;return u=lk(u,a,n),c?l=new qm(e,n,a,r,u,p||null,d,c,i,s+1):n.isText?new Fc(e,n,a,r,u,d,i):new t(e,n,a,r,u,p||null,d,i,s+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace=="pre"&&(e.preserveWhitespace="full"),!this.contentDOM)e.getContent=()=>this.node.content;else if(!this.contentLost)e.contentElement=this.contentDOM;else{for(let n=this.children.length-1;n>=0;n--){let a=this.children[n];if(this.dom.contains(a.dom.parentNode)){e.contentElement=a.dom.parentNode;break}}e.contentElement||(e.getContent=()=>B.empty)}return e}matchesNode(e,n,a){return this.dirty==yn&&e.eq(this.node)&&Pc(n,this.outerDeco)&&a.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,n){let a=this.node.inlineContent,r=n,i=e.composing?this.localCompositionInfo(e,n):null,s=i&&i.pos>-1?i:null,o=i&&i.pos<0,l=new Gm(this,s&&s.node,e);RC(this.node,this.innerDeco,(c,u,p)=>{c.spec.marks?l.syncToMarks(c.spec.marks,a,e,u):c.type.side>=0&&!p&&l.syncToMarks(u==this.node.childCount?ye.none:this.node.child(u).marks,a,e,u),l.placeWidget(c,e,r)},(c,u,p,d)=>{l.syncToMarks(c.marks,a,e,d);let m;l.findNodeMatch(c,u,p,d)||o&&e.state.selection.from>r&&e.state.selection.to-1&&l.updateNodeAt(c,u,p,m,e)||l.updateNextNode(c,u,p,e,d,r)||l.addNode(c,u,p,e,r),r+=c.nodeSize}),l.syncToMarks([],a,e,0),this.node.isTextblock&&l.addTextblockHacks(),l.destroyRest(),(l.changed||this.dirty==Jr)&&(s&&this.protectLocalComposition(e,s),sk(this.contentDOM,this.children,e),Qi&&zC(this.dom))}localCompositionInfo(e,n){let{from:a,to:r}=e.state.selection;if(!(e.state.selection instanceof ue)||an+this.node.content.size)return null;let i=e.input.compositionNode;if(!i||!this.dom.contains(i.parentNode))return null;if(this.node.inlineContent){let s=i.nodeValue,o=OC(this.node.content,s,a-n,r-n);return o<0?null:{node:i,pos:o,text:s}}else return{node:i,pos:-1,text:""}}protectLocalComposition(e,{node:n,pos:a,text:r}){if(this.getDesc(n))return;let i=n;for(;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=void 0)}let s=new Fm(this,i,n,r);e.input.compositionNodes.push(s),this.children=Hm(this.children,a,a+r.length,e,s)}update(e,n,a,r){return this.dirty==Vn||!e.sameMarkup(this.node)?!1:(this.updateInner(e,n,a,r),!0)}updateInner(e,n,a,r){this.updateOuterDeco(n),this.node=e,this.innerDeco=a,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=yn}updateOuterDeco(e){if(Pc(e,this.outerDeco))return;let n=this.nodeDOM.nodeType!=1,a=this.dom;this.dom=ok(this.dom,this.nodeDOM,Pm(this.outerDeco,this.node,n),Pm(e,this.node,n)),this.dom!=a&&(a.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.add("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.nodeDOM.draggable=!0))}deselectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.remove("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&this.nodeDOM.removeAttribute("draggable"))}get domAtom(){return this.node.isAtom}};function jx(t,e,n,a,r){lk(a,e,t);let i=new nr(void 0,t,e,n,a,a,a,r,0);return i.contentDOM&&i.updateChildren(r,0),i}var Fc=class t extends nr{constructor(e,n,a,r,i,s,o){super(e,n,a,r,i,null,s,o,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,n,a,r){return this.dirty==Vn||this.dirty!=yn&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(n),(this.dirty!=yn||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=e,this.dirty=yn,!0)}inParent(){let e=this.parent.contentDOM;for(let n=this.nodeDOM;n;n=n.parentNode)if(n==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,n,a){return e==this.nodeDOM?this.posAtStart+Math.min(n,this.node.text.length):super.localPosFromDOM(e,n,a)}ignoreMutation(e){return e.type!="characterData"&&e.type!="selection"}slice(e,n,a){let r=this.node.cut(e,n),i=document.createTextNode(r.text);return new t(this.parent,r,this.outerDeco,this.innerDeco,i,i,a)}markDirty(e,n){super.markDirty(e,n),this.dom!=this.nodeDOM&&(e==0||n==this.nodeDOM.nodeValue.length)&&(this.dirty=Vn)}get domAtom(){return!1}isText(e){return this.node.text==e}},qc=class extends ai{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==yn&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName=="IMG"}},qm=class extends nr{constructor(e,n,a,r,i,s,o,l,c,u){super(e,n,a,r,i,s,o,c,u),this.spec=l}update(e,n,a,r){if(this.dirty==Vn)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let i=this.spec.update(e,n,a);return i&&this.updateInner(e,n,a,r),i}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,n,a,r)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,n,a,r){this.spec.setSelection?this.spec.setSelection(e,n,a.root):super.setSelection(e,n,a,r)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}};function sk(t,e,n){let a=t.firstChild,r=!1;for(let i=0;i>1,o=Math.min(s,e.length);for(;i-1)l>this.index&&(this.changed=!0,this.destroyBetween(this.index,l)),this.top=this.top.children[this.index];else{let u=es.create(this.top,e[s],n,a);this.top.children.splice(this.index,0,u),this.top=u,this.changed=!0}this.index=0,s++}}findNodeMatch(e,n,a,r){let i=-1,s;if(r>=this.preMatch.index&&(s=this.preMatch.matches[r-this.preMatch.index]).parent==this.top&&s.matchesNode(e,n,a))i=this.top.children.indexOf(s,this.index);else for(let o=this.index,l=Math.min(this.top.children.length,o+5);o0;){let o;for(;;)if(a){let c=n.children[a-1];if(c instanceof es)n=c,a=c.children.length;else{o=c,a--;break}}else{if(n==e)break e;a=n.parent.children.indexOf(n),n=n.parent}let l=o.node;if(l){if(l!=t.child(r-1))break;--r,i.set(o,r),s.push(o)}}return{index:r,matched:i,matches:s.reverse()}}function IC(t,e){return t.type.side-e.type.side}function RC(t,e,n,a){let r=e.locals(t),i=0;if(r.length==0){for(let c=0;ci;)o.push(r[s++]);let h=i+d.nodeSize;if(d.isText){let y=h;s!y.inline):o.slice();a(d,b,e.forChild(i,d),m),i=h}}function zC(t){if(t.nodeName=="UL"||t.nodeName=="OL"){let e=t.style.cssText;t.style.cssText=e+"; list-style: square !important",window.getComputedStyle(t).listStyle,t.style.cssText=e}}function OC(t,e,n,a){for(let r=0,i=0;r=n){if(i>=a&&l.slice(a-e.length-o,a-o)==e)return a-e.length;let c=o=0&&c+e.length+o>=n)return o+c;if(n==a&&l.length>=a+e.length-o&&l.slice(a-o,a-o+e.length)==e)return a}}return-1}function Hm(t,e,n,a,r){let i=[];for(let s=0,o=0;s=n||u<=e?i.push(l):(cn&&i.push(l.slice(n-c,l.size,a)))}return i}function th(t,e=null){let n=t.domSelectionRange(),a=t.state.doc;if(!n.focusNode)return null;let r=t.docView.nearestDesc(n.focusNode),i=r&&r.size==0,s=t.docView.posFromDOM(n.focusNode,n.focusOffset,1);if(s<0)return null;let o=a.resolve(s),l,c;if(Xc(n)){for(l=s;r&&!r.node;)r=r.parent;let p=r.node;if(r&&p.isAtom&&le.isSelectable(p)&&r.parent&&!(p.isInline&&dC(n.focusNode,n.focusOffset,r.dom))){let d=r.posBefore;c=new le(s==d?o:a.resolve(d))}}else{if(n instanceof t.dom.ownerDocument.defaultView.Selection&&n.rangeCount>1){let p=s,d=s;for(let m=0;m{(n.anchorNode!=a||n.anchorOffset!=r)&&(e.removeEventListener("selectionchange",t.input.hideSelectionGuard),setTimeout(()=>{(!ck(t)||t.state.selection.visible)&&t.dom.classList.remove("ProseMirror-hideselection")},20))})}function LC(t){let e=t.domSelection();if(!e)return;let n=t.cursorWrapper.dom,a=n.nodeName=="IMG";a?e.collapse(n.parentNode,ft(n)+1):e.collapse(n,0),!a&&!t.state.selection.visible&&Ht&&tr<=11&&(n.disabled=!0,n.disabled=!1)}function uk(t,e){if(e instanceof le){let n=t.docView.descAt(e.from);n!=t.lastSelectedViewDesc&&(Mx(t),n&&n.selectNode(),t.lastSelectedViewDesc=n)}else Mx(t)}function Mx(t){t.lastSelectedViewDesc&&(t.lastSelectedViewDesc.parent&&t.lastSelectedViewDesc.deselectNode(),t.lastSelectedViewDesc=void 0)}function nh(t,e,n,a){return t.someProp("createSelectionBetween",r=>r(t,e,n))||ue.between(e,n,a)}function Nx(t){return t.editable&&!t.hasFocus()?!1:pk(t)}function pk(t){let e=t.domSelectionRange();if(!e.anchorNode)return!1;try{return t.dom.contains(e.anchorNode.nodeType==3?e.anchorNode.parentNode:e.anchorNode)&&(t.editable||t.dom.contains(e.focusNode.nodeType==3?e.focusNode.parentNode:e.focusNode))}catch{return!1}}function DC(t){let e=t.docView.domFromPos(t.state.selection.anchor,0),n=t.domSelectionRange();return ni(e.node,e.offset,n.anchorNode,n.anchorOffset)}function Vm(t,e){let{$anchor:n,$head:a}=t.selection,r=e>0?n.max(a):n.min(a),i=r.parent.inlineContent?r.depth?t.doc.resolve(e>0?r.after():r.before()):null:r;return i&&ae.findFrom(i,e)}function Qa(t,e){return t.dispatch(t.state.tr.setSelection(e).scrollIntoView()),!0}function Ix(t,e,n){let a=t.state.selection;if(a instanceof ue)if(n.indexOf("s")>-1){let{$head:r}=a,i=r.textOffset?null:e<0?r.nodeBefore:r.nodeAfter;if(!i||i.isText||!i.isLeaf)return!1;let s=t.state.doc.resolve(r.pos+i.nodeSize*(e<0?-1:1));return Qa(t,new ue(a.$anchor,s))}else if(a.empty){if(t.endOfTextblock(e>0?"forward":"backward")){let r=Vm(t.state,e);return r&&r instanceof le?Qa(t,r):!1}else if(!(fn&&n.indexOf("m")>-1)){let r=a.$head,i=r.textOffset?null:e<0?r.nodeBefore:r.nodeAfter,s;if(!i||i.isText)return!1;let o=e<0?r.pos-i.nodeSize:r.pos;return i.isAtom||(s=t.docView.descAt(o))&&!s.contentDOM?le.isSelectable(i)?Qa(t,new le(e<0?t.state.doc.resolve(r.pos-i.nodeSize):r)):Eo?Qa(t,new ue(t.state.doc.resolve(e<0?o:o+i.nodeSize))):!1:!1}}else return!1;else{if(a instanceof le&&a.node.isInline)return Qa(t,new ue(e>0?a.$to:a.$from));{let r=Vm(t.state,e);return r?Qa(t,r):!1}}}function Gc(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function _o(t,e){let n=t.pmViewDesc;return n&&n.size==0&&(e<0||t.nextSibling||t.nodeName!="BR")}function Xi(t,e){return e<0?FC(t):qC(t)}function FC(t){let e=t.domSelectionRange(),n=e.focusNode,a=e.focusOffset;if(!n)return;let r,i,s=!1;for(bn&&n.nodeType==1&&a0){if(n.nodeType!=1)break;{let o=n.childNodes[a-1];if(_o(o,-1))r=n,i=--a;else if(o.nodeType==3)n=o,a=n.nodeValue.length;else break}}else{if(dk(n))break;{let o=n.previousSibling;for(;o&&_o(o,-1);)r=n.parentNode,i=ft(o),o=o.previousSibling;if(o)n=o,a=Gc(n);else{if(n=n.parentNode,n==t.dom)break;a=0}}}s?Wm(t,n,a):r&&Wm(t,r,i)}function qC(t){let e=t.domSelectionRange(),n=e.focusNode,a=e.focusOffset;if(!n)return;let r=Gc(n),i,s;for(;;)if(a{t.state==r&&ba(t)},50)}function Rx(t,e){let n=t.state.doc.resolve(e);if(!(gt||Qx)&&n.parent.inlineContent){let r=t.coordsAtPos(e);if(e>n.start()){let i=t.coordsAtPos(e-1),s=(i.top+i.bottom)/2;if(s>r.top&&s1)return i.leftr.top&&s1)return i.left>r.left?"ltr":"rtl"}}return getComputedStyle(t.dom).direction=="rtl"?"rtl":"ltr"}function zx(t,e,n){let a=t.state.selection;if(a instanceof ue&&!a.empty||n.indexOf("s")>-1||fn&&n.indexOf("m")>-1)return!1;let{$from:r,$to:i}=a;if(!r.parent.inlineContent||t.endOfTextblock(e<0?"up":"down")){let s=Vm(t.state,e);if(s&&s instanceof le)return Qa(t,s)}if(!r.parent.inlineContent){let s=e<0?r:i,o=a instanceof tn?ae.near(s,e):ae.findFrom(s,e);return o?Qa(t,o):!1}return!1}function Ox(t,e){if(!(t.state.selection instanceof ue))return!0;let{$head:n,$anchor:a,empty:r}=t.state.selection;if(!n.sameParent(a))return!0;if(!r)return!1;if(t.endOfTextblock(e>0?"forward":"backward"))return!0;let i=!n.textOffset&&(e<0?n.nodeBefore:n.nodeAfter);if(i&&!i.isText){let s=t.state.tr;return e<0?s.delete(n.pos-i.nodeSize,n.pos):s.delete(n.pos,n.pos+i.nodeSize),t.dispatch(s),!0}return!1}function Bx(t,e,n){t.domObserver.stop(),e.contentEditable=n,t.domObserver.start()}function HC(t){if(!St||t.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(e&&e.nodeType==1&&n==0&&e.firstChild&&e.firstChild.contentEditable=="false"){let a=e.firstChild;Bx(t,a,"true"),setTimeout(()=>Bx(t,a,"false"),20)}return!1}function VC(t){let e="";return t.ctrlKey&&(e+="c"),t.metaKey&&(e+="m"),t.altKey&&(e+="a"),t.shiftKey&&(e+="s"),e}function WC(t,e){let n=e.keyCode,a=VC(e);if(n==8||fn&&n==72&&a=="c")return Ox(t,-1)||Xi(t,-1);if(n==46&&!e.shiftKey||fn&&n==68&&a=="c")return Ox(t,1)||Xi(t,1);if(n==13||n==27)return!0;if(n==37||fn&&n==66&&a=="c"){let r=n==37?Rx(t,t.state.selection.from)=="ltr"?-1:1:-1;return Ix(t,r,a)||Xi(t,r)}else if(n==39||fn&&n==70&&a=="c"){let r=n==39?Rx(t,t.state.selection.from)=="ltr"?1:-1:1;return Ix(t,r,a)||Xi(t,r)}else{if(n==38||fn&&n==80&&a=="c")return zx(t,-1,a)||Xi(t,-1);if(n==40||fn&&n==78&&a=="c")return HC(t)||zx(t,1,a)||Xi(t,1);if(a==(fn?"m":"c")&&(n==66||n==73||n==89||n==90))return!0}return!1}function ah(t,e){t.someProp("transformCopied",m=>{e=m(e,t)});let n=[],{content:a,openStart:r,openEnd:i}=e;for(;r>1&&i>1&&a.childCount==1&&a.firstChild.childCount==1;){r--,i--;let m=a.firstChild;n.push(m.type.name,m.attrs!=m.type.defaultAttrs?m.attrs:null),a=m.content}let s=t.someProp("clipboardSerializer")||zn.fromSchema(t.state.schema),o=yk(),l=o.createElement("div");l.appendChild(s.serializeFragment(a,{document:o}));let c=l.firstChild,u,p=0;for(;c&&c.nodeType==1&&(u=bk[c.nodeName.toLowerCase()]);){for(let m=u.length-1;m>=0;m--){let h=o.createElement(u[m]);for(;l.firstChild;)h.appendChild(l.firstChild);l.appendChild(h),p++}c=l.firstChild}c&&c.nodeType==1&&c.setAttribute("data-pm-slice",`${r} ${i}${p?` -${p}`:""} ${JSON.stringify(n)}`);let d=t.someProp("clipboardTextSerializer",m=>m(e,t))||e.content.textBetween(0,e.content.size,` +`),r;function i(s){return a.stack.push(s),o;function o(){a.stack.pop()}}}function Y6(t){throw new Error("Cannot handle value `"+t+"`, expected node")}function Q6(t){let e=t;throw new Error("Cannot handle unknown node `"+e.type+"`")}function e7(t,e){if(t.type==="definition"&&t.type===e.type)return 0}function t7(t,e){return Jy(t,this,e)}function n7(t,e){return Yy(t,this,e)}function a7(t,e){return t1(this,t,e)}function Vi(t){let e=this;e.compiler=n;function n(a){return em(a,{...e.data("settings"),...t,extensions:e.data("toMarkdownExtensions")||[]})}}function tm(t){if(t)throw t}var Tc=Z5(p1(),1);function mo(t){if(typeof t!="object"||t===null)return!1;let e=Object.getPrototypeOf(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Symbol.toStringTag in t)&&!(Symbol.iterator in t)}function nm(){let t=[],e={run:n,use:a};return e;function n(...r){let i=-1,s=r.pop();if(typeof s!="function")throw new TypeError("Expected function as last argument, not "+s);o(null,...r);function o(l,...c){let u=t[++i],p=-1;if(l){s(l);return}for(;++ps.length,l;o&&s.push(r);try{l=t.apply(this,s)}catch(c){let u=c;if(o&&n)throw u;return r(u)}o||(l&&l.then&&typeof l.then=="function"?l.then(i,r):l instanceof Error?r(l):i(l))}function r(s,...o){n||(n=!0,e(s,...o))}function i(s){r(null,s)}}var pt=class extends Error{constructor(e,n,a){super(),typeof n=="string"&&(a=n,n=void 0);let r="",i={},s=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?r=e:!i.cause&&e&&(s=!0,r=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof a=="string"){let l=a.indexOf(":");l===-1?i.ruleId=a:(i.source=a.slice(0,l),i.ruleId=a.slice(l+1))}if(!i.place&&i.ancestors&&i.ancestors){let l=i.ancestors[i.ancestors.length-1];l&&(i.place=l.position)}let o=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file="",this.message=r,this.line=o?o.line:void 0,this.name=Xa(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=s&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};pt.prototype.file="";pt.prototype.name="";pt.prototype.reason="";pt.prototype.message="";pt.prototype.stack="";pt.prototype.column=void 0;pt.prototype.line=void 0;pt.prototype.ancestors=void 0;pt.prototype.cause=void 0;pt.prototype.fatal=void 0;pt.prototype.place=void 0;pt.prototype.ruleId=void 0;pt.prototype.source=void 0;var Rn={basename:r7,dirname:i7,extname:s7,join:o7,sep:"/"};function r7(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');ho(t);let n=0,a=-1,r=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;r--;)if(t.codePointAt(r)===47){if(i){n=r+1;break}}else a<0&&(i=!0,a=r+1);return a<0?"":t.slice(n,a)}if(e===t)return"";let s=-1,o=e.length-1;for(;r--;)if(t.codePointAt(r)===47){if(i){n=r+1;break}}else s<0&&(i=!0,s=r+1),o>-1&&(t.codePointAt(r)===e.codePointAt(o--)?o<0&&(a=r):(o=-1,a=s));return n===a?a=s:a<0&&(a=t.length),t.slice(n,a)}function i7(t){if(ho(t),t.length===0)return".";let e=-1,n=t.length,a;for(;--n;)if(t.codePointAt(n)===47){if(a){e=n;break}}else a||(a=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function s7(t){ho(t);let e=t.length,n=-1,a=0,r=-1,i=0,s;for(;e--;){let o=t.codePointAt(e);if(o===47){if(s){a=e+1;break}continue}n<0&&(s=!0,n=e+1),o===46?r<0?r=e:i!==1&&(i=1):r>-1&&(i=-1)}return r<0||n<0||i===0||i===1&&r===n-1&&r===a+1?"":t.slice(r,n)}function o7(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function c7(t,e){let n="",a=0,r=-1,i=0,s=-1,o,l;for(;++s<=t.length;){if(s2){if(l=n.lastIndexOf("/"),l!==n.length-1){l<0?(n="",a=0):(n=n.slice(0,l),a=n.length-1-n.lastIndexOf("/")),r=s,i=0;continue}}else if(n.length>0){n="",a=0,r=s,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",a=2)}else n.length>0?n+="/"+t.slice(r+1,s):n=t.slice(r+1,s),a=s-r-1;r=s,i=0}else o===46&&i>-1?i++:i=-1}return n}function ho(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}var m1={cwd:u7};function u7(){return"/"}function Wi(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function h1(t){if(typeof t=="string")t=new URL(t);else if(!Wi(t)){let e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){let e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return p7(t)}function p7(t){if(t.hostname!==""){let a=new TypeError('File URL host must be "localhost" or empty on darwin');throw a.code="ERR_INVALID_FILE_URL_HOST",a}let e=t.pathname,n=-1;for(;++n0){let[m,...h]=u,b=a[d][1];mo(b)&&mo(m)&&(m=(0,Tc.default)(!0,b,m)),a[d]=[c,m,...h]}}}},go=new cm().freeze();function sm(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function om(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function lm(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function b1(t){if(!mo(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function y1(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function Ac(t){return h7(t)?t:new fo(t)}function h7(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function f7(t){return typeof t=="string"||g7(t)}function g7(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}function St(t){this.content=t}St.prototype={constructor:St,find:function(t){for(var e=0;e>1}};St.from=function(t){if(t instanceof St)return t;var e=[];if(t)for(var n in t)e.push(n,t[n]);return new St(e)};var um=St;function E1(t,e,n){for(let a=0;;a++){if(a==t.childCount||a==e.childCount)return t.childCount==e.childCount?null:n;let r=t.child(a),i=e.child(a);if(r==i){n+=r.nodeSize;continue}if(!r.sameMarkup(i))return n;if(r.isText&&r.text!=i.text){for(let s=0;r.text[s]==i.text[s];s++)n++;return n}if(r.content.size||i.content.size){let s=E1(r.content,i.content,n+1);if(s!=null)return s}n+=r.nodeSize}}function A1(t,e,n,a){for(let r=t.childCount,i=e.childCount;;){if(r==0||i==0)return r==i?null:{a:n,b:a};let s=t.child(--r),o=e.child(--i),l=s.nodeSize;if(s==o){n-=l,a-=l;continue}if(!s.sameMarkup(o))return{a:n,b:a};if(s.isText&&s.text!=o.text){let c=0,u=Math.min(s.text.length,o.text.length);for(;ce&&a(l,r+o,i||null,s)!==!1&&l.content.size){let u=o+1;l.nodesBetween(Math.max(0,e-u),Math.min(l.content.size,n-u),a,r+u)}o=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,n,a,r){let i="",s=!0;return this.nodesBetween(e,n,(o,l)=>{let c=o.isText?o.text.slice(Math.max(e,l)-l,n-l):o.isLeaf?r?typeof r=="function"?r(o):r:o.type.spec.leafText?o.type.spec.leafText(o):"":"";o.isBlock&&(o.isLeaf&&c||o.isTextblock)&&a&&(s?s=!1:i+=a),i+=c},0),i}append(e){if(!e.size)return this;if(!this.size)return e;let n=this.lastChild,a=e.firstChild,r=this.content.slice(),i=0;for(n.isText&&n.sameMarkup(a)&&(r[r.length-1]=n.withText(n.text+a.text),i=1);ie)for(let i=0,s=0;se&&((sn)&&(o.isText?o=o.cut(Math.max(0,e-s),Math.min(o.text.length,n-s)):o=o.cut(Math.max(0,e-s-1),Math.min(o.content.size,n-s-1))),a.push(o),r+=o.nodeSize),s=l}return new t(a,r)}cutByIndex(e,n){return e==n?t.empty:e==0&&n==this.content.length?this:new t(this.content.slice(e,n))}replaceChild(e,n){let a=this.content[e];if(a==n)return this;let r=this.content.slice(),i=this.size+n.nodeSize-a.nodeSize;return r[e]=n,new t(r,i)}addToStart(e){return new t([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new t(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let n=0;nthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let n=0,a=0;;n++){let r=this.child(n),i=a+r.nodeSize;if(i>=e)return i==e?Mc(n+1,i):Mc(n,a);a=i}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,n){if(!n)return t.empty;if(!Array.isArray(n))throw new RangeError("Invalid input for Fragment.fromJSON");return new t(n.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return t.empty;let n,a=0;for(let r=0;rthis.type.rank&&(n||(n=e.slice(0,r)),n.push(this),a=!0),n&&n.push(i)}}return n||(n=e.slice()),a||n.push(this),n}removeFromSet(e){for(let n=0;na.type.rank-r.type.rank),n}};xe.none=[];var Ur=class extends Error{},V=class t{constructor(e,n,a){this.content=e,this.openStart=n,this.openEnd=a}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,n){let a=M1(this.content,e+this.openStart,n);return a&&new t(a,this.openStart,this.openEnd)}removeBetween(e,n){return new t(T1(this.content,e+this.openStart,n+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,n){if(!n)return t.empty;let a=n.openStart||0,r=n.openEnd||0;if(typeof a!="number"||typeof r!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new t(B.fromJSON(e,n.content),a,r)}static maxOpen(e,n=!0){let a=0,r=0;for(let i=e.firstChild;i&&!i.isLeaf&&(n||!i.type.spec.isolating);i=i.firstChild)a++;for(let i=e.lastChild;i&&!i.isLeaf&&(n||!i.type.spec.isolating);i=i.lastChild)r++;return new t(e,a,r)}};V.empty=new V(B.empty,0,0);function T1(t,e,n){let{index:a,offset:r}=t.findIndex(e),i=t.maybeChild(a),{index:s,offset:o}=t.findIndex(n);if(r==e||i.isText){if(o!=n&&!t.child(s).isText)throw new RangeError("Removing non-flat range");return t.cut(0,e).append(t.cut(n))}if(a!=s)throw new RangeError("Removing non-flat range");return t.replaceChild(a,i.copy(T1(i.content,e-r-1,n-r-1)))}function M1(t,e,n,a){let{index:r,offset:i}=t.findIndex(e),s=t.maybeChild(r);if(i==e||s.isText)return a&&!a.canReplace(r,r,n)?null:t.cut(0,e).append(n).append(t.cut(e));let o=M1(s.content,e-i-1,n,s);return o&&t.replaceChild(r,s.copy(o))}function b7(t,e,n){if(n.openStart>t.depth)throw new Ur("Inserted content deeper than insertion position");if(t.depth-n.openStart!=e.depth-n.openEnd)throw new Ur("Inconsistent open depths");return N1(t,e,n,0)}function N1(t,e,n,a){let r=t.index(a),i=t.node(a);if(r==e.index(a)&&a=0&&t.isText&&t.sameMarkup(e[n])?e[n]=t.withText(e[n].text+t.text):e.push(t)}function bo(t,e,n,a){let r=(e||t).node(n),i=0,s=e?e.index(n):r.childCount;t&&(i=t.index(n),t.depth>n?i++:t.textOffset&&(Vr(t.nodeAfter,a),i++));for(let o=i;or&&mm(t,e,r+1),s=a.depth>r&&mm(n,a,r+1),o=[];return bo(null,t,r,o),i&&s&&e.index(r)==n.index(r)?(I1(i,s),Vr(Wr(i,R1(t,e,n,a,r+1)),o)):(i&&Vr(Wr(i,Rc(t,e,r+1)),o),bo(e,n,r,o),s&&Vr(Wr(s,Rc(n,a,r+1)),o)),bo(a,null,r,o),new B(o)}function Rc(t,e,n){let a=[];if(bo(null,t,n,a),t.depth>n){let r=mm(t,e,n+1);Vr(Wr(r,Rc(t,e,n+1)),a)}return bo(e,null,n,a),new B(a)}function y7(t,e){let n=e.depth-t.openStart,r=e.node(n).copy(t.content);for(let i=n-1;i>=0;i--)r=e.node(i).copy(B.from(r));return{start:r.resolveNoCache(t.openStart+n),end:r.resolveNoCache(r.content.size-t.openEnd-n)}}var zc=class t{constructor(e,n,a){this.pos=e,this.path=n,this.parentOffset=a,this.depth=n.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,n=this.index(this.depth);if(n==e.childCount)return null;let a=this.pos-this.path[this.path.length-1],r=e.child(n);return a?e.child(n).cut(a):r}get nodeBefore(){let e=this.index(this.depth),n=this.pos-this.path[this.path.length-1];return n?this.parent.child(e).cut(0,n):e==0?null:this.parent.child(e-1)}posAtIndex(e,n){n=this.resolveDepth(n);let a=this.path[n*3],r=n==0?0:this.path[n*3-1]+1;for(let i=0;i0;n--)if(this.start(n)<=e&&this.end(n)>=e)return n;return 0}blockRange(e=this,n){if(e.pos=0;a--)if(e.pos<=this.end(a)&&(!n||n(this.node(a))))return new xo(this,e,a);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&n<=e.content.size))throw new RangeError("Position "+n+" out of range");let a=[],r=0,i=n;for(let s=e;;){let{index:o,offset:l}=s.content.findIndex(i),c=i-l;if(a.push(s,o,r+l),!c||(s=s.child(o),s.isText))break;i=c-1,r+=l+1}return new t(n,a,i)}static resolveCached(e,n){let a=x1.get(e);if(a)for(let i=0;ie&&this.nodesBetween(e,n,i=>(a.isInSet(i.marks)&&(r=!0),!r)),r}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),z1(this.marks,e)}contentMatchAt(e){let n=this.type.contentMatch.matchFragment(this.content,0,e);if(!n)throw new Error("Called contentMatchAt on a node with invalid content");return n}canReplace(e,n,a=B.empty,r=0,i=a.childCount){let s=this.contentMatchAt(e).matchFragment(a,r,i),o=s&&s.matchFragment(this.content,n);if(!o||!o.validEnd)return!1;for(let l=r;ln.type.name)}`);this.content.forEach(n=>n.check())}toJSON(){let e={type:this.type.name};for(let n in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(n=>n.toJSON())),e}static fromJSON(e,n){if(!n)throw new RangeError("Invalid input for Node.fromJSON");let a;if(n.marks){if(!Array.isArray(n.marks))throw new RangeError("Invalid mark data for Node.fromJSON");a=n.marks.map(e.markFromJSON)}if(n.type=="text"){if(typeof n.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(n.text,a)}let r=B.fromJSON(e,n.content),i=e.nodeType(n.type).create(n.attrs,r,a);return i.type.checkAttrs(i.attrs),i}};Kt.prototype.text=void 0;var fm=class t extends Kt{constructor(e,n,a,r){if(super(e,n,null,r),!a)throw new RangeError("Empty text nodes are not allowed");this.text=a}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):z1(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,n){return this.text.slice(e,n)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new t(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new t(this.type,this.attrs,e,this.marks)}cut(e=0,n=this.text.length){return e==0&&n==this.text.length?this:this.withText(this.text.slice(e,n))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}};function z1(t,e){for(let n=t.length-1;n>=0;n--)e=t[n].type.name+"("+e+")";return e}var Kr=class t{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,n){let a=new gm(e,n);if(a.next==null)return t.empty;let r=O1(a);a.next&&a.err("Unexpected trailing text");let i=S7(j7(r));return E7(i,a),i}matchType(e){for(let n=0;nc.createAndFill()));for(let c=0;c=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function n(a){e.push(a);for(let r=0;r{let i=r+(a.validEnd?"*":" ")+" ";for(let s=0;s"+e.indexOf(a.next[s].next);return i}).join(` +`)}};Kr.empty=new Kr(!0);var gm=class{constructor(e,n){this.string=e,this.nodeTypes=n,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}};function O1(t){let e=[];do e.push(k7(t));while(t.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function k7(t){let e=[];do e.push(_7(t));while(t.next&&t.next!=")"&&t.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function _7(t){let e=C7(t);for(;;)if(t.eat("+"))e={type:"plus",expr:e};else if(t.eat("*"))e={type:"star",expr:e};else if(t.eat("?"))e={type:"opt",expr:e};else if(t.eat("{"))e=v7(t,e);else break;return e}function w1(t){/\D/.test(t.next)&&t.err("Expected number, got '"+t.next+"'");let e=Number(t.next);return t.pos++,e}function v7(t,e){let n=w1(t),a=n;return t.eat(",")&&(t.next!="}"?a=w1(t):a=-1),t.eat("}")||t.err("Unclosed braced range"),{type:"range",min:n,max:a,expr:e}}function $7(t,e){let n=t.nodeTypes,a=n[e];if(a)return[a];let r=[];for(let i in n){let s=n[i];s.isInGroup(e)&&r.push(s)}return r.length==0&&t.err("No node type or group '"+e+"' found"),r}function C7(t){if(t.eat("(")){let e=O1(t);return t.eat(")")||t.err("Missing closing paren"),e}else if(/\W/.test(t.next))t.err("Unexpected token '"+t.next+"'");else{let e=$7(t,t.next).map(n=>(t.inline==null?t.inline=n.isInline:t.inline!=n.isInline&&t.err("Mixing inline and block content"),{type:"name",value:n}));return t.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function j7(t){let e=[[]];return r(i(t,0),n()),e;function n(){return e.push([])-1}function a(s,o,l){let c={term:l,to:o};return e[s].push(c),c}function r(s,o){s.forEach(l=>l.to=o)}function i(s,o){if(s.type=="choice")return s.exprs.reduce((l,c)=>l.concat(i(c,o)),[]);if(s.type=="seq")for(let l=0;;l++){let c=i(s.exprs[l],o);if(l==s.exprs.length-1)return c;r(c,o=n())}else if(s.type=="star"){let l=n();return a(o,l),r(i(s.expr,l),l),[a(l)]}else if(s.type=="plus"){let l=n();return r(i(s.expr,o),l),r(i(s.expr,l),l),[a(l)]}else{if(s.type=="opt")return[a(o)].concat(i(s.expr,o));if(s.type=="range"){let l=o;for(let c=0;c{t[s].forEach(({term:o,to:l})=>{if(!o)return;let c;for(let u=0;u{c||r.push([o,c=[]]),c.indexOf(u)==-1&&c.push(u)})})});let i=e[a.join(",")]=new Kr(a.indexOf(t.length-1)>-1);for(let s=0;s-1}get whitespace(){return this.spec.whitespace||(this.spec.code?"pre":"normal")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:D1(this.attrs,e)}create(e=null,n,a){if(this.isText)throw new Error("NodeType.create can't construct text nodes");return new Kt(this,this.computeAttrs(e),B.from(n),xe.setFrom(a))}createChecked(e=null,n,a){return n=B.from(n),this.checkContent(n),new Kt(this,this.computeAttrs(e),n,xe.setFrom(a))}createAndFill(e=null,n,a){if(e=this.computeAttrs(e),n=B.from(n),n.size){let s=this.contentMatch.fillBefore(n);if(!s)return null;n=s.append(n)}let r=this.contentMatch.matchFragment(n),i=r&&r.fillBefore(B.empty,!0);return i?new Kt(this,e,n.append(i),xe.setFrom(a)):null}validContent(e){let n=this.contentMatch.matchFragment(e);if(!n||!n.validEnd)return!1;for(let a=0;a-1}allowsMarks(e){if(this.markSet==null)return!0;for(let n=0;na[i]=new t(i,n,s));let r=n.spec.topNode||"doc";if(!a[r])throw new RangeError("Schema is missing its top node type ('"+r+"')");if(!a.text)throw new RangeError("Every schema needs a 'text' type");for(let i in a.text.attrs)throw new RangeError("The text node type should not have attributes");return a}};function A7(t,e,n){let a=n.split("|");return r=>{let i=r===null?"null":typeof r;if(a.indexOf(i)<0)throw new RangeError(`Expected value of type ${a} for attribute ${e} on type ${t}, got ${i}`)}}var bm=class{constructor(e,n,a){this.hasDefault=Object.prototype.hasOwnProperty.call(a,"default"),this.default=a.default,this.validate=typeof a.validate=="string"?A7(e,n,a.validate):a.validate}get isRequired(){return!this.hasDefault}},ko=class t{constructor(e,n,a,r){this.name=e,this.rank=n,this.schema=a,this.spec=r,this.attrs=P1(e,r.attrs),this.excluded=null;let i=L1(this.attrs);this.instance=i?new xe(this,i):null}create(e=null){return!e&&this.instance?this.instance:new xe(this,D1(this.attrs,e))}static compile(e,n){let a=Object.create(null),r=0;return e.forEach((i,s)=>a[i]=new t(i,r++,n,s)),a}removeFromSet(e){for(var n=0;n-1}},Oc=class{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let n=this.spec={};for(let r in e)n[r]=e[r];n.nodes=um.from(e.nodes),n.marks=um.from(e.marks||{}),this.nodes=wo.compile(this.spec.nodes,this),this.marks=ko.compile(this.spec.marks,this);let a=Object.create(null);for(let r in this.nodes){if(r in this.marks)throw new RangeError(r+" can not be both a node and a mark");let i=this.nodes[r],s=i.spec.content||"",o=i.spec.marks;if(i.contentMatch=a[s]||(a[s]=Kr.parse(s,this.nodes)),i.inlineContent=i.contentMatch.inlineContent,i.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError("Multiple linebreak nodes defined");if(!i.isInline||!i.isLeaf)throw new RangeError("Linebreak replacement nodes must be inline leaf nodes");this.linebreakReplacement=i}i.markSet=o=="_"?null:o?_1(this,o.split(" ")):o==""||!i.inlineContent?[]:null}for(let r in this.marks){let i=this.marks[r],s=i.spec.excludes;i.excluded=s==null?[i]:s==""?[]:_1(this,s.split(" "))}this.nodeFromJSON=r=>Kt.fromJSON(this,r),this.markFromJSON=r=>xe.fromJSON(this,r),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,n=null,a,r){if(typeof e=="string")e=this.nodeType(e);else if(e instanceof wo){if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}else throw new RangeError("Invalid node type: "+e);return e.createChecked(n,a,r)}text(e,n){let a=this.nodes.text;return new fm(a,a.defaultAttrs,e,xe.setFrom(n))}mark(e,n){return typeof e=="string"&&(e=this.marks[e]),e.create(n)}nodeType(e){let n=this.nodes[e];if(!n)throw new RangeError("Unknown node type: "+e);return n}};function _1(t,e){let n=[];for(let a=0;a-1)&&n.push(s=l)}if(!s)throw new SyntaxError("Unknown mark type: '"+e[a]+"'")}return n}function T7(t){return t.tag!=null}function M7(t){return t.style!=null}var zn=class t{constructor(e,n){this.schema=e,this.rules=n,this.tags=[],this.styles=[];let a=this.matchedStyles=[];n.forEach(r=>{if(T7(r))this.tags.push(r);else if(M7(r)){let i=/[^=]*/.exec(r.style)[0];a.indexOf(i)<0&&a.push(i),this.styles.push(r)}}),this.normalizeLists=!this.tags.some(r=>{if(!/^(ul|ol)\b/.test(r.tag)||!r.node)return!1;let i=e.nodes[r.node];return i.contentMatch.matchType(i)})}parse(e,n={}){let a=new Bc(this,n,!1);return a.addAll(e,xe.none,n.from,n.to),a.finish()}parseSlice(e,n={}){let a=new Bc(this,n,!0);return a.addAll(e,xe.none,n.from,n.to),V.maxOpen(a.finish())}matchTag(e,n,a){for(let r=a?this.tags.indexOf(a)+1:0;re.length&&(o.charCodeAt(e.length)!=61||o.slice(e.length+1)!=n))){if(s.getAttrs){let l=s.getAttrs(n);if(l===!1)continue;s.attrs=l||void 0}return s}}}static schemaRules(e){let n=[];function a(r){let i=r.priority==null?50:r.priority,s=0;for(;s{a(s=$1(s)),s.mark||s.ignore||s.clearMark||(s.mark=r)})}for(let r in e.nodes){let i=e.nodes[r].spec.parseDOM;i&&i.forEach(s=>{a(s=$1(s)),s.node||s.ignore||s.mark||(s.node=r)})}return n}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new t(e,t.schemaRules(e)))}},q1={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},N7={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},G1={ol:!0,ul:!0},_o=1,ym=2,yo=4;function v1(t,e,n){return e!=null?(e?_o:0)|(e==="full"?ym:0):t&&t.whitespace=="pre"?_o|ym:n&~yo}var Ui=class{constructor(e,n,a,r,i,s){this.type=e,this.attrs=n,this.marks=a,this.solid=r,this.options=s,this.content=[],this.activeMarks=xe.none,this.match=i||(s&yo?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let n=this.type.contentMatch.fillBefore(B.from(e));if(n)this.match=this.type.contentMatch.matchFragment(n);else{let a=this.type.contentMatch,r;return(r=a.findWrapping(e.type))?(this.match=a,r):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&_o)){let a=this.content[this.content.length-1],r;if(a&&a.isText&&(r=/[ \t\r\n\u000c]+$/.exec(a.text))){let i=a;a.text.length==r[0].length?this.content.pop():this.content[this.content.length-1]=i.withText(i.text.slice(0,i.text.length-r[0].length))}}let n=B.from(this.content);return!e&&this.match&&(n=n.append(this.match.fillBefore(B.empty,!0))),this.type?this.type.create(this.attrs,n,this.marks):n}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!q1.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}},Bc=class{constructor(e,n,a){this.parser=e,this.options=n,this.isOpen=a,this.open=0,this.localPreserveWS=!1;let r=n.topNode,i,s=v1(null,n.preserveWhitespace,0)|(a?yo:0);r?i=new Ui(r.type,r.attrs,xe.none,!0,n.topMatch||r.type.contentMatch,s):a?i=new Ui(null,null,xe.none,!0,null,s):i=new Ui(e.schema.topNodeType,null,xe.none,!0,null,s),this.nodes=[i],this.find=n.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,n){e.nodeType==3?this.addTextNode(e,n):e.nodeType==1&&this.addElement(e,n)}addTextNode(e,n){let a=e.nodeValue,r=this.top,i=r.options&ym?"full":this.localPreserveWS||(r.options&_o)>0,{schema:s}=this.parser;if(i==="full"||r.inlineContext(e)||/[^ \t\r\n\u000c]/.test(a)){if(i)if(i==="full")a=a.replace(/\r\n?/g,` +`);else if(s.linebreakReplacement&&/[\r\n]/.test(a)&&this.top.findWrapping(s.linebreakReplacement.create())){let o=a.split(/\r?\n|\r/);for(let l=0;l!l.clearMark(c)):n=n.concat(this.parser.schema.marks[l.mark].create(l.attrs)),l.consuming===!1)o=l;else break}}return n}addElementByRule(e,n,a,r){let i,s;if(n.node)if(s=this.parser.schema.nodes[n.node],s.isLeaf)this.insertNode(s.create(n.attrs),a,e.nodeName=="BR")||this.leafFallback(e,a);else{let l=this.enter(s,n.attrs||null,a,n.preserveWhitespace);l&&(i=!0,a=l)}else{let l=this.parser.schema.marks[n.mark];a=a.concat(l.create(n.attrs))}let o=this.top;if(s&&s.isLeaf)this.findInside(e);else if(r)this.addElement(e,a,r);else if(n.getContent)this.findInside(e),n.getContent(e,this.parser.schema).forEach(l=>this.insertNode(l,a,!1));else{let l=e;typeof n.contentElement=="string"?l=e.querySelector(n.contentElement):typeof n.contentElement=="function"?l=n.contentElement(e):n.contentElement&&(l=n.contentElement),this.findAround(e,l,!0),this.addAll(l,a),this.findAround(e,l,!1)}i&&this.sync(o)&&this.open--}addAll(e,n,a,r){let i=a||0;for(let s=a?e.childNodes[a]:e.firstChild,o=r==null?null:e.childNodes[r];s!=o;s=s.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(s,n);this.findAtPoint(e,i)}findPlace(e,n,a){let r,i;for(let s=this.open,o=0;s>=0;s--){let l=this.nodes[s],c=l.findWrapping(e);if(c&&(!r||r.length>c.length+o)&&(r=c,i=l,!c.length))break;if(l.solid){if(a)break;o+=2}}if(!r)return null;this.sync(i);for(let s=0;s(s.type?s.type.allowsMarkType(c.type):C1(c.type,e))?(l=c.addToSet(l),!1):!0),this.nodes.push(new Ui(e,n,l,r,null,o)),this.open++,a}closeExtra(e=!1){let n=this.nodes.length-1;if(n>this.open){for(;n>this.open;n--)this.nodes[n-1].content.push(this.nodes[n].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let n=this.open;n>=0;n--){if(this.nodes[n]==e)return this.open=n,!0;this.localPreserveWS&&(this.nodes[n].options|=_o)}return!1}get currentPos(){this.closeExtra();let e=0;for(let n=this.open;n>=0;n--){let a=this.nodes[n].content;for(let r=a.length-1;r>=0;r--)e+=a[r].nodeSize;n&&e++}return e}findAtPoint(e,n){if(this.find)for(let a=0;a-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let n=e.split("/"),a=this.options.context,r=!this.isOpen&&(!a||a.parent.type==this.nodes[0].type),i=-(a?a.depth+1:0)+(r?0:1),s=(o,l)=>{for(;o>=0;o--){let c=n[o];if(c==""){if(o==n.length-1||o==0)continue;for(;l>=i;l--)if(s(o-1,l))return!0;return!1}else{let u=l>0||l==0&&r?this.nodes[l].type:a&&l>=i?a.node(l-i).type:null;if(!u||u.name!=c&&!u.isInGroup(c))return!1;l--}}return!0};return s(n.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let n=e.depth;n>=0;n--){let a=e.node(n).contentMatchAt(e.indexAfter(n)).defaultType;if(a&&a.isTextblock&&a.defaultAttrs)return a}for(let n in this.parser.schema.nodes){let a=this.parser.schema.nodes[n];if(a.isTextblock&&a.defaultAttrs)return a}}};function I7(t){for(let e=t.firstChild,n=null;e;e=e.nextSibling){let a=e.nodeType==1?e.nodeName.toLowerCase():null;a&&G1.hasOwnProperty(a)&&n?(n.appendChild(e),e=n):a=="li"?n=e:a&&(n=null)}}function R7(t,e){return(t.matches||t.msMatchesSelector||t.webkitMatchesSelector||t.mozMatchesSelector).call(t,e)}function $1(t){let e={};for(let n in t)e[n]=t[n];return e}function C1(t,e){let n=e.schema.nodes;for(let a in n){let r=n[a];if(!r.allowsMarkType(t))continue;let i=[],s=o=>{i.push(o);for(let l=0;l{if(i.length||s.marks.length){let o=0,l=0;for(;o=0;r--){let i=this.serializeMark(e.marks[r],e.isInline,n);i&&((i.contentDOM||i.dom).appendChild(a),a=i.dom)}return a}serializeMark(e,n,a={}){let r=this.marks[e.type.name];return r&&Nc(dm(a),r(e,n),null,e.attrs)}static renderSpec(e,n,a=null,r){return Nc(e,n,a,r)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new t(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let n=j1(e.nodes);return n.text||(n.text=a=>a.text),n}static marksFromSchema(e){return j1(e.marks)}};function j1(t){let e={};for(let n in t){let a=t[n].spec.toDOM;a&&(e[n]=a)}return e}function dm(t){return t.document||window.document}var S1=new WeakMap;function z7(t){let e=S1.get(t);return e===void 0&&S1.set(t,e=O7(t)),e}function O7(t){let e=null;function n(a){if(a&&typeof a=="object")if(Array.isArray(a))if(typeof a[0]=="string")e||(e=[]),e.push(a);else for(let r=0;r-1)throw new RangeError("Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.");let s=r.indexOf(" ");s>0&&(n=r.slice(0,s),r=r.slice(s+1));let o,l=n?t.createElementNS(n,r):t.createElement(r),c=e[1],u=1;if(c&&typeof c=="object"&&c.nodeType==null&&!Array.isArray(c)){u=2;for(let p in c)if(c[p]!=null){let d=p.indexOf(" ");d>0?l.setAttributeNS(p.slice(0,d),p.slice(d+1),c[p]):p=="style"&&l.style?l.style.cssText=c[p]:l.setAttribute(p,c[p])}}for(let p=u;pu)throw new RangeError("Content hole must be the only child of its parent node");return{dom:l,contentDOM:l}}else{let{dom:m,contentDOM:h}=Nc(t,d,n,a);if(l.appendChild(m),h){if(o)throw new RangeError("Multiple content holes");o=h}}}return{dom:l,contentDOM:o}}var W1=65535,U1=Math.pow(2,16);function B7(t,e){return t+e*U1}function H1(t){return t&W1}function L7(t){return(t-(t&W1))/U1}var K1=1,X1=2,Lc=4,Z1=8,Co=class{constructor(e,n,a){this.pos=e,this.delInfo=n,this.recover=a}get deleted(){return(this.delInfo&Z1)>0}get deletedBefore(){return(this.delInfo&(K1|Lc))>0}get deletedAfter(){return(this.delInfo&(X1|Lc))>0}get deletedAcross(){return(this.delInfo&Lc)>0}},fa=class t{constructor(e,n=!1){if(this.ranges=e,this.inverted=n,!e.length&&t.empty)return t.empty}recover(e){let n=0,a=H1(e);if(!this.inverted)for(let r=0;re)break;let c=this.ranges[o+i],u=this.ranges[o+s],p=l+c;if(e<=p){let d=c?e==l?-1:e==p?1:n:n,m=l+r+(d<0?0:u);if(a)return m;let h=e==(n<0?l:p)?null:B7(o/3,e-l),b=e==l?X1:e==p?K1:Lc;return(n<0?e!=l:e!=p)&&(b|=Z1),new Co(m,b,h)}r+=u-c}return a?e+r:new Co(e+r,0,null)}touches(e,n){let a=0,r=H1(n),i=this.inverted?2:1,s=this.inverted?1:2;for(let o=0;oe)break;let c=this.ranges[o+i],u=l+c;if(e<=u&&o==r*3)return!0;a+=this.ranges[o+s]-c}return!1}forEach(e){let n=this.inverted?2:1,a=this.inverted?1:2;for(let r=0,i=0;r=0;n--){let r=e.getMirror(n);this.appendMap(e._maps[n].invert(),r!=null&&r>n?a-r-1:void 0)}}invert(){let e=new t;return e.appendMappingInverted(this),e}map(e,n=1){if(this.mirror)return this._map(e,n,!0);for(let a=this.from;ai&&l!s.isAtom||!o.type.allowsMarkType(this.mark.type)?s:s.mark(this.mark.addToSet(s.marks)),r),n.openStart,n.openEnd);return gt.fromReplace(e,this.from,this.to,i)}invert(){return new Zr(this.from,this.to,this.mark)}map(e){let n=e.mapResult(this.from,1),a=e.mapResult(this.to,-1);return n.deleted&&a.deleted||n.pos>=a.pos?null:new t(n.pos,a.pos,this.mark)}merge(e){return e instanceof t&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new t(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,n){if(typeof n.from!="number"||typeof n.to!="number")throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new t(n.from,n.to,e.markFromJSON(n.mark))}};dt.jsonID("addMark",Xr);var Zr=class t extends dt{constructor(e,n,a){super(),this.from=e,this.to=n,this.mark=a}apply(e){let n=e.slice(this.from,this.to),a=new V($m(n.content,r=>r.mark(this.mark.removeFromSet(r.marks)),e),n.openStart,n.openEnd);return gt.fromReplace(e,this.from,this.to,a)}invert(){return new Xr(this.from,this.to,this.mark)}map(e){let n=e.mapResult(this.from,1),a=e.mapResult(this.to,-1);return n.deleted&&a.deleted||n.pos>=a.pos?null:new t(n.pos,a.pos,this.mark)}merge(e){return e instanceof t&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new t(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,n){if(typeof n.from!="number"||typeof n.to!="number")throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new t(n.from,n.to,e.markFromJSON(n.mark))}};dt.jsonID("removeMark",Zr);var So=class t extends dt{constructor(e,n){super(),this.pos=e,this.mark=n}apply(e){let n=e.nodeAt(this.pos);if(!n)return gt.fail("No node at mark step's position");let a=n.type.create(n.attrs,null,this.mark.addToSet(n.marks));return gt.fromReplace(e,this.pos,this.pos+1,new V(B.from(a),0,n.isLeaf?0:1))}invert(e){let n=e.nodeAt(this.pos);if(n){let a=this.mark.addToSet(n.marks);if(a.length==n.marks.length){for(let r=0;ra.pos?null:new t(n.pos,a.pos,r,i,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,n){if(typeof n.from!="number"||typeof n.to!="number"||typeof n.gapFrom!="number"||typeof n.gapTo!="number"||typeof n.insert!="number")throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new t(n.from,n.to,n.gapFrom,n.gapTo,V.fromJSON(e,n.slice),n.insert,!!n.structure)}};dt.jsonID("replaceAround",yt);function _m(t,e,n){let a=t.resolve(e),r=n-e,i=a.depth;for(;r>0&&i>0&&a.indexAfter(i)==a.node(i).childCount;)i--,r--;if(r>0){let s=a.node(i).maybeChild(a.indexAfter(i));for(;r>0;){if(!s||s.isLeaf)return!0;s=s.firstChild,r--}}return!1}function D7(t,e,n,a){let r=[],i=[],s,o;t.doc.nodesBetween(e,n,(l,c,u)=>{if(!l.isInline)return;let p=l.marks;if(!a.isInSet(p)&&u.type.allowsMarkType(a.type)){let d=Math.max(c,e),m=Math.min(c+l.nodeSize,n),h=a.addToSet(p);for(let b=0;bt.step(l)),i.forEach(l=>t.step(l))}function F7(t,e,n,a){let r=[],i=0;t.doc.nodesBetween(e,n,(s,o)=>{if(!s.isInline)return;i++;let l=null;if(a instanceof ko){let c=s.marks,u;for(;u=a.isInSet(c);)(l||(l=[])).push(u),c=u.removeFromSet(c)}else a?a.isInSet(s.marks)&&(l=[a]):l=s.marks;if(l&&l.length){let c=Math.min(o+s.nodeSize,n);for(let u=0;ut.step(new Zr(s.from,s.to,s.style)))}function Cm(t,e,n,a=n.contentMatch,r=!0){let i=t.doc.nodeAt(e),s=[],o=e+1;for(let l=0;l=0;l--)t.step(s[l])}function P7(t,e,n){return(e==0||t.canReplace(e,t.childCount))&&(n==t.childCount||t.canReplace(0,n))}function Ji(t){let n=t.parent.content.cutByIndex(t.startIndex,t.endIndex);for(let a=t.depth,r=0,i=0;;--a){let s=t.$from.node(a),o=t.$from.index(a)+r,l=t.$to.indexAfter(a)-i;if(an;h--)b||a.index(h)>0?(b=!0,u=B.from(a.node(h).copy(u)),p++):l--;let d=B.empty,m=0;for(let h=i,b=!1;h>n;h--)b||r.after(h+1)=0;s--){if(a.size){let o=n[s].type.contentMatch.matchFragment(a);if(!o||!o.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}a=B.from(n[s].type.create(n[s].attrs,a))}let r=e.start,i=e.end;t.step(new yt(r,i,r,i,new V(a,0,0),n.length,!0))}function W7(t,e,n,a,r){if(!a.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let i=t.steps.length;t.doc.nodesBetween(e,n,(s,o)=>{let l=typeof r=="function"?r(s):r;if(s.isTextblock&&!s.hasMarkup(a,l)&&U7(t.doc,t.mapping.slice(i).map(o),a)){let c=null;if(a.schema.linebreakReplacement){let m=a.whitespace=="pre",h=!!a.contentMatch.matchType(a.schema.linebreakReplacement);m&&!h?c=!1:!m&&h&&(c=!0)}c===!1&&Y1(t,s,o,i),Cm(t,t.mapping.slice(i).map(o,1),a,void 0,c===null);let u=t.mapping.slice(i),p=u.map(o,1),d=u.map(o+s.nodeSize,1);return t.step(new yt(p,d,p+1,d-1,new V(B.from(a.create(l,null,s.marks)),0,0),1,!0)),c===!0&&J1(t,s,o,i),!1}})}function J1(t,e,n,a){e.forEach((r,i)=>{if(r.isText){let s,o=/\r?\n|\r/g;for(;s=o.exec(r.text);){let l=t.mapping.slice(a).map(n+1+i+s.index);t.replaceWith(l,l+1,e.type.schema.linebreakReplacement.create())}}})}function Y1(t,e,n,a){e.forEach((r,i)=>{if(r.type==r.type.schema.linebreakReplacement){let s=t.mapping.slice(a).map(n+1+i);t.replaceWith(s,s+1,e.type.schema.text(` +`))}})}function U7(t,e,n){let a=t.resolve(e),r=a.index();return a.parent.canReplaceWith(r,r+1,n)}function K7(t,e,n,a,r){let i=t.doc.nodeAt(e);if(!i)throw new RangeError("No node at given position");n||(n=i.type);let s=n.create(a,null,r||i.marks);if(i.isLeaf)return t.replaceWith(e,e+i.nodeSize,s);if(!n.validContent(i.content))throw new RangeError("Invalid content for node type "+n.name);t.step(new yt(e,e+i.nodeSize,e+1,e+i.nodeSize-1,new V(B.from(s),0,0),1,!0))}function Yr(t,e,n=1,a){let r=t.resolve(e),i=r.depth-n,s=a&&a[a.length-1]||r.parent;if(i<0||r.parent.type.spec.isolating||!r.parent.canReplace(r.index(),r.parent.childCount)||!s.type.validContent(r.parent.content.cutByIndex(r.index(),r.parent.childCount)))return!1;for(let c=r.depth-1,u=n-2;c>i;c--,u--){let p=r.node(c),d=r.index(c);if(p.type.spec.isolating)return!1;let m=p.content.cutByIndex(d,p.childCount),h=a&&a[u+1];h&&(m=m.replaceChild(0,h.type.create(h.attrs)));let b=a&&a[u]||p;if(!p.canReplace(d+1,p.childCount)||!b.type.validContent(m))return!1}let o=r.indexAfter(i),l=a&&a[0];return r.node(i).canReplaceWith(o,o,l?l.type:r.node(i+1).type)}function X7(t,e,n=1,a){let r=t.doc.resolve(e),i=B.empty,s=B.empty;for(let o=r.depth,l=r.depth-n,c=n-1;o>l;o--,c--){i=B.from(r.node(o).copy(i));let u=a&&a[c];s=B.from(u?u.type.create(u.attrs,s):r.node(o).copy(s))}t.step(new bt(e,e,new V(i.append(s),n,n),!0))}function Qr(t,e){let n=t.resolve(e),a=n.index();return J7(n.nodeBefore,n.nodeAfter)&&n.parent.canReplace(a,a+1)}function Z7(t,e){e.content.size||t.type.compatibleContent(e.type);let n=t.contentMatchAt(t.childCount),{linebreakReplacement:a}=t.type.schema;for(let r=0;r=0;r--){let i=a.index(r);if(a.node(r).canReplaceWith(i,i,n))return a.before(r+1);if(i>0)return null}if(a.parentOffset==a.parent.content.size)for(let r=a.depth-1;r>=0;r--){let i=a.indexAfter(r);if(a.node(r).canReplaceWith(i,i,n))return a.after(r+1);if(i=0;s--){let o=s==a.depth?0:a.pos<=(a.start(s+1)+a.end(s+1))/2?-1:1,l=a.index(s)+(o>0?1:0),c=a.node(s),u=!1;if(i==1)u=c.canReplace(l,l,r);else{let p=c.contentMatchAt(l).findWrapping(r.firstChild.type);u=p&&c.canReplaceWith(l,l,p[0])}if(u)return o==0?a.pos:o<0?a.before(s+1):a.after(s+1)}return null}function Eo(t,e,n=e,a=V.empty){if(e==n&&!a.size)return null;let r=t.resolve(e),i=t.resolve(n);return ex(r,i,a)?new bt(e,n,a):new vm(r,i,a).fit()}function ex(t,e,n){return!n.openStart&&!n.openEnd&&t.start()==e.start()&&t.parent.canReplace(t.index(),e.index(),n.content)}var vm=class{constructor(e,n,a){this.$from=e,this.$to=n,this.unplaced=a,this.frontier=[],this.placed=B.empty;for(let r=0;r<=e.depth;r++){let i=e.node(r);this.frontier.push({type:i.type,match:i.contentMatchAt(e.indexAfter(r))})}for(let r=e.depth;r>0;r--)this.placed=B.from(e.node(r).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let c=this.findFittable();c?this.placeNodes(c):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),n=this.placed.size-this.depth-this.$from.depth,a=this.$from,r=this.close(e<0?this.$to:a.doc.resolve(e));if(!r)return null;let i=this.placed,s=a.depth,o=r.depth;for(;s&&o&&i.childCount==1;)i=i.firstChild.content,s--,o--;let l=new V(i,s,o);return e>-1?new yt(a.pos,e,this.$to.pos,this.$to.end(),l,n):l.size||a.pos!=this.$to.pos?new bt(a.pos,r.pos,l):null}findFittable(){let e=this.unplaced.openStart;for(let n=this.unplaced.content,a=0,r=this.unplaced.openEnd;a1&&(r=0),i.type.spec.isolating&&r<=a){e=a;break}n=i.content}for(let n=1;n<=2;n++)for(let a=n==1?e:this.unplaced.openStart;a>=0;a--){let r,i=null;a?(i=wm(this.unplaced.content,a-1).firstChild,r=i.content):r=this.unplaced.content;let s=r.firstChild;for(let o=this.depth;o>=0;o--){let{type:l,match:c}=this.frontier[o],u,p=null;if(n==1&&(s?c.matchType(s.type)||(p=c.fillBefore(B.from(s),!1)):i&&l.compatibleContent(i.type)))return{sliceDepth:a,frontierDepth:o,parent:i,inject:p};if(n==2&&s&&(u=c.findWrapping(s.type)))return{sliceDepth:a,frontierDepth:o,parent:i,wrap:u};if(i&&c.matchType(i.type))break}}}openMore(){let{content:e,openStart:n,openEnd:a}=this.unplaced,r=wm(e,n);return!r.childCount||r.firstChild.isLeaf?!1:(this.unplaced=new V(e,n+1,Math.max(a,r.size+n>=e.size-a?n+1:0)),!0)}dropNode(){let{content:e,openStart:n,openEnd:a}=this.unplaced,r=wm(e,n);if(r.childCount<=1&&n>0){let i=e.size-n<=n+r.size;this.unplaced=new V(vo(e,n-1,1),n-1,i?n-1:a)}else this.unplaced=new V(vo(e,n,1),n,a)}placeNodes({sliceDepth:e,frontierDepth:n,parent:a,inject:r,wrap:i}){for(;this.depth>n;)this.closeFrontierNode();if(i)for(let b=0;b1||l==0||b.content.size)&&(p=y,u.push(tx(b.mark(d.allowedMarks(b.marks)),c==1?l:0,c==o.childCount?m:-1)))}let h=c==o.childCount;h||(m=-1),this.placed=$o(this.placed,n,B.from(u)),this.frontier[n].match=p,h&&m<0&&a&&a.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let b=0,y=o;b1&&r==this.$to.end(--a);)++r;return r}findCloseLevel(e){e:for(let n=Math.min(this.depth,e.depth);n>=0;n--){let{match:a,type:r}=this.frontier[n],i=n=0;o--){let{match:l,type:c}=this.frontier[o],u=km(e,o,c,l,!0);if(!u||u.childCount)continue e}return{depth:n,fit:s,move:i?e.doc.resolve(e.after(n+1)):e}}}}close(e){let n=this.findCloseLevel(e);if(!n)return null;for(;this.depth>n.depth;)this.closeFrontierNode();n.fit.childCount&&(this.placed=$o(this.placed,n.depth,n.fit)),e=n.move;for(let a=n.depth+1;a<=e.depth;a++){let r=e.node(a),i=r.type.contentMatch.fillBefore(r.content,!0,e.index(a));this.openFrontierNode(r.type,r.attrs,i)}return e}openFrontierNode(e,n=null,a){let r=this.frontier[this.depth];r.match=r.match.matchType(e),this.placed=$o(this.placed,this.depth,B.from(e.create(n,a))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let n=this.frontier.pop().match.fillBefore(B.empty,!0);n.childCount&&(this.placed=$o(this.placed,this.frontier.length,n))}};function vo(t,e,n){return e==0?t.cutByIndex(n,t.childCount):t.replaceChild(0,t.firstChild.copy(vo(t.firstChild.content,e-1,n)))}function $o(t,e,n){return e==0?t.append(n):t.replaceChild(t.childCount-1,t.lastChild.copy($o(t.lastChild.content,e-1,n)))}function wm(t,e){for(let n=0;n1&&(a=a.replaceChild(0,tx(a.firstChild,e-1,a.childCount==1?n-1:0))),e>0&&(a=t.type.contentMatch.fillBefore(a).append(a),n<=0&&(a=a.append(t.type.contentMatch.matchFragment(a).fillBefore(B.empty,!0)))),t.copy(a)}function km(t,e,n,a,r){let i=t.node(e),s=r?t.indexAfter(e):t.index(e);if(s==i.childCount&&!n.compatibleContent(i.type))return null;let o=a.fillBefore(i.content,!0,s);return o&&!eC(n,i.content,s)?o:null}function eC(t,e,n){for(let a=n;a0;d--,m--){let h=r.node(d).type.spec;if(h.defining||h.definingAsContext||h.isolating)break;s.indexOf(d)>-1?o=d:r.before(d)==m&&s.splice(1,0,-d)}let l=s.indexOf(o),c=[],u=a.openStart;for(let d=a.content,m=0;;m++){let h=d.firstChild;if(c.push(h),m==a.openStart)break;d=h.content}for(let d=u-1;d>=0;d--){let m=c[d],h=tC(m.type);if(h&&!m.sameMarkup(r.node(Math.abs(o)-1)))u=d;else if(h||!m.type.isTextblock)break}for(let d=a.openStart;d>=0;d--){let m=(d+u+1)%(a.openStart+1),h=c[m];if(h)for(let b=0;b=0&&(t.replace(e,n,a),!(t.steps.length>p));d--){let m=s[d];m<0||(e=r.before(m),n=i.after(m))}}function nx(t,e,n,a,r){if(ea){let i=r.contentMatchAt(0),s=i.fillBefore(t).append(t);t=s.append(i.matchFragment(s).fillBefore(B.empty,!0))}return t}function aC(t,e,n,a){if(!a.isInline&&e==n&&t.doc.resolve(e).parent.content.size){let r=Q7(t.doc,e,a.type);r!=null&&(e=n=r)}t.replaceRange(e,n,new V(B.from(a),0,0))}function rC(t,e,n){let a=t.doc.resolve(e),r=t.doc.resolve(n);if(a.parent.isTextblock&&r.parent.isTextblock&&a.start()!=r.start()&&a.parentOffset==0&&r.parentOffset==0){let s=a.sharedDepth(n),o=!1;for(let l=a.depth;l>s;l--)a.node(l).type.spec.isolating&&(o=!0);for(let l=r.depth;l>s;l--)r.node(l).type.spec.isolating&&(o=!0);if(!o){for(let l=a.depth;l>0&&e==a.start(l);l--)e=a.before(l);for(let l=r.depth;l>0&&n==r.start(l);l--)n=r.before(l);a=t.doc.resolve(e),r=t.doc.resolve(n)}}let i=ax(a,r);for(let s=0;s0&&(l||a.node(o-1).canReplace(a.index(o-1),r.indexAfter(o-1))))return t.delete(a.before(o),r.after(o))}for(let s=1;s<=a.depth&&s<=r.depth;s++)if(e-a.start(s)==a.depth-s&&n>a.end(s)&&r.end(s)-n!=r.depth-s&&a.start(s-1)==r.start(s-1)&&a.node(s-1).canReplace(a.index(s-1),r.index(s-1)))return t.delete(a.before(s),n);t.delete(e,n)}function ax(t,e){let n=[],a=Math.min(t.depth,e.depth);for(let r=a;r>=0;r--){let i=t.start(r);if(ie.pos+(e.depth-r)||t.node(r).type.spec.isolating||e.node(r).type.spec.isolating)break;(i==e.start(r)||r==t.depth&&r==e.depth&&t.parent.inlineContent&&e.parent.inlineContent&&r&&e.start(r-1)==i-1)&&n.push(r)}return n}var Dc=class t extends dt{constructor(e,n,a){super(),this.pos=e,this.attr=n,this.value=a}apply(e){let n=e.nodeAt(this.pos);if(!n)return gt.fail("No node at attribute step's position");let a=Object.create(null);for(let i in n.attrs)a[i]=n.attrs[i];a[this.attr]=this.value;let r=n.type.create(a,null,n.marks);return gt.fromReplace(e,this.pos,this.pos+1,new V(B.from(r),0,n.isLeaf?0:1))}getMap(){return fa.empty}invert(e){return new t(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let n=e.mapResult(this.pos,1);return n.deletedAfter?null:new t(n.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,n){if(typeof n.pos!="number"||typeof n.attr!="string")throw new RangeError("Invalid input for AttrStep.fromJSON");return new t(n.pos,n.attr,n.value)}};dt.jsonID("attr",Dc);var Fc=class t extends dt{constructor(e,n){super(),this.attr=e,this.value=n}apply(e){let n=Object.create(null);for(let r in e.attrs)n[r]=e.attrs[r];n[this.attr]=this.value;let a=e.type.create(n,e.content,e.marks);return gt.ok(a)}getMap(){return fa.empty}invert(e){return new t(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,n){if(typeof n.attr!="string")throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new t(n.attr,n.value)}};dt.jsonID("docAttr",Fc);var Xi=class extends Error{};Xi=function t(e){let n=Error.call(this,e);return n.__proto__=t.prototype,n};Xi.prototype=Object.create(Error.prototype);Xi.prototype.constructor=Xi;Xi.prototype.name="TransformError";var Zi=class{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new jo}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let n=this.maybeStep(e);if(n.failed)throw new Xi(n.failed);return this}maybeStep(e){let n=e.apply(this.doc);return n.failed||this.addStep(e,n.doc),n}get docChanged(){return this.steps.length>0}changedRange(){let e=1e9,n=-1e9;for(let a=0;a{e=Math.min(e,o),n=Math.max(n,l)})}return e==1e9?null:{from:e,to:n}}addStep(e,n){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=n}replace(e,n=e,a=V.empty){let r=Eo(this.doc,e,n,a);return r&&this.step(r),this}replaceWith(e,n,a){return this.replace(e,n,new V(B.from(a),0,0))}delete(e,n){return this.replace(e,n,V.empty)}insert(e,n){return this.replaceWith(e,e,n)}replaceRange(e,n,a){return nC(this,e,n,a),this}replaceRangeWith(e,n,a){return aC(this,e,n,a),this}deleteRange(e,n){return rC(this,e,n),this}lift(e,n){return q7(this,e,n),this}join(e,n=1){return Y7(this,e,n),this}wrap(e,n){return V7(this,e,n),this}setBlockType(e,n=e,a,r=null){return W7(this,e,n,a,r),this}setNodeMarkup(e,n,a=null,r){return K7(this,e,n,a,r),this}setNodeAttribute(e,n,a){return this.step(new Dc(e,n,a)),this}setDocAttribute(e,n){return this.step(new Fc(e,n)),this}addNodeMark(e,n){return this.step(new So(e,n)),this}removeNodeMark(e,n){let a=this.doc.nodeAt(e);if(!a)throw new RangeError("No node at position "+e);if(n instanceof xe)n.isInSet(a.marks)&&this.step(new Ki(e,n));else{let r=a.marks,i,s=[];for(;i=n.isInSet(r);)s.push(new Ki(e,i)),r=i.removeFromSet(r);for(let o=s.length-1;o>=0;o--)this.step(s[o])}return this}split(e,n=1,a){return X7(this,e,n,a),this}addMark(e,n,a){return D7(this,e,n,a),this}removeMark(e,n,a){return F7(this,e,n,a),this}clearIncompatible(e,n,a){return Cm(this,e,n,a),this}};var jm=Object.create(null),ae=class{constructor(e,n,a){this.$anchor=e,this.$head=n,this.ranges=a||[new Ya(e.min(n),e.max(n))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let n=0;n=0;i--){let s=n<0?Yi(e.node(0),e.node(i),e.before(i+1),e.index(i),n,a):Yi(e.node(0),e.node(i),e.after(i+1),e.index(i)+1,n,a);if(s)return s}return null}static near(e,n=1){return this.findFrom(e,n)||this.findFrom(e,-n)||new sn(e.node(0))}static atStart(e){return Yi(e,e,0,0,1)||new sn(e)}static atEnd(e){return Yi(e,e,e.content.size,e.childCount,-1)||new sn(e)}static fromJSON(e,n){if(!n||!n.type)throw new RangeError("Invalid input for Selection.fromJSON");let a=jm[n.type];if(!a)throw new RangeError(`No selection type ${n.type} defined`);return a.fromJSON(e,n)}static jsonID(e,n){if(e in jm)throw new RangeError("Duplicate use of selection JSON ID "+e);return jm[e]=n,n.prototype.jsonID=e,n}getBookmark(){return ue.between(this.$anchor,this.$head).getBookmark()}};ae.prototype.visible=!0;var Ya=class{constructor(e,n){this.$from=e,this.$to=n}},rx=!1;function ix(t){!rx&&!t.parent.inlineContent&&(rx=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+t.parent.type.name+")"))}var ue=class t extends ae{constructor(e,n=e){ix(e),ix(n),super(e,n)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,n){let a=e.resolve(n.map(this.head));if(!a.parent.inlineContent)return ae.near(a);let r=e.resolve(n.map(this.anchor));return new t(r.parent.inlineContent?r:a,a)}replace(e,n=V.empty){if(super.replace(e,n),n==V.empty){let a=this.$from.marksAcross(this.$to);a&&e.ensureMarks(a)}}eq(e){return e instanceof t&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new qc(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,n){if(typeof n.anchor!="number"||typeof n.head!="number")throw new RangeError("Invalid input for TextSelection.fromJSON");return new t(e.resolve(n.anchor),e.resolve(n.head))}static create(e,n,a=n){let r=e.resolve(n);return new this(r,a==n?r:e.resolve(a))}static between(e,n,a){let r=e.pos-n.pos;if((!a||r)&&(a=r>=0?1:-1),!n.parent.inlineContent){let i=ae.findFrom(n,a,!0)||ae.findFrom(n,-a,!0);if(i)n=i.$head;else return ae.near(n,a)}return e.parent.inlineContent||(r==0?e=n:(e=(ae.findFrom(e,-a,!0)||ae.findFrom(e,a,!0)).$anchor,e.pos0?0:1);r>0?s=0;s+=r){let o=e.child(s);if(o.isAtom){if(!i&&le.isSelectable(o))return le.create(t,n-(r<0?o.nodeSize:0))}else{let l=Yi(t,o,n+r,r<0?o.childCount:0,r,i);if(l)return l}n+=o.nodeSize*r}return null}function sx(t,e,n){let a=t.steps.length-1;if(a{s==null&&(s=u)}),t.setSelection(ae.near(t.doc.resolve(s),n))}var ox=1,Pc=2,lx=4,Am=class extends Zi{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=Pc,this}ensureMarks(e){return xe.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(this.updated&Pc)>0}addStep(e,n){super.addStep(e,n),this.updated=this.updated&~Pc,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,n=!0){let a=this.selection;return n&&(e=e.mark(this.storedMarks||(a.empty?a.$from.marks():a.$from.marksAcross(a.$to)||xe.none))),a.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,n,a){let r=this.doc.type.schema;if(n==null)return e?this.replaceSelectionWith(r.text(e),!0):this.deleteSelection();{if(a==null&&(a=n),!e)return this.deleteRange(n,a);let i=this.storedMarks;if(!i){let s=this.doc.resolve(n);i=a==n?s.marks():s.marksAcross(this.doc.resolve(a))}return this.replaceRangeWith(n,a,r.text(e,i)),!this.selection.empty&&this.selection.to==n+e.length&&this.setSelection(ae.near(this.selection.$to)),this}}setMeta(e,n){return this.meta[typeof e=="string"?e:e.key]=n,this}getMeta(e){return this.meta[typeof e=="string"?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=lx,this}get scrolledIntoView(){return(this.updated&lx)>0}};function cx(t,e){return!e||!t?t:t.bind(e)}var ei=class{constructor(e,n,a){this.name=e,this.init=cx(n.init,a),this.apply=cx(n.apply,a)}},sC=[new ei("doc",{init(t){return t.doc||t.schema.topNodeType.createAndFill()},apply(t){return t.doc}}),new ei("selection",{init(t,e){return t.selection||ae.atStart(e.doc)},apply(t){return t.selection}}),new ei("storedMarks",{init(t){return t.storedMarks||null},apply(t,e,n,a){return a.selection.$cursor?t.storedMarks:null}}),new ei("scrollToSelection",{init(){return 0},apply(t,e){return t.scrolledIntoView?e+1:e}})],Ao=class{constructor(e,n){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=sC.slice(),n&&n.forEach(a=>{if(this.pluginsByKey[a.key])throw new RangeError("Adding different instances of a keyed plugin ("+a.key+")");this.plugins.push(a),this.pluginsByKey[a.key]=a,a.spec.state&&this.fields.push(new ei(a.key,a.spec.state,a))})}},Qi=class t{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,n=-1){for(let a=0;aa.toJSON())),e&&typeof e=="object")for(let a in e){if(a=="doc"||a=="selection")throw new RangeError("The JSON fields `doc` and `selection` are reserved");let r=e[a],i=r.spec.state;i&&i.toJSON&&(n[a]=i.toJSON.call(r,this[r.key]))}return n}static fromJSON(e,n,a){if(!n)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let r=new Ao(e.schema,e.plugins),i=new t(r);return r.fields.forEach(s=>{if(s.name=="doc")i.doc=Kt.fromJSON(e.schema,n.doc);else if(s.name=="selection")i.selection=ae.fromJSON(i.doc,n.selection);else if(s.name=="storedMarks")n.storedMarks&&(i.storedMarks=n.storedMarks.map(e.schema.markFromJSON));else{if(a)for(let o in a){let l=a[o],c=l.spec.state;if(l.key==s.name&&c&&c.fromJSON&&Object.prototype.hasOwnProperty.call(n,o)){i[s.name]=c.fromJSON.call(l,e,n[o],i);return}}i[s.name]=s.init(e,i)}}),i}};function ux(t,e,n){for(let a in t){let r=t[a];r instanceof Function?r=r.bind(e):a=="handleDOMEvents"&&(r=ux(r,e,{})),n[a]=r}return n}var ve=class{constructor(e){this.spec=e,this.props={},e.props&&ux(e.props,this,this.props),this.key=e.key?e.key.key:px("plugin")}getState(e){return e[this.key]}},Sm=Object.create(null);function px(t){return t in Sm?t+"$"+ ++Sm[t]:(Sm[t]=0,t+"$")}var $e=class{constructor(e="key"){this.key=px(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}};var Gc=(t,e)=>t.selection.empty?!1:(e&&e(t.tr.deleteSelection().scrollIntoView()),!0);function mx(t,e){let{$cursor:n}=t.selection;return!n||(e?!e.endOfTextblock("backward",t):n.parentOffset>0)?null:n}var Mm=(t,e,n)=>{let a=mx(t,n);if(!a)return!1;let r=Im(a);if(!r){let s=a.blockRange(),o=s&&Ji(s);return o==null?!1:(e&&e(t.tr.lift(s,o).scrollIntoView()),!0)}let i=r.nodeBefore;if(gx(t,r,e,-1))return!0;if(a.parent.content.size==0&&(es(i,"end")||le.isSelectable(i)))for(let s=a.depth;;s--){let o=Eo(t.doc,a.before(s),a.after(s),V.empty);if(o&&o.slice.size1)break}return i.isAtom&&r.depth==a.depth-1?(e&&e(t.tr.delete(r.pos-i.nodeSize,r.pos).scrollIntoView()),!0):!1},hx=(t,e,n)=>{let a=mx(t,n);if(!a)return!1;let r=Im(a);return r?oC(t,r,e):!1};function oC(t,e,n){let a=e.nodeBefore,r=a,i=e.pos-1;for(;!r.isTextblock;i--){if(r.type.spec.isolating)return!1;let u=r.lastChild;if(!u)return!1;r=u}let s=e.nodeAfter,o=s,l=e.pos+1;for(;!o.isTextblock;l++){if(o.type.spec.isolating)return!1;let u=o.firstChild;if(!u)return!1;o=u}let c=Eo(t.doc,i,l,V.empty);if(!c||c.from!=i||c instanceof bt&&c.slice.size>=l-i)return!1;if(n){let u=t.tr.step(c);u.setSelection(ue.create(u.doc,i)),n(u.scrollIntoView())}return!0}function es(t,e,n=!1){for(let a=t;a;a=e=="start"?a.firstChild:a.lastChild){if(a.isTextblock)return!0;if(n&&a.childCount!=1)return!1}return!1}var Nm=(t,e,n)=>{let{$head:a,empty:r}=t.selection,i=a;if(!r)return!1;if(a.parent.isTextblock){if(n?!n.endOfTextblock("backward",t):a.parentOffset>0)return!1;i=Im(a)}let s=i&&i.nodeBefore;return!s||!le.isSelectable(s)?!1:(e&&e(t.tr.setSelection(le.create(t.doc,i.pos-s.nodeSize)).scrollIntoView()),!0)};function Im(t){if(!t.parent.type.spec.isolating)for(let e=t.depth-1;e>=0;e--){if(t.index(e)>0)return t.doc.resolve(t.before(e+1));if(t.node(e).type.spec.isolating)break}return null}function lC(t,e){let{$cursor:n}=t.selection;return!n||(e?!e.endOfTextblock("forward",t):n.parentOffset{let a=lC(t,n);if(!a)return!1;let r=fx(a);if(!r)return!1;let i=r.nodeAfter;if(gx(t,r,e,1))return!0;if(a.parent.content.size==0&&(es(i,"start")||le.isSelectable(i))){let s=Eo(t.doc,a.before(),a.after(),V.empty);if(s&&s.slice.size{let{$head:a,empty:r}=t.selection,i=a;if(!r)return!1;if(a.parent.isTextblock){if(n?!n.endOfTextblock("forward",t):a.parentOffset=0;e--){let n=t.node(e);if(t.index(e)+1{let{$head:n,$anchor:a}=t.selection;return!n.parent.type.spec.code||!n.sameParent(a)?!1:(e&&e(t.tr.insertText(` +`).scrollIntoView()),!0)};function Rm(t){for(let e=0;e{let{$head:n,$anchor:a}=t.selection;if(!n.parent.type.spec.code||!n.sameParent(a))return!1;let r=n.node(-1),i=n.indexAfter(-1),s=Rm(r.contentMatchAt(i));if(!s||!r.canReplaceWith(i,i,s))return!1;if(e){let o=n.after(),l=t.tr.replaceWith(o,o,s.createAndFill());l.setSelection(ae.near(l.doc.resolve(o),1)),e(l.scrollIntoView())}return!0},mC=(t,e)=>{let n=t.selection,{$from:a,$to:r}=n;if(n instanceof sn||a.parent.inlineContent||r.parent.inlineContent)return!1;let i=Rm(r.parent.contentMatchAt(r.indexAfter()));if(!i||!i.isTextblock)return!1;if(e){let s=(!a.parentOffset&&r.index(){let{$cursor:n}=t.selection;if(!n||n.parent.content.size)return!1;if(n.depth>1&&n.after()!=n.end(-1)){let i=n.before();if(Yr(t.doc,i))return e&&e(t.tr.split(i).scrollIntoView()),!0}let a=n.blockRange(),r=a&&Ji(a);return r==null?!1:(e&&e(t.tr.lift(a,r).scrollIntoView()),!0)};function fC(t){return(e,n)=>{let{$from:a,$to:r}=e.selection;if(e.selection instanceof le&&e.selection.node.isBlock)return!a.parentOffset||!Yr(e.doc,a.pos)?!1:(n&&n(e.tr.split(a.pos).scrollIntoView()),!0);if(!a.depth)return!1;let i=[],s,o,l=!1,c=!1;for(let m=a.depth;;m--)if(a.node(m).isBlock){l=a.end(m)==a.pos+(a.depth-m),c=a.start(m)==a.pos-(a.depth-m),o=Rm(a.node(m-1).contentMatchAt(a.indexAfter(m-1)));let b=t&&t(r.parent,l,a);i.unshift(b||(l&&o?{type:o}:null)),s=m;break}else{if(m==1)return!1;i.unshift(null)}let u=e.tr;(e.selection instanceof ue||e.selection instanceof sn)&&u.deleteSelection();let p=u.mapping.map(a.pos),d=Yr(u.doc,p,i.length,i);if(d||(i[0]=o?{type:o}:null,d=Yr(u.doc,p,i.length,i)),!d)return!1;if(u.split(p,i.length,i),!l&&c&&a.node(s).type!=o){let m=u.mapping.map(a.before(s)),h=u.doc.resolve(m);o&&a.node(s-1).canReplaceWith(h.index(),h.index()+1,o)&&u.setNodeMarkup(u.mapping.map(a.before(s)),o)}return n&&n(u.scrollIntoView()),!0}}var gC=fC();var bC=(t,e)=>(e&&e(t.tr.setSelection(new sn(t.doc))),!0);function yC(t,e,n){let a=e.nodeBefore,r=e.nodeAfter,i=e.index();return!a||!r||!a.type.compatibleContent(r.type)?!1:!a.content.size&&e.parent.canReplace(i-1,i)?(n&&n(t.tr.delete(e.pos-a.nodeSize,e.pos).scrollIntoView()),!0):!e.parent.canReplace(i,i+1)||!(r.isTextblock||Qr(t.doc,e.pos))?!1:(n&&n(t.tr.join(e.pos).scrollIntoView()),!0)}function gx(t,e,n,a){let r=e.nodeBefore,i=e.nodeAfter,s,o,l=r.type.spec.isolating||i.type.spec.isolating;if(!l&&yC(t,e,n))return!0;let c=!l&&e.parent.canReplace(e.index(),e.index()+1);if(c&&(s=(o=r.contentMatchAt(r.childCount)).findWrapping(i.type))&&o.matchType(s[0]||i.type).validEnd){if(n){let m=e.pos+i.nodeSize,h=B.empty;for(let w=s.length-1;w>=0;w--)h=B.from(s[w].create(null,h));h=B.from(r.copy(h));let b=t.tr.step(new yt(e.pos-1,m,e.pos,m,new V(h,1,0),s.length,!0)),y=b.doc.resolve(m+2*s.length);y.nodeAfter&&y.nodeAfter.type==r.type&&Qr(b.doc,y.pos)&&b.join(y.pos),n(b.scrollIntoView())}return!0}let u=i.type.spec.isolating||a>0&&l?null:ae.findFrom(e,1),p=u&&u.$from.blockRange(u.$to),d=p&&Ji(p);if(d!=null&&d>=e.depth)return n&&n(t.tr.lift(p,d).scrollIntoView()),!0;if(c&&es(i,"start",!0)&&es(r,"end")){let m=r,h=[];for(;h.push(m),!m.isTextblock;)m=m.lastChild;let b=i,y=1;for(;!b.isTextblock;b=b.firstChild)y++;if(m.canReplace(m.childCount,m.childCount,b.content)){if(n){let w=B.empty;for(let $=h.length-1;$>=0;$--)w=B.from(h[$].copy(w));let _=t.tr.step(new yt(e.pos-h.length,e.pos+i.nodeSize,e.pos+y,e.pos+i.nodeSize-y,new V(w,h.length,0),0,!0));n(_.scrollIntoView())}return!0}}return!1}function bx(t){return function(e,n){let a=e.selection,r=t<0?a.$from:a.$to,i=r.depth;for(;r.node(i).isInline;){if(!i)return!1;i--}return r.node(i).isTextblock?(n&&n(e.tr.setSelection(ue.create(e.doc,t<0?r.start(i):r.end(i)))),!0):!1}}var xC=bx(-1),wC=bx(1);function Hc(t,e=null){return function(n,a){let{$from:r,$to:i}=n.selection,s=r.blockRange(i),o=s&&Jr(s,t,e);return o?(a&&a(n.tr.wrap(s,o).scrollIntoView()),!0):!1}}function ts(t,e=null){return function(n,a){let r=!1;for(let i=0;i{if(r)return!1;if(!(!l.isTextblock||l.hasMarkup(t,e)))if(l.type==t)r=!0;else{let u=n.doc.resolve(c),p=u.index();r=u.parent.canReplaceWith(p,p+1,t)}})}if(!r)return!1;if(a){let i=n.tr;for(let s=0;s{if(o||!a&&l.isAtom&&l.isInline&&c>=i.pos&&c+l.nodeSize<=s.pos)return!1;o=l.inlineContent&&l.type.allowsMarkType(n)}),o)return!0}return!1}function _C(t){let e=[];for(let n=0;n{if(i.isAtom&&i.content.size&&i.isInline&&s>=a.pos&&s+i.nodeSize<=r.pos)return s+1>a.pos&&e.push(new Ya(a,a.doc.resolve(s+1))),a=a.doc.resolve(s+1+i.content.size),!1}),a.poss.doc.rangeHasMark(m.$from.pos,m.$to.pos,t)):p=!u.every(m=>{let h=!1;return d.doc.nodesBetween(m.$from.pos,m.$to.pos,(b,y,w)=>{if(h)return!1;h=!t.isInSet(b.marks)&&!!w&&w.type.allowsMarkType(t)&&!(b.isText&&/^\s*$/.test(b.textBetween(Math.max(0,m.$from.pos-y),Math.min(b.nodeSize,m.$to.pos-y))))}),!h});for(let m=0;m0&&(i=n[0].slice(s-o,s)+i,a=r)}return e.tr.insertText(i,a,r)}}var wx=(t,e)=>{let n=t.plugins;for(let a=0;a=0;l--)s.step(o.steps[l].invert(o.docs[l]));if(i.text){let l=s.doc.resolve(i.from).marks();s.replaceWith(i.from,i.to,t.schema.text(i.text,l))}else s.delete(i.from,i.to);e(s)}return!0}}return!1},PH=new mt(/--$/,"\u2014",{inCodeMark:!1}),qH=new mt(/\.\.\.$/,"\u2026",{inCodeMark:!1}),GH=new mt(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(")$/,"\u201C",{inCodeMark:!1}),HH=new mt(/"$/,"\u201D",{inCodeMark:!1}),VH=new mt(/(?:^|[\s\{\[\(\<'"\u2018\u201C])(')$/,"\u2018",{inCodeMark:!1}),WH=new mt(/'$/,"\u2019",{inCodeMark:!1});function Vc(t,e,n=null,a){return new mt(t,(r,i,s,o)=>{let l=n instanceof Function?n(i):n,c=r.tr.delete(s,o),u=c.doc.resolve(s),p=u.blockRange(),d=p&&Jr(p,e,l);if(!d)return null;c.wrap(p,d);let m=c.doc.resolve(s-1).nodeBefore;return m&&m.type==e&&Qr(c.doc,s-1)&&(!a||a(i,m))&&c.join(s-1),c})}function zm(t,e,n=null){return new mt(t,(a,r,i,s)=>{let o=a.doc.resolve(i),l=n instanceof Function?n(r):n;return o.node(-1).canReplaceWith(o.index(-1),o.indexAfter(-1),e)?a.tr.delete(i,s).setBlockType(i,i,e,l):null})}var Qa=typeof navigator<"u"?navigator:null,kx=typeof document<"u"?document:null,er=Qa&&Qa.userAgent||"",Bm=/Edge\/(\d+)/.exec(er),_x=/MSIE \d/.exec(er),Lm=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(er),Fm=!!(_x||Lm||Bm),YH=_x?document.documentMode:Lm?+Lm[1]:Bm?+Bm[1]:0,CC=!Fm&&/gecko\/(\d+)/i.test(er),QH=CC&&+(/Firefox\/(\d+)/.exec(er)||[0,0])[1],Dm=!Fm&&/Chrome\/(\d+)/.exec(er),jC=!!Dm,eV=Dm?+Dm[1]:0,SC=!Fm&&!!Qa&&/Apple Computer/.test(Qa.vendor),EC=SC&&(/Mobile\/\w+/.test(er)||!!Qa&&Qa.maxTouchPoints>2),tV=EC||(Qa?/Mac/.test(Qa.platform):!1),AC=/Android \d/.test(er),TC=!!kx&&"webkitFontSmoothing"in kx.documentElement.style,nV=TC?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function Om(t,e,n,a,r,i){if(t.composing)return!1;let s=t.state,o=s.doc.resolve(e);if(o.parent.type.spec.code)return!1;let l=o.parent.textBetween(Math.max(0,o.parentOffset-500),o.parentOffset,void 0,"\uFFFC")+a;for(let c of r){let u=c,p=u.match.exec(l),d=p&&p[0]&&u.handler(s,p,e-(p[0].length-a.length),n);if(d)return u.undoable!==!1&&d.setMeta(i,{transform:d,from:e,to:n,text:a}),t.dispatch(d),!0}return!1}var MC=new $e("MILKDOWN_CUSTOM_INPUTRULES");function vx({rules:t}){let e=new ve({key:MC,isInputRules:!0,state:{init(){return null},apply(n,a){let r=n.getMeta(this);return r||(n.selectionSet||n.docChanged?null:a)}},props:{handleTextInput(n,a,r,i){return Om(n,a,r,i,t,e)},handleDOMEvents:{compositionend:n=>(setTimeout(()=>{let{$cursor:a}=n.state.selection;a&&Om(n,a.pos,a.pos,"",t,e)}),!1),keydown:(n,a)=>!(AC&&jC&&a.key==="Enter")||n.composing?!1:n.someProp("handleKeyDown",r=>r(n,a))?(a.preventDefault(),!0):!1},handleKeyDown(n,a){if(a.key!=="Enter")return!1;let{$cursor:r}=n.state.selection;return r?Om(n,r.pos,r.pos,` +`,t,e):!1}}});return e}function ni(t,e,n={}){return new mt(t,(a,r,i,s)=>{var o,l,c,u;let{tr:p}=a,d=r.length,m=r[d-1],h=r[0],b=[],y,w={group:m,fullMatch:h,start:i,end:s},_=(o=n.updateCaptured)==null?void 0:o.call(n,w);if(Object.assign(w,_),{group:m,fullMatch:h,start:i,end:s}=w,h===null||m?.trim()==="")return null;if(m){let $=h.search(/\S/),M=i+h.indexOf(m),N=M+m.length;b=(l=p.storedMarks)!=null?l:[],Ni&&p.delete(i+$,M),y=i+$+m.length;let E=(c=n.getAttr)==null?void 0:c.call(n,r);p.addMark(i,y,e.create(E)),p.setStoredMarks(b),(u=n.beforeDispatch)==null||u.call(n,{match:r,start:i,end:s,tr:p})}return p})}function Pm(t){return Object.assign(Object.create(t),t).setTime(Date.now())}function NC(t,e){return Array.isArray(t)&&t.includes(e.type)||e.type===t}function $x(t){if(t.content.childCount===1){let e=t.content.firstChild;if(e?.type.name==="text"&&e.marks.length===0)return e;if(e?.type.name==="paragraph"&&e.childCount===1){let n=e.firstChild;if(n?.type.name==="text"&&n.marks.length===0)return n}}return!1}function IC(t){return e=>{for(let n=e.depth;n>0;n-=1){let a=e.node(n);if(t(a)){let r=e.before(n),i=e.after(n);return{from:r,to:i,node:a}}}}}function Cx(t,e){return IC(n=>n.type===e)(t)}function jx(t,e){let n=e.nodes[t];if(!n)throw Xb("node",t);return n}function Sx(t){return e=>{for(let n=e.depth;n>0;n--){let a=e.node(n);if(t(a))return{pos:e.before(n),start:e.start(n),depth:n,node:a}}}}function Ex(t,e){if(!(t instanceof le))return;let{node:n,$from:a}=t;if(NC(e,n))return{node:n,pos:a.pos,start:a.start(a.depth),depth:a.depth}}var Ax=(t,e)=>{let{selection:n,doc:a}=t;if(n instanceof le)return{hasNode:n.node.type===e,pos:n.from,target:n.node};let{from:r,to:i}=n,s=!1,o=-1,l=null;return a.nodesBetween(r,i,(c,u)=>l?!1:c.type===e?(s=!0,o=u,l=c,!1):!0),{hasNode:s,pos:o,target:l}};var ba={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},Uc={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},RC=typeof navigator<"u"&&/Mac/.test(navigator.platform),zC=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Ze=0;Ze<10;Ze++)ba[48+Ze]=ba[96+Ze]=String(Ze);var Ze;for(Ze=1;Ze<=24;Ze++)ba[Ze+111]="F"+Ze;var Ze;for(Ze=65;Ze<=90;Ze++)ba[Ze]=String.fromCharCode(Ze+32),Uc[Ze]=String.fromCharCode(Ze);var Ze;for(Wc in ba)Uc.hasOwnProperty(Wc)||(Uc[Wc]=ba[Wc]);var Wc;function Tx(t){var e=RC&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||zC&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?Uc:ba)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}var OC=typeof navigator<"u"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),BC=typeof navigator<"u"&&/Win/.test(navigator.platform);function LC(t){let e=t.split(/-(?!$)/),n=e[e.length-1];n=="Space"&&(n=" ");let a,r,i,s;for(let o=0;othis.elements.length,this.top=()=>this.elements.at(-1),this.push=t=>{this.top()?.push(t)},this.open=t=>{this.elements.push(t)},this.close=()=>{let t=this.elements.pop();if(!t)throw vd();return t}}},FC=class zx extends Ix{constructor(e,n,a){super(),this.type=e,this.content=n,this.attrs=a}push(e,...n){this.content.push(e,...n)}pop(){return this.content.pop()}static create(e,n,a){return new zx(e,n,a)}},Ox=class extends Rx{#t=xe.none;static{this.create=(t,e)=>{let n=new this(t);return a=>(n.run(e,a),n.toDoc())}}constructor(t){super(),this.injectRoot=(e,n,a)=>(this.openNode(n,a),this.next(e.children),this),this.openNode=(e,n)=>(this.open(FC.create(e,[],n)),this),this.closeNode=()=>{try{this.#s()}catch(e){console.error(e)}return this},this.addNode=(e,n,a)=>{try{this.#r(e,n,a)}catch(r){console.error(r)}return this},this.openMark=(e,n)=>(this.#t=e.create(n).addToSet(this.#t),this),this.closeMark=e=>(this.#t=e.removeFromSet(this.#t),this),this.addText=e=>{try{let n=this.top();if(!n)throw vd();let a=n.pop(),r=this.schema.text(e,this.#t);if(!a)return n.push(r),this;let i=this.#a(a,r);return i?(n.push(i),this):(n.push(a,r),this)}catch(n){return console.error(n),this}},this.build=()=>{let e;do e=this.#s();while(this.size());return e},this.next=(e=[])=>([e].flat().forEach(n=>this.#i(n)),this),this.toDoc=()=>this.build(),this.run=(e,n)=>{let a=e.runSync(e.parse(n),n);return this.next(a),this},this.schema=t}#e=t=>t.isText;#a=(t,e)=>{if(this.#e(t)&&this.#e(e)&&xe.sameSet(t.marks,e.marks))return this.schema.text(t.text+e.text,t.marks)};#n=t=>{let e=Object.values({...this.schema.nodes,...this.schema.marks}).find(n=>n.spec.parseMarkdown.match(t));if(!e)throw Ub(t);return e};#i=t=>{let e=this.#n(t);e.spec.parseMarkdown.runner(this,t,e)};#s=()=>{this.#t=xe.none;let t=this.close();return this.#r(t.type,t.attrs,t.content)};#r=(t,e,n)=>{let a=t.createAndFill(e,n,this.#t);if(!a)throw Wb(t,e,n);return this.push(a),a}},Nx=class Bx extends Ix{constructor(e,n,a,r={}){super(),this.type=e,this.children=n,this.value=a,this.props=r,this.push=(i,...s)=>{this.children||(this.children=[]),this.children.push(i,...s)},this.pop=()=>this.children?.pop()}static{this.create=(e,n,a,r={})=>new Bx(e,n,a,r)}},PC=t=>Object.prototype.hasOwnProperty.call(t,"size"),Lx=class extends Rx{#t=xe.none;static{this.create=(t,e)=>{let n=new this(t);return a=>(n.run(a),n.toString(e))}}constructor(t){super(),this.openNode=(e,n,a)=>(this.open(Nx.create(e,void 0,n,a)),this),this.closeNode=()=>(this.#u(),this),this.addNode=(e,n,a,r)=>(this.#c(e,n,a,r),this),this.withMark=(e,n,a,r)=>(this.#p(e,n,a,r),this),this.closeMark=e=>(this.#d(e),this),this.build=()=>{let e=null;do e=this.#u();while(this.size());return e},this.next=e=>PC(e)?(e.forEach(n=>{this.#i(n)}),this):(this.#i(e),this),this.toString=e=>e.stringify(this.build()),this.run=e=>(this.next(e),this),this.schema=t}#e=t=>{let e=Object.values({...this.schema.nodes,...this.schema.marks}).find(n=>n.spec.toMarkdown.match(t));if(!e)throw Kb(t.type);return e};#a=t=>this.#e(t).spec.toMarkdown.runner(this,t);#n=(t,e)=>this.#e(t).spec.toMarkdown.runner(this,t,e);#i=t=>{let{marks:e}=t,n=a=>a.type.spec.priority??50;[...e].sort((a,r)=>n(a)-n(r)).every(a=>!this.#n(a,t))&&this.#a(t),e.forEach(a=>this.#d(a))};#s=(t,e)=>{if(t.type===e||t.children?.length!==1)return t;let n=s=>{if(s.type===e)return s.value!=null?null:s;if(s.children?.length!==1)return null;let[o]=s.children;return o?n(o):null},a=n(t);if(!a)return t;let r=a.children?[...a.children]:void 0,i={...t,children:r};return i.children=r,a.children=[i],a};#r=t=>{let{children:e}=t;return e&&(t.children=e.reduce((n,a,r)=>{if(r===0)return[a];let i=n.at(-1);if(i&&i.isMark&&a.isMark){a=this.#s(a,i.type);let{children:s,...o}=a,{children:l,...c}=i;if(a.type===i.type&&s&&l&&JSON.stringify(o)===JSON.stringify(c)){let u={...c,children:[...l,...s]};return n.slice(0,-1).concat(this.#r(u))}}return n.concat(a)},[])),t};#o=t=>{let e={...t.props,type:t.type};return t.children&&(e.children=t.children),t.value&&(e.value=t.value),e};#l=(t,e)=>{let n="",a="",r=t.children,i=-1,s=-1,o=c=>{c&&c.forEach((u,p)=>{u.type==="text"&&u.value&&(i<0&&(i=p),s=p)})};if(r){o(r);let c=r?.[s],u=r?.[i];if(c&&c.value.endsWith(" ")){let p=c.value,d=p.trimEnd();a=p.slice(d.length),c.value=d}if(u&&u.value.startsWith(" ")){let p=u.value,d=p.trimStart();n=p.slice(0,p.length-d.length),u.value=d}}n.length&&this.#c("text",void 0,n);let l=e();return a.length&&this.#c("text",void 0,a),l};#u=(t=!1)=>{let e=this.close(),n=()=>this.#c(e.type,e.children,e.value,e.props);return t?this.#l(e,n):n()};#c=(t,e,n,a)=>{let r=Nx.create(t,e,n,a),i=this.#r(this.#o(r));return this.push(i),i};#p=(t,e,n,a)=>t.isInSet(this.#t)?this:(this.#t=t.addToSet(this.#t),this.openNode(e,n,{...a,isMark:!0}));#d=t=>{t.isInSet(this.#t)&&(this.#t=t.type.removeFromSet(this.#t),this.#u(!0))}};var xt=function(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e},ls=function(t){let e=t.assignedSlot||t.parentNode;return e&&e.nodeType==11?e.host:e},Xm=null,xa=function(t,e,n){let a=Xm||(Xm=document.createRange());return a.setEnd(t,n??t.nodeValue.length),a.setStart(t,e||0),a},qC=function(){Xm=null},ci=function(t,e,n,a){return n&&(Dx(t,e,n,a,-1)||Dx(t,e,n,a,1))},GC=/^(img|br|input|textarea|hr)$/i;function Dx(t,e,n,a,r){for(var i;;){if(t==n&&e==a)return!0;if(e==(r<0?0:xn(t))){let s=t.parentNode;if(!s||s.nodeType!=1||Bo(t)||GC.test(t.nodeName)||t.contentEditable=="false")return!1;e=xt(t)+(r<0?0:1),t=s}else if(t.nodeType==1){let s=t.childNodes[e+(r<0?-1:0)];if(s.nodeType==1&&s.contentEditable=="false")if(!((i=s.pmViewDesc)===null||i===void 0)&&i.ignoreForSelection)e+=r;else return!1;else t=s,e=r<0?xn(t):0}else return!1}}function xn(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function HC(t,e){for(;;){if(t.nodeType==3&&e)return t;if(t.nodeType==1&&e>0){if(t.contentEditable=="false")return null;t=t.childNodes[e-1],e=xn(t)}else if(t.parentNode&&!Bo(t))e=xt(t),t=t.parentNode;else return null}}function VC(t,e){for(;;){if(t.nodeType==3&&e2),yn=cs||(Un?/Mac/.test(Un.platform):!1),ww=Un?/Win/.test(Un.platform):!1,wa=/Android \d/.test(sr),Lo=!!Fx&&"webkitFontSmoothing"in Fx.documentElement.style,XC=Lo?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function ZC(t){let e=t.defaultView&&t.defaultView.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.documentElement.clientWidth,top:0,bottom:t.documentElement.clientHeight}}function ya(t,e){return typeof t=="number"?t:t[e]}function JC(t){let e=t.getBoundingClientRect(),n=e.width/t.offsetWidth||1,a=e.height/t.offsetHeight||1;return{left:e.left,right:e.left+t.clientWidth*n,top:e.top,bottom:e.top+t.clientHeight*a}}function Px(t,e,n){let a=t.someProp("scrollThreshold")||0,r=t.someProp("scrollMargin")||5,i=t.dom.ownerDocument;for(let s=n||t.dom;s;){if(s.nodeType!=1){s=ls(s);continue}let o=s,l=o==i.body,c=l?ZC(i):JC(o),u=0,p=0;if(e.topc.bottom-ya(a,"bottom")&&(p=e.bottom-e.top>c.bottom-c.top?e.top+ya(r,"top")-c.top:e.bottom-c.bottom+ya(r,"bottom")),e.leftc.right-ya(a,"right")&&(u=e.right-c.right+ya(r,"right")),u||p)if(l)i.defaultView.scrollBy(u,p);else{let m=o.scrollLeft,h=o.scrollTop;p&&(o.scrollTop+=p),u&&(o.scrollLeft+=u);let b=o.scrollLeft-m,y=o.scrollTop-h;e={left:e.left-b,top:e.top-y,right:e.right-b,bottom:e.bottom-y}}let d=l?"fixed":getComputedStyle(s).position;if(/^(fixed|sticky)$/.test(d))break;s=d=="absolute"?s.offsetParent:ls(s)}}function YC(t){let e=t.dom.getBoundingClientRect(),n=Math.max(0,e.top),a,r;for(let i=(e.left+e.right)/2,s=n+1;s=n-20){a=o,r=l.top;break}}return{refDOM:a,refTop:r,stack:kw(t.dom)}}function kw(t){let e=[],n=t.ownerDocument;for(let a=t;a&&(e.push({dom:a,top:a.scrollTop,left:a.scrollLeft}),t!=n);a=ls(a));return e}function QC({refDOM:t,refTop:e,stack:n}){let a=t?t.getBoundingClientRect().top:0;_w(n,a==0?0:a-e)}function _w(t,e){for(let n=0;n=o){s=Math.max(h.bottom,s),o=Math.min(h.top,o);let b=h.left>e.left?h.left-e.left:h.right=(h.left+h.right)/2?1:0));continue}}else h.top>e.top&&!l&&h.left<=e.left&&h.right>=e.left&&(l=u,c={left:Math.max(h.left,Math.min(h.right,e.left)),top:h.top});!n&&(e.left>=h.right&&e.top>=h.top||e.left>=h.left&&e.top>=h.bottom)&&(i=p+1)}}return!n&&l&&(n=l,r=c,a=0),n&&n.nodeType==3?t8(n,r):!n||a&&n.nodeType==1?{node:t,offset:i}:vw(n,r)}function t8(t,e){let n=t.nodeValue.length,a=document.createRange(),r;for(let i=0;i=(s.left+s.right)/2?1:0)};break}}return a.detach(),r||{node:t,offset:0}}function mh(t,e){return t.left>=e.left-1&&t.left<=e.right+1&&t.top>=e.top-1&&t.top<=e.bottom+1}function n8(t,e){let n=t.parentNode;return n&&/^li$/i.test(n.nodeName)&&e.left(s.left+s.right)/2?1:-1}return t.docView.posFromDOM(a,r,i)}function r8(t,e,n,a){let r=-1;for(let i=e,s=!1;i!=t.dom;){let o=t.docView.nearestDesc(i,!0),l;if(!o)return null;if(o.dom.nodeType==1&&(o.node.isBlock&&o.parent||!o.contentDOM)&&((l=o.dom.getBoundingClientRect()).width||l.height)&&(o.node.isBlock&&o.parent&&!/^T(R|BODY|HEAD|FOOT)$/.test(o.dom.nodeName)&&(!s&&l.left>a.left||l.top>a.top?r=o.posBefore:(!s&&l.right-1?r:t.docView.posFromDOM(e,n,-1)}function $w(t,e,n){let a=t.childNodes.length;if(a&&n.tope.top&&r++}let c;Lo&&r&&a.nodeType==1&&(c=a.childNodes[r-1]).nodeType==1&&c.contentEditable=="false"&&c.getBoundingClientRect().top>=e.top&&r--,a==t.dom&&r==a.childNodes.length-1&&a.lastChild.nodeType==1&&e.top>a.lastChild.getBoundingClientRect().bottom?o=t.state.doc.content.size:(r==0||a.nodeType!=1||a.childNodes[r-1].nodeName!="BR")&&(o=r8(t,a,r,e))}o==null&&(o=a8(t,s,e));let l=t.docView.nearestDesc(s,!0);return{pos:o,inside:l?l.posAtStart-l.border:-1}}function qx(t){return t.top=0&&r==a.nodeValue.length?(l--,u=1):n<0?l--:c++,To(tr(xa(a,l,c),u),u<0)}if(!t.state.doc.resolve(e-(i||0)).parent.inlineContent){if(i==null&&r&&(n<0||r==xn(a))){let l=a.childNodes[r-1];if(l.nodeType==1)return Hm(l.getBoundingClientRect(),!1)}if(i==null&&r=0)}if(i==null&&r&&(n<0||r==xn(a))){let l=a.childNodes[r-1],c=l.nodeType==3?xa(l,xn(l)-(s?0:1)):l.nodeType==1&&(l.nodeName!="BR"||!l.nextSibling)?l:null;if(c)return To(tr(c,1),!1)}if(i==null&&r=0)}function To(t,e){if(t.width==0)return t;let n=e?t.left:t.right;return{top:t.top,bottom:t.bottom,left:n,right:n}}function Hm(t,e){if(t.height==0)return t;let n=e?t.top:t.bottom;return{top:n,bottom:n,left:t.left,right:t.right}}function jw(t,e,n){let a=t.state,r=t.root.activeElement;a!=e&&t.updateState(e),r!=t.dom&&t.focus();try{return n()}finally{a!=e&&t.updateState(a),r!=t.dom&&r&&r.focus()}}function o8(t,e,n){let a=e.selection,r=n=="up"?a.$from:a.$to;return jw(t,e,()=>{let{node:i}=t.docView.domFromPos(r.pos,n=="up"?-1:1);for(;;){let o=t.docView.nearestDesc(i,!0);if(!o)break;if(o.node.isBlock){i=o.contentDOM||o.dom;break}i=o.dom.parentNode}let s=Cw(t,r.pos,1);for(let o=i.firstChild;o;o=o.nextSibling){let l;if(o.nodeType==1)l=o.getClientRects();else if(o.nodeType==3)l=xa(o,0,o.nodeValue.length).getClientRects();else continue;for(let c=0;cu.top+1&&(n=="up"?s.top-u.top>(u.bottom-s.top)*2:u.bottom-s.bottom>(s.bottom-u.top)*2))return!1}}return!0})}var l8=/[\u0590-\u08ac]/;function c8(t,e,n){let{$head:a}=e.selection;if(!a.parent.isTextblock)return!1;let r=a.parentOffset,i=!r,s=r==a.parent.content.size,o=t.domSelection();return o?!l8.test(a.parent.textContent)||!o.modify?n=="left"||n=="backward"?i:s:jw(t,e,()=>{let{focusNode:l,focusOffset:c,anchorNode:u,anchorOffset:p}=t.domSelectionRange(),d=o.caretBidiLevel;o.modify("move",n,"character");let m=a.depth?t.docView.domAfterPos(a.before()):t.dom,{focusNode:h,focusOffset:b}=t.domSelectionRange(),y=h&&!m.contains(h.nodeType==1?h:h.parentNode)||l==h&&c==b;try{o.collapse(u,p),l&&(l!=u||c!=p)&&o.extend&&o.extend(l,c)}catch{}return d!=null&&(o.caretBidiLevel=d),y}):a.pos==a.start()||a.pos==a.end()}var Gx=null,Hx=null,Vx=!1;function u8(t,e,n){return Gx==e&&Hx==n?Vx:(Gx=e,Hx=n,Vx=n=="up"||n=="down"?o8(t,e,n):c8(t,e,n))}var kn=0,Wx=1,ri=2,Kn=3,ui=class{constructor(e,n,a,r){this.parent=e,this.children=n,this.dom=a,this.contentDOM=r,this.dirty=kn,a.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,n,a){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let n=0;nxt(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))r=e.compareDocumentPosition(this.contentDOM)&2;else if(this.dom.firstChild){if(n==0)for(let i=e;;i=i.parentNode){if(i==this.dom){r=!1;break}if(i.previousSibling)break}if(r==null&&n==e.childNodes.length)for(let i=e;;i=i.parentNode){if(i==this.dom){r=!0;break}if(i.nextSibling)break}}return r??a>0?this.posAtEnd:this.posAtStart}nearestDesc(e,n=!1){for(let a=!0,r=e;r;r=r.parentNode){let i=this.getDesc(r),s;if(i&&(!n||i.node))if(a&&(s=i.nodeDOM)&&!(s.nodeType==1?s.contains(e.nodeType==1?e:e.parentNode):s==e))a=!1;else return i}}getDesc(e){let n=e.pmViewDesc;for(let a=n;a;a=a.parent)if(a==this)return n}posFromDOM(e,n,a){for(let r=e;r;r=r.parentNode){let i=this.getDesc(r);if(i)return i.localPosFromDOM(e,n,a)}return-1}descAt(e){for(let n=0,a=0;ne||s instanceof Zc){r=e-i;break}i=o}if(r)return this.children[a].domFromPos(r-this.children[a].border,n);for(let i;a&&!(i=this.children[a-1]).size&&i instanceof Kc&&i.side>=0;a--);if(n<=0){let i,s=!0;for(;i=a?this.children[a-1]:null,!(!i||i.dom.parentNode==this.contentDOM);a--,s=!1);return i&&n&&s&&!i.border&&!i.domAtom?i.domFromPos(i.size,n):{node:this.contentDOM,offset:i?xt(i.dom)+1:0}}else{let i,s=!0;for(;i=a=u&&n<=c-l.border&&l.node&&l.contentDOM&&this.contentDOM.contains(l.contentDOM))return l.parseRange(e,n,u);e=s;for(let p=o;p>0;p--){let d=this.children[p-1];if(d.size&&d.dom.parentNode==this.contentDOM&&!d.emptyChildAt(1)){r=xt(d.dom)+1;break}e-=d.size}r==-1&&(r=0)}if(r>-1&&(c>n||o==this.children.length-1)){n=c;for(let u=o+1;uh&&sn){let h=o;o=l,l=h}let m=document.createRange();m.setEnd(l.node,l.offset),m.setStart(o.node,o.offset),c.removeAllRanges(),c.addRange(m)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,n){for(let a=0,r=0;r=a:ea){let o=a+i.border,l=s-i.border;if(e>=o&&n<=l){this.dirty=e==a||n==s?ri:Wx,e==o&&n==l&&(i.contentLost||i.dom.parentNode!=this.contentDOM)?i.dirty=Kn:i.markDirty(e-o,n-o);return}else i.dirty=i.dom==i.contentDOM&&i.dom.parentNode==this.contentDOM&&!i.children.length?ri:Kn}a=s}this.dirty=ri}markParentsDirty(){let e=1;for(let n=this.parent;n;n=n.parent,e++){let a=e==1?ri:Wx;n.dirty{if(!i)return r;if(i.parent)return i.parent.posBeforeChild(i)})),!n.type.spec.raw){if(s.nodeType!=1){let o=document.createElement("span");o.appendChild(s),s=o}s.contentEditable="false",s.classList.add("ProseMirror-widget")}super(e,[],s,null),this.widget=n,this.widget=n,i=this}matchesWidget(e){return this.dirty==kn&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let n=this.widget.spec.stopEvent;return n?n(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get ignoreForSelection(){return!!this.widget.type.spec.relaxedSide}get side(){return this.widget.type.side}},Qm=class extends ui{constructor(e,n,a,r){super(e,[],n,null),this.textDOM=a,this.text=r}get size(){return this.text.length}localPosFromDOM(e,n){return e!=this.textDOM?this.posAtStart+(n?this.size:0):this.posAtStart+n}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}},us=class t extends ui{constructor(e,n,a,r,i){super(e,[],a,r),this.mark=n,this.spec=i}static create(e,n,a,r){let i=r.nodeViews[n.type.name],s=i&&i(n,r,a);return(!s||!s.dom)&&(s=On.renderSpec(document,n.type.spec.toDOM(n,a),null,n.attrs)),new t(e,n,s.dom,s.contentDOM||s.dom,s)}parseRule(){return this.dirty&Kn||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Kn&&this.mark.eq(e)}markDirty(e,n){if(super.markDirty(e,n),this.dirty!=kn){let a=this.parent;for(;!a.node;)a=a.parent;a.dirty0&&(i=ah(i,0,e,a));for(let o=0;o{if(!l)return s;if(l.parent)return l.parent.posBeforeChild(l)},a,r),u=c&&c.dom,p=c&&c.contentDOM;if(n.isText){if(!u)u=document.createTextNode(n.text);else if(u.nodeType!=3)throw new RangeError("Text must be rendered as a DOM text node")}else u||({dom:u,contentDOM:p}=On.renderSpec(document,n.type.spec.toDOM(n),null,n.attrs));!p&&!n.isText&&u.nodeName!="BR"&&(u.hasAttribute("contenteditable")||(u.contentEditable="false"),n.type.spec.draggable&&(u.draggable=!0));let d=u;return u=Aw(u,a,n),c?l=new eh(e,n,a,r,u,p||null,d,c,i,s+1):n.isText?new Xc(e,n,a,r,u,d,i):new t(e,n,a,r,u,p||null,d,i,s+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace=="pre"&&(e.preserveWhitespace="full"),!this.contentDOM)e.getContent=()=>this.node.content;else if(!this.contentLost)e.contentElement=this.contentDOM;else{for(let n=this.children.length-1;n>=0;n--){let a=this.children[n];if(this.dom.contains(a.dom.parentNode)){e.contentElement=a.dom.parentNode;break}}e.contentElement||(e.getContent=()=>B.empty)}return e}matchesNode(e,n,a){return this.dirty==kn&&e.eq(this.node)&&Jc(n,this.outerDeco)&&a.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,n){let a=this.node.inlineContent,r=n,i=e.composing?this.localCompositionInfo(e,n):null,s=i&&i.pos>-1?i:null,o=i&&i.pos<0,l=new nh(this,s&&s.node,e);h8(this.node,this.innerDeco,(c,u,p)=>{c.spec.marks?l.syncToMarks(c.spec.marks,a,e,u):c.type.side>=0&&!p&&l.syncToMarks(u==this.node.childCount?xe.none:this.node.child(u).marks,a,e,u),l.placeWidget(c,e,r)},(c,u,p,d)=>{l.syncToMarks(c.marks,a,e,d);let m;l.findNodeMatch(c,u,p,d)||o&&e.state.selection.from>r&&e.state.selection.to-1&&l.updateNodeAt(c,u,p,m,e)||l.updateNextNode(c,u,p,e,d,r)||l.addNode(c,u,p,e,r),r+=c.nodeSize}),l.syncToMarks([],a,e,0),this.node.isTextblock&&l.addTextblockHacks(),l.destroyRest(),(l.changed||this.dirty==ri)&&(s&&this.protectLocalComposition(e,s),Sw(this.contentDOM,this.children,e),cs&&f8(this.dom))}localCompositionInfo(e,n){let{from:a,to:r}=e.state.selection;if(!(e.state.selection instanceof ue)||an+this.node.content.size)return null;let i=e.input.compositionNode;if(!i||!this.dom.contains(i.parentNode))return null;if(this.node.inlineContent){let s=i.nodeValue,o=g8(this.node.content,s,a-n,r-n);return o<0?null:{node:i,pos:o,text:s}}else return{node:i,pos:-1,text:""}}protectLocalComposition(e,{node:n,pos:a,text:r}){if(this.getDesc(n))return;let i=n;for(;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=void 0)}let s=new Qm(this,i,n,r);e.input.compositionNodes.push(s),this.children=ah(this.children,a,a+r.length,e,s)}update(e,n,a,r){return this.dirty==Kn||!e.sameMarkup(this.node)?!1:(this.updateInner(e,n,a,r),!0)}updateInner(e,n,a,r){this.updateOuterDeco(n),this.node=e,this.innerDeco=a,this.contentDOM&&this.updateChildren(r,this.posAtStart),this.dirty=kn}updateOuterDeco(e){if(Jc(e,this.outerDeco))return;let n=this.nodeDOM.nodeType!=1,a=this.dom;this.dom=Ew(this.dom,this.nodeDOM,th(this.outerDeco,this.node,n),th(e,this.node,n)),this.dom!=a&&(a.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.add("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.nodeDOM.draggable=!0))}deselectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.remove("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&this.nodeDOM.removeAttribute("draggable"))}get domAtom(){return this.node.isAtom}};function Ux(t,e,n,a,r){Aw(a,e,t);let i=new ir(void 0,t,e,n,a,a,a,r,0);return i.contentDOM&&i.updateChildren(r,0),i}var Xc=class t extends ir{constructor(e,n,a,r,i,s,o){super(e,n,a,r,i,null,s,o,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,n,a,r){return this.dirty==Kn||this.dirty!=kn&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(n),(this.dirty!=kn||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,r.trackWrites==this.nodeDOM&&(r.trackWrites=null)),this.node=e,this.dirty=kn,!0)}inParent(){let e=this.parent.contentDOM;for(let n=this.nodeDOM;n;n=n.parentNode)if(n==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,n,a){return e==this.nodeDOM?this.posAtStart+Math.min(n,this.node.text.length):super.localPosFromDOM(e,n,a)}ignoreMutation(e){return e.type!="characterData"&&e.type!="selection"}slice(e,n,a){let r=this.node.cut(e,n),i=document.createTextNode(r.text);return new t(this.parent,r,this.outerDeco,this.innerDeco,i,i,a)}markDirty(e,n){super.markDirty(e,n),this.dom!=this.nodeDOM&&(e==0||n==this.nodeDOM.nodeValue.length)&&(this.dirty=Kn)}get domAtom(){return!1}isText(e){return this.node.text==e}},Zc=class extends ui{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==kn&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName=="IMG"}},eh=class extends ir{constructor(e,n,a,r,i,s,o,l,c,u){super(e,n,a,r,i,s,o,c,u),this.spec=l}update(e,n,a,r){if(this.dirty==Kn)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let i=this.spec.update(e,n,a);return i&&this.updateInner(e,n,a,r),i}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,n,a,r)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,n,a,r){this.spec.setSelection?this.spec.setSelection(e,n,a.root):super.setSelection(e,n,a,r)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}};function Sw(t,e,n){let a=t.firstChild,r=!1;for(let i=0;i>1,o=Math.min(s,e.length);for(;i-1)l>this.index&&(this.changed=!0,this.destroyBetween(this.index,l)),this.top=this.top.children[this.index];else{let u=us.create(this.top,e[s],n,a);this.top.children.splice(this.index,0,u),this.top=u,this.changed=!0}this.index=0,s++}}findNodeMatch(e,n,a,r){let i=-1,s;if(r>=this.preMatch.index&&(s=this.preMatch.matches[r-this.preMatch.index]).parent==this.top&&s.matchesNode(e,n,a))i=this.top.children.indexOf(s,this.index);else for(let o=this.index,l=Math.min(this.top.children.length,o+5);o0;){let o;for(;;)if(a){let c=n.children[a-1];if(c instanceof us)n=c,a=c.children.length;else{o=c,a--;break}}else{if(n==e)break e;a=n.parent.children.indexOf(n),n=n.parent}let l=o.node;if(l){if(l!=t.child(r-1))break;--r,i.set(o,r),s.push(o)}}return{index:r,matched:i,matches:s.reverse()}}function m8(t,e){return t.type.side-e.type.side}function h8(t,e,n,a){let r=e.locals(t),i=0;if(r.length==0){for(let c=0;ci;)o.push(r[s++]);let h=i+d.nodeSize;if(d.isText){let y=h;s!y.inline):o.slice();a(d,b,e.forChild(i,d),m),i=h}}function f8(t){if(t.nodeName=="UL"||t.nodeName=="OL"){let e=t.style.cssText;t.style.cssText=e+"; list-style: square !important",window.getComputedStyle(t).listStyle,t.style.cssText=e}}function g8(t,e,n,a){for(let r=0,i=0;r=n){if(i>=a&&l.slice(a-e.length-o,a-o)==e)return a-e.length;let c=o=0&&c+e.length+o>=n)return o+c;if(n==a&&l.length>=a+e.length-o&&l.slice(a-o,a-o+e.length)==e)return a}}return-1}function ah(t,e,n,a,r){let i=[];for(let s=0,o=0;s=n||u<=e?i.push(l):(cn&&i.push(l.slice(n-c,l.size,a)))}return i}function hh(t,e=null){let n=t.domSelectionRange(),a=t.state.doc;if(!n.focusNode)return null;let r=t.docView.nearestDesc(n.focusNode),i=r&&r.size==0,s=t.docView.posFromDOM(n.focusNode,n.focusOffset,1);if(s<0)return null;let o=a.resolve(s),l,c;if(ru(n)){for(l=s;r&&!r.node;)r=r.parent;let p=r.node;if(r&&p.isAtom&&le.isSelectable(p)&&r.parent&&!(p.isInline&&WC(n.focusNode,n.focusOffset,r.dom))){let d=r.posBefore;c=new le(s==d?o:a.resolve(d))}}else{if(n instanceof t.dom.ownerDocument.defaultView.Selection&&n.rangeCount>1){let p=s,d=s;for(let m=0;m{(n.anchorNode!=a||n.anchorOffset!=r)&&(e.removeEventListener("selectionchange",t.input.hideSelectionGuard),setTimeout(()=>{(!Tw(t)||t.state.selection.visible)&&t.dom.classList.remove("ProseMirror-hideselection")},20))})}function y8(t){let e=t.domSelection();if(!e)return;let n=t.cursorWrapper.dom,a=n.nodeName=="IMG";a?e.collapse(n.parentNode,xt(n)+1):e.collapse(n,0),!a&&!t.state.selection.visible&&Xt&&rr<=11&&(n.disabled=!0,n.disabled=!1)}function Mw(t,e){if(e instanceof le){let n=t.docView.descAt(e.from);n!=t.lastSelectedViewDesc&&(Yx(t),n&&n.selectNode(),t.lastSelectedViewDesc=n)}else Yx(t)}function Yx(t){t.lastSelectedViewDesc&&(t.lastSelectedViewDesc.parent&&t.lastSelectedViewDesc.deselectNode(),t.lastSelectedViewDesc=void 0)}function fh(t,e,n,a){return t.someProp("createSelectionBetween",r=>r(t,e,n))||ue.between(e,n,a)}function Qx(t){return t.editable&&!t.hasFocus()?!1:Nw(t)}function Nw(t){let e=t.domSelectionRange();if(!e.anchorNode)return!1;try{return t.dom.contains(e.anchorNode.nodeType==3?e.anchorNode.parentNode:e.anchorNode)&&(t.editable||t.dom.contains(e.focusNode.nodeType==3?e.focusNode.parentNode:e.focusNode))}catch{return!1}}function x8(t){let e=t.docView.domFromPos(t.state.selection.anchor,0),n=t.domSelectionRange();return ci(e.node,e.offset,n.anchorNode,n.anchorOffset)}function rh(t,e){let{$anchor:n,$head:a}=t.selection,r=e>0?n.max(a):n.min(a),i=r.parent.inlineContent?r.depth?t.doc.resolve(e>0?r.after():r.before()):null:r;return i&&ae.findFrom(i,e)}function nr(t,e){return t.dispatch(t.state.tr.setSelection(e).scrollIntoView()),!0}function ew(t,e,n){let a=t.state.selection;if(a instanceof ue)if(n.indexOf("s")>-1){let{$head:r}=a,i=r.textOffset?null:e<0?r.nodeBefore:r.nodeAfter;if(!i||i.isText||!i.isLeaf)return!1;let s=t.state.doc.resolve(r.pos+i.nodeSize*(e<0?-1:1));return nr(t,new ue(a.$anchor,s))}else if(a.empty){if(t.endOfTextblock(e>0?"forward":"backward")){let r=rh(t.state,e);return r&&r instanceof le?nr(t,r):!1}else if(!(yn&&n.indexOf("m")>-1)){let r=a.$head,i=r.textOffset?null:e<0?r.nodeBefore:r.nodeAfter,s;if(!i||i.isText)return!1;let o=e<0?r.pos-i.nodeSize:r.pos;return i.isAtom||(s=t.docView.descAt(o))&&!s.contentDOM?le.isSelectable(i)?nr(t,new le(e<0?t.state.doc.resolve(r.pos-i.nodeSize):r)):Lo?nr(t,new ue(t.state.doc.resolve(e<0?o:o+i.nodeSize))):!1:!1}}else return!1;else{if(a instanceof le&&a.node.isInline)return nr(t,new ue(e>0?a.$to:a.$from));{let r=rh(t.state,e);return r?nr(t,r):!1}}}function Yc(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function No(t,e){let n=t.pmViewDesc;return n&&n.size==0&&(e<0||t.nextSibling||t.nodeName!="BR")}function rs(t,e){return e<0?w8(t):k8(t)}function w8(t){let e=t.domSelectionRange(),n=e.focusNode,a=e.focusOffset;if(!n)return;let r,i,s=!1;for(wn&&n.nodeType==1&&a0){if(n.nodeType!=1)break;{let o=n.childNodes[a-1];if(No(o,-1))r=n,i=--a;else if(o.nodeType==3)n=o,a=n.nodeValue.length;else break}}else{if(Iw(n))break;{let o=n.previousSibling;for(;o&&No(o,-1);)r=n.parentNode,i=xt(o),o=o.previousSibling;if(o)n=o,a=Yc(n);else{if(n=n.parentNode,n==t.dom)break;a=0}}}s?ih(t,n,a):r&&ih(t,r,i)}function k8(t){let e=t.domSelectionRange(),n=e.focusNode,a=e.focusOffset;if(!n)return;let r=Yc(n),i,s;for(;;)if(a{t.state==r&&ka(t)},50)}function tw(t,e){let n=t.state.doc.resolve(e);if(!(wt||ww)&&n.parent.inlineContent){let r=t.coordsAtPos(e);if(e>n.start()){let i=t.coordsAtPos(e-1),s=(i.top+i.bottom)/2;if(s>r.top&&s1)return i.leftr.top&&s1)return i.left>r.left?"ltr":"rtl"}}return getComputedStyle(t.dom).direction=="rtl"?"rtl":"ltr"}function nw(t,e,n){let a=t.state.selection;if(a instanceof ue&&!a.empty||n.indexOf("s")>-1||yn&&n.indexOf("m")>-1)return!1;let{$from:r,$to:i}=a;if(!r.parent.inlineContent||t.endOfTextblock(e<0?"up":"down")){let s=rh(t.state,e);if(s&&s instanceof le)return nr(t,s)}if(!r.parent.inlineContent){let s=e<0?r:i,o=a instanceof sn?ae.near(s,e):ae.findFrom(s,e);return o?nr(t,o):!1}return!1}function aw(t,e){if(!(t.state.selection instanceof ue))return!0;let{$head:n,$anchor:a,empty:r}=t.state.selection;if(!n.sameParent(a))return!0;if(!r)return!1;if(t.endOfTextblock(e>0?"forward":"backward"))return!0;let i=!n.textOffset&&(e<0?n.nodeBefore:n.nodeAfter);if(i&&!i.isText){let s=t.state.tr;return e<0?s.delete(n.pos-i.nodeSize,n.pos):s.delete(n.pos,n.pos+i.nodeSize),t.dispatch(s),!0}return!1}function rw(t,e,n){t.domObserver.stop(),e.contentEditable=n,t.domObserver.start()}function $8(t){if(!At||t.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(e&&e.nodeType==1&&n==0&&e.firstChild&&e.firstChild.contentEditable=="false"){let a=e.firstChild;rw(t,a,"true"),setTimeout(()=>rw(t,a,"false"),20)}return!1}function C8(t){let e="";return t.ctrlKey&&(e+="c"),t.metaKey&&(e+="m"),t.altKey&&(e+="a"),t.shiftKey&&(e+="s"),e}function j8(t,e){let n=e.keyCode,a=C8(e);if(n==8||yn&&n==72&&a=="c")return aw(t,-1)||rs(t,-1);if(n==46&&!e.shiftKey||yn&&n==68&&a=="c")return aw(t,1)||rs(t,1);if(n==13||n==27)return!0;if(n==37||yn&&n==66&&a=="c"){let r=n==37?tw(t,t.state.selection.from)=="ltr"?-1:1:-1;return ew(t,r,a)||rs(t,r)}else if(n==39||yn&&n==70&&a=="c"){let r=n==39?tw(t,t.state.selection.from)=="ltr"?1:-1:1;return ew(t,r,a)||rs(t,r)}else{if(n==38||yn&&n==80&&a=="c")return nw(t,-1,a)||rs(t,-1);if(n==40||yn&&n==78&&a=="c")return $8(t)||nw(t,1,a)||rs(t,1);if(a==(yn?"m":"c")&&(n==66||n==73||n==89||n==90))return!0}return!1}function gh(t,e){t.someProp("transformCopied",m=>{e=m(e,t)});let n=[],{content:a,openStart:r,openEnd:i}=e;for(;r>1&&i>1&&a.childCount==1&&a.firstChild.childCount==1;){r--,i--;let m=a.firstChild;n.push(m.type.name,m.attrs!=m.type.defaultAttrs?m.attrs:null),a=m.content}let s=t.someProp("clipboardSerializer")||On.fromSchema(t.state.schema),o=Dw(),l=o.createElement("div");l.appendChild(s.serializeFragment(a,{document:o}));let c=l.firstChild,u,p=0;for(;c&&c.nodeType==1&&(u=Lw[c.nodeName.toLowerCase()]);){for(let m=u.length-1;m>=0;m--){let h=o.createElement(u[m]);for(;l.firstChild;)h.appendChild(l.firstChild);l.appendChild(h),p++}c=l.firstChild}c&&c.nodeType==1&&c.setAttribute("data-pm-slice",`${r} ${i}${p?` -${p}`:""} ${JSON.stringify(n)}`);let d=t.someProp("clipboardTextSerializer",m=>m(e,t))||e.content.textBetween(0,e.content.size,` -`);return{dom:l,text:d,slice:e}}function mk(t,e,n,a,r){let i=r.parent.type.spec.code,s,o;if(!n&&!e)return null;let l=!!e&&(a||i||!n);if(l){if(t.someProp("transformPastedText",d=>{e=d(e,i||a,t)}),i)return o=new V(B.from(t.state.schema.text(e.replace(/\r\n?/g,` -`))),0,0),t.someProp("transformPasted",d=>{o=d(o,t,!0)}),o;let p=t.someProp("clipboardTextParser",d=>d(e,r,a,t));if(p)o=p;else{let d=r.marks(),{schema:m}=t.state,h=zn.fromSchema(m);s=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(b=>{let y=s.appendChild(document.createElement("p"));b&&y.appendChild(h.serializeNode(m.text(b,d)))})}}else t.someProp("transformPastedHTML",p=>{n=p(n,t)}),s=ZC(n),Eo&&JC(s);let c=s&&s.querySelector("[data-pm-slice]"),u=c&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(c.getAttribute("data-pm-slice")||"");if(u&&u[3])for(let p=+u[3];p>0;p--){let d=s.firstChild;for(;d&&d.nodeType!=1;)d=d.nextSibling;if(!d)break;s=d}if(o||(o=(t.someProp("clipboardParser")||t.someProp("domParser")||Rn.fromSchema(t.state.schema)).parseSlice(s,{preserveWhitespace:!!(l||u),context:r,ruleFromNode(d){return d.nodeName=="BR"&&!d.nextSibling&&d.parentNode&&!UC.test(d.parentNode.nodeName)?{ignore:!0}:null}})),u)o=YC(Lx(o,+u[1],+u[2]),u[4]);else if(o=V.maxOpen(KC(o.content,r),!0),o.openStart||o.openEnd){let p=0,d=0;for(let m=o.content.firstChild;p{o=p(o,t,l)}),o}var UC=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function KC(t,e){if(t.childCount<2)return t;for(let n=e.depth;n>=0;n--){let r=e.node(n).contentMatchAt(e.index(n)),i,s=[];if(t.forEach(o=>{if(!s)return;let l=r.findWrapping(o.type),c;if(!l)return s=null;if(c=s.length&&i.length&&fk(l,i,o,s[s.length-1],0))s[s.length-1]=c;else{s.length&&(s[s.length-1]=gk(s[s.length-1],i.length));let u=hk(o,l);s.push(u),r=r.matchType(u.type),i=l}}),s)return B.from(s)}return t}function hk(t,e,n=0){for(let a=e.length-1;a>=n;a--)t=e[a].create(null,B.from(t));return t}function fk(t,e,n,a,r){if(r1&&(i=0),r=n&&(o=e<0?s.contentMatchAt(0).fillBefore(o,i<=r).append(o):o.append(s.contentMatchAt(s.childCount).fillBefore(B.empty,!0))),t.replaceChild(e<0?0:t.childCount-1,s.copy(o))}function Lx(t,e,n){return en})),Im.createHTML(t)):t}function ZC(t){let e=/^(\s*]*>)*/.exec(t);e&&(t=t.slice(e[0].length));let n=yk().createElement("div"),a=/<([a-z][^>\s]+)/i.exec(t),r;if((r=a&&bk[a[1].toLowerCase()])&&(t=r.map(i=>"<"+i+">").join("")+t+r.map(i=>"").reverse().join("")),n.innerHTML=XC(t),r)for(let i=0;i=0;o-=2){let l=n.nodes[a[o]];if(!l||l.hasRequiredAttrs())break;r=B.from(l.create(a[o+1],r)),i++,s++}return new V(r,i,s)}var Rt={},zt={},QC={touchstart:!0,touchmove:!0},Km=class{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:"",button:0},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastChromeDelete=0,this.composing=!1,this.compositionNode=null,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.badSafariComposition=!1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}};function e8(t){for(let e in Rt){let n=Rt[e];t.dom.addEventListener(e,t.input.eventHandlers[e]=a=>{n8(t,a)&&!rh(t,a)&&(t.editable||!(a.type in zt))&&n(t,a)},QC[e]?{passive:!0}:void 0)}St&&t.dom.addEventListener("input",()=>null),Xm(t)}function er(t,e){t.input.lastSelectionOrigin=e,t.input.lastSelectionTime=Date.now()}function t8(t){t.domObserver.stop();for(let e in t.input.eventHandlers)t.dom.removeEventListener(e,t.input.eventHandlers[e]);clearTimeout(t.input.composingTimeout),clearTimeout(t.input.lastIOSEnterFallbackTimeout)}function Xm(t){t.someProp("handleDOMEvents",e=>{for(let n in e)t.input.eventHandlers[n]||t.dom.addEventListener(n,t.input.eventHandlers[n]=a=>rh(t,a))})}function rh(t,e){return t.someProp("handleDOMEvents",n=>{let a=n[e.type];return a?a(t,e)||e.defaultPrevented:!1})}function n8(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target;n!=t.dom;n=n.parentNode)if(!n||n.nodeType==11||n.pmViewDesc&&n.pmViewDesc.stopEvent(e))return!1;return!0}function a8(t,e){!rh(t,e)&&Rt[e.type]&&(t.editable||!(e.type in zt))&&Rt[e.type](t,e)}zt.keydown=(t,e)=>{let n=e;if(t.input.shiftKey=n.keyCode==16||n.shiftKey,!kk(t,n)&&(t.input.lastKeyCode=n.keyCode,t.input.lastKeyCodeTime=Date.now(),!(ga&>&&n.keyCode==13)))if(n.keyCode!=229&&t.domObserver.forceFlush(),Qi&&n.keyCode==13&&!n.ctrlKey&&!n.altKey&&!n.metaKey){let a=Date.now();t.input.lastIOSEnter=a,t.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{t.input.lastIOSEnter==a&&(t.someProp("handleKeyDown",r=>r(t,Zr(13,"Enter"))),t.input.lastIOSEnter=0)},200)}else t.someProp("handleKeyDown",a=>a(t,n))||WC(t,n)?n.preventDefault():er(t,"key")};zt.keyup=(t,e)=>{e.keyCode==16&&(t.input.shiftKey=!1)};zt.keypress=(t,e)=>{let n=e;if(kk(t,n)||!n.charCode||n.ctrlKey&&!n.altKey||fn&&n.metaKey)return;if(t.someProp("handleKeyPress",r=>r(t,n))){n.preventDefault();return}let a=t.state.selection;if(!(a instanceof ue)||!a.$from.sameParent(a.$to)){let r=String.fromCharCode(n.charCode),i=()=>t.state.tr.insertText(r).scrollIntoView();!/[\r\n]/.test(r)&&!t.someProp("handleTextInput",s=>s(t,a.$from.pos,a.$to.pos,r,i))&&t.dispatch(i()),n.preventDefault()}};function Zc(t){return{left:t.clientX,top:t.clientY}}function r8(t,e){let n=e.x-t.clientX,a=e.y-t.clientY;return n*n+a*a<100}function ih(t,e,n,a,r){if(a==-1)return!1;let i=t.state.doc.resolve(a);for(let s=i.depth+1;s>0;s--)if(t.someProp(e,o=>s>i.depth?o(t,n,i.nodeAfter,i.before(s),r,!0):o(t,n,i.node(s),i.before(s),r,!1)))return!0;return!1}function Ji(t,e,n){if(t.focused||t.focus(),t.state.selection.eq(e))return;let a=t.state.tr.setSelection(e);n=="pointer"&&a.setMeta("pointer",!0),t.dispatch(a)}function i8(t,e){if(e==-1)return!1;let n=t.state.doc.resolve(e),a=n.nodeAfter;return a&&a.isAtom&&le.isSelectable(a)?(Ji(t,new le(n),"pointer"),!0):!1}function s8(t,e){if(e==-1)return!1;let n=t.state.selection,a,r;n instanceof le&&(a=n.node);let i=t.state.doc.resolve(e);for(let s=i.depth+1;s>0;s--){let o=s>i.depth?i.nodeAfter:i.node(s);if(le.isSelectable(o)){a&&n.$from.depth>0&&s>=n.$from.depth&&i.before(n.$from.depth+1)==n.$from.pos?r=i.before(n.$from.depth):r=i.before(s);break}}return r!=null?(Ji(t,le.create(t.state.doc,r),"pointer"),!0):!1}function o8(t,e,n,a,r){return ih(t,"handleClickOn",e,n,a)||t.someProp("handleClick",i=>i(t,e,a))||(r?s8(t,n):i8(t,n))}function l8(t,e,n,a){return ih(t,"handleDoubleClickOn",e,n,a)||t.someProp("handleDoubleClick",r=>r(t,e,a))}function c8(t,e,n,a){return ih(t,"handleTripleClickOn",e,n,a)||t.someProp("handleTripleClick",r=>r(t,e,a))||u8(t,n,a)}function u8(t,e,n){if(n.button!=0)return!1;let a=t.state.doc;if(e==-1)return a.inlineContent?(Ji(t,ue.create(a,0,a.content.size),"pointer"),!0):!1;let r=a.resolve(e);for(let i=r.depth+1;i>0;i--){let s=i>r.depth?r.nodeAfter:r.node(i),o=r.before(i);if(s.inlineContent)Ji(t,ue.create(a,o+1,o+1+s.content.size),"pointer");else if(le.isSelectable(s))Ji(t,le.create(a,o),"pointer");else continue;return!0}}function sh(t){return Hc(t)}var xk=fn?"metaKey":"ctrlKey";Rt.mousedown=(t,e)=>{let n=e;t.input.shiftKey=n.shiftKey;let a=sh(t),r=Date.now(),i="singleClick";r-t.input.lastClick.time<500&&r8(n,t.input.lastClick)&&!n[xk]&&t.input.lastClick.button==n.button&&(t.input.lastClick.type=="singleClick"?i="doubleClick":t.input.lastClick.type=="doubleClick"&&(i="tripleClick")),t.input.lastClick={time:r,x:n.clientX,y:n.clientY,type:i,button:n.button};let s=t.posAtCoords(Zc(n));s&&(i=="singleClick"?(t.input.mouseDown&&t.input.mouseDown.done(),t.input.mouseDown=new Zm(t,s,n,!!a)):(i=="doubleClick"?l8:c8)(t,s.pos,s.inside,n)?n.preventDefault():er(t,"pointer"))};var Zm=class{constructor(e,n,a,r){this.view=e,this.pos=n,this.event=a,this.flushed=r,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!a[xk],this.allowDefault=a.shiftKey;let i,s;if(n.inside>-1)i=e.state.doc.nodeAt(n.inside),s=n.inside;else{let u=e.state.doc.resolve(n.pos);i=u.parent,s=u.depth?u.before():0}let o=r?null:a.target,l=o?e.docView.nearestDesc(o,!0):null;this.target=l&&l.nodeDOM.nodeType==1?l.nodeDOM:null;let{selection:c}=e.state;a.button==0&&(i.type.spec.draggable&&i.type.spec.selectable!==!1||c instanceof le&&c.from<=s&&c.to>s)&&(this.mightDrag={node:i,pos:s,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&bn&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),er(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>ba(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let n=this.pos;this.view.state.doc!=this.startDoc&&(n=this.view.posAtCoords(Zc(e))),this.updateAllowDefault(e),this.allowDefault||!n?er(this.view,"pointer"):o8(this.view,n.pos,n.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||St&&this.mightDrag&&!this.mightDrag.node.isAtom||gt&&!this.view.state.selection.visible&&Math.min(Math.abs(n.pos-this.view.state.selection.from),Math.abs(n.pos-this.view.state.selection.to))<=2)?(Ji(this.view,ae.near(this.view.state.doc.resolve(n.pos)),"pointer"),e.preventDefault()):er(this.view,"pointer")}move(e){this.updateAllowDefault(e),er(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}};Rt.touchstart=t=>{t.input.lastTouch=Date.now(),sh(t),er(t,"pointer")};Rt.touchmove=t=>{t.input.lastTouch=Date.now(),er(t,"pointer")};Rt.contextmenu=t=>sh(t);function kk(t,e){return t.composing?!0:St&&Math.abs(e.timeStamp-t.input.compositionEndedAt)<500?(t.input.compositionEndedAt=-2e8,!0):!1}var p8=ga?5e3:-1;zt.compositionstart=zt.compositionupdate=t=>{if(!t.composing){t.domObserver.flush();let{state:e}=t,n=e.selection.$to;if(e.selection instanceof ue&&(e.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some(a=>a.type.spec.inclusive===!1)||gt&&Qx&&d8(t)))t.markCursor=t.state.storedMarks||n.marks(),Hc(t,!0),t.markCursor=null;else if(Hc(t,!e.selection.empty),bn&&e.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length){let a=t.domSelectionRange();for(let r=a.focusNode,i=a.focusOffset;r&&r.nodeType==1&&i!=0;){let s=i<0?r.lastChild:r.childNodes[i-1];if(!s)break;if(s.nodeType==3){let o=t.domSelection();o&&o.collapse(s,s.nodeValue.length);break}else r=s,i=-1}}t.input.composing=!0}wk(t,p8)};function d8(t){let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(!e||e.nodeType!=1||n>=e.childNodes.length)return!1;let a=e.childNodes[n];return a.nodeType==1&&a.contentEditable=="false"}zt.compositionend=(t,e)=>{t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=e.timeStamp,t.input.compositionPendingChanges=t.domObserver.pendingRecords().length?t.input.compositionID:0,t.input.compositionNode=null,t.input.badSafariComposition?t.domObserver.forceFlush():t.input.compositionPendingChanges&&Promise.resolve().then(()=>t.domObserver.flush()),t.input.compositionID++,wk(t,20))};function wk(t,e){clearTimeout(t.input.composingTimeout),e>-1&&(t.input.composingTimeout=setTimeout(()=>Hc(t),e))}function _k(t){for(t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=h8());t.input.compositionNodes.length>0;)t.input.compositionNodes.pop().markParentsDirty()}function m8(t){let e=t.domSelectionRange();if(!e.focusNode)return null;let n=uC(e.focusNode,e.focusOffset),a=pC(e.focusNode,e.focusOffset);if(n&&a&&n!=a){let r=a.pmViewDesc,i=t.domObserver.lastChangedTextNode;if(n==i||a==i)return i;if(!r||!r.isText(a.nodeValue))return a;if(t.input.compositionNode==a){let s=n.pmViewDesc;if(!(!s||!s.isText(n.nodeValue)))return a}}return n||a}function h8(){let t=document.createEvent("Event");return t.initEvent("event",!0,!0),t.timeStamp}function Hc(t,e=!1){if(!(ga&&t.domObserver.flushingSoon>=0)){if(t.domObserver.forceFlush(),_k(t),e||t.docView&&t.docView.dirty){let n=th(t),a=t.state.selection;return n&&!n.eq(a)?t.dispatch(t.state.tr.setSelection(n)):(t.markCursor||e)&&!a.$from.node(a.$from.sharedDepth(a.to)).inlineContent?t.dispatch(t.state.tr.deleteSelection()):t.updateState(t.state),!0}return!1}}function f8(t,e){if(!t.dom.parentNode)return;let n=t.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(e),n.style.cssText="position: fixed; left: -10000px; top: 10px";let a=getSelection(),r=document.createRange();r.selectNodeContents(e),t.dom.blur(),a.removeAllRanges(),a.addRange(r),setTimeout(()=>{n.parentNode&&n.parentNode.removeChild(n),t.focus()},50)}var vo=Ht&&tr<15||Qi&&fC<604;Rt.copy=zt.cut=(t,e)=>{let n=e,a=t.state.selection,r=n.type=="cut";if(a.empty)return;let i=vo?null:n.clipboardData,s=a.content(),{dom:o,text:l}=ah(t,s);i?(n.preventDefault(),i.clearData(),i.setData("text/html",o.innerHTML),i.setData("text/plain",l)):f8(t,o),r&&t.dispatch(t.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function g8(t){return t.openStart==0&&t.openEnd==0&&t.content.childCount==1?t.content.firstChild:null}function b8(t,e){if(!t.dom.parentNode)return;let n=t.input.shiftKey||t.state.selection.$from.parent.type.spec.code,a=t.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(a.contentEditable="true"),a.style.cssText="position: fixed; left: -10000px; top: 10px",a.focus();let r=t.input.shiftKey&&t.input.lastKeyCode!=45;setTimeout(()=>{t.focus(),a.parentNode&&a.parentNode.removeChild(a),n?$o(t,a.value,null,r,e):$o(t,a.textContent,a.innerHTML,r,e)},50)}function $o(t,e,n,a,r){let i=mk(t,e,n,a,t.state.selection.$from);if(t.someProp("handlePaste",l=>l(t,r,i||V.empty)))return!0;if(!i)return!1;let s=g8(i),o=s?t.state.tr.replaceSelectionWith(s,a):t.state.tr.replaceSelection(i);return t.dispatch(o.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function vk(t){let e=t.getData("text/plain")||t.getData("Text");if(e)return e;let n=t.getData("text/uri-list");return n?n.replace(/\r?\n/g," "):""}zt.paste=(t,e)=>{let n=e;if(t.composing&&!ga)return;let a=vo?null:n.clipboardData,r=t.input.shiftKey&&t.input.lastKeyCode!=45;a&&$o(t,vk(a),a.getData("text/html"),r,n)?n.preventDefault():b8(t,n)};var Vc=class{constructor(e,n,a){this.slice=e,this.move=n,this.node=a}},y8=fn?"altKey":"ctrlKey";function $k(t,e){let n;return t.someProp("dragCopies",a=>{n=n||a(e)}),n!=null?!n:!e[y8]}Rt.dragstart=(t,e)=>{let n=e,a=t.input.mouseDown;if(a&&a.done(),!n.dataTransfer)return;let r=t.state.selection,i=r.empty?null:t.posAtCoords(Zc(n)),s;if(!(i&&i.pos>=r.from&&i.pos<=(r instanceof le?r.to-1:r.to))){if(a&&a.mightDrag)s=le.create(t.state.doc,a.mightDrag.pos);else if(n.target&&n.target.nodeType==1){let p=t.docView.nearestDesc(n.target,!0);p&&p.node.type.spec.draggable&&p!=t.docView&&(s=le.create(t.state.doc,p.posBefore))}}let o=(s||t.state.selection).content(),{dom:l,text:c,slice:u}=ah(t,o);(!n.dataTransfer.files.length||!gt||Yx>120)&&n.dataTransfer.clearData(),n.dataTransfer.setData(vo?"Text":"text/html",l.innerHTML),n.dataTransfer.effectAllowed="copyMove",vo||n.dataTransfer.setData("text/plain",c),t.dragging=new Vc(u,$k(t,n),s)};Rt.dragend=t=>{let e=t.dragging;window.setTimeout(()=>{t.dragging==e&&(t.dragging=null)},50)};zt.dragover=zt.dragenter=(t,e)=>e.preventDefault();zt.drop=(t,e)=>{try{x8(t,e,t.dragging)}finally{t.dragging=null}};function x8(t,e,n){if(!e.dataTransfer)return;let a=t.posAtCoords(Zc(e));if(!a)return;let r=t.state.doc.resolve(a.pos),i=n&&n.slice;i?t.someProp("transformPasted",m=>{i=m(i,t,!1)}):i=mk(t,vk(e.dataTransfer),vo?null:e.dataTransfer.getData("text/html"),!1,r);let s=!!(n&&$k(t,e));if(t.someProp("handleDrop",m=>m(t,e,i||V.empty,s))){e.preventDefault();return}if(!i)return;e.preventDefault();let o=i?N1(t.state.doc,r.pos,i):r.pos;o==null&&(o=r.pos);let l=t.state.tr;if(s){let{node:m}=n;m?m.replace(l):l.deleteSelection()}let c=l.mapping.map(o),u=i.openStart==0&&i.openEnd==0&&i.content.childCount==1,p=l.doc;if(u?l.replaceRangeWith(c,c,i.content.firstChild):l.replaceRange(c,c,i),l.doc.eq(p))return;let d=l.doc.resolve(c);if(u&&le.isSelectable(i.content.firstChild)&&d.nodeAfter&&d.nodeAfter.sameMarkup(i.content.firstChild))l.setSelection(new le(d));else{let m=l.mapping.map(o);l.mapping.maps[l.mapping.maps.length-1].forEach((h,b,y,k)=>m=k),l.setSelection(nh(t,d,l.doc.resolve(m)))}t.focus(),t.dispatch(l.setMeta("uiEvent","drop"))}Rt.focus=t=>{t.input.lastFocus=Date.now(),t.focused||(t.domObserver.stop(),t.dom.classList.add("ProseMirror-focused"),t.domObserver.start(),t.focused=!0,setTimeout(()=>{t.docView&&t.hasFocus()&&!t.domObserver.currentSelection.eq(t.domSelectionRange())&&ba(t)},20))};Rt.blur=(t,e)=>{let n=e;t.focused&&(t.domObserver.stop(),t.dom.classList.remove("ProseMirror-focused"),t.domObserver.start(),n.relatedTarget&&t.dom.contains(n.relatedTarget)&&t.domObserver.currentSelection.clear(),t.focused=!1)};Rt.beforeinput=(t,e)=>{if(gt&&ga&&e.inputType=="deleteContentBackward"){t.domObserver.flushSoon();let{domChangeCount:a}=t.input;setTimeout(()=>{if(t.input.domChangeCount!=a||(t.dom.blur(),t.focus(),t.someProp("handleKeyDown",i=>i(t,Zr(8,"Backspace")))))return;let{$cursor:r}=t.state.selection;r&&r.pos>0&&t.dispatch(t.state.tr.delete(r.pos-1,r.pos).scrollIntoView())},50)}};for(let t in zt)Rt[t]=zt[t];function Co(t,e){if(t==e)return!0;for(let n in t)if(t[n]!==e[n])return!1;for(let n in e)if(!(n in t))return!1;return!0}var Wc=class t{constructor(e,n){this.toDOM=e,this.spec=n||ei,this.side=this.spec.side||0}map(e,n,a,r){let{pos:i,deleted:s}=e.mapResult(n.from+r,this.side<0?-1:1);return s?null:new bt(i-a,i-a,this)}valid(){return!0}eq(e){return this==e||e instanceof t&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&Co(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}},Qr=class t{constructor(e,n){this.attrs=e,this.spec=n||ei}map(e,n,a,r){let i=e.map(n.from+r,this.spec.inclusiveStart?-1:1)-a,s=e.map(n.to+r,this.spec.inclusiveEnd?1:-1)-a;return i>=s?null:new bt(i,s,this)}valid(e,n){return n.from=e&&(!i||i(o.spec))&&a.push(o.copy(o.from+r,o.to+r))}for(let s=0;se){let o=this.children[s]+1;this.children[s+2].findInner(e-o,n-o,a,r+o,i)}}map(e,n,a){return this==jt||e.maps.length==0?this:this.mapInner(e,n,0,0,a||ei)}mapInner(e,n,a,r,i){let s;for(let o=0;o{let c=l+a,u;if(u=jk(n,o,c)){for(r||(r=this.children.slice());io&&p.to=e){this.children[o]==e&&(a=this.children[o+2]);break}let i=e+1,s=i+n.content.size;for(let o=0;oi&&l.type instanceof Qr){let c=Math.max(i,l.from)-i,u=Math.min(s,l.to)-i;cr.map(e,n,ei));return t.from(a)}forChild(e,n){if(n.isLeaf)return We.empty;let a=[];for(let r=0;rn instanceof We)?e:e.reduce((n,a)=>n.concat(a instanceof We?a:a.members),[]))}}forEachSet(e){for(let n=0;n{let y=b-h-(m-d);for(let k=0;k_+u-p)continue;let $=o[k]+u-p;m>=$?o[k+1]=d<=$?-2:-1:d>=u&&y&&(o[k]+=y,o[k+1]+=y)}p+=y}),u=n.maps[c].map(u,-1)}let l=!1;for(let c=0;c=a.content.size){l=!0;continue}let d=n.map(t[c+1]+i,-1),m=d-r,{index:h,offset:b}=a.content.findIndex(p),y=a.maybeChild(h);if(y&&b==p&&b+y.nodeSize==m){let k=o[c+2].mapInner(n,y,u+1,t[c]+i+1,s);k!=jt?(o[c]=p,o[c+1]=m,o[c+2]=k):(o[c+1]=-2,l=!0)}else l=!0}if(l){let c=w8(o,t,e,n,r,i,s),u=Kc(c,a,0,s);e=u.local;for(let p=0;pn&&s.to{let c=jk(t,o,l+n);if(c){i=!0;let u=Kc(c,o,n+l+1,a);u!=jt&&r.push(l,l+o.nodeSize,u)}});let s=Ck(i?Sk(t):t,-n).sort(ti);for(let o=0;o0;)e++;t.splice(e,0,n)}function Rm(t){let e=[];return t.someProp("decorations",n=>{let a=n(t.state);a&&a!=jt&&e.push(a)}),t.cursorWrapper&&e.push(We.create(t.state.doc,[t.cursorWrapper.deco])),Uc.from(e)}var _8={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},v8=Ht&&tr<=11,Ym=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}},Qm=class{constructor(e,n){this.view=e,this.handleDOMChange=n,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new Ym,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver(a=>{for(let r=0;rr.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():St&&e.composing&&a.some(r=>r.type=="childList"&&r.target.nodeName=="TR")?(e.input.badSafariComposition=!0,this.flushSoon()):this.flush()}),v8&&(this.onCharData=a=>{this.queue.push({target:a.target,type:"characterData",oldValue:a.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,_8)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let n=0;nthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(Nx(this.view)){if(this.suppressingSelectionUpdates)return ba(this.view);if(Ht&&tr<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&ni(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let n=new Set,a;for(let i=e.focusNode;i;i=Yi(i))n.add(i);for(let i=e.anchorNode;i;i=Yi(i))if(n.has(i)){a=i;break}let r=a&&this.view.docView.nearestDesc(a);if(r&&r.ignoreMutation({type:"selection",target:a.nodeType==3?a.parentNode:a}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let n=this.pendingRecords();n.length&&(this.queue=[]);let a=e.domSelectionRange(),r=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(a)&&Nx(e)&&!this.ignoreSelectionChange(a),i=-1,s=-1,o=!1,l=[];if(e.editable)for(let u=0;uu.nodeName=="BR")&&(e.input.lastKeyCode==8||e.input.lastKeyCode==46)){for(let u of l)if(u.nodeName=="BR"&&u.parentNode){let p=u.nextSibling;for(;p&&p.nodeType==1;){if(p.contentEditable=="false"){u.parentNode.removeChild(u);break}p=p.firstChild}}}else if(bn&&l.length){let u=l.filter(p=>p.nodeName=="BR");if(u.length==2){let[p,d]=u;p.parentNode&&p.parentNode.parentNode==d.parentNode?d.remove():p.remove()}else{let{focusNode:p}=this.currentSelection;for(let d of u){let m=d.parentNode;m&&m.nodeName=="LI"&&(!p||j8(e,p)!=m)&&d.remove()}}}let c=null;i<0&&r&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||r)&&(i>-1&&(e.docView.markDirty(i,s),$8(e)),e.input.badSafariComposition&&(e.input.badSafariComposition=!1,S8(e,l)),this.handleDOMChange(i,s,o,l),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(a)||ba(e),this.currentSelection.set(a))}registerMutation(e,n){if(n.indexOf(e.target)>-1)return null;let a=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(a==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!a||a.ignoreMutation(e))return null;if(e.type=="childList"){for(let u=0;ur;y--){let k=a.childNodes[y-1],_=k.pmViewDesc;if(k.nodeName=="BR"&&!_){i=y;break}if(!_||_.size)break}let p=t.state.doc,d=t.someProp("domParser")||Rn.fromSchema(t.state.schema),m=p.resolve(s),h=null,b=d.parse(a,{topNode:m.parent,topMatch:m.parent.contentMatchAt(m.index()),topOpen:!0,from:r,to:i,preserveWhitespace:m.parent.type.whitespace=="pre"?"full":!0,findPositions:c,ruleFromNode:A8,context:m});if(c&&c[0].pos!=null){let y=c[0].pos,k=c[1]&&c[1].pos;k==null&&(k=y),h={anchor:y+s,head:k+s}}return{doc:b,sel:h,from:s,to:o}}function A8(t){let e=t.pmViewDesc;if(e)return e.parseRule();if(t.nodeName=="BR"&&t.parentNode){if(St&&/^(ul|ol)$/i.test(t.parentNode.nodeName)){let n=document.createElement("div");return n.appendChild(document.createElement("li")),{skip:n}}else if(t.parentNode.lastChild==t||St&&/^(tr|table)$/i.test(t.parentNode.nodeName))return{ignore:!0}}else if(t.nodeName=="IMG"&&t.getAttribute("mark-placeholder"))return{ignore:!0};return null}var T8=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function M8(t,e,n,a,r){let i=t.input.compositionPendingChanges||(t.composing?t.input.compositionID:0);if(t.input.compositionPendingChanges=0,e<0){let I=t.input.lastSelectionTime>Date.now()-50?t.input.lastSelectionOrigin:null,F=th(t,I);if(F&&!t.state.selection.eq(F)){if(gt&&ga&&t.input.lastKeyCode===13&&Date.now()-100T(t,Zr(13,"Enter"))))return;let L=t.state.tr.setSelection(F);I=="pointer"?L.setMeta("pointer",!0):I=="key"&&L.scrollIntoView(),i&&L.setMeta("composition",i),t.dispatch(L)}return}let s=t.state.doc.resolve(e),o=s.sharedDepth(n);e=s.before(o+1),n=t.state.doc.resolve(n).after(o+1);let l=t.state.selection,c=E8(t,e,n),u=t.state.doc,p=u.slice(c.from,c.to),d,m;t.input.lastKeyCode===8&&Date.now()-100Date.now()-225||ga)&&r.some(I=>I.nodeType==1&&!T8.test(I.nodeName))&&(!h||h.endA>=h.endB)&&t.someProp("handleKeyDown",I=>I(t,Zr(13,"Enter")))){t.input.lastIOSEnter=0;return}if(!h)if(a&&l instanceof ue&&!l.empty&&l.$head.sameParent(l.$anchor)&&!t.composing&&!(c.sel&&c.sel.anchor!=c.sel.head))h={start:l.from,endA:l.to,endB:l.to};else{if(c.sel){let I=Hx(t,t.state.doc,c.sel);if(I&&!I.eq(t.state.selection)){let F=t.state.tr.setSelection(I);i&&F.setMeta("composition",i),t.dispatch(F)}}return}t.state.selection.fromt.state.selection.from&&h.start<=t.state.selection.from+2&&t.state.selection.from>=c.from?h.start=t.state.selection.from:h.endA=t.state.selection.to-2&&t.state.selection.to<=c.to&&(h.endB+=t.state.selection.to-h.endA,h.endA=t.state.selection.to)),Ht&&tr<=11&&h.endB==h.start+1&&h.endA==h.start&&h.start>c.from&&c.doc.textBetween(h.start-c.from-1,h.start-c.from+1)==" \xA0"&&(h.start--,h.endA--,h.endB--);let b=c.doc.resolveNoCache(h.start-c.from),y=c.doc.resolveNoCache(h.endB-c.from),k=u.resolve(h.start),_=b.sameParent(y)&&b.parent.inlineContent&&k.end()>=h.endA;if((Qi&&t.input.lastIOSEnter>Date.now()-225&&(!_||r.some(I=>I.nodeName=="DIV"||I.nodeName=="P"))||!_&&b.posI(t,Zr(13,"Enter")))){t.input.lastIOSEnter=0;return}if(t.state.selection.anchor>h.start&&I8(u,h.start,h.endA,b,y)&&t.someProp("handleKeyDown",I=>I(t,Zr(8,"Backspace")))){ga&>&&t.domObserver.suppressSelectionUpdates();return}gt&&h.endB==h.start&&(t.input.lastChromeDelete=Date.now()),ga&&!_&&b.start()!=y.start()&&y.parentOffset==0&&b.depth==y.depth&&c.sel&&c.sel.anchor==c.sel.head&&c.sel.head==h.endA&&(h.endB-=2,y=c.doc.resolveNoCache(h.endB-c.from),setTimeout(()=>{t.someProp("handleKeyDown",function(I){return I(t,Zr(13,"Enter"))})},20));let $=h.start,M=h.endA,N=I=>{let F=I||t.state.tr.replace($,M,c.doc.slice(h.start-c.from,h.endB-c.from));if(c.sel){let L=Hx(t,F.doc,c.sel);L&&!(gt&&t.composing&&L.empty&&(h.start!=h.endB||t.input.lastChromeDeleteba(t),20));let I=N(t.state.tr.delete($,M)),F=u.resolve(h.start).marksAcross(u.resolve(h.endA));F&&I.ensureMarks(F),t.dispatch(I)}else if(h.endA==h.endB&&(E=N8(b.parent.content.cut(b.parentOffset,y.parentOffset),k.parent.content.cut(k.parentOffset,h.endA-k.start())))){let I=N(t.state.tr);E.type=="add"?I.addMark($,M,E.mark):I.removeMark($,M,E.mark),t.dispatch(I)}else if(b.parent.child(b.index()).isText&&b.index()==y.index()-(y.textOffset?0:1)){let I=b.parent.textBetween(b.parentOffset,y.parentOffset),F=()=>N(t.state.tr.insertText(I,$,M));t.someProp("handleTextInput",L=>L(t,$,M,I,F))||t.dispatch(F())}else t.dispatch(N());else t.dispatch(N())}function Hx(t,e,n){return Math.max(n.anchor,n.head)>e.content.size?null:nh(t,e.resolve(n.anchor),e.resolve(n.head))}function N8(t,e){let n=t.firstChild.marks,a=e.firstChild.marks,r=n,i=a,s,o,l;for(let u=0;uu.mark(o.addToSet(u.marks));else if(r.length==0&&i.length==1)o=i[0],s="remove",l=u=>u.mark(o.removeFromSet(u.marks));else return null;let c=[];for(let u=0;un||zm(s,!0,!1)0&&(e||t.indexAfter(a)==t.node(a).childCount);)a--,r++,e=!1;if(n){let i=t.node(a).maybeChild(t.indexAfter(a));for(;i&&!i.isLeaf;)i=i.firstChild,r++}return r}function R8(t,e,n,a,r){let i=t.findDiffStart(e,n);if(i==null)return null;let{a:s,b:o}=t.findDiffEnd(e,n+t.size,n+e.size);if(r=="end"){let l=Math.max(0,i-Math.min(s,o));a-=s+l-i}if(s=s?i-a:0;i-=l,i&&i=o?i-a:0;i-=l,i&&i=56320&&e<=57343&&n>=55296&&n<=56319}var jo=class{constructor(e,n){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new Km,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=n,this.state=n.state,this.directPlugins=n.plugins||[],this.directPlugins.forEach(Zx),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=Kx(this),Ux(this),this.nodeViews=Xx(this),this.docView=jx(this.state.doc,Wx(this),Rm(this),this.dom,this),this.domObserver=new Qm(this,(a,r,i,s)=>M8(this,a,r,i,s)),this.domObserver.start(),e8(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let n in e)this._props[n]=e[n];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&Xm(this);let n=this._props;this._props=e,e.plugins&&(e.plugins.forEach(Zx),this.directPlugins=e.plugins),this.updateStateInner(e.state,n)}setProps(e){let n={};for(let a in this._props)n[a]=this._props[a];n.state=this.state;for(let a in e)n[a]=e[a];this.update(n)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,n){var a;let r=this.state,i=!1,s=!1;e.storedMarks&&this.composing&&(_k(this),s=!0),this.state=e;let o=r.plugins!=e.plugins||this._props.plugins!=n.plugins;if(o||this._props.plugins!=n.plugins||this._props.nodeViews!=n.nodeViews){let m=Xx(this);O8(m,this.nodeViews)&&(this.nodeViews=m,i=!0)}(o||n.handleDOMEvents!=this._props.handleDOMEvents)&&Xm(this),this.editable=Kx(this),Ux(this);let l=Rm(this),c=Wx(this),u=r.plugins!=e.plugins&&!r.doc.eq(e.doc)?"reset":e.scrollToSelection>r.scrollToSelection?"to selection":"preserve",p=i||!this.docView.matchesNode(e.doc,c,l);(p||!e.selection.eq(r.selection))&&(s=!0);let d=u=="preserve"&&s&&this.dom.style.overflowAnchor==null&&yC(this);if(s){this.domObserver.stop();let m=p&&(Ht||gt)&&!this.composing&&!r.selection.empty&&!e.selection.empty&&z8(r.selection,e.selection);if(p){let h=gt?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=m8(this)),(i||!this.docView.update(e.doc,c,l,this))&&(this.docView.updateOuterDeco(c),this.docView.destroy(),this.docView=jx(e.doc,c,l,this.dom,this)),h&&(!this.trackWrites||!this.dom.contains(this.trackWrites))&&(m=!0)}m||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&DC(this))?ba(this,m):(uk(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(r),!((a=this.dragging)===null||a===void 0)&&a.node&&!r.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,r),u=="reset"?this.dom.scrollTop=0:u=="to selection"?this.scrollToSelection():d&&xC(d)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!(!e||!this.dom.contains(e.nodeType==1?e:e.parentNode))){if(!this.someProp("handleScrollToSelection",n=>n(this)))if(this.state.selection instanceof le){let n=this.docView.domAfterPos(this.state.selection.from);n.nodeType==1&&kx(this,n.getBoundingClientRect(),e)}else kx(this,this.coordsAtPos(this.state.selection.head,1),e)}}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let n=0;n0&&in.ownerDocument.getSelection()),this._root=n}return e||document}updateRoot(){this._root=null}posAtCoords(e){return CC(this,e)}coordsAtPos(e,n=1){return rk(this,e,n)}domAtPos(e,n=0){return this.docView.domFromPos(e,n)}nodeDOM(e){let n=this.docView.descAt(e);return n?n.nodeDOM:null}posAtDOM(e,n,a=-1){let r=this.docView.posFromDOM(e,n,a);if(r==null)throw new RangeError("DOM position not inside the editor");return r}endOfTextblock(e,n){return TC(this,n||this.state,e)}pasteHTML(e,n){return $o(this,"",e,!1,n||new ClipboardEvent("paste"))}pasteText(e,n){return $o(this,e,null,!0,n||new ClipboardEvent("paste"))}serializeForClipboard(e){return ah(this,e)}destroy(){this.docView&&(t8(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],Rm(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,lC())}get isDestroyed(){return this.docView==null}dispatchEvent(e){return a8(this,e)}domSelectionRange(){let e=this.domSelection();return e?St&&this.root.nodeType===11&&mC(this.dom.ownerDocument)==this.dom&&C8(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}};jo.prototype.dispatch=function(t){let e=this._props.dispatchTransaction;e?e.call(this,t):this.updateState(this.state.apply(t))};function Wx(t){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(t.editable),t.someProp("attributes",n=>{if(typeof n=="function"&&(n=n(t.state)),n)for(let a in n)a=="class"?e.class+=" "+n[a]:a=="style"?e.style=(e.style?e.style+";":"")+n[a]:!e[a]&&a!="contenteditable"&&a!="nodeName"&&(e[a]=String(n[a]))}),e.translate||(e.translate="no"),[bt.node(0,t.state.doc.content.size,e)]}function Ux(t){if(t.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),t.cursorWrapper={dom:e,deco:bt.widget(t.state.selection.from,e,{raw:!0,marks:t.markCursor})}}else t.cursorWrapper=null}function Kx(t){return!t.someProp("editable",e=>e(t.state)===!1)}function z8(t,e){let n=Math.min(t.$anchor.sharedDepth(t.head),e.$anchor.sharedDepth(e.head));return t.$anchor.start(n)!=e.$anchor.start(n)}function Xx(t){let e=Object.create(null);function n(a){for(let r in a)Object.prototype.hasOwnProperty.call(e,r)||(e[r]=a[r])}return t.someProp("nodeViews",n),t.someProp("markViews",n),e}function O8(t,e){let n=0,a=0;for(let r in t){if(t[r]!=e[r])return!0;n++}for(let r in e)a++;return n!=a}function Zx(t){if(t.spec.state||t.spec.filterTransaction||t.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}function wa(t,e){return t.meta={package:"@milkdown/core",group:"System",...e},t}var Tk={text:(t,e,n,a)=>{let r=t.value;return/^[^*_\\]*\s+$/.test(r)?r:n.safe(r,{...a,encode:[]})},strong:(t,e,n,a)=>{let r=t.marker||n.options.strong||"*",i=n.enter("strong"),s=n.createTracker(a),o=s.move(r+r);return o+=s.move(n.containerPhrasing(t,{before:o,after:r,...s.current()})),o+=s.move(r+r),i(),o},emphasis:(t,e,n,a)=>{let r=t.marker||n.options.emphasis||"*",i=n.enter("emphasis"),s=n.createTracker(a),o=s.move(r);return o+=s.move(n.containerPhrasing(t,{before:o,after:r,...s.current()})),o+=s.move(r),i(),o}},Ot=ge({},"editorView"),Ao=ge({},"editorState"),lh=ge([],"initTimer"),Ek=ge({},"editor"),ls=ge([],"inputRules"),On=ge([],"prosePlugins"),cs=ge([],"remarkPlugins"),us=ge([],"nodeView"),su=ge([],"markView"),ri=ge(io().use(Ni).use(Oi),"remark"),ts=ge({handlers:Tk,encode:[]},"remarkStringifyOptions"),Jc=hn("ConfigReady");function B8(t){let e=n=>(n.record(Jc),async()=>(await t(n),n.done(Jc),()=>{n.clearTimer(Jc)}));return wa(e,{displayName:"Config"}),e}var ya=hn("InitReady");function L8(t){let e=n=>(n.inject(Ek,t).inject(On,[]).inject(cs,[]).inject(ls,[]).inject(us,[]).inject(su,[]).inject(ts,{handlers:Tk,encode:[]}).inject(ri,io().use(Ni).use(Oi)).inject(lh,[Jc]).record(ya),async()=>{await n.waitTimers(lh);let a=n.get(ts);return n.set(ri,io().use(Ni).use(Oi,a)),n.done(ya),()=>{n.remove(Ek).remove(On).remove(cs).remove(ls).remove(us).remove(su).remove(ts).remove(ri).remove(lh).clearTimer(ya)}});return wa(e,{displayName:"Init"}),e}var Bt=hn("SchemaReady"),Yc=ge([],"schemaTimer"),Vt=ge({},"schema"),ns=ge([],"nodes"),as=ge([],"marks");function Ak(t){return{...t,parseDOM:t.parseDOM?.map(e=>({priority:t.priority,...e}))}}var Mk=t=>(t.inject(Vt,{}).inject(ns,[]).inject(as,[]).inject(Yc,[ya]).record(Bt),async()=>{await t.waitTimers(Yc);let e=t.get(ri),n=t.get(cs).reduce((r,i)=>r.use(i.plugin,i.options),e);t.set(ri,n);let a=new Sc({nodes:Object.fromEntries(t.get(ns).map(([r,i])=>[r,Ak(i)])),marks:Object.fromEntries(t.get(as).map(([r,i])=>[r,Ak(i)]))});return t.set(Vt,a),t.done(Bt),()=>{t.remove(Vt).remove(ns).remove(as).remove(Yc).clearTimer(Bt)}});wa(Mk,{displayName:"Schema"});var Nk=class{constructor(){this.setCtx=t=>{this.#e=t},this.chain=()=>{if(this.#e==null)throw Yl();let t=this.#e,e=[],n=this.get.bind(this),a={run:()=>{let i=Kr(...e),s=t.get(Ot);return i(s.state,s.dispatch,s)},inline:i=>(e.push(i),a),pipe:r.bind(this)};function r(i,s){let o=n(i);return e.push(o(s)),a}return a}}#t=new pd;#e=null;get ctx(){return this.#e}create(t,e){let n=t.create(this.#t.sliceMap);return n.set(e),n}get(t){return this.#t.get(t).get()}remove(t){return this.#t.remove(t)}call(t,e){if(this.#e==null)throw Yl();let n=this.get(t)(e),a=this.#e.get(Ot);return n(a.state,a.dispatch,a)}inline(t){if(this.#e==null)throw Yl();let e=this.#e.get(Ot);return t(e.state,e.dispatch,e)}};function Ik(t="cmdKey"){return ge((()=>()=>!1),t)}var xe=ge(new Nk,"commands"),Qc=ge([Bt],"commandsTimer"),rs=hn("CommandsReady"),Rk=t=>{let e=new Nk;return e.setCtx(t),t.inject(xe,e).inject(Qc,[Bt]).record(rs),async()=>(await t.waitTimers(Qc),t.done(rs),()=>{t.remove(xe).remove(Qc).clearTimer(rs)})};wa(Rk,{displayName:"Commands"});function D8(t){return t.Backspace=Kr(Q1,Rc,U1,xm),t}var zk=class{constructor(){this.setCtx=t=>{this.#t=t},this.add=t=>(this.#e.push(t),()=>{this.#e=this.#e.filter(e=>e!==t)}),this.addObjectKeymap=t=>{let e=[];return Object.entries(t).forEach(([n,a])=>{if(typeof a=="function"){let r={key:n,onRun:()=>a};this.#e.push(r),e.push(()=>{this.#e=this.#e.filter(i=>i!==r)})}else this.#e.push(a),e.push(()=>{this.#e=this.#e.filter(r=>r!==a)})}),()=>{e.forEach(n=>n())}},this.addBaseKeymap=()=>{let t=D8(Y1);return this.addObjectKeymap(t)},this.build=()=>{let t={};return this.#e.forEach(e=>{t[e.key]=[...t[e.key]||[],e]}),Object.fromEntries(Object.entries(t).map(([e,n])=>{let a=n.sort((i,s)=>(s.priority??50)-(i.priority??50));return[e,(i,s,o)=>{let l=this.#t;if(l==null)throw Ti();return Kr(...a.map(c=>c.onRun(l)))(i,s,o)}]}))}}#t=null;#e=[];get ctx(){return this.#t}},zo=ge(new zk,"keymap"),ch=ge([Bt],"keymapTimer"),is=hn("KeymapReady"),F8=t=>{let e=new zk;return e.setCtx(t),t.inject(zo,e).inject(ch,[Bt]).record(is),async()=>(await t.waitTimers(ch),t.done(is),()=>{t.remove(zo).remove(ch).clearTimer(is)})},eu=hn("ParserReady"),Ok=(()=>{throw Ti()}),xa=ge(Ok,"parser"),uh=ge([],"parserTimer"),Bk=t=>(t.inject(xa,Ok).inject(uh,[Bt]).record(eu),async()=>{await t.waitTimers(uh);let e=t.get(ri),n=t.get(Vt);return t.set(xa,fx.create(n,e)),t.done(eu),()=>{t.remove(xa).remove(uh).clearTimer(eu)}});wa(Bk,{displayName:"Parser"});var ss=hn("SerializerReady"),ph=ge([],"serializerTimer"),Lk=(()=>{throw Ti()}),ka=ge(Lk,"serializer"),Dk=t=>(t.inject(ka,Lk).inject(ph,[Bt]).record(ss),async()=>{await t.waitTimers(ph);let e=t.get(ri),n=t.get(Vt);return t.set(ka,bx.create(n,e)),t.done(ss),()=>{t.remove(ka).remove(ph).clearTimer(ss)}});wa(Dk,{displayName:"Serializer"});var To=ge("","defaultValue"),Mo=ge(t=>t,"stateOptions"),tu=ge([],"editorStateTimer"),nu=hn("EditorStateReady");function q8(t,e,n){if(typeof t=="string")return e(t);if(t.type==="html")return Rn.fromSchema(n).parse(t.dom);if(t.type==="json")return Gt.fromJSON(n,t.value);throw wb(t)}var P8=new Se("MILKDOWN_STATE_TRACKER"),Fk=t=>(t.inject(To,"").inject(Ao,{}).inject(Mo,e=>e).inject(tu,[eu,ss,rs,is]).record(nu),async()=>{await t.waitTimers(tu);let e=t.get(Vt),n=t.get(xa),a=t.get(ls),r=t.get(Mo),i=t.get(On),s=q8(t.get(To),n,e),o=t.get(zo),l=o.addBaseKeymap(),c=[...i,new je({key:P8,state:{init:()=>{},apply:(d,m,h,b)=>{t.set(Ao,b)}}}),nx({rules:a}),ux(o.build())];t.set(On,c);let u=r({schema:e,doc:s,plugins:c}),p=Hi.create(u);return t.set(Ao,p),t.done(nu),()=>{l(),t.remove(To).remove(Ao).remove(Mo).remove(tu).clearTimer(nu)}});wa(Fk,{displayName:"EditorState"});var ps=ge([],"pasteRule"),au=ge([Bt],"pasteRuleTimer"),ru=hn("PasteRuleReady"),qk=t=>(t.inject(ps,[]).inject(au,[Bt]).record(ru),async()=>(await t.waitTimers(au),t.done(ru),()=>{t.remove(ps).remove(au).clearTimer(ru)}));wa(qk,{displayName:"PasteRule"});var No=hn("EditorViewReady"),iu=ge([],"editorViewTimer"),Io=ge({},"editorViewOptions"),Ro=ge(null,"root"),dh=ge(null,"rootDOM"),mh=ge({},"rootAttrs");function G8(t,e){let n=document.createElement("div");n.className="milkdown",t.appendChild(n),e.set(dh,n);let a=e.get(mh);return Object.entries(a).forEach(([r,i])=>n.setAttribute(r,i)),n}function H8(t){t.classList.add("editor"),t.setAttribute("role","textbox")}var V8=new Se("MILKDOWN_VIEW_CLEAR"),Pk=t=>(t.inject(Ro,document.body).inject(Ot,{}).inject(Io,{}).inject(dh,null).inject(mh,{}).inject(iu,[nu,ru]).record(No),async()=>{await t.wait(ya);let e=t.get(Ro)||document.body,n=typeof e=="string"?document.querySelector(e):e;t.update(On,s=>[new je({key:V8,view:o=>{let l=n?G8(n,t):void 0;return(()=>{if(l&&n){let u=o.dom;n.replaceChild(l,u),l.appendChild(u)}})(),{destroy:()=>{l?.parentNode&&l?.parentNode.replaceChild(o.dom,l),l?.remove()}}}}),...s]),await t.waitTimers(iu);let a=t.get(Ao),r=t.get(Io),i=new jo(n,{state:a,nodeViews:Object.fromEntries(t.get(us)),markViews:Object.fromEntries(t.get(su)),transformPasted:(s,o,l)=>(t.get(ps).sort((c,u)=>(u.priority??50)-(c.priority??50)).map(c=>c.run).forEach(c=>{s=c(s,o,l)}),s),...r});return H8(i.dom),t.set(Ot,i),t.done(No),()=>{i?.destroy(),t.remove(Ro).remove(Ot).remove(Io).remove(dh).remove(mh).remove(iu).clearTimer(No)}});wa(Pk,{displayName:"EditorView"});var xn=(function(t){return t.Idle="Idle",t.OnCreate="OnCreate",t.Created="Created",t.OnDestroy="OnDestroy",t.Destroyed="Destroyed",t})({}),Gk=class Hk{constructor(){this.enableInspector=(e=!0)=>(this.#t=e,this),this.onStatusChange=e=>(this.#n=e,this),this.config=e=>(this.#a.push(e),this),this.removeConfig=e=>(this.#a=this.#a.filter(n=>n!==e),this),this.use=e=>{let n=[e].flat();return n.flat().forEach(a=>{this.#r.set(a,{ctx:void 0,handler:void 0,cleanup:void 0})}),this.#e===xn.Created&&this.#c(n,this.#r),this},this.remove=async e=>this.#e===xn.OnCreate?(console.warn("[Milkdown]: You are trying to remove plugins when the editor is creating, this is not recommended, please check your code."),new Promise(n=>{setTimeout(()=>{n(this.remove(e))},50)})):(await this.#p([e].flat(),!0),this),this.create=async()=>this.#e===xn.OnCreate?this:(this.#e===xn.Created&&await this.destroy(),this.#m(xn.OnCreate),this.#u(),this.#c([...this.#r.keys()],this.#r),await Promise.all([this.#h(this.#o),this.#h(this.#r)].flat()),this.#m(xn.Created),this),this.destroy=async(e=!1)=>this.#e===xn.Destroyed||this.#e===xn.OnDestroy?this:this.#e===xn.OnCreate?new Promise(n=>{setTimeout(()=>{n(this.destroy(e))},50)}):(e&&(this.#a=[]),this.#m(xn.OnDestroy),await this.#p([...this.#r.keys()],e),await this.#d(),this.#m(xn.Destroyed),this),this.action=e=>e(this.#l),this.inspect=()=>this.#t?[...this.#o.values(),...this.#r.values()].map(({ctx:e})=>e?.inspector?.read()).filter(e=>!!e):(console.warn("[Milkdown]: You are trying to collect inspection when inspector is disabled, please enable inspector by `editor.enableInspector()` first."),[])}static make(){return new Hk}#t=!1;#e=xn.Idle;#a=[];#n=()=>{};#i=new pd;#s=new Nb;#r=new Map;#o=new Map;#l=new Tb(this.#i,this.#s);#u=()=>{let e=B8(async a=>{await Promise.all(this.#a.map(r=>Promise.resolve(r(a))))}),n=[Mk,Bk,Dk,Rk,F8,qk,Fk,Pk,L8(this),e];this.#c(n,this.#o)};#c=(e,n)=>{e.forEach(a=>{let r=this.#l.produce(this.#t?a.meta:void 0),i=a(r);n.set(a,{ctx:r,handler:i,cleanup:void 0})})};#p=(e,n=!1)=>Promise.all([e].flat().map(async a=>{let r=this.#r.get(a)?.cleanup;return n?this.#r.delete(a):this.#r.set(a,{ctx:void 0,handler:void 0,cleanup:void 0}),typeof r=="function"?r():r}));#d=async()=>{await Promise.all([...this.#o.entries()].map(async([e,{cleanup:n}])=>typeof n=="function"?n():n)),this.#o.clear()};#m=e=>{this.#e=e,this.#n(e)};#h=e=>[...e.entries()].map(async([n,a])=>{let{ctx:r,handler:i}=a;if(!i)return;let s=await i();e.set(n,{ctx:r,handler:i,cleanup:s})});get ctx(){return this.#l}get status(){return this.#e}};function hh(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:r,mathFlowFence:a,mathFlowFenceMeta:n,mathFlowValue:o,mathText:s,mathTextData:o}};function t(l){let c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function e(){this.buffer()}function n(){let l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function a(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function r(l){let c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),u=this.stack[this.stack.length-1];u.type,this.exit(l),u.value=c;let p=u.data.hChildren[0];p.type,p.tagName,p.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function s(l){let c=this.resume(),u=this.stack[this.stack.length-1];u.type,this.exit(l),u.value=c,u.data.hChildren.push({type:"text",value:c})}function o(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function fh(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),a.peek=r,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:a}};function n(i,s,o,l){let c=i.value||"",u=o.createTracker(l),p="$".repeat(Math.max(hc(c,"$")+1,2)),d=o.enter("mathFlow"),m=u.move(p);if(i.meta){let h=o.enter("mathFlowMeta");m+=u.move(o.safe(i.meta,{after:` +`);return{dom:l,text:d,slice:e}}function Rw(t,e,n,a,r){let i=r.parent.type.spec.code,s,o;if(!n&&!e)return null;let l=!!e&&(a||i||!n);if(l){if(t.someProp("transformPastedText",d=>{e=d(e,i||a,t)}),i)return o=new V(B.from(t.state.schema.text(e.replace(/\r\n?/g,` +`))),0,0),t.someProp("transformPasted",d=>{o=d(o,t,!0)}),o;let p=t.someProp("clipboardTextParser",d=>d(e,r,a,t));if(p)o=p;else{let d=r.marks(),{schema:m}=t.state,h=On.fromSchema(m);s=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(b=>{let y=s.appendChild(document.createElement("p"));b&&y.appendChild(h.serializeNode(m.text(b,d)))})}}else t.someProp("transformPastedHTML",p=>{n=p(n,t)}),s=T8(n),Lo&&M8(s);let c=s&&s.querySelector("[data-pm-slice]"),u=c&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(c.getAttribute("data-pm-slice")||"");if(u&&u[3])for(let p=+u[3];p>0;p--){let d=s.firstChild;for(;d&&d.nodeType!=1;)d=d.nextSibling;if(!d)break;s=d}if(o||(o=(t.someProp("clipboardParser")||t.someProp("domParser")||zn.fromSchema(t.state.schema)).parseSlice(s,{preserveWhitespace:!!(l||u),context:r,ruleFromNode(d){return d.nodeName=="BR"&&!d.nextSibling&&d.parentNode&&!S8.test(d.parentNode.nodeName)?{ignore:!0}:null}})),u)o=N8(iw(o,+u[1],+u[2]),u[4]);else if(o=V.maxOpen(E8(o.content,r),!0),o.openStart||o.openEnd){let p=0,d=0;for(let m=o.content.firstChild;p{o=p(o,t,l)}),o}var S8=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function E8(t,e){if(t.childCount<2)return t;for(let n=e.depth;n>=0;n--){let r=e.node(n).contentMatchAt(e.index(n)),i,s=[];if(t.forEach(o=>{if(!s)return;let l=r.findWrapping(o.type),c;if(!l)return s=null;if(c=s.length&&i.length&&Ow(l,i,o,s[s.length-1],0))s[s.length-1]=c;else{s.length&&(s[s.length-1]=Bw(s[s.length-1],i.length));let u=zw(o,l);s.push(u),r=r.matchType(u.type),i=l}}),s)return B.from(s)}return t}function zw(t,e,n=0){for(let a=e.length-1;a>=n;a--)t=e[a].create(null,B.from(t));return t}function Ow(t,e,n,a,r){if(r1&&(i=0),r=n&&(o=e<0?s.contentMatchAt(0).fillBefore(o,i<=r).append(o):o.append(s.contentMatchAt(s.childCount).fillBefore(B.empty,!0))),t.replaceChild(e<0?0:t.childCount-1,s.copy(o))}function iw(t,e,n){return en})),Wm.createHTML(t)):t}function T8(t){let e=/^(\s*]*>)*/.exec(t);e&&(t=t.slice(e[0].length));let n=Dw().createElement("div"),a=/<([a-z][^>\s]+)/i.exec(t),r;if((r=a&&Lw[a[1].toLowerCase()])&&(t=r.map(i=>"<"+i+">").join("")+t+r.map(i=>"").reverse().join("")),n.innerHTML=A8(t),r)for(let i=0;i=0;o-=2){let l=n.nodes[a[o]];if(!l||l.hasRequiredAttrs())break;r=B.from(l.create(a[o+1],r)),i++,s++}return new V(r,i,s)}var Bt={},Lt={},I8={touchstart:!0,touchmove:!0},oh=class{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:"",button:0},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastChromeDelete=0,this.composing=!1,this.compositionNode=null,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.badSafariComposition=!1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}};function R8(t){for(let e in Bt){let n=Bt[e];t.dom.addEventListener(e,t.input.eventHandlers[e]=a=>{O8(t,a)&&!bh(t,a)&&(t.editable||!(a.type in Lt))&&n(t,a)},I8[e]?{passive:!0}:void 0)}At&&t.dom.addEventListener("input",()=>null),lh(t)}function ar(t,e){t.input.lastSelectionOrigin=e,t.input.lastSelectionTime=Date.now()}function z8(t){t.domObserver.stop();for(let e in t.input.eventHandlers)t.dom.removeEventListener(e,t.input.eventHandlers[e]);clearTimeout(t.input.composingTimeout),clearTimeout(t.input.lastIOSEnterFallbackTimeout)}function lh(t){t.someProp("handleDOMEvents",e=>{for(let n in e)t.input.eventHandlers[n]||t.dom.addEventListener(n,t.input.eventHandlers[n]=a=>bh(t,a))})}function bh(t,e){return t.someProp("handleDOMEvents",n=>{let a=n[e.type];return a?a(t,e)||e.defaultPrevented:!1})}function O8(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target;n!=t.dom;n=n.parentNode)if(!n||n.nodeType==11||n.pmViewDesc&&n.pmViewDesc.stopEvent(e))return!1;return!0}function B8(t,e){!bh(t,e)&&Bt[e.type]&&(t.editable||!(e.type in Lt))&&Bt[e.type](t,e)}Lt.keydown=(t,e)=>{let n=e;if(t.input.shiftKey=n.keyCode==16||n.shiftKey,!Pw(t,n)&&(t.input.lastKeyCode=n.keyCode,t.input.lastKeyCodeTime=Date.now(),!(wa&&wt&&n.keyCode==13)))if(n.keyCode!=229&&t.domObserver.forceFlush(),cs&&n.keyCode==13&&!n.ctrlKey&&!n.altKey&&!n.metaKey){let a=Date.now();t.input.lastIOSEnter=a,t.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{t.input.lastIOSEnter==a&&(t.someProp("handleKeyDown",r=>r(t,ai(13,"Enter"))),t.input.lastIOSEnter=0)},200)}else t.someProp("handleKeyDown",a=>a(t,n))||j8(t,n)?n.preventDefault():ar(t,"key")};Lt.keyup=(t,e)=>{e.keyCode==16&&(t.input.shiftKey=!1)};Lt.keypress=(t,e)=>{let n=e;if(Pw(t,n)||!n.charCode||n.ctrlKey&&!n.altKey||yn&&n.metaKey)return;if(t.someProp("handleKeyPress",r=>r(t,n))){n.preventDefault();return}let a=t.state.selection;if(!(a instanceof ue)||!a.$from.sameParent(a.$to)){let r=String.fromCharCode(n.charCode),i=()=>t.state.tr.insertText(r).scrollIntoView();!/[\r\n]/.test(r)&&!t.someProp("handleTextInput",s=>s(t,a.$from.pos,a.$to.pos,r,i))&&t.dispatch(i()),n.preventDefault()}};function iu(t){return{left:t.clientX,top:t.clientY}}function L8(t,e){let n=e.x-t.clientX,a=e.y-t.clientY;return n*n+a*a<100}function yh(t,e,n,a,r){if(a==-1)return!1;let i=t.state.doc.resolve(a);for(let s=i.depth+1;s>0;s--)if(t.someProp(e,o=>s>i.depth?o(t,n,i.nodeAfter,i.before(s),r,!0):o(t,n,i.node(s),i.before(s),r,!1)))return!0;return!1}function ss(t,e,n){if(t.focused||t.focus(),t.state.selection.eq(e))return;let a=t.state.tr.setSelection(e);n=="pointer"&&a.setMeta("pointer",!0),t.dispatch(a)}function D8(t,e){if(e==-1)return!1;let n=t.state.doc.resolve(e),a=n.nodeAfter;return a&&a.isAtom&&le.isSelectable(a)?(ss(t,new le(n),"pointer"),!0):!1}function F8(t,e){if(e==-1)return!1;let n=t.state.selection,a,r;n instanceof le&&(a=n.node);let i=t.state.doc.resolve(e);for(let s=i.depth+1;s>0;s--){let o=s>i.depth?i.nodeAfter:i.node(s);if(le.isSelectable(o)){a&&n.$from.depth>0&&s>=n.$from.depth&&i.before(n.$from.depth+1)==n.$from.pos?r=i.before(n.$from.depth):r=i.before(s);break}}return r!=null?(ss(t,le.create(t.state.doc,r),"pointer"),!0):!1}function P8(t,e,n,a,r){return yh(t,"handleClickOn",e,n,a)||t.someProp("handleClick",i=>i(t,e,a))||(r?F8(t,n):D8(t,n))}function q8(t,e,n,a){return yh(t,"handleDoubleClickOn",e,n,a)||t.someProp("handleDoubleClick",r=>r(t,e,a))}function G8(t,e,n,a){return yh(t,"handleTripleClickOn",e,n,a)||t.someProp("handleTripleClick",r=>r(t,e,a))||H8(t,n,a)}function H8(t,e,n){if(n.button!=0)return!1;let a=t.state.doc;if(e==-1)return a.inlineContent?(ss(t,ue.create(a,0,a.content.size),"pointer"),!0):!1;let r=a.resolve(e);for(let i=r.depth+1;i>0;i--){let s=i>r.depth?r.nodeAfter:r.node(i),o=r.before(i);if(s.inlineContent)ss(t,ue.create(a,o+1,o+1+s.content.size),"pointer");else if(le.isSelectable(s))ss(t,le.create(a,o),"pointer");else continue;return!0}}function xh(t){return Qc(t)}var Fw=yn?"metaKey":"ctrlKey";Bt.mousedown=(t,e)=>{let n=e;t.input.shiftKey=n.shiftKey;let a=xh(t),r=Date.now(),i="singleClick";r-t.input.lastClick.time<500&&L8(n,t.input.lastClick)&&!n[Fw]&&t.input.lastClick.button==n.button&&(t.input.lastClick.type=="singleClick"?i="doubleClick":t.input.lastClick.type=="doubleClick"&&(i="tripleClick")),t.input.lastClick={time:r,x:n.clientX,y:n.clientY,type:i,button:n.button};let s=t.posAtCoords(iu(n));s&&(i=="singleClick"?(t.input.mouseDown&&t.input.mouseDown.done(),t.input.mouseDown=new ch(t,s,n,!!a)):(i=="doubleClick"?q8:G8)(t,s.pos,s.inside,n)?n.preventDefault():ar(t,"pointer"))};var ch=class{constructor(e,n,a,r){this.view=e,this.pos=n,this.event=a,this.flushed=r,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!a[Fw],this.allowDefault=a.shiftKey;let i,s;if(n.inside>-1)i=e.state.doc.nodeAt(n.inside),s=n.inside;else{let u=e.state.doc.resolve(n.pos);i=u.parent,s=u.depth?u.before():0}let o=r?null:a.target,l=o?e.docView.nearestDesc(o,!0):null;this.target=l&&l.nodeDOM.nodeType==1?l.nodeDOM:null;let{selection:c}=e.state;a.button==0&&(i.type.spec.draggable&&i.type.spec.selectable!==!1||c instanceof le&&c.from<=s&&c.to>s)&&(this.mightDrag={node:i,pos:s,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&wn&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),ar(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>ka(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let n=this.pos;this.view.state.doc!=this.startDoc&&(n=this.view.posAtCoords(iu(e))),this.updateAllowDefault(e),this.allowDefault||!n?ar(this.view,"pointer"):P8(this.view,n.pos,n.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||At&&this.mightDrag&&!this.mightDrag.node.isAtom||wt&&!this.view.state.selection.visible&&Math.min(Math.abs(n.pos-this.view.state.selection.from),Math.abs(n.pos-this.view.state.selection.to))<=2)?(ss(this.view,ae.near(this.view.state.doc.resolve(n.pos)),"pointer"),e.preventDefault()):ar(this.view,"pointer")}move(e){this.updateAllowDefault(e),ar(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}};Bt.touchstart=t=>{t.input.lastTouch=Date.now(),xh(t),ar(t,"pointer")};Bt.touchmove=t=>{t.input.lastTouch=Date.now(),ar(t,"pointer")};Bt.contextmenu=t=>xh(t);function Pw(t,e){return t.composing?!0:At&&Math.abs(e.timeStamp-t.input.compositionEndedAt)<500?(t.input.compositionEndedAt=-2e8,!0):!1}var V8=wa?5e3:-1;Lt.compositionstart=Lt.compositionupdate=t=>{if(!t.composing){t.domObserver.flush();let{state:e}=t,n=e.selection.$to;if(e.selection instanceof ue&&(e.storedMarks||!n.textOffset&&n.parentOffset&&n.nodeBefore.marks.some(a=>a.type.spec.inclusive===!1)||wt&&ww&&W8(t)))t.markCursor=t.state.storedMarks||n.marks(),Qc(t,!0),t.markCursor=null;else if(Qc(t,!e.selection.empty),wn&&e.selection.empty&&n.parentOffset&&!n.textOffset&&n.nodeBefore.marks.length){let a=t.domSelectionRange();for(let r=a.focusNode,i=a.focusOffset;r&&r.nodeType==1&&i!=0;){let s=i<0?r.lastChild:r.childNodes[i-1];if(!s)break;if(s.nodeType==3){let o=t.domSelection();o&&o.collapse(s,s.nodeValue.length);break}else r=s,i=-1}}t.input.composing=!0}qw(t,V8)};function W8(t){let{focusNode:e,focusOffset:n}=t.domSelectionRange();if(!e||e.nodeType!=1||n>=e.childNodes.length)return!1;let a=e.childNodes[n];return a.nodeType==1&&a.contentEditable=="false"}Lt.compositionend=(t,e)=>{t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=e.timeStamp,t.input.compositionPendingChanges=t.domObserver.pendingRecords().length?t.input.compositionID:0,t.input.compositionNode=null,t.input.badSafariComposition?t.domObserver.forceFlush():t.input.compositionPendingChanges&&Promise.resolve().then(()=>t.domObserver.flush()),t.input.compositionID++,qw(t,20))};function qw(t,e){clearTimeout(t.input.composingTimeout),e>-1&&(t.input.composingTimeout=setTimeout(()=>Qc(t),e))}function Gw(t){for(t.composing&&(t.input.composing=!1,t.input.compositionEndedAt=K8());t.input.compositionNodes.length>0;)t.input.compositionNodes.pop().markParentsDirty()}function U8(t){let e=t.domSelectionRange();if(!e.focusNode)return null;let n=HC(e.focusNode,e.focusOffset),a=VC(e.focusNode,e.focusOffset);if(n&&a&&n!=a){let r=a.pmViewDesc,i=t.domObserver.lastChangedTextNode;if(n==i||a==i)return i;if(!r||!r.isText(a.nodeValue))return a;if(t.input.compositionNode==a){let s=n.pmViewDesc;if(!(!s||!s.isText(n.nodeValue)))return a}}return n||a}function K8(){let t=document.createEvent("Event");return t.initEvent("event",!0,!0),t.timeStamp}function Qc(t,e=!1){if(!(wa&&t.domObserver.flushingSoon>=0)){if(t.domObserver.forceFlush(),Gw(t),e||t.docView&&t.docView.dirty){let n=hh(t),a=t.state.selection;return n&&!n.eq(a)?t.dispatch(t.state.tr.setSelection(n)):(t.markCursor||e)&&!a.$from.node(a.$from.sharedDepth(a.to)).inlineContent?t.dispatch(t.state.tr.deleteSelection()):t.updateState(t.state),!0}return!1}}function X8(t,e){if(!t.dom.parentNode)return;let n=t.dom.parentNode.appendChild(document.createElement("div"));n.appendChild(e),n.style.cssText="position: fixed; left: -10000px; top: 10px";let a=getSelection(),r=document.createRange();r.selectNodeContents(e),t.dom.blur(),a.removeAllRanges(),a.addRange(r),setTimeout(()=>{n.parentNode&&n.parentNode.removeChild(n),t.focus()},50)}var Io=Xt&&rr<15||cs&&XC<604;Bt.copy=Lt.cut=(t,e)=>{let n=e,a=t.state.selection,r=n.type=="cut";if(a.empty)return;let i=Io?null:n.clipboardData,s=a.content(),{dom:o,text:l}=gh(t,s);i?(n.preventDefault(),i.clearData(),i.setData("text/html",o.innerHTML),i.setData("text/plain",l)):X8(t,o),r&&t.dispatch(t.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function Z8(t){return t.openStart==0&&t.openEnd==0&&t.content.childCount==1?t.content.firstChild:null}function J8(t,e){if(!t.dom.parentNode)return;let n=t.input.shiftKey||t.state.selection.$from.parent.type.spec.code,a=t.dom.parentNode.appendChild(document.createElement(n?"textarea":"div"));n||(a.contentEditable="true"),a.style.cssText="position: fixed; left: -10000px; top: 10px",a.focus();let r=t.input.shiftKey&&t.input.lastKeyCode!=45;setTimeout(()=>{t.focus(),a.parentNode&&a.parentNode.removeChild(a),n?Ro(t,a.value,null,r,e):Ro(t,a.textContent,a.innerHTML,r,e)},50)}function Ro(t,e,n,a,r){let i=Rw(t,e,n,a,t.state.selection.$from);if(t.someProp("handlePaste",l=>l(t,r,i||V.empty)))return!0;if(!i)return!1;let s=Z8(i),o=s?t.state.tr.replaceSelectionWith(s,a):t.state.tr.replaceSelection(i);return t.dispatch(o.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function Hw(t){let e=t.getData("text/plain")||t.getData("Text");if(e)return e;let n=t.getData("text/uri-list");return n?n.replace(/\r?\n/g," "):""}Lt.paste=(t,e)=>{let n=e;if(t.composing&&!wa)return;let a=Io?null:n.clipboardData,r=t.input.shiftKey&&t.input.lastKeyCode!=45;a&&Ro(t,Hw(a),a.getData("text/html"),r,n)?n.preventDefault():J8(t,n)};var eu=class{constructor(e,n,a){this.slice=e,this.move=n,this.node=a}},Y8=yn?"altKey":"ctrlKey";function Vw(t,e){let n;return t.someProp("dragCopies",a=>{n=n||a(e)}),n!=null?!n:!e[Y8]}Bt.dragstart=(t,e)=>{let n=e,a=t.input.mouseDown;if(a&&a.done(),!n.dataTransfer)return;let r=t.state.selection,i=r.empty?null:t.posAtCoords(iu(n)),s;if(!(i&&i.pos>=r.from&&i.pos<=(r instanceof le?r.to-1:r.to))){if(a&&a.mightDrag)s=le.create(t.state.doc,a.mightDrag.pos);else if(n.target&&n.target.nodeType==1){let p=t.docView.nearestDesc(n.target,!0);p&&p.node.type.spec.draggable&&p!=t.docView&&(s=le.create(t.state.doc,p.posBefore))}}let o=(s||t.state.selection).content(),{dom:l,text:c,slice:u}=gh(t,o);(!n.dataTransfer.files.length||!wt||xw>120)&&n.dataTransfer.clearData(),n.dataTransfer.setData(Io?"Text":"text/html",l.innerHTML),n.dataTransfer.effectAllowed="copyMove",Io||n.dataTransfer.setData("text/plain",c),t.dragging=new eu(u,Vw(t,n),s)};Bt.dragend=t=>{let e=t.dragging;window.setTimeout(()=>{t.dragging==e&&(t.dragging=null)},50)};Lt.dragover=Lt.dragenter=(t,e)=>e.preventDefault();Lt.drop=(t,e)=>{try{Q8(t,e,t.dragging)}finally{t.dragging=null}};function Q8(t,e,n){if(!e.dataTransfer)return;let a=t.posAtCoords(iu(e));if(!a)return;let r=t.state.doc.resolve(a.pos),i=n&&n.slice;i?t.someProp("transformPasted",m=>{i=m(i,t,!1)}):i=Rw(t,Hw(e.dataTransfer),Io?null:e.dataTransfer.getData("text/html"),!1,r);let s=!!(n&&Vw(t,e));if(t.someProp("handleDrop",m=>m(t,e,i||V.empty,s))){e.preventDefault();return}if(!i)return;e.preventDefault();let o=i?Q1(t.state.doc,r.pos,i):r.pos;o==null&&(o=r.pos);let l=t.state.tr;if(s){let{node:m}=n;m?m.replace(l):l.deleteSelection()}let c=l.mapping.map(o),u=i.openStart==0&&i.openEnd==0&&i.content.childCount==1,p=l.doc;if(u?l.replaceRangeWith(c,c,i.content.firstChild):l.replaceRange(c,c,i),l.doc.eq(p))return;let d=l.doc.resolve(c);if(u&&le.isSelectable(i.content.firstChild)&&d.nodeAfter&&d.nodeAfter.sameMarkup(i.content.firstChild))l.setSelection(new le(d));else{let m=l.mapping.map(o);l.mapping.maps[l.mapping.maps.length-1].forEach((h,b,y,w)=>m=w),l.setSelection(fh(t,d,l.doc.resolve(m)))}t.focus(),t.dispatch(l.setMeta("uiEvent","drop"))}Bt.focus=t=>{t.input.lastFocus=Date.now(),t.focused||(t.domObserver.stop(),t.dom.classList.add("ProseMirror-focused"),t.domObserver.start(),t.focused=!0,setTimeout(()=>{t.docView&&t.hasFocus()&&!t.domObserver.currentSelection.eq(t.domSelectionRange())&&ka(t)},20))};Bt.blur=(t,e)=>{let n=e;t.focused&&(t.domObserver.stop(),t.dom.classList.remove("ProseMirror-focused"),t.domObserver.start(),n.relatedTarget&&t.dom.contains(n.relatedTarget)&&t.domObserver.currentSelection.clear(),t.focused=!1)};Bt.beforeinput=(t,e)=>{if(wt&&wa&&e.inputType=="deleteContentBackward"){t.domObserver.flushSoon();let{domChangeCount:a}=t.input;setTimeout(()=>{if(t.input.domChangeCount!=a||(t.dom.blur(),t.focus(),t.someProp("handleKeyDown",i=>i(t,ai(8,"Backspace")))))return;let{$cursor:r}=t.state.selection;r&&r.pos>0&&t.dispatch(t.state.tr.delete(r.pos-1,r.pos).scrollIntoView())},50)}};for(let t in Lt)Bt[t]=Lt[t];function zo(t,e){if(t==e)return!0;for(let n in t)if(t[n]!==e[n])return!1;for(let n in e)if(!(n in t))return!1;return!0}var tu=class t{constructor(e,n){this.toDOM=e,this.spec=n||oi,this.side=this.spec.side||0}map(e,n,a,r){let{pos:i,deleted:s}=e.mapResult(n.from+r,this.side<0?-1:1);return s?null:new rt(i-a,i-a,this)}valid(){return!0}eq(e){return this==e||e instanceof t&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&zo(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}},si=class t{constructor(e,n){this.attrs=e,this.spec=n||oi}map(e,n,a,r){let i=e.map(n.from+r,this.spec.inclusiveStart?-1:1)-a,s=e.map(n.to+r,this.spec.inclusiveEnd?1:-1)-a;return i>=s?null:new rt(i,s,this)}valid(e,n){return n.from=e&&(!i||i(o.spec))&&a.push(o.copy(o.from+r,o.to+r))}for(let s=0;se){let o=this.children[s]+1;this.children[s+2].findInner(e-o,n-o,a,r+o,i)}}map(e,n,a){return this==Et||e.maps.length==0?this:this.mapInner(e,n,0,0,a||oi)}mapInner(e,n,a,r,i){let s;for(let o=0;o{let c=l+a,u;if(u=Uw(n,o,c)){for(r||(r=this.children.slice());io&&p.to=e){this.children[o]==e&&(a=this.children[o+2]);break}let i=e+1,s=i+n.content.size;for(let o=0;oi&&l.type instanceof si){let c=Math.max(i,l.from)-i,u=Math.min(s,l.to)-i;cr.map(e,n,oi));return t.from(a)}forChild(e,n){if(n.isLeaf)return De.empty;let a=[];for(let r=0;rn instanceof De)?e:e.reduce((n,a)=>n.concat(a instanceof De?a:a.members),[]))}}forEachSet(e){for(let n=0;n{let y=b-h-(m-d);for(let w=0;w_+u-p)continue;let $=o[w]+u-p;m>=$?o[w+1]=d<=$?-2:-1:d>=u&&y&&(o[w]+=y,o[w+1]+=y)}p+=y}),u=n.maps[c].map(u,-1)}let l=!1;for(let c=0;c=a.content.size){l=!0;continue}let d=n.map(t[c+1]+i,-1),m=d-r,{index:h,offset:b}=a.content.findIndex(p),y=a.maybeChild(h);if(y&&b==p&&b+y.nodeSize==m){let w=o[c+2].mapInner(n,y,u+1,t[c]+i+1,s);w!=Et?(o[c]=p,o[c+1]=m,o[c+2]=w):(o[c+1]=-2,l=!0)}else l=!0}if(l){let c=tj(o,t,e,n,r,i,s),u=au(c,a,0,s);e=u.local;for(let p=0;pn&&s.to{let c=Uw(t,o,l+n);if(c){i=!0;let u=au(c,o,n+l+1,a);u!=Et&&r.push(l,l+o.nodeSize,u)}});let s=Ww(i?Kw(t):t,-n).sort(li);for(let o=0;o0;)e++;t.splice(e,0,n)}function Um(t){let e=[];return t.someProp("decorations",n=>{let a=n(t.state);a&&a!=Et&&e.push(a)}),t.cursorWrapper&&e.push(De.create(t.state.doc,[t.cursorWrapper.deco])),nu.from(e)}var nj={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},aj=Xt&&rr<=11,ph=class{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}},dh=class{constructor(e,n){this.view=e,this.handleDOMChange=n,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new ph,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver(a=>{for(let r=0;rr.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():At&&e.composing&&a.some(r=>r.type=="childList"&&r.target.nodeName=="TR")?(e.input.badSafariComposition=!0,this.flushSoon()):this.flush()}),aj&&(this.onCharData=a=>{this.queue.push({target:a.target,type:"characterData",oldValue:a.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,nj)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let n=0;nthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(Qx(this.view)){if(this.suppressingSelectionUpdates)return ka(this.view);if(Xt&&rr<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&ci(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let n=new Set,a;for(let i=e.focusNode;i;i=ls(i))n.add(i);for(let i=e.anchorNode;i;i=ls(i))if(n.has(i)){a=i;break}let r=a&&this.view.docView.nearestDesc(a);if(r&&r.ignoreMutation({type:"selection",target:a.nodeType==3?a.parentNode:a}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let n=this.pendingRecords();n.length&&(this.queue=[]);let a=e.domSelectionRange(),r=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(a)&&Qx(e)&&!this.ignoreSelectionChange(a),i=-1,s=-1,o=!1,l=[];if(e.editable)for(let u=0;uu.nodeName=="BR")&&(e.input.lastKeyCode==8||e.input.lastKeyCode==46)){for(let u of l)if(u.nodeName=="BR"&&u.parentNode){let p=u.nextSibling;for(;p&&p.nodeType==1;){if(p.contentEditable=="false"){u.parentNode.removeChild(u);break}p=p.firstChild}}}else if(wn&&l.length){let u=l.filter(p=>p.nodeName=="BR");if(u.length==2){let[p,d]=u;p.parentNode&&p.parentNode.parentNode==d.parentNode?d.remove():p.remove()}else{let{focusNode:p}=this.currentSelection;for(let d of u){let m=d.parentNode;m&&m.nodeName=="LI"&&(!p||sj(e,p)!=m)&&d.remove()}}}let c=null;i<0&&r&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||r)&&(i>-1&&(e.docView.markDirty(i,s),rj(e)),e.input.badSafariComposition&&(e.input.badSafariComposition=!1,oj(e,l)),this.handleDOMChange(i,s,o,l),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(a)||ka(e),this.currentSelection.set(a))}registerMutation(e,n){if(n.indexOf(e.target)>-1)return null;let a=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(a==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!a||a.ignoreMutation(e))return null;if(e.type=="childList"){for(let u=0;ur;y--){let w=a.childNodes[y-1],_=w.pmViewDesc;if(w.nodeName=="BR"&&!_){i=y;break}if(!_||_.size)break}let p=t.state.doc,d=t.someProp("domParser")||zn.fromSchema(t.state.schema),m=p.resolve(s),h=null,b=d.parse(a,{topNode:m.parent,topMatch:m.parent.contentMatchAt(m.index()),topOpen:!0,from:r,to:i,preserveWhitespace:m.parent.type.whitespace=="pre"?"full":!0,findPositions:c,ruleFromNode:cj,context:m});if(c&&c[0].pos!=null){let y=c[0].pos,w=c[1]&&c[1].pos;w==null&&(w=y),h={anchor:y+s,head:w+s}}return{doc:b,sel:h,from:s,to:o}}function cj(t){let e=t.pmViewDesc;if(e)return e.parseRule();if(t.nodeName=="BR"&&t.parentNode){if(At&&/^(ul|ol)$/i.test(t.parentNode.nodeName)){let n=document.createElement("div");return n.appendChild(document.createElement("li")),{skip:n}}else if(t.parentNode.lastChild==t||At&&/^(tr|table)$/i.test(t.parentNode.nodeName))return{ignore:!0}}else if(t.nodeName=="IMG"&&t.getAttribute("mark-placeholder"))return{ignore:!0};return null}var uj=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function pj(t,e,n,a,r){let i=t.input.compositionPendingChanges||(t.composing?t.input.compositionID:0);if(t.input.compositionPendingChanges=0,e<0){let I=t.input.lastSelectionTime>Date.now()-50?t.input.lastSelectionOrigin:null,F=hh(t,I);if(F&&!t.state.selection.eq(F)){if(wt&&wa&&t.input.lastKeyCode===13&&Date.now()-100T(t,ai(13,"Enter"))))return;let L=t.state.tr.setSelection(F);I=="pointer"?L.setMeta("pointer",!0):I=="key"&&L.scrollIntoView(),i&&L.setMeta("composition",i),t.dispatch(L)}return}let s=t.state.doc.resolve(e),o=s.sharedDepth(n);e=s.before(o+1),n=t.state.doc.resolve(n).after(o+1);let l=t.state.selection,c=lj(t,e,n),u=t.state.doc,p=u.slice(c.from,c.to),d,m;t.input.lastKeyCode===8&&Date.now()-100Date.now()-225||wa)&&r.some(I=>I.nodeType==1&&!uj.test(I.nodeName))&&(!h||h.endA>=h.endB)&&t.someProp("handleKeyDown",I=>I(t,ai(13,"Enter")))){t.input.lastIOSEnter=0;return}if(!h)if(a&&l instanceof ue&&!l.empty&&l.$head.sameParent(l.$anchor)&&!t.composing&&!(c.sel&&c.sel.anchor!=c.sel.head))h={start:l.from,endA:l.to,endB:l.to};else{if(c.sel){let I=pw(t,t.state.doc,c.sel);if(I&&!I.eq(t.state.selection)){let F=t.state.tr.setSelection(I);i&&F.setMeta("composition",i),t.dispatch(F)}}return}t.state.selection.fromt.state.selection.from&&h.start<=t.state.selection.from+2&&t.state.selection.from>=c.from?h.start=t.state.selection.from:h.endA=t.state.selection.to-2&&t.state.selection.to<=c.to&&(h.endB+=t.state.selection.to-h.endA,h.endA=t.state.selection.to)),Xt&&rr<=11&&h.endB==h.start+1&&h.endA==h.start&&h.start>c.from&&c.doc.textBetween(h.start-c.from-1,h.start-c.from+1)==" \xA0"&&(h.start--,h.endA--,h.endB--);let b=c.doc.resolveNoCache(h.start-c.from),y=c.doc.resolveNoCache(h.endB-c.from),w=u.resolve(h.start),_=b.sameParent(y)&&b.parent.inlineContent&&w.end()>=h.endA;if((cs&&t.input.lastIOSEnter>Date.now()-225&&(!_||r.some(I=>I.nodeName=="DIV"||I.nodeName=="P"))||!_&&b.posI(t,ai(13,"Enter")))){t.input.lastIOSEnter=0;return}if(t.state.selection.anchor>h.start&&mj(u,h.start,h.endA,b,y)&&t.someProp("handleKeyDown",I=>I(t,ai(8,"Backspace")))){wa&&wt&&t.domObserver.suppressSelectionUpdates();return}wt&&h.endB==h.start&&(t.input.lastChromeDelete=Date.now()),wa&&!_&&b.start()!=y.start()&&y.parentOffset==0&&b.depth==y.depth&&c.sel&&c.sel.anchor==c.sel.head&&c.sel.head==h.endA&&(h.endB-=2,y=c.doc.resolveNoCache(h.endB-c.from),setTimeout(()=>{t.someProp("handleKeyDown",function(I){return I(t,ai(13,"Enter"))})},20));let $=h.start,M=h.endA,N=I=>{let F=I||t.state.tr.replace($,M,c.doc.slice(h.start-c.from,h.endB-c.from));if(c.sel){let L=pw(t,F.doc,c.sel);L&&!(wt&&t.composing&&L.empty&&(h.start!=h.endB||t.input.lastChromeDeleteka(t),20));let I=N(t.state.tr.delete($,M)),F=u.resolve(h.start).marksAcross(u.resolve(h.endA));F&&I.ensureMarks(F),t.dispatch(I)}else if(h.endA==h.endB&&(E=dj(b.parent.content.cut(b.parentOffset,y.parentOffset),w.parent.content.cut(w.parentOffset,h.endA-w.start())))){let I=N(t.state.tr);E.type=="add"?I.addMark($,M,E.mark):I.removeMark($,M,E.mark),t.dispatch(I)}else if(b.parent.child(b.index()).isText&&b.index()==y.index()-(y.textOffset?0:1)){let I=b.parent.textBetween(b.parentOffset,y.parentOffset),F=()=>N(t.state.tr.insertText(I,$,M));t.someProp("handleTextInput",L=>L(t,$,M,I,F))||t.dispatch(F())}else t.dispatch(N());else t.dispatch(N())}function pw(t,e,n){return Math.max(n.anchor,n.head)>e.content.size?null:fh(t,e.resolve(n.anchor),e.resolve(n.head))}function dj(t,e){let n=t.firstChild.marks,a=e.firstChild.marks,r=n,i=a,s,o,l;for(let u=0;uu.mark(o.addToSet(u.marks));else if(r.length==0&&i.length==1)o=i[0],s="remove",l=u=>u.mark(o.removeFromSet(u.marks));else return null;let c=[];for(let u=0;un||Km(s,!0,!1)0&&(e||t.indexAfter(a)==t.node(a).childCount);)a--,r++,e=!1;if(n){let i=t.node(a).maybeChild(t.indexAfter(a));for(;i&&!i.isLeaf;)i=i.firstChild,r++}return r}function hj(t,e,n,a,r){let i=t.findDiffStart(e,n);if(i==null)return null;let{a:s,b:o}=t.findDiffEnd(e,n+t.size,n+e.size);if(r=="end"){let l=Math.max(0,i-Math.min(s,o));a-=s+l-i}if(s=s?i-a:0;i-=l,i&&i=o?i-a:0;i-=l,i&&i=56320&&e<=57343&&n>=55296&&n<=56319}var Oo=class{constructor(e,n){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new oh,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=n,this.state=n.state,this.directPlugins=n.plugins||[],this.directPlugins.forEach(bw),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=fw(this),hw(this),this.nodeViews=gw(this),this.docView=Ux(this.state.doc,mw(this),Um(this),this.dom,this),this.domObserver=new dh(this,(a,r,i,s)=>pj(this,a,r,i,s)),this.domObserver.start(),R8(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let n in e)this._props[n]=e[n];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&lh(this);let n=this._props;this._props=e,e.plugins&&(e.plugins.forEach(bw),this.directPlugins=e.plugins),this.updateStateInner(e.state,n)}setProps(e){let n={};for(let a in this._props)n[a]=this._props[a];n.state=this.state;for(let a in e)n[a]=e[a];this.update(n)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,n){var a;let r=this.state,i=!1,s=!1;e.storedMarks&&this.composing&&(Gw(this),s=!0),this.state=e;let o=r.plugins!=e.plugins||this._props.plugins!=n.plugins;if(o||this._props.plugins!=n.plugins||this._props.nodeViews!=n.nodeViews){let m=gw(this);gj(m,this.nodeViews)&&(this.nodeViews=m,i=!0)}(o||n.handleDOMEvents!=this._props.handleDOMEvents)&&lh(this),this.editable=fw(this),hw(this);let l=Um(this),c=mw(this),u=r.plugins!=e.plugins&&!r.doc.eq(e.doc)?"reset":e.scrollToSelection>r.scrollToSelection?"to selection":"preserve",p=i||!this.docView.matchesNode(e.doc,c,l);(p||!e.selection.eq(r.selection))&&(s=!0);let d=u=="preserve"&&s&&this.dom.style.overflowAnchor==null&&YC(this);if(s){this.domObserver.stop();let m=p&&(Xt||wt)&&!this.composing&&!r.selection.empty&&!e.selection.empty&&fj(r.selection,e.selection);if(p){let h=wt?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=U8(this)),(i||!this.docView.update(e.doc,c,l,this))&&(this.docView.updateOuterDeco(c),this.docView.destroy(),this.docView=Ux(e.doc,c,l,this.dom,this)),h&&(!this.trackWrites||!this.dom.contains(this.trackWrites))&&(m=!0)}m||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&x8(this))?ka(this,m):(Mw(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(r),!((a=this.dragging)===null||a===void 0)&&a.node&&!r.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,r),u=="reset"?this.dom.scrollTop=0:u=="to selection"?this.scrollToSelection():d&&QC(d)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!(!e||!this.dom.contains(e.nodeType==1?e:e.parentNode))){if(!this.someProp("handleScrollToSelection",n=>n(this)))if(this.state.selection instanceof le){let n=this.docView.domAfterPos(this.state.selection.from);n.nodeType==1&&Px(this,n.getBoundingClientRect(),e)}else Px(this,this.coordsAtPos(this.state.selection.head,1),e)}}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let n=0;n0&&in.ownerDocument.getSelection()),this._root=n}return e||document}updateRoot(){this._root=null}posAtCoords(e){return i8(this,e)}coordsAtPos(e,n=1){return Cw(this,e,n)}domAtPos(e,n=0){return this.docView.domFromPos(e,n)}nodeDOM(e){let n=this.docView.descAt(e);return n?n.nodeDOM:null}posAtDOM(e,n,a=-1){let r=this.docView.posFromDOM(e,n,a);if(r==null)throw new RangeError("DOM position not inside the editor");return r}endOfTextblock(e,n){return u8(this,n||this.state,e)}pasteHTML(e,n){return Ro(this,"",e,!1,n||new ClipboardEvent("paste"))}pasteText(e,n){return Ro(this,e,null,!0,n||new ClipboardEvent("paste"))}serializeForClipboard(e){return gh(this,e)}destroy(){this.docView&&(z8(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],Um(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,qC())}get isDestroyed(){return this.docView==null}dispatchEvent(e){return B8(this,e)}domSelectionRange(){let e=this.domSelection();return e?At&&this.root.nodeType===11&&UC(this.dom.ownerDocument)==this.dom&&ij(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}};Oo.prototype.dispatch=function(t){let e=this._props.dispatchTransaction;e?e.call(this,t):this.updateState(this.state.apply(t))};function mw(t){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(t.editable),t.someProp("attributes",n=>{if(typeof n=="function"&&(n=n(t.state)),n)for(let a in n)a=="class"?e.class+=" "+n[a]:a=="style"?e.style=(e.style?e.style+";":"")+n[a]:!e[a]&&a!="contenteditable"&&a!="nodeName"&&(e[a]=String(n[a]))}),e.translate||(e.translate="no"),[rt.node(0,t.state.doc.content.size,e)]}function hw(t){if(t.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),t.cursorWrapper={dom:e,deco:rt.widget(t.state.selection.from,e,{raw:!0,marks:t.markCursor})}}else t.cursorWrapper=null}function fw(t){return!t.someProp("editable",e=>e(t.state)===!1)}function fj(t,e){let n=Math.min(t.$anchor.sharedDepth(t.head),e.$anchor.sharedDepth(e.head));return t.$anchor.start(n)!=e.$anchor.start(n)}function gw(t){let e=Object.create(null);function n(a){for(let r in a)Object.prototype.hasOwnProperty.call(e,r)||(e[r]=a[r])}return t.someProp("nodeViews",n),t.someProp("markViews",n),e}function gj(t,e){let n=0,a=0;for(let r in t){if(t[r]!=e[r])return!0;n++}for(let r in e)a++;return n!=a}function bw(t){if(t.spec.state||t.spec.filterTransaction||t.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}function Ca(t,e){return t.meta={package:"@milkdown/core",group:"System",...e},t}var Jw={text:(t,e,n,a)=>{let r=t.value;return/^[^*_\\]*\s+$/.test(r)?r:n.safe(r,{...a,encode:[]})},strong:(t,e,n,a)=>{let r=t.marker||n.options.strong||"*",i=n.enter("strong"),s=n.createTracker(a),o=s.move(r+r);return o+=s.move(n.containerPhrasing(t,{before:o,after:r,...s.current()})),o+=s.move(r+r),i(),o},emphasis:(t,e,n,a)=>{let r=t.marker||n.options.emphasis||"*",i=n.enter("emphasis"),s=n.createTracker(a),o=s.move(r);return o+=s.move(n.containerPhrasing(t,{before:o,after:r,...s.current()})),o+=s.move(r),i(),o}},Dt=be({},"editorView"),Do=be({},"editorState"),kh=be([],"initTimer"),Xw=be({},"editor"),bs=be([],"inputRules"),Bn=be([],"prosePlugins"),ys=be([],"remarkPlugins"),xs=be([],"nodeView"),fu=be([],"markView"),pi=be(go().use(Pi).use(Vi),"remark"),ps=be({handlers:Jw,encode:[]},"remarkStringifyOptions"),su=bn("ConfigReady");function bj(t){let e=n=>(n.record(su),async()=>(await t(n),n.done(su),()=>{n.clearTimer(su)}));return Ca(e,{displayName:"Config"}),e}var _a=bn("InitReady");function yj(t){let e=n=>(n.inject(Xw,t).inject(Bn,[]).inject(ys,[]).inject(bs,[]).inject(xs,[]).inject(fu,[]).inject(ps,{handlers:Jw,encode:[]}).inject(pi,go().use(Pi).use(Vi)).inject(kh,[su]).record(_a),async()=>{await n.waitTimers(kh);let a=n.get(ps);return n.set(pi,go().use(Pi).use(Vi,a)),n.done(_a),()=>{n.remove(Xw).remove(Bn).remove(ys).remove(bs).remove(xs).remove(fu).remove(ps).remove(pi).remove(kh).clearTimer(_a)}});return Ca(e,{displayName:"Init"}),e}var Ft=bn("SchemaReady"),ou=be([],"schemaTimer"),Tt=be({},"schema"),ds=be([],"nodes"),ms=be([],"marks");function Zw(t){return{...t,parseDOM:t.parseDOM?.map(e=>({priority:t.priority,...e}))}}var Yw=t=>(t.inject(Tt,{}).inject(ds,[]).inject(ms,[]).inject(ou,[_a]).record(Ft),async()=>{await t.waitTimers(ou);let e=t.get(pi),n=t.get(ys).reduce((r,i)=>r.use(i.plugin,i.options),e);t.set(pi,n);let a=new Oc({nodes:Object.fromEntries(t.get(ds).map(([r,i])=>[r,Zw(i)])),marks:Object.fromEntries(t.get(ms).map(([r,i])=>[r,Zw(i)]))});return t.set(Tt,a),t.done(Ft),()=>{t.remove(Tt).remove(ds).remove(ms).remove(ou).clearTimer(Ft)}});Ca(Yw,{displayName:"Schema"});var Qw=class{constructor(){this.setCtx=t=>{this.#e=t},this.chain=()=>{if(this.#e==null)throw sc();let t=this.#e,e=[],n=this.get.bind(this),a={run:()=>{let i=ti(...e),s=t.get(Dt);return i(s.state,s.dispatch,s)},inline:i=>(e.push(i),a),pipe:r.bind(this)};function r(i,s){let o=n(i);return e.push(o(s)),a}return a}}#t=new $d;#e=null;get ctx(){return this.#e}create(t,e){let n=t.create(this.#t.sliceMap);return n.set(e),n}get(t){return this.#t.get(t).get()}remove(t){return this.#t.remove(t)}call(t,e){if(this.#e==null)throw sc();let n=this.get(t)(e),a=this.#e.get(Dt);return n(a.state,a.dispatch,a)}inline(t){if(this.#e==null)throw sc();let e=this.#e.get(Dt);return t(e.state,e.dispatch,e)}};function ek(t="cmdKey"){return be((()=>()=>!1),t)}var we=be(new Qw,"commands"),lu=be([Ft],"commandsTimer"),hs=bn("CommandsReady"),tk=t=>{let e=new Qw;return e.setCtx(t),t.inject(we,e).inject(lu,[Ft]).record(hs),async()=>(await t.waitTimers(lu),t.done(hs),()=>{t.remove(we).remove(lu).clearTimer(hs)})};Ca(tk,{displayName:"Commands"});function xj(t){return t.Backspace=ti(wx,Gc,hx,Nm),t}var nk=class{constructor(){this.setCtx=t=>{this.#t=t},this.add=t=>(this.#e.push(t),()=>{this.#e=this.#e.filter(e=>e!==t)}),this.addObjectKeymap=t=>{let e=[];return Object.entries(t).forEach(([n,a])=>{if(typeof a=="function"){let r={key:n,onRun:()=>a};this.#e.push(r),e.push(()=>{this.#e=this.#e.filter(i=>i!==r)})}else this.#e.push(a),e.push(()=>{this.#e=this.#e.filter(r=>r!==a)})}),()=>{e.forEach(n=>n())}},this.addBaseKeymap=()=>{let t=xj(xx);return this.addObjectKeymap(t)},this.build=()=>{let t={};return this.#e.forEach(e=>{t[e.key]=[...t[e.key]||[],e]}),Object.fromEntries(Object.entries(t).map(([e,n])=>{let a=n.sort((i,s)=>(s.priority??50)-(i.priority??50));return[e,(i,s,o)=>{let l=this.#t;if(l==null)throw Di();return ti(...a.map(c=>c.onRun(l)))(i,s,o)}]}))}}#t=null;#e=[];get ctx(){return this.#t}},Vo=be(new nk,"keymap"),_h=be([Ft],"keymapTimer"),fs=bn("KeymapReady"),wj=t=>{let e=new nk;return e.setCtx(t),t.inject(Vo,e).inject(_h,[Ft]).record(fs),async()=>(await t.waitTimers(_h),t.done(fs),()=>{t.remove(Vo).remove(_h).clearTimer(fs)})},cu=bn("ParserReady"),ak=(()=>{throw Di()}),va=be(ak,"parser"),vh=be([],"parserTimer"),rk=t=>(t.inject(va,ak).inject(vh,[Ft]).record(cu),async()=>{await t.waitTimers(vh);let e=t.get(pi),n=t.get(Tt);return t.set(va,Ox.create(n,e)),t.done(cu),()=>{t.remove(va).remove(vh).clearTimer(cu)}});Ca(rk,{displayName:"Parser"});var gs=bn("SerializerReady"),$h=be([],"serializerTimer"),ik=(()=>{throw Di()}),$a=be(ik,"serializer"),sk=t=>(t.inject($a,ik).inject($h,[Ft]).record(gs),async()=>{await t.waitTimers($h);let e=t.get(pi),n=t.get(Tt);return t.set($a,Lx.create(n,e)),t.done(gs),()=>{t.remove($a).remove($h).clearTimer(gs)}});Ca(sk,{displayName:"Serializer"});var Fo=be("","defaultValue"),Po=be(t=>t,"stateOptions"),uu=be([],"editorStateTimer"),pu=bn("EditorStateReady");function kj(t,e,n){if(typeof t=="string")return e(t);if(t.type==="html")return zn.fromSchema(n).parse(t.dom);if(t.type==="json")return Kt.fromJSON(n,t.value);throw Gb(t)}var _j=new $e("MILKDOWN_STATE_TRACKER"),ok=t=>(t.inject(Fo,"").inject(Do,{}).inject(Po,e=>e).inject(uu,[cu,gs,hs,fs]).record(pu),async()=>{await t.waitTimers(uu);let e=t.get(Tt),n=t.get(va),a=t.get(bs),r=t.get(Po),i=t.get(Bn),s=kj(t.get(Fo),n,e),o=t.get(Vo),l=o.addBaseKeymap(),c=[...i,new ve({key:_j,state:{init:()=>{},apply:(d,m,h,b)=>{t.set(Do,b)}}}),vx({rules:a}),Mx(o.build())];t.set(Bn,c);let u=r({schema:e,doc:s,plugins:c}),p=Qi.create(u);return t.set(Do,p),t.done(pu),()=>{l(),t.remove(Fo).remove(Do).remove(Po).remove(uu).clearTimer(pu)}});Ca(ok,{displayName:"EditorState"});var ws=be([],"pasteRule"),du=be([Ft],"pasteRuleTimer"),mu=bn("PasteRuleReady"),lk=t=>(t.inject(ws,[]).inject(du,[Ft]).record(mu),async()=>(await t.waitTimers(du),t.done(mu),()=>{t.remove(ws).remove(du).clearTimer(mu)}));Ca(lk,{displayName:"PasteRule"});var qo=bn("EditorViewReady"),hu=be([],"editorViewTimer"),Go=be({},"editorViewOptions"),Ho=be(null,"root"),Ch=be(null,"rootDOM"),jh=be({},"rootAttrs");function vj(t,e){let n=document.createElement("div");n.className="milkdown",t.appendChild(n),e.set(Ch,n);let a=e.get(jh);return Object.entries(a).forEach(([r,i])=>n.setAttribute(r,i)),n}function $j(t){t.classList.add("editor"),t.setAttribute("role","textbox")}var Cj=new $e("MILKDOWN_VIEW_CLEAR"),ck=t=>(t.inject(Ho,document.body).inject(Dt,{}).inject(Go,{}).inject(Ch,null).inject(jh,{}).inject(hu,[pu,mu]).record(qo),async()=>{await t.wait(_a);let e=t.get(Ho)||document.body,n=typeof e=="string"?document.querySelector(e):e;t.update(Bn,s=>[new ve({key:Cj,view:o=>{let l=n?vj(n,t):void 0;return(()=>{if(l&&n){let u=o.dom;n.replaceChild(l,u),l.appendChild(u)}})(),{destroy:()=>{l?.parentNode&&l?.parentNode.replaceChild(o.dom,l),l?.remove()}}}}),...s]),await t.waitTimers(hu);let a=t.get(Do),r=t.get(Go),i=new Oo(n,{state:a,nodeViews:Object.fromEntries(t.get(xs)),markViews:Object.fromEntries(t.get(fu)),transformPasted:(s,o,l)=>(t.get(ws).sort((c,u)=>(u.priority??50)-(c.priority??50)).map(c=>c.run).forEach(c=>{s=c(s,o,l)}),s),...r});return $j(i.dom),t.set(Dt,i),t.done(qo),()=>{i?.destroy(),t.remove(Ho).remove(Dt).remove(Go).remove(Ch).remove(jh).remove(hu).clearTimer(qo)}});Ca(ck,{displayName:"EditorView"});var _n=(function(t){return t.Idle="Idle",t.OnCreate="OnCreate",t.Created="Created",t.OnDestroy="OnDestroy",t.Destroyed="Destroyed",t})({}),uk=class pk{constructor(){this.enableInspector=(e=!0)=>(this.#t=e,this),this.onStatusChange=e=>(this.#n=e,this),this.config=e=>(this.#a.push(e),this),this.removeConfig=e=>(this.#a=this.#a.filter(n=>n!==e),this),this.use=e=>{let n=[e].flat();return n.flat().forEach(a=>{this.#r.set(a,{ctx:void 0,handler:void 0,cleanup:void 0})}),this.#e===_n.Created&&this.#c(n,this.#r),this},this.remove=async e=>this.#e===_n.OnCreate?(console.warn("[Milkdown]: You are trying to remove plugins when the editor is creating, this is not recommended, please check your code."),new Promise(n=>{setTimeout(()=>{n(this.remove(e))},50)})):(await this.#p([e].flat(),!0),this),this.create=async()=>this.#e===_n.OnCreate?this:(this.#e===_n.Created&&await this.destroy(),this.#m(_n.OnCreate),this.#u(),this.#c([...this.#r.keys()],this.#r),await Promise.all([this.#h(this.#o),this.#h(this.#r)].flat()),this.#m(_n.Created),this),this.destroy=async(e=!1)=>this.#e===_n.Destroyed||this.#e===_n.OnDestroy?this:this.#e===_n.OnCreate?new Promise(n=>{setTimeout(()=>{n(this.destroy(e))},50)}):(e&&(this.#a=[]),this.#m(_n.OnDestroy),await this.#p([...this.#r.keys()],e),await this.#d(),this.#m(_n.Destroyed),this),this.action=e=>e(this.#l),this.inspect=()=>this.#t?[...this.#o.values(),...this.#r.values()].map(({ctx:e})=>e?.inspector?.read()).filter(e=>!!e):(console.warn("[Milkdown]: You are trying to collect inspection when inspector is disabled, please enable inspector by `editor.enableInspector()` first."),[])}static make(){return new pk}#t=!1;#e=_n.Idle;#a=[];#n=()=>{};#i=new $d;#s=new Qb;#r=new Map;#o=new Map;#l=new Jb(this.#i,this.#s);#u=()=>{let e=bj(async a=>{await Promise.all(this.#a.map(r=>Promise.resolve(r(a))))}),n=[Yw,rk,sk,tk,wj,lk,ok,ck,yj(this),e];this.#c(n,this.#o)};#c=(e,n)=>{e.forEach(a=>{let r=this.#l.produce(this.#t?a.meta:void 0),i=a(r);n.set(a,{ctx:r,handler:i,cleanup:void 0})})};#p=(e,n=!1)=>Promise.all([e].flat().map(async a=>{let r=this.#r.get(a)?.cleanup;return n?this.#r.delete(a):this.#r.set(a,{ctx:void 0,handler:void 0,cleanup:void 0}),typeof r=="function"?r():r}));#d=async()=>{await Promise.all([...this.#o.entries()].map(async([e,{cleanup:n}])=>typeof n=="function"?n():n)),this.#o.clear()};#m=e=>{this.#e=e,this.#n(e)};#h=e=>[...e.entries()].map(async([n,a])=>{let{ctx:r,handler:i}=a;if(!i)return;let s=await i();e.set(n,{ctx:r,handler:i,cleanup:s})});get ctx(){return this.#l}get status(){return this.#e}};function Sh(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:r,mathFlowFence:a,mathFlowFenceMeta:n,mathFlowValue:o,mathText:s,mathTextData:o}};function t(l){let c={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[c]}},l)}function e(){this.buffer()}function n(){let l=this.resume(),c=this.stack[this.stack.length-1];c.type,c.meta=l}function a(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function r(l){let c=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),u=this.stack[this.stack.length-1];u.type,this.exit(l),u.value=c;let p=u.data.hChildren[0];p.type,p.tagName,p.children.push({type:"text",value:c}),this.data.mathFlowInside=void 0}function i(l){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},l),this.buffer()}function s(l){let c=this.resume(),u=this.stack[this.stack.length-1];u.type,this.exit(l),u.value=c,u.data.hChildren.push({type:"text",value:c})}function o(l){this.config.enter.data.call(this,l),this.config.exit.data.call(this,l)}}function Eh(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),a.peek=r,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` +`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:a}};function n(i,s,o,l){let c=i.value||"",u=o.createTracker(l),p="$".repeat(Math.max(vc(c,"$")+1,2)),d=o.enter("mathFlow"),m=u.move(p);if(i.meta){let h=o.enter("mathFlowMeta");m+=u.move(o.safe(i.meta,{after:` `,before:m,encode:["$"],...u.current()})),h()}return m+=u.move(` `),c&&(m+=u.move(c+` -`)),m+=u.move(p),d(),m}function a(i,s,o){let l=i.value||"",c=1;for(e||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;let u="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let p=-1;for(;++p15?c="\u2026"+o.slice(r-15,r):c=o.slice(0,r);var u;i+15t.replace(Z8,"-$1").toLowerCase(),J8={"&":"&",">":">","<":"<",'"':""","'":"'"},Y8=/[&><"']/g,At=t=>String(t).replace(Y8,e=>J8[e]),yu=t=>t.type==="ordgroup"||t.type==="color"?t.body.length===1?yu(t.body[0]):t:t.type==="font"?yu(t.body):t,Q8=new Set(["mathord","textord","atom"]),Ca=t=>Q8.has(yu(t).type),ej=t=>{var e=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(t);return e?e[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(e[1])?null:e[1].toLowerCase():"_relative"},Mh={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:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},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:t=>Math.max(0,t),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:t=>Math.max(0,t),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:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function tj(t){if("default"in t)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var Fo=class{constructor(e){e===void 0&&(e={}),e=e||{};for(var n of Object.keys(Mh)){var a=Mh[n],r=e[n];this[n]=r!==void 0?a.processor?a.processor(r):r:tj(a)}}reportNonstrict(e,n,a){var r=this.strict;if(typeof r=="function"&&(r=r(e,n,a)),!(!r||r==="ignore")){if(r===!0||r==="error")throw new G("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),a);r==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+r+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,a){var r=this.strict;if(typeof r=="function")try{r=r(e,n,a)}catch{r="error"}return!r||r==="ignore"?!1:r===!0||r==="error"?!0:r==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+r+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if("url"in e&&e.url&&!e.protocol){var n=ej(e.url);if(n==null)return!1;e.protocol=n}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}},Wn=class{constructor(e,n,a){this.id=e,this.size=n,this.cramped=a}sup(){return Un[nj[this.id]]}sub(){return Un[aj[this.id]]}fracNum(){return Un[rj[this.id]]}fracDen(){return Un[ij[this.id]]}cramp(){return Un[sj[this.id]]}text(){return Un[oj[this.id]]}isTight(){return this.size>=2}},Kh=0,ku=1,ms=2,$a=3,qo=4,kn=5,hs=6,Dt=7,Un=[new Wn(Kh,0,!1),new Wn(ku,0,!0),new Wn(ms,1,!1),new Wn($a,1,!0),new Wn(qo,2,!1),new Wn(kn,2,!0),new Wn(hs,3,!1),new Wn(Dt,3,!0)],nj=[qo,kn,qo,kn,hs,Dt,hs,Dt],aj=[kn,kn,kn,kn,Dt,Dt,Dt,Dt],rj=[ms,$a,qo,kn,hs,Dt,hs,Dt],ij=[$a,$a,kn,kn,Dt,Dt,Dt,Dt],sj=[ku,ku,$a,$a,kn,kn,Dt,Dt],oj=[Kh,ku,ms,$a,ms,$a,ms,$a],pe={DISPLAY:Un[Kh],TEXT:Un[ms],SCRIPT:Un[qo],SCRIPTSCRIPT:Un[hs]},Nh=[{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]]}];function lj(t){for(var e=0;e=r[0]&&t<=r[1])return n.name}return null}var xu=[];Nh.forEach(t=>t.blocks.forEach(e=>xu.push(...e)));function vw(t){for(var e=0;e=xu[e]&&t<=xu[e+1])return!0;return!1}var nt=t=>t+" "+t,ds=80,cj=function(e,n){return"M95,"+(622+e+n)+` +`)),m+=u.move(p),d(),m}function a(i,s,o){let l=i.value||"",c=1;for(e||c++;new RegExp("(^|[^$])"+"\\$".repeat(c)+"([^$]|$)").test(l);)c++;let u="$".repeat(c);/[^ \r\n]/.test(l)&&(/^[ \r\n]/.test(l)&&/[ \r\n]$/.test(l)||/^\$|\$$/.test(l))&&(l=" "+l+" ");let p=-1;for(;++p15?c="\u2026"+o.slice(r-15,r):c=o.slice(0,r);var u;i+15t.replace(Tj,"-$1").toLowerCase(),Mj={"&":"&",">":">","<":"<",'"':""","'":"'"},Nj=/[&><"']/g,Nt=t=>String(t).replace(Nj,e=>Mj[e]),Su=t=>t.type==="ordgroup"||t.type==="color"?t.body.length===1?Su(t.body[0]):t:t.type==="font"?Su(t.body):t,Ij=new Set(["mathord","textord","atom"]),Aa=t=>Ij.has(Su(t).type),Rj=t=>{var e=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(t);return e?e[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(e[1])?null:e[1].toLowerCase():"_relative"},Hh={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:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},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:t=>Math.max(0,t),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:t=>Math.max(0,t),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:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function zj(t){if("default"in t)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var Zo=class{constructor(e){e===void 0&&(e={}),e=e||{};for(var n of Object.keys(Hh)){var a=Hh[n],r=e[n];this[n]=r!==void 0?a.processor?a.processor(r):r:zj(a)}}reportNonstrict(e,n,a){var r=this.strict;if(typeof r=="function"&&(r=r(e,n,a)),!(!r||r==="ignore")){if(r===!0||r==="error")throw new G("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),a);r==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+r+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,a){var r=this.strict;if(typeof r=="function")try{r=r(e,n,a)}catch{r="error"}return!r||r==="ignore"?!1:r===!0||r==="error"?!0:r==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+r+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if("url"in e&&e.url&&!e.protocol){var n=Rj(e.url);if(n==null)return!1;e.protocol=n}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}},Xn=class{constructor(e,n,a){this.id=e,this.size=n,this.cramped=a}sup(){return Zn[Oj[this.id]]}sub(){return Zn[Bj[this.id]]}fracNum(){return Zn[Lj[this.id]]}fracDen(){return Zn[Dj[this.id]]}cramp(){return Zn[Fj[this.id]]}text(){return Zn[Pj[this.id]]}isTight(){return this.size>=2}},lf=0,Au=1,_s=2,Ea=3,Jo=4,vn=5,vs=6,qt=7,Zn=[new Xn(lf,0,!1),new Xn(Au,0,!0),new Xn(_s,1,!1),new Xn(Ea,1,!0),new Xn(Jo,2,!1),new Xn(vn,2,!0),new Xn(vs,3,!1),new Xn(qt,3,!0)],Oj=[Jo,vn,Jo,vn,vs,qt,vs,qt],Bj=[vn,vn,vn,vn,qt,qt,qt,qt],Lj=[_s,Ea,Jo,vn,vs,qt,vs,qt],Dj=[Ea,Ea,vn,vn,qt,qt,qt,qt],Fj=[Au,Au,Ea,Ea,vn,vn,qt,qt],Pj=[lf,Au,_s,Ea,_s,Ea,_s,Ea],pe={DISPLAY:Zn[lf],TEXT:Zn[_s],SCRIPT:Zn[Jo],SCRIPTSCRIPT:Zn[vs]},Vh=[{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]]}];function qj(t){for(var e=0;e=r[0]&&t<=r[1])return n.name}return null}var Eu=[];Vh.forEach(t=>t.blocks.forEach(e=>Eu.push(...e)));function Hk(t){for(var e=0;e=Eu[e]&&t<=Eu[e+1])return!0;return!1}var it=t=>t+" "+t,ks=80,Gj=function(e,n){return"M95,"+(622+e+n)+` 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 @@ -56,7 +56,7 @@ c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`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+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},uj=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 +M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Hj=function(e,n){return"M263,"+(601+e+n)+`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`+e/2.084+" -"+e+` @@ -66,7 +66,7 @@ s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5, 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+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},pj=function(e,n){return"M983 "+(10+e+n)+` +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Vj=function(e,n){return"M983 "+(10+e+n)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` 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 @@ -75,7 +75,7 @@ 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+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},dj=function(e,n){return"M424,"+(2398+e+n)+` +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Wj=function(e,n){return"M424,"+(2398+e+n)+` 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 @@ -85,18 +85,18 @@ v`+(40+e)+`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+e)+" "+n+` -h400000v`+(40+e)+"h-400000z"},mj=function(e,n){return"M473,"+(2713+e+n)+` +h400000v`+(40+e)+"h-400000z"},Uj=function(e,n){return"M473,"+(2713+e+n)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`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+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},hj=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},fj=function(e,n,a){var r=a-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` +606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},Kj=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},Xj=function(e,n,a){var r=a-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` H742v`+r+`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 `+n+"H400000v"+(40+e)+"H742z"},gj=function(e,n,a){n=1e3*n;var r="";switch(e){case"sqrtMain":r=cj(n,ds);break;case"sqrtSize1":r=uj(n,ds);break;case"sqrtSize2":r=pj(n,ds);break;case"sqrtSize3":r=dj(n,ds);break;case"sqrtSize4":r=mj(n,ds);break;case"sqrtTall":r=fj(n,ds,a)}return r},bj=function(e,n){switch(e){case"\u239C":return nt("M291 0 H417 V"+n+" H291z");case"\u2223":return nt("M145 0 H188 V"+n+" H145z");case"\u2225":return nt("M145 0 H188 V"+n+" H145z")+nt("M367 0 H410 V"+n+" H367z");case"\u239F":return nt("M457 0 H583 V"+n+" H457z");case"\u23A2":return nt("M319 0 H403 V"+n+" H319z");case"\u23A5":return nt("M263 0 H347 V"+n+" H263z");case"\u23AA":return nt("M384 0 H504 V"+n+" H384z");case"\u23D0":return nt("M312 0 H355 V"+n+" H312z");case"\u2016":return nt("M257 0 H300 V"+n+" H257z")+nt("M478 0 H521 V"+n+" H478z");default:return""}},Kk={doubleleftarrow:`M262 157 +219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},Zj=function(e,n,a){n=1e3*n;var r="";switch(e){case"sqrtMain":r=Gj(n,ks);break;case"sqrtSize1":r=Hj(n,ks);break;case"sqrtSize2":r=Vj(n,ks);break;case"sqrtSize3":r=Wj(n,ks);break;case"sqrtSize4":r=Uj(n,ks);break;case"sqrtTall":r=Xj(n,ks,a)}return r},Jj=function(e,n){switch(e){case"\u239C":return it("M291 0 H417 V"+n+" H291z");case"\u2223":return it("M145 0 H188 V"+n+" H145z");case"\u2225":return it("M145 0 H188 V"+n+" H145z")+it("M367 0 H410 V"+n+" H367z");case"\u239F":return it("M457 0 H583 V"+n+" H457z");case"\u23A2":return it("M319 0 H403 V"+n+" H319z");case"\u23A5":return it("M263 0 H347 V"+n+" H263z");case"\u23AA":return it("M384 0 H504 V"+n+" H384z");case"\u23D0":return it("M312 0 H355 V"+n+" H312z");case"\u2016":return it("M257 0 H300 V"+n+" H257z")+it("M478 0 H521 V"+n+" H478z");default:return""}},fk={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 @@ -142,10 +142,10 @@ m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 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:nt("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:nt("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:nt("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:nt("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:it("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:it("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:it("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:it("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:nt("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:it("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 @@ -194,7 +194,7 @@ m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown 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:nt("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:nt("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:nt("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 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:it("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:it("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:it("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 @@ -267,7 +267,7 @@ M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z` 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`},yj=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Yj=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+n+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+n+" v1759 h84z";case"vert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 @@ -295,27 +295,27 @@ 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 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,-`+(n+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.")}},sr=class{constructor(e){this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}},Ih={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},xj={ex:!0,em:!0,mu:!0},$w=function(e){return typeof e!="string"&&(e=e.unit),e in Ih||e in xj||e==="ex"},qe=function(e,n){var a;if(e.unit in Ih)a=Ih[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")a=n.fontMetrics().cssEmPerMu;else{var r;if(n.style.isTight()?r=n.havingStyle(n.style.text()):r=n,e.unit==="ex")a=r.fontMetrics().xHeight;else if(e.unit==="em")a=r.fontMetrics().quad;else throw new G("Invalid unit: '"+e.unit+"'");r!==n&&(a*=r.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*a,n.maxSize)},H=function(e){return+e.toFixed(4)+"em"},or=function(e){return e.filter(n=>n).join(" ")},Cw=function(e,n,a){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=a||{},n){n.style.isTight()&&this.classes.push("mtight");var r=n.getColor();r&&(this.style.color=r)}},jw=function(e){var n=document.createElement(e);n.className=or(this.classes);for(var a of Object.keys(this.style))n.style[a]=this.style[a];for(var r of Object.keys(this.attributes))n.setAttribute(r,this.attributes[r]);for(var i=0;i/=\x00-\x1f]/,Sw=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+At(or(this.classes))+'"');var a="";for(var r of Object.keys(this.style))a+=Uh(r)+":"+this.style[r]+";";a&&(n+=' style="'+At(a)+'"');for(var i of Object.keys(this.attributes)){if(kj.test(i))throw new G("Invalid attribute name '"+i+"'");n+=" "+i+'="'+At(this.attributes[i])+'"'}n+=">";for(var s=0;s",n},lr=class{constructor(e,n,a,r){Cw.call(this,e,a,r),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return jw.call(this,"span")}toMarkup(){return Sw.call(this,"span")}},fs=class{constructor(e,n,a,r){Cw.call(this,n,r),this.children=a||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return jw.call(this,"a")}toMarkup(){return Sw.call(this,"a")}},Rh=class{constructor(e,n,a){this.alt=n,this.src=e,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=a}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n of Object.keys(this.style))e.style[n]=this.style[n];return e}toMarkup(){var e=''+At(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=H(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=or(this.classes));for(var a of Object.keys(this.style))n=n||document.createElement("span"),n.style[a]=this.style[a];return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(a+="margin-right:"+H(this.italic)+";");for(var r of Object.keys(this.style))a+=Uh(r)+":"+this.style[r]+";";a&&(e=!0,n+=' style="'+At(a)+'"');var i=At(this.text);return e?(n+=">",n+=i,n+="",n):i}},Bn=class{constructor(e,n){this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var a of Object.keys(this.attributes))n.setAttribute(a,this.attributes[a]);for(var r=0;r':''}},Po=class{constructor(e){this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var a of Object.keys(this.attributes))n.setAttribute(a,this.attributes[a]);return n}toMarkup(){var e=" but got "+String(t)+".")}var $j=t=>t instanceof lr||t instanceof fs||t instanceof sr,Kn={"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]}},ou={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]},Xk={\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"};function Cj(t,e){Kn[t]=e}function Xh(t,e,n){if(!Kn[e])throw new Error("Font metrics not found for font: "+e+".");var a=t.charCodeAt(0),r=Kn[e][a];if(!r&&t[0]in Xk&&(a=Xk[t[0]].charCodeAt(0),r=Kn[e][a]),!r&&n==="text"&&vw(a)&&(r=Kn[e][77]),r)return{depth:r[0],height:r[1],italic:r[2],skew:r[3],width:r[4]}}var bh={};function jj(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!bh[e]){var n=bh[e]={cssEmPerMu:ou.quad[e]/18};for(var a in ou)ou.hasOwnProperty(a)&&(n[a]=ou[a][e])}return bh[e]}var Sj={bin:1,close:1,inner:1,open:1,punct:1,rel:1},Ej={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},Be={math:{},text:{}};function f(t,e,n,a,r,i){Be[t][r]={font:e,group:n,replace:a},i&&a&&(Be[t][a]=Be[t][r])}var g="math",O="text",x="main",v="ams",Le="accent-token",Z="bin",qt="close",ys="inner",ne="mathord",Ye="op-token",an="open",Ho="punct",C="rel",ja="spacing",A="textord";f(g,x,C,"\u2261","\\equiv",!0);f(g,x,C,"\u227A","\\prec",!0);f(g,x,C,"\u227B","\\succ",!0);f(g,x,C,"\u223C","\\sim",!0);f(g,x,C,"\u22A5","\\perp");f(g,x,C,"\u2AAF","\\preceq",!0);f(g,x,C,"\u2AB0","\\succeq",!0);f(g,x,C,"\u2243","\\simeq",!0);f(g,x,C,"\u2223","\\mid",!0);f(g,x,C,"\u226A","\\ll",!0);f(g,x,C,"\u226B","\\gg",!0);f(g,x,C,"\u224D","\\asymp",!0);f(g,x,C,"\u2225","\\parallel");f(g,x,C,"\u22C8","\\bowtie",!0);f(g,x,C,"\u2323","\\smile",!0);f(g,x,C,"\u2291","\\sqsubseteq",!0);f(g,x,C,"\u2292","\\sqsupseteq",!0);f(g,x,C,"\u2250","\\doteq",!0);f(g,x,C,"\u2322","\\frown",!0);f(g,x,C,"\u220B","\\ni",!0);f(g,x,C,"\u221D","\\propto",!0);f(g,x,C,"\u22A2","\\vdash",!0);f(g,x,C,"\u22A3","\\dashv",!0);f(g,x,C,"\u220B","\\owns");f(g,x,Ho,".","\\ldotp");f(g,x,Ho,"\u22C5","\\cdotp");f(g,x,Ho,"\u22C5","\xB7");f(O,x,A,"\u22C5","\xB7");f(g,x,A,"#","\\#");f(O,x,A,"#","\\#");f(g,x,A,"&","\\&");f(O,x,A,"&","\\&");f(g,x,A,"\u2135","\\aleph",!0);f(g,x,A,"\u2200","\\forall",!0);f(g,x,A,"\u210F","\\hbar",!0);f(g,x,A,"\u2203","\\exists",!0);f(g,x,A,"\u2207","\\nabla",!0);f(g,x,A,"\u266D","\\flat",!0);f(g,x,A,"\u2113","\\ell",!0);f(g,x,A,"\u266E","\\natural",!0);f(g,x,A,"\u2663","\\clubsuit",!0);f(g,x,A,"\u2118","\\wp",!0);f(g,x,A,"\u266F","\\sharp",!0);f(g,x,A,"\u2662","\\diamondsuit",!0);f(g,x,A,"\u211C","\\Re",!0);f(g,x,A,"\u2661","\\heartsuit",!0);f(g,x,A,"\u2111","\\Im",!0);f(g,x,A,"\u2660","\\spadesuit",!0);f(g,x,A,"\xA7","\\S",!0);f(O,x,A,"\xA7","\\S");f(g,x,A,"\xB6","\\P",!0);f(O,x,A,"\xB6","\\P");f(g,x,A,"\u2020","\\dag");f(O,x,A,"\u2020","\\dag");f(O,x,A,"\u2020","\\textdagger");f(g,x,A,"\u2021","\\ddag");f(O,x,A,"\u2021","\\ddag");f(O,x,A,"\u2021","\\textdaggerdbl");f(g,x,qt,"\u23B1","\\rmoustache",!0);f(g,x,an,"\u23B0","\\lmoustache",!0);f(g,x,qt,"\u27EF","\\rgroup",!0);f(g,x,an,"\u27EE","\\lgroup",!0);f(g,x,Z,"\u2213","\\mp",!0);f(g,x,Z,"\u2296","\\ominus",!0);f(g,x,Z,"\u228E","\\uplus",!0);f(g,x,Z,"\u2293","\\sqcap",!0);f(g,x,Z,"\u2217","\\ast");f(g,x,Z,"\u2294","\\sqcup",!0);f(g,x,Z,"\u25EF","\\bigcirc",!0);f(g,x,Z,"\u2219","\\bullet",!0);f(g,x,Z,"\u2021","\\ddagger");f(g,x,Z,"\u2240","\\wr",!0);f(g,x,Z,"\u2A3F","\\amalg");f(g,x,Z,"&","\\And");f(g,x,C,"\u27F5","\\longleftarrow",!0);f(g,x,C,"\u21D0","\\Leftarrow",!0);f(g,x,C,"\u27F8","\\Longleftarrow",!0);f(g,x,C,"\u27F6","\\longrightarrow",!0);f(g,x,C,"\u21D2","\\Rightarrow",!0);f(g,x,C,"\u27F9","\\Longrightarrow",!0);f(g,x,C,"\u2194","\\leftrightarrow",!0);f(g,x,C,"\u27F7","\\longleftrightarrow",!0);f(g,x,C,"\u21D4","\\Leftrightarrow",!0);f(g,x,C,"\u27FA","\\Longleftrightarrow",!0);f(g,x,C,"\u21A6","\\mapsto",!0);f(g,x,C,"\u27FC","\\longmapsto",!0);f(g,x,C,"\u2197","\\nearrow",!0);f(g,x,C,"\u21A9","\\hookleftarrow",!0);f(g,x,C,"\u21AA","\\hookrightarrow",!0);f(g,x,C,"\u2198","\\searrow",!0);f(g,x,C,"\u21BC","\\leftharpoonup",!0);f(g,x,C,"\u21C0","\\rightharpoonup",!0);f(g,x,C,"\u2199","\\swarrow",!0);f(g,x,C,"\u21BD","\\leftharpoondown",!0);f(g,x,C,"\u21C1","\\rightharpoondown",!0);f(g,x,C,"\u2196","\\nwarrow",!0);f(g,x,C,"\u21CC","\\rightleftharpoons",!0);f(g,v,C,"\u226E","\\nless",!0);f(g,v,C,"\uE010","\\@nleqslant");f(g,v,C,"\uE011","\\@nleqq");f(g,v,C,"\u2A87","\\lneq",!0);f(g,v,C,"\u2268","\\lneqq",!0);f(g,v,C,"\uE00C","\\@lvertneqq");f(g,v,C,"\u22E6","\\lnsim",!0);f(g,v,C,"\u2A89","\\lnapprox",!0);f(g,v,C,"\u2280","\\nprec",!0);f(g,v,C,"\u22E0","\\npreceq",!0);f(g,v,C,"\u22E8","\\precnsim",!0);f(g,v,C,"\u2AB9","\\precnapprox",!0);f(g,v,C,"\u2241","\\nsim",!0);f(g,v,C,"\uE006","\\@nshortmid");f(g,v,C,"\u2224","\\nmid",!0);f(g,v,C,"\u22AC","\\nvdash",!0);f(g,v,C,"\u22AD","\\nvDash",!0);f(g,v,C,"\u22EA","\\ntriangleleft");f(g,v,C,"\u22EC","\\ntrianglelefteq",!0);f(g,v,C,"\u228A","\\subsetneq",!0);f(g,v,C,"\uE01A","\\@varsubsetneq");f(g,v,C,"\u2ACB","\\subsetneqq",!0);f(g,v,C,"\uE017","\\@varsubsetneqq");f(g,v,C,"\u226F","\\ngtr",!0);f(g,v,C,"\uE00F","\\@ngeqslant");f(g,v,C,"\uE00E","\\@ngeqq");f(g,v,C,"\u2A88","\\gneq",!0);f(g,v,C,"\u2269","\\gneqq",!0);f(g,v,C,"\uE00D","\\@gvertneqq");f(g,v,C,"\u22E7","\\gnsim",!0);f(g,v,C,"\u2A8A","\\gnapprox",!0);f(g,v,C,"\u2281","\\nsucc",!0);f(g,v,C,"\u22E1","\\nsucceq",!0);f(g,v,C,"\u22E9","\\succnsim",!0);f(g,v,C,"\u2ABA","\\succnapprox",!0);f(g,v,C,"\u2246","\\ncong",!0);f(g,v,C,"\uE007","\\@nshortparallel");f(g,v,C,"\u2226","\\nparallel",!0);f(g,v,C,"\u22AF","\\nVDash",!0);f(g,v,C,"\u22EB","\\ntriangleright");f(g,v,C,"\u22ED","\\ntrianglerighteq",!0);f(g,v,C,"\uE018","\\@nsupseteqq");f(g,v,C,"\u228B","\\supsetneq",!0);f(g,v,C,"\uE01B","\\@varsupsetneq");f(g,v,C,"\u2ACC","\\supsetneqq",!0);f(g,v,C,"\uE019","\\@varsupsetneqq");f(g,v,C,"\u22AE","\\nVdash",!0);f(g,v,C,"\u2AB5","\\precneqq",!0);f(g,v,C,"\u2AB6","\\succneqq",!0);f(g,v,C,"\uE016","\\@nsubseteqq");f(g,v,Z,"\u22B4","\\unlhd");f(g,v,Z,"\u22B5","\\unrhd");f(g,v,C,"\u219A","\\nleftarrow",!0);f(g,v,C,"\u219B","\\nrightarrow",!0);f(g,v,C,"\u21CD","\\nLeftarrow",!0);f(g,v,C,"\u21CF","\\nRightarrow",!0);f(g,v,C,"\u21AE","\\nleftrightarrow",!0);f(g,v,C,"\u21CE","\\nLeftrightarrow",!0);f(g,v,C,"\u25B3","\\vartriangle");f(g,v,A,"\u210F","\\hslash");f(g,v,A,"\u25BD","\\triangledown");f(g,v,A,"\u25CA","\\lozenge");f(g,v,A,"\u24C8","\\circledS");f(g,v,A,"\xAE","\\circledR");f(O,v,A,"\xAE","\\circledR");f(g,v,A,"\u2221","\\measuredangle",!0);f(g,v,A,"\u2204","\\nexists");f(g,v,A,"\u2127","\\mho");f(g,v,A,"\u2132","\\Finv",!0);f(g,v,A,"\u2141","\\Game",!0);f(g,v,A,"\u2035","\\backprime");f(g,v,A,"\u25B2","\\blacktriangle");f(g,v,A,"\u25BC","\\blacktriangledown");f(g,v,A,"\u25A0","\\blacksquare");f(g,v,A,"\u29EB","\\blacklozenge");f(g,v,A,"\u2605","\\bigstar");f(g,v,A,"\u2222","\\sphericalangle",!0);f(g,v,A,"\u2201","\\complement",!0);f(g,v,A,"\xF0","\\eth",!0);f(O,x,A,"\xF0","\xF0");f(g,v,A,"\u2571","\\diagup");f(g,v,A,"\u2572","\\diagdown");f(g,v,A,"\u25A1","\\square");f(g,v,A,"\u25A1","\\Box");f(g,v,A,"\u25CA","\\Diamond");f(g,v,A,"\xA5","\\yen",!0);f(O,v,A,"\xA5","\\yen",!0);f(g,v,A,"\u2713","\\checkmark",!0);f(O,v,A,"\u2713","\\checkmark");f(g,v,A,"\u2136","\\beth",!0);f(g,v,A,"\u2138","\\daleth",!0);f(g,v,A,"\u2137","\\gimel",!0);f(g,v,A,"\u03DD","\\digamma",!0);f(g,v,A,"\u03F0","\\varkappa");f(g,v,an,"\u250C","\\@ulcorner",!0);f(g,v,qt,"\u2510","\\@urcorner",!0);f(g,v,an,"\u2514","\\@llcorner",!0);f(g,v,qt,"\u2518","\\@lrcorner",!0);f(g,v,C,"\u2266","\\leqq",!0);f(g,v,C,"\u2A7D","\\leqslant",!0);f(g,v,C,"\u2A95","\\eqslantless",!0);f(g,v,C,"\u2272","\\lesssim",!0);f(g,v,C,"\u2A85","\\lessapprox",!0);f(g,v,C,"\u224A","\\approxeq",!0);f(g,v,Z,"\u22D6","\\lessdot");f(g,v,C,"\u22D8","\\lll",!0);f(g,v,C,"\u2276","\\lessgtr",!0);f(g,v,C,"\u22DA","\\lesseqgtr",!0);f(g,v,C,"\u2A8B","\\lesseqqgtr",!0);f(g,v,C,"\u2251","\\doteqdot");f(g,v,C,"\u2253","\\risingdotseq",!0);f(g,v,C,"\u2252","\\fallingdotseq",!0);f(g,v,C,"\u223D","\\backsim",!0);f(g,v,C,"\u22CD","\\backsimeq",!0);f(g,v,C,"\u2AC5","\\subseteqq",!0);f(g,v,C,"\u22D0","\\Subset",!0);f(g,v,C,"\u228F","\\sqsubset",!0);f(g,v,C,"\u227C","\\preccurlyeq",!0);f(g,v,C,"\u22DE","\\curlyeqprec",!0);f(g,v,C,"\u227E","\\precsim",!0);f(g,v,C,"\u2AB7","\\precapprox",!0);f(g,v,C,"\u22B2","\\vartriangleleft");f(g,v,C,"\u22B4","\\trianglelefteq");f(g,v,C,"\u22A8","\\vDash",!0);f(g,v,C,"\u22AA","\\Vvdash",!0);f(g,v,C,"\u2323","\\smallsmile");f(g,v,C,"\u2322","\\smallfrown");f(g,v,C,"\u224F","\\bumpeq",!0);f(g,v,C,"\u224E","\\Bumpeq",!0);f(g,v,C,"\u2267","\\geqq",!0);f(g,v,C,"\u2A7E","\\geqslant",!0);f(g,v,C,"\u2A96","\\eqslantgtr",!0);f(g,v,C,"\u2273","\\gtrsim",!0);f(g,v,C,"\u2A86","\\gtrapprox",!0);f(g,v,Z,"\u22D7","\\gtrdot");f(g,v,C,"\u22D9","\\ggg",!0);f(g,v,C,"\u2277","\\gtrless",!0);f(g,v,C,"\u22DB","\\gtreqless",!0);f(g,v,C,"\u2A8C","\\gtreqqless",!0);f(g,v,C,"\u2256","\\eqcirc",!0);f(g,v,C,"\u2257","\\circeq",!0);f(g,v,C,"\u225C","\\triangleq",!0);f(g,v,C,"\u223C","\\thicksim");f(g,v,C,"\u2248","\\thickapprox");f(g,v,C,"\u2AC6","\\supseteqq",!0);f(g,v,C,"\u22D1","\\Supset",!0);f(g,v,C,"\u2290","\\sqsupset",!0);f(g,v,C,"\u227D","\\succcurlyeq",!0);f(g,v,C,"\u22DF","\\curlyeqsucc",!0);f(g,v,C,"\u227F","\\succsim",!0);f(g,v,C,"\u2AB8","\\succapprox",!0);f(g,v,C,"\u22B3","\\vartriangleright");f(g,v,C,"\u22B5","\\trianglerighteq");f(g,v,C,"\u22A9","\\Vdash",!0);f(g,v,C,"\u2223","\\shortmid");f(g,v,C,"\u2225","\\shortparallel");f(g,v,C,"\u226C","\\between",!0);f(g,v,C,"\u22D4","\\pitchfork",!0);f(g,v,C,"\u221D","\\varpropto");f(g,v,C,"\u25C0","\\blacktriangleleft");f(g,v,C,"\u2234","\\therefore",!0);f(g,v,C,"\u220D","\\backepsilon");f(g,v,C,"\u25B6","\\blacktriangleright");f(g,v,C,"\u2235","\\because",!0);f(g,v,C,"\u22D8","\\llless");f(g,v,C,"\u22D9","\\gggtr");f(g,v,Z,"\u22B2","\\lhd");f(g,v,Z,"\u22B3","\\rhd");f(g,v,C,"\u2242","\\eqsim",!0);f(g,x,C,"\u22C8","\\Join");f(g,v,C,"\u2251","\\Doteq",!0);f(g,v,Z,"\u2214","\\dotplus",!0);f(g,v,Z,"\u2216","\\smallsetminus");f(g,v,Z,"\u22D2","\\Cap",!0);f(g,v,Z,"\u22D3","\\Cup",!0);f(g,v,Z,"\u2A5E","\\doublebarwedge",!0);f(g,v,Z,"\u229F","\\boxminus",!0);f(g,v,Z,"\u229E","\\boxplus",!0);f(g,v,Z,"\u22C7","\\divideontimes",!0);f(g,v,Z,"\u22C9","\\ltimes",!0);f(g,v,Z,"\u22CA","\\rtimes",!0);f(g,v,Z,"\u22CB","\\leftthreetimes",!0);f(g,v,Z,"\u22CC","\\rightthreetimes",!0);f(g,v,Z,"\u22CF","\\curlywedge",!0);f(g,v,Z,"\u22CE","\\curlyvee",!0);f(g,v,Z,"\u229D","\\circleddash",!0);f(g,v,Z,"\u229B","\\circledast",!0);f(g,v,Z,"\u22C5","\\centerdot");f(g,v,Z,"\u22BA","\\intercal",!0);f(g,v,Z,"\u22D2","\\doublecap");f(g,v,Z,"\u22D3","\\doublecup");f(g,v,Z,"\u22A0","\\boxtimes",!0);f(g,v,C,"\u21E2","\\dashrightarrow",!0);f(g,v,C,"\u21E0","\\dashleftarrow",!0);f(g,v,C,"\u21C7","\\leftleftarrows",!0);f(g,v,C,"\u21C6","\\leftrightarrows",!0);f(g,v,C,"\u21DA","\\Lleftarrow",!0);f(g,v,C,"\u219E","\\twoheadleftarrow",!0);f(g,v,C,"\u21A2","\\leftarrowtail",!0);f(g,v,C,"\u21AB","\\looparrowleft",!0);f(g,v,C,"\u21CB","\\leftrightharpoons",!0);f(g,v,C,"\u21B6","\\curvearrowleft",!0);f(g,v,C,"\u21BA","\\circlearrowleft",!0);f(g,v,C,"\u21B0","\\Lsh",!0);f(g,v,C,"\u21C8","\\upuparrows",!0);f(g,v,C,"\u21BF","\\upharpoonleft",!0);f(g,v,C,"\u21C3","\\downharpoonleft",!0);f(g,x,C,"\u22B6","\\origof",!0);f(g,x,C,"\u22B7","\\imageof",!0);f(g,v,C,"\u22B8","\\multimap",!0);f(g,v,C,"\u21AD","\\leftrightsquigarrow",!0);f(g,v,C,"\u21C9","\\rightrightarrows",!0);f(g,v,C,"\u21C4","\\rightleftarrows",!0);f(g,v,C,"\u21A0","\\twoheadrightarrow",!0);f(g,v,C,"\u21A3","\\rightarrowtail",!0);f(g,v,C,"\u21AC","\\looparrowright",!0);f(g,v,C,"\u21B7","\\curvearrowright",!0);f(g,v,C,"\u21BB","\\circlearrowright",!0);f(g,v,C,"\u21B1","\\Rsh",!0);f(g,v,C,"\u21CA","\\downdownarrows",!0);f(g,v,C,"\u21BE","\\upharpoonright",!0);f(g,v,C,"\u21C2","\\downharpoonright",!0);f(g,v,C,"\u21DD","\\rightsquigarrow",!0);f(g,v,C,"\u21DD","\\leadsto");f(g,v,C,"\u21DB","\\Rrightarrow",!0);f(g,v,C,"\u21BE","\\restriction");f(g,x,A,"\u2018","`");f(g,x,A,"$","\\$");f(O,x,A,"$","\\$");f(O,x,A,"$","\\textdollar");f(g,x,A,"%","\\%");f(O,x,A,"%","\\%");f(g,x,A,"_","\\_");f(O,x,A,"_","\\_");f(O,x,A,"_","\\textunderscore");f(g,x,A,"\u2220","\\angle",!0);f(g,x,A,"\u221E","\\infty",!0);f(g,x,A,"\u2032","\\prime");f(g,x,A,"\u25B3","\\triangle");f(g,x,A,"\u0393","\\Gamma",!0);f(g,x,A,"\u0394","\\Delta",!0);f(g,x,A,"\u0398","\\Theta",!0);f(g,x,A,"\u039B","\\Lambda",!0);f(g,x,A,"\u039E","\\Xi",!0);f(g,x,A,"\u03A0","\\Pi",!0);f(g,x,A,"\u03A3","\\Sigma",!0);f(g,x,A,"\u03A5","\\Upsilon",!0);f(g,x,A,"\u03A6","\\Phi",!0);f(g,x,A,"\u03A8","\\Psi",!0);f(g,x,A,"\u03A9","\\Omega",!0);f(g,x,A,"A","\u0391");f(g,x,A,"B","\u0392");f(g,x,A,"E","\u0395");f(g,x,A,"Z","\u0396");f(g,x,A,"H","\u0397");f(g,x,A,"I","\u0399");f(g,x,A,"K","\u039A");f(g,x,A,"M","\u039C");f(g,x,A,"N","\u039D");f(g,x,A,"O","\u039F");f(g,x,A,"P","\u03A1");f(g,x,A,"T","\u03A4");f(g,x,A,"X","\u03A7");f(g,x,A,"\xAC","\\neg",!0);f(g,x,A,"\xAC","\\lnot");f(g,x,A,"\u22A4","\\top");f(g,x,A,"\u22A5","\\bot");f(g,x,A,"\u2205","\\emptyset");f(g,v,A,"\u2205","\\varnothing");f(g,x,ne,"\u03B1","\\alpha",!0);f(g,x,ne,"\u03B2","\\beta",!0);f(g,x,ne,"\u03B3","\\gamma",!0);f(g,x,ne,"\u03B4","\\delta",!0);f(g,x,ne,"\u03F5","\\epsilon",!0);f(g,x,ne,"\u03B6","\\zeta",!0);f(g,x,ne,"\u03B7","\\eta",!0);f(g,x,ne,"\u03B8","\\theta",!0);f(g,x,ne,"\u03B9","\\iota",!0);f(g,x,ne,"\u03BA","\\kappa",!0);f(g,x,ne,"\u03BB","\\lambda",!0);f(g,x,ne,"\u03BC","\\mu",!0);f(g,x,ne,"\u03BD","\\nu",!0);f(g,x,ne,"\u03BE","\\xi",!0);f(g,x,ne,"\u03BF","\\omicron",!0);f(g,x,ne,"\u03C0","\\pi",!0);f(g,x,ne,"\u03C1","\\rho",!0);f(g,x,ne,"\u03C3","\\sigma",!0);f(g,x,ne,"\u03C4","\\tau",!0);f(g,x,ne,"\u03C5","\\upsilon",!0);f(g,x,ne,"\u03D5","\\phi",!0);f(g,x,ne,"\u03C7","\\chi",!0);f(g,x,ne,"\u03C8","\\psi",!0);f(g,x,ne,"\u03C9","\\omega",!0);f(g,x,ne,"\u03B5","\\varepsilon",!0);f(g,x,ne,"\u03D1","\\vartheta",!0);f(g,x,ne,"\u03D6","\\varpi",!0);f(g,x,ne,"\u03F1","\\varrho",!0);f(g,x,ne,"\u03C2","\\varsigma",!0);f(g,x,ne,"\u03C6","\\varphi",!0);f(g,x,Z,"\u2217","*",!0);f(g,x,Z,"+","+");f(g,x,Z,"\u2212","-",!0);f(g,x,Z,"\u22C5","\\cdot",!0);f(g,x,Z,"\u2218","\\circ",!0);f(g,x,Z,"\xF7","\\div",!0);f(g,x,Z,"\xB1","\\pm",!0);f(g,x,Z,"\xD7","\\times",!0);f(g,x,Z,"\u2229","\\cap",!0);f(g,x,Z,"\u222A","\\cup",!0);f(g,x,Z,"\u2216","\\setminus",!0);f(g,x,Z,"\u2227","\\land");f(g,x,Z,"\u2228","\\lor");f(g,x,Z,"\u2227","\\wedge",!0);f(g,x,Z,"\u2228","\\vee",!0);f(g,x,A,"\u221A","\\surd");f(g,x,an,"\u27E8","\\langle",!0);f(g,x,an,"\u2223","\\lvert");f(g,x,an,"\u2225","\\lVert");f(g,x,qt,"?","?");f(g,x,qt,"!","!");f(g,x,qt,"\u27E9","\\rangle",!0);f(g,x,qt,"\u2223","\\rvert");f(g,x,qt,"\u2225","\\rVert");f(g,x,C,"=","=");f(g,x,C,":",":");f(g,x,C,"\u2248","\\approx",!0);f(g,x,C,"\u2245","\\cong",!0);f(g,x,C,"\u2265","\\ge");f(g,x,C,"\u2265","\\geq",!0);f(g,x,C,"\u2190","\\gets");f(g,x,C,">","\\gt",!0);f(g,x,C,"\u2208","\\in",!0);f(g,x,C,"\uE020","\\@not");f(g,x,C,"\u2282","\\subset",!0);f(g,x,C,"\u2283","\\supset",!0);f(g,x,C,"\u2286","\\subseteq",!0);f(g,x,C,"\u2287","\\supseteq",!0);f(g,v,C,"\u2288","\\nsubseteq",!0);f(g,v,C,"\u2289","\\nsupseteq",!0);f(g,x,C,"\u22A8","\\models");f(g,x,C,"\u2190","\\leftarrow",!0);f(g,x,C,"\u2264","\\le");f(g,x,C,"\u2264","\\leq",!0);f(g,x,C,"<","\\lt",!0);f(g,x,C,"\u2192","\\rightarrow",!0);f(g,x,C,"\u2192","\\to");f(g,v,C,"\u2271","\\ngeq",!0);f(g,v,C,"\u2270","\\nleq",!0);f(g,x,ja,"\xA0","\\ ");f(g,x,ja,"\xA0","\\space");f(g,x,ja,"\xA0","\\nobreakspace");f(O,x,ja,"\xA0","\\ ");f(O,x,ja,"\xA0"," ");f(O,x,ja,"\xA0","\\space");f(O,x,ja,"\xA0","\\nobreakspace");f(g,x,ja,null,"\\nobreak");f(g,x,ja,null,"\\allowbreak");f(g,x,Ho,",",",");f(g,x,Ho,";",";");f(g,v,Z,"\u22BC","\\barwedge",!0);f(g,v,Z,"\u22BB","\\veebar",!0);f(g,x,Z,"\u2299","\\odot",!0);f(g,x,Z,"\u2295","\\oplus",!0);f(g,x,Z,"\u2297","\\otimes",!0);f(g,x,A,"\u2202","\\partial",!0);f(g,x,Z,"\u2298","\\oslash",!0);f(g,v,Z,"\u229A","\\circledcirc",!0);f(g,v,Z,"\u22A1","\\boxdot",!0);f(g,x,Z,"\u25B3","\\bigtriangleup");f(g,x,Z,"\u25BD","\\bigtriangledown");f(g,x,Z,"\u2020","\\dagger");f(g,x,Z,"\u22C4","\\diamond");f(g,x,Z,"\u22C6","\\star");f(g,x,Z,"\u25C3","\\triangleleft");f(g,x,Z,"\u25B9","\\triangleright");f(g,x,an,"{","\\{");f(O,x,A,"{","\\{");f(O,x,A,"{","\\textbraceleft");f(g,x,qt,"}","\\}");f(O,x,A,"}","\\}");f(O,x,A,"}","\\textbraceright");f(g,x,an,"{","\\lbrace");f(g,x,qt,"}","\\rbrace");f(g,x,an,"[","\\lbrack",!0);f(O,x,A,"[","\\lbrack",!0);f(g,x,qt,"]","\\rbrack",!0);f(O,x,A,"]","\\rbrack",!0);f(g,x,an,"(","\\lparen",!0);f(g,x,qt,")","\\rparen",!0);f(O,x,A,"<","\\textless",!0);f(O,x,A,">","\\textgreater",!0);f(g,x,an,"\u230A","\\lfloor",!0);f(g,x,qt,"\u230B","\\rfloor",!0);f(g,x,an,"\u2308","\\lceil",!0);f(g,x,qt,"\u2309","\\rceil",!0);f(g,x,A,"\\","\\backslash");f(g,x,A,"\u2223","|");f(g,x,A,"\u2223","\\vert");f(O,x,A,"|","\\textbar",!0);f(g,x,A,"\u2225","\\|");f(g,x,A,"\u2225","\\Vert");f(O,x,A,"\u2225","\\textbardbl");f(O,x,A,"~","\\textasciitilde");f(O,x,A,"\\","\\textbackslash");f(O,x,A,"^","\\textasciicircum");f(g,x,C,"\u2191","\\uparrow",!0);f(g,x,C,"\u21D1","\\Uparrow",!0);f(g,x,C,"\u2193","\\downarrow",!0);f(g,x,C,"\u21D3","\\Downarrow",!0);f(g,x,C,"\u2195","\\updownarrow",!0);f(g,x,C,"\u21D5","\\Updownarrow",!0);f(g,x,Ye,"\u2210","\\coprod");f(g,x,Ye,"\u22C1","\\bigvee");f(g,x,Ye,"\u22C0","\\bigwedge");f(g,x,Ye,"\u2A04","\\biguplus");f(g,x,Ye,"\u22C2","\\bigcap");f(g,x,Ye,"\u22C3","\\bigcup");f(g,x,Ye,"\u222B","\\int");f(g,x,Ye,"\u222B","\\intop");f(g,x,Ye,"\u222C","\\iint");f(g,x,Ye,"\u222D","\\iiint");f(g,x,Ye,"\u220F","\\prod");f(g,x,Ye,"\u2211","\\sum");f(g,x,Ye,"\u2A02","\\bigotimes");f(g,x,Ye,"\u2A01","\\bigoplus");f(g,x,Ye,"\u2A00","\\bigodot");f(g,x,Ye,"\u222E","\\oint");f(g,x,Ye,"\u222F","\\oiint");f(g,x,Ye,"\u2230","\\oiiint");f(g,x,Ye,"\u2A06","\\bigsqcup");f(g,x,Ye,"\u222B","\\smallint");f(O,x,ys,"\u2026","\\textellipsis");f(g,x,ys,"\u2026","\\mathellipsis");f(O,x,ys,"\u2026","\\ldots",!0);f(g,x,ys,"\u2026","\\ldots",!0);f(g,x,ys,"\u22EF","\\@cdots",!0);f(g,x,ys,"\u22F1","\\ddots",!0);f(g,x,A,"\u22EE","\\varvdots");f(O,x,A,"\u22EE","\\varvdots");f(g,x,Le,"\u02CA","\\acute");f(g,x,Le,"\u02CB","\\grave");f(g,x,Le,"\xA8","\\ddot");f(g,x,Le,"~","\\tilde");f(g,x,Le,"\u02C9","\\bar");f(g,x,Le,"\u02D8","\\breve");f(g,x,Le,"\u02C7","\\check");f(g,x,Le,"^","\\hat");f(g,x,Le,"\u20D7","\\vec");f(g,x,Le,"\u02D9","\\dot");f(g,x,Le,"\u02DA","\\mathring");f(g,x,ne,"\uE131","\\@imath");f(g,x,ne,"\uE237","\\@jmath");f(g,x,A,"\u0131","\u0131");f(g,x,A,"\u0237","\u0237");f(O,x,A,"\u0131","\\i",!0);f(O,x,A,"\u0237","\\j",!0);f(O,x,A,"\xDF","\\ss",!0);f(O,x,A,"\xE6","\\ae",!0);f(O,x,A,"\u0153","\\oe",!0);f(O,x,A,"\xF8","\\o",!0);f(O,x,A,"\xC6","\\AE",!0);f(O,x,A,"\u0152","\\OE",!0);f(O,x,A,"\xD8","\\O",!0);f(O,x,Le,"\u02CA","\\'");f(O,x,Le,"\u02CB","\\`");f(O,x,Le,"\u02C6","\\^");f(O,x,Le,"\u02DC","\\~");f(O,x,Le,"\u02C9","\\=");f(O,x,Le,"\u02D8","\\u");f(O,x,Le,"\u02D9","\\.");f(O,x,Le,"\xB8","\\c");f(O,x,Le,"\u02DA","\\r");f(O,x,Le,"\u02C7","\\v");f(O,x,Le,"\xA8",'\\"');f(O,x,Le,"\u02DD","\\H");f(O,x,Le,"\u25EF","\\textcircled");var Ew={"--":!0,"---":!0,"``":!0,"''":!0};f(O,x,A,"\u2013","--",!0);f(O,x,A,"\u2013","\\textendash");f(O,x,A,"\u2014","---",!0);f(O,x,A,"\u2014","\\textemdash");f(O,x,A,"\u2018","`",!0);f(O,x,A,"\u2018","\\textquoteleft");f(O,x,A,"\u2019","'",!0);f(O,x,A,"\u2019","\\textquoteright");f(O,x,A,"\u201C","``",!0);f(O,x,A,"\u201C","\\textquotedblleft");f(O,x,A,"\u201D","''",!0);f(O,x,A,"\u201D","\\textquotedblright");f(g,x,A,"\xB0","\\degree",!0);f(O,x,A,"\xB0","\\degree");f(O,x,A,"\xB0","\\textdegree",!0);f(g,x,A,"\xA3","\\pounds");f(g,x,A,"\xA3","\\mathsterling",!0);f(O,x,A,"\xA3","\\pounds");f(O,x,A,"\xA3","\\textsterling",!0);f(g,v,A,"\u2720","\\maltese");f(O,v,A,"\u2720","\\maltese");var Zk='0123456789/@."';for(lu=0;lu{var n=t.charCodeAt(0),a=t.charCodeAt(1),r=(n-55296)*1024+(a-56320)+65536,i=e==="math"?0:1;if(119808<=r&&r<120484){var s=Math.floor((r-119808)/26);return[du[s][2],du[s][i]]}else if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[Yk[o][2],Yk[o][i]]}else{if(r===120485||r===120486)return[du[0][2],du[0][i]];if(1204860)return Lt(i,c,r,n,s.concat(u));if(l){var p,d;if(l==="boldsymbol"){var m=Tj(i,r,n,s,a);p=m.fontName,d=[m.fontClass]}else o?(p=Oh[l].fontName,d=[l]):(p=mu(l,n.fontWeight,n.fontShape),d=[l,n.fontWeight,n.fontShape]);if(Au(i,p,r).metrics)return Lt(i,p,r,n,s.concat(d));if(Ew.hasOwnProperty(i)&&p.slice(0,10)==="Typewriter"){for(var h=[],b=0;b{if(or(t.classes)!==or(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize||t.italic!==0&&t.hasClass("mathnormal"))return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var a of Object.keys(t.style))if(t.style[a]!==e.style[a])return!1;for(var r of Object.keys(e.style))if(t.style[r]!==e.style[r])return!1;return!0},Aw=t=>{for(var e=0;en&&(n=s.height),s.depth>a&&(a=s.depth),s.maxFontSize>r&&(r=s.maxFontSize)}e.height=n,e.depth=a,e.maxFontSize=r},D=function(e,n,a,r){var i=new lr(e,n,a,r);return Jh(i),i},cr=(t,e,n,a)=>new lr(t,e,n,a),gs=function(e,n,a){var r=D([e],[],n);return r.height=Math.max(a||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),r.style.borderBottomWidth=H(r.height),r.maxFontSize=1,r},Nj=function(e,n,a,r){var i=new fs(e,n,a,r);return Jh(i),i},Sa=function(e){var n=new sr(e);return Jh(n),n},bs=function(e,n){return e instanceof sr?D([],[e],n):e},Ij=function(e){if(e.positionType==="individualShift"){for(var n=e.children,a=[n[0]],r=-n[0].shift-n[0].elem.depth,i=r,s=1;s{var n=D(["mspace"],[],e),a=qe(t,e);return n.style.marginRight=H(a),n},mu=function(e,n,a){var r="";switch(e){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:r=e}var i;return n==="textbf"&&a==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",r+"-"+i},Oh={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"}},Mw={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Nw=function(e,n){var[a,r,i]=Mw[e],s=new Xn(a),o=new Bn([s],{width:H(r),height:H(i),style:"width:"+H(r),viewBox:"0 0 "+1e3*r+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=cr(["overlay"],[o],n);return l.height=i,l.style.height=H(i),l.style.width=H(r),l},Fe={number:3,unit:"mu"},ii={number:4,unit:"mu"},va={number:5,unit:"mu"},Rj={mord:{mop:Fe,mbin:ii,mrel:va,minner:Fe},mop:{mord:Fe,mop:Fe,mrel:va,minner:Fe},mbin:{mord:ii,mop:ii,mopen:ii,minner:ii},mrel:{mord:va,mop:va,mopen:va,minner:va},mopen:{},mclose:{mop:Fe,mbin:ii,mrel:va,minner:Fe},mpunct:{mord:Fe,mop:Fe,mrel:va,mopen:Fe,mclose:Fe,mpunct:Fe,minner:Fe},minner:{mord:Fe,mop:Fe,mbin:ii,mrel:va,mopen:Fe,mpunct:Fe,minner:Fe}},zj={mord:{mop:Fe},mop:{mord:Fe,mop:Fe},mbin:{},mrel:{},mopen:{},mclose:{mop:Fe},mpunct:{},minner:{mop:Fe}},Iw={},_u={},vu={};function X(t){for(var{type:e,names:n,props:a,handler:r,htmlBuilder:i,mathmlBuilder:s}=t,o={type:e,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:a.allowedInMath===void 0?!0:a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:r},l=0;l{var y=b.classes[0],k=h.classes[0];y==="mbin"&&Bj.has(k)?b.classes[0]="mord":k==="mbin"&&Oj.has(y)&&(h.classes[0]="mord")},{node:p},d,m),Bh(i,(h,b)=>{var y,k,_=Dh(b),$=Dh(h),M=_&&$?h.hasClass("mtight")?(y=zj[_])==null?void 0:y[$]:(k=Rj[_])==null?void 0:k[$]:null;if(M)return Tw(M,c)},{node:p},d,m),i},Bh=function(e,n,a,r,i){r&&e.push(r);for(var s=0;sd=>{e.splice(p+1,0,d),s++})(s)}r&&e.pop()},Rw=function(e){return e instanceof sr||e instanceof fs||e instanceof lr&&e.hasClass("enclosing")?e:null},Lh=function(e,n){var a=Rw(e);if(a){var r=a.children;if(r.length){if(n==="right")return Lh(r[r.length-1],"right");if(n==="left")return Lh(r[0],"left")}}return e},Dh=function(e,n){if(!e)return null;n&&(e=Lh(e,n));var a=e.classes[0];return Dj[a]||null},Go=function(e,n){var a=["nulldelimiter"].concat(e.baseSizingClasses());return D(n.concat(a))},$e=function(e,n,a){if(!e)return D();if(_u[e.type]){var r=_u[e.type](e,n);if(a&&n.size!==a.size){r=D(n.sizingClasses(a),[r],n);var i=n.sizeMultiplier/a.sizeMultiplier;r.height*=i,r.depth*=i}return r}else throw new G("Got group of unknown type: '"+e.type+"'")};function hu(t,e){var n=D(["base"],t,e),a=D(["strut"]);return a.style.height=H(n.height+n.depth),n.depth&&(a.style.verticalAlign=H(-n.depth)),n.children.unshift(a),n}function Fh(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var a=at(t,e,"root"),r;a.length===2&&a[1].hasClass("tag")&&(r=a.pop());for(var i=[],s=[],o=0;o0&&(i.push(hu(s,e)),s=[]),i.push(a[o]));s.length>0&&i.push(hu(s,e));var c;n?(c=hu(at(n,e,!0),e),c.classes=["tag"],i.push(c)):r&&i.push(r);var u=D(["katex-html"],i);if(u.setAttribute("aria-hidden","true"),c){var p=c.children[0];p.style.height=H(u.height+u.depth),u.depth&&(p.style.verticalAlign=H(-u.depth))}return u}function zw(t){return new sr(t)}var q=class{constructor(e,n,a){this.type=e,this.attributes={},this.children=n||[],this.classes=a||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=or(this.classes));for(var a=0;a0&&(e+=' class ="'+At(or(this.classes))+'"'),e+=">";for(var a=0;a",e}toText(){return this.children.map(e=>e.toText()).join("")}},Pe=class{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return At(this.toText())}toText(){return this.text}},Cu=class{constructor(e){this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",H(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},Fj=new Set(["\\imath","\\jmath"]),qj=new Set(["mrow","mtable"]),wn=function(e,n,a){return Be[n][e]&&Be[n][e].replace&&e.charCodeAt(0)!==55349&&!(Ew.hasOwnProperty(e)&&a&&(a.fontFamily&&a.fontFamily.slice(4,6)==="tt"||a.font&&a.font.slice(4,6)==="tt"))&&(e=Be[n][e].replace),new Pe(e)},Yh=function(e){return e.length===1?e[0]:new q("mrow",e)},Qh=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var a=n.font;if(!a||a==="mathnormal")return null;var r=e.mode;if(a==="mathit")return"italic";if(a==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(a==="mathbf")return"bold";if(a==="mathbb")return"double-struck";if(a==="mathsfit")return"sans-serif-italic";if(a==="mathfrak")return"fraktur";if(a==="mathscr"||a==="mathcal")return"script";if(a==="mathsf")return"sans-serif";if(a==="mathtt")return"monospace";var i=e.text;if(Fj.has(i))return null;if(Be[r][i]){var s=Be[r][i].replace;s&&(i=s)}var o=Oh[a].fontName;return Xh(i,o,r)?Oh[a].variant:null};function kh(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Pe&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Pe&&n.text===","}else return!1}var rn=function(e,n,a){if(e.length===1){var r=Me(e[0],n);return a&&r instanceof q&&r.type==="mo"&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}for(var i=[],s,o=0;o=1&&(s.type==="mn"||kh(s))){var c=l.children[0];c instanceof q&&c.type==="mn"&&(c.children=[...s.children,...c.children],i.pop())}else if(s.type==="mi"&&s.children.length===1){var u=s.children[0];if(u instanceof Pe&&u.text==="\u0338"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var p=l.children[0];p instanceof Pe&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(l),s=l}return i},ur=function(e,n,a){return Yh(rn(e,n,a))},Me=function(e,n){if(!e)return new q("mrow");if(vu[e.type]){var a=vu[e.type](e,n);return a}else throw new G("Got group of unknown type: '"+e.type+"'")};function Qk(t,e,n,a,r){var i=rn(t,n),s;i.length===1&&i[0]instanceof q&&qj.has(i[0].type)?s=i[0]:s=new q("mrow",i);var o=new q("annotation",[new Pe(e)]);o.setAttribute("encoding","application/x-tex");var l=new q("semantics",[s,o]),c=new q("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&c.setAttribute("display","block");var u=r?"katex":"katex-mathml";return D([u],[c])}var Pj=[[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]],ew=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],tw=function(e,n){return n.size<2?e:Pj[e-1][n.size-1]},ju=class t{constructor(e){this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=ew[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={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(n,e),new t(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:tw(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:ew[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=tw(t.BASESIZE,e);return this.size===n&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=jj(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};ju.BASESIZE=6;var Ow=function(e){return new ju({style:e.displayMode?pe.DISPLAY:pe.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Bw=function(e,n){if(n.displayMode){var a=["katex-display"];n.leqno&&a.push("leqno"),n.fleqn&&a.push("fleqn"),e=D(a,[e])}return e},Gj=function(e,n,a){var r=Ow(a),i;if(a.output==="mathml")return Qk(e,n,r,a.displayMode,!0);if(a.output==="html"){var s=Fh(e,r);i=D(["katex"],[s])}else{var o=Qk(e,n,r,a.displayMode,!1),l=Fh(e,r);i=D(["katex"],[o,l])}return Bw(i,a)},Hj=function(e,n,a){var r=Ow(a),i=Fh(e,r),s=D(["katex"],[i]);return Bw(s,a)},Vj={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":"="},Mu=function(e){var n=new q("mo",[new Pe(Vj[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},Wj={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]},Uj=new Set(["widehat","widecheck","widetilde","utilde"]),Nu=function(e,n){function a(){var o=4e5,l=e.label.slice(1);if(Uj.has(l)){var c=e,u=c.base.type==="ordgroup"?c.base.body.length:1,p,d,m;if(u>5)l==="widehat"||l==="widecheck"?(p=420,o=2364,m=.42,d=l+"4"):(p=312,o=2340,m=.34,d="tilde4");else{var h=[1,1,2,2,3,3][u];l==="widehat"||l==="widecheck"?(o=[0,1062,2364,2364,2364][h],p=[0,239,300,360,420][h],m=[0,.24,.3,.3,.36,.42][h],d=l+h):(o=[0,600,1033,2339,2340][h],p=[0,260,286,306,312][h],m=[0,.26,.286,.3,.306,.34][h],d="tilde"+h)}var b=new Xn(d),y=new Bn([b],{width:"100%",height:H(m),viewBox:"0 0 "+o+" "+p,preserveAspectRatio:"none"});return{span:cr([],[y],n),minWidth:0,height:m}}else{var k=[],_=Wj[l],[$,M,N]=_,E=N/1e3,I=$.length,F,L;if(I===1){var T=_[3];F=["hide-tail"],L=[T]}else if(I===2)F=["halfarrow-left","halfarrow-right"],L=["xMinYMin","xMaxYMin"];else if(I===3)F=["brace-left","brace-center","brace-right"],L=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+I+" children.");for(var ce=0;ce0&&(r.style.minWidth=H(i)),r},Kj=function(e,n,a,r,i){var s,o=e.height+e.depth+a+r;if(/fbox|color|angl/.test(n)){if(s=D(["stretchy",n],[],i),n==="fbox"){var l=i.color&&i.getColor();l&&(s.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(n)&&c.push(new Po({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&c.push(new Po({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var u=new Bn(c,{width:"100%",height:H(o)});s=cr([],[u],i)}return s.height=o,s.style.height=H(o),s};function he(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function Iu(t){var e=Ru(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Ru(t){return t&&(t.type==="atom"||Ej.hasOwnProperty(t.type))?t:null}var Lw=t=>{if(t instanceof Ft)return t;if($j(t)&&t.children.length===1)return Lw(t.children[0])},ef=(t,e)=>{var n,a,r;t&&t.type==="supsub"?(a=he(t.base,"accent"),n=a.base,t.base=n,r=vj($e(t,e)),t.base=a):(a=he(t,"accent"),n=a.base);var i=$e(n,e.havingCrampedStyle()),s=a.isShifty&&Ca(n),o=0;if(s){var l,c;o=(l=(c=Lw(i))==null?void 0:c.skew)!=null?l:0}var u=a.label==="\\c",p=u?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),d;if(a.isStretchy)d=Nu(a,e),d=ve({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:d,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+H(2*o)+")",marginLeft:H(2*o)}:void 0}]});else{var m,h;a.label==="\\vec"?(m=Nw("vec",e),h=Mw.vec[1]):(m=Tu({type:"textord",mode:a.mode,text:a.label},e,"textord"),m=_j(m),m.italic=0,h=m.width,u&&(p+=m.depth)),d=D(["accent-body"],[m]);var b=a.label==="\\textcircled";b&&(d.classes.push("accent-full"),p=i.height);var y=o;b||(y-=h/2),d.style.left=H(y),a.label==="\\textcircled"&&(d.style.top=".2em"),d=ve({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-p},{type:"elem",elem:d}]})}var k=D(["mord","accent"],[d],e);return r?(r.children[0]=k,r.height=Math.max(k.height,r.height),r.classes[0]="mord",r):k},Dw=(t,e)=>{var n=t.isStretchy?Mu(t.label):new q("mo",[wn(t.label,t.mode)]),a=new q("mover",[Me(t.base,e),n]);return a.setAttribute("accent","true"),a},Xj=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));X({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:(t,e)=>{var n=$u(e[0]),a=!Xj.test(t.funcName),r=!a||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:r,base:n}},htmlBuilder:ef,mathmlBuilder:Dw});X({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],a=t.parser.mode;return a==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:ef,mathmlBuilder:Dw});X({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0];return{type:"accentUnder",mode:n.mode,label:a,base:r}},htmlBuilder:(t,e)=>{var n=$e(t.base,e),a=Nu(t,e),r=t.label==="\\utilde"?.12:0,i=ve({positionType:"top",positionData:n.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:r},{type:"elem",elem:n}]});return D(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Mu(t.label),a=new q("munder",[Me(t.base,e),n]);return a.setAttribute("accentunder","true"),a}});var fu=t=>{var e=new q("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};X({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(t,e,n){var{parser:a,funcName:r}=t;return{type:"xArrow",mode:a.mode,label:r,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,a=e.havingStyle(n.sup()),r=bs($e(t.body,a,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";r.classes.push(i+"-arrow-pad");var s;t.below&&(a=e.havingStyle(n.sub()),s=bs($e(t.below,a,e),e),s.classes.push(i+"-arrow-pad"));var o=Nu(t,e),l=-e.fontMetrics().axisHeight+.5*o.height,c=-e.fontMetrics().axisHeight-.5*o.height-.111;(r.depth>.25||t.label==="\\xleftequilibrium")&&(c-=r.depth);var u;if(s){var p=-e.fontMetrics().axisHeight+s.height+.5*o.height+.111;u=ve({positionType:"individualShift",children:[{type:"elem",elem:r,shift:c},{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:p}]})}else u=ve({positionType:"individualShift",children:[{type:"elem",elem:r,shift:c},{type:"elem",elem:o,shift:l}]});return u.children[0].children[0].children[1].classes.push("svg-align"),D(["mrel","x-arrow"],[u],e)},mathmlBuilder(t,e){var n=Mu(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var a;if(t.body){var r=fu(Me(t.body,e));if(t.below){var i=fu(Me(t.below,e));a=new q("munderover",[n,i,r])}else a=new q("mover",[n,r])}else if(t.below){var s=fu(Me(t.below,e));a=new q("munder",[n,s])}else a=fu(),a=new q("mover",[n,a]);return a}});function Fw(t,e){var n=at(t.body,e,!0);return D([t.mclass],n,e)}function qw(t,e){var n,a=rn(t.body,e);return t.mclass==="minner"?n=new q("mpadded",a):t.mclass==="mord"?t.isCharacterBox?(n=a[0],n.type="mi"):n=new q("mi",a):(t.isCharacterBox?(n=a[0],n.type="mo"):n=new q("mo",a),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}X({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+a.slice(5),body:Je(r),isCharacterBox:Ca(r)}},htmlBuilder:Fw,mathmlBuilder:qw});var zu=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};X({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:zu(e[0]),body:Je(e[1]),isCharacterBox:Ca(e[1])}}});X({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:a}=t,r=e[1],i=e[0],s;a!=="\\stackrel"?s=zu(r):s="mrel";var o={type:"op",mode:r.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:a!=="\\stackrel",body:Je(r)},l={type:"supsub",mode:i.mode,base:o,sup:a==="\\underset"?null:i,sub:a==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:s,body:[l],isCharacterBox:Ca(l)}},htmlBuilder:Fw,mathmlBuilder:qw});X({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:zu(e[0]),body:Je(e[0])}},htmlBuilder(t,e){var n=at(t.body,e,!0),a=D([t.mclass],n,e);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(t,e){var n=rn(t.body,e),a=new q("mstyle",n);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var Zj={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},nw=()=>({type:"styling",body:[],mode:"math",style:"display"}),aw=t=>t.type==="textord"&&t.text==="@",Jj=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function Yj(t,e,n){var a=Zj[t];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(a,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var r=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:a,mode:"math",family:"rel"},s=n.callFunction("\\Big",[i],[]),o=n.callFunction("\\\\cdright",[e[1]],[]),l={type:"ordgroup",mode:"math",body:[r,s,o]};return n.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function Qj(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new G("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var a=[],r=[a],i=0;iAV".includes(c))for(var p=0;p<2;p++){for(var d=!0,m=l+1;mAV=|." after @',s[l]);var h=Yj(c,u,t),b={type:"styling",body:[h],mode:"math",style:"display"};a.push(b),o=nw()}i%2===0?a.push(o):a.shift(),a=[],r.push(a)}t.gullet.endGroup(),t.gullet.endGroup();var y=new Array(r[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:r,arraystretch:1,addJot:!0,rowGaps:[null],cols:y,colSeparationType:"CD",hLinesBeforeRow:new Array(r.length+1).fill([])}}X({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:a}=t;return{type:"cdlabel",mode:n.mode,side:a.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),a=bs($e(t.label,n,e),e);return a.classes.push("cd-label-"+t.side),a.style.bottom=H(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(t,e){var n=new q("mrow",[Me(t.label,e)]);return n=new q("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new q("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});X({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=bs($e(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new q("mrow",[Me(t.fragment,e)])}});X({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,a=he(e[0],"ordgroup"),r=a.body,i="",s=0;s=1114111)throw new G("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:n.mode,text:c}}});var Pw=(t,e)=>{var n=at(t.body,e.withColor(t.color),!1);return Sa(n)},Gw=(t,e)=>{var n=rn(t.body,e.withColor(t.color)),a=new q("mstyle",n);return a.setAttribute("mathcolor",t.color),a};X({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,a=he(e[0],"color-token").color,r=e[1];return{type:"color",mode:n.mode,color:a,body:Je(r)}},htmlBuilder:Pw,mathmlBuilder:Gw});X({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:a}=t,r=he(e[0],"color-token").color;n.gullet.macros.set("\\current@color",r);var i=n.parseExpression(!0,a);return{type:"color",mode:n.mode,color:r,body:i}},htmlBuilder:Pw,mathmlBuilder:Gw});X({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:a}=t,r=a.gullet.future().text==="["?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:r&&he(r,"size").value}},htmlBuilder(t,e){var n=D(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=H(qe(t.size,e)))),n},mathmlBuilder(t,e){var n=new q("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",H(qe(t.size,e)))),n}});var qh={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Hw=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new G("Expected a control sequence",t);return e},eS=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},Vw=(t,e,n,a)=>{var r=t.gullet.macros.get(n.text);r==null&&(n.noexpand=!0,r={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,r,a)};X({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var a=e.fetch();if(qh[a.text])return(n==="\\global"||n==="\\\\globallong")&&(a.text=qh[a.text]),he(e.parseFunction(),"internal");throw new G("Invalid token after macro prefix",a)}});X({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,a=e.gullet.popToken(),r=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new G("Expected a control sequence",a);for(var i=0,s,o=[[]];e.gullet.future().text!=="{";)if(a=e.gullet.popToken(),a.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),o[i].push("{");break}if(a=e.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new G('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==i+1)throw new G('Argument number "'+a.text+'" out of order');i++,o.push([])}else{if(a.text==="EOF")throw new G("Expected a macro definition");o[i].push(a.text)}var{tokens:l}=e.gullet.consumeArg();return s&&l.unshift(s),(n==="\\edef"||n==="\\xdef")&&(l=e.gullet.expandTokens(l),l.reverse()),e.gullet.macros.set(r,{tokens:l,numArgs:i,delimiters:o},n===qh[n]),{type:"internal",mode:e.mode}}});X({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,a=Hw(e.gullet.popToken());e.gullet.consumeSpaces();var r=eS(e);return Vw(e,a,r,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});X({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,a=Hw(e.gullet.popToken()),r=e.gullet.popToken(),i=e.gullet.popToken();return Vw(e,a,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(r),{type:"internal",mode:e.mode}}});var Lo=function(e,n,a){var r=Be.math[e]&&Be.math[e].replace,i=Xh(r||e,n,a);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},tf=function(e,n,a,r){var i=a.havingBaseStyle(n),s=D(r.concat(i.sizingClasses(a)),[e],a),o=i.sizeMultiplier/a.sizeMultiplier;return s.height*=o,s.depth*=o,s.maxFontSize=i.sizeMultiplier,s},Ww=function(e,n,a){var r=n.havingBaseStyle(a),i=(1-n.sizeMultiplier/r.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=H(i),e.height-=i,e.depth+=i},tS=function(e,n,a,r,i,s){var o=Lt(e,"Main-Regular",i,r),l=tf(o,n,r,s);return a&&Ww(l,r,n),l},nS=function(e,n,a,r){return Lt(e,"Size"+n+"-Regular",a,r)},Uw=function(e,n,a,r,i,s){var o=nS(e,n,i,r),l=tf(D(["delimsizing","size"+n],[o],r),pe.TEXT,r,s);return a&&Ww(l,r,pe.TEXT),l},wh=function(e,n,a){var r;n==="Size1-Regular"?r="delim-size1":r="delim-size4";var i=D(["delimsizinginner",r],[D([],[Lt(e,n,a)])]);return{type:"elem",elem:i}},_h=function(e,n,a){var r=Kn["Size4-Regular"][e.charCodeAt(0)]?Kn["Size4-Regular"][e.charCodeAt(0)][4]:Kn["Size1-Regular"][e.charCodeAt(0)][4],i=new Xn("inner",bj(e,Math.round(1e3*n))),s=new Bn([i],{width:H(r),height:H(n),style:"width:"+H(r),viewBox:"0 0 "+1e3*r+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),o=cr([],[s],a);return o.height=n,o.style.height=H(n),o.style.width=H(r),{type:"elem",elem:o}},Ph=.008,gu={type:"kern",size:-1*Ph},aS=new Set(["|","\\lvert","\\rvert","\\vert"]),rS=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),Kw=function(e,n,a,r,i,s){var o,l,c,u,p="",d=0;o=c=u=e,l=null;var m="Size1-Regular";e==="\\uparrow"?c=u="\u23D0":e==="\\Uparrow"?c=u="\u2016":e==="\\downarrow"?o=c="\u23D0":e==="\\Downarrow"?o=c="\u2016":e==="\\updownarrow"?(o="\\uparrow",c="\u23D0",u="\\downarrow"):e==="\\Updownarrow"?(o="\\Uparrow",c="\u2016",u="\\Downarrow"):aS.has(e)?(c="\u2223",p="vert",d=333):rS.has(e)?(c="\u2225",p="doublevert",d=556):e==="["||e==="\\lbrack"?(o="\u23A1",c="\u23A2",u="\u23A3",m="Size4-Regular",p="lbrack",d=667):e==="]"||e==="\\rbrack"?(o="\u23A4",c="\u23A5",u="\u23A6",m="Size4-Regular",p="rbrack",d=667):e==="\\lfloor"||e==="\u230A"?(c=o="\u23A2",u="\u23A3",m="Size4-Regular",p="lfloor",d=667):e==="\\lceil"||e==="\u2308"?(o="\u23A1",c=u="\u23A2",m="Size4-Regular",p="lceil",d=667):e==="\\rfloor"||e==="\u230B"?(c=o="\u23A5",u="\u23A6",m="Size4-Regular",p="rfloor",d=667):e==="\\rceil"||e==="\u2309"?(o="\u23A4",c=u="\u23A5",m="Size4-Regular",p="rceil",d=667):e==="("||e==="\\lparen"?(o="\u239B",c="\u239C",u="\u239D",m="Size4-Regular",p="lparen",d=875):e===")"||e==="\\rparen"?(o="\u239E",c="\u239F",u="\u23A0",m="Size4-Regular",p="rparen",d=875):e==="\\{"||e==="\\lbrace"?(o="\u23A7",l="\u23A8",u="\u23A9",c="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(o="\u23AB",l="\u23AC",u="\u23AD",c="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(o="\u23A7",u="\u23A9",c="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(o="\u23AB",u="\u23AD",c="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(o="\u23A7",u="\u23AD",c="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(o="\u23AB",u="\u23A9",c="\u23AA",m="Size4-Regular");var h=Lo(o,m,i),b=h.height+h.depth,y=Lo(c,m,i),k=y.height+y.depth,_=Lo(u,m,i),$=_.height+_.depth,M=0,N=1;if(l!==null){var E=Lo(l,m,i);M=E.height+E.depth,N=2}var I=b+$+M,F=Math.max(0,Math.ceil((n-I)/(N*k))),L=I+F*N*k,T=r.fontMetrics().axisHeight;a&&(T*=r.sizeMultiplier);var ce=L/2-T,Y=[];if(p.length>0){var K=L-b-$,J=Math.round(L*1e3),ee=yj(p,Math.round(K*1e3)),ke=new Xn(p,ee),Ie=H(d/1e3),it=H(J/1e3),Pt=new Bn([ke],{width:Ie,height:it,viewBox:"0 0 "+d+" "+J}),j=cr([],[Pt],r);j.height=J/1e3,j.style.width=Ie,j.style.height=it,Y.push({type:"elem",elem:j})}else{if(Y.push(wh(u,m,i)),Y.push(gu),l===null){var He=L-b-$+2*Ph;Y.push(_h(c,He,r))}else{var Nt=(L-b-$-M)/2+2*Ph;Y.push(_h(c,Nt,r)),Y.push(gu),Y.push(wh(l,m,i)),Y.push(gu),Y.push(_h(c,Nt,r))}Y.push(gu),Y.push(wh(o,m,i))}var S=r.havingBaseStyle(pe.TEXT),st=ve({positionType:"bottom",positionData:ce,children:Y});return tf(D(["delimsizing","mult"],[st],S),pe.TEXT,r,s)},vh=80,$h=.08,Ch=function(e,n,a,r,i){var s=gj(e,r,a),o=new Xn(e,s),l=new Bn([o],{width:"400em",height:H(n),viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return cr(["hide-tail"],[l],i)},iS=function(e,n){var a=n.havingBaseSizing(),r=Qw("\\surd",e*a.sizeMultiplier,Yw,a),i=a.sizeMultiplier,s=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),o,l=0,c=0,u=0,p;return r.type==="small"?(u=1e3+1e3*s+vh,e<1?i=1:e<1.4&&(i=.7),l=(1+s+$h)/i,c=(1+s)/i,o=Ch("sqrtMain",l,u,s,n),o.style.minWidth="0.853em",p=.833/i):r.type==="large"?(u=(1e3+vh)*Do[r.size],c=(Do[r.size]+s)/i,l=(Do[r.size]+s+$h)/i,o=Ch("sqrtSize"+r.size,l,u,s,n),o.style.minWidth="1.02em",p=1/i):(l=e+s+$h,c=e+s,u=Math.floor(1e3*e+s)+vh,o=Ch("sqrtTall",l,u,s,n),o.style.minWidth="0.742em",p=1.056),o.height=c,o.style.height=H(l),{span:o,advanceWidth:p,ruleWidth:(n.fontMetrics().sqrtRuleThickness+s)*i}},Xw=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"]),sS=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"]),Zw=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),Do=[0,1.2,1.8,2.4,3],Jw=function(e,n,a,r,i){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),Xw.has(e)||Zw.has(e))return Uw(e,n,!1,a,r,i);if(sS.has(e))return Kw(e,Do[n],!1,a,r,i);throw new G("Illegal delimiter: '"+e+"'")},oS=[{type:"small",style:pe.SCRIPTSCRIPT},{type:"small",style:pe.SCRIPT},{type:"small",style:pe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],lS=[{type:"small",style:pe.SCRIPTSCRIPT},{type:"small",style:pe.SCRIPT},{type:"small",style:pe.TEXT},{type:"stack"}],Yw=[{type:"small",style:pe.SCRIPTSCRIPT},{type:"small",style:pe.SCRIPT},{type:"small",style:pe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],cS=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";var n=e.type;throw new Error("Add support for delim type '"+n+"' here.")},Qw=function(e,n,a,r){for(var i=Math.min(2,3-r.style.size),s=i;sn)return o}return a[a.length-1]},Gh=function(e,n,a,r,i,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var o;Zw.has(e)?o=oS:Xw.has(e)?o=Yw:o=lS;var l=Qw(e,n,o,r);return l.type==="small"?tS(e,l.style,a,r,i,s):l.type==="large"?Uw(e,l.size,a,r,i,s):Kw(e,n,a,r,i,s)},jh=function(e,n,a,r,i,s){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,l=901,c=5/r.fontMetrics().ptPerEm,u=Math.max(n-o,a+o),p=Math.max(u/500*l,2*u-c);return Gh(e,p,!0,r,i,s)},rw={"\\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}},uS=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","."]);function Ou(t,e){var n=Ru(t);if(n&&uS.has(n.text))return n;throw n?new G("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new G("Invalid delimiter type '"+t.type+"'",t)}X({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:(t,e)=>{var n=Ou(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:rw[t.funcName].size,mclass:rw[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?D([t.mclass]):Jw(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(wn(t.delim,t.mode));var n=new q("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var a=H(Do[t.size]);return n.setAttribute("minsize",a),n.setAttribute("maxsize",a),n}});function iw(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}X({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new G("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Ou(e[0],t).text,color:n}}});X({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Ou(e[0],t),a=t.parser;++a.leftrightDepth;var r=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=he(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:r,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{iw(t);for(var n=at(t.body,e,!0,["mopen","mclose"]),a=0,r=0,i=!1,s=0;s{iw(t);var n=rn(t.body,e);if(t.left!=="."){var a=new q("mo",[wn(t.left,t.mode)]);a.setAttribute("fence","true"),n.unshift(a)}if(t.right!=="."){var r=new q("mo",[wn(t.right,t.mode)]);r.setAttribute("fence","true"),t.rightColor&&r.setAttribute("mathcolor",t.rightColor),n.push(r)}return Yh(n)}});X({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Ou(e[0],t);if(!t.parser.leftrightDepth)throw new G("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=Go(e,[]);else{n=Jw(t.delim,1,e,t.mode,[]);var a={delim:t.delim,options:e};n.isMiddle=a}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?wn("|","text"):wn(t.delim,t.mode),a=new q("mo",[n]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Bu=(t,e)=>{var n=bs($e(t.body,e),e),a=t.label.slice(1),r=e.sizeMultiplier,i,s=0,o=Ca(t.body);if(a==="sout")i=D(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/r,s=-.5*e.fontMetrics().xHeight;else if(a==="phase"){var l=qe({number:.6,unit:"pt"},e),c=qe({number:.35,unit:"ex"},e),u=e.havingBaseSizing();r=r/u.sizeMultiplier;var p=n.height+n.depth+l+c;n.style.paddingLeft=H(p/2+l);var d=Math.floor(1e3*p*r),m=hj(d),h=new Bn([new Xn("phase",m)],{width:"400em",height:H(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});i=cr(["hide-tail"],[h],e),i.style.height=H(p),s=n.depth+l+c}else{/cancel/.test(a)?o||n.classes.push("cancel-pad"):a==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var b=0,y=0,k=0;/box/.test(a)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),b=e.fontMetrics().fboxsep+(a==="colorbox"?0:k),y=b):a==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),b=4*k,y=Math.max(0,.25-n.depth)):(b=o?.2:0,y=b),i=Kj(n,a,b,y,e),/fbox|boxed|fcolorbox/.test(a)?(i.style.borderStyle="solid",i.style.borderWidth=H(k)):a==="angl"&&k!==.049&&(i.style.borderTopWidth=H(k),i.style.borderRightWidth=H(k)),s=n.depth+y,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var _;if(t.backgroundColor)_=ve({positionType:"individualShift",children:[{type:"elem",elem:i,shift:s},{type:"elem",elem:n,shift:0}]});else{var $=/cancel|phase/.test(a)?["svg-align"]:[];_=ve({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:s,wrapperClasses:$}]})}return/cancel/.test(a)&&(_.height=n.height,_.depth=n.depth),/cancel/.test(a)&&!o?D(["mord","cancel-lap"],[_],e):D(["mord"],[_],e)},Lu=(t,e)=>{var n=0,a=new q(t.label.includes("colorbox")?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*n+"pt"),a.setAttribute("height","+"+2*n+"pt"),a.setAttribute("lspace",n+"pt"),a.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var r=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+H(r)+" solid "+t.borderColor)}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};X({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:a,funcName:r}=t,i=he(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:a.mode,label:r,backgroundColor:i,body:s}},htmlBuilder:Bu,mathmlBuilder:Lu});X({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:a,funcName:r}=t,i=he(e[0],"color-token").color,s=he(e[1],"color-token").color,o=e[2];return{type:"enclose",mode:a.mode,label:r,backgroundColor:s,borderColor:i,body:o}},htmlBuilder:Bu,mathmlBuilder:Lu});X({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});X({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];return{type:"enclose",mode:n.mode,label:a,body:r}},htmlBuilder:Bu,mathmlBuilder:Lu});X({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n,funcName:a}=t;n.mode==="math"&&n.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var r=e[0];return{type:"enclose",mode:n.mode,label:a,body:r}},htmlBuilder:Bu,mathmlBuilder:Lu});X({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var e_={};function Zn(t){for(var{type:e,names:n,props:a,handler:r,htmlBuilder:i,mathmlBuilder:s}=t,o={type:e,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:r},l=0;l{var e=t.parser.settings;if(!e.displayMode)throw new G("{"+t.envName+"} can be used only in display mode.")},pS=new Set(["gather","gather*"]);function nf(t){if(!t.includes("ed"))return!t.includes("*")}function pr(t,e,n){var{hskipBeforeAndAfter:a,addJot:r,cols:i,arraystretch:s,colSeparationType:o,autoTag:l,singleRow:c,emptySingleRow:u,maxNumCols:p,leqno:d}=e;if(t.gullet.beginGroup(),c||t.gullet.macros.set("\\cr","\\\\\\relax"),!s){var m=t.gullet.expandMacroAsText("\\arraystretch");if(m==null)s=1;else if(s=parseFloat(m),!s||s<0)throw new G("Invalid \\arraystretch: "+m)}t.gullet.beginGroup();var h=[],b=[h],y=[],k=[],_=l!=null?[]:void 0;function $(){l&&t.gullet.macros.set("\\@eqnsw","1",!0)}function M(){_&&(t.gullet.macros.get("\\df@tag")?(_.push(t.subparse([new nn("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):_.push(!!l&&t.gullet.macros.get("\\@eqnsw")==="1"))}for($(),k.push(sw(t));;){var N=t.parseExpression(!1,c?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup();var E={type:"ordgroup",mode:t.mode,body:N};n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),h.push(E);var I=t.fetch().text;if(I==="&"){if(p&&h.length===p){if(c||o)throw new G("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(I==="\\end"){M(),h.length===1&&E.type==="styling"&&E.body.length===1&&E.body[0].type==="ordgroup"&&E.body[0].body.length===0&&(b.length>1||!u)&&b.pop(),k.length0&&($+=.25),c.push({pos:$,isDashed:se[fe]})}for(M(s[0]),a=0;a0&&(ce+=_,Ise))for(a=0;a=o)){var dn=void 0;if(r>0||e.hskipBeforeAndAfter){var mn,qn;dn=(mn=(qn=S)==null?void 0:qn.pregap)!=null?mn:d,dn!==0&&(ee=D(["arraycolsep"],[]),ee.style.width=H(dn),J.push(ee))}var oa=[];for(a=0;a0){for(var od=gs("hline",n,u),ld=gs("hdashline",n,u),Us=[{type:"elem",elem:Cr,shift:0}];c.length>0;){var Xl=c.pop(),Zl=Xl.pos-Y;Xl.isDashed?Us.push({type:"elem",elem:ld,shift:Zl}):Us.push({type:"elem",elem:od,shift:Zl})}Cr=ve({positionType:"individualShift",children:Us})}if(Ie.length===0)return D(["mord"],[Cr],n);var R=ve({positionType:"individualShift",children:Ie}),U=D(["tag"],[R],n);return Sa([Cr,U])},dS={c:"center ",l:"left ",r:"right "},Yn=function(e,n){for(var a=[],r=new q("mtd",[],["mtr-glue"]),i=new q("mtd",[],["mml-eqn-num"]),s=0;s0){var h=e.cols,b="",y=!1,k=0,_=h.length;h[0].type==="separator"&&(d+="top ",k=1),h[h.length-1].type==="separator"&&(d+="bottom ",_-=1);for(var $=k;$<_;$++){var M=h[$];M.type==="align"?(m+=dS[M.align],y&&(b+="none "),y=!0):M.type==="separator"&&y&&(b+=M.separator==="|"?"solid ":"dashed ",y=!1)}u.setAttribute("columnalign",m.trim()),/[sd]/.test(b)&&u.setAttribute("columnlines",b.trim())}if(e.colSeparationType==="align"){for(var N=e.cols||[],E="",I=1;I0?"left ":"",d+=L[L.length-1].length>0?"right ":"";for(var T=1;T0&&m&&(y=1),a[h]={type:"align",align:b,pregap:y,postgap:0}}return s.colSeparationType=m?"align":"alignat",s};Zn({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Ru(e[0]),a=n?[e[0]]:he(e[0],"ordgroup").body,r=a.map(function(s){var o=Iu(s),l=o.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new G("Unknown column alignment: "+l,s)}),i={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return pr(t.parser,i,af(t.envName))},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var r=t.parser;if(r.consumeSpaces(),r.fetch().text==="["){if(r.consume(),r.consumeSpaces(),n=r.fetch().text,!"lcr".includes(n))throw new G("Expected l or c or r",r.nextToken);r.consume(),r.consumeSpaces(),r.expect("]"),r.consume(),a.cols=[{type:"align",align:n}]}}var i=pr(t.parser,a,af(t.envName)),s=Math.max(0,...i.body.map(o=>o.length));return i.cols=new Array(s).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=pr(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Ru(e[0]),a=n?[e[0]]:he(e[0],"ordgroup").body,r=a.map(function(o){var l=Iu(o),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new G("Unknown column alignment: "+c,o)});if(r.length>1)throw new G("{subarray} can contain only one column");var i={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5},s=pr(t.parser,i,"script");if(s.body.length>0&&s.body[0].length>1)throw new G("{subarray} can contain only one column");return s},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=pr(t.parser,e,af(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.includes("r")?".":"\\{",right:t.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:n_,htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){pS.has(t.envName)&&Du(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:nf(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return pr(t.parser,e,"display")},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:n_,htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Du(t);var e={autoTag:nf(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return pr(t.parser,e,"display")},htmlBuilder:Jn,mathmlBuilder:Yn});Zn({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Du(t),Qj(t.parser)},htmlBuilder:Jn,mathmlBuilder:Yn});w("\\nonumber","\\gdef\\@eqnsw{0}");w("\\notag","\\nonumber");X({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new G(t.funcName+" valid only within array environment")}});var ow=e_;X({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];if(r.type!=="ordgroup")throw new G("Invalid environment name",r);for(var i="",s=0;s{var n=t.font,a=e.withFont(n);return $e(t.body,a)},r_=(t,e)=>{var n=t.font,a=e.withFont(n);return Me(t.body,a)},lw={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};X({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=$u(e[0]),i=a;return i in lw&&(i=lw[i]),{type:"font",mode:n.mode,font:i.slice(1),body:r}},htmlBuilder:a_,mathmlBuilder:r_});X({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"mclass",mode:n.mode,mclass:zu(a),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:a}],isCharacterBox:Ca(a)}}});X({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:a,breakOnTokenText:r}=t,{mode:i}=n,s=n.parseExpression(!0,r),o="math"+a.slice(1);return{type:"font",mode:i,font:o,body:{type:"ordgroup",mode:n.mode,body:s}}},htmlBuilder:a_,mathmlBuilder:r_});var mS=(t,e)=>{var n=e.style,a=n.fracNum(),r=n.fracDen(),i;i=e.havingStyle(a);var s=$e(t.numer,i,e);if(t.continued){var o=8.5/e.fontMetrics().ptPerEm,l=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?h=3*d:h=7*d,b=e.fontMetrics().denom1):(p>0?(m=e.fontMetrics().num2,h=d):(m=e.fontMetrics().num3,h=3*d),b=e.fontMetrics().denom2);var y;if(u){var _=e.fontMetrics().axisHeight;m-s.depth-(_+.5*p){var n=new q("mfrac",[Me(t.numer,e),Me(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var a=qe(t.barSize,e);n.setAttribute("linethickness",H(a))}if(t.leftDelim!=null||t.rightDelim!=null){var r=[];if(t.leftDelim!=null){var i=new q("mo",[new Pe(t.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),r.push(i)}if(r.push(n),t.rightDelim!=null){var s=new q("mo",[new Pe(t.rightDelim.replace("\\",""))]);s.setAttribute("fence","true"),r.push(s)}return Yh(r)}return n},i_=(t,e)=>{if(!e)return t;var n={type:"styling",mode:t.mode,style:e,body:[t]};return n};X({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0],i=e[1],s,o=null,l=null;switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,o="(",l=")";break;case"\\\\bracefrac":s=!1,o="\\{",l="\\}";break;case"\\\\brackfrac":s=!1,o="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=a==="\\cfrac",u=null;return c||a.startsWith("\\d")?u="display":a.startsWith("\\t")&&(u="text"),i_({type:"genfrac",mode:n.mode,numer:r,denom:i,continued:c,hasBarLine:s,leftDelim:o,rightDelim:l,barSize:null},u)},htmlBuilder:mS,mathmlBuilder:hS});X({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:a}=t,r;switch(n){case"\\over":r="\\frac";break;case"\\choose":r="\\binom";break;case"\\atop":r="\\\\atopfrac";break;case"\\brace":r="\\\\bracefrac";break;case"\\brack":r="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:r,token:a}}});var cw=["display","text","script","scriptscript"],uw=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};X({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,a=e[4],r=e[5],i=$u(e[0]),s=i.type==="atom"&&i.family==="open"?uw(i.text):null,o=$u(e[1]),l=o.type==="atom"&&o.family==="close"?uw(o.text):null,c=he(e[2],"size"),u,p=null;c.isBlank?u=!0:(p=c.value,u=p.number>0);var d=null,m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var h=he(m.body[0],"textord");d=cw[Number(h.text)]}}else m=he(m,"textord"),d=cw[Number(m.text)];return i_({type:"genfrac",mode:n.mode,numer:a,denom:r,continued:!1,hasBarLine:u,barSize:p,leftDelim:s,rightDelim:l},d)}});X({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:a,token:r}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:he(e[0],"size").value,token:r}}});X({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0],i=he(e[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var s=e[2],o=i.number>0;return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null}}});var s_=(t,e)=>{var n=e.style,a,r;t.type==="supsub"?(a=t.sup?$e(t.sup,e.havingStyle(n.sup()),e):$e(t.sub,e.havingStyle(n.sub()),e),r=he(t.base,"horizBrace")):r=he(t,"horizBrace");var i=$e(r.base,e.havingBaseStyle(pe.DISPLAY)),s=Nu(r,e),o;if(r.isOver?(o=ve({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:s}]}),o.children[0].children[0].children[1].classes.push("svg-align")):(o=ve({positionType:"bottom",positionData:i.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:i}]}),o.children[0].children[0].children[0].classes.push("svg-align")),a){var l=D(["minner",r.isOver?"mover":"munder"],[o],e);r.isOver?o=ve({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:a}]}):o=ve({positionType:"bottom",positionData:l.depth+.2+a.height+a.depth,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:l}]})}return D(["minner",r.isOver?"mover":"munder"],[o],e)},fS=(t,e)=>{var n=Mu(t.label);return new q(t.isOver?"mover":"munder",[Me(t.base,e),n])};X({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:a}=t;return{type:"horizBrace",mode:n.mode,label:a,isOver:a.includes("\\over"),base:e[0]}},htmlBuilder:s_,mathmlBuilder:fS});X({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=e[1],r=he(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:r})?{type:"href",mode:n.mode,href:r,body:Je(a)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=at(t.body,e,!1);return Nj(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=ur(t.body,e);return n instanceof q||(n=new q("mrow",[n])),n.setAttribute("href",t.href),n}});X({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=he(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:a}))return n.formatUnsupportedCmd("\\url");for(var r=[],i=0;i{var{parser:n,funcName:a,token:r}=t,i=he(e[0],"raw").string,s=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o,l={};switch(a){case"\\htmlClass":l.class=i,o={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,o={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,o={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),u=0;u{var n=at(t.body,e,!1),a=["enclosing"];t.attributes.class&&a.push(...t.attributes.class.trim().split(/\s+/));var r=D(a,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&r.setAttribute(i,t.attributes[i]);return r},mathmlBuilder:(t,e)=>ur(t.body,e)});X({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Je(e[0]),mathml:Je(e[1])}},htmlBuilder:(t,e)=>{var n=at(t.html,e,!1);return Sa(n)},mathmlBuilder:(t,e)=>ur(t.mathml,e)});var Sh=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new G("Invalid size: '"+e+"' in \\includegraphics");var a={number:+(n[1]+n[2]),unit:n[3]};if(!$w(a))throw new G("Invalid unit: '"+a.unit+"' in \\includegraphics.");return a};X({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:a}=t,r={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},o="";if(n[0])for(var l=he(n[0],"raw").string,c=l.split(","),u=0;u{var n=qe(t.height,e),a=0;t.totalheight.number>0&&(a=qe(t.totalheight,e)-n);var r=0;t.width.number>0&&(r=qe(t.width,e));var i={height:H(n+a)};r>0&&(i.width=H(r)),a>0&&(i.verticalAlign=H(-a));var s=new Rh(t.src,t.alt,i);return s.height=n,s.depth=a,s},mathmlBuilder:(t,e)=>{var n=new q("mglyph",[]);n.setAttribute("alt",t.alt);var a=qe(t.height,e),r=0;if(t.totalheight.number>0&&(r=qe(t.totalheight,e)-a,n.setAttribute("valign",H(-r))),n.setAttribute("height",H(a+r)),t.width.number>0){var i=qe(t.width,e);n.setAttribute("width",H(i))}return n.setAttribute("src",t.src),n}});X({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:a}=t,r=he(e[0],"size");if(n.settings.strict){var i=a[1]==="m",s=r.value.unit==="mu";i?(s||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, "+("not "+r.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):s&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:r.value}},htmlBuilder(t,e){return Tw(t.dimension,e)},mathmlBuilder(t,e){var n=qe(t.dimension,e);return new Cu(n)}});X({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0];return{type:"lap",mode:n.mode,alignment:a.slice(5),body:r}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=D([],[$e(t.body,e)]),n=D(["inner"],[n],e)):n=D(["inner"],[$e(t.body,e)]);var a=D(["fix"],[]),r=D([t.alignment],[n,a],e),i=D(["strut"]);return i.style.height=H(r.height+r.depth),r.depth&&(i.style.verticalAlign=H(-r.depth)),r.children.unshift(i),r=D(["thinbox"],[r],e),D(["mord","vbox"],[r],e)},mathmlBuilder:(t,e)=>{var n=new q("mpadded",[Me(t.body,e)]);if(t.alignment!=="rlap"){var a=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",a+"width")}return n.setAttribute("width","0px"),n}});X({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:a}=t,r=a.mode;a.switchMode("math");var i=n==="\\("?"\\)":"$",s=a.parseExpression(!1,i);return a.expect(i),a.switchMode(r),{type:"styling",mode:a.mode,style:"text",body:s}}});X({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new G("Mismatched "+t.funcName)}});var pw=(t,e)=>{switch(e.style.size){case pe.DISPLAY.size:return t.display;case pe.TEXT.size:return t.text;case pe.SCRIPT.size:return t.script;case pe.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};X({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Je(e[0]),text:Je(e[1]),script:Je(e[2]),scriptscript:Je(e[3])}},htmlBuilder:(t,e)=>{var n=pw(t,e),a=at(n,e,!1);return Sa(a)},mathmlBuilder:(t,e)=>{var n=pw(t,e);return ur(n,e)}});var o_=(t,e,n,a,r,i,s)=>{t=D([],[t]);var o=n&&Ca(n),l,c;if(e){var u=$e(e,a.havingStyle(r.sup()),a);c={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-u.depth)}}if(n){var p=$e(n,a.havingStyle(r.sub()),a);l={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-p.height)}}var d;if(c&&l){var m=a.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+t.depth+s;d=ve({positionType:"bottom",positionData:m,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:H(-i)},{type:"kern",size:l.kern},{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:H(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else if(l){var h=t.height-s;d=ve({positionType:"top",positionData:h,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:H(-i)},{type:"kern",size:l.kern},{type:"elem",elem:t}]})}else if(c){var b=t.depth+s;d=ve({positionType:"bottom",positionData:b,children:[{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:H(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else return t;var y=[d];if(l&&i!==0&&!o){var k=D(["mspace"],[],a);k.style.marginRight=H(i),y.unshift(k)}return D(["mop","op-limits"],y,a)},l_=new Set(["\\smallint"]),xs=(t,e)=>{var n,a,r=!1,i;t.type==="supsub"?(n=t.sup,a=t.sub,i=he(t.base,"op"),r=!0):i=he(t,"op");var s=e.style,o=!1;s.size===pe.DISPLAY.size&&i.symbol&&!l_.has(i.name)&&(o=!0);var l;if(i.symbol){var c=o?"Size2-Regular":"Size1-Regular",u="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(u=i.name.slice(1),i.name=u==="oiint"?"\\iint":"\\iiint"),l=Lt(i.name,c,"math",e,["mop","op-symbol",o?"large-op":"small-op"]),u.length>0){var p=l.italic,d=Nw(u+"Size"+(o?"2":"1"),e);l=ve({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:d,shift:o?.08:0}]}),i.name="\\"+u,l.classes.unshift("mop"),l.italic=p}}else if(i.body){var m=at(i.body,e,!0);m.length===1&&m[0]instanceof Ft?(l=m[0],l.classes[0]="mop"):l=D(["mop"],m,e)}else{for(var h=[],b=1;b{var n;if(t.symbol)n=new q("mo",[wn(t.name,t.mode)]),l_.has(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new q("mo",rn(t.body,e));else{n=new q("mi",[new Pe(t.name.slice(1))]);var a=new q("mo",[wn("\u2061","text")]);t.parentIsSupSub?n=new q("mrow",[n,a]):n=zw([n,a])}return n},gS={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};X({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:(t,e)=>{var{parser:n,funcName:a}=t,r=a;return r.length===1&&(r=gS[r]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:xs,mathmlBuilder:Vo});X({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Je(a)}},htmlBuilder:xs,mathmlBuilder:Vo});var bS={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};X({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(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:xs,mathmlBuilder:Vo});X({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:xs,mathmlBuilder:Vo});X({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(t){var{parser:e,funcName:n}=t,a=n;return a.length===1&&(a=bS[a]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:xs,mathmlBuilder:Vo});var c_=(t,e)=>{var n,a,r=!1,i;t.type==="supsub"?(n=t.sup,a=t.sub,i=he(t.base,"operatorname"),r=!0):i=he(t,"operatorname");var s;if(i.body.length>0){for(var o=i.body.map(p=>{var d="text"in p?p.text:void 0;return typeof d=="string"?{type:"textord",mode:p.mode,text:d}:p}),l=at(o,e.withFont("mathrm"),!0),c=0;c{for(var n=rn(t.body,e.withFont("mathrm")),a=!0,r=0;ru.toText()).join("");n=[new Pe(o)]}var l=new q("mi",n);l.setAttribute("mathvariant","normal");var c=new q("mo",[wn("\u2061","text")]);return t.parentIsSupSub?new q("mrow",[l,c]):zw([l,c])};X({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0];return{type:"operatorname",mode:n.mode,body:Je(r),alwaysHandleSupSub:a==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:c_,mathmlBuilder:yS});w("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");si({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Sa(at(t.body,e,!1)):D(["mord"],at(t.body,e,!0),e)},mathmlBuilder(t,e){return ur(t.body,e,!0)}});X({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,a=e[0];return{type:"overline",mode:n.mode,body:a}},htmlBuilder(t,e){var n=$e(t.body,e.havingCrampedStyle()),a=gs("overline-line",e),r=e.fontMetrics().defaultRuleThickness,i=ve({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*r},{type:"elem",elem:a},{type:"kern",size:r}]});return D(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new q("mo",[new Pe("\u203E")]);n.setAttribute("stretchy","true");var a=new q("mover",[Me(t.body,e),n]);return a.setAttribute("accent","true"),a}});X({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"phantom",mode:n.mode,body:Je(a)}},htmlBuilder:(t,e)=>{var n=at(t.body,e.withPhantom(),!1);return Sa(n)},mathmlBuilder:(t,e)=>{var n=rn(t.body,e);return new q("mphantom",n)}});w("\\hphantom","\\smash{\\phantom{#1}}");X({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"vphantom",mode:n.mode,body:a}},htmlBuilder:(t,e)=>{var n=D(["inner"],[$e(t.body,e.withPhantom())]),a=D(["fix"],[]);return D(["mord","rlap"],[n,a],e)},mathmlBuilder:(t,e)=>{var n=rn(Je(t.body),e),a=new q("mphantom",n),r=new q("mpadded",[a]);return r.setAttribute("width","0px"),r}});X({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,a=he(e[0],"size").value,r=e[1];return{type:"raisebox",mode:n.mode,dy:a,body:r}},htmlBuilder(t,e){var n=$e(t.body,e),a=qe(t.dy,e);return ve({positionType:"shift",positionData:-a,children:[{type:"elem",elem:n}]})},mathmlBuilder(t,e){var n=new q("mpadded",[Me(t.body,e)]),a=t.dy.number+t.dy.unit;return n.setAttribute("voffset",a),n}});X({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});X({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:a}=t,r=n[0],i=he(e[0],"size"),s=he(e[1],"size");return{type:"rule",mode:a.mode,shift:r&&he(r,"size").value,width:i.value,height:s.value}},htmlBuilder(t,e){var n=D(["mord","rule"],[],e),a=qe(t.width,e),r=qe(t.height,e),i=t.shift?qe(t.shift,e):0;return n.style.borderRightWidth=H(a),n.style.borderTopWidth=H(r),n.style.bottom=H(i),n.width=a,n.height=r+i,n.depth=-i,n.maxFontSize=r*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=qe(t.width,e),a=qe(t.height,e),r=t.shift?qe(t.shift,e):0,i=e.color&&e.getColor()||"black",s=new q("mspace");s.setAttribute("mathbackground",i),s.setAttribute("width",H(n)),s.setAttribute("height",H(a));var o=new q("mpadded",[s]);return r>=0?o.setAttribute("height",H(r)):(o.setAttribute("height",H(r)),o.setAttribute("depth",H(-r))),o.setAttribute("voffset",H(r)),o}});function u_(t,e,n){for(var a=at(t,e,!1),r=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return u_(t.body,n,e)};X({type:"sizing",names:dw,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:a,parser:r}=t,i=r.parseExpression(!1,n);return{type:"sizing",mode:r.mode,size:dw.indexOf(a)+1,body:i}},htmlBuilder:xS,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),a=rn(t.body,n),r=new q("mstyle",a);return r.setAttribute("mathsize",H(n.sizeMultiplier)),r}});X({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:a}=t,r=!1,i=!1,s=n[0]&&he(n[0],"ordgroup");if(s)for(var o="",l=0;l{var n=D([],[$e(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0),t.smashDepth&&(n.depth=0),t.smashHeight&&t.smashDepth)return D(["mord","smash"],[n],e);if(n.children)for(var a=0;a{var n=new q("mpadded",[Me(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});X({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:a}=t,r=n[0],i=e[0];return{type:"sqrt",mode:a.mode,body:i,index:r}},htmlBuilder(t,e){var n=$e(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=bs(n,e);var a=e.fontMetrics(),r=a.defaultRuleThickness,i=r;e.style.idn.height+n.depth+s&&(s=(s+p-n.height-n.depth)/2);var d=l.height-n.height-s-c;n.style.paddingLeft=H(u);var m=ve({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+d)},{type:"elem",elem:l},{type:"kern",size:c}]});if(t.index){var h=e.havingStyle(pe.SCRIPTSCRIPT),b=$e(t.index,h,e),y=.6*(m.height-m.depth),k=ve({positionType:"shift",positionData:-y,children:[{type:"elem",elem:b}]}),_=D(["root"],[k]);return D(["mord","sqrt"],[_,m],e)}else return D(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:n,index:a}=t;return a?new q("mroot",[Me(n,e),Me(a,e)]):new q("msqrt",[Me(n,e)])}});var mw={display:pe.DISPLAY,text:pe.TEXT,script:pe.SCRIPT,scriptscript:pe.SCRIPTSCRIPT};X({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:a,parser:r}=t,i=r.parseExpression(!0,n),s=a.slice(1,a.length-5);return{type:"styling",mode:r.mode,style:s,body:i}},htmlBuilder(t,e){var n=mw[t.style],a=e.havingStyle(n).withFont("");return u_(t.body,a,e)},mathmlBuilder(t,e){var n=mw[t.style],a=e.havingStyle(n),r=rn(t.body,a),i=new q("mstyle",r),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},o=s[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var kS=function(e,n){var a=e.base;if(a)if(a.type==="op"){var r=a.limits&&(n.style.size===pe.DISPLAY.size||a.alwaysHandleSupSub);return r?xs:null}else if(a.type==="operatorname"){var i=a.alwaysHandleSupSub&&(n.style.size===pe.DISPLAY.size||a.limits);return i?c_:null}else{if(a.type==="accent")return Ca(a.base)?ef:null;if(a.type==="horizBrace"){var s=!e.sub;return s===a.isOver?s_:null}else return null}else return null};si({type:"supsub",htmlBuilder(t,e){var n=kS(t,e);if(n)return n(t,e);var{base:a,sup:r,sub:i}=t,s=$e(a,e),o,l,c=e.fontMetrics(),u=0,p=0,d=a&&Ca(a);if(r){var m=e.havingStyle(e.style.sup());o=$e(r,m,e),d||(u=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(i){var h=e.havingStyle(e.style.sub());l=$e(i,h,e),d||(p=s.depth+h.fontMetrics().subDrop*h.sizeMultiplier/e.sizeMultiplier)}var b;e.style===pe.DISPLAY?b=c.sup1:e.style.cramped?b=c.sup3:b=c.sup2;var y=e.sizeMultiplier,k=H(.5/c.ptPerEm/y),_=null;if(l){var $=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Ft||$)&&(_=H(-s.italic))}var M;if(o&&l){u=Math.max(u,b,o.depth+.25*c.xHeight),p=Math.max(p,c.sub2);var N=c.defaultRuleThickness,E=4*N;if(u-o.depth-(l.height-p)0&&(u+=I,p-=I)}var F=[{type:"elem",elem:l,shift:p,marginRight:k,marginLeft:_},{type:"elem",elem:o,shift:-u,marginRight:k}];M=ve({positionType:"individualShift",children:F})}else if(l){p=Math.max(p,c.sub1,l.height-.8*c.xHeight);var L=[{type:"elem",elem:l,marginLeft:_,marginRight:k}];M=ve({positionType:"shift",positionData:p,children:L})}else if(o)u=Math.max(u,b,o.depth+.25*c.xHeight),M=ve({positionType:"shift",positionData:-u,children:[{type:"elem",elem:o,marginRight:k}]});else throw new Error("supsub must have either sup or sub.");var T=Dh(s,"right")||"mord";return D([T],[s,D(["msupsub"],[M])],e)},mathmlBuilder(t,e){var n=!1,a,r;t.base&&t.base.type==="horizBrace"&&(r=!!t.sup,r===t.base.isOver&&(n=!0,a=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[Me(t.base,e)];t.sub&&i.push(Me(t.sub,e)),t.sup&&i.push(Me(t.sup,e));var s;if(n)s=a?"mover":"munder";else if(t.sub)if(t.sup){var c=t.base;c&&c.type==="op"&&c.limits&&e.style===pe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(e.style===pe.DISPLAY||c.limits)?s="munderover":s="msubsup"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===pe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===pe.DISPLAY)?s="munder":s="msub"}else{var o=t.base;o&&o.type==="op"&&o.limits&&(e.style===pe.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||e.style===pe.DISPLAY)?s="mover":s="msup"}return new q(s,i)}});si({type:"atom",htmlBuilder(t,e){return Zh(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new q("mo",[wn(t.text,t.mode)]);if(t.family==="bin"){var a=Qh(t,e);a==="bold-italic"&&n.setAttribute("mathvariant",a)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var p_={mi:"italic",mn:"normal",mtext:"normal"};si({type:"mathord",htmlBuilder(t,e){return Tu(t,e,"mathord")},mathmlBuilder(t,e){var n=new q("mi",[wn(t.text,t.mode,e)]),a=Qh(t,e)||"italic";return a!==p_[n.type]&&n.setAttribute("mathvariant",a),n}});si({type:"textord",htmlBuilder(t,e){return Tu(t,e,"textord")},mathmlBuilder(t,e){var n=wn(t.text,t.mode,e),a=Qh(t,e)||"normal",r;return t.mode==="text"?r=new q("mtext",[n]):/[0-9]/.test(t.text)?r=new q("mn",[n]):t.text==="\\prime"?r=new q("mo",[n]):r=new q("mi",[n]),a!==p_[r.type]&&r.setAttribute("mathvariant",a),r}});var Eh={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Ah={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};si({type:"spacing",htmlBuilder(t,e){if(Ah.hasOwnProperty(t.text)){var n=Ah[t.text].className||"";if(t.mode==="text"){var a=Tu(t,e,"textord");return a.classes.push(n),a}else return D(["mspace",n],[Zh(t.text,t.mode,e)],e)}else{if(Eh.hasOwnProperty(t.text))return D(["mspace",Eh[t.text]],[],e);throw new G('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(Ah.hasOwnProperty(t.text))n=new q("mtext",[new Pe("\xA0")]);else{if(Eh.hasOwnProperty(t.text))return new q("mspace");throw new G('Unknown type of space "'+t.text+'"')}return n}});var hw=()=>{var t=new q("mtd",[]);return t.setAttribute("width","50%"),t};si({type:"tag",mathmlBuilder(t,e){var n=new q("mtable",[new q("mtr",[hw(),new q("mtd",[ur(t.body,e)]),hw(),new q("mtd",[ur(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var fw={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},gw={"\\textbf":"textbf","\\textmd":"textmd"},wS={"\\textit":"textit","\\textup":"textup"},bw=(t,e)=>{var n=t.font;if(n){if(fw[n])return e.withTextFontFamily(fw[n]);if(gw[n])return e.withTextFontWeight(gw[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(wS[n])};X({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];return{type:"text",mode:n.mode,body:Je(r),font:a}},htmlBuilder(t,e){var n=bw(t,e),a=at(t.body,n,!0);return D(["mord","text"],a,n)},mathmlBuilder(t,e){var n=bw(t,e);return ur(t.body,n)}});X({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=$e(t.body,e),a=gs("underline-line",e),r=e.fontMetrics().defaultRuleThickness,i=ve({positionType:"top",positionData:n.height,children:[{type:"kern",size:r},{type:"elem",elem:a},{type:"kern",size:3*r},{type:"elem",elem:n}]});return D(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new q("mo",[new Pe("\u203E")]);n.setAttribute("stretchy","true");var a=new q("munder",[Me(t.body,e),n]);return a.setAttribute("accentunder","true"),a}});X({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=$e(t.body,e),a=e.fontMetrics().axisHeight,r=.5*(n.height-a-(n.depth+a));return ve({positionType:"shift",positionData:r,children:[{type:"elem",elem:n}]})},mathmlBuilder(t,e){var n=new q("mpadded",[Me(t.body,e)],["vcenter"]);return new q("mrow",[n])}});X({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new G("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=yw(t),a=[],r=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"\u2423":"\xA0"),ir=Iw,d_=`[ \r - ]`,_S="\\\\[a-zA-Z@]+",vS="\\\\[^\uD800-\uDFFF]",$S="("+_S+")"+d_+"*",CS=`\\\\( +-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.")}},cr=class{constructor(e){this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}},Wh={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},Qj={ex:!0,em:!0,mu:!0},Vk=function(e){return typeof e!="string"&&(e=e.unit),e in Wh||e in Qj||e==="ex"},qe=function(e,n){var a;if(e.unit in Wh)a=Wh[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")a=n.fontMetrics().cssEmPerMu;else{var r;if(n.style.isTight()?r=n.havingStyle(n.style.text()):r=n,e.unit==="ex")a=r.fontMetrics().xHeight;else if(e.unit==="em")a=r.fontMetrics().quad;else throw new G("Invalid unit: '"+e.unit+"'");r!==n&&(a*=r.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*a,n.maxSize)},H=function(e){return+e.toFixed(4)+"em"},ur=function(e){return e.filter(n=>n).join(" ")},Wk=function(e,n,a){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=a||{},n){n.style.isTight()&&this.classes.push("mtight");var r=n.getColor();r&&(this.style.color=r)}},Uk=function(e){var n=document.createElement(e);n.className=ur(this.classes);for(var a of Object.keys(this.style))n.style[a]=this.style[a];for(var r of Object.keys(this.attributes))n.setAttribute(r,this.attributes[r]);for(var i=0;i/=\x00-\x1f]/,Kk=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+Nt(ur(this.classes))+'"');var a="";for(var r of Object.keys(this.style))a+=of(r)+":"+this.style[r]+";";a&&(n+=' style="'+Nt(a)+'"');for(var i of Object.keys(this.attributes)){if(eS.test(i))throw new G("Invalid attribute name '"+i+"'");n+=" "+i+'="'+Nt(this.attributes[i])+'"'}n+=">";for(var s=0;s",n},pr=class{constructor(e,n,a,r){Wk.call(this,e,a,r),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return Uk.call(this,"span")}toMarkup(){return Kk.call(this,"span")}},$s=class{constructor(e,n,a,r){Wk.call(this,n,r),this.children=a||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return Uk.call(this,"a")}toMarkup(){return Kk.call(this,"a")}},Uh=class{constructor(e,n,a){this.alt=n,this.src=e,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=a}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n of Object.keys(this.style))e.style[n]=this.style[n];return e}toMarkup(){var e=''+Nt(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=H(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=ur(this.classes));for(var a of Object.keys(this.style))n=n||document.createElement("span"),n.style[a]=this.style[a];return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(a+="margin-right:"+H(this.italic)+";");for(var r of Object.keys(this.style))a+=of(r)+":"+this.style[r]+";";a&&(e=!0,n+=' style="'+Nt(a)+'"');var i=Nt(this.text);return e?(n+=">",n+=i,n+="",n):i}},Ln=class{constructor(e,n){this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var a of Object.keys(this.attributes))n.setAttribute(a,this.attributes[a]);for(var r=0;r':''}},Yo=class{constructor(e){this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var a of Object.keys(this.attributes))n.setAttribute(a,this.attributes[a]);return n}toMarkup(){var e=" but got "+String(t)+".")}var rS=t=>t instanceof pr||t instanceof $s||t instanceof cr,Jn={"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]}},gu={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]},gk={\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"};function iS(t,e){Jn[t]=e}function cf(t,e,n){if(!Jn[e])throw new Error("Font metrics not found for font: "+e+".");var a=t.charCodeAt(0),r=Jn[e][a];if(!r&&t[0]in gk&&(a=gk[t[0]].charCodeAt(0),r=Jn[e][a]),!r&&n==="text"&&Hk(a)&&(r=Jn[e][77]),r)return{depth:r[0],height:r[1],italic:r[2],skew:r[3],width:r[4]}}var Th={};function sS(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!Th[e]){var n=Th[e]={cssEmPerMu:gu.quad[e]/18};for(var a in gu)gu.hasOwnProperty(a)&&(n[a]=gu[a][e])}return Th[e]}var oS={bin:1,close:1,inner:1,open:1,punct:1,rel:1},lS={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},Be={math:{},text:{}};function f(t,e,n,a,r,i){Be[t][r]={font:e,group:n,replace:a},i&&a&&(Be[t][a]=Be[t][r])}var g="math",O="text",x="main",v="ams",Le="accent-token",Z="bin",Ht="close",Ss="inner",ne="mathord",Ye="op-token",ln="open",el="punct",C="rel",Ta="spacing",A="textord";f(g,x,C,"\u2261","\\equiv",!0);f(g,x,C,"\u227A","\\prec",!0);f(g,x,C,"\u227B","\\succ",!0);f(g,x,C,"\u223C","\\sim",!0);f(g,x,C,"\u22A5","\\perp");f(g,x,C,"\u2AAF","\\preceq",!0);f(g,x,C,"\u2AB0","\\succeq",!0);f(g,x,C,"\u2243","\\simeq",!0);f(g,x,C,"\u2223","\\mid",!0);f(g,x,C,"\u226A","\\ll",!0);f(g,x,C,"\u226B","\\gg",!0);f(g,x,C,"\u224D","\\asymp",!0);f(g,x,C,"\u2225","\\parallel");f(g,x,C,"\u22C8","\\bowtie",!0);f(g,x,C,"\u2323","\\smile",!0);f(g,x,C,"\u2291","\\sqsubseteq",!0);f(g,x,C,"\u2292","\\sqsupseteq",!0);f(g,x,C,"\u2250","\\doteq",!0);f(g,x,C,"\u2322","\\frown",!0);f(g,x,C,"\u220B","\\ni",!0);f(g,x,C,"\u221D","\\propto",!0);f(g,x,C,"\u22A2","\\vdash",!0);f(g,x,C,"\u22A3","\\dashv",!0);f(g,x,C,"\u220B","\\owns");f(g,x,el,".","\\ldotp");f(g,x,el,"\u22C5","\\cdotp");f(g,x,el,"\u22C5","\xB7");f(O,x,A,"\u22C5","\xB7");f(g,x,A,"#","\\#");f(O,x,A,"#","\\#");f(g,x,A,"&","\\&");f(O,x,A,"&","\\&");f(g,x,A,"\u2135","\\aleph",!0);f(g,x,A,"\u2200","\\forall",!0);f(g,x,A,"\u210F","\\hbar",!0);f(g,x,A,"\u2203","\\exists",!0);f(g,x,A,"\u2207","\\nabla",!0);f(g,x,A,"\u266D","\\flat",!0);f(g,x,A,"\u2113","\\ell",!0);f(g,x,A,"\u266E","\\natural",!0);f(g,x,A,"\u2663","\\clubsuit",!0);f(g,x,A,"\u2118","\\wp",!0);f(g,x,A,"\u266F","\\sharp",!0);f(g,x,A,"\u2662","\\diamondsuit",!0);f(g,x,A,"\u211C","\\Re",!0);f(g,x,A,"\u2661","\\heartsuit",!0);f(g,x,A,"\u2111","\\Im",!0);f(g,x,A,"\u2660","\\spadesuit",!0);f(g,x,A,"\xA7","\\S",!0);f(O,x,A,"\xA7","\\S");f(g,x,A,"\xB6","\\P",!0);f(O,x,A,"\xB6","\\P");f(g,x,A,"\u2020","\\dag");f(O,x,A,"\u2020","\\dag");f(O,x,A,"\u2020","\\textdagger");f(g,x,A,"\u2021","\\ddag");f(O,x,A,"\u2021","\\ddag");f(O,x,A,"\u2021","\\textdaggerdbl");f(g,x,Ht,"\u23B1","\\rmoustache",!0);f(g,x,ln,"\u23B0","\\lmoustache",!0);f(g,x,Ht,"\u27EF","\\rgroup",!0);f(g,x,ln,"\u27EE","\\lgroup",!0);f(g,x,Z,"\u2213","\\mp",!0);f(g,x,Z,"\u2296","\\ominus",!0);f(g,x,Z,"\u228E","\\uplus",!0);f(g,x,Z,"\u2293","\\sqcap",!0);f(g,x,Z,"\u2217","\\ast");f(g,x,Z,"\u2294","\\sqcup",!0);f(g,x,Z,"\u25EF","\\bigcirc",!0);f(g,x,Z,"\u2219","\\bullet",!0);f(g,x,Z,"\u2021","\\ddagger");f(g,x,Z,"\u2240","\\wr",!0);f(g,x,Z,"\u2A3F","\\amalg");f(g,x,Z,"&","\\And");f(g,x,C,"\u27F5","\\longleftarrow",!0);f(g,x,C,"\u21D0","\\Leftarrow",!0);f(g,x,C,"\u27F8","\\Longleftarrow",!0);f(g,x,C,"\u27F6","\\longrightarrow",!0);f(g,x,C,"\u21D2","\\Rightarrow",!0);f(g,x,C,"\u27F9","\\Longrightarrow",!0);f(g,x,C,"\u2194","\\leftrightarrow",!0);f(g,x,C,"\u27F7","\\longleftrightarrow",!0);f(g,x,C,"\u21D4","\\Leftrightarrow",!0);f(g,x,C,"\u27FA","\\Longleftrightarrow",!0);f(g,x,C,"\u21A6","\\mapsto",!0);f(g,x,C,"\u27FC","\\longmapsto",!0);f(g,x,C,"\u2197","\\nearrow",!0);f(g,x,C,"\u21A9","\\hookleftarrow",!0);f(g,x,C,"\u21AA","\\hookrightarrow",!0);f(g,x,C,"\u2198","\\searrow",!0);f(g,x,C,"\u21BC","\\leftharpoonup",!0);f(g,x,C,"\u21C0","\\rightharpoonup",!0);f(g,x,C,"\u2199","\\swarrow",!0);f(g,x,C,"\u21BD","\\leftharpoondown",!0);f(g,x,C,"\u21C1","\\rightharpoondown",!0);f(g,x,C,"\u2196","\\nwarrow",!0);f(g,x,C,"\u21CC","\\rightleftharpoons",!0);f(g,v,C,"\u226E","\\nless",!0);f(g,v,C,"\uE010","\\@nleqslant");f(g,v,C,"\uE011","\\@nleqq");f(g,v,C,"\u2A87","\\lneq",!0);f(g,v,C,"\u2268","\\lneqq",!0);f(g,v,C,"\uE00C","\\@lvertneqq");f(g,v,C,"\u22E6","\\lnsim",!0);f(g,v,C,"\u2A89","\\lnapprox",!0);f(g,v,C,"\u2280","\\nprec",!0);f(g,v,C,"\u22E0","\\npreceq",!0);f(g,v,C,"\u22E8","\\precnsim",!0);f(g,v,C,"\u2AB9","\\precnapprox",!0);f(g,v,C,"\u2241","\\nsim",!0);f(g,v,C,"\uE006","\\@nshortmid");f(g,v,C,"\u2224","\\nmid",!0);f(g,v,C,"\u22AC","\\nvdash",!0);f(g,v,C,"\u22AD","\\nvDash",!0);f(g,v,C,"\u22EA","\\ntriangleleft");f(g,v,C,"\u22EC","\\ntrianglelefteq",!0);f(g,v,C,"\u228A","\\subsetneq",!0);f(g,v,C,"\uE01A","\\@varsubsetneq");f(g,v,C,"\u2ACB","\\subsetneqq",!0);f(g,v,C,"\uE017","\\@varsubsetneqq");f(g,v,C,"\u226F","\\ngtr",!0);f(g,v,C,"\uE00F","\\@ngeqslant");f(g,v,C,"\uE00E","\\@ngeqq");f(g,v,C,"\u2A88","\\gneq",!0);f(g,v,C,"\u2269","\\gneqq",!0);f(g,v,C,"\uE00D","\\@gvertneqq");f(g,v,C,"\u22E7","\\gnsim",!0);f(g,v,C,"\u2A8A","\\gnapprox",!0);f(g,v,C,"\u2281","\\nsucc",!0);f(g,v,C,"\u22E1","\\nsucceq",!0);f(g,v,C,"\u22E9","\\succnsim",!0);f(g,v,C,"\u2ABA","\\succnapprox",!0);f(g,v,C,"\u2246","\\ncong",!0);f(g,v,C,"\uE007","\\@nshortparallel");f(g,v,C,"\u2226","\\nparallel",!0);f(g,v,C,"\u22AF","\\nVDash",!0);f(g,v,C,"\u22EB","\\ntriangleright");f(g,v,C,"\u22ED","\\ntrianglerighteq",!0);f(g,v,C,"\uE018","\\@nsupseteqq");f(g,v,C,"\u228B","\\supsetneq",!0);f(g,v,C,"\uE01B","\\@varsupsetneq");f(g,v,C,"\u2ACC","\\supsetneqq",!0);f(g,v,C,"\uE019","\\@varsupsetneqq");f(g,v,C,"\u22AE","\\nVdash",!0);f(g,v,C,"\u2AB5","\\precneqq",!0);f(g,v,C,"\u2AB6","\\succneqq",!0);f(g,v,C,"\uE016","\\@nsubseteqq");f(g,v,Z,"\u22B4","\\unlhd");f(g,v,Z,"\u22B5","\\unrhd");f(g,v,C,"\u219A","\\nleftarrow",!0);f(g,v,C,"\u219B","\\nrightarrow",!0);f(g,v,C,"\u21CD","\\nLeftarrow",!0);f(g,v,C,"\u21CF","\\nRightarrow",!0);f(g,v,C,"\u21AE","\\nleftrightarrow",!0);f(g,v,C,"\u21CE","\\nLeftrightarrow",!0);f(g,v,C,"\u25B3","\\vartriangle");f(g,v,A,"\u210F","\\hslash");f(g,v,A,"\u25BD","\\triangledown");f(g,v,A,"\u25CA","\\lozenge");f(g,v,A,"\u24C8","\\circledS");f(g,v,A,"\xAE","\\circledR");f(O,v,A,"\xAE","\\circledR");f(g,v,A,"\u2221","\\measuredangle",!0);f(g,v,A,"\u2204","\\nexists");f(g,v,A,"\u2127","\\mho");f(g,v,A,"\u2132","\\Finv",!0);f(g,v,A,"\u2141","\\Game",!0);f(g,v,A,"\u2035","\\backprime");f(g,v,A,"\u25B2","\\blacktriangle");f(g,v,A,"\u25BC","\\blacktriangledown");f(g,v,A,"\u25A0","\\blacksquare");f(g,v,A,"\u29EB","\\blacklozenge");f(g,v,A,"\u2605","\\bigstar");f(g,v,A,"\u2222","\\sphericalangle",!0);f(g,v,A,"\u2201","\\complement",!0);f(g,v,A,"\xF0","\\eth",!0);f(O,x,A,"\xF0","\xF0");f(g,v,A,"\u2571","\\diagup");f(g,v,A,"\u2572","\\diagdown");f(g,v,A,"\u25A1","\\square");f(g,v,A,"\u25A1","\\Box");f(g,v,A,"\u25CA","\\Diamond");f(g,v,A,"\xA5","\\yen",!0);f(O,v,A,"\xA5","\\yen",!0);f(g,v,A,"\u2713","\\checkmark",!0);f(O,v,A,"\u2713","\\checkmark");f(g,v,A,"\u2136","\\beth",!0);f(g,v,A,"\u2138","\\daleth",!0);f(g,v,A,"\u2137","\\gimel",!0);f(g,v,A,"\u03DD","\\digamma",!0);f(g,v,A,"\u03F0","\\varkappa");f(g,v,ln,"\u250C","\\@ulcorner",!0);f(g,v,Ht,"\u2510","\\@urcorner",!0);f(g,v,ln,"\u2514","\\@llcorner",!0);f(g,v,Ht,"\u2518","\\@lrcorner",!0);f(g,v,C,"\u2266","\\leqq",!0);f(g,v,C,"\u2A7D","\\leqslant",!0);f(g,v,C,"\u2A95","\\eqslantless",!0);f(g,v,C,"\u2272","\\lesssim",!0);f(g,v,C,"\u2A85","\\lessapprox",!0);f(g,v,C,"\u224A","\\approxeq",!0);f(g,v,Z,"\u22D6","\\lessdot");f(g,v,C,"\u22D8","\\lll",!0);f(g,v,C,"\u2276","\\lessgtr",!0);f(g,v,C,"\u22DA","\\lesseqgtr",!0);f(g,v,C,"\u2A8B","\\lesseqqgtr",!0);f(g,v,C,"\u2251","\\doteqdot");f(g,v,C,"\u2253","\\risingdotseq",!0);f(g,v,C,"\u2252","\\fallingdotseq",!0);f(g,v,C,"\u223D","\\backsim",!0);f(g,v,C,"\u22CD","\\backsimeq",!0);f(g,v,C,"\u2AC5","\\subseteqq",!0);f(g,v,C,"\u22D0","\\Subset",!0);f(g,v,C,"\u228F","\\sqsubset",!0);f(g,v,C,"\u227C","\\preccurlyeq",!0);f(g,v,C,"\u22DE","\\curlyeqprec",!0);f(g,v,C,"\u227E","\\precsim",!0);f(g,v,C,"\u2AB7","\\precapprox",!0);f(g,v,C,"\u22B2","\\vartriangleleft");f(g,v,C,"\u22B4","\\trianglelefteq");f(g,v,C,"\u22A8","\\vDash",!0);f(g,v,C,"\u22AA","\\Vvdash",!0);f(g,v,C,"\u2323","\\smallsmile");f(g,v,C,"\u2322","\\smallfrown");f(g,v,C,"\u224F","\\bumpeq",!0);f(g,v,C,"\u224E","\\Bumpeq",!0);f(g,v,C,"\u2267","\\geqq",!0);f(g,v,C,"\u2A7E","\\geqslant",!0);f(g,v,C,"\u2A96","\\eqslantgtr",!0);f(g,v,C,"\u2273","\\gtrsim",!0);f(g,v,C,"\u2A86","\\gtrapprox",!0);f(g,v,Z,"\u22D7","\\gtrdot");f(g,v,C,"\u22D9","\\ggg",!0);f(g,v,C,"\u2277","\\gtrless",!0);f(g,v,C,"\u22DB","\\gtreqless",!0);f(g,v,C,"\u2A8C","\\gtreqqless",!0);f(g,v,C,"\u2256","\\eqcirc",!0);f(g,v,C,"\u2257","\\circeq",!0);f(g,v,C,"\u225C","\\triangleq",!0);f(g,v,C,"\u223C","\\thicksim");f(g,v,C,"\u2248","\\thickapprox");f(g,v,C,"\u2AC6","\\supseteqq",!0);f(g,v,C,"\u22D1","\\Supset",!0);f(g,v,C,"\u2290","\\sqsupset",!0);f(g,v,C,"\u227D","\\succcurlyeq",!0);f(g,v,C,"\u22DF","\\curlyeqsucc",!0);f(g,v,C,"\u227F","\\succsim",!0);f(g,v,C,"\u2AB8","\\succapprox",!0);f(g,v,C,"\u22B3","\\vartriangleright");f(g,v,C,"\u22B5","\\trianglerighteq");f(g,v,C,"\u22A9","\\Vdash",!0);f(g,v,C,"\u2223","\\shortmid");f(g,v,C,"\u2225","\\shortparallel");f(g,v,C,"\u226C","\\between",!0);f(g,v,C,"\u22D4","\\pitchfork",!0);f(g,v,C,"\u221D","\\varpropto");f(g,v,C,"\u25C0","\\blacktriangleleft");f(g,v,C,"\u2234","\\therefore",!0);f(g,v,C,"\u220D","\\backepsilon");f(g,v,C,"\u25B6","\\blacktriangleright");f(g,v,C,"\u2235","\\because",!0);f(g,v,C,"\u22D8","\\llless");f(g,v,C,"\u22D9","\\gggtr");f(g,v,Z,"\u22B2","\\lhd");f(g,v,Z,"\u22B3","\\rhd");f(g,v,C,"\u2242","\\eqsim",!0);f(g,x,C,"\u22C8","\\Join");f(g,v,C,"\u2251","\\Doteq",!0);f(g,v,Z,"\u2214","\\dotplus",!0);f(g,v,Z,"\u2216","\\smallsetminus");f(g,v,Z,"\u22D2","\\Cap",!0);f(g,v,Z,"\u22D3","\\Cup",!0);f(g,v,Z,"\u2A5E","\\doublebarwedge",!0);f(g,v,Z,"\u229F","\\boxminus",!0);f(g,v,Z,"\u229E","\\boxplus",!0);f(g,v,Z,"\u22C7","\\divideontimes",!0);f(g,v,Z,"\u22C9","\\ltimes",!0);f(g,v,Z,"\u22CA","\\rtimes",!0);f(g,v,Z,"\u22CB","\\leftthreetimes",!0);f(g,v,Z,"\u22CC","\\rightthreetimes",!0);f(g,v,Z,"\u22CF","\\curlywedge",!0);f(g,v,Z,"\u22CE","\\curlyvee",!0);f(g,v,Z,"\u229D","\\circleddash",!0);f(g,v,Z,"\u229B","\\circledast",!0);f(g,v,Z,"\u22C5","\\centerdot");f(g,v,Z,"\u22BA","\\intercal",!0);f(g,v,Z,"\u22D2","\\doublecap");f(g,v,Z,"\u22D3","\\doublecup");f(g,v,Z,"\u22A0","\\boxtimes",!0);f(g,v,C,"\u21E2","\\dashrightarrow",!0);f(g,v,C,"\u21E0","\\dashleftarrow",!0);f(g,v,C,"\u21C7","\\leftleftarrows",!0);f(g,v,C,"\u21C6","\\leftrightarrows",!0);f(g,v,C,"\u21DA","\\Lleftarrow",!0);f(g,v,C,"\u219E","\\twoheadleftarrow",!0);f(g,v,C,"\u21A2","\\leftarrowtail",!0);f(g,v,C,"\u21AB","\\looparrowleft",!0);f(g,v,C,"\u21CB","\\leftrightharpoons",!0);f(g,v,C,"\u21B6","\\curvearrowleft",!0);f(g,v,C,"\u21BA","\\circlearrowleft",!0);f(g,v,C,"\u21B0","\\Lsh",!0);f(g,v,C,"\u21C8","\\upuparrows",!0);f(g,v,C,"\u21BF","\\upharpoonleft",!0);f(g,v,C,"\u21C3","\\downharpoonleft",!0);f(g,x,C,"\u22B6","\\origof",!0);f(g,x,C,"\u22B7","\\imageof",!0);f(g,v,C,"\u22B8","\\multimap",!0);f(g,v,C,"\u21AD","\\leftrightsquigarrow",!0);f(g,v,C,"\u21C9","\\rightrightarrows",!0);f(g,v,C,"\u21C4","\\rightleftarrows",!0);f(g,v,C,"\u21A0","\\twoheadrightarrow",!0);f(g,v,C,"\u21A3","\\rightarrowtail",!0);f(g,v,C,"\u21AC","\\looparrowright",!0);f(g,v,C,"\u21B7","\\curvearrowright",!0);f(g,v,C,"\u21BB","\\circlearrowright",!0);f(g,v,C,"\u21B1","\\Rsh",!0);f(g,v,C,"\u21CA","\\downdownarrows",!0);f(g,v,C,"\u21BE","\\upharpoonright",!0);f(g,v,C,"\u21C2","\\downharpoonright",!0);f(g,v,C,"\u21DD","\\rightsquigarrow",!0);f(g,v,C,"\u21DD","\\leadsto");f(g,v,C,"\u21DB","\\Rrightarrow",!0);f(g,v,C,"\u21BE","\\restriction");f(g,x,A,"\u2018","`");f(g,x,A,"$","\\$");f(O,x,A,"$","\\$");f(O,x,A,"$","\\textdollar");f(g,x,A,"%","\\%");f(O,x,A,"%","\\%");f(g,x,A,"_","\\_");f(O,x,A,"_","\\_");f(O,x,A,"_","\\textunderscore");f(g,x,A,"\u2220","\\angle",!0);f(g,x,A,"\u221E","\\infty",!0);f(g,x,A,"\u2032","\\prime");f(g,x,A,"\u25B3","\\triangle");f(g,x,A,"\u0393","\\Gamma",!0);f(g,x,A,"\u0394","\\Delta",!0);f(g,x,A,"\u0398","\\Theta",!0);f(g,x,A,"\u039B","\\Lambda",!0);f(g,x,A,"\u039E","\\Xi",!0);f(g,x,A,"\u03A0","\\Pi",!0);f(g,x,A,"\u03A3","\\Sigma",!0);f(g,x,A,"\u03A5","\\Upsilon",!0);f(g,x,A,"\u03A6","\\Phi",!0);f(g,x,A,"\u03A8","\\Psi",!0);f(g,x,A,"\u03A9","\\Omega",!0);f(g,x,A,"A","\u0391");f(g,x,A,"B","\u0392");f(g,x,A,"E","\u0395");f(g,x,A,"Z","\u0396");f(g,x,A,"H","\u0397");f(g,x,A,"I","\u0399");f(g,x,A,"K","\u039A");f(g,x,A,"M","\u039C");f(g,x,A,"N","\u039D");f(g,x,A,"O","\u039F");f(g,x,A,"P","\u03A1");f(g,x,A,"T","\u03A4");f(g,x,A,"X","\u03A7");f(g,x,A,"\xAC","\\neg",!0);f(g,x,A,"\xAC","\\lnot");f(g,x,A,"\u22A4","\\top");f(g,x,A,"\u22A5","\\bot");f(g,x,A,"\u2205","\\emptyset");f(g,v,A,"\u2205","\\varnothing");f(g,x,ne,"\u03B1","\\alpha",!0);f(g,x,ne,"\u03B2","\\beta",!0);f(g,x,ne,"\u03B3","\\gamma",!0);f(g,x,ne,"\u03B4","\\delta",!0);f(g,x,ne,"\u03F5","\\epsilon",!0);f(g,x,ne,"\u03B6","\\zeta",!0);f(g,x,ne,"\u03B7","\\eta",!0);f(g,x,ne,"\u03B8","\\theta",!0);f(g,x,ne,"\u03B9","\\iota",!0);f(g,x,ne,"\u03BA","\\kappa",!0);f(g,x,ne,"\u03BB","\\lambda",!0);f(g,x,ne,"\u03BC","\\mu",!0);f(g,x,ne,"\u03BD","\\nu",!0);f(g,x,ne,"\u03BE","\\xi",!0);f(g,x,ne,"\u03BF","\\omicron",!0);f(g,x,ne,"\u03C0","\\pi",!0);f(g,x,ne,"\u03C1","\\rho",!0);f(g,x,ne,"\u03C3","\\sigma",!0);f(g,x,ne,"\u03C4","\\tau",!0);f(g,x,ne,"\u03C5","\\upsilon",!0);f(g,x,ne,"\u03D5","\\phi",!0);f(g,x,ne,"\u03C7","\\chi",!0);f(g,x,ne,"\u03C8","\\psi",!0);f(g,x,ne,"\u03C9","\\omega",!0);f(g,x,ne,"\u03B5","\\varepsilon",!0);f(g,x,ne,"\u03D1","\\vartheta",!0);f(g,x,ne,"\u03D6","\\varpi",!0);f(g,x,ne,"\u03F1","\\varrho",!0);f(g,x,ne,"\u03C2","\\varsigma",!0);f(g,x,ne,"\u03C6","\\varphi",!0);f(g,x,Z,"\u2217","*",!0);f(g,x,Z,"+","+");f(g,x,Z,"\u2212","-",!0);f(g,x,Z,"\u22C5","\\cdot",!0);f(g,x,Z,"\u2218","\\circ",!0);f(g,x,Z,"\xF7","\\div",!0);f(g,x,Z,"\xB1","\\pm",!0);f(g,x,Z,"\xD7","\\times",!0);f(g,x,Z,"\u2229","\\cap",!0);f(g,x,Z,"\u222A","\\cup",!0);f(g,x,Z,"\u2216","\\setminus",!0);f(g,x,Z,"\u2227","\\land");f(g,x,Z,"\u2228","\\lor");f(g,x,Z,"\u2227","\\wedge",!0);f(g,x,Z,"\u2228","\\vee",!0);f(g,x,A,"\u221A","\\surd");f(g,x,ln,"\u27E8","\\langle",!0);f(g,x,ln,"\u2223","\\lvert");f(g,x,ln,"\u2225","\\lVert");f(g,x,Ht,"?","?");f(g,x,Ht,"!","!");f(g,x,Ht,"\u27E9","\\rangle",!0);f(g,x,Ht,"\u2223","\\rvert");f(g,x,Ht,"\u2225","\\rVert");f(g,x,C,"=","=");f(g,x,C,":",":");f(g,x,C,"\u2248","\\approx",!0);f(g,x,C,"\u2245","\\cong",!0);f(g,x,C,"\u2265","\\ge");f(g,x,C,"\u2265","\\geq",!0);f(g,x,C,"\u2190","\\gets");f(g,x,C,">","\\gt",!0);f(g,x,C,"\u2208","\\in",!0);f(g,x,C,"\uE020","\\@not");f(g,x,C,"\u2282","\\subset",!0);f(g,x,C,"\u2283","\\supset",!0);f(g,x,C,"\u2286","\\subseteq",!0);f(g,x,C,"\u2287","\\supseteq",!0);f(g,v,C,"\u2288","\\nsubseteq",!0);f(g,v,C,"\u2289","\\nsupseteq",!0);f(g,x,C,"\u22A8","\\models");f(g,x,C,"\u2190","\\leftarrow",!0);f(g,x,C,"\u2264","\\le");f(g,x,C,"\u2264","\\leq",!0);f(g,x,C,"<","\\lt",!0);f(g,x,C,"\u2192","\\rightarrow",!0);f(g,x,C,"\u2192","\\to");f(g,v,C,"\u2271","\\ngeq",!0);f(g,v,C,"\u2270","\\nleq",!0);f(g,x,Ta,"\xA0","\\ ");f(g,x,Ta,"\xA0","\\space");f(g,x,Ta,"\xA0","\\nobreakspace");f(O,x,Ta,"\xA0","\\ ");f(O,x,Ta,"\xA0"," ");f(O,x,Ta,"\xA0","\\space");f(O,x,Ta,"\xA0","\\nobreakspace");f(g,x,Ta,null,"\\nobreak");f(g,x,Ta,null,"\\allowbreak");f(g,x,el,",",",");f(g,x,el,";",";");f(g,v,Z,"\u22BC","\\barwedge",!0);f(g,v,Z,"\u22BB","\\veebar",!0);f(g,x,Z,"\u2299","\\odot",!0);f(g,x,Z,"\u2295","\\oplus",!0);f(g,x,Z,"\u2297","\\otimes",!0);f(g,x,A,"\u2202","\\partial",!0);f(g,x,Z,"\u2298","\\oslash",!0);f(g,v,Z,"\u229A","\\circledcirc",!0);f(g,v,Z,"\u22A1","\\boxdot",!0);f(g,x,Z,"\u25B3","\\bigtriangleup");f(g,x,Z,"\u25BD","\\bigtriangledown");f(g,x,Z,"\u2020","\\dagger");f(g,x,Z,"\u22C4","\\diamond");f(g,x,Z,"\u22C6","\\star");f(g,x,Z,"\u25C3","\\triangleleft");f(g,x,Z,"\u25B9","\\triangleright");f(g,x,ln,"{","\\{");f(O,x,A,"{","\\{");f(O,x,A,"{","\\textbraceleft");f(g,x,Ht,"}","\\}");f(O,x,A,"}","\\}");f(O,x,A,"}","\\textbraceright");f(g,x,ln,"{","\\lbrace");f(g,x,Ht,"}","\\rbrace");f(g,x,ln,"[","\\lbrack",!0);f(O,x,A,"[","\\lbrack",!0);f(g,x,Ht,"]","\\rbrack",!0);f(O,x,A,"]","\\rbrack",!0);f(g,x,ln,"(","\\lparen",!0);f(g,x,Ht,")","\\rparen",!0);f(O,x,A,"<","\\textless",!0);f(O,x,A,">","\\textgreater",!0);f(g,x,ln,"\u230A","\\lfloor",!0);f(g,x,Ht,"\u230B","\\rfloor",!0);f(g,x,ln,"\u2308","\\lceil",!0);f(g,x,Ht,"\u2309","\\rceil",!0);f(g,x,A,"\\","\\backslash");f(g,x,A,"\u2223","|");f(g,x,A,"\u2223","\\vert");f(O,x,A,"|","\\textbar",!0);f(g,x,A,"\u2225","\\|");f(g,x,A,"\u2225","\\Vert");f(O,x,A,"\u2225","\\textbardbl");f(O,x,A,"~","\\textasciitilde");f(O,x,A,"\\","\\textbackslash");f(O,x,A,"^","\\textasciicircum");f(g,x,C,"\u2191","\\uparrow",!0);f(g,x,C,"\u21D1","\\Uparrow",!0);f(g,x,C,"\u2193","\\downarrow",!0);f(g,x,C,"\u21D3","\\Downarrow",!0);f(g,x,C,"\u2195","\\updownarrow",!0);f(g,x,C,"\u21D5","\\Updownarrow",!0);f(g,x,Ye,"\u2210","\\coprod");f(g,x,Ye,"\u22C1","\\bigvee");f(g,x,Ye,"\u22C0","\\bigwedge");f(g,x,Ye,"\u2A04","\\biguplus");f(g,x,Ye,"\u22C2","\\bigcap");f(g,x,Ye,"\u22C3","\\bigcup");f(g,x,Ye,"\u222B","\\int");f(g,x,Ye,"\u222B","\\intop");f(g,x,Ye,"\u222C","\\iint");f(g,x,Ye,"\u222D","\\iiint");f(g,x,Ye,"\u220F","\\prod");f(g,x,Ye,"\u2211","\\sum");f(g,x,Ye,"\u2A02","\\bigotimes");f(g,x,Ye,"\u2A01","\\bigoplus");f(g,x,Ye,"\u2A00","\\bigodot");f(g,x,Ye,"\u222E","\\oint");f(g,x,Ye,"\u222F","\\oiint");f(g,x,Ye,"\u2230","\\oiiint");f(g,x,Ye,"\u2A06","\\bigsqcup");f(g,x,Ye,"\u222B","\\smallint");f(O,x,Ss,"\u2026","\\textellipsis");f(g,x,Ss,"\u2026","\\mathellipsis");f(O,x,Ss,"\u2026","\\ldots",!0);f(g,x,Ss,"\u2026","\\ldots",!0);f(g,x,Ss,"\u22EF","\\@cdots",!0);f(g,x,Ss,"\u22F1","\\ddots",!0);f(g,x,A,"\u22EE","\\varvdots");f(O,x,A,"\u22EE","\\varvdots");f(g,x,Le,"\u02CA","\\acute");f(g,x,Le,"\u02CB","\\grave");f(g,x,Le,"\xA8","\\ddot");f(g,x,Le,"~","\\tilde");f(g,x,Le,"\u02C9","\\bar");f(g,x,Le,"\u02D8","\\breve");f(g,x,Le,"\u02C7","\\check");f(g,x,Le,"^","\\hat");f(g,x,Le,"\u20D7","\\vec");f(g,x,Le,"\u02D9","\\dot");f(g,x,Le,"\u02DA","\\mathring");f(g,x,ne,"\uE131","\\@imath");f(g,x,ne,"\uE237","\\@jmath");f(g,x,A,"\u0131","\u0131");f(g,x,A,"\u0237","\u0237");f(O,x,A,"\u0131","\\i",!0);f(O,x,A,"\u0237","\\j",!0);f(O,x,A,"\xDF","\\ss",!0);f(O,x,A,"\xE6","\\ae",!0);f(O,x,A,"\u0153","\\oe",!0);f(O,x,A,"\xF8","\\o",!0);f(O,x,A,"\xC6","\\AE",!0);f(O,x,A,"\u0152","\\OE",!0);f(O,x,A,"\xD8","\\O",!0);f(O,x,Le,"\u02CA","\\'");f(O,x,Le,"\u02CB","\\`");f(O,x,Le,"\u02C6","\\^");f(O,x,Le,"\u02DC","\\~");f(O,x,Le,"\u02C9","\\=");f(O,x,Le,"\u02D8","\\u");f(O,x,Le,"\u02D9","\\.");f(O,x,Le,"\xB8","\\c");f(O,x,Le,"\u02DA","\\r");f(O,x,Le,"\u02C7","\\v");f(O,x,Le,"\xA8",'\\"');f(O,x,Le,"\u02DD","\\H");f(O,x,Le,"\u25EF","\\textcircled");var Xk={"--":!0,"---":!0,"``":!0,"''":!0};f(O,x,A,"\u2013","--",!0);f(O,x,A,"\u2013","\\textendash");f(O,x,A,"\u2014","---",!0);f(O,x,A,"\u2014","\\textemdash");f(O,x,A,"\u2018","`",!0);f(O,x,A,"\u2018","\\textquoteleft");f(O,x,A,"\u2019","'",!0);f(O,x,A,"\u2019","\\textquoteright");f(O,x,A,"\u201C","``",!0);f(O,x,A,"\u201C","\\textquotedblleft");f(O,x,A,"\u201D","''",!0);f(O,x,A,"\u201D","\\textquotedblright");f(g,x,A,"\xB0","\\degree",!0);f(O,x,A,"\xB0","\\degree");f(O,x,A,"\xB0","\\textdegree",!0);f(g,x,A,"\xA3","\\pounds");f(g,x,A,"\xA3","\\mathsterling",!0);f(O,x,A,"\xA3","\\pounds");f(O,x,A,"\xA3","\\textsterling",!0);f(g,v,A,"\u2720","\\maltese");f(O,v,A,"\u2720","\\maltese");var bk='0123456789/@."';for(bu=0;bu{var n=t.charCodeAt(0),a=t.charCodeAt(1),r=(n-55296)*1024+(a-56320)+65536,i=e==="math"?0:1;if(119808<=r&&r<120484){var s=Math.floor((r-119808)/26);return[ku[s][2],ku[s][i]]}else if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[xk[o][2],xk[o][i]]}else{if(r===120485||r===120486)return[ku[0][2],ku[0][i]];if(1204860)return Pt(i,c,r,n,s.concat(u));if(l){var p,d;if(l==="boldsymbol"){var m=uS(i,r,n,s,a);p=m.fontName,d=[m.fontClass]}else o?(p=Xh[l].fontName,d=[l]):(p=_u(l,n.fontWeight,n.fontShape),d=[l,n.fontWeight,n.fontShape]);if(Lu(i,p,r).metrics)return Pt(i,p,r,n,s.concat(d));if(Xk.hasOwnProperty(i)&&p.slice(0,10)==="Typewriter"){for(var h=[],b=0;b{if(ur(t.classes)!==ur(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize||t.italic!==0&&t.hasClass("mathnormal"))return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var a of Object.keys(t.style))if(t.style[a]!==e.style[a])return!1;for(var r of Object.keys(e.style))if(t.style[r]!==e.style[r])return!1;return!0},Zk=t=>{for(var e=0;en&&(n=s.height),s.depth>a&&(a=s.depth),s.maxFontSize>r&&(r=s.maxFontSize)}e.height=n,e.depth=a,e.maxFontSize=r},D=function(e,n,a,r){var i=new pr(e,n,a,r);return pf(i),i},dr=(t,e,n,a)=>new pr(t,e,n,a),Cs=function(e,n,a){var r=D([e],[],n);return r.height=Math.max(a||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),r.style.borderBottomWidth=H(r.height),r.maxFontSize=1,r},dS=function(e,n,a,r){var i=new $s(e,n,a,r);return pf(i),i},Ma=function(e){var n=new cr(e);return pf(n),n},js=function(e,n){return e instanceof cr?D([],[e],n):e},mS=function(e){if(e.positionType==="individualShift"){for(var n=e.children,a=[n[0]],r=-n[0].shift-n[0].elem.depth,i=r,s=1;s{var n=D(["mspace"],[],e),a=qe(t,e);return n.style.marginRight=H(a),n},_u=function(e,n,a){var r="";switch(e){case"amsrm":r="AMS";break;case"textrm":r="Main";break;case"textsf":r="SansSerif";break;case"texttt":r="Typewriter";break;default:r=e}var i;return n==="textbf"&&a==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",r+"-"+i},Xh={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"}},Yk={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Qk=function(e,n){var[a,r,i]=Yk[e],s=new Yn(a),o=new Ln([s],{width:H(r),height:H(i),style:"width:"+H(r),viewBox:"0 0 "+1e3*r+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),l=dr(["overlay"],[o],n);return l.height=i,l.style.height=H(i),l.style.width=H(r),l},Pe={number:3,unit:"mu"},di={number:4,unit:"mu"},Sa={number:5,unit:"mu"},hS={mord:{mop:Pe,mbin:di,mrel:Sa,minner:Pe},mop:{mord:Pe,mop:Pe,mrel:Sa,minner:Pe},mbin:{mord:di,mop:di,mopen:di,minner:di},mrel:{mord:Sa,mop:Sa,mopen:Sa,minner:Sa},mopen:{},mclose:{mop:Pe,mbin:di,mrel:Sa,minner:Pe},mpunct:{mord:Pe,mop:Pe,mrel:Sa,mopen:Pe,mclose:Pe,mpunct:Pe,minner:Pe},minner:{mord:Pe,mop:Pe,mbin:di,mrel:Sa,mopen:Pe,mpunct:Pe,minner:Pe}},fS={mord:{mop:Pe},mop:{mord:Pe,mop:Pe},mbin:{},mrel:{},mopen:{},mclose:{mop:Pe},mpunct:{},minner:{mop:Pe}},e_={},Mu={},Nu={};function X(t){for(var{type:e,names:n,props:a,handler:r,htmlBuilder:i,mathmlBuilder:s}=t,o={type:e,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:a.allowedInMath===void 0?!0:a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:r},l=0;l{var y=b.classes[0],w=h.classes[0];y==="mbin"&&bS.has(w)?b.classes[0]="mord":w==="mbin"&&gS.has(y)&&(h.classes[0]="mord")},{node:p},d,m),Zh(i,(h,b)=>{var y,w,_=Yh(b),$=Yh(h),M=_&&$?h.hasClass("mtight")?(y=fS[_])==null?void 0:y[$]:(w=hS[_])==null?void 0:w[$]:null;if(M)return Jk(M,c)},{node:p},d,m),i},Zh=function(e,n,a,r,i){r&&e.push(r);for(var s=0;sd=>{e.splice(p+1,0,d),s++})(s)}r&&e.pop()},t_=function(e){return e instanceof cr||e instanceof $s||e instanceof pr&&e.hasClass("enclosing")?e:null},Jh=function(e,n){var a=t_(e);if(a){var r=a.children;if(r.length){if(n==="right")return Jh(r[r.length-1],"right");if(n==="left")return Jh(r[0],"left")}}return e},Yh=function(e,n){if(!e)return null;n&&(e=Jh(e,n));var a=e.classes[0];return xS[a]||null},Qo=function(e,n){var a=["nulldelimiter"].concat(e.baseSizingClasses());return D(n.concat(a))},je=function(e,n,a){if(!e)return D();if(Mu[e.type]){var r=Mu[e.type](e,n);if(a&&n.size!==a.size){r=D(n.sizingClasses(a),[r],n);var i=n.sizeMultiplier/a.sizeMultiplier;r.height*=i,r.depth*=i}return r}else throw new G("Got group of unknown type: '"+e.type+"'")};function vu(t,e){var n=D(["base"],t,e),a=D(["strut"]);return a.style.height=H(n.height+n.depth),n.depth&&(a.style.verticalAlign=H(-n.depth)),n.children.unshift(a),n}function Qh(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var a=st(t,e,"root"),r;a.length===2&&a[1].hasClass("tag")&&(r=a.pop());for(var i=[],s=[],o=0;o0&&(i.push(vu(s,e)),s=[]),i.push(a[o]));s.length>0&&i.push(vu(s,e));var c;n?(c=vu(st(n,e,!0),e),c.classes=["tag"],i.push(c)):r&&i.push(r);var u=D(["katex-html"],i);if(u.setAttribute("aria-hidden","true"),c){var p=c.children[0];p.style.height=H(u.height+u.depth),u.depth&&(p.style.verticalAlign=H(-u.depth))}return u}function n_(t){return new cr(t)}var P=class{constructor(e,n,a){this.type=e,this.attributes={},this.children=n||[],this.classes=a||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=ur(this.classes));for(var a=0;a0&&(e+=' class ="'+Nt(ur(this.classes))+'"'),e+=">";for(var a=0;a",e}toText(){return this.children.map(e=>e.toText()).join("")}},Ge=class{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Nt(this.toText())}toText(){return this.text}},Ru=class{constructor(e){this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",H(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},wS=new Set(["\\imath","\\jmath"]),kS=new Set(["mrow","mtable"]),$n=function(e,n,a){return Be[n][e]&&Be[n][e].replace&&e.charCodeAt(0)!==55349&&!(Xk.hasOwnProperty(e)&&a&&(a.fontFamily&&a.fontFamily.slice(4,6)==="tt"||a.font&&a.font.slice(4,6)==="tt"))&&(e=Be[n][e].replace),new Ge(e)},df=function(e){return e.length===1?e[0]:new P("mrow",e)},mf=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var a=n.font;if(!a||a==="mathnormal")return null;var r=e.mode;if(a==="mathit")return"italic";if(a==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(a==="mathbf")return"bold";if(a==="mathbb")return"double-struck";if(a==="mathsfit")return"sans-serif-italic";if(a==="mathfrak")return"fraktur";if(a==="mathscr"||a==="mathcal")return"script";if(a==="mathsf")return"sans-serif";if(a==="mathtt")return"monospace";var i=e.text;if(wS.has(i))return null;if(Be[r][i]){var s=Be[r][i].replace;s&&(i=s)}var o=Xh[a].fontName;return cf(i,o,r)?Xh[a].variant:null};function Ih(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Ge&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Ge&&n.text===","}else return!1}var cn=function(e,n,a){if(e.length===1){var r=Me(e[0],n);return a&&r instanceof P&&r.type==="mo"&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}for(var i=[],s,o=0;o=1&&(s.type==="mn"||Ih(s))){var c=l.children[0];c instanceof P&&c.type==="mn"&&(c.children=[...s.children,...c.children],i.pop())}else if(s.type==="mi"&&s.children.length===1){var u=s.children[0];if(u instanceof Ge&&u.text==="\u0338"&&(l.type==="mo"||l.type==="mi"||l.type==="mn")){var p=l.children[0];p instanceof Ge&&p.text.length>0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(l),s=l}return i},mr=function(e,n,a){return df(cn(e,n,a))},Me=function(e,n){if(!e)return new P("mrow");if(Nu[e.type]){var a=Nu[e.type](e,n);return a}else throw new G("Got group of unknown type: '"+e.type+"'")};function wk(t,e,n,a,r){var i=cn(t,n),s;i.length===1&&i[0]instanceof P&&kS.has(i[0].type)?s=i[0]:s=new P("mrow",i);var o=new P("annotation",[new Ge(e)]);o.setAttribute("encoding","application/x-tex");var l=new P("semantics",[s,o]),c=new P("math",[l]);c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&c.setAttribute("display","block");var u=r?"katex":"katex-mathml";return D([u],[c])}var _S=[[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]],kk=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],_k=function(e,n){return n.size<2?e:_S[e-1][n.size-1]},zu=class t{constructor(e){this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=kk[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={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(n,e),new t(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:_k(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:kk[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=_k(t.BASESIZE,e);return this.size===n&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=sS(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};zu.BASESIZE=6;var a_=function(e){return new zu({style:e.displayMode?pe.DISPLAY:pe.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},r_=function(e,n){if(n.displayMode){var a=["katex-display"];n.leqno&&a.push("leqno"),n.fleqn&&a.push("fleqn"),e=D(a,[e])}return e},vS=function(e,n,a){var r=a_(a),i;if(a.output==="mathml")return wk(e,n,r,a.displayMode,!0);if(a.output==="html"){var s=Qh(e,r);i=D(["katex"],[s])}else{var o=wk(e,n,r,a.displayMode,!1),l=Qh(e,r);i=D(["katex"],[o,l])}return r_(i,a)},$S=function(e,n,a){var r=a_(a),i=Qh(e,r),s=D(["katex"],[i]);return r_(s,a)},CS={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":"="},Fu=function(e){var n=new P("mo",[new Ge(CS[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},jS={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]},SS=new Set(["widehat","widecheck","widetilde","utilde"]),Pu=function(e,n){function a(){var o=4e5,l=e.label.slice(1);if(SS.has(l)){var c=e,u=c.base.type==="ordgroup"?c.base.body.length:1,p,d,m;if(u>5)l==="widehat"||l==="widecheck"?(p=420,o=2364,m=.42,d=l+"4"):(p=312,o=2340,m=.34,d="tilde4");else{var h=[1,1,2,2,3,3][u];l==="widehat"||l==="widecheck"?(o=[0,1062,2364,2364,2364][h],p=[0,239,300,360,420][h],m=[0,.24,.3,.3,.36,.42][h],d=l+h):(o=[0,600,1033,2339,2340][h],p=[0,260,286,306,312][h],m=[0,.26,.286,.3,.306,.34][h],d="tilde"+h)}var b=new Yn(d),y=new Ln([b],{width:"100%",height:H(m),viewBox:"0 0 "+o+" "+p,preserveAspectRatio:"none"});return{span:dr([],[y],n),minWidth:0,height:m}}else{var w=[],_=jS[l],[$,M,N]=_,E=N/1e3,I=$.length,F,L;if(I===1){var T=_[3];F=["hide-tail"],L=[T]}else if(I===2)F=["halfarrow-left","halfarrow-right"],L=["xMinYMin","xMaxYMin"];else if(I===3)F=["brace-left","brace-center","brace-right"],L=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+I+" children.");for(var ce=0;ce0&&(r.style.minWidth=H(i)),r},ES=function(e,n,a,r,i){var s,o=e.height+e.depth+a+r;if(/fbox|color|angl/.test(n)){if(s=D(["stretchy",n],[],i),n==="fbox"){var l=i.color&&i.getColor();l&&(s.style.borderColor=l)}}else{var c=[];/^[bx]cancel$/.test(n)&&c.push(new Yo({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&c.push(new Yo({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var u=new Ln(c,{width:"100%",height:H(o)});s=dr([],[u],i)}return s.height=o,s.style.height=H(o),s};function fe(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function qu(t){var e=Gu(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Gu(t){return t&&(t.type==="atom"||lS.hasOwnProperty(t.type))?t:null}var i_=t=>{if(t instanceof Gt)return t;if(rS(t)&&t.children.length===1)return i_(t.children[0])},hf=(t,e)=>{var n,a,r;t&&t.type==="supsub"?(a=fe(t.base,"accent"),n=a.base,t.base=n,r=aS(je(t,e)),t.base=a):(a=fe(t,"accent"),n=a.base);var i=je(n,e.havingCrampedStyle()),s=a.isShifty&&Aa(n),o=0;if(s){var l,c;o=(l=(c=i_(i))==null?void 0:c.skew)!=null?l:0}var u=a.label==="\\c",p=u?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),d;if(a.isStretchy)d=Pu(a,e),d=Ce({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:d,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+H(2*o)+")",marginLeft:H(2*o)}:void 0}]});else{var m,h;a.label==="\\vec"?(m=Qk("vec",e),h=Yk.vec[1]):(m=Du({type:"textord",mode:a.mode,text:a.label},e,"textord"),m=nS(m),m.italic=0,h=m.width,u&&(p+=m.depth)),d=D(["accent-body"],[m]);var b=a.label==="\\textcircled";b&&(d.classes.push("accent-full"),p=i.height);var y=o;b||(y-=h/2),d.style.left=H(y),a.label==="\\textcircled"&&(d.style.top=".2em"),d=Ce({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-p},{type:"elem",elem:d}]})}var w=D(["mord","accent"],[d],e);return r?(r.children[0]=w,r.height=Math.max(w.height,r.height),r.classes[0]="mord",r):w},s_=(t,e)=>{var n=t.isStretchy?Fu(t.label):new P("mo",[$n(t.label,t.mode)]),a=new P("mover",[Me(t.base,e),n]);return a.setAttribute("accent","true"),a},AS=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));X({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:(t,e)=>{var n=Iu(e[0]),a=!AS.test(t.funcName),r=!a||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:r,base:n}},htmlBuilder:hf,mathmlBuilder:s_});X({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],a=t.parser.mode;return a==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:hf,mathmlBuilder:s_});X({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0];return{type:"accentUnder",mode:n.mode,label:a,base:r}},htmlBuilder:(t,e)=>{var n=je(t.base,e),a=Pu(t,e),r=t.label==="\\utilde"?.12:0,i=Ce({positionType:"top",positionData:n.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:r},{type:"elem",elem:n}]});return D(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Fu(t.label),a=new P("munder",[Me(t.base,e),n]);return a.setAttribute("accentunder","true"),a}});var $u=t=>{var e=new P("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};X({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(t,e,n){var{parser:a,funcName:r}=t;return{type:"xArrow",mode:a.mode,label:r,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,a=e.havingStyle(n.sup()),r=js(je(t.body,a,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";r.classes.push(i+"-arrow-pad");var s;t.below&&(a=e.havingStyle(n.sub()),s=js(je(t.below,a,e),e),s.classes.push(i+"-arrow-pad"));var o=Pu(t,e),l=-e.fontMetrics().axisHeight+.5*o.height,c=-e.fontMetrics().axisHeight-.5*o.height-.111;(r.depth>.25||t.label==="\\xleftequilibrium")&&(c-=r.depth);var u;if(s){var p=-e.fontMetrics().axisHeight+s.height+.5*o.height+.111;u=Ce({positionType:"individualShift",children:[{type:"elem",elem:r,shift:c},{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:p}]})}else u=Ce({positionType:"individualShift",children:[{type:"elem",elem:r,shift:c},{type:"elem",elem:o,shift:l}]});return u.children[0].children[0].children[1].classes.push("svg-align"),D(["mrel","x-arrow"],[u],e)},mathmlBuilder(t,e){var n=Fu(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var a;if(t.body){var r=$u(Me(t.body,e));if(t.below){var i=$u(Me(t.below,e));a=new P("munderover",[n,i,r])}else a=new P("mover",[n,r])}else if(t.below){var s=$u(Me(t.below,e));a=new P("munder",[n,s])}else a=$u(),a=new P("mover",[n,a]);return a}});function o_(t,e){var n=st(t.body,e,!0);return D([t.mclass],n,e)}function l_(t,e){var n,a=cn(t.body,e);return t.mclass==="minner"?n=new P("mpadded",a):t.mclass==="mord"?t.isCharacterBox?(n=a[0],n.type="mi"):n=new P("mi",a):(t.isCharacterBox?(n=a[0],n.type="mo"):n=new P("mo",a),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}X({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+a.slice(5),body:Je(r),isCharacterBox:Aa(r)}},htmlBuilder:o_,mathmlBuilder:l_});var Hu=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};X({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Hu(e[0]),body:Je(e[1]),isCharacterBox:Aa(e[1])}}});X({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:a}=t,r=e[1],i=e[0],s;a!=="\\stackrel"?s=Hu(r):s="mrel";var o={type:"op",mode:r.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:a!=="\\stackrel",body:Je(r)},l={type:"supsub",mode:i.mode,base:o,sup:a==="\\underset"?null:i,sub:a==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:s,body:[l],isCharacterBox:Aa(l)}},htmlBuilder:o_,mathmlBuilder:l_});X({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Hu(e[0]),body:Je(e[0])}},htmlBuilder(t,e){var n=st(t.body,e,!0),a=D([t.mclass],n,e);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(t,e){var n=cn(t.body,e),a=new P("mstyle",n);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var TS={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},vk=()=>({type:"styling",body:[],mode:"math",style:"display"}),$k=t=>t.type==="textord"&&t.text==="@",MS=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function NS(t,e,n){var a=TS[t];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(a,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var r=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:a,mode:"math",family:"rel"},s=n.callFunction("\\Big",[i],[]),o=n.callFunction("\\\\cdright",[e[1]],[]),l={type:"ordgroup",mode:"math",body:[r,s,o]};return n.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var c={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[c],[])}default:return{type:"textord",text:" ",mode:"math"}}}function IS(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new G("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var a=[],r=[a],i=0;iAV".includes(c))for(var p=0;p<2;p++){for(var d=!0,m=l+1;mAV=|." after @',s[l]);var h=NS(c,u,t),b={type:"styling",body:[h],mode:"math",style:"display"};a.push(b),o=vk()}i%2===0?a.push(o):a.shift(),a=[],r.push(a)}t.gullet.endGroup(),t.gullet.endGroup();var y=new Array(r[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:r,arraystretch:1,addJot:!0,rowGaps:[null],cols:y,colSeparationType:"CD",hLinesBeforeRow:new Array(r.length+1).fill([])}}X({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:a}=t;return{type:"cdlabel",mode:n.mode,side:a.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),a=js(je(t.label,n,e),e);return a.classes.push("cd-label-"+t.side),a.style.bottom=H(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(t,e){var n=new P("mrow",[Me(t.label,e)]);return n=new P("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new P("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});X({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=js(je(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new P("mrow",[Me(t.fragment,e)])}});X({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,a=fe(e[0],"ordgroup"),r=a.body,i="",s=0;s=1114111)throw new G("\\@char with invalid code point "+i);return l<=65535?c=String.fromCharCode(l):(l-=65536,c=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:n.mode,text:c}}});var c_=(t,e)=>{var n=st(t.body,e.withColor(t.color),!1);return Ma(n)},u_=(t,e)=>{var n=cn(t.body,e.withColor(t.color)),a=new P("mstyle",n);return a.setAttribute("mathcolor",t.color),a};X({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,a=fe(e[0],"color-token").color,r=e[1];return{type:"color",mode:n.mode,color:a,body:Je(r)}},htmlBuilder:c_,mathmlBuilder:u_});X({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:a}=t,r=fe(e[0],"color-token").color;n.gullet.macros.set("\\current@color",r);var i=n.parseExpression(!0,a);return{type:"color",mode:n.mode,color:r,body:i}},htmlBuilder:c_,mathmlBuilder:u_});X({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:a}=t,r=a.gullet.future().text==="["?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:r&&fe(r,"size").value}},htmlBuilder(t,e){var n=D(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=H(qe(t.size,e)))),n},mathmlBuilder(t,e){var n=new P("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",H(qe(t.size,e)))),n}});var ef={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},p_=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new G("Expected a control sequence",t);return e},RS=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},d_=(t,e,n,a)=>{var r=t.gullet.macros.get(n.text);r==null&&(n.noexpand=!0,r={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,r,a)};X({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var a=e.fetch();if(ef[a.text])return(n==="\\global"||n==="\\\\globallong")&&(a.text=ef[a.text]),fe(e.parseFunction(),"internal");throw new G("Invalid token after macro prefix",a)}});X({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,a=e.gullet.popToken(),r=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new G("Expected a control sequence",a);for(var i=0,s,o=[[]];e.gullet.future().text!=="{";)if(a=e.gullet.popToken(),a.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),o[i].push("{");break}if(a=e.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new G('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==i+1)throw new G('Argument number "'+a.text+'" out of order');i++,o.push([])}else{if(a.text==="EOF")throw new G("Expected a macro definition");o[i].push(a.text)}var{tokens:l}=e.gullet.consumeArg();return s&&l.unshift(s),(n==="\\edef"||n==="\\xdef")&&(l=e.gullet.expandTokens(l),l.reverse()),e.gullet.macros.set(r,{tokens:l,numArgs:i,delimiters:o},n===ef[n]),{type:"internal",mode:e.mode}}});X({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,a=p_(e.gullet.popToken());e.gullet.consumeSpaces();var r=RS(e);return d_(e,a,r,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});X({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,a=p_(e.gullet.popToken()),r=e.gullet.popToken(),i=e.gullet.popToken();return d_(e,a,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(r),{type:"internal",mode:e.mode}}});var Ko=function(e,n,a){var r=Be.math[e]&&Be.math[e].replace,i=cf(r||e,n,a);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},ff=function(e,n,a,r){var i=a.havingBaseStyle(n),s=D(r.concat(i.sizingClasses(a)),[e],a),o=i.sizeMultiplier/a.sizeMultiplier;return s.height*=o,s.depth*=o,s.maxFontSize=i.sizeMultiplier,s},m_=function(e,n,a){var r=n.havingBaseStyle(a),i=(1-n.sizeMultiplier/r.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=H(i),e.height-=i,e.depth+=i},zS=function(e,n,a,r,i,s){var o=Pt(e,"Main-Regular",i,r),l=ff(o,n,r,s);return a&&m_(l,r,n),l},OS=function(e,n,a,r){return Pt(e,"Size"+n+"-Regular",a,r)},h_=function(e,n,a,r,i,s){var o=OS(e,n,i,r),l=ff(D(["delimsizing","size"+n],[o],r),pe.TEXT,r,s);return a&&m_(l,r,pe.TEXT),l},Rh=function(e,n,a){var r;n==="Size1-Regular"?r="delim-size1":r="delim-size4";var i=D(["delimsizinginner",r],[D([],[Pt(e,n,a)])]);return{type:"elem",elem:i}},zh=function(e,n,a){var r=Jn["Size4-Regular"][e.charCodeAt(0)]?Jn["Size4-Regular"][e.charCodeAt(0)][4]:Jn["Size1-Regular"][e.charCodeAt(0)][4],i=new Yn("inner",Jj(e,Math.round(1e3*n))),s=new Ln([i],{width:H(r),height:H(n),style:"width:"+H(r),viewBox:"0 0 "+1e3*r+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),o=dr([],[s],a);return o.height=n,o.style.height=H(n),o.style.width=H(r),{type:"elem",elem:o}},tf=.008,Cu={type:"kern",size:-1*tf},BS=new Set(["|","\\lvert","\\rvert","\\vert"]),LS=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),f_=function(e,n,a,r,i,s){var o,l,c,u,p="",d=0;o=c=u=e,l=null;var m="Size1-Regular";e==="\\uparrow"?c=u="\u23D0":e==="\\Uparrow"?c=u="\u2016":e==="\\downarrow"?o=c="\u23D0":e==="\\Downarrow"?o=c="\u2016":e==="\\updownarrow"?(o="\\uparrow",c="\u23D0",u="\\downarrow"):e==="\\Updownarrow"?(o="\\Uparrow",c="\u2016",u="\\Downarrow"):BS.has(e)?(c="\u2223",p="vert",d=333):LS.has(e)?(c="\u2225",p="doublevert",d=556):e==="["||e==="\\lbrack"?(o="\u23A1",c="\u23A2",u="\u23A3",m="Size4-Regular",p="lbrack",d=667):e==="]"||e==="\\rbrack"?(o="\u23A4",c="\u23A5",u="\u23A6",m="Size4-Regular",p="rbrack",d=667):e==="\\lfloor"||e==="\u230A"?(c=o="\u23A2",u="\u23A3",m="Size4-Regular",p="lfloor",d=667):e==="\\lceil"||e==="\u2308"?(o="\u23A1",c=u="\u23A2",m="Size4-Regular",p="lceil",d=667):e==="\\rfloor"||e==="\u230B"?(c=o="\u23A5",u="\u23A6",m="Size4-Regular",p="rfloor",d=667):e==="\\rceil"||e==="\u2309"?(o="\u23A4",c=u="\u23A5",m="Size4-Regular",p="rceil",d=667):e==="("||e==="\\lparen"?(o="\u239B",c="\u239C",u="\u239D",m="Size4-Regular",p="lparen",d=875):e===")"||e==="\\rparen"?(o="\u239E",c="\u239F",u="\u23A0",m="Size4-Regular",p="rparen",d=875):e==="\\{"||e==="\\lbrace"?(o="\u23A7",l="\u23A8",u="\u23A9",c="\u23AA",m="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(o="\u23AB",l="\u23AC",u="\u23AD",c="\u23AA",m="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(o="\u23A7",u="\u23A9",c="\u23AA",m="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(o="\u23AB",u="\u23AD",c="\u23AA",m="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(o="\u23A7",u="\u23AD",c="\u23AA",m="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(o="\u23AB",u="\u23A9",c="\u23AA",m="Size4-Regular");var h=Ko(o,m,i),b=h.height+h.depth,y=Ko(c,m,i),w=y.height+y.depth,_=Ko(u,m,i),$=_.height+_.depth,M=0,N=1;if(l!==null){var E=Ko(l,m,i);M=E.height+E.depth,N=2}var I=b+$+M,F=Math.max(0,Math.ceil((n-I)/(N*w))),L=I+F*N*w,T=r.fontMetrics().axisHeight;a&&(T*=r.sizeMultiplier);var ce=L/2-T,Y=[];if(p.length>0){var K=L-b-$,J=Math.round(L*1e3),ee=Yj(p,Math.round(K*1e3)),_e=new Yn(p,ee),Ie=H(d/1e3),ct=H(J/1e3),Ut=new Ln([_e],{width:Ie,height:ct,viewBox:"0 0 "+d+" "+J}),j=dr([],[Ut],r);j.height=J/1e3,j.style.width=Ie,j.style.height=ct,Y.push({type:"elem",elem:j})}else{if(Y.push(Rh(u,m,i)),Y.push(Cu),l===null){var Ve=L-b-$+2*tf;Y.push(zh(c,Ve,r))}else{var zt=(L-b-$-M)/2+2*tf;Y.push(zh(c,zt,r)),Y.push(Cu),Y.push(Rh(l,m,i)),Y.push(Cu),Y.push(zh(c,zt,r))}Y.push(Cu),Y.push(Rh(o,m,i))}var S=r.havingBaseStyle(pe.TEXT),ut=Ce({positionType:"bottom",positionData:ce,children:Y});return ff(D(["delimsizing","mult"],[ut],S),pe.TEXT,r,s)},Oh=80,Bh=.08,Lh=function(e,n,a,r,i){var s=Zj(e,r,a),o=new Yn(e,s),l=new Ln([o],{width:"400em",height:H(n),viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return dr(["hide-tail"],[l],i)},DS=function(e,n){var a=n.havingBaseSizing(),r=w_("\\surd",e*a.sizeMultiplier,x_,a),i=a.sizeMultiplier,s=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),o,l=0,c=0,u=0,p;return r.type==="small"?(u=1e3+1e3*s+Oh,e<1?i=1:e<1.4&&(i=.7),l=(1+s+Bh)/i,c=(1+s)/i,o=Lh("sqrtMain",l,u,s,n),o.style.minWidth="0.853em",p=.833/i):r.type==="large"?(u=(1e3+Oh)*Xo[r.size],c=(Xo[r.size]+s)/i,l=(Xo[r.size]+s+Bh)/i,o=Lh("sqrtSize"+r.size,l,u,s,n),o.style.minWidth="1.02em",p=1/i):(l=e+s+Bh,c=e+s,u=Math.floor(1e3*e+s)+Oh,o=Lh("sqrtTall",l,u,s,n),o.style.minWidth="0.742em",p=1.056),o.height=c,o.style.height=H(l),{span:o,advanceWidth:p,ruleWidth:(n.fontMetrics().sqrtRuleThickness+s)*i}},g_=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"]),FS=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"]),b_=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),Xo=[0,1.2,1.8,2.4,3],y_=function(e,n,a,r,i){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),g_.has(e)||b_.has(e))return h_(e,n,!1,a,r,i);if(FS.has(e))return f_(e,Xo[n],!1,a,r,i);throw new G("Illegal delimiter: '"+e+"'")},PS=[{type:"small",style:pe.SCRIPTSCRIPT},{type:"small",style:pe.SCRIPT},{type:"small",style:pe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],qS=[{type:"small",style:pe.SCRIPTSCRIPT},{type:"small",style:pe.SCRIPT},{type:"small",style:pe.TEXT},{type:"stack"}],x_=[{type:"small",style:pe.SCRIPTSCRIPT},{type:"small",style:pe.SCRIPT},{type:"small",style:pe.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],GS=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";var n=e.type;throw new Error("Add support for delim type '"+n+"' here.")},w_=function(e,n,a,r){for(var i=Math.min(2,3-r.style.size),s=i;sn)return o}return a[a.length-1]},nf=function(e,n,a,r,i,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var o;b_.has(e)?o=PS:g_.has(e)?o=x_:o=qS;var l=w_(e,n,o,r);return l.type==="small"?zS(e,l.style,a,r,i,s):l.type==="large"?h_(e,l.size,a,r,i,s):f_(e,n,a,r,i,s)},Dh=function(e,n,a,r,i,s){var o=r.fontMetrics().axisHeight*r.sizeMultiplier,l=901,c=5/r.fontMetrics().ptPerEm,u=Math.max(n-o,a+o),p=Math.max(u/500*l,2*u-c);return nf(e,p,!0,r,i,s)},Ck={"\\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}},HS=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","."]);function Vu(t,e){var n=Gu(t);if(n&&HS.has(n.text))return n;throw n?new G("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new G("Invalid delimiter type '"+t.type+"'",t)}X({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:(t,e)=>{var n=Vu(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:Ck[t.funcName].size,mclass:Ck[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?D([t.mclass]):y_(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push($n(t.delim,t.mode));var n=new P("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var a=H(Xo[t.size]);return n.setAttribute("minsize",a),n.setAttribute("maxsize",a),n}});function jk(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}X({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new G("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Vu(e[0],t).text,color:n}}});X({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Vu(e[0],t),a=t.parser;++a.leftrightDepth;var r=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=fe(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:r,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{jk(t);for(var n=st(t.body,e,!0,["mopen","mclose"]),a=0,r=0,i=!1,s=0;s{jk(t);var n=cn(t.body,e);if(t.left!=="."){var a=new P("mo",[$n(t.left,t.mode)]);a.setAttribute("fence","true"),n.unshift(a)}if(t.right!=="."){var r=new P("mo",[$n(t.right,t.mode)]);r.setAttribute("fence","true"),t.rightColor&&r.setAttribute("mathcolor",t.rightColor),n.push(r)}return df(n)}});X({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Vu(e[0],t);if(!t.parser.leftrightDepth)throw new G("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=Qo(e,[]);else{n=y_(t.delim,1,e,t.mode,[]);var a={delim:t.delim,options:e};n.isMiddle=a}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?$n("|","text"):$n(t.delim,t.mode),a=new P("mo",[n]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Wu=(t,e)=>{var n=js(je(t.body,e),e),a=t.label.slice(1),r=e.sizeMultiplier,i,s=0,o=Aa(t.body);if(a==="sout")i=D(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/r,s=-.5*e.fontMetrics().xHeight;else if(a==="phase"){var l=qe({number:.6,unit:"pt"},e),c=qe({number:.35,unit:"ex"},e),u=e.havingBaseSizing();r=r/u.sizeMultiplier;var p=n.height+n.depth+l+c;n.style.paddingLeft=H(p/2+l);var d=Math.floor(1e3*p*r),m=Kj(d),h=new Ln([new Yn("phase",m)],{width:"400em",height:H(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});i=dr(["hide-tail"],[h],e),i.style.height=H(p),s=n.depth+l+c}else{/cancel/.test(a)?o||n.classes.push("cancel-pad"):a==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var b=0,y=0,w=0;/box/.test(a)?(w=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),b=e.fontMetrics().fboxsep+(a==="colorbox"?0:w),y=b):a==="angl"?(w=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),b=4*w,y=Math.max(0,.25-n.depth)):(b=o?.2:0,y=b),i=ES(n,a,b,y,e),/fbox|boxed|fcolorbox/.test(a)?(i.style.borderStyle="solid",i.style.borderWidth=H(w)):a==="angl"&&w!==.049&&(i.style.borderTopWidth=H(w),i.style.borderRightWidth=H(w)),s=n.depth+y,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var _;if(t.backgroundColor)_=Ce({positionType:"individualShift",children:[{type:"elem",elem:i,shift:s},{type:"elem",elem:n,shift:0}]});else{var $=/cancel|phase/.test(a)?["svg-align"]:[];_=Ce({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:s,wrapperClasses:$}]})}return/cancel/.test(a)&&(_.height=n.height,_.depth=n.depth),/cancel/.test(a)&&!o?D(["mord","cancel-lap"],[_],e):D(["mord"],[_],e)},Uu=(t,e)=>{var n=0,a=new P(t.label.includes("colorbox")?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*n+"pt"),a.setAttribute("height","+"+2*n+"pt"),a.setAttribute("lspace",n+"pt"),a.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var r=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+H(r)+" solid "+t.borderColor)}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};X({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:a,funcName:r}=t,i=fe(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:a.mode,label:r,backgroundColor:i,body:s}},htmlBuilder:Wu,mathmlBuilder:Uu});X({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:a,funcName:r}=t,i=fe(e[0],"color-token").color,s=fe(e[1],"color-token").color,o=e[2];return{type:"enclose",mode:a.mode,label:r,backgroundColor:s,borderColor:i,body:o}},htmlBuilder:Wu,mathmlBuilder:Uu});X({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});X({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];return{type:"enclose",mode:n.mode,label:a,body:r}},htmlBuilder:Wu,mathmlBuilder:Uu});X({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n,funcName:a}=t;n.mode==="math"&&n.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var r=e[0];return{type:"enclose",mode:n.mode,label:a,body:r}},htmlBuilder:Wu,mathmlBuilder:Uu});X({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var k_={};function Qn(t){for(var{type:e,names:n,props:a,handler:r,htmlBuilder:i,mathmlBuilder:s}=t,o={type:e,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:r},l=0;l{var e=t.parser.settings;if(!e.displayMode)throw new G("{"+t.envName+"} can be used only in display mode.")},VS=new Set(["gather","gather*"]);function gf(t){if(!t.includes("ed"))return!t.includes("*")}function hr(t,e,n){var{hskipBeforeAndAfter:a,addJot:r,cols:i,arraystretch:s,colSeparationType:o,autoTag:l,singleRow:c,emptySingleRow:u,maxNumCols:p,leqno:d}=e;if(t.gullet.beginGroup(),c||t.gullet.macros.set("\\cr","\\\\\\relax"),!s){var m=t.gullet.expandMacroAsText("\\arraystretch");if(m==null)s=1;else if(s=parseFloat(m),!s||s<0)throw new G("Invalid \\arraystretch: "+m)}t.gullet.beginGroup();var h=[],b=[h],y=[],w=[],_=l!=null?[]:void 0;function $(){l&&t.gullet.macros.set("\\@eqnsw","1",!0)}function M(){_&&(t.gullet.macros.get("\\df@tag")?(_.push(t.subparse([new on("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):_.push(!!l&&t.gullet.macros.get("\\@eqnsw")==="1"))}for($(),w.push(Sk(t));;){var N=t.parseExpression(!1,c?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup();var E={type:"ordgroup",mode:t.mode,body:N};n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),h.push(E);var I=t.fetch().text;if(I==="&"){if(p&&h.length===p){if(c||o)throw new G("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(I==="\\end"){M(),h.length===1&&E.type==="styling"&&E.body.length===1&&E.body[0].type==="ordgroup"&&E.body[0].body.length===0&&(b.length>1||!u)&&b.pop(),w.length0&&($+=.25),c.push({pos:$,isDashed:se[ge]})}for(M(s[0]),a=0;a0&&(ce+=_,Ise))for(a=0;a=o)){var fn=void 0;if(r>0||e.hskipBeforeAndAfter){var gn,Hn;fn=(gn=(Hn=S)==null?void 0:Hn.pregap)!=null?gn:d,fn!==0&&(ee=D(["arraycolsep"],[]),ee.style.width=H(fn),J.push(ee))}var pa=[];for(a=0;a0){for(var wd=Cs("hline",n,u),kd=Cs("hdashline",n,u),ao=[{type:"elem",elem:Nr,shift:0}];c.length>0;){var ac=c.pop(),rc=ac.pos-Y;ac.isDashed?ao.push({type:"elem",elem:kd,shift:rc}):ao.push({type:"elem",elem:wd,shift:rc})}Nr=Ce({positionType:"individualShift",children:ao})}if(Ie.length===0)return D(["mord"],[Nr],n);var R=Ce({positionType:"individualShift",children:Ie}),U=D(["tag"],[R],n);return Ma([Nr,U])},WS={c:"center ",l:"left ",r:"right "},ta=function(e,n){for(var a=[],r=new P("mtd",[],["mtr-glue"]),i=new P("mtd",[],["mml-eqn-num"]),s=0;s0){var h=e.cols,b="",y=!1,w=0,_=h.length;h[0].type==="separator"&&(d+="top ",w=1),h[h.length-1].type==="separator"&&(d+="bottom ",_-=1);for(var $=w;$<_;$++){var M=h[$];M.type==="align"?(m+=WS[M.align],y&&(b+="none "),y=!0):M.type==="separator"&&y&&(b+=M.separator==="|"?"solid ":"dashed ",y=!1)}u.setAttribute("columnalign",m.trim()),/[sd]/.test(b)&&u.setAttribute("columnlines",b.trim())}if(e.colSeparationType==="align"){for(var N=e.cols||[],E="",I=1;I0?"left ":"",d+=L[L.length-1].length>0?"right ":"";for(var T=1;T0&&m&&(y=1),a[h]={type:"align",align:b,pregap:y,postgap:0}}return s.colSeparationType=m?"align":"alignat",s};Qn({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Gu(e[0]),a=n?[e[0]]:fe(e[0],"ordgroup").body,r=a.map(function(s){var o=qu(s),l=o.text;if("lcr".includes(l))return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new G("Unknown column alignment: "+l,s)}),i={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return hr(t.parser,i,bf(t.envName))},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var r=t.parser;if(r.consumeSpaces(),r.fetch().text==="["){if(r.consume(),r.consumeSpaces(),n=r.fetch().text,!"lcr".includes(n))throw new G("Expected l or c or r",r.nextToken);r.consume(),r.consumeSpaces(),r.expect("]"),r.consume(),a.cols=[{type:"align",align:n}]}}var i=hr(t.parser,a,bf(t.envName)),s=Math.max(0,...i.body.map(o=>o.length));return i.cols=new Array(s).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=hr(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Gu(e[0]),a=n?[e[0]]:fe(e[0],"ordgroup").body,r=a.map(function(o){var l=qu(o),c=l.text;if("lc".includes(c))return{type:"align",align:c};throw new G("Unknown column alignment: "+c,o)});if(r.length>1)throw new G("{subarray} can contain only one column");var i={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5},s=hr(t.parser,i,"script");if(s.body.length>0&&s.body[0].length>1)throw new G("{subarray} can contain only one column");return s},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=hr(t.parser,e,bf(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.includes("r")?".":"\\{",right:t.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:v_,htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){VS.has(t.envName)&&Ku(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:gf(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return hr(t.parser,e,"display")},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:v_,htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Ku(t);var e={autoTag:gf(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return hr(t.parser,e,"display")},htmlBuilder:ea,mathmlBuilder:ta});Qn({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Ku(t),IS(t.parser)},htmlBuilder:ea,mathmlBuilder:ta});k("\\nonumber","\\gdef\\@eqnsw{0}");k("\\notag","\\nonumber");X({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new G(t.funcName+" valid only within array environment")}});var Ek=k_;X({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];if(r.type!=="ordgroup")throw new G("Invalid environment name",r);for(var i="",s=0;s{var n=t.font,a=e.withFont(n);return je(t.body,a)},C_=(t,e)=>{var n=t.font,a=e.withFont(n);return Me(t.body,a)},Ak={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};X({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=Iu(e[0]),i=a;return i in Ak&&(i=Ak[i]),{type:"font",mode:n.mode,font:i.slice(1),body:r}},htmlBuilder:$_,mathmlBuilder:C_});X({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"mclass",mode:n.mode,mclass:Hu(a),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:a}],isCharacterBox:Aa(a)}}});X({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:a,breakOnTokenText:r}=t,{mode:i}=n,s=n.parseExpression(!0,r),o="math"+a.slice(1);return{type:"font",mode:i,font:o,body:{type:"ordgroup",mode:n.mode,body:s}}},htmlBuilder:$_,mathmlBuilder:C_});var US=(t,e)=>{var n=e.style,a=n.fracNum(),r=n.fracDen(),i;i=e.havingStyle(a);var s=je(t.numer,i,e);if(t.continued){var o=8.5/e.fontMetrics().ptPerEm,l=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?h=3*d:h=7*d,b=e.fontMetrics().denom1):(p>0?(m=e.fontMetrics().num2,h=d):(m=e.fontMetrics().num3,h=3*d),b=e.fontMetrics().denom2);var y;if(u){var _=e.fontMetrics().axisHeight;m-s.depth-(_+.5*p){var n=new P("mfrac",[Me(t.numer,e),Me(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var a=qe(t.barSize,e);n.setAttribute("linethickness",H(a))}if(t.leftDelim!=null||t.rightDelim!=null){var r=[];if(t.leftDelim!=null){var i=new P("mo",[new Ge(t.leftDelim.replace("\\",""))]);i.setAttribute("fence","true"),r.push(i)}if(r.push(n),t.rightDelim!=null){var s=new P("mo",[new Ge(t.rightDelim.replace("\\",""))]);s.setAttribute("fence","true"),r.push(s)}return df(r)}return n},j_=(t,e)=>{if(!e)return t;var n={type:"styling",mode:t.mode,style:e,body:[t]};return n};X({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0],i=e[1],s,o=null,l=null;switch(a){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,o="(",l=")";break;case"\\\\bracefrac":s=!1,o="\\{",l="\\}";break;case"\\\\brackfrac":s=!1,o="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}var c=a==="\\cfrac",u=null;return c||a.startsWith("\\d")?u="display":a.startsWith("\\t")&&(u="text"),j_({type:"genfrac",mode:n.mode,numer:r,denom:i,continued:c,hasBarLine:s,leftDelim:o,rightDelim:l,barSize:null},u)},htmlBuilder:US,mathmlBuilder:KS});X({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:a}=t,r;switch(n){case"\\over":r="\\frac";break;case"\\choose":r="\\binom";break;case"\\atop":r="\\\\atopfrac";break;case"\\brace":r="\\\\bracefrac";break;case"\\brack":r="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:r,token:a}}});var Tk=["display","text","script","scriptscript"],Mk=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};X({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,a=e[4],r=e[5],i=Iu(e[0]),s=i.type==="atom"&&i.family==="open"?Mk(i.text):null,o=Iu(e[1]),l=o.type==="atom"&&o.family==="close"?Mk(o.text):null,c=fe(e[2],"size"),u,p=null;c.isBlank?u=!0:(p=c.value,u=p.number>0);var d=null,m=e[3];if(m.type==="ordgroup"){if(m.body.length>0){var h=fe(m.body[0],"textord");d=Tk[Number(h.text)]}}else m=fe(m,"textord"),d=Tk[Number(m.text)];return j_({type:"genfrac",mode:n.mode,numer:a,denom:r,continued:!1,hasBarLine:u,barSize:p,leftDelim:s,rightDelim:l},d)}});X({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:a,token:r}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:fe(e[0],"size").value,token:r}}});X({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0],i=fe(e[1],"infix").size;if(!i)throw new Error("\\\\abovefrac expected size, but got "+String(i));var s=e[2],o=i.number>0;return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null}}});var S_=(t,e)=>{var n=e.style,a,r;t.type==="supsub"?(a=t.sup?je(t.sup,e.havingStyle(n.sup()),e):je(t.sub,e.havingStyle(n.sub()),e),r=fe(t.base,"horizBrace")):r=fe(t,"horizBrace");var i=je(r.base,e.havingBaseStyle(pe.DISPLAY)),s=Pu(r,e),o;if(r.isOver?(o=Ce({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:s}]}),o.children[0].children[0].children[1].classes.push("svg-align")):(o=Ce({positionType:"bottom",positionData:i.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:i}]}),o.children[0].children[0].children[0].classes.push("svg-align")),a){var l=D(["minner",r.isOver?"mover":"munder"],[o],e);r.isOver?o=Ce({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:a}]}):o=Ce({positionType:"bottom",positionData:l.depth+.2+a.height+a.depth,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:l}]})}return D(["minner",r.isOver?"mover":"munder"],[o],e)},XS=(t,e)=>{var n=Fu(t.label);return new P(t.isOver?"mover":"munder",[Me(t.base,e),n])};X({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:a}=t;return{type:"horizBrace",mode:n.mode,label:a,isOver:a.includes("\\over"),base:e[0]}},htmlBuilder:S_,mathmlBuilder:XS});X({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=e[1],r=fe(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:r})?{type:"href",mode:n.mode,href:r,body:Je(a)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=st(t.body,e,!1);return dS(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=mr(t.body,e);return n instanceof P||(n=new P("mrow",[n])),n.setAttribute("href",t.href),n}});X({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=fe(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:a}))return n.formatUnsupportedCmd("\\url");for(var r=[],i=0;i{var{parser:n,funcName:a,token:r}=t,i=fe(e[0],"raw").string,s=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o,l={};switch(a){case"\\htmlClass":l.class=i,o={command:"\\htmlClass",class:i};break;case"\\htmlId":l.id=i,o={command:"\\htmlId",id:i};break;case"\\htmlStyle":l.style=i,o={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var c=i.split(","),u=0;u{var n=st(t.body,e,!1),a=["enclosing"];t.attributes.class&&a.push(...t.attributes.class.trim().split(/\s+/));var r=D(a,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&r.setAttribute(i,t.attributes[i]);return r},mathmlBuilder:(t,e)=>mr(t.body,e)});X({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Je(e[0]),mathml:Je(e[1])}},htmlBuilder:(t,e)=>{var n=st(t.html,e,!1);return Ma(n)},mathmlBuilder:(t,e)=>mr(t.mathml,e)});var Fh=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new G("Invalid size: '"+e+"' in \\includegraphics");var a={number:+(n[1]+n[2]),unit:n[3]};if(!Vk(a))throw new G("Invalid unit: '"+a.unit+"' in \\includegraphics.");return a};X({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:a}=t,r={number:0,unit:"em"},i={number:.9,unit:"em"},s={number:0,unit:"em"},o="";if(n[0])for(var l=fe(n[0],"raw").string,c=l.split(","),u=0;u{var n=qe(t.height,e),a=0;t.totalheight.number>0&&(a=qe(t.totalheight,e)-n);var r=0;t.width.number>0&&(r=qe(t.width,e));var i={height:H(n+a)};r>0&&(i.width=H(r)),a>0&&(i.verticalAlign=H(-a));var s=new Uh(t.src,t.alt,i);return s.height=n,s.depth=a,s},mathmlBuilder:(t,e)=>{var n=new P("mglyph",[]);n.setAttribute("alt",t.alt);var a=qe(t.height,e),r=0;if(t.totalheight.number>0&&(r=qe(t.totalheight,e)-a,n.setAttribute("valign",H(-r))),n.setAttribute("height",H(a+r)),t.width.number>0){var i=qe(t.width,e);n.setAttribute("width",H(i))}return n.setAttribute("src",t.src),n}});X({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:a}=t,r=fe(e[0],"size");if(n.settings.strict){var i=a[1]==="m",s=r.value.unit==="mu";i?(s||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, "+("not "+r.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):s&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:r.value}},htmlBuilder(t,e){return Jk(t.dimension,e)},mathmlBuilder(t,e){var n=qe(t.dimension,e);return new Ru(n)}});X({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0];return{type:"lap",mode:n.mode,alignment:a.slice(5),body:r}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=D([],[je(t.body,e)]),n=D(["inner"],[n],e)):n=D(["inner"],[je(t.body,e)]);var a=D(["fix"],[]),r=D([t.alignment],[n,a],e),i=D(["strut"]);return i.style.height=H(r.height+r.depth),r.depth&&(i.style.verticalAlign=H(-r.depth)),r.children.unshift(i),r=D(["thinbox"],[r],e),D(["mord","vbox"],[r],e)},mathmlBuilder:(t,e)=>{var n=new P("mpadded",[Me(t.body,e)]);if(t.alignment!=="rlap"){var a=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",a+"width")}return n.setAttribute("width","0px"),n}});X({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:a}=t,r=a.mode;a.switchMode("math");var i=n==="\\("?"\\)":"$",s=a.parseExpression(!1,i);return a.expect(i),a.switchMode(r),{type:"styling",mode:a.mode,style:"text",body:s}}});X({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new G("Mismatched "+t.funcName)}});var Nk=(t,e)=>{switch(e.style.size){case pe.DISPLAY.size:return t.display;case pe.TEXT.size:return t.text;case pe.SCRIPT.size:return t.script;case pe.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};X({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Je(e[0]),text:Je(e[1]),script:Je(e[2]),scriptscript:Je(e[3])}},htmlBuilder:(t,e)=>{var n=Nk(t,e),a=st(n,e,!1);return Ma(a)},mathmlBuilder:(t,e)=>{var n=Nk(t,e);return mr(n,e)}});var E_=(t,e,n,a,r,i,s)=>{t=D([],[t]);var o=n&&Aa(n),l,c;if(e){var u=je(e,a.havingStyle(r.sup()),a);c={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-u.depth)}}if(n){var p=je(n,a.havingStyle(r.sub()),a);l={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-p.height)}}var d;if(c&&l){var m=a.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+t.depth+s;d=Ce({positionType:"bottom",positionData:m,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:H(-i)},{type:"kern",size:l.kern},{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:H(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else if(l){var h=t.height-s;d=Ce({positionType:"top",positionData:h,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:H(-i)},{type:"kern",size:l.kern},{type:"elem",elem:t}]})}else if(c){var b=t.depth+s;d=Ce({positionType:"bottom",positionData:b,children:[{type:"elem",elem:t},{type:"kern",size:c.kern},{type:"elem",elem:c.elem,marginLeft:H(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]})}else return t;var y=[d];if(l&&i!==0&&!o){var w=D(["mspace"],[],a);w.style.marginRight=H(i),y.unshift(w)}return D(["mop","op-limits"],y,a)},A_=new Set(["\\smallint"]),Es=(t,e)=>{var n,a,r=!1,i;t.type==="supsub"?(n=t.sup,a=t.sub,i=fe(t.base,"op"),r=!0):i=fe(t,"op");var s=e.style,o=!1;s.size===pe.DISPLAY.size&&i.symbol&&!A_.has(i.name)&&(o=!0);var l;if(i.symbol){var c=o?"Size2-Regular":"Size1-Regular",u="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(u=i.name.slice(1),i.name=u==="oiint"?"\\iint":"\\iiint"),l=Pt(i.name,c,"math",e,["mop","op-symbol",o?"large-op":"small-op"]),u.length>0){var p=l.italic,d=Qk(u+"Size"+(o?"2":"1"),e);l=Ce({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:d,shift:o?.08:0}]}),i.name="\\"+u,l.classes.unshift("mop"),l.italic=p}}else if(i.body){var m=st(i.body,e,!0);m.length===1&&m[0]instanceof Gt?(l=m[0],l.classes[0]="mop"):l=D(["mop"],m,e)}else{for(var h=[],b=1;b{var n;if(t.symbol)n=new P("mo",[$n(t.name,t.mode)]),A_.has(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new P("mo",cn(t.body,e));else{n=new P("mi",[new Ge(t.name.slice(1))]);var a=new P("mo",[$n("\u2061","text")]);t.parentIsSupSub?n=new P("mrow",[n,a]):n=n_([n,a])}return n},ZS={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};X({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:(t,e)=>{var{parser:n,funcName:a}=t,r=a;return r.length===1&&(r=ZS[r]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Es,mathmlBuilder:tl});X({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Je(a)}},htmlBuilder:Es,mathmlBuilder:tl});var JS={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};X({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(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Es,mathmlBuilder:tl});X({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Es,mathmlBuilder:tl});X({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(t){var{parser:e,funcName:n}=t,a=n;return a.length===1&&(a=JS[a]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:Es,mathmlBuilder:tl});var T_=(t,e)=>{var n,a,r=!1,i;t.type==="supsub"?(n=t.sup,a=t.sub,i=fe(t.base,"operatorname"),r=!0):i=fe(t,"operatorname");var s;if(i.body.length>0){for(var o=i.body.map(p=>{var d="text"in p?p.text:void 0;return typeof d=="string"?{type:"textord",mode:p.mode,text:d}:p}),l=st(o,e.withFont("mathrm"),!0),c=0;c{for(var n=cn(t.body,e.withFont("mathrm")),a=!0,r=0;ru.toText()).join("");n=[new Ge(o)]}var l=new P("mi",n);l.setAttribute("mathvariant","normal");var c=new P("mo",[$n("\u2061","text")]);return t.parentIsSupSub?new P("mrow",[l,c]):n_([l,c])};X({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:a}=t,r=e[0];return{type:"operatorname",mode:n.mode,body:Je(r),alwaysHandleSupSub:a==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:T_,mathmlBuilder:YS});k("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");mi({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Ma(st(t.body,e,!1)):D(["mord"],st(t.body,e,!0),e)},mathmlBuilder(t,e){return mr(t.body,e,!0)}});X({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,a=e[0];return{type:"overline",mode:n.mode,body:a}},htmlBuilder(t,e){var n=je(t.body,e.havingCrampedStyle()),a=Cs("overline-line",e),r=e.fontMetrics().defaultRuleThickness,i=Ce({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*r},{type:"elem",elem:a},{type:"kern",size:r}]});return D(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new P("mo",[new Ge("\u203E")]);n.setAttribute("stretchy","true");var a=new P("mover",[Me(t.body,e),n]);return a.setAttribute("accent","true"),a}});X({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"phantom",mode:n.mode,body:Je(a)}},htmlBuilder:(t,e)=>{var n=st(t.body,e.withPhantom(),!1);return Ma(n)},mathmlBuilder:(t,e)=>{var n=cn(t.body,e);return new P("mphantom",n)}});k("\\hphantom","\\smash{\\phantom{#1}}");X({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,a=e[0];return{type:"vphantom",mode:n.mode,body:a}},htmlBuilder:(t,e)=>{var n=D(["inner"],[je(t.body,e.withPhantom())]),a=D(["fix"],[]);return D(["mord","rlap"],[n,a],e)},mathmlBuilder:(t,e)=>{var n=cn(Je(t.body),e),a=new P("mphantom",n),r=new P("mpadded",[a]);return r.setAttribute("width","0px"),r}});X({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,a=fe(e[0],"size").value,r=e[1];return{type:"raisebox",mode:n.mode,dy:a,body:r}},htmlBuilder(t,e){var n=je(t.body,e),a=qe(t.dy,e);return Ce({positionType:"shift",positionData:-a,children:[{type:"elem",elem:n}]})},mathmlBuilder(t,e){var n=new P("mpadded",[Me(t.body,e)]),a=t.dy.number+t.dy.unit;return n.setAttribute("voffset",a),n}});X({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});X({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:a}=t,r=n[0],i=fe(e[0],"size"),s=fe(e[1],"size");return{type:"rule",mode:a.mode,shift:r&&fe(r,"size").value,width:i.value,height:s.value}},htmlBuilder(t,e){var n=D(["mord","rule"],[],e),a=qe(t.width,e),r=qe(t.height,e),i=t.shift?qe(t.shift,e):0;return n.style.borderRightWidth=H(a),n.style.borderTopWidth=H(r),n.style.bottom=H(i),n.width=a,n.height=r+i,n.depth=-i,n.maxFontSize=r*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=qe(t.width,e),a=qe(t.height,e),r=t.shift?qe(t.shift,e):0,i=e.color&&e.getColor()||"black",s=new P("mspace");s.setAttribute("mathbackground",i),s.setAttribute("width",H(n)),s.setAttribute("height",H(a));var o=new P("mpadded",[s]);return r>=0?o.setAttribute("height",H(r)):(o.setAttribute("height",H(r)),o.setAttribute("depth",H(-r))),o.setAttribute("voffset",H(r)),o}});function M_(t,e,n){for(var a=st(t,e,!1),r=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return M_(t.body,n,e)};X({type:"sizing",names:Ik,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:a,parser:r}=t,i=r.parseExpression(!1,n);return{type:"sizing",mode:r.mode,size:Ik.indexOf(a)+1,body:i}},htmlBuilder:QS,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),a=cn(t.body,n),r=new P("mstyle",a);return r.setAttribute("mathsize",H(n.sizeMultiplier)),r}});X({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:a}=t,r=!1,i=!1,s=n[0]&&fe(n[0],"ordgroup");if(s)for(var o="",l=0;l{var n=D([],[je(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0),t.smashDepth&&(n.depth=0),t.smashHeight&&t.smashDepth)return D(["mord","smash"],[n],e);if(n.children)for(var a=0;a{var n=new P("mpadded",[Me(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});X({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:a}=t,r=n[0],i=e[0];return{type:"sqrt",mode:a.mode,body:i,index:r}},htmlBuilder(t,e){var n=je(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=js(n,e);var a=e.fontMetrics(),r=a.defaultRuleThickness,i=r;e.style.idn.height+n.depth+s&&(s=(s+p-n.height-n.depth)/2);var d=l.height-n.height-s-c;n.style.paddingLeft=H(u);var m=Ce({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+d)},{type:"elem",elem:l},{type:"kern",size:c}]});if(t.index){var h=e.havingStyle(pe.SCRIPTSCRIPT),b=je(t.index,h,e),y=.6*(m.height-m.depth),w=Ce({positionType:"shift",positionData:-y,children:[{type:"elem",elem:b}]}),_=D(["root"],[w]);return D(["mord","sqrt"],[_,m],e)}else return D(["mord","sqrt"],[m],e)},mathmlBuilder(t,e){var{body:n,index:a}=t;return a?new P("mroot",[Me(n,e),Me(a,e)]):new P("msqrt",[Me(n,e)])}});var Rk={display:pe.DISPLAY,text:pe.TEXT,script:pe.SCRIPT,scriptscript:pe.SCRIPTSCRIPT};X({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:a,parser:r}=t,i=r.parseExpression(!0,n),s=a.slice(1,a.length-5);return{type:"styling",mode:r.mode,style:s,body:i}},htmlBuilder(t,e){var n=Rk[t.style],a=e.havingStyle(n).withFont("");return M_(t.body,a,e)},mathmlBuilder(t,e){var n=Rk[t.style],a=e.havingStyle(n),r=cn(t.body,a),i=new P("mstyle",r),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},o=s[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var eE=function(e,n){var a=e.base;if(a)if(a.type==="op"){var r=a.limits&&(n.style.size===pe.DISPLAY.size||a.alwaysHandleSupSub);return r?Es:null}else if(a.type==="operatorname"){var i=a.alwaysHandleSupSub&&(n.style.size===pe.DISPLAY.size||a.limits);return i?T_:null}else{if(a.type==="accent")return Aa(a.base)?hf:null;if(a.type==="horizBrace"){var s=!e.sub;return s===a.isOver?S_:null}else return null}else return null};mi({type:"supsub",htmlBuilder(t,e){var n=eE(t,e);if(n)return n(t,e);var{base:a,sup:r,sub:i}=t,s=je(a,e),o,l,c=e.fontMetrics(),u=0,p=0,d=a&&Aa(a);if(r){var m=e.havingStyle(e.style.sup());o=je(r,m,e),d||(u=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/e.sizeMultiplier)}if(i){var h=e.havingStyle(e.style.sub());l=je(i,h,e),d||(p=s.depth+h.fontMetrics().subDrop*h.sizeMultiplier/e.sizeMultiplier)}var b;e.style===pe.DISPLAY?b=c.sup1:e.style.cramped?b=c.sup3:b=c.sup2;var y=e.sizeMultiplier,w=H(.5/c.ptPerEm/y),_=null;if(l){var $=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof Gt||$)&&(_=H(-s.italic))}var M;if(o&&l){u=Math.max(u,b,o.depth+.25*c.xHeight),p=Math.max(p,c.sub2);var N=c.defaultRuleThickness,E=4*N;if(u-o.depth-(l.height-p)0&&(u+=I,p-=I)}var F=[{type:"elem",elem:l,shift:p,marginRight:w,marginLeft:_},{type:"elem",elem:o,shift:-u,marginRight:w}];M=Ce({positionType:"individualShift",children:F})}else if(l){p=Math.max(p,c.sub1,l.height-.8*c.xHeight);var L=[{type:"elem",elem:l,marginLeft:_,marginRight:w}];M=Ce({positionType:"shift",positionData:p,children:L})}else if(o)u=Math.max(u,b,o.depth+.25*c.xHeight),M=Ce({positionType:"shift",positionData:-u,children:[{type:"elem",elem:o,marginRight:w}]});else throw new Error("supsub must have either sup or sub.");var T=Yh(s,"right")||"mord";return D([T],[s,D(["msupsub"],[M])],e)},mathmlBuilder(t,e){var n=!1,a,r;t.base&&t.base.type==="horizBrace"&&(r=!!t.sup,r===t.base.isOver&&(n=!0,a=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[Me(t.base,e)];t.sub&&i.push(Me(t.sub,e)),t.sup&&i.push(Me(t.sup,e));var s;if(n)s=a?"mover":"munder";else if(t.sub)if(t.sup){var c=t.base;c&&c.type==="op"&&c.limits&&e.style===pe.DISPLAY||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(e.style===pe.DISPLAY||c.limits)?s="munderover":s="msubsup"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===pe.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===pe.DISPLAY)?s="munder":s="msub"}else{var o=t.base;o&&o.type==="op"&&o.limits&&(e.style===pe.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||e.style===pe.DISPLAY)?s="mover":s="msup"}return new P(s,i)}});mi({type:"atom",htmlBuilder(t,e){return uf(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new P("mo",[$n(t.text,t.mode)]);if(t.family==="bin"){var a=mf(t,e);a==="bold-italic"&&n.setAttribute("mathvariant",a)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var N_={mi:"italic",mn:"normal",mtext:"normal"};mi({type:"mathord",htmlBuilder(t,e){return Du(t,e,"mathord")},mathmlBuilder(t,e){var n=new P("mi",[$n(t.text,t.mode,e)]),a=mf(t,e)||"italic";return a!==N_[n.type]&&n.setAttribute("mathvariant",a),n}});mi({type:"textord",htmlBuilder(t,e){return Du(t,e,"textord")},mathmlBuilder(t,e){var n=$n(t.text,t.mode,e),a=mf(t,e)||"normal",r;return t.mode==="text"?r=new P("mtext",[n]):/[0-9]/.test(t.text)?r=new P("mn",[n]):t.text==="\\prime"?r=new P("mo",[n]):r=new P("mi",[n]),a!==N_[r.type]&&r.setAttribute("mathvariant",a),r}});var Ph={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},qh={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};mi({type:"spacing",htmlBuilder(t,e){if(qh.hasOwnProperty(t.text)){var n=qh[t.text].className||"";if(t.mode==="text"){var a=Du(t,e,"textord");return a.classes.push(n),a}else return D(["mspace",n],[uf(t.text,t.mode,e)],e)}else{if(Ph.hasOwnProperty(t.text))return D(["mspace",Ph[t.text]],[],e);throw new G('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(qh.hasOwnProperty(t.text))n=new P("mtext",[new Ge("\xA0")]);else{if(Ph.hasOwnProperty(t.text))return new P("mspace");throw new G('Unknown type of space "'+t.text+'"')}return n}});var zk=()=>{var t=new P("mtd",[]);return t.setAttribute("width","50%"),t};mi({type:"tag",mathmlBuilder(t,e){var n=new P("mtable",[new P("mtr",[zk(),new P("mtd",[mr(t.body,e)]),zk(),new P("mtd",[mr(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var Ok={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Bk={"\\textbf":"textbf","\\textmd":"textmd"},tE={"\\textit":"textit","\\textup":"textup"},Lk=(t,e)=>{var n=t.font;if(n){if(Ok[n])return e.withTextFontFamily(Ok[n]);if(Bk[n])return e.withTextFontWeight(Bk[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(tE[n])};X({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:a}=t,r=e[0];return{type:"text",mode:n.mode,body:Je(r),font:a}},htmlBuilder(t,e){var n=Lk(t,e),a=st(t.body,n,!0);return D(["mord","text"],a,n)},mathmlBuilder(t,e){var n=Lk(t,e);return mr(t.body,n)}});X({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=je(t.body,e),a=Cs("underline-line",e),r=e.fontMetrics().defaultRuleThickness,i=Ce({positionType:"top",positionData:n.height,children:[{type:"kern",size:r},{type:"elem",elem:a},{type:"kern",size:3*r},{type:"elem",elem:n}]});return D(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new P("mo",[new Ge("\u203E")]);n.setAttribute("stretchy","true");var a=new P("munder",[Me(t.body,e),n]);return a.setAttribute("accentunder","true"),a}});X({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=je(t.body,e),a=e.fontMetrics().axisHeight,r=.5*(n.height-a-(n.depth+a));return Ce({positionType:"shift",positionData:r,children:[{type:"elem",elem:n}]})},mathmlBuilder(t,e){var n=new P("mpadded",[Me(t.body,e)],["vcenter"]);return new P("mrow",[n])}});X({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new G("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=Dk(t),a=[],r=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"\u2423":"\xA0"),lr=e_,I_=`[ \r + ]`,nE="\\\\[a-zA-Z@]+",aE="\\\\[^\uD800-\uDFFF]",rE="("+nE+")"+I_+"*",iE=`\\\\( |[ \r ]+ -?)[ \r ]*`,Hh="[\u0300-\u036F]",jS=new RegExp(Hh+"+$"),SS="("+d_+"+)|"+(CS+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(Hh+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(Hh+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+$S)+("|"+vS+")"),Su=class{constructor(e,n){this.input=e,this.settings=n,this.tokenRegex=new RegExp(SS,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new nn("EOF",new Wt(this,n,n));var a=this.tokenRegex.exec(e);if(a===null||a.index!==n)throw new G("Unexpected character: '"+e[n]+"'",new nn(e[n],new Wt(this,n,n+1)));var r=a[6]||a[3]||(a[2]?"\\ ":" ");if(this.catcodes[r]===14){var i=e.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.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=i+1,this.lex()}return new nn(r,new Wt(this,n,this.tokenRegex.lastIndex))}},Vh=class{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new G("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,a){if(a===void 0&&(a=!1),a){for(var r=0;r0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}},ES=t_;w("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});w("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});w("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});w("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});w("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});w("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");w("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var xw={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};w("\\char",function(t){var e=t.popToken(),n,a=0;if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")a=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new G("\\char` missing argument");a=e.text.charCodeAt(0)}else n=10;if(n){if(a=xw[e.text],a==null||a>=n)throw new G("Invalid base-"+n+" digit "+e.text);for(var r;(r=xw[t.future().text])!=null&&r{var r=t.consumeArg().tokens;if(r.length!==1)throw new G("\\newcommand's first argument must be a macro name");var i=r[0].text,s=t.isDefined(i);if(s&&!e)throw new G("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!s&&!n)throw new G("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var o=0;if(r=t.consumeArg().tokens,r.length===1&&r[0].text==="["){for(var l="",c=t.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new G("Invalid number of arguments: "+l);o=parseInt(l),r=t.consumeArg().tokens}return s&&a||t.macros.set(i,{tokens:r,numArgs:o}),""};w("\\newcommand",t=>rf(t,!1,!0,!1));w("\\renewcommand",t=>rf(t,!0,!1,!1));w("\\providecommand",t=>rf(t,!0,!0,!0));w("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});w("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});w("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),ir[n],Be.math[n],Be.text[n]),""});w("\\bgroup","{");w("\\egroup","}");w("~","\\nobreakspace");w("\\lq","`");w("\\rq","'");w("\\aa","\\r a");w("\\AA","\\r A");w("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");w("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");w("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");w("\u212C","\\mathscr{B}");w("\u2130","\\mathscr{E}");w("\u2131","\\mathscr{F}");w("\u210B","\\mathscr{H}");w("\u2110","\\mathscr{I}");w("\u2112","\\mathscr{L}");w("\u2133","\\mathscr{M}");w("\u211B","\\mathscr{R}");w("\u212D","\\mathfrak{C}");w("\u210C","\\mathfrak{H}");w("\u2128","\\mathfrak{Z}");w("\\Bbbk","\\Bbb{k}");w("\\llap","\\mathllap{\\textrm{#1}}");w("\\rlap","\\mathrlap{\\textrm{#1}}");w("\\clap","\\mathclap{\\textrm{#1}}");w("\\mathstrut","\\vphantom{(}");w("\\underbar","\\underline{\\text{#1}}");w("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');w("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");w("\\ne","\\neq");w("\u2260","\\neq");w("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");w("\u2209","\\notin");w("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");w("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");w("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");w("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");w("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");w("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");w("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");w("\u27C2","\\perp");w("\u203C","\\mathclose{!\\mkern-0.8mu!}");w("\u220C","\\notni");w("\u231C","\\ulcorner");w("\u231D","\\urcorner");w("\u231E","\\llcorner");w("\u231F","\\lrcorner");w("\xA9","\\copyright");w("\xAE","\\textregistered");w("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');w("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');w("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');w("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');w("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");w("\u22EE","\\vdots");w("\\varGamma","\\mathit{\\Gamma}");w("\\varDelta","\\mathit{\\Delta}");w("\\varTheta","\\mathit{\\Theta}");w("\\varLambda","\\mathit{\\Lambda}");w("\\varXi","\\mathit{\\Xi}");w("\\varPi","\\mathit{\\Pi}");w("\\varSigma","\\mathit{\\Sigma}");w("\\varUpsilon","\\mathit{\\Upsilon}");w("\\varPhi","\\mathit{\\Phi}");w("\\varPsi","\\mathit{\\Psi}");w("\\varOmega","\\mathit{\\Omega}");w("\\substack","\\begin{subarray}{c}#1\\end{subarray}");w("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");w("\\boxed","\\fbox{$\\displaystyle{#1}$}");w("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");w("\\implies","\\DOTSB\\;\\Longrightarrow\\;");w("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");w("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");w("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var kw={",":"\\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"},AS=new Set(["bin","rel"]);w("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in kw?e=kw[n]:(n.slice(0,4)==="\\not"||n in Be.math&&AS.has(Be.math[n].group))&&(e="\\dotsb"),e});var sf={")":!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};w("\\dotso",function(t){var e=t.future().text;return e in sf?"\\ldots\\,":"\\ldots"});w("\\dotsc",function(t){var e=t.future().text;return e in sf&&e!==","?"\\ldots\\,":"\\ldots"});w("\\cdots",function(t){var e=t.future().text;return e in sf?"\\@cdots\\,":"\\@cdots"});w("\\dotsb","\\cdots");w("\\dotsm","\\cdots");w("\\dotsi","\\!\\cdots");w("\\dotsx","\\ldots\\,");w("\\DOTSI","\\relax");w("\\DOTSB","\\relax");w("\\DOTSX","\\relax");w("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");w("\\,","\\tmspace+{3mu}{.1667em}");w("\\thinspace","\\,");w("\\>","\\mskip{4mu}");w("\\:","\\tmspace+{4mu}{.2222em}");w("\\medspace","\\:");w("\\;","\\tmspace+{5mu}{.2777em}");w("\\thickspace","\\;");w("\\!","\\tmspace-{3mu}{.1667em}");w("\\negthinspace","\\!");w("\\negmedspace","\\tmspace-{4mu}{.2222em}");w("\\negthickspace","\\tmspace-{5mu}{.277em}");w("\\enspace","\\kern.5em ");w("\\enskip","\\hskip.5em\\relax");w("\\quad","\\hskip1em\\relax");w("\\qquad","\\hskip2em\\relax");w("\\tag","\\@ifstar\\tag@literal\\tag@paren");w("\\tag@paren","\\tag@literal{({#1})}");w("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new G("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});w("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");w("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");w("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");w("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");w("\\newline","\\\\\\relax");w("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var m_=H(Kn["Main-Regular"][84][1]-.7*Kn["Main-Regular"][65][1]);w("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+m_+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");w("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+m_+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");w("\\hspace","\\@ifstar\\@hspacer\\@hspace");w("\\@hspace","\\hskip #1\\relax");w("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");w("\\ordinarycolon",":");w("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");w("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');w("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');w("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');w("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');w("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');w("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');w("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');w("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');w("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');w("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');w("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');w("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');w("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');w("\u2237","\\dblcolon");w("\u2239","\\eqcolon");w("\u2254","\\coloneqq");w("\u2255","\\eqqcolon");w("\u2A74","\\Coloneqq");w("\\ratio","\\vcentcolon");w("\\coloncolon","\\dblcolon");w("\\colonequals","\\coloneqq");w("\\coloncolonequals","\\Coloneqq");w("\\equalscolon","\\eqqcolon");w("\\equalscoloncolon","\\Eqqcolon");w("\\colonminus","\\coloneq");w("\\coloncolonminus","\\Coloneq");w("\\minuscolon","\\eqcolon");w("\\minuscoloncolon","\\Eqcolon");w("\\coloncolonapprox","\\Colonapprox");w("\\coloncolonsim","\\Colonsim");w("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");w("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");w("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");w("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");w("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");w("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");w("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");w("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");w("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");w("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");w("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");w("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");w("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");w("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");w("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");w("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");w("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");w("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");w("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");w("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");w("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");w("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");w("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");w("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");w("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");w("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");w("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");w("\\imath","\\html@mathml{\\@imath}{\u0131}");w("\\jmath","\\html@mathml{\\@jmath}{\u0237}");w("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");w("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");w("\u27E6","\\llbracket");w("\u27E7","\\rrbracket");w("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");w("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");w("\u2983","\\lBrace");w("\u2984","\\rBrace");w("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");w("\u29B5","\\minuso");w("\\darr","\\downarrow");w("\\dArr","\\Downarrow");w("\\Darr","\\Downarrow");w("\\lang","\\langle");w("\\rang","\\rangle");w("\\uarr","\\uparrow");w("\\uArr","\\Uparrow");w("\\Uarr","\\Uparrow");w("\\N","\\mathbb{N}");w("\\R","\\mathbb{R}");w("\\Z","\\mathbb{Z}");w("\\alef","\\aleph");w("\\alefsym","\\aleph");w("\\Alpha","\\mathrm{A}");w("\\Beta","\\mathrm{B}");w("\\bull","\\bullet");w("\\Chi","\\mathrm{X}");w("\\clubs","\\clubsuit");w("\\cnums","\\mathbb{C}");w("\\Complex","\\mathbb{C}");w("\\Dagger","\\ddagger");w("\\diamonds","\\diamondsuit");w("\\empty","\\emptyset");w("\\Epsilon","\\mathrm{E}");w("\\Eta","\\mathrm{H}");w("\\exist","\\exists");w("\\harr","\\leftrightarrow");w("\\hArr","\\Leftrightarrow");w("\\Harr","\\Leftrightarrow");w("\\hearts","\\heartsuit");w("\\image","\\Im");w("\\infin","\\infty");w("\\Iota","\\mathrm{I}");w("\\isin","\\in");w("\\Kappa","\\mathrm{K}");w("\\larr","\\leftarrow");w("\\lArr","\\Leftarrow");w("\\Larr","\\Leftarrow");w("\\lrarr","\\leftrightarrow");w("\\lrArr","\\Leftrightarrow");w("\\Lrarr","\\Leftrightarrow");w("\\Mu","\\mathrm{M}");w("\\natnums","\\mathbb{N}");w("\\Nu","\\mathrm{N}");w("\\Omicron","\\mathrm{O}");w("\\plusmn","\\pm");w("\\rarr","\\rightarrow");w("\\rArr","\\Rightarrow");w("\\Rarr","\\Rightarrow");w("\\real","\\Re");w("\\reals","\\mathbb{R}");w("\\Reals","\\mathbb{R}");w("\\Rho","\\mathrm{P}");w("\\sdot","\\cdot");w("\\sect","\\S");w("\\spades","\\spadesuit");w("\\sub","\\subset");w("\\sube","\\subseteq");w("\\supe","\\supseteq");w("\\Tau","\\mathrm{T}");w("\\thetasym","\\vartheta");w("\\weierp","\\wp");w("\\Zeta","\\mathrm{Z}");w("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");w("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");w("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");w("\\bra","\\mathinner{\\langle{#1}|}");w("\\ket","\\mathinner{|{#1}\\rangle}");w("\\braket","\\mathinner{\\langle{#1}\\rangle}");w("\\Bra","\\left\\langle#1\\right|");w("\\Ket","\\left|#1\\right\\rangle");var h_=t=>e=>{var n=e.consumeArg().tokens,a=e.consumeArg().tokens,r=e.consumeArg().tokens,i=e.consumeArg().tokens,s=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var l=p=>d=>{t&&(d.macros.set("|",s),r.length&&d.macros.set("\\|",o));var m=p;if(!p&&r.length){var h=d.future();h.text==="|"&&(d.popToken(),m=!0)}return{tokens:m?r:a,numArgs:0}};e.macros.set("|",l(!1)),r.length&&e.macros.set("\\|",l(!0));var c=e.consumeArg().tokens,u=e.expandTokens([...i,...c,...n]);return e.macros.endGroup(),{tokens:u.reverse(),numArgs:0}};w("\\bra@ket",h_(!1));w("\\bra@set",h_(!0));w("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");w("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");w("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");w("\\angln","{\\angl n}");w("\\blue","\\textcolor{##6495ed}{#1}");w("\\orange","\\textcolor{##ffa500}{#1}");w("\\pink","\\textcolor{##ff00af}{#1}");w("\\red","\\textcolor{##df0030}{#1}");w("\\green","\\textcolor{##28ae7b}{#1}");w("\\gray","\\textcolor{gray}{#1}");w("\\purple","\\textcolor{##9d38bd}{#1}");w("\\blueA","\\textcolor{##ccfaff}{#1}");w("\\blueB","\\textcolor{##80f6ff}{#1}");w("\\blueC","\\textcolor{##63d9ea}{#1}");w("\\blueD","\\textcolor{##11accd}{#1}");w("\\blueE","\\textcolor{##0c7f99}{#1}");w("\\tealA","\\textcolor{##94fff5}{#1}");w("\\tealB","\\textcolor{##26edd5}{#1}");w("\\tealC","\\textcolor{##01d1c1}{#1}");w("\\tealD","\\textcolor{##01a995}{#1}");w("\\tealE","\\textcolor{##208170}{#1}");w("\\greenA","\\textcolor{##b6ffb0}{#1}");w("\\greenB","\\textcolor{##8af281}{#1}");w("\\greenC","\\textcolor{##74cf70}{#1}");w("\\greenD","\\textcolor{##1fab54}{#1}");w("\\greenE","\\textcolor{##0d923f}{#1}");w("\\goldA","\\textcolor{##ffd0a9}{#1}");w("\\goldB","\\textcolor{##ffbb71}{#1}");w("\\goldC","\\textcolor{##ff9c39}{#1}");w("\\goldD","\\textcolor{##e07d10}{#1}");w("\\goldE","\\textcolor{##a75a05}{#1}");w("\\redA","\\textcolor{##fca9a9}{#1}");w("\\redB","\\textcolor{##ff8482}{#1}");w("\\redC","\\textcolor{##f9685d}{#1}");w("\\redD","\\textcolor{##e84d39}{#1}");w("\\redE","\\textcolor{##bc2612}{#1}");w("\\maroonA","\\textcolor{##ffbde0}{#1}");w("\\maroonB","\\textcolor{##ff92c6}{#1}");w("\\maroonC","\\textcolor{##ed5fa6}{#1}");w("\\maroonD","\\textcolor{##ca337c}{#1}");w("\\maroonE","\\textcolor{##9e034e}{#1}");w("\\purpleA","\\textcolor{##ddd7ff}{#1}");w("\\purpleB","\\textcolor{##c6b9fc}{#1}");w("\\purpleC","\\textcolor{##aa87ff}{#1}");w("\\purpleD","\\textcolor{##7854ab}{#1}");w("\\purpleE","\\textcolor{##543b78}{#1}");w("\\mintA","\\textcolor{##f5f9e8}{#1}");w("\\mintB","\\textcolor{##edf2df}{#1}");w("\\mintC","\\textcolor{##e0e5cc}{#1}");w("\\grayA","\\textcolor{##f6f7f7}{#1}");w("\\grayB","\\textcolor{##f0f1f2}{#1}");w("\\grayC","\\textcolor{##e3e5e6}{#1}");w("\\grayD","\\textcolor{##d6d8da}{#1}");w("\\grayE","\\textcolor{##babec2}{#1}");w("\\grayF","\\textcolor{##888d93}{#1}");w("\\grayG","\\textcolor{##626569}{#1}");w("\\grayH","\\textcolor{##3b3e40}{#1}");w("\\grayI","\\textcolor{##21242c}{#1}");w("\\kaBlue","\\textcolor{##314453}{#1}");w("\\kaGreen","\\textcolor{##71B307}{#1}");var f_={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Wh=class{constructor(e,n,a){this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new Vh(ES,n.macros),this.mode=a,this.stack=[]}feed(e){this.lexer=new Su(e,this.settings)}switchMode(e){this.mode=e}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(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,a,r;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:r,end:a}=this.consumeArg(["]"])}else({tokens:r,start:n,end:a}=this.consumeArg());return this.pushToken(new nn("EOF",a.loc)),this.pushTokens(r),new nn("",Wt.range(n,a))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],a=e&&e.length>0;a||this.consumeSpaces();var r=this.future(),i,s=0,o=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++s;else if(i.text==="}"){if(--s,s===-1)throw new G("Extra }",i)}else if(i.text==="EOF")throw new G("Unexpected end of input in a macro argument, expected '"+(e&&a?e[o]:"}")+"'",i);if(e&&a)if((s===0||s===1&&e[o]==="{")&&i.text===e[o]){if(++o,o===e.length){n.splice(-o,o);break}}else o=0}while(s!==0||a);return r.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:r,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new G("The length of delimiters doesn't match the number of args!");for(var a=n[0],r=0;rthis.settings.maxExpand)throw new G("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),a=n.text,r=n.noexpand?null:this._getExpansion(a);if(r==null||e&&r.unexpandable){if(e&&r==null&&a[0]==="\\"&&!this.isDefined(a))throw new G("Undefined control sequence: "+a);return this.pushToken(n),!1}this.countExpansion(1);var i=r.tokens,s=this.consumeArgs(r.numArgs,r.delimiters);if(r.numArgs){i=i.slice();for(var o=i.length-1;o>=0;--o){var l=i[o];if(l.text==="#"){if(o===0)throw new G("Incomplete placeholder at end of macro body",l);if(l=i[--o],l.text==="#")i.splice(o+1,1);else if(/^[1-9]$/.test(l.text))i.splice(o,2,...s[+l.text-1]);else throw new G("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}}expandMacro(e){return this.macros.has(e)?this.expandTokens([new nn(e)]):void 0}expandTokens(e){var n=[],a=this.stack.length;for(this.pushTokens(e);this.stack.length>a;)if(this.expandOnce(!0)===!1){var r=this.stack.pop();r.treatAsRelax&&(r.noexpand=!1,r.treatAsRelax=!1),n.push(r)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(a=>a.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var a=this.lexer.catcodes[e];if(a!=null&&a!==13)return}var r=typeof n=="function"?n(this):n;if(typeof r=="string"){var i=0;if(r.includes("#"))for(var s=r.replace(/##/g,"");s.includes("#"+(i+1));)++i;for(var o=new Su(r,this.settings),l=[],c=o.lex();c.text!=="EOF";)l.push(c),c=o.lex();l.reverse();var u={tokens:l,numArgs:i};return u}return r}isDefined(e){return this.macros.has(e)||ir.hasOwnProperty(e)||Be.math.hasOwnProperty(e)||Be.text.hasOwnProperty(e)||f_.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:ir.hasOwnProperty(e)&&!ir[e].primitive}},ww=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,bu=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"}),Th={"\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"}},_w={\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"},Eu=class t{constructor(e,n){this.mode="math",this.gullet=new Wh(e,n,this.mode),this.settings=n,this.leftrightDepth=0,this.nextToken=null}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new G("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new nn("}")),this.gullet.pushTokens(e);var a=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,a}parseExpression(e,n){for(var a=[];;){this.mode==="math"&&this.consumeSpaces();var r=this.fetch();if(t.endOfExpression.has(r.text)||n&&r.text===n||e&&ir[r.text]&&ir[r.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;a.push(i)}return this.mode==="text"&&this.formLigatures(a),this.handleInfixNodes(a)}handleInfixNodes(e){for(var n=-1,a,r=0;r=128)this.settings.strict&&(vw(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Wt.range(e),text:n};else return null;if(this.consume(),i)for(var p=0;pcrypto.getRandomValues(new Uint8Array(t)),BS=(t,e,n)=>{let a=256-256%t.length;if(a===256){let i=t.length-1;return(s=e)=>{if(!s)return"";let o="";for(;;){let l=n(s),c=s;for(;c--;)if(o+=t[l[c]&i],o.length>=s)return o}}}let r=Math.ceil(1.6*256*e/a);return(i=e)=>{if(!i)return"";let s="";for(;;){let o=n(r),l=r;for(;l--;)if(o[l]=i))return s}}},x_=(t,e=21)=>BS(t,e|0,OS);var aV=x_("abcedfghicklmn",10);function re(t,e){let n=Ik(t),a=r=>async()=>{a.key=n,await r.wait(rs);let i=e(r);return r.get(xe).create(n,i),a.run=s=>r.get(xe).call(t,s),()=>{r.get(xe).remove(n)}};return a}function Tt(t){let e=n=>async()=>{await n.wait(Bt);let a=t(n);return n.update(ls,r=>[...r,a]),e.inputRule=a,()=>{n.update(ls,r=>r.filter(i=>i!==a))}};return e}function k_(t){let e=n=>async()=>{await n.wait(Bt);let a=t(n);return n.update(ps,r=>[...r,a]),e.pasteRule=a,()=>{n.update(ps,r=>r.filter(i=>i!==a))}};return e}function LS(t,e){let n=a=>async()=>{let r=e(a);return a.update(as,i=>[...i.filter(s=>s[0]!==t),[t,r]]),n.id=t,n.schema=r,()=>{a.update(as,i=>i.filter(([s])=>s!==t))}};return n.type=a=>{let r=a.get(Vt).marks[t];if(!r)throw Ab(t);return r},n}function qu(t,e){let n=a=>async()=>{let r=e(a);return a.update(ns,i=>[...i.filter(s=>s[0]!==t),[t,r]]),n.id=t,n.schema=r,()=>{a.update(ns,i=>i.filter(([s])=>s!==t))}};return n.type=a=>{let r=a.get(Vt).nodes[t];if(!r)throw Eb(t);return r},n}function yt(t){let e,n=a=>async()=>(await a.wait(Bt),e=t(a),a.update(On,r=>[...r,e]),()=>{a.update(On,r=>r.filter(i=>i!==e))});return n.plugin=()=>e,n.key=()=>e.spec.key,n}function DS(t){let e=n=>async()=>{await n.wait(is);let a=n.get(zo),r=t(n),i=a.addObjectKeymap(r);return e.keymap=r,()=>{i()}};return e}function sn(t,e){let n=ge(t,e),a=r=>(r.inject(n),()=>()=>{r.remove(n)});return a.key=n,a}function ze(t,e){let n=sn(e,t),a=qu(t,i=>i.get(n.key)(i)),r=[n,a];return r.id=a.id,r.node=a,r.type=i=>a.type(i),r.ctx=n,r.key=n.key,r.extendSchema=i=>ze(t,i(e)),r}function dr(t,e){let n=sn(e,t),a=LS(t,i=>i.get(n.key)(i)),r=[n,a];return r.id=a.id,r.mark=a,r.type=i=>a.type(i),r.ctx=n,r.key=n.key,r.extendSchema=i=>dr(t,i(e)),r}function xt(t,e){let n=sn(Object.fromEntries(Object.entries(e).map(([i,{shortcuts:s,priority:o}])=>[i,{shortcuts:s,priority:o}])),`${t}Keymap`),a=DS(i=>{let s=i.get(n.key),o=Object.entries(e).flatMap(([l,{command:c}])=>{let u=s[l],p=[u.shortcuts].flat(),d=u.priority;return p.map(m=>[m,{key:m,onRun:c,priority:d}])});return Object.fromEntries(o)}),r=[n,a];return r.ctx=n,r.shortcuts=a,r.key=n.key,r.keymap=a.keymap,r}var _n=(t,e=()=>({}))=>sn(e,`${t}Attr`),oi=(t,e=()=>({}))=>sn(e,`${t}Attr`);function vn(t,e,n){let a=sn(n??{},t),r=s=>async()=>{await s.wait(ya);let o={plugin:e(s),options:s.get(a.key)};return s.update(cs,l=>[...l,o]),()=>{s.update(cs,l=>l.filter(c=>c!==o))}},i=[a,r];return i.id=t,i.plugin=r,i.options=a,i}function on(t,e){return n=>n.get(xe).call(t,e)}function cf(t){return e=>{let n=e.get(Ot),a=e.get(Vt),r=e.get(ka);if(!t)return r(n.state.doc);let i=n.state.doc.slice(t.from,t.to,!0),s=a.topNodeType.createAndFill(null,i.content);return s?r(s):(console.error("No document found"),"")}}function w_(t,e=!1){return n=>{let a=n.get(Ot),r=n.get(xa)(t);if(!r)return;if(!e){let{state:l}=a;return a.dispatch(l.tr.replace(0,l.doc.content.size,new V(r.content,0,0)))}let i=n.get(Vt),s=n.get(Mo)({schema:i,doc:r,plugins:n.get(On)}),o=Hi.create(s);a.updateState(o)}}function FS(t){return e=>{let n=e.get(xa)(t),a=e.get(Vt),r=zn.fromSchema(a).serializeFragment(n.content);return Rn.fromSchema(a).parseSlice(r)}}function __(t,e){return n=>{let a=n.get(Ot),r=FS(t)(n);a.dispatch(a.state.tr.replace(e.from,e.to,r))}}function v_(t,e){return function(n,a){let{$from:r,$to:i,node:s}=n.selection;if(s&&s.isBlock||r.depth<2||!r.sameParent(i))return!1;let o=r.node(-1);if(o.type!=t)return!1;if(r.parent.content.size==0&&r.node(-1).childCount==r.indexAfter(-1)){if(r.depth==3||r.node(-3).type!=t||r.index(-2)!=r.node(-2).childCount-1)return!1;if(a){let p=B.empty,d=r.index(-1)?1:r.index(-2)?2:3;for(let k=r.depth-d;k>=r.depth-3;k--)p=B.from(r.node(k).copy(p));let m=r.indexAfter(-1){if(y>-1)return!1;k.isTextblock&&k.content.size==0&&(y=_+1)}),y>-1&&b.setSelection(ae.near(b.doc.resolve(y))),a(b.scrollIntoView())}return!0}let l=i.pos==r.end()?o.contentMatchAt(0).defaultType:null,c=n.tr.delete(r.pos,i.pos),u=l?[e?{type:t,attrs:e}:null,{type:l}]:void 0;return Vr(c.doc,r.pos,2,u)?(a&&a(c.split(r.pos,2,u).scrollIntoView()),!0):!1}}function $_(t){return function(e,n){let{$from:a,$to:r}=e.selection,i=a.blockRange(r,s=>s.childCount>0&&s.firstChild.type==t);return i?n?a.node(i.depth-1).type==t?qS(e,n,t,i):PS(e,n,i):!0:!1}}function qS(t,e,n,a){let r=t.tr,i=a.end,s=a.$to.end(a.depth);ib;h--)m-=r.child(h).nodeSize,a.delete(m-1,m+1);let i=a.doc.resolve(n.start),s=i.nodeAfter;if(a.mapping.map(n.end)!=n.start+i.nodeAfter.nodeSize)return!1;let o=n.startIndex==0,l=n.endIndex==r.childCount,c=i.node(-1),u=i.index(-1);if(!c.canReplace(u+(o?0:1),u+1,s.content.append(l?B.empty:B.from(r))))return!1;let p=i.pos,d=p+s.nodeSize;return a.step(new ht(p-(o?1:0),d+(l?1:0),p+1,d-1,new V((o?B.empty:B.from(r.copy(B.empty))).append(l?B.empty:B.from(r.copy(B.empty))),o?0:1,l?0:1),o?0:1)),e(a.scrollIntoView()),!0}function C_(t){return function(e,n){let{$from:a,$to:r}=e.selection,i=a.blockRange(r,c=>c.childCount>0&&c.firstChild.type==t);if(!i)return!1;let s=i.startIndex;if(s==0)return!1;let o=i.parent,l=o.child(s-1);if(l.type!=t)return!1;if(n){let c=l.lastChild&&l.lastChild.type==o.type,u=B.from(c?t.create():null),p=new V(B.from(t.create(null,B.from(o.type.create(null,u)))),c?3:1,0),d=i.start,m=i.end;n(e.tr.step(new ht(d-(c?3:1),m,d,m,p,1,!0)).scrollIntoView())}return!0}}function uf(t){let e=new Map;if(!t||!t.type)throw new Error("mdast-util-definitions expected node");return Nn(t,"definition",function(a){let r=j_(a.identifier);r&&!e.get(r)&&e.set(r,a)}),n;function n(a){let r=j_(a);return e.get(r)}}function j_(t){return String(t||"").toUpperCase()}function Pu(){return function(t){let e=uf(t);Nn(t,function(n,a,r){if(n.type==="definition"&&r!==void 0&&typeof a=="number")return r.children.splice(a,1),[Rr,a];if(n.type==="imageReference"||n.type==="linkReference"){let i=e(n.identifier);if(i&&r&&typeof a=="number")return r.children[a]=n.type==="imageReference"?{type:"image",url:i.url,title:i.title,alt:n.alt}:{type:"link",url:i.url,title:i.title,children:n.children},[Rr,a]}})}}function S_(t,e){if(!(e.childCount>=1&&e.lastChild?.type.name==="hardbreak")){t.next(e.content);return}let n=[];e.content.forEach((a,r,i)=>{i!==e.childCount-1&&n.push(a)}),t.next(B.fromArray(n))}function z(t,e){return Object.assign(t,{meta:{package:"@milkdown/preset-commonmark",...e}}),t}var pf=oi("emphasis");z(pf,{displayName:"Attr",group:"Emphasis"});var ws=dr("emphasis",t=>({attrs:{marker:{default:t.get(ts).emphasis||"*",validate:"string"}},parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style",getAttrs:e=>e==="italic"}],toDOM:e=>["em",t.get(pf.key)(e)],parseMarkdown:{match:e=>e.type==="emphasis",runner:(e,n,a)=>{e.openMark(a,{marker:n.marker}),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="emphasis",runner:(e,n)=>{e.withMark(n,"emphasis",void 0,{marker:n.attrs.marker})}}}));z(ws.mark,{displayName:"MarkSchema",group:"Emphasis"});z(ws.ctx,{displayName:"MarkSchemaCtx",group:"Emphasis"});var Wo=re("ToggleEmphasis",t=>()=>Ui(ws.type(t)));z(Wo,{displayName:"Command",group:"Emphasis"});var E_=Tt(t=>Xr(/(?:^|[^*])\*([^*]+)\*$/,ws.type(t),{getAttr:()=>({marker:"*"}),updateCaptured:({fullMatch:e,start:n})=>e.startsWith("*")?{}:{fullMatch:e.slice(1),start:n+1}}));z(E_,{displayName:"InputRule|Star",group:"Emphasis"});var A_=Tt(t=>Xr(/\b_(?![_\s])(.*?[^_\s])_\b/,ws.type(t),{getAttr:()=>({marker:"_"}),updateCaptured:({fullMatch:e,start:n})=>e.startsWith("_")?{}:{fullMatch:e.slice(1),start:n+1}}));z(A_,{displayName:"InputRule|Underscore",group:"Emphasis"});var df=xt("emphasisKeymap",{ToggleEmphasis:{shortcuts:"Mod-i",command:t=>{let e=t.get(xe);return()=>e.call(Wo.key)}}});z(df.ctx,{displayName:"KeymapCtx",group:"Emphasis"});z(df.shortcuts,{displayName:"Keymap",group:"Emphasis"});var mf=oi("strong");z(mf,{displayName:"Attr",group:"Strong"});var Uo=dr("strong",t=>({attrs:{marker:{default:t.get(ts).strong||"*",validate:"string"}},parseDOM:[{tag:"b",getAttrs:e=>e.style.fontWeight!="normal"&&null},{tag:"strong"},{style:"font-style",getAttrs:e=>e==="bold"},{style:"font-weight=400",clearMark:e=>e.type.name=="strong"},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:e=>["strong",t.get(mf.key)(e)],parseMarkdown:{match:e=>e.type==="strong",runner:(e,n,a)=>{e.openMark(a,{marker:n.marker}),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="strong",runner:(e,n)=>{e.withMark(n,"strong",void 0,{marker:n.attrs.marker})}}}));z(Uo.mark,{displayName:"MarkSchema",group:"Strong"});z(Uo.ctx,{displayName:"MarkSchemaCtx",group:"Strong"});var Ko=re("ToggleStrong",t=>()=>Ui(Uo.type(t)));z(Ko,{displayName:"Command",group:"Strong"});var T_=Tt(t=>Xr(/(?({marker:e[0].startsWith("*")?"*":"_"})}));z(T_,{displayName:"InputRule",group:"Strong"});var hf=xt("strongKeymap",{ToggleBold:{shortcuts:["Mod-b"],command:t=>{let e=t.get(xe);return()=>e.call(Ko.key)}}});z(hf.ctx,{displayName:"KeymapCtx",group:"Strong"});z(hf.shortcuts,{displayName:"Keymap",group:"Strong"});var ff=oi("inlineCode");z(ff,{displayName:"Attr",group:"InlineCode"});var mr=dr("inlineCode",t=>({priority:100,code:!0,parseDOM:[{tag:"code"}],toDOM:e=>["code",t.get(ff.key)(e)],parseMarkdown:{match:e=>e.type==="inlineCode",runner:(e,n,a)=>{e.openMark(a),e.addText(n.value),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="inlineCode",runner:(e,n,a)=>(e.withMark(n,"inlineCode",a.text||""),!0)}}));z(mr.mark,{displayName:"MarkSchema",group:"InlineCode"});z(mr.ctx,{displayName:"MarkSchemaCtx",group:"InlineCode"});var Xo=re("ToggleInlineCode",t=>()=>(e,n)=>{let{selection:a,tr:r}=e;if(a.empty)return!1;let{from:i,to:s}=a;return e.doc.rangeHasMark(i,s,mr.type(t))?(n?.(r.removeMark(i,s,mr.type(t))),!0):(Object.keys(e.schema.marks).filter(o=>o!==mr.type.name).map(o=>e.schema.marks[o]).forEach(o=>{r.removeMark(i,s,o)}),n?.(r.addMark(i,s,mr.type(t).create())),!0)});z(Xo,{displayName:"Command",group:"InlineCode"});var M_=Tt(t=>Xr(/(?:`)([^`]+)(?:`)$/,mr.type(t)));z(M_,{displayName:"InputRule",group:"InlineCode"});var gf=xt("inlineCodeKeymap",{ToggleInlineCode:{shortcuts:"Mod-e",command:t=>{let e=t.get(xe);return()=>e.call(Xo.key)}}});z(gf.ctx,{displayName:"KeymapCtx",group:"InlineCode"});z(gf.shortcuts,{displayName:"Keymap",group:"InlineCode"});var bf=oi("link");z(bf,{displayName:"Attr",group:"Link"});var ks=dr("link",t=>({attrs:{href:{validate:"string"},title:{default:null,validate:"string|null"}},parseDOM:[{tag:"a[href]",getAttrs:e=>{if(!(e instanceof HTMLElement))throw Qt(e);return{href:e.getAttribute("href"),title:e.getAttribute("title")}}}],toDOM:e=>["a",{...t.get(bf.key)(e),...e.attrs}],parseMarkdown:{match:e=>e.type==="link",runner:(e,n,a)=>{let r=n.url,i=n.title;e.openMark(a,{href:r,title:i}),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="link",runner:(e,n)=>{e.withMark(n,"link",void 0,{title:n.attrs.title,url:n.attrs.href})}}}));z(ks.mark,{displayName:"MarkSchema",group:"Link"});var Hu=re("ToggleLink",t=>(e={})=>Ui(ks.type(t),e));z(Hu,{displayName:"Command",group:"Link"});var N_=re("UpdateLink",t=>(e={})=>(n,a)=>{if(!a)return!1;let r,i=-1,{selection:s}=n,{from:o,to:l}=s;if(n.doc.nodesBetween(o,o===l?l+1:l,(h,b)=>{if(ks.type(t).isInSet(h.marks))return r=h,i=b,!1}),!r)return!1;let c=r.marks.find(({type:h})=>h===ks.type(t));if(!c)return!1;let u=i,p=i+r.nodeSize,{tr:d}=n,m=ks.type(t).create({...c.attrs,...e});return m?(a(d.removeMark(u,p,c).addMark(u,p,m).setSelection(new ue(d.selection.$anchor)).scrollIntoView()),!0):!1});z(N_,{displayName:"Command",group:"Link"});var I_=qu("doc",()=>({content:"block+",parseMarkdown:{match:({type:t})=>t==="root",runner:(t,e,n)=>{t.injectRoot(e,n)}},toMarkdown:{match:t=>t.type.name==="doc",runner:(t,e)=>{t.openNode("root"),t.next(e.content)}}}));z(I_,{displayName:"NodeSchema",group:"Doc"});function GS(t){return zr(t,e=>e.type==="html"&&["
","
","
","
"].includes(e.value?.trim()),(e,n)=>{if(!n.length)return;let a=n[n.length-1];if(!a)return;let r=a.children.indexOf(e);r!==-1&&a.children.splice(r,1)},!0)}var Vu=vn("remark-preserve-empty-line",()=>()=>GS);z(Vu.plugin,{displayName:"Remark",group:"Remark"});z(Vu.options,{displayName:"RemarkConfig",group:"Remark"});var yf=_n("paragraph");z(yf,{displayName:"Attr",group:"Paragraph"});var Ln=ze("paragraph",t=>({content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:e=>["p",t.get(yf.key)(e),0],parseMarkdown:{match:e=>e.type==="paragraph",runner:(e,n,a)=>{e.openNode(a),n.children?e.next(n.children):e.addText(n.value||""),e.closeNode()}},toMarkdown:{match:e=>e.type.name==="paragraph",runner:(e,n)=>{let a=t.get(Ot).state?.doc.lastChild;e.openNode("paragraph"),(!n.content||n.content.size===0)&&n!==a&&HS(t)?e.addNode("html",void 0,"
"):S_(e,n),e.closeNode()}}}));function HS(t){let e=!1;try{t.get(Vu.id),e=!0}catch{e=!1}return e}z(Ln.node,{displayName:"NodeSchema",group:"Paragraph"});z(Ln.ctx,{displayName:"NodeSchemaCtx",group:"Paragraph"});var xf=re("TurnIntoText",t=>()=>Wi(Ln.type(t)));z(xf,{displayName:"Command",group:"Paragraph"});var kf=xt("paragraphKeymap",{TurnIntoText:{shortcuts:"Mod-Alt-0",command:t=>{let e=t.get(xe);return()=>e.call(xf.key)}}});z(kf.ctx,{displayName:"KeymapCtx",group:"Paragraph"});z(kf.shortcuts,{displayName:"Keymap",group:"Paragraph"});var VS=Array(6).fill(0).map((t,e)=>e+1);function WS(t){return t.textContent.toLowerCase().trim().replace(/\s+/g,"-")}var Wu=sn(WS,"headingIdGenerator");z(Wu,{displayName:"Ctx",group:"Heading"});var wf=_n("heading");z(wf,{displayName:"Attr",group:"Heading"});var ci=ze("heading",t=>{let e=t.get(Wu.key);return{content:"inline*",group:"block",defining:!0,attrs:{id:{default:"",validate:"string"},level:{default:1,validate:"number"}},parseDOM:VS.map(n=>({tag:`h${n}`,getAttrs:a=>{if(!(a instanceof HTMLElement))throw Qt(a);return{level:n,id:a.id}}})),toDOM:n=>[`h${n.attrs.level}`,{...t.get(wf.key)(n),id:n.attrs.id||e(n)},0],parseMarkdown:{match:({type:n})=>n==="heading",runner:(n,a,r)=>{let i=a.depth;n.openNode(r,{level:i}),n.next(a.children),n.closeNode()}},toMarkdown:{match:n=>n.type.name==="heading",runner:(n,a)=>{n.openNode("heading",void 0,{depth:a.attrs.level}),S_(n,a),n.closeNode()}}}});z(ci.node,{displayName:"NodeSchema",group:"Heading"});z(ci.ctx,{displayName:"NodeSchemaCtx",group:"Heading"});var R_=Tt(t=>_m(/^(?#+)\s$/,ci.type(t),e=>{let n=e.groups?.hashes?.length||0,{$from:a}=t.get(Ot).state.selection,r=a.node();if(r.type.name==="heading"){let i=Number(r.attrs.level)+Number(n);return i>6&&(i=6),{level:i}}return{level:n}}));z(R_,{displayName:"InputRule",group:"Heading"});var Qn=re("WrapInHeading",t=>e=>(e??=1,e<1?Wi(Ln.type(t)):Wi(ci.type(t),{level:e})));z(Qn,{displayName:"Command",group:"Heading"});var _f=re("DowngradeHeading",t=>()=>(e,n,a)=>{let{$from:r}=e.selection,i=r.node();if(i.type!==ci.type(t)||!e.selection.empty||r.parentOffset!==0)return!1;let s=i.attrs.level-1;return s?(n?.(e.tr.setNodeMarkup(e.selection.$from.before(),void 0,{...i.attrs,level:s})),!0):Wi(Ln.type(t))(e,n,a)});z(_f,{displayName:"Command",group:"Heading"});var vf=xt("headingKeymap",{TurnIntoH1:{shortcuts:"Mod-Alt-1",command:t=>{let e=t.get(xe);return()=>e.call(Qn.key,1)}},TurnIntoH2:{shortcuts:"Mod-Alt-2",command:t=>{let e=t.get(xe);return()=>e.call(Qn.key,2)}},TurnIntoH3:{shortcuts:"Mod-Alt-3",command:t=>{let e=t.get(xe);return()=>e.call(Qn.key,3)}},TurnIntoH4:{shortcuts:"Mod-Alt-4",command:t=>{let e=t.get(xe);return()=>e.call(Qn.key,4)}},TurnIntoH5:{shortcuts:"Mod-Alt-5",command:t=>{let e=t.get(xe);return()=>e.call(Qn.key,5)}},TurnIntoH6:{shortcuts:"Mod-Alt-6",command:t=>{let e=t.get(xe);return()=>e.call(Qn.key,6)}},DowngradeHeading:{shortcuts:["Delete","Backspace"],command:t=>{let e=t.get(xe);return()=>e.call(_f.key)}}});z(vf.ctx,{displayName:"KeymapCtx",group:"Heading"});z(vf.shortcuts,{displayName:"Keymap",group:"Heading"});var $f=_n("blockquote");z($f,{displayName:"Attr
",group:"Blockquote"});var Zo=ze("blockquote",t=>({content:"block+",group:"block",defining:!0,parseDOM:[{tag:"blockquote"}],toDOM:e=>["blockquote",t.get($f.key)(e),0],parseMarkdown:{match:({type:e})=>e==="blockquote",runner:(e,n,a)=>{e.openNode(a).next(n.children).closeNode()}},toMarkdown:{match:e=>e.type.name==="blockquote",runner:(e,n)=>{e.openNode("blockquote").next(n.content).closeNode()}}}));z(Zo.node,{displayName:"NodeSchema
",group:"Blockquote"});z(Zo.ctx,{displayName:"NodeSchemaCtx
",group:"Blockquote"});var z_=Tt(t=>Oc(/^\s*>\s$/,Zo.type(t)));z(z_,{displayName:"InputRule",group:"Blockquote"});var Jo=re("WrapInBlockquote",t=>()=>zc(Zo.type(t)));z(Jo,{displayName:"Command",group:"Blockquote"});var Cf=xt("blockquoteKeymap",{WrapInBlockquote:{shortcuts:"Mod-Shift-b",command:t=>{let e=t.get(xe);return()=>e.call(Jo.key)}}});z(Cf.ctx,{displayName:"KeymapCtx
",group:"Blockquote"});z(Cf.shortcuts,{displayName:"Keymap
",group:"Blockquote"});var jf=_n("codeBlock",()=>({pre:{},code:{}}));z(jf,{displayName:"Attr",group:"CodeBlock"});var Yo=ze("code_block",t=>({content:"text*",group:"block",marks:"",defining:!0,code:!0,attrs:{language:{default:"",validate:"string"}},parseDOM:[{tag:"pre",preserveWhitespace:"full",getAttrs:e=>{if(!(e instanceof HTMLElement))throw Qt(e);return{language:e.dataset.language}}}],toDOM:e=>{let n=t.get(jf.key)(e),a=e.attrs.language,r=a&&a.length>0?{"data-language":a}:void 0;return["pre",{...n.pre,...r},["code",n.code,0]]},parseMarkdown:{match:({type:e})=>e==="code",runner:(e,n,a)=>{let r=n.lang??"",i=n.value;e.openNode(a,{language:r}),i&&e.addText(i),e.closeNode()}},toMarkdown:{match:e=>e.type.name==="code_block",runner:(e,n)=>{e.addNode("code",void 0,n.content.firstChild?.text||"",{lang:n.attrs.language})}}}));z(Yo.node,{displayName:"NodeSchema",group:"CodeBlock"});z(Yo.ctx,{displayName:"NodeSchemaCtx",group:"CodeBlock"});var O_=Tt(t=>_m(/^```(?[a-z]*)?[\s\n]$/,Yo.type(t),e=>({language:e.groups?.language??""})));z(O_,{displayName:"InputRule",group:"CodeBlock"});var Qo=re("CreateCodeBlock",t=>(e="")=>Wi(Yo.type(t),{language:e}));z(Qo,{displayName:"Command",group:"CodeBlock"});var US=re("UpdateCodeBlockLanguage",()=>({pos:t,language:e}={pos:-1,language:""})=>(n,a)=>t>=0?(a?.(n.tr.setNodeAttribute(t,"language",e)),!0):!1);z(US,{displayName:"Command",group:"CodeBlock"});var Sf=xt("codeBlockKeymap",{CreateCodeBlock:{shortcuts:"Mod-Alt-c",command:t=>{let e=t.get(xe);return()=>e.call(Qo.key)}}});z(Sf.ctx,{displayName:"KeymapCtx",group:"CodeBlock"});z(Sf.shortcuts,{displayName:"Keymap",group:"CodeBlock"});var Ef=_n("image");z(Ef,{displayName:"Attr",group:"Image"});var _s=ze("image",t=>({inline:!0,group:"inline",selectable:!0,draggable:!0,marks:"",atom:!0,defining:!0,isolating:!0,attrs:{src:{default:"",validate:"string"},alt:{default:"",validate:"string"},title:{default:"",validate:"string"}},parseDOM:[{tag:"img[src]",getAttrs:e=>{if(!(e instanceof HTMLElement))throw Qt(e);return{src:e.getAttribute("src")||"",alt:e.getAttribute("alt")||"",title:e.getAttribute("title")||e.getAttribute("alt")||""}}}],toDOM:e=>["img",{...t.get(Ef.key)(e),...e.attrs}],parseMarkdown:{match:({type:e})=>e==="image",runner:(e,n,a)=>{let r=n.url,i=n.alt,s=n.title;e.addNode(a,{src:r,alt:i,title:s})}},toMarkdown:{match:e=>e.type.name==="image",runner:(e,n)=>{e.addNode("image",void 0,void 0,{title:n.attrs.title,url:n.attrs.src,alt:n.attrs.alt})}}}));z(_s.node,{displayName:"NodeSchema",group:"Image"});z(_s.ctx,{displayName:"NodeSchemaCtx",group:"Image"});var B_=re("InsertImage",t=>(e={})=>(n,a)=>{if(!a)return!0;let{src:r="",alt:i="",title:s=""}=e,o=_s.type(t).create({src:r,alt:i,title:s});return o&&a(n.tr.replaceSelectionWith(o).scrollIntoView()),!0});z(B_,{displayName:"Command",group:"Image"});var L_=re("UpdateImage",t=>(e={})=>(n,a)=>{let r=ox(n.selection,_s.type(t));if(!r)return!1;let{node:i,pos:s}=r,o={...i.attrs},{src:l,alt:c,title:u}=e;return l!==void 0&&(o.src=l),c!==void 0&&(o.alt=c),u!==void 0&&(o.title=u),a?.(n.tr.setNodeMarkup(s,void 0,o).scrollIntoView()),!0});z(L_,{displayName:"Command",group:"Image"});var KS=Tt(t=>new ct(/!\[(?.*?)]\((?.*?)\s*(?="|\))"?(?[^"]+)?"?\)/,(e,n,a,r)=>{let[i,s,o="",l]=n;return i?e.tr.replaceWith(a,r,_s.type(t).create({src:o,alt:s,title:l})):null}));z(KS,{displayName:"InputRule<insertImageInputRule>",group:"Image"});var Gu=_n("hardbreak",t=>({"data-type":"hardbreak","data-is-inline":t.attrs.isInline}));z(Gu,{displayName:"Attr<hardbreak>",group:"Hardbreak"});var li=ze("hardbreak",t=>({inline:!0,group:"inline",attrs:{isInline:{default:!1,validate:"boolean"}},selectable:!1,parseDOM:[{tag:"br"},{tag:'span[data-type="hardbreak"]',getAttrs:()=>({isInline:!0})}],toDOM:e=>e.attrs.isInline?["span",t.get(Gu.key)(e)," "]:["br",t.get(Gu.key)(e)],parseMarkdown:{match:({type:e})=>e==="break",runner:(e,n,a)=>{e.addNode(a,{isInline:!!n.data?.isInline})}},leafText:()=>` +?)[ \r ]*`,af="[\u0300-\u036F]",sE=new RegExp(af+"+$"),oE="("+I_+"+)|"+(iE+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(af+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(af+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+rE)+("|"+aE+")"),Ou=class{constructor(e,n){this.input=e,this.settings=n,this.tokenRegex=new RegExp(oE,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new on("EOF",new Zt(this,n,n));var a=this.tokenRegex.exec(e);if(a===null||a.index!==n)throw new G("Unexpected character: '"+e[n]+"'",new on(e[n],new Zt(this,n,n+1)));var r=a[6]||a[3]||(a[2]?"\\ ":" ");if(this.catcodes[r]===14){var i=e.indexOf(` +`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.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=i+1,this.lex()}return new on(r,new Zt(this,n,this.tokenRegex.lastIndex))}},rf=class{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new G("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,a){if(a===void 0&&(a=!1),a){for(var r=0;r<this.undefStack.length;r++)delete this.undefStack[r][e];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}},lE=__;k("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});k("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});k("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});k("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});k("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});k("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");k("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var Fk={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};k("\\char",function(t){var e=t.popToken(),n,a=0;if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")a=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new G("\\char` missing argument");a=e.text.charCodeAt(0)}else n=10;if(n){if(a=Fk[e.text],a==null||a>=n)throw new G("Invalid base-"+n+" digit "+e.text);for(var r;(r=Fk[t.future().text])!=null&&r<n;)a*=n,a+=r,t.popToken()}return"\\@char{"+a+"}"});var yf=(t,e,n,a)=>{var r=t.consumeArg().tokens;if(r.length!==1)throw new G("\\newcommand's first argument must be a macro name");var i=r[0].text,s=t.isDefined(i);if(s&&!e)throw new G("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!s&&!n)throw new G("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var o=0;if(r=t.consumeArg().tokens,r.length===1&&r[0].text==="["){for(var l="",c=t.expandNextToken();c.text!=="]"&&c.text!=="EOF";)l+=c.text,c=t.expandNextToken();if(!l.match(/^\s*[0-9]+\s*$/))throw new G("Invalid number of arguments: "+l);o=parseInt(l),r=t.consumeArg().tokens}return s&&a||t.macros.set(i,{tokens:r,numArgs:o}),""};k("\\newcommand",t=>yf(t,!1,!0,!1));k("\\renewcommand",t=>yf(t,!0,!1,!1));k("\\providecommand",t=>yf(t,!0,!0,!0));k("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});k("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});k("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),lr[n],Be.math[n],Be.text[n]),""});k("\\bgroup","{");k("\\egroup","}");k("~","\\nobreakspace");k("\\lq","`");k("\\rq","'");k("\\aa","\\r a");k("\\AA","\\r A");k("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");k("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");k("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");k("\u212C","\\mathscr{B}");k("\u2130","\\mathscr{E}");k("\u2131","\\mathscr{F}");k("\u210B","\\mathscr{H}");k("\u2110","\\mathscr{I}");k("\u2112","\\mathscr{L}");k("\u2133","\\mathscr{M}");k("\u211B","\\mathscr{R}");k("\u212D","\\mathfrak{C}");k("\u210C","\\mathfrak{H}");k("\u2128","\\mathfrak{Z}");k("\\Bbbk","\\Bbb{k}");k("\\llap","\\mathllap{\\textrm{#1}}");k("\\rlap","\\mathrlap{\\textrm{#1}}");k("\\clap","\\mathclap{\\textrm{#1}}");k("\\mathstrut","\\vphantom{(}");k("\\underbar","\\underline{\\text{#1}}");k("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');k("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");k("\\ne","\\neq");k("\u2260","\\neq");k("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");k("\u2209","\\notin");k("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");k("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");k("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");k("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");k("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");k("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");k("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");k("\u27C2","\\perp");k("\u203C","\\mathclose{!\\mkern-0.8mu!}");k("\u220C","\\notni");k("\u231C","\\ulcorner");k("\u231D","\\urcorner");k("\u231E","\\llcorner");k("\u231F","\\lrcorner");k("\xA9","\\copyright");k("\xAE","\\textregistered");k("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');k("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');k("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');k("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');k("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");k("\u22EE","\\vdots");k("\\varGamma","\\mathit{\\Gamma}");k("\\varDelta","\\mathit{\\Delta}");k("\\varTheta","\\mathit{\\Theta}");k("\\varLambda","\\mathit{\\Lambda}");k("\\varXi","\\mathit{\\Xi}");k("\\varPi","\\mathit{\\Pi}");k("\\varSigma","\\mathit{\\Sigma}");k("\\varUpsilon","\\mathit{\\Upsilon}");k("\\varPhi","\\mathit{\\Phi}");k("\\varPsi","\\mathit{\\Psi}");k("\\varOmega","\\mathit{\\Omega}");k("\\substack","\\begin{subarray}{c}#1\\end{subarray}");k("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");k("\\boxed","\\fbox{$\\displaystyle{#1}$}");k("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");k("\\implies","\\DOTSB\\;\\Longrightarrow\\;");k("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");k("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");k("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Pk={",":"\\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"},cE=new Set(["bin","rel"]);k("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in Pk?e=Pk[n]:(n.slice(0,4)==="\\not"||n in Be.math&&cE.has(Be.math[n].group))&&(e="\\dotsb"),e});var xf={")":!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};k("\\dotso",function(t){var e=t.future().text;return e in xf?"\\ldots\\,":"\\ldots"});k("\\dotsc",function(t){var e=t.future().text;return e in xf&&e!==","?"\\ldots\\,":"\\ldots"});k("\\cdots",function(t){var e=t.future().text;return e in xf?"\\@cdots\\,":"\\@cdots"});k("\\dotsb","\\cdots");k("\\dotsm","\\cdots");k("\\dotsi","\\!\\cdots");k("\\dotsx","\\ldots\\,");k("\\DOTSI","\\relax");k("\\DOTSB","\\relax");k("\\DOTSX","\\relax");k("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");k("\\,","\\tmspace+{3mu}{.1667em}");k("\\thinspace","\\,");k("\\>","\\mskip{4mu}");k("\\:","\\tmspace+{4mu}{.2222em}");k("\\medspace","\\:");k("\\;","\\tmspace+{5mu}{.2777em}");k("\\thickspace","\\;");k("\\!","\\tmspace-{3mu}{.1667em}");k("\\negthinspace","\\!");k("\\negmedspace","\\tmspace-{4mu}{.2222em}");k("\\negthickspace","\\tmspace-{5mu}{.277em}");k("\\enspace","\\kern.5em ");k("\\enskip","\\hskip.5em\\relax");k("\\quad","\\hskip1em\\relax");k("\\qquad","\\hskip2em\\relax");k("\\tag","\\@ifstar\\tag@literal\\tag@paren");k("\\tag@paren","\\tag@literal{({#1})}");k("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new G("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});k("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");k("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");k("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");k("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");k("\\newline","\\\\\\relax");k("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var R_=H(Jn["Main-Regular"][84][1]-.7*Jn["Main-Regular"][65][1]);k("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+R_+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");k("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+R_+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");k("\\hspace","\\@ifstar\\@hspacer\\@hspace");k("\\@hspace","\\hskip #1\\relax");k("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");k("\\ordinarycolon",":");k("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");k("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');k("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');k("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');k("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');k("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');k("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');k("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');k("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');k("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');k("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');k("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');k("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');k("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');k("\u2237","\\dblcolon");k("\u2239","\\eqcolon");k("\u2254","\\coloneqq");k("\u2255","\\eqqcolon");k("\u2A74","\\Coloneqq");k("\\ratio","\\vcentcolon");k("\\coloncolon","\\dblcolon");k("\\colonequals","\\coloneqq");k("\\coloncolonequals","\\Coloneqq");k("\\equalscolon","\\eqqcolon");k("\\equalscoloncolon","\\Eqqcolon");k("\\colonminus","\\coloneq");k("\\coloncolonminus","\\Coloneq");k("\\minuscolon","\\eqcolon");k("\\minuscoloncolon","\\Eqcolon");k("\\coloncolonapprox","\\Colonapprox");k("\\coloncolonsim","\\Colonsim");k("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");k("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");k("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");k("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");k("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");k("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");k("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");k("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");k("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");k("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");k("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");k("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");k("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");k("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");k("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");k("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");k("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");k("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");k("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");k("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");k("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");k("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");k("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");k("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");k("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");k("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");k("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");k("\\imath","\\html@mathml{\\@imath}{\u0131}");k("\\jmath","\\html@mathml{\\@jmath}{\u0237}");k("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");k("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");k("\u27E6","\\llbracket");k("\u27E7","\\rrbracket");k("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");k("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");k("\u2983","\\lBrace");k("\u2984","\\rBrace");k("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");k("\u29B5","\\minuso");k("\\darr","\\downarrow");k("\\dArr","\\Downarrow");k("\\Darr","\\Downarrow");k("\\lang","\\langle");k("\\rang","\\rangle");k("\\uarr","\\uparrow");k("\\uArr","\\Uparrow");k("\\Uarr","\\Uparrow");k("\\N","\\mathbb{N}");k("\\R","\\mathbb{R}");k("\\Z","\\mathbb{Z}");k("\\alef","\\aleph");k("\\alefsym","\\aleph");k("\\Alpha","\\mathrm{A}");k("\\Beta","\\mathrm{B}");k("\\bull","\\bullet");k("\\Chi","\\mathrm{X}");k("\\clubs","\\clubsuit");k("\\cnums","\\mathbb{C}");k("\\Complex","\\mathbb{C}");k("\\Dagger","\\ddagger");k("\\diamonds","\\diamondsuit");k("\\empty","\\emptyset");k("\\Epsilon","\\mathrm{E}");k("\\Eta","\\mathrm{H}");k("\\exist","\\exists");k("\\harr","\\leftrightarrow");k("\\hArr","\\Leftrightarrow");k("\\Harr","\\Leftrightarrow");k("\\hearts","\\heartsuit");k("\\image","\\Im");k("\\infin","\\infty");k("\\Iota","\\mathrm{I}");k("\\isin","\\in");k("\\Kappa","\\mathrm{K}");k("\\larr","\\leftarrow");k("\\lArr","\\Leftarrow");k("\\Larr","\\Leftarrow");k("\\lrarr","\\leftrightarrow");k("\\lrArr","\\Leftrightarrow");k("\\Lrarr","\\Leftrightarrow");k("\\Mu","\\mathrm{M}");k("\\natnums","\\mathbb{N}");k("\\Nu","\\mathrm{N}");k("\\Omicron","\\mathrm{O}");k("\\plusmn","\\pm");k("\\rarr","\\rightarrow");k("\\rArr","\\Rightarrow");k("\\Rarr","\\Rightarrow");k("\\real","\\Re");k("\\reals","\\mathbb{R}");k("\\Reals","\\mathbb{R}");k("\\Rho","\\mathrm{P}");k("\\sdot","\\cdot");k("\\sect","\\S");k("\\spades","\\spadesuit");k("\\sub","\\subset");k("\\sube","\\subseteq");k("\\supe","\\supseteq");k("\\Tau","\\mathrm{T}");k("\\thetasym","\\vartheta");k("\\weierp","\\wp");k("\\Zeta","\\mathrm{Z}");k("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");k("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");k("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");k("\\bra","\\mathinner{\\langle{#1}|}");k("\\ket","\\mathinner{|{#1}\\rangle}");k("\\braket","\\mathinner{\\langle{#1}\\rangle}");k("\\Bra","\\left\\langle#1\\right|");k("\\Ket","\\left|#1\\right\\rangle");var z_=t=>e=>{var n=e.consumeArg().tokens,a=e.consumeArg().tokens,r=e.consumeArg().tokens,i=e.consumeArg().tokens,s=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var l=p=>d=>{t&&(d.macros.set("|",s),r.length&&d.macros.set("\\|",o));var m=p;if(!p&&r.length){var h=d.future();h.text==="|"&&(d.popToken(),m=!0)}return{tokens:m?r:a,numArgs:0}};e.macros.set("|",l(!1)),r.length&&e.macros.set("\\|",l(!0));var c=e.consumeArg().tokens,u=e.expandTokens([...i,...c,...n]);return e.macros.endGroup(),{tokens:u.reverse(),numArgs:0}};k("\\bra@ket",z_(!1));k("\\bra@set",z_(!0));k("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");k("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");k("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");k("\\angln","{\\angl n}");k("\\blue","\\textcolor{##6495ed}{#1}");k("\\orange","\\textcolor{##ffa500}{#1}");k("\\pink","\\textcolor{##ff00af}{#1}");k("\\red","\\textcolor{##df0030}{#1}");k("\\green","\\textcolor{##28ae7b}{#1}");k("\\gray","\\textcolor{gray}{#1}");k("\\purple","\\textcolor{##9d38bd}{#1}");k("\\blueA","\\textcolor{##ccfaff}{#1}");k("\\blueB","\\textcolor{##80f6ff}{#1}");k("\\blueC","\\textcolor{##63d9ea}{#1}");k("\\blueD","\\textcolor{##11accd}{#1}");k("\\blueE","\\textcolor{##0c7f99}{#1}");k("\\tealA","\\textcolor{##94fff5}{#1}");k("\\tealB","\\textcolor{##26edd5}{#1}");k("\\tealC","\\textcolor{##01d1c1}{#1}");k("\\tealD","\\textcolor{##01a995}{#1}");k("\\tealE","\\textcolor{##208170}{#1}");k("\\greenA","\\textcolor{##b6ffb0}{#1}");k("\\greenB","\\textcolor{##8af281}{#1}");k("\\greenC","\\textcolor{##74cf70}{#1}");k("\\greenD","\\textcolor{##1fab54}{#1}");k("\\greenE","\\textcolor{##0d923f}{#1}");k("\\goldA","\\textcolor{##ffd0a9}{#1}");k("\\goldB","\\textcolor{##ffbb71}{#1}");k("\\goldC","\\textcolor{##ff9c39}{#1}");k("\\goldD","\\textcolor{##e07d10}{#1}");k("\\goldE","\\textcolor{##a75a05}{#1}");k("\\redA","\\textcolor{##fca9a9}{#1}");k("\\redB","\\textcolor{##ff8482}{#1}");k("\\redC","\\textcolor{##f9685d}{#1}");k("\\redD","\\textcolor{##e84d39}{#1}");k("\\redE","\\textcolor{##bc2612}{#1}");k("\\maroonA","\\textcolor{##ffbde0}{#1}");k("\\maroonB","\\textcolor{##ff92c6}{#1}");k("\\maroonC","\\textcolor{##ed5fa6}{#1}");k("\\maroonD","\\textcolor{##ca337c}{#1}");k("\\maroonE","\\textcolor{##9e034e}{#1}");k("\\purpleA","\\textcolor{##ddd7ff}{#1}");k("\\purpleB","\\textcolor{##c6b9fc}{#1}");k("\\purpleC","\\textcolor{##aa87ff}{#1}");k("\\purpleD","\\textcolor{##7854ab}{#1}");k("\\purpleE","\\textcolor{##543b78}{#1}");k("\\mintA","\\textcolor{##f5f9e8}{#1}");k("\\mintB","\\textcolor{##edf2df}{#1}");k("\\mintC","\\textcolor{##e0e5cc}{#1}");k("\\grayA","\\textcolor{##f6f7f7}{#1}");k("\\grayB","\\textcolor{##f0f1f2}{#1}");k("\\grayC","\\textcolor{##e3e5e6}{#1}");k("\\grayD","\\textcolor{##d6d8da}{#1}");k("\\grayE","\\textcolor{##babec2}{#1}");k("\\grayF","\\textcolor{##888d93}{#1}");k("\\grayG","\\textcolor{##626569}{#1}");k("\\grayH","\\textcolor{##3b3e40}{#1}");k("\\grayI","\\textcolor{##21242c}{#1}");k("\\kaBlue","\\textcolor{##314453}{#1}");k("\\kaGreen","\\textcolor{##71B307}{#1}");var O_={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},sf=class{constructor(e,n,a){this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new rf(lE,n.macros),this.mode=a,this.stack=[]}feed(e){this.lexer=new Ou(e,this.settings)}switchMode(e){this.mode=e}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(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,a,r;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:r,end:a}=this.consumeArg(["]"])}else({tokens:r,start:n,end:a}=this.consumeArg());return this.pushToken(new on("EOF",a.loc)),this.pushTokens(r),new on("",Zt.range(n,a))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],a=e&&e.length>0;a||this.consumeSpaces();var r=this.future(),i,s=0,o=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++s;else if(i.text==="}"){if(--s,s===-1)throw new G("Extra }",i)}else if(i.text==="EOF")throw new G("Unexpected end of input in a macro argument, expected '"+(e&&a?e[o]:"}")+"'",i);if(e&&a)if((s===0||s===1&&e[o]==="{")&&i.text===e[o]){if(++o,o===e.length){n.splice(-o,o);break}}else o=0}while(s!==0||a);return r.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:r,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new G("The length of delimiters doesn't match the number of args!");for(var a=n[0],r=0;r<a.length;r++){var i=this.popToken();if(a[r]!==i.text)throw new G("Use of the macro doesn't match its definition",i)}}for(var s=[],o=0;o<e;o++)s.push(this.consumeArg(n&&n[o+1]).tokens);return s}countExpansion(e){if(this.expansionCount+=e,this.expansionCount>this.settings.maxExpand)throw new G("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),a=n.text,r=n.noexpand?null:this._getExpansion(a);if(r==null||e&&r.unexpandable){if(e&&r==null&&a[0]==="\\"&&!this.isDefined(a))throw new G("Undefined control sequence: "+a);return this.pushToken(n),!1}this.countExpansion(1);var i=r.tokens,s=this.consumeArgs(r.numArgs,r.delimiters);if(r.numArgs){i=i.slice();for(var o=i.length-1;o>=0;--o){var l=i[o];if(l.text==="#"){if(o===0)throw new G("Incomplete placeholder at end of macro body",l);if(l=i[--o],l.text==="#")i.splice(o+1,1);else if(/^[1-9]$/.test(l.text))i.splice(o,2,...s[+l.text-1]);else throw new G("Not a valid argument number",l)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}}expandMacro(e){return this.macros.has(e)?this.expandTokens([new on(e)]):void 0}expandTokens(e){var n=[],a=this.stack.length;for(this.pushTokens(e);this.stack.length>a;)if(this.expandOnce(!0)===!1){var r=this.stack.pop();r.treatAsRelax&&(r.noexpand=!1,r.treatAsRelax=!1),n.push(r)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(a=>a.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var a=this.lexer.catcodes[e];if(a!=null&&a!==13)return}var r=typeof n=="function"?n(this):n;if(typeof r=="string"){var i=0;if(r.includes("#"))for(var s=r.replace(/##/g,"");s.includes("#"+(i+1));)++i;for(var o=new Ou(r,this.settings),l=[],c=o.lex();c.text!=="EOF";)l.push(c),c=o.lex();l.reverse();var u={tokens:l,numArgs:i};return u}return r}isDefined(e){return this.macros.has(e)||lr.hasOwnProperty(e)||Be.math.hasOwnProperty(e)||Be.text.hasOwnProperty(e)||O_.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:lr.hasOwnProperty(e)&&!lr[e].primitive}},qk=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,ju=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"}),Gh={"\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"}},Gk={\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"},Bu=class t{constructor(e,n){this.mode="math",this.gullet=new sf(e,n,this.mode),this.settings=n,this.leftrightDepth=0,this.nextToken=null}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new G("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new on("}")),this.gullet.pushTokens(e);var a=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,a}parseExpression(e,n){for(var a=[];;){this.mode==="math"&&this.consumeSpaces();var r=this.fetch();if(t.endOfExpression.has(r.text)||n&&r.text===n||e&&lr[r.text]&&lr[r.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;a.push(i)}return this.mode==="text"&&this.formLigatures(a),this.handleInfixNodes(a)}handleInfixNodes(e){for(var n=-1,a,r=0;r<e.length;r++){var i=e[r];if(i.type==="infix"){if(n!==-1)throw new G("only one infix operator per group",i.token);n=r,a=i.replaceWith}}if(n!==-1&&a){var s,o,l=e.slice(0,n),c=e.slice(n+1);l.length===1&&l[0].type==="ordgroup"?s=l[0]:s={type:"ordgroup",mode:this.mode,body:l},c.length===1&&c[0].type==="ordgroup"?o=c[0]:o={type:"ordgroup",mode:this.mode,body:c};var u;return a==="\\\\abovefrac"?u=this.callFunction(a,[s,e[n],o],[]):u=this.callFunction(a,[s,o],[]),[u]}else return e}handleSupSubscript(e){var n=this.fetch(),a=n.text;this.consume(),this.consumeSpaces();var r;do{var i;r=this.parseGroup(e)}while(((i=r)==null?void 0:i.type)==="internal");if(!r)throw new G("Expected group after '"+a+"'",n);return r}formatUnsupportedCmd(e){for(var n=[],a=0;a<e.length;a++)n.push({type:"textord",mode:"text",text:e[a]});var r={type:"text",mode:this.mode,body:n},i={type:"color",mode:this.mode,color:this.settings.errorColor,body:[r]};return i}parseAtom(e){var n=this.parseGroup("atom",e);if(n?.type==="internal"||this.mode==="text")return n;for(var a,r;;){this.consumeSpaces();var i=this.fetch();if(i.text==="\\limits"||i.text==="\\nolimits"){if(n&&n.type==="op"){var s=i.text==="\\limits";n.limits=s,n.alwaysHandleSupSub=!0}else if(n&&n.type==="operatorname")n.alwaysHandleSupSub&&(n.limits=i.text==="\\limits");else throw new G("Limit controls must follow a math operator",i);this.consume()}else if(i.text==="^"){if(a)throw new G("Double superscript",i);a=this.handleSupSubscript("superscript")}else if(i.text==="_"){if(r)throw new G("Double subscript",i);r=this.handleSupSubscript("subscript")}else if(i.text==="'"){if(a)throw new G("Double superscript",i);var o={type:"textord",mode:this.mode,text:"\\prime"},l=[o];for(this.consume();this.fetch().text==="'";)l.push(o),this.consume();this.fetch().text==="^"&&l.push(this.handleSupSubscript("superscript")),a={type:"ordgroup",mode:this.mode,body:l}}else if(ju[i.text]){var c=qk.test(i.text),u=[];for(u.push(new on(ju[i.text])),this.consume();;){var p=this.fetch().text;if(!ju[p]||qk.test(p)!==c)break;u.unshift(new on(ju[p])),this.consume()}var d=this.subparse(u);c?r={type:"ordgroup",mode:"math",body:d}:a={type:"ordgroup",mode:"math",body:d}}else break}return a||r?{type:"supsub",mode:this.mode,base:n,sup:a,sub:r}:n}parseFunction(e,n){var a=this.fetch(),r=a.text,i=lr[r];if(!i)return null;if(this.consume(),n&&n!=="atom"&&!i.allowedInArgument)throw new G("Got function '"+r+"' with no arguments"+(n?" as "+n:""),a);if(this.mode==="text"&&!i.allowedInText)throw new G("Can't use function '"+r+"' in text mode",a);if(this.mode==="math"&&i.allowedInMath===!1)throw new G("Can't use function '"+r+"' in math mode",a);var{args:s,optArgs:o}=this.parseArguments(r,i);return this.callFunction(r,s,o,a,e)}callFunction(e,n,a,r,i){var s={funcName:e,parser:this,token:r,breakOnTokenText:i},o=lr[e];if(o&&o.handler)return o.handler(s,n,a);throw new G("No function handler for "+e)}parseArguments(e,n){var a=n.numArgs+n.numOptionalArgs;if(a===0)return{args:[],optArgs:[]};for(var r=[],i=[],s=0;s<a;s++){var o=n.argTypes&&n.argTypes[s],l=s<n.numOptionalArgs;("primitive"in n&&n.primitive&&o==null||n.type==="sqrt"&&s===1&&i[0]==null)&&(o="primitive");var c=this.parseGroupOfType("argument to '"+e+"'",o,l);if(l)i.push(c);else if(c!=null)r.push(c);else throw new G("Null argument, please report this as a bug")}return{args:r,optArgs:i}}parseGroupOfType(e,n,a){switch(n){case"color":return this.parseColorGroup(a);case"size":return this.parseSizeGroup(a);case"url":return this.parseUrlGroup(a);case"math":case"text":return this.parseArgumentGroup(a,n);case"hbox":{var r=this.parseArgumentGroup(a,"text");return r!=null?{type:"styling",mode:r.mode,body:[r],style:"text"}:null}case"raw":{var i=this.parseStringGroup("raw",a);return i!=null?{type:"raw",mode:"text",string:i.text}:null}case"primitive":{if(a)throw new G("A primitive argument cannot be optional");var s=this.parseGroup(e);if(s==null)throw new G("Expected group as "+e,this.fetch());return s}case"original":case null:case void 0:return this.parseArgumentGroup(a);default:throw new G("Unknown group type as "+e,this.fetch())}}consumeSpaces(){for(;this.fetch().text===" ";)this.consume()}parseStringGroup(e,n){var a=this.gullet.scanArgument(n);if(a==null)return null;for(var r="",i;(i=this.fetch()).text!=="EOF";)r+=i.text,this.consume();return this.consume(),a.text=r,a}parseRegexGroup(e,n){for(var a=this.fetch(),r=a,i="",s;(s=this.fetch()).text!=="EOF"&&e.test(i+s.text);)r=s,i+=r.text,this.consume();if(i==="")throw new G("Invalid "+n+": '"+a.text+"'",a);return a.range(r,i)}parseColorGroup(e){var n=this.parseStringGroup("color",e);if(n==null)return null;var a=/^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(n.text);if(!a)throw new G("Invalid color: '"+n.text+"'",n);var r=a[0];return/^[0-9a-f]{6}$/i.test(r)&&(r="#"+r),{type:"color-token",mode:this.mode,color:r}}parseSizeGroup(e){var n,a=!1;if(this.gullet.consumeSpaces(),!e&&this.gullet.future().text!=="{"?n=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size"):n=this.parseStringGroup("size",e),!n)return null;!e&&n.text.length===0&&(n.text="0pt",a=!0);var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(n.text);if(!r)throw new G("Invalid size: '"+n.text+"'",n);var i={number:+(r[1]+r[2]),unit:r[3]};if(!Vk(i))throw new G("Invalid unit: '"+i.unit+"'",n);return{type:"size",mode:this.mode,value:i,isBlank:a}}parseUrlGroup(e){this.gullet.lexer.setCatcode("%",13),this.gullet.lexer.setCatcode("~",12);var n=this.parseStringGroup("url",e);if(this.gullet.lexer.setCatcode("%",14),this.gullet.lexer.setCatcode("~",13),n==null)return null;var a=n.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}}parseArgumentGroup(e,n){var a=this.gullet.scanArgument(e);if(a==null)return null;var r=this.mode;n&&this.switchMode(n),this.gullet.beginGroup();var i=this.parseExpression(!1,"EOF");this.expect("EOF"),this.gullet.endGroup();var s={type:"ordgroup",mode:this.mode,loc:a.loc,body:i};return n&&this.switchMode(r),s}parseGroup(e,n){var a=this.fetch(),r=a.text,i;if(r==="{"||r==="\\begingroup"){this.consume();var s=r==="{"?"}":"\\endgroup";this.gullet.beginGroup();var o=this.parseExpression(!1,s),l=this.fetch();this.expect(s),this.gullet.endGroup(),i={type:"ordgroup",mode:this.mode,loc:Zt.range(a,l),body:o,semisimple:r==="\\begingroup"||void 0}}else if(i=this.parseFunction(n,e)||this.parseSymbol(),i==null&&r[0]==="\\"&&!O_.hasOwnProperty(r)){if(this.settings.throwOnError)throw new G("Undefined control sequence: "+r,a);i=this.formatUnsupportedCmd(r),this.consume()}return i}formLigatures(e){for(var n=e.length-1,a=0;a<n;++a){var r=e[a];if(r.type==="textord"){var i=r.text,s=e[a+1];if(!(!s||s.type!=="textord")){if(i==="-"&&s.text==="-"){var o=e[a+2];a+1<n&&o&&o.type==="textord"&&o.text==="-"?(e.splice(a,3,{type:"textord",mode:"text",loc:Zt.range(r,o),text:"---"}),n-=2):(e.splice(a,2,{type:"textord",mode:"text",loc:Zt.range(r,s),text:"--"}),n-=1)}(i==="'"||i==="`")&&s.text===i&&(e.splice(a,2,{type:"textord",mode:"text",loc:Zt.range(r,s),text:i+i}),n-=1)}}}}parseSymbol(){var e=this.fetch(),n=e.text;if(/^\\verb[^a-zA-Z]/.test(n)){this.consume();var a=n.slice(5),r=a.charAt(0)==="*";if(r&&(a=a.slice(1)),a.length<2||a.charAt(0)!==a.slice(-1))throw new G(`\\verb assertion failed -- + please report what input caused this bug`);return a=a.slice(1,-1),{type:"verb",mode:"text",body:a,star:r}}Gk.hasOwnProperty(n[0])&&!Be[this.mode][n[0]]&&(this.settings.strict&&this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Accented Unicode text character "'+n[0]+'" used in math mode',e),n=Gk[n[0]]+n.slice(1));var i=sE.exec(n);i&&(n=n.substring(0,i.index),n==="i"?n="\u0131":n==="j"&&(n="\u0237"));var s;if(Be[this.mode][n]){this.settings.strict&&this.mode==="math"&&Kh.includes(n)&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var o=Be[this.mode][n].group,l=Zt.range(e),c;if(oS.hasOwnProperty(o)){var u=o;c={type:"atom",mode:this.mode,family:u,loc:l,text:n}}else c={type:o,mode:this.mode,loc:l,text:n};s=c}else if(n.charCodeAt(0)>=128)this.settings.strict&&(Hk(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Zt.range(e),text:n};else return null;if(this.consume(),i)for(var p=0;p<i[0].length;p++){var d=i[0][p];if(!Gh[d])throw new G("Unknown accent ' "+d+"'",e);var m=Gh[d][this.mode]||Gh[d].text;if(!m)throw new G("Accent "+d+" unsupported in "+this.mode+" mode",e);s={type:"accent",mode:this.mode,loc:Zt.range(e),label:m,isStretchy:!1,isShifty:!0,base:s}}return s}};Bu.endOfExpression=new Set(["}","\\endgroup","\\end","\\right","&"]);var wf=function(e,n){if(!(typeof e=="string"||e instanceof String))throw new TypeError("KaTeX can only parse string typed expression");var a=new Bu(e,n);delete a.gullet.macros.current["\\df@tag"];var r=a.parse();if(delete a.gullet.macros.current["\\current@color"],delete a.gullet.macros.current["\\color"],a.gullet.macros.get("\\df@tag")){if(!n.displayMode)throw new G("\\tag works only in display equations");r=[{type:"tag",mode:"text",body:r,tag:a.subparse([new on("\\df@tag")])}]}return r},B_=function(e,n,a){n.textContent="";var r=kf(e,a).toNode();n.appendChild(r)};typeof document<"u"&&document.compatMode!=="CSS1Compat"&&(typeof console<"u"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),B_=function(){throw new G("KaTeX doesn't work in quirks mode.")});var uE=function(e,n){var a=kf(e,n).toMarkup();return a},pE=function(e,n){var a=new Zo(n);return wf(e,a)},L_=function(e,n,a){if(a.throwOnError||!(e instanceof G))throw e;var r=D(["katex-error"],[new Gt(n)]);return r.setAttribute("title",e.toString()),r.setAttribute("style","color:"+a.errorColor),r},kf=function(e,n){var a=new Zo(n);try{var r=wf(e,a);return vS(r,e,a)}catch(i){return L_(i,e,a)}},dE=function(e,n){var a=new Zo(n);try{var r=wf(e,a);return $S(r,e,a)}catch(i){return L_(i,e,a)}},mE="0.16.45",hE={Span:pr,Anchor:$s,SymbolNode:Gt,SvgNode:Ln,PathNode:Yn,LineNode:Yo},D_={version:mE,render:B_,renderToString:uE,ParseError:G,SETTINGS_SCHEMA:Hh,__parse:pE,__renderToDomTree:kf,__renderToHTMLTree:dE,__setFontMetrics:iS,__defineSymbol:f,__defineFunction:X,__defineMacro:k,__domTree:hE};var fE={};function Xu(t){let e=this,n=t||fE,a=e.data(),r=a.micromarkExtensions||(a.micromarkExtensions=[]),i=a.fromMarkdownExtensions||(a.fromMarkdownExtensions=[]),s=a.toMarkdownExtensions||(a.toMarkdownExtensions=[]);r.push(Ah(n)),i.push(Sh()),s.push(Eh(n))}var gE=t=>crypto.getRandomValues(new Uint8Array(t)),bE=(t,e,n)=>{let a=256-256%t.length;if(a===256){let i=t.length-1;return(s=e)=>{if(!s)return"";let o="";for(;;){let l=n(s),c=s;for(;c--;)if(o+=t[l[c]&i],o.length>=s)return o}}}let r=Math.ceil(1.6*256*e/a);return(i=e)=>{if(!i)return"";let s="";for(;;){let o=n(r),l=r;for(;l--;)if(o[l]<a&&(s+=t[o[l]%t.length],s.length>=i))return s}}},F_=(t,e=21)=>bE(t,e|0,gE);var lW=F_("abcedfghicklmn",10);function re(t,e){let n=ek(t),a=r=>async()=>{a.key=n,await r.wait(hs);let i=e(r);return r.get(we).create(n,i),a.run=s=>r.get(we).call(t,s),()=>{r.get(we).remove(n)}};return a}function It(t){let e=n=>async()=>{await n.wait(Ft);let a=t(n);return n.update(bs,r=>[...r,a]),e.inputRule=a,()=>{n.update(bs,r=>r.filter(i=>i!==a))}};return e}function P_(t){let e=n=>async()=>{await n.wait(Ft);let a=t(n);return n.update(ws,r=>[...r,a]),e.pasteRule=a,()=>{n.update(ws,r=>r.filter(i=>i!==a))}};return e}function yE(t,e){let n=a=>async()=>{let r=e(a);return a.update(ms,i=>[...i.filter(s=>s[0]!==t),[t,r]]),n.id=t,n.schema=r,()=>{a.update(ms,i=>i.filter(([s])=>s!==t))}};return n.type=a=>{let r=a.get(Tt).marks[t];if(!r)throw Zb(t);return r},n}function Zu(t,e){let n=a=>async()=>{let r=e(a);return a.update(ds,i=>[...i.filter(s=>s[0]!==t),[t,r]]),n.id=t,n.schema=r,()=>{a.update(ds,i=>i.filter(([s])=>s!==t))}};return n.type=a=>{let r=a.get(Tt).nodes[t];if(!r)throw oc(t);return r},n}function ot(t){let e,n=a=>async()=>(await a.wait(Ft),e=t(a),a.update(Bn,r=>[...r,e]),()=>{a.update(Bn,r=>r.filter(i=>i!==e))});return n.plugin=()=>e,n.key=()=>e.spec.key,n}function xE(t){let e=n=>async()=>{await n.wait(fs);let a=n.get(Vo),r=t(n),i=a.addObjectKeymap(r);return e.keymap=r,()=>{i()}};return e}function Vt(t,e){let n=be(t,e),a=r=>(r.inject(n),()=>()=>{r.remove(n)});return a.key=n,a}function Oe(t,e){let n=Vt(e,t),a=Zu(t,i=>i.get(n.key)(i)),r=[n,a];return r.id=a.id,r.node=a,r.type=i=>a.type(i),r.ctx=n,r.key=n.key,r.extendSchema=i=>Oe(t,i(e)),r}function fr(t,e){let n=Vt(e,t),a=yE(t,i=>i.get(n.key)(i)),r=[n,a];return r.id=a.id,r.mark=a,r.type=i=>a.type(i),r.ctx=n,r.key=n.key,r.extendSchema=i=>fr(t,i(e)),r}function kt(t,e){let n=Vt(Object.fromEntries(Object.entries(e).map(([i,{shortcuts:s,priority:o}])=>[i,{shortcuts:s,priority:o}])),`${t}Keymap`),a=xE(i=>{let s=i.get(n.key),o=Object.entries(e).flatMap(([l,{command:c}])=>{let u=s[l],p=[u.shortcuts].flat(),d=u.priority;return p.map(m=>[m,{key:m,onRun:c,priority:d}])});return Object.fromEntries(o)}),r=[n,a];return r.ctx=n,r.shortcuts=a,r.key=n.key,r.keymap=a.keymap,r}var Cn=(t,e=()=>({}))=>Vt(e,`${t}Attr`),hi=(t,e=()=>({}))=>Vt(e,`${t}Attr`);function jn(t,e,n){let a=Vt(n??{},t),r=s=>async()=>{await s.wait(_a);let o={plugin:e(s),options:s.get(a.key)};return s.update(ys,l=>[...l,o]),()=>{s.update(ys,l=>l.filter(c=>c!==o))}},i=[a,r];return i.id=t,i.plugin=r,i.options=a,i}function un(t,e){return n=>n.get(we).call(t,e)}function _f(t){return e=>{let n=e.get(Dt),a=e.get(Tt),r=e.get($a);if(!t)return r(n.state.doc);let i=n.state.doc.slice(t.from,t.to,!0),s=a.topNodeType.createAndFill(null,i.content);return s?r(s):(console.error("No document found"),"")}}function q_(t,e=!1){return n=>{let a=n.get(Dt),r=n.get(va)(t);if(!r)return;if(!e){let{state:l}=a;return a.dispatch(l.tr.replace(0,l.doc.content.size,new V(r.content,0,0)))}let i=n.get(Tt),s=n.get(Po)({schema:i,doc:r,plugins:n.get(Bn)}),o=Qi.create(s);a.updateState(o)}}function wE(t){return e=>{let n=e.get(va)(t),a=e.get(Tt),r=On.fromSchema(a).serializeFragment(n.content);return zn.fromSchema(a).parseSlice(r)}}function G_(t,e){return n=>{let a=n.get(Dt),r=wE(t)(n);a.dispatch(a.state.tr.replace(e.from,e.to,r))}}function H_(t,e){return function(n,a){let{$from:r,$to:i,node:s}=n.selection;if(s&&s.isBlock||r.depth<2||!r.sameParent(i))return!1;let o=r.node(-1);if(o.type!=t)return!1;if(r.parent.content.size==0&&r.node(-1).childCount==r.indexAfter(-1)){if(r.depth==3||r.node(-3).type!=t||r.index(-2)!=r.node(-2).childCount-1)return!1;if(a){let p=B.empty,d=r.index(-1)?1:r.index(-2)?2:3;for(let w=r.depth-d;w>=r.depth-3;w--)p=B.from(r.node(w).copy(p));let m=r.indexAfter(-1)<r.node(-2).childCount?1:r.indexAfter(-2)<r.node(-3).childCount?2:3;p=p.append(B.from(t.createAndFill()));let h=r.before(r.depth-(d-1)),b=n.tr.replace(h,r.after(-m),new V(p,4-d,0)),y=-1;b.doc.nodesBetween(h,b.doc.content.size,(w,_)=>{if(y>-1)return!1;w.isTextblock&&w.content.size==0&&(y=_+1)}),y>-1&&b.setSelection(ae.near(b.doc.resolve(y))),a(b.scrollIntoView())}return!0}let l=i.pos==r.end()?o.contentMatchAt(0).defaultType:null,c=n.tr.delete(r.pos,i.pos),u=l?[e?{type:t,attrs:e}:null,{type:l}]:void 0;return Yr(c.doc,r.pos,2,u)?(a&&a(c.split(r.pos,2,u).scrollIntoView()),!0):!1}}function V_(t){return function(e,n){let{$from:a,$to:r}=e.selection,i=a.blockRange(r,s=>s.childCount>0&&s.firstChild.type==t);return i?n?a.node(i.depth-1).type==t?kE(e,n,t,i):_E(e,n,i):!0:!1}}function kE(t,e,n,a){let r=t.tr,i=a.end,s=a.$to.end(a.depth);i<s&&(r.step(new yt(i-1,s,i,s,new V(B.from(n.create(null,a.parent.copy())),1,0),1,!0)),a=new xo(r.doc.resolve(a.$from.pos),r.doc.resolve(s),a.depth));let o=Ji(a);if(o==null)return!1;r.lift(a,o);let l=r.doc.resolve(r.mapping.map(i,-1)-1);return Qr(r.doc,l.pos)&&l.nodeBefore.type==l.nodeAfter.type&&r.join(l.pos),e(r.scrollIntoView()),!0}function _E(t,e,n){let a=t.tr,r=n.parent;for(let m=n.end,h=n.endIndex-1,b=n.startIndex;h>b;h--)m-=r.child(h).nodeSize,a.delete(m-1,m+1);let i=a.doc.resolve(n.start),s=i.nodeAfter;if(a.mapping.map(n.end)!=n.start+i.nodeAfter.nodeSize)return!1;let o=n.startIndex==0,l=n.endIndex==r.childCount,c=i.node(-1),u=i.index(-1);if(!c.canReplace(u+(o?0:1),u+1,s.content.append(l?B.empty:B.from(r))))return!1;let p=i.pos,d=p+s.nodeSize;return a.step(new yt(p-(o?1:0),d+(l?1:0),p+1,d-1,new V((o?B.empty:B.from(r.copy(B.empty))).append(l?B.empty:B.from(r.copy(B.empty))),o?0:1,l?0:1),o?0:1)),e(a.scrollIntoView()),!0}function W_(t){return function(e,n){let{$from:a,$to:r}=e.selection,i=a.blockRange(r,c=>c.childCount>0&&c.firstChild.type==t);if(!i)return!1;let s=i.startIndex;if(s==0)return!1;let o=i.parent,l=o.child(s-1);if(l.type!=t)return!1;if(n){let c=l.lastChild&&l.lastChild.type==o.type,u=B.from(c?t.create():null),p=new V(B.from(t.create(null,B.from(o.type.create(null,u)))),c?3:1,0),d=i.start,m=i.end;n(e.tr.step(new yt(d-(c?3:1),m,d,m,p,1,!0)).scrollIntoView())}return!0}}function vf(t){let e=new Map;if(!t||!t.type)throw new Error("mdast-util-definitions expected node");return In(t,"definition",function(a){let r=U_(a.identifier);r&&!e.get(r)&&e.set(r,a)}),n;function n(a){let r=U_(a);return e.get(r)}}function U_(t){return String(t||"").toUpperCase()}function Ju(){return function(t){let e=vf(t);In(t,function(n,a,r){if(n.type==="definition"&&r!==void 0&&typeof a=="number")return r.children.splice(a,1),[Pr,a];if(n.type==="imageReference"||n.type==="linkReference"){let i=e(n.identifier);if(i&&r&&typeof a=="number")return r.children[a]=n.type==="imageReference"?{type:"image",url:i.url,title:i.title,alt:n.alt}:{type:"link",url:i.url,title:i.title,children:n.children},[Pr,a]}})}}function K_(t,e){if(!(e.childCount>=1&&e.lastChild?.type.name==="hardbreak")){t.next(e.content);return}let n=[];e.content.forEach((a,r,i)=>{i!==e.childCount-1&&n.push(a)}),t.next(B.fromArray(n))}function z(t,e){return Object.assign(t,{meta:{package:"@milkdown/preset-commonmark",...e}}),t}var $f=hi("emphasis");z($f,{displayName:"Attr<emphasis>",group:"Emphasis"});var Ts=fr("emphasis",t=>({attrs:{marker:{default:t.get(ps).emphasis||"*",validate:"string"}},parseDOM:[{tag:"i"},{tag:"em"},{style:"font-style",getAttrs:e=>e==="italic"}],toDOM:e=>["em",t.get($f.key)(e)],parseMarkdown:{match:e=>e.type==="emphasis",runner:(e,n,a)=>{e.openMark(a,{marker:n.marker}),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="emphasis",runner:(e,n)=>{e.withMark(n,"emphasis",void 0,{marker:n.attrs.marker})}}}));z(Ts.mark,{displayName:"MarkSchema<emphasis>",group:"Emphasis"});z(Ts.ctx,{displayName:"MarkSchemaCtx<emphasis>",group:"Emphasis"});var nl=re("ToggleEmphasis",t=>()=>ns(Ts.type(t)));z(nl,{displayName:"Command<toggleEmphasisCommand>",group:"Emphasis"});var X_=It(t=>ni(/(?:^|[^*])\*([^*]+)\*$/,Ts.type(t),{getAttr:()=>({marker:"*"}),updateCaptured:({fullMatch:e,start:n})=>e.startsWith("*")?{}:{fullMatch:e.slice(1),start:n+1}}));z(X_,{displayName:"InputRule<emphasis>|Star",group:"Emphasis"});var Z_=It(t=>ni(/\b_(?![_\s])(.*?[^_\s])_\b/,Ts.type(t),{getAttr:()=>({marker:"_"}),updateCaptured:({fullMatch:e,start:n})=>e.startsWith("_")?{}:{fullMatch:e.slice(1),start:n+1}}));z(Z_,{displayName:"InputRule<emphasis>|Underscore",group:"Emphasis"});var Cf=kt("emphasisKeymap",{ToggleEmphasis:{shortcuts:"Mod-i",command:t=>{let e=t.get(we);return()=>e.call(nl.key)}}});z(Cf.ctx,{displayName:"KeymapCtx<emphasis>",group:"Emphasis"});z(Cf.shortcuts,{displayName:"Keymap<emphasis>",group:"Emphasis"});var jf=hi("strong");z(jf,{displayName:"Attr<strong>",group:"Strong"});var al=fr("strong",t=>({attrs:{marker:{default:t.get(ps).strong||"*",validate:"string"}},parseDOM:[{tag:"b",getAttrs:e=>e.style.fontWeight!="normal"&&null},{tag:"strong"},{style:"font-style",getAttrs:e=>e==="bold"},{style:"font-weight=400",clearMark:e=>e.type.name=="strong"},{style:"font-weight",getAttrs:e=>/^(bold(er)?|[5-9]\d{2,})$/.test(e)&&null}],toDOM:e=>["strong",t.get(jf.key)(e)],parseMarkdown:{match:e=>e.type==="strong",runner:(e,n,a)=>{e.openMark(a,{marker:n.marker}),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="strong",runner:(e,n)=>{e.withMark(n,"strong",void 0,{marker:n.attrs.marker})}}}));z(al.mark,{displayName:"MarkSchema<strong>",group:"Strong"});z(al.ctx,{displayName:"MarkSchemaCtx<strong>",group:"Strong"});var rl=re("ToggleStrong",t=>()=>ns(al.type(t)));z(rl,{displayName:"Command<toggleStrongCommand>",group:"Strong"});var J_=It(t=>ni(/(?<![\w:/])(?:\*\*|__)([^*_]+?)(?:\*\*|__)(?![\w/])$/,al.type(t),{getAttr:e=>({marker:e[0].startsWith("*")?"*":"_"})}));z(J_,{displayName:"InputRule<strong>",group:"Strong"});var Sf=kt("strongKeymap",{ToggleBold:{shortcuts:["Mod-b"],command:t=>{let e=t.get(we);return()=>e.call(rl.key)}}});z(Sf.ctx,{displayName:"KeymapCtx<strong>",group:"Strong"});z(Sf.shortcuts,{displayName:"Keymap<strong>",group:"Strong"});var Ef=hi("inlineCode");z(Ef,{displayName:"Attr<inlineCode>",group:"InlineCode"});var gr=fr("inlineCode",t=>({priority:100,code:!0,parseDOM:[{tag:"code"}],toDOM:e=>["code",t.get(Ef.key)(e)],parseMarkdown:{match:e=>e.type==="inlineCode",runner:(e,n,a)=>{e.openMark(a),e.addText(n.value),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="inlineCode",runner:(e,n,a)=>(e.withMark(n,"inlineCode",a.text||""),!0)}}));z(gr.mark,{displayName:"MarkSchema<inlineCode>",group:"InlineCode"});z(gr.ctx,{displayName:"MarkSchemaCtx<inlineCode>",group:"InlineCode"});var il=re("ToggleInlineCode",t=>()=>(e,n)=>{let{selection:a,tr:r}=e;if(a.empty)return!1;let{from:i,to:s}=a;return e.doc.rangeHasMark(i,s,gr.type(t))?(n?.(r.removeMark(i,s,gr.type(t))),!0):(Object.keys(e.schema.marks).filter(o=>o!==gr.type.name).map(o=>e.schema.marks[o]).forEach(o=>{r.removeMark(i,s,o)}),n?.(r.addMark(i,s,gr.type(t).create())),!0)});z(il,{displayName:"Command<toggleInlineCodeCommand>",group:"InlineCode"});var Y_=It(t=>ni(/(?:`)([^`]+)(?:`)$/,gr.type(t)));z(Y_,{displayName:"InputRule<inlineCodeInputRule>",group:"InlineCode"});var Af=kt("inlineCodeKeymap",{ToggleInlineCode:{shortcuts:"Mod-e",command:t=>{let e=t.get(we);return()=>e.call(il.key)}}});z(Af.ctx,{displayName:"KeymapCtx<inlineCode>",group:"InlineCode"});z(Af.shortcuts,{displayName:"Keymap<inlineCode>",group:"InlineCode"});var Tf=hi("link");z(Tf,{displayName:"Attr<link>",group:"Link"});var As=fr("link",t=>({attrs:{href:{validate:"string"},title:{default:null,validate:"string|null"}},parseDOM:[{tag:"a[href]",getAttrs:e=>{if(!(e instanceof HTMLElement))throw an(e);return{href:e.getAttribute("href"),title:e.getAttribute("title")}}}],toDOM:e=>["a",{...t.get(Tf.key)(e),...e.attrs}],parseMarkdown:{match:e=>e.type==="link",runner:(e,n,a)=>{let r=n.url,i=n.title;e.openMark(a,{href:r,title:i}),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="link",runner:(e,n)=>{e.withMark(n,"link",void 0,{title:n.attrs.title,url:n.attrs.href})}}}));z(As.mark,{displayName:"MarkSchema<link>",group:"Link"});var Qu=re("ToggleLink",t=>(e={})=>ns(As.type(t),e));z(Qu,{displayName:"Command<toggleLinkCommand>",group:"Link"});var Q_=re("UpdateLink",t=>(e={})=>(n,a)=>{if(!a)return!1;let r,i=-1,{selection:s}=n,{from:o,to:l}=s;if(n.doc.nodesBetween(o,o===l?l+1:l,(h,b)=>{if(As.type(t).isInSet(h.marks))return r=h,i=b,!1}),!r)return!1;let c=r.marks.find(({type:h})=>h===As.type(t));if(!c)return!1;let u=i,p=i+r.nodeSize,{tr:d}=n,m=As.type(t).create({...c.attrs,...e});return m?(a(d.removeMark(u,p,c).addMark(u,p,m).setSelection(new ue(d.selection.$anchor)).scrollIntoView()),!0):!1});z(Q_,{displayName:"Command<updateLinkCommand>",group:"Link"});var e2=Zu("doc",()=>({content:"block+",parseMarkdown:{match:({type:t})=>t==="root",runner:(t,e,n)=>{t.injectRoot(e,n)}},toMarkdown:{match:t=>t.type.name==="doc",runner:(t,e)=>{t.openNode("root"),t.next(e.content)}}}));z(e2,{displayName:"NodeSchema<doc>",group:"Doc"});function vE(t){return qr(t,e=>e.type==="html"&&["<br />","<br>","<br >","<br/>"].includes(e.value?.trim()),(e,n)=>{if(!n.length)return;let a=n[n.length-1];if(!a)return;let r=a.children.indexOf(e);r!==-1&&a.children.splice(r,1)},!0)}var ep=jn("remark-preserve-empty-line",()=>()=>vE);z(ep.plugin,{displayName:"Remark<remarkPreserveEmptyLine>",group:"Remark"});z(ep.options,{displayName:"RemarkConfig<remarkPreserveEmptyLine>",group:"Remark"});var Mf=Cn("paragraph");z(Mf,{displayName:"Attr<paragraph>",group:"Paragraph"});var Dn=Oe("paragraph",t=>({content:"inline*",group:"block",parseDOM:[{tag:"p"}],toDOM:e=>["p",t.get(Mf.key)(e),0],parseMarkdown:{match:e=>e.type==="paragraph",runner:(e,n,a)=>{e.openNode(a),n.children?e.next(n.children):e.addText(n.value||""),e.closeNode()}},toMarkdown:{match:e=>e.type.name==="paragraph",runner:(e,n)=>{let a=t.get(Dt).state?.doc.lastChild;e.openNode("paragraph"),(!n.content||n.content.size===0)&&n!==a&&$E(t)?e.addNode("html",void 0,"<br />"):K_(e,n),e.closeNode()}}}));function $E(t){let e=!1;try{t.get(ep.id),e=!0}catch{e=!1}return e}z(Dn.node,{displayName:"NodeSchema<paragraph>",group:"Paragraph"});z(Dn.ctx,{displayName:"NodeSchemaCtx<paragraph>",group:"Paragraph"});var Nf=re("TurnIntoText",t=>()=>ts(Dn.type(t)));z(Nf,{displayName:"Command<turnIntoTextCommand>",group:"Paragraph"});var If=kt("paragraphKeymap",{TurnIntoText:{shortcuts:"Mod-Alt-0",command:t=>{let e=t.get(we);return()=>e.call(Nf.key)}}});z(If.ctx,{displayName:"KeymapCtx<paragraph>",group:"Paragraph"});z(If.shortcuts,{displayName:"Keymap<paragraph>",group:"Paragraph"});var CE=Array(6).fill(0).map((t,e)=>e+1);function jE(t){return t.textContent.toLowerCase().trim().replace(/\s+/g,"-")}var tp=Vt(jE,"headingIdGenerator");z(tp,{displayName:"Ctx<HeadingIdGenerator>",group:"Heading"});var Rf=Cn("heading");z(Rf,{displayName:"Attr<heading>",group:"Heading"});var gi=Oe("heading",t=>{let e=t.get(tp.key);return{content:"inline*",group:"block",defining:!0,attrs:{id:{default:"",validate:"string"},level:{default:1,validate:"number"}},parseDOM:CE.map(n=>({tag:`h${n}`,getAttrs:a=>{if(!(a instanceof HTMLElement))throw an(a);return{level:n,id:a.id}}})),toDOM:n=>[`h${n.attrs.level}`,{...t.get(Rf.key)(n),id:n.attrs.id||e(n)},0],parseMarkdown:{match:({type:n})=>n==="heading",runner:(n,a,r)=>{let i=a.depth;n.openNode(r,{level:i}),n.next(a.children),n.closeNode()}},toMarkdown:{match:n=>n.type.name==="heading",runner:(n,a)=>{n.openNode("heading",void 0,{depth:a.attrs.level}),K_(n,a),n.closeNode()}}}});z(gi.node,{displayName:"NodeSchema<heading>",group:"Heading"});z(gi.ctx,{displayName:"NodeSchemaCtx<heading>",group:"Heading"});var t2=It(t=>zm(/^(?<hashes>#+)\s$/,gi.type(t),e=>{let n=e.groups?.hashes?.length||0,{$from:a}=t.get(Dt).state.selection,r=a.node();if(r.type.name==="heading"){let i=Number(r.attrs.level)+Number(n);return i>6&&(i=6),{level:i}}return{level:n}}));z(t2,{displayName:"InputRule<wrapInHeadingInputRule>",group:"Heading"});var na=re("WrapInHeading",t=>e=>(e??=1,e<1?ts(Dn.type(t)):ts(gi.type(t),{level:e})));z(na,{displayName:"Command<wrapInHeadingCommand>",group:"Heading"});var zf=re("DowngradeHeading",t=>()=>(e,n,a)=>{let{$from:r}=e.selection,i=r.node();if(i.type!==gi.type(t)||!e.selection.empty||r.parentOffset!==0)return!1;let s=i.attrs.level-1;return s?(n?.(e.tr.setNodeMarkup(e.selection.$from.before(),void 0,{...i.attrs,level:s})),!0):ts(Dn.type(t))(e,n,a)});z(zf,{displayName:"Command<downgradeHeadingCommand>",group:"Heading"});var Of=kt("headingKeymap",{TurnIntoH1:{shortcuts:"Mod-Alt-1",command:t=>{let e=t.get(we);return()=>e.call(na.key,1)}},TurnIntoH2:{shortcuts:"Mod-Alt-2",command:t=>{let e=t.get(we);return()=>e.call(na.key,2)}},TurnIntoH3:{shortcuts:"Mod-Alt-3",command:t=>{let e=t.get(we);return()=>e.call(na.key,3)}},TurnIntoH4:{shortcuts:"Mod-Alt-4",command:t=>{let e=t.get(we);return()=>e.call(na.key,4)}},TurnIntoH5:{shortcuts:"Mod-Alt-5",command:t=>{let e=t.get(we);return()=>e.call(na.key,5)}},TurnIntoH6:{shortcuts:"Mod-Alt-6",command:t=>{let e=t.get(we);return()=>e.call(na.key,6)}},DowngradeHeading:{shortcuts:["Delete","Backspace"],command:t=>{let e=t.get(we);return()=>e.call(zf.key)}}});z(Of.ctx,{displayName:"KeymapCtx<heading>",group:"Heading"});z(Of.shortcuts,{displayName:"Keymap<heading>",group:"Heading"});var Bf=Cn("blockquote");z(Bf,{displayName:"Attr<blockquote>",group:"Blockquote"});var sl=Oe("blockquote",t=>({content:"block+",group:"block",defining:!0,parseDOM:[{tag:"blockquote"}],toDOM:e=>["blockquote",t.get(Bf.key)(e),0],parseMarkdown:{match:({type:e})=>e==="blockquote",runner:(e,n,a)=>{e.openNode(a).next(n.children).closeNode()}},toMarkdown:{match:e=>e.type.name==="blockquote",runner:(e,n)=>{e.openNode("blockquote").next(n.content).closeNode()}}}));z(sl.node,{displayName:"NodeSchema<blockquote>",group:"Blockquote"});z(sl.ctx,{displayName:"NodeSchemaCtx<blockquote>",group:"Blockquote"});var n2=It(t=>Vc(/^\s*>\s$/,sl.type(t)));z(n2,{displayName:"InputRule<wrapInBlockquoteInputRule>",group:"Blockquote"});var ol=re("WrapInBlockquote",t=>()=>Hc(sl.type(t)));z(ol,{displayName:"Command<wrapInBlockquoteCommand>",group:"Blockquote"});var Lf=kt("blockquoteKeymap",{WrapInBlockquote:{shortcuts:"Mod-Shift-b",command:t=>{let e=t.get(we);return()=>e.call(ol.key)}}});z(Lf.ctx,{displayName:"KeymapCtx<blockquote>",group:"Blockquote"});z(Lf.shortcuts,{displayName:"Keymap<blockquote>",group:"Blockquote"});var Df=Cn("codeBlock",()=>({pre:{},code:{}}));z(Df,{displayName:"Attr<codeBlock>",group:"CodeBlock"});var ll=Oe("code_block",t=>({content:"text*",group:"block",marks:"",defining:!0,code:!0,attrs:{language:{default:"",validate:"string"}},parseDOM:[{tag:"pre",preserveWhitespace:"full",getAttrs:e=>{if(!(e instanceof HTMLElement))throw an(e);return{language:e.dataset.language}}}],toDOM:e=>{let n=t.get(Df.key)(e),a=e.attrs.language,r=a&&a.length>0?{"data-language":a}:void 0;return["pre",{...n.pre,...r},["code",n.code,0]]},parseMarkdown:{match:({type:e})=>e==="code",runner:(e,n,a)=>{let r=n.lang??"",i=n.value;e.openNode(a,{language:r}),i&&e.addText(i),e.closeNode()}},toMarkdown:{match:e=>e.type.name==="code_block",runner:(e,n)=>{e.addNode("code",void 0,n.content.firstChild?.text||"",{lang:n.attrs.language})}}}));z(ll.node,{displayName:"NodeSchema<codeBlock>",group:"CodeBlock"});z(ll.ctx,{displayName:"NodeSchemaCtx<codeBlock>",group:"CodeBlock"});var a2=It(t=>zm(/^```(?<language>[a-z]*)?[\s\n]$/,ll.type(t),e=>({language:e.groups?.language??""})));z(a2,{displayName:"InputRule<createCodeBlockInputRule>",group:"CodeBlock"});var cl=re("CreateCodeBlock",t=>(e="")=>ts(ll.type(t),{language:e}));z(cl,{displayName:"Command<createCodeBlockCommand>",group:"CodeBlock"});var SE=re("UpdateCodeBlockLanguage",()=>({pos:t,language:e}={pos:-1,language:""})=>(n,a)=>t>=0?(a?.(n.tr.setNodeAttribute(t,"language",e)),!0):!1);z(SE,{displayName:"Command<updateCodeBlockLanguageCommand>",group:"CodeBlock"});var Ff=kt("codeBlockKeymap",{CreateCodeBlock:{shortcuts:"Mod-Alt-c",command:t=>{let e=t.get(we);return()=>e.call(cl.key)}}});z(Ff.ctx,{displayName:"KeymapCtx<codeBlock>",group:"CodeBlock"});z(Ff.shortcuts,{displayName:"Keymap<codeBlock>",group:"CodeBlock"});var Pf=Cn("image");z(Pf,{displayName:"Attr<image>",group:"Image"});var Ms=Oe("image",t=>({inline:!0,group:"inline",selectable:!0,draggable:!0,marks:"",atom:!0,defining:!0,isolating:!0,attrs:{src:{default:"",validate:"string"},alt:{default:"",validate:"string"},title:{default:"",validate:"string"}},parseDOM:[{tag:"img[src]",getAttrs:e=>{if(!(e instanceof HTMLElement))throw an(e);return{src:e.getAttribute("src")||"",alt:e.getAttribute("alt")||"",title:e.getAttribute("title")||e.getAttribute("alt")||""}}}],toDOM:e=>["img",{...t.get(Pf.key)(e),...e.attrs}],parseMarkdown:{match:({type:e})=>e==="image",runner:(e,n,a)=>{let r=n.url,i=n.alt,s=n.title;e.addNode(a,{src:r,alt:i,title:s})}},toMarkdown:{match:e=>e.type.name==="image",runner:(e,n)=>{e.addNode("image",void 0,void 0,{title:n.attrs.title,url:n.attrs.src,alt:n.attrs.alt})}}}));z(Ms.node,{displayName:"NodeSchema<image>",group:"Image"});z(Ms.ctx,{displayName:"NodeSchemaCtx<image>",group:"Image"});var r2=re("InsertImage",t=>(e={})=>(n,a)=>{if(!a)return!0;let{src:r="",alt:i="",title:s=""}=e,o=Ms.type(t).create({src:r,alt:i,title:s});return o&&a(n.tr.replaceSelectionWith(o).scrollIntoView()),!0});z(r2,{displayName:"Command<insertImageCommand>",group:"Image"});var i2=re("UpdateImage",t=>(e={})=>(n,a)=>{let r=Ex(n.selection,Ms.type(t));if(!r)return!1;let{node:i,pos:s}=r,o={...i.attrs},{src:l,alt:c,title:u}=e;return l!==void 0&&(o.src=l),c!==void 0&&(o.alt=c),u!==void 0&&(o.title=u),a?.(n.tr.setNodeMarkup(s,void 0,o).scrollIntoView()),!0});z(i2,{displayName:"Command<updateImageCommand>",group:"Image"});var EE=It(t=>new mt(/!\[(?<alt>.*?)]\((?<filename>.*?)\s*(?="|\))"?(?<title>[^"]+)?"?\)/,(e,n,a,r)=>{let[i,s,o="",l]=n;return i?e.tr.replaceWith(a,r,Ms.type(t).create({src:o,alt:s,title:l})):null}));z(EE,{displayName:"InputRule<insertImageInputRule>",group:"Image"});var Yu=Cn("hardbreak",t=>({"data-type":"hardbreak","data-is-inline":t.attrs.isInline}));z(Yu,{displayName:"Attr<hardbreak>",group:"Hardbreak"});var fi=Oe("hardbreak",t=>({inline:!0,group:"inline",attrs:{isInline:{default:!1,validate:"boolean"}},selectable:!1,parseDOM:[{tag:"br"},{tag:'span[data-type="hardbreak"]',getAttrs:()=>({isInline:!0})}],toDOM:e=>e.attrs.isInline?["span",t.get(Yu.key)(e)," "]:["br",t.get(Yu.key)(e)],parseMarkdown:{match:({type:e})=>e==="break",runner:(e,n,a)=>{e.addNode(a,{isInline:!!n.data?.isInline})}},leafText:()=>` `,toMarkdown:{match:e=>e.type.name==="hardbreak",runner:(e,n)=>{n.attrs.isInline?e.addNode("text",void 0,` -`):e.addNode("break")}}}));z(li.node,{displayName:"NodeSchema<hardbreak>",group:"Hardbreak"});z(li.ctx,{displayName:"NodeSchemaCtx<hardbreak>",group:"Hardbreak"});var Af=re("InsertHardbreak",t=>()=>(e,n)=>{let{selection:a,tr:r}=e;if(!(a instanceof ue))return!1;if(a.empty){let i=a.$from.node();if(i.childCount>0&&i.lastChild?.type.name==="hardbreak")return n?.(r.replaceRangeWith(a.to-1,a.to,e.schema.node("paragraph")).setSelection(ae.near(r.doc.resolve(a.to))).scrollIntoView()),!0}return n?.(r.setMeta("hardbreak",!0).replaceSelectionWith(li.type(t).create()).scrollIntoView()),!0});z(Af,{displayName:"Command<insertHardbreakCommand>",group:"Hardbreak"});var Tf=xt("hardbreakKeymap",{InsertHardbreak:{shortcuts:"Shift-Enter",command:t=>{let e=t.get(xe);return()=>e.call(Af.key)}}});z(Tf.ctx,{displayName:"KeymapCtx<hardbreak>",group:"Hardbreak"});z(Tf.shortcuts,{displayName:"Keymap<hardbreak>",group:"Hardbreak"});var Mf=_n("hr");z(Mf,{displayName:"Attr<hr>",group:"Hr"});var el=ze("hr",t=>({group:"block",parseDOM:[{tag:"hr"}],toDOM:e=>["hr",t.get(Mf.key)(e)],parseMarkdown:{match:({type:e})=>e==="thematicBreak",runner:(e,n,a)=>{e.addNode(a)}},toMarkdown:{match:e=>e.type.name==="hr",runner:e=>{e.addNode("thematicBreak")}}}));z(el.node,{displayName:"NodeSchema<hr>",group:"Hr"});z(el.ctx,{displayName:"NodeSchemaCtx<hr>",group:"Hr"});var D_=Tt(t=>new ct(/^(?:---|___\s|\*\*\*\s)$/,(e,n,a,r)=>{let{tr:i}=e;return n[0]&&i.replaceWith(a-1,r,el.type(t).create()),i}));z(D_,{displayName:"InputRule<insertHrInputRule>",group:"Hr"});var Uu=re("InsertHr",t=>()=>(e,n)=>{if(!n)return!0;let a=Ln.node.type(t).create(),{tr:r,selection:i}=e,{from:s}=i,o=el.type(t).create();if(!o)return!0;let l=r.replaceSelectionWith(o).insert(s,a),c=ae.findFrom(l.doc.resolve(s),1,!0);return c&&n(l.setSelection(c).scrollIntoView()),!0});z(Uu,{displayName:"Command<insertHrCommand>",group:"Hr"});var Nf=_n("bulletList");z(Nf,{displayName:"Attr<bulletList>",group:"BulletList"});var vs=ze("bullet_list",t=>({content:"listItem+",group:"block",attrs:{spread:{default:!1,validate:"boolean"}},parseDOM:[{tag:"ul",getAttrs:e=>{if(!(e instanceof HTMLElement))throw Qt(e);return{spread:e.dataset.spread==="true"}}}],toDOM:e=>["ul",{...t.get(Nf.key)(e),"data-spread":e.attrs.spread},0],parseMarkdown:{match:({type:e,ordered:n})=>e==="list"&&!n,runner:(e,n,a)=>{let r=n.spread!=null?`${n.spread}`:"false";e.openNode(a,{spread:r}).next(n.children).closeNode()}},toMarkdown:{match:e=>e.type.name==="bullet_list",runner:(e,n)=>{e.openNode("list",void 0,{ordered:!1,spread:n.attrs.spread}).next(n.content).closeNode()}}}));z(vs.node,{displayName:"NodeSchema<bulletList>",group:"BulletList"});z(vs.ctx,{displayName:"NodeSchemaCtx<bulletList>",group:"BulletList"});var F_=Tt(t=>Oc(/^\s*([-+*])\s$/,vs.type(t)));z(F_,{displayName:"InputRule<wrapInBulletListInputRule>",group:"BulletList"});var tl=re("WrapInBulletList",t=>()=>zc(vs.type(t)));z(tl,{displayName:"Command<wrapInBulletListCommand>",group:"BulletList"});var If=xt("bulletListKeymap",{WrapInBulletList:{shortcuts:"Mod-Alt-8",command:t=>{let e=t.get(xe);return()=>e.call(tl.key)}}});z(If.ctx,{displayName:"KeymapCtx<bulletListKeymap>",group:"BulletList"});z(If.shortcuts,{displayName:"Keymap<bulletListKeymap>",group:"BulletList"});var Rf=_n("orderedList");z(Rf,{displayName:"Attr<orderedList>",group:"OrderedList"});var $s=ze("ordered_list",t=>({content:"listItem+",group:"block",attrs:{order:{default:1,validate:"number"},spread:{default:!1,validate:"boolean"}},parseDOM:[{tag:"ol",getAttrs:e=>{if(!(e instanceof HTMLElement))throw Qt(e);return{spread:e.dataset.spread,order:e.hasAttribute("start")?Number(e.getAttribute("start")):1}}}],toDOM:e=>["ol",{...t.get(Rf.key)(e),...e.attrs.order===1?{}:{start:e.attrs.order},"data-spread":e.attrs.spread},0],parseMarkdown:{match:({type:e,ordered:n})=>e==="list"&&!!n,runner:(e,n,a)=>{let r=n.spread!=null?`${n.spread}`:"true";e.openNode(a,{spread:r,order:n.start??1}).next(n.children).closeNode()}},toMarkdown:{match:e=>e.type.name==="ordered_list",runner:(e,n)=>{e.openNode("list",void 0,{ordered:!0,start:n.attrs.order??1,spread:n.attrs.spread==="true"}),e.next(n.content),e.closeNode()}}}));z($s.node,{displayName:"NodeSchema<orderedList>",group:"OrderedList"});z($s.ctx,{displayName:"NodeSchemaCtx<orderedList>",group:"OrderedList"});var q_=Tt(t=>Oc(/^\s*(\d+)\.\s$/,$s.type(t),e=>({order:Number(e[1])}),(e,n)=>n.childCount+n.attrs.order===Number(e[1])));z(q_,{displayName:"InputRule<wrapInOrderedListInputRule>",group:"OrderedList"});var nl=re("WrapInOrderedList",t=>()=>zc($s.type(t)));z(nl,{displayName:"Command<wrapInOrderedListCommand>",group:"OrderedList"});var zf=xt("orderedListKeymap",{WrapInOrderedList:{shortcuts:"Mod-Alt-7",command:t=>{let e=t.get(xe);return()=>e.call(nl.key)}}});z(zf.ctx,{displayName:"KeymapCtx<orderedList>",group:"OrderedList"});z(zf.shortcuts,{displayName:"Keymap<orderedList>",group:"OrderedList"});var Of=_n("listItem");z(Of,{displayName:"Attr<listItem>",group:"ListItem"});var ea=ze("list_item",t=>({group:"listItem",content:"paragraph block*",attrs:{label:{default:"\u2022",validate:"string"},listType:{default:"bullet",validate:"string"},spread:{default:!0,validate:"boolean"}},defining:!0,parseDOM:[{tag:"li",getAttrs:e=>{if(!(e instanceof HTMLElement))throw Qt(e);return{label:e.dataset.label,listType:e.dataset.listType,spread:e.dataset.spread==="true"}}}],toDOM:e=>["li",{...t.get(Of.key)(e),"data-label":e.attrs.label,"data-list-type":e.attrs.listType,"data-spread":e.attrs.spread},0],parseMarkdown:{match:({type:e})=>e==="listItem",runner:(e,n,a)=>{let r=n.label!=null?`${n.label}.`:"\u2022",i=n.label!=null?"ordered":"bullet",s=n.spread!=null?`${n.spread}`:"true";e.openNode(a,{label:r,listType:i,spread:s}),e.next(n.children),e.closeNode()}},toMarkdown:{match:e=>e.type.name==="list_item",runner:(e,n)=>{e.openNode("listItem",void 0,{spread:n.attrs.spread}),e.next(n.content),e.closeNode()}}}));z(ea.node,{displayName:"NodeSchema<listItem>",group:"ListItem"});z(ea.ctx,{displayName:"NodeSchemaCtx<listItem>",group:"ListItem"});var Bf=re("SinkListItem",t=>()=>C_(ea.type(t)));z(Bf,{displayName:"Command<sinkListItemCommand>",group:"ListItem"});var Lf=re("LiftListItem",t=>()=>$_(ea.type(t)));z(Lf,{displayName:"Command<liftListItemCommand>",group:"ListItem"});var Df=re("SplitListItem",t=>()=>v_(ea.type(t)));z(Df,{displayName:"Command<splitListItemCommand>",group:"ListItem"});function XS(t){return(e,n,a)=>{let{selection:r}=e;if(!(r instanceof ue))return!1;let{empty:i,$from:s}=r;return!i||s.parentOffset!==0||s.node(-1).type!==ea.type(t)?!1:ym(e,n,a)}}var Ff=re("LiftFirstListItem",t=>()=>XS(t));z(Ff,{displayName:"Command<liftFirstListItemCommand>",group:"ListItem"});var qf=xt("listItemKeymap",{NextListItem:{shortcuts:"Enter",command:t=>{let e=t.get(xe);return()=>e.call(Df.key)}},SinkListItem:{shortcuts:["Tab","Mod-]"],command:t=>{let e=t.get(xe);return()=>e.call(Bf.key)}},LiftListItem:{shortcuts:["Shift-Tab","Mod-["],command:t=>{let e=t.get(xe);return()=>e.call(Lf.key)}},LiftFirstListItem:{shortcuts:["Backspace","Delete"],command:t=>{let e=t.get(xe);return()=>e.call(Ff.key)}}});z(qf.ctx,{displayName:"KeymapCtx<listItem>",group:"ListItem"});z(qf.shortcuts,{displayName:"Keymap<listItem>",group:"ListItem"});var P_=qu("text",()=>({group:"inline",parseMarkdown:{match:({type:t})=>t==="text",runner:(t,e)=>{t.addText(e.value)}},toMarkdown:{match:t=>t.type.name==="text",runner:(t,e)=>{t.addNode("text",void 0,e.text)}}}));z(P_,{displayName:"NodeSchema<text>",group:"Text"});var Pf=_n("html");z(Pf,{displayName:"Attr<html>",group:"Html"});var Gf=ze("html",t=>({atom:!0,group:"inline",inline:!0,attrs:{value:{default:"",validate:"string"}},toDOM:e=>{let n=document.createElement("span"),a={...t.get(Pf.key)(e),"data-value":e.attrs.value,"data-type":"html"};return n.textContent=e.attrs.value,["span",a,e.attrs.value]},parseDOM:[{tag:'span[data-type="html"]',getAttrs:e=>({value:e.dataset.value??""})}],parseMarkdown:{match:({type:e})=>e==="html",runner:(e,n,a)=>{e.addNode(a,{value:n.value})}},toMarkdown:{match:e=>e.type.name==="html",runner:(e,n)=>{e.addNode("html",void 0,n.attrs.value)}}}));z(Gf.node,{displayName:"NodeSchema<html>",group:"Html"});z(Gf.ctx,{displayName:"NodeSchemaCtx<html>",group:"Html"});var ZS=[I_,yf,Ln,Wu,wf,ci,Gu,li,$f,Zo,jf,Yo,Mf,el,Ef,_s,Nf,vs,Rf,$s,Of,ea,pf,ws,mf,Uo,ff,mr,bf,ks,Pf,Gf,P_].flat(),JS=[z_,F_,q_,O_,D_,R_].flat(),YS=[E_,A_,M_,T_],QS=re("IsMarkSelected",()=>t=>e=>{if(!t)return!1;let{doc:n,selection:a}=e;return n.rangeHasMark(a.from,a.to,t)}),eE=re("IsNoteSelected",()=>t=>e=>t?lx(e,t).hasNode:!1),tE=re("ClearTextInCurrentBlock",()=>()=>(t,e)=>{let n=t.tr,{$from:a,$to:r}=n.selection,{pos:i}=a,{pos:s}=r,o=i-a.node().content.size;return o<0?!1:(n=n.deleteRange(o,s),e?.(n),!0)}),nE=re("SetBlockType",()=>t=>(e,n)=>{let{nodeType:a,attrs:r=null}=t??{};if(!a)return!1;let i=e.tr,{from:s,to:o}=i.selection;try{i.setBlockType(s,o,a,r)}catch{return!1}return n?.(i),!0}),aE=re("WrapInBlockType",()=>t=>(e,n)=>{let{nodeType:a,attrs:r=null}=t??{};if(!a)return!1;let i=e.tr;try{let{$from:s,$to:o}=i.selection,l=s.blockRange(o),c=l&&Hr(l,a,r);if(!c)return!1;i=i.wrap(l,c)}catch{return!1}return n?.(i),!0}),rE=re("AddBlockType",()=>t=>(e,n)=>{let{nodeType:a,attrs:r=null}=t??{};if(!a)return!1;let i=e.tr;try{let s=a instanceof Gt?a:a.createAndFill(r);if(!s)return!1;i.replaceSelectionWith(s)}catch{return!1}return n?.(i),!0}),iE=re("SelectTextNearPos",()=>t=>(e,n)=>{let{pos:a}=t??{};if(a==null)return!1;let r=(s,o,l)=>Math.min(Math.max(s,o),l),i=e.tr;try{let s=e.doc.resolve(r(a,0,e.doc.content.size));i.setSelection(ue.near(s))}catch{return!1}return n?.(i.scrollIntoView()),!0}),sE=[xf,Jo,Qn,_f,Qo,Af,Uu,B_,L_,nl,tl,Bf,Df,Lf,Ff,Wo,Xo,Ko,Hu,N_,QS,eE,tE,nE,aE,rE,iE],oE=[Cf,Sf,Tf,vf,qf,zf,If,kf,df,gf,hf].flat(),Hf=vn("remarkAddOrderInList",()=>()=>t=>{Nn(t,"list",e=>{if(e.ordered){let n=e.start??1;e.children.forEach((a,r)=>{a.label=r+n})}})});z(Hf.plugin,{displayName:"Remark<remarkAddOrderInListPlugin>",group:"Remark"});z(Hf.options,{displayName:"RemarkConfig<remarkAddOrderInListPlugin>",group:"Remark"});var Vf=vn("remarkLineBreak",()=>()=>t=>{let e=/[\t ]*(?:\r?\n|\r)/g;Nn(t,"text",(n,a,r)=>{if(!n.value||typeof n.value!="string")return;let i=[],s=0;e.lastIndex=0;let o=e.exec(n.value);for(;o;){let l=o.index;s!==l&&i.push({type:"text",value:n.value.slice(s,l)}),i.push({type:"break",data:{isInline:!0}}),s=l+o[0].length,o=e.exec(n.value)}if(i.length>0&&r&&typeof a=="number")return s<n.value.length&&i.push({type:"text",value:n.value.slice(s)}),r.children.splice(a,1,...i),a+i.length})});z(Vf.plugin,{displayName:"Remark<remarkLineBreak>",group:"Remark"});z(Vf.options,{displayName:"RemarkConfig<remarkLineBreak>",group:"Remark"});var Wf=vn("remarkInlineLink",()=>Pu);z(Wf.plugin,{displayName:"Remark<remarkInlineLinkPlugin>",group:"Remark"});z(Wf.options,{displayName:"RemarkConfig<remarkInlineLinkPlugin>",group:"Remark"});var lE=t=>!!t.children,cE=t=>t.type==="html";function uE(t,e){return n(t,0,null)[0];function n(a,r,i){if(lE(a)){let s=[];for(let o=0,l=a.children.length;o<l;o++){let c=a.children[o];if(c){let u=n(c,o,a);if(u)for(let p=0,d=u.length;p<d;p++){let m=u[p];m&&s.push(m)}}}a.children=s}return e(a,r,i)}}var pE=["root","blockquote","listItem"],Uf=vn("remarkHTMLTransformer",()=>()=>t=>{uE(t,(e,n,a)=>cE(e)?(a&&pE.includes(a.type)&&(e.children=[{...e}],delete e.value,e.type="paragraph"),[e]):[e])});z(Uf.plugin,{displayName:"Remark<remarkHtmlTransformer>",group:"Remark"});z(Uf.options,{displayName:"RemarkConfig<remarkHtmlTransformer>",group:"Remark"});var Kf=vn("remarkMarker",()=>()=>(t,e)=>{let n=a=>e.value.charAt(a.position.start.offset);Nn(t,a=>["strong","emphasis"].includes(a.type),a=>{a.marker=n(a)})});z(Kf.plugin,{displayName:"Remark<remarkMarker>",group:"Remark"});z(Kf.options,{displayName:"RemarkConfig<remarkMarker>",group:"Remark"});var G_=yt(()=>{let t=!1,e=new je({key:new Se("MILKDOWN_INLINE_NODES_CURSOR"),state:{init(){return!1},apply(n){if(!n.selection.empty)return!1;let a=n.selection.$from,r=a.nodeBefore,i=a.nodeAfter;return!!(r&&i&&r.isInline&&!r.isText&&i.isInline&&!i.isText)}},props:{handleDOMEvents:{compositionend:(n,a)=>t?(t=!1,requestAnimationFrame(()=>{if(e.getState(n.state)){let r=n.state.selection.from;a.preventDefault(),n.dispatch(n.state.tr.insertText(a.data||"",r))}}),!0):!1,compositionstart:n=>(e.getState(n.state)&&(t=!0),!1),beforeinput:(n,a)=>{if(e.getState(n.state)&&a instanceof InputEvent&&a.data&&!t){let r=n.state.selection.from;return a.preventDefault(),n.dispatch(n.state.tr.insertText(a.data||"",r)),!0}return!1}},decorations(n){if(e.getState(n)){let a=n.selection.$from.pos,r=document.createElement("span"),i=bt.widget(a,r,{side:-1}),s=document.createElement("span"),o=bt.widget(a,s);return setTimeout(()=>{r.contentEditable="true",s.contentEditable="true"}),We.create(n.doc,[i,o])}return We.empty}}});return e});z(G_,{displayName:"Prose<inlineNodesCursorPlugin>",group:"Prose"});var H_=yt(t=>new je({key:new Se("MILKDOWN_HARDBREAK_MARKS"),appendTransaction:(e,n,a)=>{if(!e.length)return;let[r]=e;if(!r)return;let[i]=r.steps;if(r.getMeta("hardbreak")){if(!(i instanceof mt))return;let{from:s}=i;return a.tr.setNodeMarkup(s,li.type(t),void 0,[])}if(i instanceof Pr){let s=a.tr,{from:o,to:l}=i;return a.doc.nodesBetween(o,l,(c,u)=>{c.type===li.type(t)&&(s=s.setNodeMarkup(u,li.type(t),void 0,[]))}),s}}}));z(H_,{displayName:"Prose<hardbreakClearMarkPlugin>",group:"Prose"});var Xf=sn(["table","code_block"],"hardbreakFilterNodes");z(Xf,{displayName:"Ctx<hardbreakFilterNodes>",group:"Prose"});var V_=yt(t=>{let e=t.get(Xf.key);return new je({key:new Se("MILKDOWN_HARDBREAK_FILTER"),filterTransaction:(n,a)=>{let r=n.getMeta("hardbreak"),[i]=n.steps;if(r&&i){let{from:s}=i,o=a.doc.resolve(s),l=o.depth,c=!0;for(;l>0;)e.includes(o.node(l).type.name)&&(c=!1),l--;return c}return!0}})});z(V_,{displayName:"Prose<hardbreakFilterPlugin>",group:"Prose"});var W_=yt(t=>{let e=new Se("MILKDOWN_HEADING_ID"),n=a=>{if(a.composing)return;let r=t.get(Wu.key),i=a.state.tr.setMeta("addToHistory",!1),s=!1,o={};a.state.doc.descendants((l,c)=>{if(l.type===ci.type(t)){if(l.textContent.trim().length===0)return;let u=l.attrs,p=r(l);o[p]?(o[p]+=1,p+=`-#${o[p]}`):o[p]=1,u.id!==p&&(s=!0,i.setMeta(e,!0).setNodeMarkup(c,void 0,{...u,id:p}))}}),s&&a.dispatch(i)};return new je({key:e,view:a=>(n(a),{update:(r,i)=>{r.state.doc.eq(i.doc)||n(r)}})})});z(W_,{displayName:"Prose<syncHeadingIdPlugin>",group:"Prose"});var U_=yt(t=>{let e=(n,a,r)=>{if(!r.selection||n.some(p=>p.getMeta("addToHistory")===!1||!p.isGeneric))return null;let i=$s.type(t),s=vs.type(t),o=ea.type(t),l=(p,d,m=1)=>{let h=!1,b=`${d+m}.`;return p.label!==b&&(p.label=b,h=!0),h},c=r.tr,u=!1;return r.doc.descendants((p,d,m,h)=>{if(p.type===s){let b=p.maybeChild(0);b?.type===o&&b.attrs.listType==="ordered"&&(u=!0,c.setNodeMarkup(d,i,{spread:"true"}),p.descendants((y,k,_,$)=>{if(y.type===o){let M={...y.attrs};l(M,$)&&(c=c.setNodeMarkup(k,void 0,M))}return!1}))}else if(p.type===o&&m?.type===i){let b={...p.attrs},y=!1;b.listType!=="ordered"&&(b.listType="ordered",y=!0),m?.maybeChild(0)&&(y=l(b,h,m?.attrs.order??1)),y&&(c=c.setNodeMarkup(d,void 0,b),u=!0)}}),u?c.setMeta("addToHistory",!1):null};return new je({key:new Se("MILKDOWN_KEEP_LIST_ORDER"),appendTransaction:e})});z(U_,{displayName:"Prose<syncListOrderPlugin>",group:"Prose"});var dE=[H_,Xf,V_,G_,Hf,Wf,Vf,Uf,Kf,Vu,W_,U_].flat(),K_=[ZS,JS,YS,sE,oE,dE].flat();var Jf,Yf;if(typeof WeakMap<"u"){let t=new WeakMap;Jf=e=>t.get(e),Yf=(e,n)=>(t.set(e,n),n)}else{let t=[],n=0;Jf=a=>{for(let r=0;r<t.length;r+=2)if(t[r]==a)return t[r+1]},Yf=(a,r)=>(n==10&&(n=0),t[n++]=a,t[n++]=r)}var Ce=class{constructor(t,e,n,a){this.width=t,this.height=e,this.map=n,this.problems=a}findCell(t){for(let e=0;e<this.map.length;e++){let n=this.map[e];if(n!=t)continue;let a=e%this.width,r=e/this.width|0,i=a+1,s=r+1;for(let o=1;i<this.width&&this.map[e+o]==n;o++)i++;for(let o=1;s<this.height&&this.map[e+this.width*o]==n;o++)s++;return{left:a,top:r,right:i,bottom:s}}throw new RangeError(`No cell with offset ${t} found`)}colCount(t){for(let e=0;e<this.map.length;e++)if(this.map[e]==t)return e%this.width;throw new RangeError(`No cell with offset ${t} found`)}nextCell(t,e,n){let{left:a,right:r,top:i,bottom:s}=this.findCell(t);return e=="horiz"?(n<0?a==0:r==this.width)?null:this.map[i*this.width+(n<0?a-1:r)]:(n<0?i==0:s==this.height)?null:this.map[a+this.width*(n<0?i-1:s)]}rectBetween(t,e){let{left:n,right:a,top:r,bottom:i}=this.findCell(t),{left:s,right:o,top:l,bottom:c}=this.findCell(e);return{left:Math.min(n,s),top:Math.min(r,l),right:Math.max(a,o),bottom:Math.max(i,c)}}cellsInRect(t){let e=[],n={};for(let a=t.top;a<t.bottom;a++)for(let r=t.left;r<t.right;r++){let i=a*this.width+r,s=this.map[i];n[s]||(n[s]=!0,!(r==t.left&&r&&this.map[i-1]==s||a==t.top&&a&&this.map[i-this.width]==s)&&e.push(s))}return e}positionAt(t,e,n){for(let a=0,r=0;;a++){let i=r+n.child(a).nodeSize;if(a==t){let s=e+t*this.width,o=(t+1)*this.width;for(;s<o&&this.map[s]<r;)s++;return s==o?i-1:this.map[s]}r=i}}static get(t){return Jf(t)||Yf(t,mE(t))}};function mE(t){if(t.type.spec.tableRole!="table")throw new RangeError("Not a table node: "+t.type.name);let e=hE(t),n=t.childCount,a=[],r=0,i=null,s=[];for(let c=0,u=e*n;c<u;c++)a[c]=0;for(let c=0,u=0;c<n;c++){let p=t.child(c);u++;for(let h=0;;h++){for(;r<a.length&&a[r]!=0;)r++;if(h==p.childCount)break;let b=p.child(h),{colspan:y,rowspan:k,colwidth:_}=b.attrs;for(let $=0;$<k;$++){if($+c>=n){(i||(i=[])).push({type:"overlong_rowspan",pos:u,n:k-$});break}let M=r+$*e;for(let N=0;N<y;N++){a[M+N]==0?a[M+N]=u:(i||(i=[])).push({type:"collision",row:c,pos:u,n:y-N});let E=_&&_[N];if(E){let I=(M+N)%e*2,F=s[I];F==null||F!=E&&s[I+1]==1?(s[I]=E,s[I+1]=1):F==E&&s[I+1]++}}}r+=y,u+=b.nodeSize}let d=(c+1)*e,m=0;for(;r<d;)a[r++]==0&&m++;m&&(i||(i=[])).push({type:"missing",row:c,n:m}),u++}(e===0||n===0)&&(i||(i=[])).push({type:"zero_sized"});let o=new Ce(e,n,a,i),l=!1;for(let c=0;!l&&c<s.length;c+=2)s[c]!=null&&s[c+1]<n&&(l=!0);return l&&fE(o,s,t),o}function hE(t){let e=-1,n=!1;for(let a=0;a<t.childCount;a++){let r=t.child(a),i=0;if(n)for(let s=0;s<a;s++){let o=t.child(s);for(let l=0;l<o.childCount;l++){let c=o.child(l);s+c.attrs.rowspan>a&&(i+=c.attrs.colspan)}}for(let s=0;s<r.childCount;s++){let o=r.child(s);i+=o.attrs.colspan,o.attrs.rowspan>1&&(n=!0)}e==-1?e=i:e!=i&&(e=Math.max(e,i))}return e}function fE(t,e,n){t.problems||(t.problems=[]);let a={};for(let r=0;r<t.map.length;r++){let i=t.map[r];if(a[i])continue;a[i]=!0;let s=n.nodeAt(i);if(!s)throw new RangeError(`No cell with offset ${i} found`);let o=null,l=s.attrs;for(let c=0;c<l.colspan;c++){let u=e[(r+c)%t.width*2];u!=null&&(!l.colwidth||l.colwidth[c]!=u)&&((o||(o=gE(l)))[c]=u)}o&&t.problems.unshift({type:"colwidth mismatch",pos:i,colwidth:o})}}function gE(t){if(t.colwidth)return t.colwidth.slice();let e=[];for(let n=0;n<t.colspan;n++)e.push(0);return e}function X_(t,e){if(typeof t=="string")return{};let n=t.getAttribute("data-colwidth"),a=n&&/^\d+(,\d+)*$/.test(n)?n.split(",").map(s=>Number(s)):null,r=Number(t.getAttribute("colspan")||1),i={colspan:r,rowspan:Number(t.getAttribute("rowspan")||1),colwidth:a&&a.length==r?a:null};for(let s in e){let o=e[s].getFromDOM,l=o&&o(t);l!=null&&(i[s]=l)}return i}function Z_(t,e){let n={};t.attrs.colspan!=1&&(n.colspan=t.attrs.colspan),t.attrs.rowspan!=1&&(n.rowspan=t.attrs.rowspan),t.attrs.colwidth&&(n["data-colwidth"]=t.attrs.colwidth.join(","));for(let a in e){let r=e[a].setDOMAttr;r&&r(t.attrs[a],n)}return n}function bE(t){if(t!==null){if(!Array.isArray(t))throw new TypeError("colwidth must be null or an array");for(let e of t)if(typeof e!="number")throw new TypeError("colwidth must be null or an array of numbers")}}function l2(t){let e=t.cellAttributes||{},n={colspan:{default:1,validate:"number"},rowspan:{default:1,validate:"number"},colwidth:{default:null,validate:bE}};for(let a in e)n[a]={default:e[a].default,validate:e[a].validate};return{table:{content:"table_row+",tableRole:"table",isolating:!0,group:t.tableGroup,parseDOM:[{tag:"table"}],toDOM(){return["table",["tbody",0]]}},table_row:{content:"(table_cell | table_header)*",tableRole:"row",parseDOM:[{tag:"tr"}],toDOM(){return["tr",0]}},table_cell:{content:t.cellContent,attrs:n,tableRole:"cell",isolating:!0,parseDOM:[{tag:"td",getAttrs:a=>X_(a,e)}],toDOM(a){return["td",Z_(a,e),0]}},table_header:{content:t.cellContent,attrs:n,tableRole:"header_cell",isolating:!0,parseDOM:[{tag:"th",getAttrs:a=>X_(a,e)}],toDOM(a){return["th",Z_(a,e),0]}}}}function $n(t){let e=t.cached.tableNodeTypes;if(!e){e=t.cached.tableNodeTypes={};for(let n in t.nodes){let a=t.nodes[n],r=a.spec.tableRole;r&&(e[r]=a)}}return e}var hr=new Se("selectingCells");function Ss(t){for(let e=t.depth-1;e>0;e--)if(t.node(e).type.spec.tableRole=="row")return t.node(0).resolve(t.before(e+1));return null}function cn(t){let e=t.selection.$head;for(let n=e.depth;n>0;n--)if(e.node(n).type.spec.tableRole=="row")return!0;return!1}function Qu(t){let e=t.selection;if("$anchorCell"in e&&e.$anchorCell)return e.$anchorCell.pos>e.$headCell.pos?e.$anchorCell:e.$headCell;if("node"in e&&e.node&&e.node.type.spec.tableRole=="cell")return e.$anchor;let n=Ss(e.$head)||yE(e.$head);if(n)return n;throw new RangeError(`No cell found around position ${e.head}`)}function yE(t){for(let e=t.nodeAfter,n=t.pos;e;e=e.firstChild,n++){let a=e.type.spec.tableRole;if(a=="cell"||a=="header_cell")return t.doc.resolve(n)}for(let e=t.nodeBefore,n=t.pos;e;e=e.lastChild,n--){let a=e.type.spec.tableRole;if(a=="cell"||a=="header_cell")return t.doc.resolve(n-e.nodeSize)}}function Qf(t){return t.parent.type.spec.tableRole=="row"&&!!t.nodeAfter}function xE(t){return t.node(0).resolve(t.pos+t.nodeAfter.nodeSize)}function n0(t,e){return t.depth==e.depth&&t.pos>=e.start(-1)&&t.pos<=e.end(-1)}function c2(t,e,n){let a=t.node(-1),r=Ce.get(a),i=t.start(-1),s=r.nextCell(t.pos-i,e,n);return s==null?null:t.node(0).resolve(i+s)}function ui(t,e,n=1){let a={...t,colspan:t.colspan-n};return a.colwidth&&(a.colwidth=a.colwidth.slice(),a.colwidth.splice(e,n),a.colwidth.some(r=>r>0)||(a.colwidth=null)),a}function kE(t,e,n=1){let a={...t,colspan:t.colspan+n};if(a.colwidth){a.colwidth=a.colwidth.slice();for(let r=0;r<n;r++)a.colwidth.splice(e,0,0)}return a}function wE(t,e,n){let a=$n(e.type.schema).header_cell;for(let r=0;r<t.height;r++)if(e.nodeAt(t.map[n+r*t.width]).type!=a)return!1;return!0}var Re=class Ea extends ae{constructor(e,n=e){let a=e.node(-1),r=Ce.get(a),i=e.start(-1),s=r.rectBetween(e.pos-i,n.pos-i),o=e.node(0),l=r.cellsInRect(s).filter(u=>u!=n.pos-i);l.unshift(n.pos-i);let c=l.map(u=>{let p=a.nodeAt(u);if(!p)throw new RangeError(`No cell with offset ${u} found`);let d=i+u+1;return new Xa(o.resolve(d),o.resolve(d+p.content.size))});super(c[0].$from,c[0].$to,c),this.$anchorCell=e,this.$headCell=n}map(e,n){let a=e.resolve(n.map(this.$anchorCell.pos)),r=e.resolve(n.map(this.$headCell.pos));if(Qf(a)&&Qf(r)&&n0(a,r)){let i=this.$anchorCell.node(-1)!=a.node(-1);return i&&this.isRowSelection()?Ea.rowSelection(a,r):i&&this.isColSelection()?Ea.colSelection(a,r):new Ea(a,r)}return ue.between(a,r)}content(){let e=this.$anchorCell.node(-1),n=Ce.get(e),a=this.$anchorCell.start(-1),r=n.rectBetween(this.$anchorCell.pos-a,this.$headCell.pos-a),i={},s=[];for(let l=r.top;l<r.bottom;l++){let c=[];for(let u=l*n.width+r.left,p=r.left;p<r.right;p++,u++){let d=n.map[u];if(i[d])continue;i[d]=!0;let m=n.findCell(d),h=e.nodeAt(d);if(!h)throw new RangeError(`No cell with offset ${d} found`);let b=r.left-m.left,y=m.right-r.right;if(b>0||y>0){let k=h.attrs;if(b>0&&(k=ui(k,0,b)),y>0&&(k=ui(k,k.colspan-y,y)),m.left<r.left){if(h=h.type.createAndFill(k),!h)throw new RangeError(`Could not create cell with attrs ${JSON.stringify(k)}`)}else h=h.type.create(k,h.content)}if(m.top<r.top||m.bottom>r.bottom){let k={...h.attrs,rowspan:Math.min(m.bottom,r.bottom)-Math.max(m.top,r.top)};m.top<r.top?h=h.type.createAndFill(k):h=h.type.create(k,h.content)}c.push(h)}s.push(e.child(l).copy(B.from(c)))}let o=this.isColSelection()&&this.isRowSelection()?e:s;return new V(B.from(o),1,1)}replace(e,n=V.empty){let a=e.steps.length,r=this.ranges;for(let s=0;s<r.length;s++){let{$from:o,$to:l}=r[s],c=e.mapping.slice(a);e.replace(c.map(o.pos),c.map(l.pos),s?V.empty:n)}let i=ae.findFrom(e.doc.resolve(e.mapping.slice(a).map(this.to)),-1);i&&e.setSelection(i)}replaceWith(e,n){this.replace(e,new V(B.from(n),0,0))}forEachCell(e){let n=this.$anchorCell.node(-1),a=Ce.get(n),r=this.$anchorCell.start(-1),i=a.cellsInRect(a.rectBetween(this.$anchorCell.pos-r,this.$headCell.pos-r));for(let s=0;s<i.length;s++)e(n.nodeAt(i[s]),r+i[s])}isColSelection(){let e=this.$anchorCell.index(-1),n=this.$headCell.index(-1);if(Math.min(e,n)>0)return!1;let a=e+this.$anchorCell.nodeAfter.attrs.rowspan,r=n+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(a,r)==this.$headCell.node(-1).childCount}static colSelection(e,n=e){let a=e.node(-1),r=Ce.get(a),i=e.start(-1),s=r.findCell(e.pos-i),o=r.findCell(n.pos-i),l=e.node(0);return s.top<=o.top?(s.top>0&&(e=l.resolve(i+r.map[s.left])),o.bottom<r.height&&(n=l.resolve(i+r.map[r.width*(r.height-1)+o.right-1]))):(o.top>0&&(n=l.resolve(i+r.map[o.left])),s.bottom<r.height&&(e=l.resolve(i+r.map[r.width*(r.height-1)+s.right-1]))),new Ea(e,n)}isRowSelection(){let e=this.$anchorCell.node(-1),n=Ce.get(e),a=this.$anchorCell.start(-1),r=n.colCount(this.$anchorCell.pos-a),i=n.colCount(this.$headCell.pos-a);if(Math.min(r,i)>0)return!1;let s=r+this.$anchorCell.nodeAfter.attrs.colspan,o=i+this.$headCell.nodeAfter.attrs.colspan;return Math.max(s,o)==n.width}eq(e){return e instanceof Ea&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos}static rowSelection(e,n=e){let a=e.node(-1),r=Ce.get(a),i=e.start(-1),s=r.findCell(e.pos-i),o=r.findCell(n.pos-i),l=e.node(0);return s.left<=o.left?(s.left>0&&(e=l.resolve(i+r.map[s.top*r.width])),o.right<r.width&&(n=l.resolve(i+r.map[r.width*(o.top+1)-1]))):(o.left>0&&(n=l.resolve(i+r.map[o.top*r.width])),s.right<r.width&&(e=l.resolve(i+r.map[r.width*(s.top+1)-1]))),new Ea(e,n)}toJSON(){return{type:"cell",anchor:this.$anchorCell.pos,head:this.$headCell.pos}}static fromJSON(e,n){return new Ea(e.resolve(n.anchor),e.resolve(n.head))}static create(e,n,a=n){return new Ea(e.resolve(n),e.resolve(a))}getBookmark(){return new _E(this.$anchorCell.pos,this.$headCell.pos)}};Re.prototype.visible=!1;ae.jsonID("cell",Re);var _E=class u2{constructor(e,n){this.anchor=e,this.head=n}map(e){return new u2(e.map(this.anchor),e.map(this.head))}resolve(e){let n=e.resolve(this.anchor),a=e.resolve(this.head);return n.parent.type.spec.tableRole=="row"&&a.parent.type.spec.tableRole=="row"&&n.index()<n.parent.childCount&&a.index()<a.parent.childCount&&n0(n,a)?new Re(n,a):ae.near(a,1)}};function vE(t){if(!(t.selection instanceof Re))return null;let e=[];return t.selection.forEachCell((n,a)=>{e.push(bt.node(a,a+n.nodeSize,{class:"selectedCell"}))}),We.create(t.doc,e)}function $E({$from:t,$to:e}){if(t.pos==e.pos||t.pos<e.pos-6)return!1;let n=t.pos,a=e.pos,r=t.depth;for(;r>=0&&!(t.after(r+1)<t.end(r));r--,n++);for(let i=e.depth;i>=0&&!(e.before(i+1)>e.start(i));i--,a--);return n==a&&/row|table/.test(t.node(r).type.spec.tableRole)}function CE({$from:t,$to:e}){let n,a;for(let r=t.depth;r>0;r--){let i=t.node(r);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){n=i;break}}for(let r=e.depth;r>0;r--){let i=e.node(r);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){a=i;break}}return n!==a&&e.parentOffset===0}function jE(t,e,n){let a=(e||t).selection,r=(e||t).doc,i,s;if(a instanceof le&&(s=a.node.type.spec.tableRole)){if(s=="cell"||s=="header_cell")i=Re.create(r,a.from);else if(s=="row"){let o=r.resolve(a.from+1);i=Re.rowSelection(o,o)}else if(!n){let o=Ce.get(a.node),l=a.from+1,c=l+o.map[o.width*o.height-1];i=Re.create(r,l+1,c)}}else a instanceof ue&&$E(a)?i=ue.create(r,a.from):a instanceof ue&&CE(a)&&(i=ue.create(r,a.$from.start(),a.$from.end()));return i&&(e||(e=t.tr)).setSelection(i),e}var SE=new Se("fix-tables");function p2(t,e,n,a){let r=t.childCount,i=e.childCount;e:for(let s=0,o=0;s<i;s++){let l=e.child(s);for(let c=o,u=Math.min(r,s+3);c<u;c++)if(t.child(c)==l){o=c+1,n+=l.nodeSize;continue e}a(l,n),o<r&&t.child(o).sameMarkup(l)?p2(t.child(o),l,n+1,a):l.nodesBetween(0,l.content.size,a,n+1),n+=l.nodeSize}}function EE(t,e){let n,a=(r,i)=>{r.type.spec.tableRole=="table"&&(n=AE(t,r,i,n))};return e?e.doc!=t.doc&&p2(e.doc,t.doc,0,a):t.doc.descendants(a),n}function AE(t,e,n,a){let r=Ce.get(e);if(!r.problems)return a;a||(a=t.tr);let i=[];for(let l=0;l<r.height;l++)i.push(0);for(let l=0;l<r.problems.length;l++){let c=r.problems[l];if(c.type=="collision"){let u=e.nodeAt(c.pos);if(!u)continue;let p=u.attrs;for(let d=0;d<p.rowspan;d++)i[c.row+d]+=c.n;a.setNodeMarkup(a.mapping.map(n+1+c.pos),null,ui(p,p.colspan-c.n,c.n))}else if(c.type=="missing")i[c.row]+=c.n;else if(c.type=="overlong_rowspan"){let u=e.nodeAt(c.pos);if(!u)continue;a.setNodeMarkup(a.mapping.map(n+1+c.pos),null,{...u.attrs,rowspan:u.attrs.rowspan-c.n})}else if(c.type=="colwidth mismatch"){let u=e.nodeAt(c.pos);if(!u)continue;a.setNodeMarkup(a.mapping.map(n+1+c.pos),null,{...u.attrs,colwidth:c.colwidth})}else if(c.type=="zero_sized"){let u=a.mapping.map(n);a.delete(u,u+e.nodeSize)}}let s,o;for(let l=0;l<i.length;l++)i[l]&&(s==null&&(s=l),o=l);for(let l=0,c=n+1;l<r.height;l++){let u=e.child(l),p=c+u.nodeSize,d=i[l];if(d>0){let m="cell";u.firstChild&&(m=u.firstChild.type.spec.tableRole);let h=[];for(let y=0;y<d;y++){let k=$n(t.schema)[m].createAndFill();k&&h.push(k)}let b=(l==0||s==l-1)&&o==l?c+1:p-1;a.insert(a.mapping.map(b),h)}c=p}return a.setMeta(SE,{fixTables:!0})}function d2(t){let e=Ce.get(t),n=[],a=e.height,r=e.width;for(let i=0;i<a;i++){let s=[];for(let o=0;o<r;o++){let l=i*r+o,c=e.map[l];if(i>0){let u=l-r;if(c===e.map[u]){s.push(null);continue}}if(o>0){let u=l-1;if(c===e.map[u]){s.push(null);continue}}s.push(t.nodeAt(c))}n.push(s)}return n}function m2(t,e){let n=[],a=Ce.get(t),r=a.height,i=a.width;for(let s=0;s<r;s++){let o=t.child(s),l=[];for(let u=0;u<i;u++){let p=e[s][u];if(!p)continue;let d=a.map[s*a.width+u],m=t.nodeAt(d);if(!m)continue;let h=m.type.createChecked(p.attrs,p.content,p.marks);l.push(h)}let c=o.type.createChecked(o.attrs,l,o.marks);n.push(c)}return t.type.createChecked(t.attrs,n,t.marks)}function h2(t,e,n,a){let r=e[0]>n[0]?-1:1,i=t.splice(e[0],e.length),s=i.length%2===0?1:0,o;return a===-1&&r===1?o=n[0]-1:a===1&&r===-1?o=n[n.length-1]-s+1:o=r===-1?n[0]:n[n.length-1]-s,t.splice(o,0,...i),t}function Es(t){return TE(e=>e.type.spec.tableRole==="table",t)}function TE(t,e){for(let n=e.depth;n>=0;n-=1){let a=e.node(n);if(t(a))return{node:a,pos:n===0?0:e.before(n),start:e.start(n),depth:n}}return null}function Cs(t,e){let n=Es(e.$from);if(!n)return;let a=Ce.get(n.node);if(!(t<0||t>a.width-1))return a.cellsInRect({left:t,right:t+1,top:0,bottom:a.height}).map(r=>{let i=n.node.nodeAt(r),s=r+n.start;return{pos:s,start:s+1,node:i,depth:n.depth+2}})}function js(t,e){let n=Es(e.$from);if(!n)return;let a=Ce.get(n.node);if(!(t<0||t>a.height-1))return a.cellsInRect({left:0,right:a.width,top:t,bottom:t+1}).map(r=>{let i=n.node.nodeAt(r),s=r+n.start;return{pos:s,start:s+1,node:i,depth:n.depth+2}})}function J_(t,e,n=e){let a=e,r=n;for(let u=e;u>=0;u--){let p=Cs(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.colspan+u-1;m>=a&&(a=u),m>r&&(r=m)})}for(let u=e;u<=r;u++){let p=Cs(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.colspan+u-1;d.node.attrs.colspan>1&&m>r&&(r=m)})}let i=[];for(let u=a;u<=r;u++){let p=Cs(u,t.selection);p&&p.length>0&&i.push(u)}a=i[0],r=i[i.length-1];let s=Cs(a,t.selection),o=js(0,t.selection);if(!s||!o)return;let l=t.doc.resolve(s[s.length-1].pos),c;for(let u=r;u>=a;u--){let p=Cs(u,t.selection);if(p&&p.length>0){for(let d=o.length-1;d>=0;d--)if(o[d].pos===p[0].pos){c=p[0];break}if(c)break}}if(c)return{$anchor:l,$head:t.doc.resolve(c.pos),indexes:i}}function Y_(t,e,n=e){let a=e,r=n;for(let u=e;u>=0;u--){let p=js(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.rowspan+u-1;m>=a&&(a=u),m>r&&(r=m)})}for(let u=e;u<=r;u++){let p=js(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.rowspan+u-1;d.node.attrs.rowspan>1&&m>r&&(r=m)})}let i=[];for(let u=a;u<=r;u++){let p=js(u,t.selection);p&&p.length>0&&i.push(u)}a=i[0],r=i[i.length-1];let s=js(a,t.selection),o=Cs(0,t.selection);if(!s||!o)return;let l=t.doc.resolve(s[s.length-1].pos),c;for(let u=r;u>=a;u--){let p=js(u,t.selection);if(p&&p.length>0){for(let d=o.length-1;d>=0;d--)if(o[d].pos===p[0].pos){c=p[0];break}if(c)break}}if(c)return{$anchor:l,$head:t.doc.resolve(c.pos),indexes:i}}function Q_(t){return t[0].map((e,n)=>t.map(a=>a[n]))}function ME(t){var e,n;let{tr:a,originIndex:r,targetIndex:i,select:s,pos:o}=t,l=Es(a.doc.resolve(o));if(!l)return!1;let c=(e=J_(a,r))===null||e===void 0?void 0:e.indexes,u=(n=J_(a,i))===null||n===void 0?void 0:n.indexes;if(!c||!u||c.includes(i))return!1;let p=NE(l.node,c,u,0);if(a.replaceWith(l.pos,l.pos+l.node.nodeSize,p),!s)return!0;let d=Ce.get(p),m=l.start,h=i,b=d.positionAt(d.height-1,h,p),y=a.doc.resolve(m+b),k=d.positionAt(0,h,p),_=a.doc.resolve(m+k);return a.setSelection(Re.colSelection(y,_)),!0}function NE(t,e,n,a){let r=Q_(d2(t));return r=h2(r,e,n,a),r=Q_(r),m2(t,r)}function IE(t){var e,n;let{tr:a,originIndex:r,targetIndex:i,select:s,pos:o}=t,l=Es(a.doc.resolve(o));if(!l)return!1;let c=(e=Y_(a,r))===null||e===void 0?void 0:e.indexes,u=(n=Y_(a,i))===null||n===void 0?void 0:n.indexes;if(!c||!u||c.includes(i))return!1;let p=RE(l.node,c,u,0);if(a.replaceWith(l.pos,l.pos+l.node.nodeSize,p),!s)return!0;let d=Ce.get(p),m=l.start,h=i,b=d.positionAt(h,d.width-1,p),y=a.doc.resolve(m+b),k=d.positionAt(h,0,p),_=a.doc.resolve(m+k);return a.setSelection(Re.rowSelection(y,_)),!0}function RE(t,e,n,a){let r=d2(t);return r=h2(r,e,n,a),m2(t,r)}function Aa(t){let e=t.selection,n=Qu(t),a=n.node(-1),r=n.start(-1),i=Ce.get(a);return{...e instanceof Re?i.rectBetween(e.$anchorCell.pos-r,e.$headCell.pos-r):i.findCell(n.pos-r),tableStart:r,map:i,table:a}}function f2(t,{map:e,tableStart:n,table:a},r){let i=r>0?-1:0;wE(e,a,r+i)&&(i=r==0||r==e.width?null:0);for(let s=0;s<e.height;s++){let o=s*e.width+r;if(r>0&&r<e.width&&e.map[o-1]==e.map[o]){let l=e.map[o],c=a.nodeAt(l);t.setNodeMarkup(t.mapping.map(n+l),null,kE(c.attrs,r-e.colCount(l))),s+=c.attrs.rowspan-1}else{let l=i==null?$n(a.type.schema).cell:a.nodeAt(e.map[o+i]).type,c=e.positionAt(s,r,a);t.insert(t.mapping.map(n+c),l.createAndFill())}}return t}function g2(t,e){if(!cn(t))return!1;if(e){let n=Aa(t);e(f2(t.tr,n,n.left))}return!0}function b2(t,e){if(!cn(t))return!1;if(e){let n=Aa(t);e(f2(t.tr,n,n.right))}return!0}function zE(t,{map:e,table:n,tableStart:a},r){let i=t.mapping.maps.length;for(let s=0;s<e.height;){let o=s*e.width+r,l=e.map[o],c=n.nodeAt(l),u=c.attrs;if(r>0&&e.map[o-1]==l||r<e.width-1&&e.map[o+1]==l)t.setNodeMarkup(t.mapping.slice(i).map(a+l),null,ui(u,r-e.colCount(l)));else{let p=t.mapping.slice(i).map(a+l);t.delete(p,p+c.nodeSize)}s+=u.rowspan}}function y2(t,e){if(!cn(t))return!1;if(e){let n=Aa(t),a=t.tr;if(n.left==0&&n.right==n.map.width)return!1;for(let r=n.right-1;zE(a,n,r),r!=n.left;r--){let i=n.tableStart?a.doc.nodeAt(n.tableStart-1):a.doc;if(!i)throw new RangeError("No table found");n.table=i,n.map=Ce.get(i)}e(a)}return!0}function OE(t,{map:e,table:n,tableStart:a},r){let i=0;for(let c=0;c<r;c++)i+=n.child(c).nodeSize;let s=i+n.child(r).nodeSize,o=t.mapping.maps.length;t.delete(i+a,s+a);let l=new Set;for(let c=0,u=r*e.width;c<e.width;c++,u++){let p=e.map[u];if(!l.has(p)){if(l.add(p),r>0&&p==e.map[u-e.width]){let d=n.nodeAt(p).attrs;t.setNodeMarkup(t.mapping.slice(o).map(p+a),null,{...d,rowspan:d.rowspan-1}),c+=d.colspan-1}else if(r<e.height&&p==e.map[u+e.width]){let d=n.nodeAt(p),m=d.attrs,h=d.type.create({...m,rowspan:d.attrs.rowspan-1},d.content),b=e.positionAt(r+1,c,n);t.insert(t.mapping.slice(o).map(a+b),h),c+=m.colspan-1}}}}function x2(t,e){if(!cn(t))return!1;if(e){let n=Aa(t),a=t.tr;if(n.top==0&&n.bottom==n.map.height)return!1;for(let r=n.bottom-1;OE(a,n,r),r!=n.top;r--){let i=n.tableStart?a.doc.nodeAt(n.tableStart-1):a.doc;if(!i)throw new RangeError("No table found");n.table=i,n.map=Ce.get(n.table)}e(a)}return!0}function k2(t,e){return function(n,a){if(!cn(n))return!1;let r=Qu(n);if(r.nodeAfter.attrs[t]===e)return!1;if(a){let i=n.tr;n.selection instanceof Re?n.selection.forEachCell((s,o)=>{s.attrs[t]!==e&&i.setNodeMarkup(o,null,{...s.attrs,[t]:e})}):i.setNodeMarkup(r.pos,null,{...r.nodeAfter.attrs,[t]:e}),a(i)}return!0}}function BE(t){return function(e,n){if(!cn(e))return!1;if(n){let a=$n(e.schema),r=Aa(e),i=e.tr,s=r.map.cellsInRect(t=="column"?{left:r.left,top:0,right:r.right,bottom:r.map.height}:t=="row"?{left:0,top:r.top,right:r.map.width,bottom:r.bottom}:r),o=s.map(l=>r.table.nodeAt(l));for(let l=0;l<s.length;l++)o[l].type==a.header_cell&&i.setNodeMarkup(r.tableStart+s[l],a.cell,o[l].attrs);if(i.steps.length===0)for(let l=0;l<s.length;l++)i.setNodeMarkup(r.tableStart+s[l],a.header_cell,o[l].attrs);n(i)}return!0}}function e2(t,e,n){let a=e.map.cellsInRect({left:0,top:0,right:t=="row"?e.map.width:1,bottom:t=="column"?e.map.height:1});for(let r=0;r<a.length;r++){let i=e.table.nodeAt(a[r]);if(i&&i.type!==n.header_cell)return!1}return!0}function a0(t,e){return e=e||{useDeprecatedLogic:!1},e.useDeprecatedLogic?BE(t):function(n,a){if(!cn(n))return!1;if(a){let r=$n(n.schema),i=Aa(n),s=n.tr,o=e2("row",i,r),l=e2("column",i,r),c=(t==="column"?o:t==="row"&&l)?1:0,u=t=="column"?{left:0,top:c,right:1,bottom:i.map.height}:t=="row"?{left:c,top:0,right:i.map.width,bottom:1}:i,p=t=="column"?l?r.cell:r.header_cell:t=="row"?o?r.cell:r.header_cell:r.cell;i.map.cellsInRect(u).forEach(d=>{let m=d+i.tableStart,h=s.doc.nodeAt(m);h&&s.setNodeMarkup(m,p,h.attrs)}),a(s)}return!0}}var LV=a0("row",{useDeprecatedLogic:!0}),DV=a0("column",{useDeprecatedLogic:!0}),FV=a0("cell",{useDeprecatedLogic:!0});function LE(t,e){if(e<0){let n=t.nodeBefore;if(n)return t.pos-n.nodeSize;for(let a=t.index(-1)-1,r=t.before();a>=0;a--){let i=t.node(-1).child(a),s=i.lastChild;if(s)return r-1-s.nodeSize;r-=i.nodeSize}}else{if(t.index()<t.parent.childCount-1)return t.pos+t.nodeAfter.nodeSize;let n=t.node(-1);for(let a=t.indexAfter(-1),r=t.after();a<n.childCount;a++){let i=n.child(a);if(i.childCount)return r+1;r+=i.nodeSize}}return null}function r0(t){return function(e,n){if(!cn(e))return!1;let a=LE(Qu(e),t);if(a==null)return!1;if(n){let r=e.doc.resolve(a);n(e.tr.setSelection(ue.between(r,xE(r))).scrollIntoView())}return!0}}function w2(t,e){let n=t.selection.$anchor;for(let a=n.depth;a>0;a--)if(n.node(a).type.spec.tableRole=="table")return e&&e(t.tr.delete(n.before(a),n.after(a)).scrollIntoView()),!0;return!1}function Ku(t,e){let n=t.selection;if(!(n instanceof Re))return!1;if(e){let a=t.tr,r=$n(t.schema).cell.createAndFill().content;n.forEachCell((i,s)=>{i.content.eq(r)||a.replace(a.mapping.map(s+1),a.mapping.map(s+i.nodeSize-1),new V(r,0,0))}),a.docChanged&&e(a)}return!0}function _2(t){return(e,n)=>{let{from:a,to:r,select:i=!0,pos:s=e.selection.from}=t,o=e.tr;return IE({tr:o,originIndex:a,targetIndex:r,select:i,pos:s})?(n?.(o),!0):!1}}function v2(t){return(e,n)=>{let{from:a,to:r,select:i=!0,pos:s=e.selection.from}=t,o=e.tr;return ME({tr:o,originIndex:a,targetIndex:r,select:i,pos:s})?(n?.(o),!0):!1}}function DE(t){if(t.size===0)return null;let{content:e,openStart:n,openEnd:a}=t;for(;e.childCount==1&&(n>0&&a>0||e.child(0).type.spec.tableRole=="table");)n--,a--,e=e.child(0).content;let r=e.child(0),i=r.type.spec.tableRole,s=r.type.schema,o=[];if(i=="row")for(let l=0;l<e.childCount;l++){let c=e.child(l).content,u=l?0:Math.max(0,n-1),p=l<e.childCount-1?0:Math.max(0,a-1);(u||p)&&(c=e0($n(s).row,new V(c,u,p)).content),o.push(c)}else if(i=="cell"||i=="header_cell")o.push(n||a?e0($n(s).row,new V(e,n,a)).content:e);else return null;return FE(s,o)}function FE(t,e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];for(let s=i.childCount-1;s>=0;s--){let{rowspan:o,colspan:l}=i.child(s).attrs;for(let c=r;c<r+o;c++)n[c]=(n[c]||0)+l}}let a=0;for(let r=0;r<n.length;r++)a=Math.max(a,n[r]);for(let r=0;r<n.length;r++)if(r>=e.length&&e.push(B.empty),n[r]<a){let i=$n(t).cell.createAndFill(),s=[];for(let o=n[r];o<a;o++)s.push(i);e[r]=e[r].append(B.from(s))}return{height:e.length,width:a,rows:e}}function e0(t,e){let n=t.createAndFill();return new qi(n).replace(0,n.content.size,e).doc}function qE({width:t,height:e,rows:n},a,r){if(t!=a){let i=[],s=[];for(let o=0;o<n.length;o++){let l=n[o],c=[];for(let u=i[o]||0,p=0;u<a;p++){let d=l.child(p%l.childCount);u+d.attrs.colspan>a&&(d=d.type.createChecked(ui(d.attrs,d.attrs.colspan,u+d.attrs.colspan-a),d.content)),c.push(d),u+=d.attrs.colspan;for(let m=1;m<d.attrs.rowspan;m++)i[o+m]=(i[o+m]||0)+d.attrs.colspan}s.push(B.from(c))}n=s,t=a}if(e!=r){let i=[];for(let s=0,o=0;s<r;s++,o++){let l=[],c=n[o%e];for(let u=0;u<c.childCount;u++){let p=c.child(u);s+p.attrs.rowspan>r&&(p=p.type.create({...p.attrs,rowspan:Math.max(1,r-p.attrs.rowspan)},p.content)),l.push(p)}i.push(B.from(l))}n=i,e=r}return{width:t,height:e,rows:n}}function PE(t,e,n,a,r,i,s){let o=t.doc.type.schema,l=$n(o),c,u;if(r>e.width)for(let p=0,d=0;p<e.height;p++){let m=n.child(p);d+=m.nodeSize;let h=[],b;m.lastChild==null||m.lastChild.type==l.cell?b=c||(c=l.cell.createAndFill()):b=u||(u=l.header_cell.createAndFill());for(let y=e.width;y<r;y++)h.push(b);t.insert(t.mapping.slice(s).map(d-1+a),h)}if(i>e.height){let p=[];for(let h=0,b=(e.height-1)*e.width;h<Math.max(e.width,r);h++){let y=h>=e.width?!1:n.nodeAt(e.map[b+h]).type==l.header_cell;p.push(y?u||(u=l.header_cell.createAndFill()):c||(c=l.cell.createAndFill()))}let d=l.row.create(null,B.from(p)),m=[];for(let h=e.height;h<i;h++)m.push(d);t.insert(t.mapping.slice(s).map(a+n.nodeSize-2),m)}return!!(c||u)}function t2(t,e,n,a,r,i,s,o){if(s==0||s==e.height)return!1;let l=!1;for(let c=r;c<i;c++){let u=s*e.width+c,p=e.map[u];if(e.map[u-e.width]==p){l=!0;let d=n.nodeAt(p),{top:m,left:h}=e.findCell(p);t.setNodeMarkup(t.mapping.slice(o).map(p+a),null,{...d.attrs,rowspan:s-m}),t.insert(t.mapping.slice(o).map(e.positionAt(s,h,n)),d.type.createAndFill({...d.attrs,rowspan:m+d.attrs.rowspan-s})),c+=d.attrs.colspan-1}}return l}function n2(t,e,n,a,r,i,s,o){if(s==0||s==e.width)return!1;let l=!1;for(let c=r;c<i;c++){let u=c*e.width+s,p=e.map[u];if(e.map[u-1]==p){l=!0;let d=n.nodeAt(p),m=e.colCount(p),h=t.mapping.slice(o).map(p+a);t.setNodeMarkup(h,null,ui(d.attrs,s-m,d.attrs.colspan-(s-m))),t.insert(h+d.nodeSize,d.type.createAndFill(ui(d.attrs,0,s-m))),c+=d.attrs.rowspan-1}}return l}function a2(t,e,n,a,r){let i=n?t.doc.nodeAt(n-1):t.doc;if(!i)throw new Error("No table found");let s=Ce.get(i),{top:o,left:l}=a,c=l+r.width,u=o+r.height,p=t.tr,d=0;function m(){if(i=n?p.doc.nodeAt(n-1):p.doc,!i)throw new Error("No table found");s=Ce.get(i),d=p.mapping.maps.length}PE(p,s,i,n,c,u,d)&&m(),t2(p,s,i,n,l,c,o,d)&&m(),t2(p,s,i,n,l,c,u,d)&&m(),n2(p,s,i,n,o,u,l,d)&&m(),n2(p,s,i,n,o,u,c,d)&&m();for(let h=o;h<u;h++){let b=s.positionAt(h,l,i),y=s.positionAt(h,c,i);p.replace(p.mapping.slice(d).map(b+n),p.mapping.slice(d).map(y+n),new V(r.rows[h-o],0,0))}m(),p.setSelection(new Re(p.doc.resolve(n+s.positionAt(o,l,i)),p.doc.resolve(n+s.positionAt(u-1,c-1,i)))),e(p)}var GE=Tm({ArrowLeft:Xu("horiz",-1),ArrowRight:Xu("horiz",1),ArrowUp:Xu("vert",-1),ArrowDown:Xu("vert",1),"Shift-ArrowLeft":Zu("horiz",-1),"Shift-ArrowRight":Zu("horiz",1),"Shift-ArrowUp":Zu("vert",-1),"Shift-ArrowDown":Zu("vert",1),Backspace:Ku,"Mod-Backspace":Ku,Delete:Ku,"Mod-Delete":Ku});function Ju(t,e,n){return n.eq(t.selection)?!1:(e&&e(t.tr.setSelection(n).scrollIntoView()),!0)}function Xu(t,e){return(n,a,r)=>{if(!r)return!1;let i=n.selection;if(i instanceof Re)return Ju(n,a,ae.near(i.$headCell,e));if(t!="horiz"&&!i.empty)return!1;let s=$2(r,t,e);if(s==null)return!1;if(t=="horiz")return Ju(n,a,ae.near(n.doc.resolve(i.head+e),e));{let o=n.doc.resolve(s),l=c2(o,t,e),c;return l?c=ae.near(l,1):e<0?c=ae.near(n.doc.resolve(o.before(-1)),-1):c=ae.near(n.doc.resolve(o.after(-1)),1),Ju(n,a,c)}}}function Zu(t,e){return(n,a,r)=>{if(!r)return!1;let i=n.selection,s;if(i instanceof Re)s=i;else{let l=$2(r,t,e);if(l==null)return!1;s=new Re(n.doc.resolve(l))}let o=c2(s.$headCell,t,e);return o?Ju(n,a,new Re(s.$anchorCell,o)):!1}}function HE(t,e){let n=t.state.doc,a=Ss(n.resolve(e));return a?(t.dispatch(t.state.tr.setSelection(new Re(a))),!0):!1}function VE(t,e,n){if(!cn(t.state))return!1;let a=DE(n),r=t.state.selection;if(r instanceof Re){a||(a={width:1,height:1,rows:[B.from(e0($n(t.state.schema).cell,n))]});let i=r.$anchorCell.node(-1),s=r.$anchorCell.start(-1),o=Ce.get(i).rectBetween(r.$anchorCell.pos-s,r.$headCell.pos-s);return a=qE(a,o.right-o.left,o.bottom-o.top),a2(t.state,t.dispatch,s,o,a),!0}else if(a){let i=Qu(t.state),s=i.start(-1);return a2(t.state,t.dispatch,s,Ce.get(i.node(-1)).findCell(i.pos-s),a),!0}else return!1}function WE(t,e){var n;if(e.button!=0||e.ctrlKey||e.metaKey)return;let a=r2(t,e.target),r;if(e.shiftKey&&t.state.selection instanceof Re)i(t.state.selection.$anchorCell,e),e.preventDefault();else if(e.shiftKey&&a&&(r=Ss(t.state.selection.$anchor))!=null&&((n=Zf(t,e))===null||n===void 0?void 0:n.pos)!=r.pos)i(r,e),e.preventDefault();else if(!a)return;function i(l,c){let u=Zf(t,c),p=hr.getState(t.state)==null;if(!u||!n0(l,u))if(p)u=l;else return;let d=new Re(l,u);if(p||!t.state.selection.eq(d)){let m=t.state.tr.setSelection(d);p&&m.setMeta(hr,l.pos),t.dispatch(m)}}function s(){t.root.removeEventListener("mouseup",s),t.root.removeEventListener("dragstart",s),t.root.removeEventListener("mousemove",o),hr.getState(t.state)!=null&&t.dispatch(t.state.tr.setMeta(hr,-1))}function o(l){let c=l,u=hr.getState(t.state),p;if(u!=null)p=t.state.doc.resolve(u);else if(r2(t,c.target)!=a&&(p=Zf(t,e),!p))return s();p&&i(p,c)}t.root.addEventListener("mouseup",s),t.root.addEventListener("dragstart",s),t.root.addEventListener("mousemove",o)}function $2(t,e,n){if(!(t.state.selection instanceof ue))return null;let{$head:a}=t.state.selection;for(let r=a.depth-1;r>=0;r--){let i=a.node(r);if((n<0?a.index(r):a.indexAfter(r))!=(n<0?0:i.childCount))return null;if(i.type.spec.tableRole=="cell"||i.type.spec.tableRole=="header_cell"){let s=a.before(r),o=e=="vert"?n>0?"down":"up":n>0?"right":"left";return t.endOfTextblock(o)?s:null}}return null}function r2(t,e){for(;e&&e!=t.dom;e=e.parentNode)if(e.nodeName=="TD"||e.nodeName=="TH")return e;return null}function Zf(t,e){let n=t.posAtCoords({left:e.clientX,top:e.clientY});if(!n)return null;let{inside:a,pos:r}=n;return a>=0&&Ss(t.state.doc.resolve(a))||Ss(t.state.doc.resolve(r))}var UE=class{constructor(t,e){this.node=t,this.defaultCellMinWidth=e,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.table.style.setProperty("--default-cell-min-width",`${e}px`),this.colgroup=this.table.appendChild(document.createElement("colgroup")),t0(t,this.colgroup,this.table,e),this.contentDOM=this.table.appendChild(document.createElement("tbody"))}update(t){return t.type!=this.node.type?!1:(this.node=t,t0(t,this.colgroup,this.table,this.defaultCellMinWidth),!0)}ignoreMutation(t){return t.type=="attributes"&&(t.target==this.table||this.colgroup.contains(t.target))}};function t0(t,e,n,a,r,i){let s=0,o=!0,l=e.firstChild,c=t.firstChild;if(c){for(let p=0,d=0;p<c.childCount;p++){let{colspan:m,colwidth:h}=c.child(p).attrs;for(let b=0;b<m;b++,d++){let y=r==d?i:h&&h[b],k=y?y+"px":"";if(s+=y||a,y||(o=!1),l)l.style.width!=k&&(l.style.width=k),l=l.nextSibling;else{let _=document.createElement("col");_.style.width=k,e.appendChild(_)}}}for(;l;){var u;let p=l.nextSibling;(u=l.parentNode)===null||u===void 0||u.removeChild(l),l=p}o?(n.style.width=s+"px",n.style.minWidth=""):(n.style.width="",n.style.minWidth=s+"px")}}var ln=new Se("tableColumnResizing");function C2({handleWidth:t=5,cellMinWidth:e=25,defaultCellMinWidth:n=100,View:a=UE,lastColumnResizable:r=!0}={}){let i=new je({key:ln,state:{init(s,o){var l;let c=(l=i.spec)===null||l===void 0||(l=l.props)===null||l===void 0?void 0:l.nodeViews,u=$n(o.schema).table.name;return a&&c&&(c[u]=(p,d)=>new a(p,n,d)),new KE(-1,!1)},apply(s,o){return o.apply(s)}},props:{attributes:s=>{let o=ln.getState(s);return o&&o.activeHandle>-1?{class:"resize-cursor"}:{}},handleDOMEvents:{mousemove:(s,o)=>{XE(s,o,t,r)},mouseleave:s=>{ZE(s)},mousedown:(s,o)=>{JE(s,o,e,n)}},decorations:s=>{let o=ln.getState(s);if(o&&o.activeHandle>-1)return nA(s,o.activeHandle)},nodeViews:{}}});return i}var KE=class Yu{constructor(e,n){this.activeHandle=e,this.dragging=n}apply(e){let n=this,a=e.getMeta(ln);if(a&&a.setHandle!=null)return new Yu(a.setHandle,!1);if(a&&a.setDragging!==void 0)return new Yu(n.activeHandle,a.setDragging);if(n.activeHandle>-1&&e.docChanged){let r=e.mapping.map(n.activeHandle,-1);return Qf(e.doc.resolve(r))||(r=-1),new Yu(r,n.dragging)}return n}};function XE(t,e,n,a){if(!t.editable)return;let r=ln.getState(t.state);if(r&&!r.dragging){let i=QE(e.target),s=-1;if(i){let{left:o,right:l}=i.getBoundingClientRect();e.clientX-o<=n?s=i2(t,e,"left",n):l-e.clientX<=n&&(s=i2(t,e,"right",n))}if(s!=r.activeHandle){if(!a&&s!==-1){let o=t.state.doc.resolve(s),l=o.node(-1),c=Ce.get(l),u=o.start(-1);if(c.colCount(o.pos-u)+o.nodeAfter.attrs.colspan-1==c.width-1)return}j2(t,s)}}}function ZE(t){if(!t.editable)return;let e=ln.getState(t.state);e&&e.activeHandle>-1&&!e.dragging&&j2(t,-1)}function JE(t,e,n,a){var r;if(!t.editable)return!1;let i=(r=t.dom.ownerDocument.defaultView)!==null&&r!==void 0?r:window,s=ln.getState(t.state);if(!s||s.activeHandle==-1||s.dragging)return!1;let o=t.state.doc.nodeAt(s.activeHandle),l=YE(t,s.activeHandle,o.attrs);t.dispatch(t.state.tr.setMeta(ln,{setDragging:{startX:e.clientX,startWidth:l}}));function c(p){i.removeEventListener("mouseup",c),i.removeEventListener("mousemove",u);let d=ln.getState(t.state);d?.dragging&&(eA(t,d.activeHandle,s2(d.dragging,p,n)),t.dispatch(t.state.tr.setMeta(ln,{setDragging:null})))}function u(p){if(!p.which)return c(p);let d=ln.getState(t.state);if(d&&d.dragging){let m=s2(d.dragging,p,n);o2(t,d.activeHandle,m,a)}}return o2(t,s.activeHandle,l,a),i.addEventListener("mouseup",c),i.addEventListener("mousemove",u),e.preventDefault(),!0}function YE(t,e,{colspan:n,colwidth:a}){let r=a&&a[a.length-1];if(r)return r;let i=t.domAtPos(e),s=i.node.childNodes[i.offset].offsetWidth,o=n;if(a)for(let l=0;l<n;l++)a[l]&&(s-=a[l],o--);return s/o}function QE(t){for(;t&&t.nodeName!="TD"&&t.nodeName!="TH";)t=t.classList&&t.classList.contains("ProseMirror")?null:t.parentNode;return t}function i2(t,e,n,a){let r=n=="right"?-a:a,i=t.posAtCoords({left:e.clientX+r,top:e.clientY});if(!i)return-1;let{pos:s}=i,o=Ss(t.state.doc.resolve(s));if(!o)return-1;if(n=="right")return o.pos;let l=Ce.get(o.node(-1)),c=o.start(-1),u=l.map.indexOf(o.pos-c);return u%l.width==0?-1:c+l.map[u-1]}function s2(t,e,n){let a=e.clientX-t.startX;return Math.max(n,t.startWidth+a)}function j2(t,e){t.dispatch(t.state.tr.setMeta(ln,{setHandle:e}))}function eA(t,e,n){let a=t.state.doc.resolve(e),r=a.node(-1),i=Ce.get(r),s=a.start(-1),o=i.colCount(a.pos-s)+a.nodeAfter.attrs.colspan-1,l=t.state.tr;for(let c=0;c<i.height;c++){let u=c*i.width+o;if(c&&i.map[u]==i.map[u-i.width])continue;let p=i.map[u],d=r.nodeAt(p).attrs,m=d.colspan==1?0:o-i.colCount(p);if(d.colwidth&&d.colwidth[m]==n)continue;let h=d.colwidth?d.colwidth.slice():tA(d.colspan);h[m]=n,l.setNodeMarkup(s+p,null,{...d,colwidth:h})}l.docChanged&&t.dispatch(l)}function o2(t,e,n,a){let r=t.state.doc.resolve(e),i=r.node(-1),s=r.start(-1),o=Ce.get(i).colCount(r.pos-s)+r.nodeAfter.attrs.colspan-1,l=t.domAtPos(r.start(-1)).node;for(;l&&l.nodeName!="TABLE";)l=l.parentNode;l&&t0(i,l.firstChild,l,a,o,n)}function tA(t){return Array(t).fill(0)}function nA(t,e){let n=[],a=t.doc.resolve(e),r=a.node(-1);if(!r)return We.empty;let i=Ce.get(r),s=a.start(-1),o=i.colCount(a.pos-s)+a.nodeAfter.attrs.colspan-1;for(let c=0;c<i.height;c++){let u=o+c*i.width;if((o==i.width-1||i.map[u]!=i.map[u+1])&&(c==0||i.map[u]!=i.map[u-i.width])){var l;let p=i.map[u],d=s+p+r.nodeAt(p).nodeSize-1,m=document.createElement("div");m.className="column-resize-handle",!((l=ln.getState(t))===null||l===void 0)&&l.dragging&&n.push(bt.node(s+p,s+p+r.nodeAt(p).nodeSize,{class:"column-resize-dragging"})),n.push(bt.widget(d,m))}}return We.create(t.doc,n)}function S2({allowTableNodeSelection:t=!1}={}){return new je({key:hr,state:{init(){return null},apply(e,n){let a=e.getMeta(hr);if(a!=null)return a==-1?null:a;if(n==null||!e.docChanged)return n;let{deleted:r,pos:i}=e.mapping.mapResult(n);return r?null:i}},props:{decorations:vE,handleDOMEvents:{mousedown:WE},createSelectionBetween(e){return hr.getState(e.state)!=null?e.state.selection:null},handleTripleClick:HE,handleKeyDown:GE,handlePaste:VE},appendTransaction(e,n,a){return jE(a,EE(a,n),t)}})}var ep=typeof navigator<"u"?navigator:null,s0=ep&&ep.userAgent||"",aA=/Edge\/(\d+)/.exec(s0),rA=/MSIE \d/.exec(s0),iA=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(s0),sA=!!(rA||iA||aA),oA=!sA&&!!ep&&/Apple Computer/.test(ep.vendor),E2=new Se("safari-ime-span"),i0=!1,lA={key:E2,props:{decorations:cA,handleDOMEvents:{compositionstart:()=>{i0=!0},compositionend:()=>{i0=!1}}}};function cA(t){let{$from:e,$to:n,to:a}=t.selection;if(i0&&e.sameParent(n)){let r=bt.widget(a,uA,{ignoreSelection:!0,key:"safari-ime-span"});return We.create(t.doc,[r])}}function uA(t){let e=t.dom.ownerDocument.createElement("span");return e.className="ProseMirror-safari-ime-span",e}var A2=new je(oA?lA:{key:E2});function As(t,e){let n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let a=0,r=n.indexOf(e);for(;r!==-1;)a++,r=n.indexOf(e,r+e.length);return a}function o0(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function l0(t,e,n){let r=Ka((n||{}).ignore||[]),i=pA(e),s=-1;for(;++s<i.length;)zr(t,"text",o);function o(c,u){let p=-1,d;for(;++p<u.length;){let m=u[p],h=d?d.children:void 0;if(r(m,h?h.indexOf(m):void 0,d))return;d=m}if(d)return l(c,u)}function l(c,u){let p=u[u.length-1],d=i[s][0],m=i[s][1],h=0,y=p.children.indexOf(c),k=!1,_=[];d.lastIndex=0;let $=d.exec(c.value);for(;$;){let M=$.index,N={index:$.index,input:$.input,stack:[...u,c]},E=m(...$,N);if(typeof E=="string"&&(E=E.length>0?{type:"text",value:E}:void 0),E===!1?d.lastIndex=M+1:(h!==M&&_.push({type:"text",value:c.value.slice(h,M)}),Array.isArray(E)?_.push(...E):E&&_.push(E),h=M+$[0].length,k=!0),!d.global)break;$=d.exec(c.value)}return k?(h<c.value.length&&_.push({type:"text",value:c.value.slice(h)}),p.children.splice(y,1,..._)):_=[c],y+_.length}}function pA(t){let e=[];if(!Array.isArray(t))throw new TypeError("Expected find and replace tuple or list of tuples");let n=!t[0]||Array.isArray(t[0])?t:[t],a=-1;for(;++a<n.length;){let r=n[a];e.push([dA(r[0]),mA(r[1])])}return e}function dA(t){return typeof t=="string"?new RegExp(o0(t),"g"):t}function mA(t){return typeof t=="function"?t:function(){return t}}var c0="phrasing",u0=["autolink","link","image","label"];function d0(){return{transforms:[xA],enter:{literalAutolink:hA,literalAutolinkEmail:p0,literalAutolinkHttp:p0,literalAutolinkWww:p0},exit:{literalAutolink:yA,literalAutolinkEmail:bA,literalAutolinkHttp:fA,literalAutolinkWww:gA}}}function m0(){return{unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:c0,notInConstruct:u0},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:c0,notInConstruct:u0},{character:":",before:"[ps]",after:"\\/",inConstruct:c0,notInConstruct:u0}]}}function hA(t){this.enter({type:"link",title:null,url:"",children:[]},t)}function p0(t){this.config.enter.autolinkProtocol.call(this,t)}function fA(t){this.config.exit.autolinkProtocol.call(this,t)}function gA(t){this.config.exit.data.call(this,t);let e=this.stack[this.stack.length-1];e.type,e.url="http://"+this.sliceSerialize(t)}function bA(t){this.config.exit.autolinkEmail.call(this,t)}function yA(t){this.exit(t)}function xA(t){l0(t,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,kA],[/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu,wA]],{ignore:["link","linkReference"]})}function kA(t,e,n,a,r){let i="";if(!T2(r)||(/^w/i.test(e)&&(n=e+n,e="",i="http://"),!_A(n)))return!1;let s=vA(n+a);if(!s[0])return!1;let o={type:"link",title:null,url:i+e+s[0],children:[{type:"text",value:e+s[0]}]};return s[1]?[o,{type:"text",value:s[1]}]:o}function wA(t,e,n,a){return!T2(a,!0)||/[-\d_]$/.test(n)?!1:{type:"link",title:null,url:"mailto:"+e+"@"+n,children:[{type:"text",value:e+"@"+n}]}}function _A(t){let e=t.split(".");return!(e.length<2||e[e.length-1]&&(/_/.test(e[e.length-1])||!/[a-zA-Z\d]/.test(e[e.length-1]))||e[e.length-2]&&(/_/.test(e[e.length-2])||!/[a-zA-Z\d]/.test(e[e.length-2])))}function vA(t){let e=/[!"&'),.:;<>?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],a=n.indexOf(")"),r=As(t,"("),i=As(t,")");for(;a!==-1&&r>i;)t+=n.slice(0,a+1),n=n.slice(a+1),a=n.indexOf(")"),i++;return[t,n]}function T2(t,e){let n=t.input.charCodeAt(t.index-1);return(t.index===0||Pn(n)||Ar(n))&&(!e||n!==47)}M2.peek=NA;function $A(){this.buffer()}function CA(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function jA(){this.buffer()}function SA(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function EA(t){let e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=vt(this.sliceSerialize(t)).toLowerCase(),n.label=e}function AA(t){this.exit(t)}function TA(t){let e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=vt(this.sliceSerialize(t)).toLowerCase(),n.label=e}function MA(t){this.exit(t)}function NA(){return"["}function M2(t,e,n,a){let r=n.createTracker(a),i=r.move("[^"),s=n.enter("footnoteReference"),o=n.enter("reference");return i+=r.move(n.safe(n.associationId(t),{after:"]",before:i})),o(),s(),i+=r.move("]"),i}function h0(){return{enter:{gfmFootnoteCallString:$A,gfmFootnoteCall:CA,gfmFootnoteDefinitionLabelString:jA,gfmFootnoteDefinition:SA},exit:{gfmFootnoteCallString:EA,gfmFootnoteCall:AA,gfmFootnoteDefinitionLabelString:TA,gfmFootnoteDefinition:MA}}}function f0(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:M2},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(a,r,i,s){let o=i.createTracker(s),l=o.move("[^"),c=i.enter("footnoteDefinition"),u=i.enter("label");return l+=o.move(i.safe(i.associationId(a),{before:l,after:"]"})),u(),l+=o.move("]:"),a.children&&a.children.length>0&&(o.shift(4),l+=o.move((e?` -`:" ")+i.indentLines(i.containerFlow(a,o.current()),e?N2:IA))),c(),l}}function IA(t,e,n){return e===0?t:N2(t,e,n)}function N2(t,e,n){return(n?"":" ")+t}var RA=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];I2.peek=BA;function g0(){return{canContainEols:["delete"],enter:{strikethrough:zA},exit:{strikethrough:OA}}}function b0(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:RA}],handlers:{delete:I2}}}function zA(t){this.enter({type:"delete",children:[]},t)}function OA(t){this.exit(t)}function I2(t,e,n,a){let r=n.createTracker(a),i=n.enter("strikethrough"),s=r.move("~~");return s+=n.containerPhrasing(t,{...r.current(),before:s,after:"~"}),s+=r.move("~~"),i(),s}function BA(){return"~"}function LA(t){return t.length}function z2(t,e){let n=e||{},a=(n.align||[]).concat(),r=n.stringLength||LA,i=[],s=[],o=[],l=[],c=0,u=-1;for(;++u<t.length;){let b=[],y=[],k=-1;for(t[u].length>c&&(c=t[u].length);++k<t[u].length;){let _=DA(t[u][k]);if(n.alignDelimiters!==!1){let $=r(_);y[k]=$,(l[k]===void 0||$>l[k])&&(l[k]=$)}b.push(_)}s[u]=b,o[u]=y}let p=-1;if(typeof a=="object"&&"length"in a)for(;++p<c;)i[p]=R2(a[p]);else{let b=R2(a);for(;++p<c;)i[p]=b}p=-1;let d=[],m=[];for(;++p<c;){let b=i[p],y="",k="";b===99?(y=":",k=":"):b===108?y=":":b===114&&(k=":");let _=n.alignDelimiters===!1?1:Math.max(1,l[p]-y.length-k.length),$=y+"-".repeat(_)+k;n.alignDelimiters!==!1&&(_=y.length+_+k.length,_>l[p]&&(l[p]=_),m[p]=_),d[p]=$}s.splice(1,0,d),o.splice(1,0,m),u=-1;let h=[];for(;++u<s.length;){let b=s[u],y=o[u];p=-1;let k=[];for(;++p<c;){let _=b[p]||"",$="",M="";if(n.alignDelimiters!==!1){let N=l[p]-(y[p]||0),E=i[p];E===114?$=" ".repeat(N):E===99?N%2?($=" ".repeat(N/2+.5),M=" ".repeat(N/2-.5)):($=" ".repeat(N/2),M=$):M=" ".repeat(N)}n.delimiterStart!==!1&&!p&&k.push("|"),n.padding!==!1&&!(n.alignDelimiters===!1&&_==="")&&(n.delimiterStart!==!1||p)&&k.push(" "),n.alignDelimiters!==!1&&k.push($),k.push(_),n.alignDelimiters!==!1&&k.push(M),n.padding!==!1&&k.push(" "),(n.delimiterEnd!==!1||p!==c-1)&&k.push("|")}h.push(n.delimiterEnd===!1?k.join("").replace(/ +$/,""):k.join(""))}return h.join(` -`)}function DA(t){return t==null?"":String(t)}function R2(t){let e=typeof t=="string"?t.codePointAt(0):0;return e===67||e===99?99:e===76||e===108?108:e===82||e===114?114:0}function x0(){return{enter:{table:FA,tableData:O2,tableHeader:O2,tableRow:PA},exit:{codeText:GA,table:qA,tableData:y0,tableHeader:y0,tableRow:y0}}}function FA(t){let e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function qA(t){this.exit(t),this.data.inTable=void 0}function PA(t){this.enter({type:"tableRow",children:[]},t)}function y0(t){this.exit(t)}function O2(t){this.enter({type:"tableCell",children:[]},t)}function GA(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,HA));let n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function HA(t,e){return e==="|"?e:t}function k0(t){let e=t||{},n=e.tableCellPadding,a=e.tablePipeAlign,r=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:d,table:s,tableCell:l,tableRow:o}};function s(m,h,b,y){return c(u(m,b,y),m.align)}function o(m,h,b,y){let k=p(m,b,y),_=c([k]);return _.slice(0,_.indexOf(` -`))}function l(m,h,b,y){let k=b.enter("tableCell"),_=b.enter("phrasing"),$=b.containerPhrasing(m,{...y,before:i,after:i});return _(),k(),$}function c(m,h){return z2(m,{align:h,alignDelimiters:a,padding:n,stringLength:r})}function u(m,h,b){let y=m.children,k=-1,_=[],$=h.enter("table");for(;++k<y.length;)_[k]=p(y[k],h,b);return $(),_}function p(m,h,b){let y=m.children,k=-1,_=[],$=h.enter("tableRow");for(;++k<y.length;)_[k]=l(y[k],m,h,b);return $(),_}function d(m,h,b){let y=Or.inlineCode(m,h,b);return b.stack.includes("tableCell")&&(y=y.replace(/\|/g,"\\$&")),y}}function w0(){return{exit:{taskListCheckValueChecked:B2,taskListCheckValueUnchecked:B2,paragraph:VA}}}function _0(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:WA}}}function B2(t){let e=this.stack[this.stack.length-2];e.type,e.checked=t.type==="taskListCheckValueChecked"}function VA(t){let e=this.stack[this.stack.length-2];if(e&&e.type==="listItem"&&typeof e.checked=="boolean"){let n=this.stack[this.stack.length-1];n.type;let a=n.children[0];if(a&&a.type==="text"){let r=e.children,i=-1,s;for(;++i<r.length;){let o=r[i];if(o.type==="paragraph"){s=o;break}}s===n&&(a.value=a.value.slice(1),a.value.length===0?n.children.shift():n.position&&a.position&&typeof a.position.start.offset=="number"&&(a.position.start.column++,a.position.start.offset++,n.position.start=Object.assign({},a.position.start)))}}this.exit(t)}function WA(t,e,n,a){let r=t.children[0],i=typeof t.checked=="boolean"&&r&&r.type==="paragraph",s="["+(t.checked?"x":" ")+"] ",o=n.createTracker(a);i&&o.move(s);let l=Or.listItem(t,e,n,{...a,...o.current()});return i&&(l=l.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,c)),l;function c(u){return u+s}}function v0(){return[d0(),h0(),g0(),x0(),w0()]}function $0(t){return{extensions:[m0(),f0(t),b0(),k0(t),_0()]}}var UA={tokenize:YA,partial:!0},L2={tokenize:QA,partial:!0},D2={tokenize:eT,partial:!0},F2={tokenize:tT,partial:!0},KA={tokenize:nT,partial:!0},q2={name:"wwwAutolink",tokenize:ZA,previous:G2},P2={name:"protocolAutolink",tokenize:JA,previous:H2},Ta={name:"emailAutolink",tokenize:XA,previous:V2},ta={};function j0(){return{text:ta}}var pi=48;for(;pi<123;)ta[pi]=Ta,pi++,pi===58?pi=65:pi===91&&(pi=97);ta[43]=Ta;ta[45]=Ta;ta[46]=Ta;ta[95]=Ta;ta[72]=[Ta,P2];ta[104]=[Ta,P2];ta[87]=[Ta,q2];ta[119]=[Ta,q2];function XA(t,e,n){let a=this,r,i;return s;function s(p){return!C0(p)||!V2.call(a,a.previous)||S0(a.events)?n(p):(t.enter("literalAutolink"),t.enter("literalAutolinkEmail"),o(p))}function o(p){return C0(p)?(t.consume(p),o):p===64?(t.consume(p),l):n(p)}function l(p){return p===46?t.check(KA,u,c)(p):p===45||p===95||tt(p)?(i=!0,t.consume(p),l):u(p)}function c(p){return t.consume(p),r=!0,l}function u(p){return i&&r&&et(a.previous)?(t.exit("literalAutolinkEmail"),t.exit("literalAutolink"),e(p)):n(p)}}function ZA(t,e,n){let a=this;return r;function r(s){return s!==87&&s!==119||!G2.call(a,a.previous)||S0(a.events)?n(s):(t.enter("literalAutolink"),t.enter("literalAutolinkWww"),t.check(UA,t.attempt(L2,t.attempt(D2,i),n),n)(s))}function i(s){return t.exit("literalAutolinkWww"),t.exit("literalAutolink"),e(s)}}function JA(t,e,n){let a=this,r="",i=!1;return s;function s(p){return(p===72||p===104)&&H2.call(a,a.previous)&&!S0(a.events)?(t.enter("literalAutolink"),t.enter("literalAutolinkHttp"),r+=String.fromCodePoint(p),t.consume(p),o):n(p)}function o(p){if(et(p)&&r.length<5)return r+=String.fromCodePoint(p),t.consume(p),o;if(p===58){let d=r.toLowerCase();if(d==="http"||d==="https")return t.consume(p),l}return n(p)}function l(p){return p===47?(t.consume(p),i?c:(i=!0,l)):n(p)}function c(p){return p===null||Er(p)||be(p)||Pn(p)||Ar(p)?n(p):t.attempt(L2,t.attempt(D2,u),n)(p)}function u(p){return t.exit("literalAutolinkHttp"),t.exit("literalAutolink"),e(p)}}function YA(t,e,n){let a=0;return r;function r(s){return(s===87||s===119)&&a<3?(a++,t.consume(s),r):s===46&&a===3?(t.consume(s),i):n(s)}function i(s){return s===null?n(s):e(s)}}function QA(t,e,n){let a,r,i;return s;function s(c){return c===46||c===95?t.check(F2,l,o)(c):c===null||be(c)||Pn(c)||c!==45&&Ar(c)?l(c):(i=!0,t.consume(c),s)}function o(c){return c===95?a=!0:(r=a,a=void 0),t.consume(c),s}function l(c){return r||a||!i?n(c):e(c)}}function eT(t,e){let n=0,a=0;return r;function r(s){return s===40?(n++,t.consume(s),r):s===41&&a<n?i(s):s===33||s===34||s===38||s===39||s===41||s===42||s===44||s===46||s===58||s===59||s===60||s===63||s===93||s===95||s===126?t.check(F2,e,i)(s):s===null||be(s)||Pn(s)?e(s):(t.consume(s),r)}function i(s){return s===41&&a++,t.consume(s),r}}function tT(t,e,n){return a;function a(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(t.consume(o),a):o===38?(t.consume(o),i):o===93?(t.consume(o),r):o===60||o===null||be(o)||Pn(o)?e(o):n(o)}function r(o){return o===null||o===40||o===91||be(o)||Pn(o)?e(o):a(o)}function i(o){return et(o)?s(o):n(o)}function s(o){return o===59?(t.consume(o),a):et(o)?(t.consume(o),s):n(o)}}function nT(t,e,n){return a;function a(i){return t.consume(i),r}function r(i){return tt(i)?n(i):e(i)}}function G2(t){return t===null||t===40||t===42||t===95||t===91||t===93||t===126||be(t)}function H2(t){return!et(t)}function V2(t){return!(t===47||C0(t))}function C0(t){return t===43||t===45||t===46||t===95||tt(t)}function S0(t){let e=t.length,n=!1;for(;e--;){let a=t[e][1];if((a.type==="labelLink"||a.type==="labelImage")&&!a._balanced){n=!0;break}if(a._gfmAutolinkLiteralWalkedInto){n=!1;break}}return t.length>0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var aT={tokenize:uT,partial:!0};function E0(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:oT,continuation:{tokenize:lT},exit:cT}},text:{91:{name:"gfmFootnoteCall",tokenize:sT},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:rT,resolveTo:iT}}}}function rT(t,e,n){let a=this,r=a.events.length,i=a.parser.gfmFootnotes||(a.parser.gfmFootnotes=[]),s;for(;r--;){let l=a.events[r][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return o;function o(l){if(!s||!s._balanced)return n(l);let c=vt(a.sliceSerialize({start:s.end,end:a.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?n(l):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(l),t.exit("gfmFootnoteCallLabelMarker"),e(l))}}function iT(t,e){let n=t.length,a;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){a=t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";let r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},i={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},i.end),end:Object.assign({},t[t.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",i,e],["exit",i,e],["enter",s,e],["enter",o,e],["exit",o,e],["exit",s,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function sT(t,e,n){let a=this,r=a.parser.gfmFootnotes||(a.parser.gfmFootnotes=[]),i=0,s;return o;function o(p){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(p),t.exit("gfmFootnoteCallLabelMarker"),l}function l(p){return p!==94?n(p):(t.enter("gfmFootnoteCallMarker"),t.consume(p),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",c)}function c(p){if(i>999||p===93&&!s||p===null||p===91||be(p))return n(p);if(p===93){t.exit("chunkString");let d=t.exit("gfmFootnoteCallString");return r.includes(vt(a.sliceSerialize(d)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(p),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(p)}return be(p)||(s=!0),i++,t.consume(p),p===92?u:c}function u(p){return p===91||p===92||p===93?(t.consume(p),i++,c):c(p)}}function oT(t,e,n){let a=this,r=a.parser.gfmFootnotes||(a.parser.gfmFootnotes=[]),i,s=0,o;return l;function l(h){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(h),t.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(h){return h===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(h),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",u):n(h)}function u(h){if(s>999||h===93&&!o||h===null||h===91||be(h))return n(h);if(h===93){t.exit("chunkString");let b=t.exit("gfmFootnoteDefinitionLabelString");return i=vt(a.sliceSerialize(b)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(h),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),d}return be(h)||(o=!0),s++,t.consume(h),h===92?p:u}function p(h){return h===91||h===92||h===93?(t.consume(h),s++,u):u(h)}function d(h){return h===58?(t.enter("definitionMarker"),t.consume(h),t.exit("definitionMarker"),r.includes(i)||r.push(i),Q(t,m,"gfmFootnoteDefinitionWhitespace")):n(h)}function m(h){return e(h)}}function lT(t,e,n){return t.check(Gn,e,t.attempt(aT,e,n))}function cT(t){t.exit("gfmFootnoteDefinition")}function uT(t,e,n){let a=this;return Q(t,r,"gfmFootnoteDefinitionIndent",5);function r(i){let s=a.events[a.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?e(i):n(i)}}function A0(t){let n=(t||{}).singleTilde,a={name:"strikethrough",tokenize:i,resolveAll:r};return n==null&&(n=!0),{text:{126:a},insideSpan:{null:[a]},attentionMarkers:{null:[126]}};function r(s,o){let l=-1;for(;++l<s.length;)if(s[l][0]==="enter"&&s[l][1].type==="strikethroughSequenceTemporary"&&s[l][1]._close){let c=l;for(;c--;)if(s[c][0]==="exit"&&s[c][1].type==="strikethroughSequenceTemporary"&&s[c][1]._open&&s[l][1].end.offset-s[l][1].start.offset===s[c][1].end.offset-s[c][1].start.offset){s[l][1].type="strikethroughSequence",s[c][1].type="strikethroughSequence";let u={type:"strikethrough",start:Object.assign({},s[c][1].start),end:Object.assign({},s[l][1].end)},p={type:"strikethroughText",start:Object.assign({},s[c][1].end),end:Object.assign({},s[l][1].start)},d=[["enter",u,o],["enter",s[c][1],o],["exit",s[c][1],o],["enter",p,o]],m=o.parser.constructs.insideSpan.null;m&&Ve(d,d.length,0,Va(m,s.slice(c+1,l),o)),Ve(d,d.length,0,[["exit",p,o],["enter",s[l][1],o],["exit",s[l][1],o],["exit",u,o]]),Ve(s,c-1,l-c+3,d),l=c+d.length-2;break}}for(l=-1;++l<s.length;)s[l][1].type==="strikethroughSequenceTemporary"&&(s[l][1].type="data");return s}function i(s,o,l){let c=this.previous,u=this.events,p=0;return d;function d(h){return c===126&&u[u.length-1][1].type!=="characterEscape"?l(h):(s.enter("strikethroughSequenceTemporary"),m(h))}function m(h){let b=ua(c);if(h===126)return p>1?l(h):(s.consume(h),p++,m);if(p<2&&!n)return l(h);let y=s.exit("strikethroughSequenceTemporary"),k=ua(h);return y._open=!k||k===2&&!!b,y._close=!b||b===2&&!!k,o(h)}}}var tp=class{constructor(){this.map=[]}add(e,n,a){pT(this,e,n,a)}consume(e){if(this.map.sort(function(i,s){return i[0]-s[0]}),this.map.length===0)return;let n=this.map.length,a=[];for(;n>0;)n-=1,a.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];a.push(e.slice()),e.length=0;let r=a.pop();for(;r;){for(let i of r)e.push(i);r=a.pop()}this.map.length=0}};function pT(t,e,n,a){let r=0;if(!(n===0&&a.length===0)){for(;r<t.map.length;){if(t.map[r][0]===e){t.map[r][1]+=n,t.map[r][2].push(...a);return}r+=1}t.map.push([e,n,a])}}function W2(t,e){let n=!1,a=[];for(;e<t.length;){let r=t[e];if(n){if(r[0]==="enter")r[1].type==="tableContent"&&a.push(t[e+1][1].type==="tableDelimiterMarker"?"left":"none");else if(r[1].type==="tableContent"){if(t[e-1][1].type==="tableDelimiterMarker"){let i=a.length-1;a[i]=a[i]==="left"?"center":"right"}}else if(r[1].type==="tableDelimiterRow")break}else r[0]==="enter"&&r[1].type==="tableDelimiterRow"&&(n=!0);e+=1}return a}function T0(){return{flow:{null:{name:"table",tokenize:dT,resolveAll:mT}}}}function dT(t,e,n){let a=this,r=0,i=0,s;return o;function o(T){let ce=a.events.length-1;for(;ce>-1;){let J=a.events[ce][1].type;if(J==="lineEnding"||J==="linePrefix")ce--;else break}let Y=ce>-1?a.events[ce][1].type:null,K=Y==="tableHead"||Y==="tableRow"?E:l;return K===E&&a.parser.lazy[a.now().line]?n(T):K(T)}function l(T){return t.enter("tableHead"),t.enter("tableRow"),c(T)}function c(T){return T===124||(s=!0,i+=1),u(T)}function u(T){return T===null?n(T):W(T)?i>1?(i=0,a.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(T),t.exit("lineEnding"),m):n(T):te(T)?Q(t,u,"whitespace")(T):(i+=1,s&&(s=!1,r+=1),T===124?(t.enter("tableCellDivider"),t.consume(T),t.exit("tableCellDivider"),s=!0,u):(t.enter("data"),p(T)))}function p(T){return T===null||T===124||be(T)?(t.exit("data"),u(T)):(t.consume(T),T===92?d:p)}function d(T){return T===92||T===124?(t.consume(T),p):p(T)}function m(T){return a.interrupt=!1,a.parser.lazy[a.now().line]?n(T):(t.enter("tableDelimiterRow"),s=!1,te(T)?Q(t,h,"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(T):h(T))}function h(T){return T===45||T===58?y(T):T===124?(s=!0,t.enter("tableCellDivider"),t.consume(T),t.exit("tableCellDivider"),b):N(T)}function b(T){return te(T)?Q(t,y,"whitespace")(T):y(T)}function y(T){return T===58?(i+=1,s=!0,t.enter("tableDelimiterMarker"),t.consume(T),t.exit("tableDelimiterMarker"),k):T===45?(i+=1,k(T)):T===null||W(T)?M(T):N(T)}function k(T){return T===45?(t.enter("tableDelimiterFiller"),_(T)):N(T)}function _(T){return T===45?(t.consume(T),_):T===58?(s=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(T),t.exit("tableDelimiterMarker"),$):(t.exit("tableDelimiterFiller"),$(T))}function $(T){return te(T)?Q(t,M,"whitespace")(T):M(T)}function M(T){return T===124?h(T):T===null||W(T)?!s||r!==i?N(T):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(T)):N(T)}function N(T){return n(T)}function E(T){return t.enter("tableRow"),I(T)}function I(T){return T===124?(t.enter("tableCellDivider"),t.consume(T),t.exit("tableCellDivider"),I):T===null||W(T)?(t.exit("tableRow"),e(T)):te(T)?Q(t,I,"whitespace")(T):(t.enter("data"),F(T))}function F(T){return T===null||T===124||be(T)?(t.exit("data"),I(T)):(t.consume(T),T===92?L:F)}function L(T){return T===92||T===124?(t.consume(T),F):F(T)}}function mT(t,e){let n=-1,a=!0,r=0,i=[0,0,0,0],s=[0,0,0,0],o=!1,l=0,c,u,p,d=new tp;for(;++n<t.length;){let m=t[n],h=m[1];m[0]==="enter"?h.type==="tableHead"?(o=!1,l!==0&&(U2(d,e,l,c,u),u=void 0,l=0),c={type:"table",start:Object.assign({},h.start),end:Object.assign({},h.end)},d.add(n,0,[["enter",c,e]])):h.type==="tableRow"||h.type==="tableDelimiterRow"?(a=!0,p=void 0,i=[0,0,0,0],s=[0,n+1,0,0],o&&(o=!1,u={type:"tableBody",start:Object.assign({},h.start),end:Object.assign({},h.end)},d.add(n,0,[["enter",u,e]])),r=h.type==="tableDelimiterRow"?2:u?3:1):r&&(h.type==="data"||h.type==="tableDelimiterMarker"||h.type==="tableDelimiterFiller")?(a=!1,s[2]===0&&(i[1]!==0&&(s[0]=s[1],p=np(d,e,i,r,void 0,p),i=[0,0,0,0]),s[2]=n)):h.type==="tableCellDivider"&&(a?a=!1:(i[1]!==0&&(s[0]=s[1],p=np(d,e,i,r,void 0,p)),i=s,s=[i[1],n,0,0])):h.type==="tableHead"?(o=!0,l=n):h.type==="tableRow"||h.type==="tableDelimiterRow"?(l=n,i[1]!==0?(s[0]=s[1],p=np(d,e,i,r,n,p)):s[1]!==0&&(p=np(d,e,s,r,n,p)),r=0):r&&(h.type==="data"||h.type==="tableDelimiterMarker"||h.type==="tableDelimiterFiller")&&(s[3]=n)}for(l!==0&&U2(d,e,l,c,u),d.consume(e.events),n=-1;++n<e.events.length;){let m=e.events[n];m[0]==="enter"&&m[1].type==="table"&&(m[1]._align=W2(e.events,n))}return t}function np(t,e,n,a,r,i){let s=a===1?"tableHeader":a===2?"tableDelimiter":"tableData",o="tableContent";n[0]!==0&&(i.end=Object.assign({},Ts(e.events,n[0])),t.add(n[0],0,[["exit",i,e]]));let l=Ts(e.events,n[1]);if(i={type:s,start:Object.assign({},l),end:Object.assign({},l)},t.add(n[1],0,[["enter",i,e]]),n[2]!==0){let c=Ts(e.events,n[2]),u=Ts(e.events,n[3]),p={type:o,start:Object.assign({},c),end:Object.assign({},u)};if(t.add(n[2],0,[["enter",p,e]]),a!==2){let d=e.events[n[2]],m=e.events[n[3]];if(d[1].end=Object.assign({},m[1].end),d[1].type="chunkText",d[1].contentType="text",n[3]>n[2]+1){let h=n[2]+1,b=n[3]-n[2]-1;t.add(h,b,[])}}t.add(n[3]+1,0,[["exit",p,e]])}return r!==void 0&&(i.end=Object.assign({},Ts(e.events,r)),t.add(r,0,[["exit",i,e]]),i=void 0),i}function U2(t,e,n,a,r){let i=[],s=Ts(e.events,n);r&&(r.end=Object.assign({},s),i.push(["exit",r,e])),a.end=Object.assign({},s),i.push(["exit",a,e]),t.add(n+1,0,i)}function Ts(t,e){let n=t[e],a=n[0]==="enter"?"start":"end";return n[1][a]}var hT={name:"tasklistCheck",tokenize:fT};function M0(){return{text:{91:hT}}}function fT(t,e,n){let a=this;return r;function r(l){return a.previous!==null||!a._gfmTasklistFirstContentOfListItem?n(l):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(l),t.exit("taskListCheckMarker"),i)}function i(l){return be(l)?(t.enter("taskListCheckValueUnchecked"),t.consume(l),t.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(t.enter("taskListCheckValueChecked"),t.consume(l),t.exit("taskListCheckValueChecked"),s):n(l)}function s(l){return l===93?(t.enter("taskListCheckMarker"),t.consume(l),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),o):n(l)}function o(l){return W(l)?e(l):te(l)?t.check({tokenize:gT},e,n)(l):n(l)}}function gT(t,e,n){return Q(t,a,"whitespace");function a(r){return r===null?n(r):e(r)}}function K2(t){return Ql([j0(),E0(),A0(t),T0(),M0()])}var bT={};function ap(t){let e=this,n=t||bT,a=e.data(),r=a.micromarkExtensions||(a.micromarkExtensions=[]),i=a.fromMarkdownExtensions||(a.fromMarkdownExtensions=[]),s=a.toMarkdownExtensions||(a.toMarkdownExtensions=[]);r.push(K2(n)),i.push(v0()),s.push($0(n))}function ie(t,e){return Object.assign(t,{meta:{package:"@milkdown/preset-gfm",...e}}),t}var R0=oi("strike_through");ie(R0,{displayName:"Attr<strikethrough>",group:"Strikethrough"});var al=dr("strike_through",t=>({parseDOM:[{tag:"del"},{style:"text-decoration",getAttrs:e=>e==="line-through"}],toDOM:e=>["del",t.get(R0.key)(e)],parseMarkdown:{match:e=>e.type==="delete",runner:(e,n,a)=>{e.openMark(a),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="strike_through",runner:(e,n)=>{e.withMark(n,"delete")}}}));ie(al.mark,{displayName:"MarkSchema<strikethrough>",group:"Strikethrough"});ie(al.ctx,{displayName:"MarkSchemaCtx<strikethrough>",group:"Strikethrough"});var rl=re("ToggleStrikeThrough",t=>()=>Ui(al.type(t)));ie(rl,{displayName:"Command<ToggleStrikethrough>",group:"Strikethrough"});var Z2=Tt(t=>Xr(/(?<![\w:/])(~{1,2})(.+?)\1(?!\w|\/)/,al.type(t)));ie(Z2,{displayName:"InputRule<strikethrough>",group:"Strikethrough"});var z0=xt("strikeThroughKeymap",{ToggleStrikethrough:{shortcuts:"Mod-Alt-x",command:t=>{let e=t.get(xe);return()=>e.call(rl.key)}}});ie(z0.ctx,{displayName:"KeymapCtx<strikethrough>",group:"Strikethrough"});ie(z0.shortcuts,{displayName:"Keymap<strikethrough>",group:"Strikethrough"});var il=l2({tableGroup:"block",cellContent:"paragraph",cellAttributes:{alignment:{default:"left",getFromDOM:t=>t.style.textAlign||"left",setDOMAttr:(t,e)=>{e.style=`text-align: ${t||"left"}`}}}}),Ma=ze("table",()=>({...il.table,content:"table_header_row table_row+",disableDropCursor:!0,parseMarkdown:{match:t=>t.type==="table",runner:(t,e,n)=>{let a=e.align,r=e.children.map((i,s)=>({...i,align:a,isHeader:s===0}));t.openNode(n),t.next(r),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table",runner:(t,e)=>{let n=e.content.firstChild?.content;if(!n)return;let a=[];n.forEach(r=>{a.push(r.attrs.alignment)}),t.openNode("table",void 0,{align:a}),t.next(e.content),t.closeNode()}}}));ie(Ma.node,{displayName:"NodeSchema<table>",group:"Table"});ie(Ma.ctx,{displayName:"NodeSchemaCtx<table>",group:"Table"});var sl=ze("table_header_row",()=>({...il.table_row,disableDropCursor:!0,content:"(table_header)*",parseDOM:[{tag:"tr[data-is-header]"},{tag:"tr",getAttrs:t=>t instanceof HTMLElement&&t.querySelector("th")?{}:!1}],toDOM(){return["tr",{"data-is-header":!0},0]},parseMarkdown:{match:t=>!!(t.type==="tableRow"&&t.isHeader),runner:(t,e,n)=>{let a=e.align,r=e.children.map((i,s)=>({...i,align:a[s],isHeader:e.isHeader}));t.openNode(n),t.next(r),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table_header_row",runner:(t,e)=>{e.content.size!==0&&(t.openNode("tableRow",void 0,{isHeader:!0}),t.next(e.content),t.closeNode())}}}));ie(sl.node,{displayName:"NodeSchema<tableHeaderRow>",group:"Table"});ie(sl.ctx,{displayName:"NodeSchemaCtx<tableHeaderRow>",group:"Table"});var Ns=ze("table_row",()=>({...il.table_row,disableDropCursor:!0,content:"(table_cell)*",parseMarkdown:{match:t=>t.type==="tableRow",runner:(t,e,n)=>{let a=e.align,r=e.children.map((i,s)=>({...i,align:a[s]}));t.openNode(n),t.next(r),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table_row",runner:(t,e)=>{e.content.size!==0&&(t.openNode("tableRow"),t.next(e.content),t.closeNode())}}}));ie(Ns.node,{displayName:"NodeSchema<tableRow>",group:"Table"});ie(Ns.ctx,{displayName:"NodeSchemaCtx<tableRow>",group:"Table"});var ol=ze("table_cell",()=>({...il.table_cell,disableDropCursor:!0,parseMarkdown:{match:t=>t.type==="tableCell"&&!t.isHeader,runner:(t,e,n)=>{let a=e.align;t.openNode(n,{alignment:a}).openNode(t.schema.nodes.paragraph).next(e.children).closeNode().closeNode()}},toMarkdown:{match:t=>t.type.name==="table_cell",runner:(t,e)=>{t.openNode("tableCell").next(e.content).closeNode()}}}));ie(ol.node,{displayName:"NodeSchema<tableCell>",group:"Table"});ie(ol.ctx,{displayName:"NodeSchemaCtx<tableCell>",group:"Table"});var Ms=ze("table_header",()=>({...il.table_header,disableDropCursor:!0,parseMarkdown:{match:t=>t.type==="tableCell"&&!!t.isHeader,runner:(t,e,n)=>{let a=e.align;t.openNode(n,{alignment:a}),t.openNode(t.schema.nodes.paragraph),t.next(e.children),t.closeNode(),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table_header",runner:(t,e)=>{t.openNode("tableCell"),t.next(e.content),t.closeNode()}}}));ie(Ms.node,{displayName:"NodeSchema<tableHeader>",group:"Table"});ie(Ms.ctx,{displayName:"NodeSchemaCtx<tableHeader>",group:"Table"});function J2(t,e=3,n=3){let a=Array(n).fill(0).map(()=>ol.type(t).createAndFill()),r=Array(n).fill(0).map(()=>Ms.type(t).createAndFill()),i=Array(e).fill(0).map((s,o)=>o===0?sl.type(t).create(null,r):Ns.type(t).create(null,a));return Ma.type(t).create(null,i)}function Y2(t){return(e,n)=>a=>{n=n??a.selection.from;let r=a.doc.resolve(n),i=sx(l=>l.type.name==="table")(r),s=i?{node:i.node,from:i.start}:void 0,o=t==="row";if(s){let l=Ce.get(s.node);if(e>=0&&e<(o?l.height:l.width)){let c=l.positionAt(o?e:l.height-1,o?l.width-1:e,s.node),u=a.doc.resolve(s.from+c),p=o?Re.rowSelection:Re.colSelection,d=l.positionAt(o?e:0,o?0:e,s.node),m=a.doc.resolve(s.from+d);return Em(a.setSelection(p(u,m)))}}return a}}var yT=Y2("row"),xT=Y2("col");function Q2(t,e,{map:n,tableStart:a,table:r},i){let s=Array(i).fill(0).reduce((l,c,u)=>l+r.child(u).nodeSize,a),o=Array(n.width).fill(0).map((l,c)=>{let u=r.nodeAt(n.map[c]);return ol.type(t).createAndFill({alignment:u?.attrs.alignment})});return e.insert(s,Ns.type(t).create(null,o)),e}function kT(t){let e=Es(t.$from);if(!e)return;let n=Ce.get(e.node);return n.cellsInRect({left:0,right:n.width,top:0,bottom:n.height}).map(a=>{let r=e.node.nodeAt(a),i=a+e.start;return{pos:i,start:i+1,node:r}})}function wT(t){let e=kT(t.selection);if(e&&e[0]){let n=t.doc.resolve(e[0].pos),a=e[e.length-1];if(a){let r=t.doc.resolve(a.pos);return Em(t.setSelection(new Re(r,n)))}}return t}var O0=re("GoToPrevTableCell",()=>()=>r0(-1));ie(O0,{displayName:"Command<goToPrevTableCellCommand>",group:"Table"});var B0=re("GoToNextTableCell",()=>()=>r0(1));ie(B0,{displayName:"Command<goToNextTableCellCommand>",group:"Table"});var L0=re("ExitTable",t=>()=>(e,n)=>{if(!cn(e))return!1;let{$head:a}=e.selection,r=rx(a,Ma.type(t));if(!r)return!1;let{to:i}=r,s=e.tr.replaceWith(i,i,Ln.type(t).createAndFill());return s.setSelection(ae.near(s.doc.resolve(i),1)).scrollIntoView(),n?.(s),!0});ie(L0,{displayName:"Command<breakTableCommand>",group:"Table"});var rp=re("InsertTable",t=>({row:e,col:n}={})=>(a,r)=>{let{selection:i,tr:s}=a,{from:o}=i,l=J2(t,e,n),c=s.replaceSelectionWith(l),u=ae.findFrom(c.doc.resolve(o),1,!0);return u&&c.setSelection(u),r?.(c),!0});ie(rp,{displayName:"Command<insertTableCommand>",group:"Table"});var e4=re("MoveRow",()=>({from:t,to:e,pos:n}={})=>_2({from:t??0,to:e??0,pos:n}));ie(e4,{displayName:"Command<moveRowCommand>",group:"Table"});var t4=re("MoveCol",()=>({from:t,to:e,pos:n}={})=>v2({from:t??0,to:e??0,pos:n}));ie(t4,{displayName:"Command<moveColCommand>",group:"Table"});var n4=re("SelectRow",()=>(t={index:0})=>(e,n)=>{let{tr:a}=e;return!!n?.(yT(t.index,t.pos)(a))});ie(n4,{displayName:"Command<selectRowCommand>",group:"Table"});var a4=re("SelectCol",()=>(t={index:0})=>(e,n)=>{let{tr:a}=e;return!!n?.(xT(t.index,t.pos)(a))});ie(a4,{displayName:"Command<selectColCommand>",group:"Table"});var r4=re("SelectTable",()=>()=>(t,e)=>{let{tr:n}=t;return!!e?.(wT(n))});ie(r4,{displayName:"Command<selectTableCommand>",group:"Table"});var i4=re("DeleteSelectedCells",()=>()=>(t,e)=>{let{selection:n}=t;if(!(n instanceof Re))return!1;let a=n.isRowSelection(),r=n.isColSelection();return a&&r?w2(t,e):r?y2(t,e):x2(t,e)});ie(i4,{displayName:"Command<deleteSelectedCellsCommand>",group:"Table"});var s4=re("AddColBefore",()=>()=>g2);ie(s4,{displayName:"Command<addColBeforeCommand>",group:"Table"});var o4=re("AddColAfter",()=>()=>b2);ie(o4,{displayName:"Command<addColAfterCommand>",group:"Table"});var l4=re("AddRowBefore",t=>()=>(e,n)=>{if(!cn(e))return!1;if(n){let a=Aa(e);n(Q2(t,e.tr,a,a.top))}return!0});ie(l4,{displayName:"Command<addRowBeforeCommand>",group:"Table"});var c4=re("AddRowAfter",t=>()=>(e,n)=>{if(!cn(e))return!1;if(n){let a=Aa(e);n(Q2(t,e.tr,a,a.bottom))}return!0});ie(c4,{displayName:"Command<addRowAfterCommand>",group:"Table"});var u4=re("SetAlign",()=>(t="left")=>k2("alignment",t));ie(u4,{displayName:"Command<setAlignCommand>",group:"Table"});var p4=Tt(t=>new ct(/^\|(?<col>\d+)[xX](?<row>\d+)\|\s$/,(e,n,a,r)=>{let i=e.doc.resolve(a);if(!i.node(-1).canReplaceWith(i.index(-1),i.indexAfter(-1),Ma.type(t)))return null;let s=J2(t,Math.max(Number(n.groups?.row??0),2),Number(n.groups?.col)),o=e.tr.replaceRangeWith(a,r,s);return o.setSelection(ue.create(o.doc,a+3)).scrollIntoView()}));ie(p4,{displayName:"InputRule<insertTableInputRule>",group:"Table"});var d4=k_(t=>({run:(e,n,a)=>{if(a)return e;function r(c){let u=c.childCount,p=c.lastChild?.childCount??0;if(u===0||p===0)return Ln.type(t).create();let d=c.firstChild;if(!(p>0&&d&&d.childCount===0))return c;if(u>=3){let y=c.child(1),k=[];for(let M=0;M<y.childCount;M++){let N=y.child(M);k.push(Ms.type(t).create(N.attrs,N.content,N.marks))}let _=d.type.create(d.attrs,k),$=[];for(let M=2;M<u;M++)$.push(c.child(M));return c.type.create(c.attrs,[_,...$])}let m=Array(p).fill(0).map(()=>Ms.type(t).createAndFill()),h=new V(B.from(m),0,0),b=d.replace(0,0,h);return c.replace(0,d.nodeSize,new V(B.from(b),0,0))}function i(c){let u=Ns.type(t),p=[],d=[],m=!1;function h(){if(d.length===0)return;let b=sl.type(t).createAndFill(),y=Ma.type(t).create(null,[b,...d]);p.push(r(y)),d=[]}return c.forEach(b=>{b.type===u?(m=!0,d.push(b)):(h(),p.push(b))}),h(),m?B.from(p):c}function s(c){let u=i(c),p=u!==c,d=[];return u.forEach(m=>{if(m.type===Ma.type(t)){let h=r(m);h!==m&&(p=!0),d.push(h)}else if(m.childCount>0){let h=s(m.content);h!==m.content?(p=!0,d.push(m.copy(h))):d.push(m)}else d.push(m)}),p?B.from(d):c}function o(c){let u=[],p=[];c.forEach(d=>p.push(d));for(let d=0;d<p.length;d++){let m=p[d],h=p[d+1];m.type===Ln.type(t)&&m.content.size===0&&h&&h.type===Ma.type(t)||u.push(m)}return u.length<p.length?B.from(u):c}let l=s(e.content);return l=o(l),new V(B.from(l),e.openStart,e.openEnd)}}));ie(d4,{displayName:"PasteRule<table>",group:"Table"});var D0=xt("tableKeymap",{NextCell:{priority:100,shortcuts:["Mod-]","Tab"],command:t=>{let e=t.get(xe);return()=>e.call(B0.key)}},PrevCell:{shortcuts:["Mod-[","Shift-Tab"],command:t=>{let e=t.get(xe);return()=>e.call(O0.key)}},ExitTable:{shortcuts:["Mod-Enter","Enter"],command:t=>{let e=t.get(xe);return()=>e.call(L0.key)}}});ie(D0.ctx,{displayName:"KeymapCtx<table>",group:"Table"});ie(D0.shortcuts,{displayName:"Keymap<table>",group:"Table"});var N0="footnote_definition",X2="footnoteDefinition",F0=ze("footnote_definition",()=>({group:"block",content:"block+",defining:!0,attrs:{label:{default:"",validate:"string"}},parseDOM:[{tag:`dl[data-type="${N0}"]`,getAttrs:t=>{if(!(t instanceof HTMLElement))throw Qt(t);return{label:t.dataset.label}},contentElement:"dd"}],toDOM:t=>{let e=t.attrs.label;return["dl",{"data-label":e,"data-type":N0},["dt",e],["dd",0]]},parseMarkdown:{match:({type:t})=>t===X2,runner:(t,e,n)=>{t.openNode(n,{label:e.label}).next(e.children).closeNode()}},toMarkdown:{match:t=>t.type.name===N0,runner:(t,e)=>{t.openNode(X2,void 0,{label:e.attrs.label,identifier:e.attrs.label}).next(e.content).closeNode()}}}));ie(F0.ctx,{displayName:"NodeSchemaCtx<footnodeDef>",group:"footnote"});ie(F0.node,{displayName:"NodeSchema<footnodeDef>",group:"footnote"});var I0="footnote_reference",q0=ze("footnote_reference",()=>({group:"inline",inline:!0,atom:!0,attrs:{label:{default:"",validate:"string"}},parseDOM:[{tag:`sup[data-type="${I0}"]`,getAttrs:t=>{if(!(t instanceof HTMLElement))throw Qt(t);return{label:t.dataset.label}}}],toDOM:t=>{let e=t.attrs.label;return["sup",{"data-label":e,"data-type":I0},e]},parseMarkdown:{match:({type:t})=>t==="footnoteReference",runner:(t,e,n)=>{t.addNode(n,{label:e.label})}},toMarkdown:{match:t=>t.type.name===I0,runner:(t,e)=>{t.addNode("footnoteReference",void 0,void 0,{label:e.attrs.label,identifier:e.attrs.label})}}}));ie(q0.ctx,{displayName:"NodeSchemaCtx<footnodeRef>",group:"footnote"});ie(q0.node,{displayName:"NodeSchema<footnodeRef>",group:"footnote"});var P0=ea.extendSchema(t=>e=>{let n=t(e);return{...n,attrs:{...n.attrs,checked:{default:null,validate:"boolean|null"}},parseDOM:[{tag:'li[data-item-type="task"]',getAttrs:a=>{if(!(a instanceof HTMLElement))throw Qt(a);return{label:a.dataset.label,listType:a.dataset.listType,spread:a.dataset.spread,checked:a.dataset.checked?a.dataset.checked==="true":null}}},...n?.parseDOM||[]],toDOM:a=>n.toDOM&&a.attrs.checked==null?n.toDOM(a):["li",{"data-item-type":"task","data-label":a.attrs.label,"data-list-type":a.attrs.listType,"data-spread":a.attrs.spread,"data-checked":a.attrs.checked},0],parseMarkdown:{match:({type:a})=>a==="listItem",runner:(a,r,i)=>{if(r.checked==null){n.parseMarkdown.runner(a,r,i);return}let s=r.label!=null?`${r.label}.`:"\u2022",o=r.checked!=null?!!r.checked:null,l=r.label!=null?"ordered":"bullet",c=r.spread!=null?`${r.spread}`:"true";a.openNode(i,{label:s,listType:l,spread:c,checked:o}),a.next(r.children),a.closeNode()}},toMarkdown:{match:a=>a.type.name==="list_item",runner:(a,r)=>{if(r.attrs.checked==null){n.toMarkdown.runner(a,r);return}let i=r.attrs.label,s=r.attrs.listType,o=r.attrs.spread==="true",l=r.attrs.checked;a.openNode("listItem",void 0,{label:i,listType:s,spread:o,checked:l}),a.next(r.content),a.closeNode()}}}});ie(P0.node,{displayName:"NodeSchema<taskListItem>",group:"ListItem"});ie(P0.ctx,{displayName:"NodeSchemaCtx<taskListItem>",group:"ListItem"});var m4=Tt(()=>new ct(/^\[(?<checked>\s|x)\]\s$/,(t,e,n,a)=>{let r=t.doc.resolve(n),i=0,s=r.node(i);for(;s&&s.type.name!=="list_item";)i--,s=r.node(i);if(!s||s.attrs.checked!=null)return null;let o=e.groups?.checked==="x",l=r.before(i),c=t.tr;return c.deleteRange(n,a).setNodeMarkup(l,void 0,{...s.attrs,checked:o}),c}));ie(m4,{displayName:"InputRule<wrapInTaskListInputRule>",group:"ListItem"});var _T=[z0,D0].flat(),vT=[p4,m4],$T=[Z2],CT=[d4],h4=yt(()=>A2);ie(h4,{displayName:"Prose<autoInsertSpanPlugin>",group:"Prose"});var jT=yt(()=>C2({}));ie(jT,{displayName:"Prose<columnResizingPlugin>",group:"Prose"});var f4=yt(()=>S2({allowTableNodeSelection:!0}));ie(f4,{displayName:"Prose<tableEditingPlugin>",group:"Prose"});var G0=vn("remarkGFM",()=>ap);ie(G0.plugin,{displayName:"Remark<remarkGFMPlugin>",group:"Remark"});ie(G0.options,{displayName:"RemarkConfig<remarkGFMPlugin>",group:"Remark"});var ST=new Se("MILKDOWN_KEEP_TABLE_ALIGN_PLUGIN");function ET(t,e){let n=0;return e.forEach((a,r,i)=>{a===t&&(n=i)}),n}var g4=yt(()=>new je({key:ST,appendTransaction:(t,e,n)=>{let a,r=(i,s)=>{if(a||(a=n.tr),i.type.name!=="table_cell")return;let o=n.doc.resolve(s),l=o.node(o.depth),c=o.node(o.depth-1).firstChild;if(!c)return;let u=ET(i,l),p=c.maybeChild(u);if(!p)return;let d=p.attrs.alignment;d!==i.attrs.alignment&&a.setNodeMarkup(s,void 0,{...i.attrs,alignment:d})};return e.doc!==n.doc&&n.doc.descendants(r),a}}));ie(g4,{displayName:"Prose<keepTableAlignPlugin>",group:"Prose"});var AT=[g4,h4,G0,f4].flat(),TT=[P0,Ma,sl,Ns,Ms,ol,F0,q0,R0,al].flat(),MT=[B0,O0,L0,rp,e4,t4,n4,a4,r4,i4,l4,c4,s4,o4,u4,rl],b4=[TT,vT,CT,$T,_T,MT,AT].flat();var NT=typeof global=="object"&&global&&global.Object===Object&&global,y4=NT;var IT=typeof self=="object"&&self&&self.Object===Object&&self,RT=y4||IT||Function("return this")(),ip=RT;var zT=ip.Symbol,Is=zT;var x4=Object.prototype,OT=x4.hasOwnProperty,BT=x4.toString,ll=Is?Is.toStringTag:void 0;function LT(t){var e=OT.call(t,ll),n=t[ll];try{t[ll]=void 0;var a=!0}catch{}var r=BT.call(t);return a&&(e?t[ll]=n:delete t[ll]),r}var k4=LT;var DT=Object.prototype,FT=DT.toString;function qT(t){return FT.call(t)}var w4=qT;var PT="[object Null]",GT="[object Undefined]",_4=Is?Is.toStringTag:void 0;function HT(t){return t==null?t===void 0?GT:PT:_4&&_4 in Object(t)?k4(t):w4(t)}var v4=HT;function VT(t){return t!=null&&typeof t=="object"}var $4=VT;var WT="[object Symbol]";function UT(t){return typeof t=="symbol"||$4(t)&&v4(t)==WT}var C4=UT;var KT=/\s/;function XT(t){for(var e=t.length;e--&&KT.test(t.charAt(e)););return e}var j4=XT;var ZT=/^\s+/;function JT(t){return t&&t.slice(0,j4(t)+1).replace(ZT,"")}var S4=JT;function YT(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var cl=YT;var E4=NaN,QT=/^[-+]0x[0-9a-f]+$/i,eM=/^0b[01]+$/i,tM=/^0o[0-7]+$/i,nM=parseInt;function aM(t){if(typeof t=="number")return t;if(C4(t))return E4;if(cl(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=cl(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=S4(t);var n=eM.test(t);return n||tM.test(t)?nM(t.slice(2),n?2:8):QT.test(t)?E4:+t}var H0=aM;var rM=function(){return ip.Date.now()},sp=rM;var iM="Expected a function",sM=Math.max,oM=Math.min;function lM(t,e,n){var a,r,i,s,o,l,c=0,u=!1,p=!1,d=!0;if(typeof t!="function")throw new TypeError(iM);e=H0(e)||0,cl(n)&&(u=!!n.leading,p="maxWait"in n,i=p?sM(H0(n.maxWait)||0,e):i,d="trailing"in n?!!n.trailing:d);function m(E){var I=a,F=r;return a=r=void 0,c=E,s=t.apply(F,I),s}function h(E){return c=E,o=setTimeout(k,e),u?m(E):s}function b(E){var I=E-l,F=E-c,L=e-I;return p?oM(L,i-F):L}function y(E){var I=E-l,F=E-c;return l===void 0||I>=e||I<0||p&&F>=i}function k(){var E=sp();if(y(E))return _(E);o=setTimeout(k,b(E))}function _(E){return o=void 0,d&&a?m(E):(a=r=void 0,s)}function $(){o!==void 0&&clearTimeout(o),c=0,a=l=r=o=void 0}function M(){return o===void 0?s:_(sp())}function N(){var E=sp(),I=y(E);if(a=arguments,r=this,l=E,I){if(o===void 0)return h(l);if(p)return clearTimeout(o),o=setTimeout(k,e),m(l)}return o===void 0&&(o=setTimeout(k,e)),s}return N.cancel=$,N.flush=M,N}var V0=lM;var A4=class{constructor(){this.beforeMountedListeners=[],this.mountedListeners=[],this.updatedListeners=[],this.selectionUpdatedListeners=[],this.markdownUpdatedListeners=[],this.blurListeners=[],this.focusListeners=[],this.destroyListeners=[],this.beforeMount=t=>(this.beforeMountedListeners.push(t),this),this.mounted=t=>(this.mountedListeners.push(t),this),this.updated=t=>(this.updatedListeners.push(t),this)}get listeners(){return{beforeMount:this.beforeMountedListeners,mounted:this.mountedListeners,updated:this.updatedListeners,markdownUpdated:this.markdownUpdatedListeners,blur:this.blurListeners,focus:this.focusListeners,destroy:this.destroyListeners,selectionUpdated:this.selectionUpdatedListeners}}markdownUpdated(t){return this.markdownUpdatedListeners.push(t),this}blur(t){return this.blurListeners.push(t),this}focus(t){return this.focusListeners.push(t),this}destroy(t){return this.destroyListeners.push(t),this}selectionUpdated(t){return this.selectionUpdatedListeners.push(t),this}},op=ge(new A4,"listener"),cM=new Se("MILKDOWN_LISTENER"),W0=t=>(t.inject(op,new A4),async()=>{await t.wait(ya);let{listeners:e}=t.get(op);e.beforeMount.forEach(c=>c(t)),await t.wait(ss);let n=t.get(ka),a=null,r=null,i=null,s=null,o=V0(()=>{if(!s)return;let{doc:c}=s;if(e.updated.length>0&&a&&!a.eq(c)&&e.updated.forEach(u=>{u(t,c,a)}),e.markdownUpdated.length>0&&a&&!a.eq(c)){let u=n(c);e.markdownUpdated.forEach(p=>{p(t,u,r)}),r=u}a=c,s=null},200),l=new je({key:cM,view:()=>({destroy:()=>{e.destroy.forEach(c=>c(t))}}),props:{handleDOMEvents:{focus:()=>(e.focus.forEach(c=>c(t)),!1),blur:()=>(e.blur.forEach(c=>c(t)),!1)}},state:{init:(c,u)=>{a=u.doc,r=n(u.doc)},apply:c=>{let u=c.selection;(!i&&u||i&&!u.eq(i))&&(e.selectionUpdated.forEach(p=>{p(t,u,i)}),i=u),!(!(c.docChanged||c.storedMarksSet)||c.getMeta("addToHistory")===!1)&&(s=c,o())}}});t.update(On,c=>c.concat(l)),await t.wait(No),e.mounted.forEach(c=>c(t))});W0.meta={package:"@milkdown/plugin-listener",displayName:"Listener"};function U0(t){if(!t)return!1;if(Array.isArray(t))return t.length>1?!1:U0(t[0]);let e=t.content;return e?U0(e):t.type==="text"}function uM(t,e){return Object.assign(t,{meta:{package:"@milkdown/plugin-clipboard",...e}}),t}function T4(t,e){let n=ax(e);if(n)return t.dispatch(t.state.tr.replaceSelectionWith(n,!0)),!0;try{return t.dispatch(t.state.tr.replaceSelection(e)),!0}catch{return!1}}var K0=yt(t=>{let e=t.get(Vt);return t.update(Io,n=>({...n,editable:n.editable??(()=>!0),transformPastedHTML:(a,r)=>{let i=n.transformPastedHTML;return i&&(a=i(a,r)),a.includes("docs-internal-guid")&&(a=a.replace(/<b[^>]*id="docs-internal-guid[^"]*"[^>]*>([\s\S]*)<\/b>/,"$1"),a=a.replace(/<div[^>]*>(<table[\s\S]*?<\/table>)<\/div>/g,"$1")),a}})),new je({key:new Se("MILKDOWN_CLIPBOARD"),props:{handlePaste:(n,a,r)=>{let i=t.get(xa),s=n.props.editable?.(n.state),{clipboardData:o}=a;if(!s||!o||n.state.selection.$from.node().type.spec.code)return!1;let l=o.getData("text/plain"),c=o.getData("vscode-editor-data");if(c){let m=JSON.parse(c)?.mode;if(l&&m){let{tr:h}=n.state,b=ix("code_block",e);return h.replaceSelectionWith(b.create({language:m})).setSelection(ue.near(h.doc.resolve(Math.max(0,h.selection.from-2)))).insertText(l.replace(/\r\n?/g,` -`)),n.dispatch(h),!0}}let u=o.getData("text/html");if(u.length===0&&l.length===0)return!1;if(u.length>0&&r)return T4(n,r);let p=Rn.fromSchema(e),d;if(u.length===0){let m=i(l);if(!m||typeof m=="string")return!1;d=zn.fromSchema(e).serializeFragment(m.content)}else{let m=document.createElement("template");m.innerHTML=u,d=m.content.cloneNode(!0),m.remove()}return T4(n,p.parseSlice(d))},clipboardTextSerializer:n=>{let a=t.get(ka);if(U0(n.content.toJSON()))return n.content.textBetween(0,n.content.size,` +`):e.addNode("break")}}}));z(fi.node,{displayName:"NodeSchema<hardbreak>",group:"Hardbreak"});z(fi.ctx,{displayName:"NodeSchemaCtx<hardbreak>",group:"Hardbreak"});var qf=re("InsertHardbreak",t=>()=>(e,n)=>{let{selection:a,tr:r}=e;if(!(a instanceof ue))return!1;if(a.empty){let i=a.$from.node();if(i.childCount>0&&i.lastChild?.type.name==="hardbreak")return n?.(r.replaceRangeWith(a.to-1,a.to,e.schema.node("paragraph")).setSelection(ae.near(r.doc.resolve(a.to))).scrollIntoView()),!0}return n?.(r.setMeta("hardbreak",!0).replaceSelectionWith(fi.type(t).create()).scrollIntoView()),!0});z(qf,{displayName:"Command<insertHardbreakCommand>",group:"Hardbreak"});var Gf=kt("hardbreakKeymap",{InsertHardbreak:{shortcuts:"Shift-Enter",command:t=>{let e=t.get(we);return()=>e.call(qf.key)}}});z(Gf.ctx,{displayName:"KeymapCtx<hardbreak>",group:"Hardbreak"});z(Gf.shortcuts,{displayName:"Keymap<hardbreak>",group:"Hardbreak"});var Hf=Cn("hr");z(Hf,{displayName:"Attr<hr>",group:"Hr"});var ul=Oe("hr",t=>({group:"block",parseDOM:[{tag:"hr"}],toDOM:e=>["hr",t.get(Hf.key)(e)],parseMarkdown:{match:({type:e})=>e==="thematicBreak",runner:(e,n,a)=>{e.addNode(a)}},toMarkdown:{match:e=>e.type.name==="hr",runner:e=>{e.addNode("thematicBreak")}}}));z(ul.node,{displayName:"NodeSchema<hr>",group:"Hr"});z(ul.ctx,{displayName:"NodeSchemaCtx<hr>",group:"Hr"});var s2=It(t=>new mt(/^(?:---|___\s|\*\*\*\s)$/,(e,n,a,r)=>{let{tr:i}=e;return n[0]&&i.replaceWith(a-1,r,ul.type(t).create()),i}));z(s2,{displayName:"InputRule<insertHrInputRule>",group:"Hr"});var np=re("InsertHr",t=>()=>(e,n)=>{if(!n)return!0;let a=Dn.node.type(t).create(),{tr:r,selection:i}=e,{from:s}=i,o=ul.type(t).create();if(!o)return!0;let l=r.replaceSelectionWith(o).insert(s,a),c=ae.findFrom(l.doc.resolve(s),1,!0);return c&&n(l.setSelection(c).scrollIntoView()),!0});z(np,{displayName:"Command<insertHrCommand>",group:"Hr"});var Vf=Cn("bulletList");z(Vf,{displayName:"Attr<bulletList>",group:"BulletList"});var Ns=Oe("bullet_list",t=>({content:"listItem+",group:"block",attrs:{spread:{default:!1,validate:"boolean"}},parseDOM:[{tag:"ul",getAttrs:e=>{if(!(e instanceof HTMLElement))throw an(e);return{spread:e.dataset.spread==="true"}}}],toDOM:e=>["ul",{...t.get(Vf.key)(e),"data-spread":e.attrs.spread},0],parseMarkdown:{match:({type:e,ordered:n})=>e==="list"&&!n,runner:(e,n,a)=>{let r=n.spread!=null?`${n.spread}`:"false";e.openNode(a,{spread:r}).next(n.children).closeNode()}},toMarkdown:{match:e=>e.type.name==="bullet_list",runner:(e,n)=>{e.openNode("list",void 0,{ordered:!1,spread:n.attrs.spread}).next(n.content).closeNode()}}}));z(Ns.node,{displayName:"NodeSchema<bulletList>",group:"BulletList"});z(Ns.ctx,{displayName:"NodeSchemaCtx<bulletList>",group:"BulletList"});var o2=It(t=>Vc(/^\s*([-+*])\s$/,Ns.type(t)));z(o2,{displayName:"InputRule<wrapInBulletListInputRule>",group:"BulletList"});var pl=re("WrapInBulletList",t=>()=>Hc(Ns.type(t)));z(pl,{displayName:"Command<wrapInBulletListCommand>",group:"BulletList"});var Wf=kt("bulletListKeymap",{WrapInBulletList:{shortcuts:"Mod-Alt-8",command:t=>{let e=t.get(we);return()=>e.call(pl.key)}}});z(Wf.ctx,{displayName:"KeymapCtx<bulletListKeymap>",group:"BulletList"});z(Wf.shortcuts,{displayName:"Keymap<bulletListKeymap>",group:"BulletList"});var Uf=Cn("orderedList");z(Uf,{displayName:"Attr<orderedList>",group:"OrderedList"});var Is=Oe("ordered_list",t=>({content:"listItem+",group:"block",attrs:{order:{default:1,validate:"number"},spread:{default:!1,validate:"boolean"}},parseDOM:[{tag:"ol",getAttrs:e=>{if(!(e instanceof HTMLElement))throw an(e);return{spread:e.dataset.spread,order:e.hasAttribute("start")?Number(e.getAttribute("start")):1}}}],toDOM:e=>["ol",{...t.get(Uf.key)(e),...e.attrs.order===1?{}:{start:e.attrs.order},"data-spread":e.attrs.spread},0],parseMarkdown:{match:({type:e,ordered:n})=>e==="list"&&!!n,runner:(e,n,a)=>{let r=n.spread!=null?`${n.spread}`:"true";e.openNode(a,{spread:r,order:n.start??1}).next(n.children).closeNode()}},toMarkdown:{match:e=>e.type.name==="ordered_list",runner:(e,n)=>{e.openNode("list",void 0,{ordered:!0,start:n.attrs.order??1,spread:n.attrs.spread==="true"}),e.next(n.content),e.closeNode()}}}));z(Is.node,{displayName:"NodeSchema<orderedList>",group:"OrderedList"});z(Is.ctx,{displayName:"NodeSchemaCtx<orderedList>",group:"OrderedList"});var l2=It(t=>Vc(/^\s*(\d+)\.\s$/,Is.type(t),e=>({order:Number(e[1])}),(e,n)=>n.childCount+n.attrs.order===Number(e[1])));z(l2,{displayName:"InputRule<wrapInOrderedListInputRule>",group:"OrderedList"});var dl=re("WrapInOrderedList",t=>()=>Hc(Is.type(t)));z(dl,{displayName:"Command<wrapInOrderedListCommand>",group:"OrderedList"});var Kf=kt("orderedListKeymap",{WrapInOrderedList:{shortcuts:"Mod-Alt-7",command:t=>{let e=t.get(we);return()=>e.call(dl.key)}}});z(Kf.ctx,{displayName:"KeymapCtx<orderedList>",group:"OrderedList"});z(Kf.shortcuts,{displayName:"Keymap<orderedList>",group:"OrderedList"});var Xf=Cn("listItem");z(Xf,{displayName:"Attr<listItem>",group:"ListItem"});var aa=Oe("list_item",t=>({group:"listItem",content:"paragraph block*",attrs:{label:{default:"\u2022",validate:"string"},listType:{default:"bullet",validate:"string"},spread:{default:!0,validate:"boolean"}},defining:!0,parseDOM:[{tag:"li",getAttrs:e=>{if(!(e instanceof HTMLElement))throw an(e);return{label:e.dataset.label,listType:e.dataset.listType,spread:e.dataset.spread==="true"}}}],toDOM:e=>["li",{...t.get(Xf.key)(e),"data-label":e.attrs.label,"data-list-type":e.attrs.listType,"data-spread":e.attrs.spread},0],parseMarkdown:{match:({type:e})=>e==="listItem",runner:(e,n,a)=>{let r=n.label!=null?`${n.label}.`:"\u2022",i=n.label!=null?"ordered":"bullet",s=n.spread!=null?`${n.spread}`:"true";e.openNode(a,{label:r,listType:i,spread:s}),e.next(n.children),e.closeNode()}},toMarkdown:{match:e=>e.type.name==="list_item",runner:(e,n)=>{e.openNode("listItem",void 0,{spread:n.attrs.spread}),e.next(n.content),e.closeNode()}}}));z(aa.node,{displayName:"NodeSchema<listItem>",group:"ListItem"});z(aa.ctx,{displayName:"NodeSchemaCtx<listItem>",group:"ListItem"});var Zf=re("SinkListItem",t=>()=>W_(aa.type(t)));z(Zf,{displayName:"Command<sinkListItemCommand>",group:"ListItem"});var Jf=re("LiftListItem",t=>()=>V_(aa.type(t)));z(Jf,{displayName:"Command<liftListItemCommand>",group:"ListItem"});var Yf=re("SplitListItem",t=>()=>H_(aa.type(t)));z(Yf,{displayName:"Command<splitListItemCommand>",group:"ListItem"});function AE(t){return(e,n,a)=>{let{selection:r}=e;if(!(r instanceof ue))return!1;let{empty:i,$from:s}=r;return!i||s.parentOffset!==0||s.node(-1).type!==aa.type(t)?!1:Mm(e,n,a)}}var Qf=re("LiftFirstListItem",t=>()=>AE(t));z(Qf,{displayName:"Command<liftFirstListItemCommand>",group:"ListItem"});var e0=kt("listItemKeymap",{NextListItem:{shortcuts:"Enter",command:t=>{let e=t.get(we);return()=>e.call(Yf.key)}},SinkListItem:{shortcuts:["Tab","Mod-]"],command:t=>{let e=t.get(we);return()=>e.call(Zf.key)}},LiftListItem:{shortcuts:["Shift-Tab","Mod-["],command:t=>{let e=t.get(we);return()=>e.call(Jf.key)}},LiftFirstListItem:{shortcuts:["Backspace","Delete"],command:t=>{let e=t.get(we);return()=>e.call(Qf.key)}}});z(e0.ctx,{displayName:"KeymapCtx<listItem>",group:"ListItem"});z(e0.shortcuts,{displayName:"Keymap<listItem>",group:"ListItem"});var c2=Zu("text",()=>({group:"inline",parseMarkdown:{match:({type:t})=>t==="text",runner:(t,e)=>{t.addText(e.value)}},toMarkdown:{match:t=>t.type.name==="text",runner:(t,e)=>{t.addNode("text",void 0,e.text)}}}));z(c2,{displayName:"NodeSchema<text>",group:"Text"});var t0=Cn("html");z(t0,{displayName:"Attr<html>",group:"Html"});var n0=Oe("html",t=>({atom:!0,group:"inline",inline:!0,attrs:{value:{default:"",validate:"string"}},toDOM:e=>{let n=document.createElement("span"),a={...t.get(t0.key)(e),"data-value":e.attrs.value,"data-type":"html"};return n.textContent=e.attrs.value,["span",a,e.attrs.value]},parseDOM:[{tag:'span[data-type="html"]',getAttrs:e=>({value:e.dataset.value??""})}],parseMarkdown:{match:({type:e})=>e==="html",runner:(e,n,a)=>{e.addNode(a,{value:n.value})}},toMarkdown:{match:e=>e.type.name==="html",runner:(e,n)=>{e.addNode("html",void 0,n.attrs.value)}}}));z(n0.node,{displayName:"NodeSchema<html>",group:"Html"});z(n0.ctx,{displayName:"NodeSchemaCtx<html>",group:"Html"});var TE=[e2,Mf,Dn,tp,Rf,gi,Yu,fi,Bf,sl,Df,ll,Hf,ul,Pf,Ms,Vf,Ns,Uf,Is,Xf,aa,$f,Ts,jf,al,Ef,gr,Tf,As,t0,n0,c2].flat(),ME=[n2,o2,l2,a2,s2,t2].flat(),NE=[X_,Z_,Y_,J_],IE=re("IsMarkSelected",()=>t=>e=>{if(!t)return!1;let{doc:n,selection:a}=e;return n.rangeHasMark(a.from,a.to,t)}),RE=re("IsNoteSelected",()=>t=>e=>t?Ax(e,t).hasNode:!1),zE=re("ClearTextInCurrentBlock",()=>()=>(t,e)=>{let n=t.tr,{$from:a,$to:r}=n.selection,{pos:i}=a,{pos:s}=r,o=i-a.node().content.size;return o<0?!1:(n=n.deleteRange(o,s),e?.(n),!0)}),OE=re("SetBlockType",()=>t=>(e,n)=>{let{nodeType:a,attrs:r=null}=t??{};if(!a)return!1;let i=e.tr,{from:s,to:o}=i.selection;try{i.setBlockType(s,o,a,r)}catch{return!1}return n?.(i),!0}),BE=re("WrapInBlockType",()=>t=>(e,n)=>{let{nodeType:a,attrs:r=null}=t??{};if(!a)return!1;let i=e.tr;try{let{$from:s,$to:o}=i.selection,l=s.blockRange(o),c=l&&Jr(l,a,r);if(!c)return!1;i=i.wrap(l,c)}catch{return!1}return n?.(i),!0}),LE=re("AddBlockType",()=>t=>(e,n)=>{let{nodeType:a,attrs:r=null}=t??{};if(!a)return!1;let i=e.tr;try{let s=a instanceof Kt?a:a.createAndFill(r);if(!s)return!1;i.replaceSelectionWith(s)}catch{return!1}return n?.(i),!0}),DE=re("SelectTextNearPos",()=>t=>(e,n)=>{let{pos:a}=t??{};if(a==null)return!1;let r=(s,o,l)=>Math.min(Math.max(s,o),l),i=e.tr;try{let s=e.doc.resolve(r(a,0,e.doc.content.size));i.setSelection(ue.near(s))}catch{return!1}return n?.(i.scrollIntoView()),!0}),FE=[Nf,ol,na,zf,cl,qf,np,r2,i2,dl,pl,Zf,Yf,Jf,Qf,nl,il,rl,Qu,Q_,IE,RE,zE,OE,BE,LE,DE],PE=[Lf,Ff,Gf,Of,e0,Kf,Wf,If,Cf,Af,Sf].flat(),a0=jn("remarkAddOrderInList",()=>()=>t=>{In(t,"list",e=>{if(e.ordered){let n=e.start??1;e.children.forEach((a,r)=>{a.label=r+n})}})});z(a0.plugin,{displayName:"Remark<remarkAddOrderInListPlugin>",group:"Remark"});z(a0.options,{displayName:"RemarkConfig<remarkAddOrderInListPlugin>",group:"Remark"});var r0=jn("remarkLineBreak",()=>()=>t=>{let e=/[\t ]*(?:\r?\n|\r)/g;In(t,"text",(n,a,r)=>{if(!n.value||typeof n.value!="string")return;let i=[],s=0;e.lastIndex=0;let o=e.exec(n.value);for(;o;){let l=o.index;s!==l&&i.push({type:"text",value:n.value.slice(s,l)}),i.push({type:"break",data:{isInline:!0}}),s=l+o[0].length,o=e.exec(n.value)}if(i.length>0&&r&&typeof a=="number")return s<n.value.length&&i.push({type:"text",value:n.value.slice(s)}),r.children.splice(a,1,...i),a+i.length})});z(r0.plugin,{displayName:"Remark<remarkLineBreak>",group:"Remark"});z(r0.options,{displayName:"RemarkConfig<remarkLineBreak>",group:"Remark"});var i0=jn("remarkInlineLink",()=>Ju);z(i0.plugin,{displayName:"Remark<remarkInlineLinkPlugin>",group:"Remark"});z(i0.options,{displayName:"RemarkConfig<remarkInlineLinkPlugin>",group:"Remark"});var qE=t=>!!t.children,GE=t=>t.type==="html";function HE(t,e){return n(t,0,null)[0];function n(a,r,i){if(qE(a)){let s=[];for(let o=0,l=a.children.length;o<l;o++){let c=a.children[o];if(c){let u=n(c,o,a);if(u)for(let p=0,d=u.length;p<d;p++){let m=u[p];m&&s.push(m)}}}a.children=s}return e(a,r,i)}}var VE=["root","blockquote","listItem"],s0=jn("remarkHTMLTransformer",()=>()=>t=>{HE(t,(e,n,a)=>GE(e)?(a&&VE.includes(a.type)&&(e.children=[{...e}],delete e.value,e.type="paragraph"),[e]):[e])});z(s0.plugin,{displayName:"Remark<remarkHtmlTransformer>",group:"Remark"});z(s0.options,{displayName:"RemarkConfig<remarkHtmlTransformer>",group:"Remark"});var o0=jn("remarkMarker",()=>()=>(t,e)=>{let n=a=>e.value.charAt(a.position.start.offset);In(t,a=>["strong","emphasis"].includes(a.type),a=>{a.marker=n(a)})});z(o0.plugin,{displayName:"Remark<remarkMarker>",group:"Remark"});z(o0.options,{displayName:"RemarkConfig<remarkMarker>",group:"Remark"});var u2=ot(()=>{let t=!1,e=new ve({key:new $e("MILKDOWN_INLINE_NODES_CURSOR"),state:{init(){return!1},apply(n){if(!n.selection.empty)return!1;let a=n.selection.$from,r=a.nodeBefore,i=a.nodeAfter;return!!(r&&i&&r.isInline&&!r.isText&&i.isInline&&!i.isText)}},props:{handleDOMEvents:{compositionend:(n,a)=>t?(t=!1,requestAnimationFrame(()=>{if(e.getState(n.state)){let r=n.state.selection.from;a.preventDefault(),n.dispatch(n.state.tr.insertText(a.data||"",r))}}),!0):!1,compositionstart:n=>(e.getState(n.state)&&(t=!0),!1),beforeinput:(n,a)=>{if(e.getState(n.state)&&a instanceof InputEvent&&a.data&&!t){let r=n.state.selection.from;return a.preventDefault(),n.dispatch(n.state.tr.insertText(a.data||"",r)),!0}return!1}},decorations(n){if(e.getState(n)){let a=n.selection.$from.pos,r=document.createElement("span"),i=rt.widget(a,r,{side:-1}),s=document.createElement("span"),o=rt.widget(a,s);return setTimeout(()=>{r.contentEditable="true",s.contentEditable="true"}),De.create(n.doc,[i,o])}return De.empty}}});return e});z(u2,{displayName:"Prose<inlineNodesCursorPlugin>",group:"Prose"});var p2=ot(t=>new ve({key:new $e("MILKDOWN_HARDBREAK_MARKS"),appendTransaction:(e,n,a)=>{if(!e.length)return;let[r]=e;if(!r)return;let[i]=r.steps;if(r.getMeta("hardbreak")){if(!(i instanceof bt))return;let{from:s}=i;return a.tr.setNodeMarkup(s,fi.type(t),void 0,[])}if(i instanceof Xr){let s=a.tr,{from:o,to:l}=i;return a.doc.nodesBetween(o,l,(c,u)=>{c.type===fi.type(t)&&(s=s.setNodeMarkup(u,fi.type(t),void 0,[]))}),s}}}));z(p2,{displayName:"Prose<hardbreakClearMarkPlugin>",group:"Prose"});var l0=Vt(["table","code_block"],"hardbreakFilterNodes");z(l0,{displayName:"Ctx<hardbreakFilterNodes>",group:"Prose"});var d2=ot(t=>{let e=t.get(l0.key);return new ve({key:new $e("MILKDOWN_HARDBREAK_FILTER"),filterTransaction:(n,a)=>{let r=n.getMeta("hardbreak"),[i]=n.steps;if(r&&i){let{from:s}=i,o=a.doc.resolve(s),l=o.depth,c=!0;for(;l>0;)e.includes(o.node(l).type.name)&&(c=!1),l--;return c}return!0}})});z(d2,{displayName:"Prose<hardbreakFilterPlugin>",group:"Prose"});var m2=ot(t=>{let e=new $e("MILKDOWN_HEADING_ID"),n=a=>{if(a.composing)return;let r=t.get(tp.key),i=a.state.tr.setMeta("addToHistory",!1),s=!1,o={};a.state.doc.descendants((l,c)=>{if(l.type===gi.type(t)){if(l.textContent.trim().length===0)return;let u=l.attrs,p=r(l);o[p]?(o[p]+=1,p+=`-#${o[p]}`):o[p]=1,u.id!==p&&(s=!0,i.setMeta(e,!0).setNodeMarkup(c,void 0,{...u,id:p}))}}),s&&a.dispatch(i)};return new ve({key:e,view:a=>(n(a),{update:(r,i)=>{r.state.doc.eq(i.doc)||n(r)}})})});z(m2,{displayName:"Prose<syncHeadingIdPlugin>",group:"Prose"});var h2=ot(t=>{let e=(n,a,r)=>{if(!r.selection||n.some(p=>p.getMeta("addToHistory")===!1||!p.isGeneric))return null;let i=Is.type(t),s=Ns.type(t),o=aa.type(t),l=(p,d,m=1)=>{let h=!1,b=`${d+m}.`;return p.label!==b&&(p.label=b,h=!0),h},c=r.tr,u=!1;return r.doc.descendants((p,d,m,h)=>{if(p.type===s){let b=p.maybeChild(0);b?.type===o&&b.attrs.listType==="ordered"&&(u=!0,c.setNodeMarkup(d,i,{spread:"true"}),p.descendants((y,w,_,$)=>{if(y.type===o){let M={...y.attrs};l(M,$)&&(c=c.setNodeMarkup(w,void 0,M))}return!1}))}else if(p.type===o&&m?.type===i){let b={...p.attrs},y=!1;b.listType!=="ordered"&&(b.listType="ordered",y=!0),m?.maybeChild(0)&&(y=l(b,h,m?.attrs.order??1)),y&&(c=c.setNodeMarkup(d,void 0,b),u=!0)}}),u?c.setMeta("addToHistory",!1):null};return new ve({key:new $e("MILKDOWN_KEEP_LIST_ORDER"),appendTransaction:e})});z(h2,{displayName:"Prose<syncListOrderPlugin>",group:"Prose"});var WE=[p2,l0,d2,u2,a0,i0,r0,s0,o0,ep,m2,h2].flat(),f2=[TE,ME,NE,FE,PE,WE].flat();var u0,p0;if(typeof WeakMap<"u"){let t=new WeakMap;u0=e=>t.get(e),p0=(e,n)=>(t.set(e,n),n)}else{let t=[],n=0;u0=a=>{for(let r=0;r<t.length;r+=2)if(t[r]==a)return t[r+1]},p0=(a,r)=>(n==10&&(n=0),t[n++]=a,t[n++]=r)}var Se=class{constructor(t,e,n,a){this.width=t,this.height=e,this.map=n,this.problems=a}findCell(t){for(let e=0;e<this.map.length;e++){let n=this.map[e];if(n!=t)continue;let a=e%this.width,r=e/this.width|0,i=a+1,s=r+1;for(let o=1;i<this.width&&this.map[e+o]==n;o++)i++;for(let o=1;s<this.height&&this.map[e+this.width*o]==n;o++)s++;return{left:a,top:r,right:i,bottom:s}}throw new RangeError(`No cell with offset ${t} found`)}colCount(t){for(let e=0;e<this.map.length;e++)if(this.map[e]==t)return e%this.width;throw new RangeError(`No cell with offset ${t} found`)}nextCell(t,e,n){let{left:a,right:r,top:i,bottom:s}=this.findCell(t);return e=="horiz"?(n<0?a==0:r==this.width)?null:this.map[i*this.width+(n<0?a-1:r)]:(n<0?i==0:s==this.height)?null:this.map[a+this.width*(n<0?i-1:s)]}rectBetween(t,e){let{left:n,right:a,top:r,bottom:i}=this.findCell(t),{left:s,right:o,top:l,bottom:c}=this.findCell(e);return{left:Math.min(n,s),top:Math.min(r,l),right:Math.max(a,o),bottom:Math.max(i,c)}}cellsInRect(t){let e=[],n={};for(let a=t.top;a<t.bottom;a++)for(let r=t.left;r<t.right;r++){let i=a*this.width+r,s=this.map[i];n[s]||(n[s]=!0,!(r==t.left&&r&&this.map[i-1]==s||a==t.top&&a&&this.map[i-this.width]==s)&&e.push(s))}return e}positionAt(t,e,n){for(let a=0,r=0;;a++){let i=r+n.child(a).nodeSize;if(a==t){let s=e+t*this.width,o=(t+1)*this.width;for(;s<o&&this.map[s]<r;)s++;return s==o?i-1:this.map[s]}r=i}}static get(t){return u0(t)||p0(t,UE(t))}};function UE(t){if(t.type.spec.tableRole!="table")throw new RangeError("Not a table node: "+t.type.name);let e=KE(t),n=t.childCount,a=[],r=0,i=null,s=[];for(let c=0,u=e*n;c<u;c++)a[c]=0;for(let c=0,u=0;c<n;c++){let p=t.child(c);u++;for(let h=0;;h++){for(;r<a.length&&a[r]!=0;)r++;if(h==p.childCount)break;let b=p.child(h),{colspan:y,rowspan:w,colwidth:_}=b.attrs;for(let $=0;$<w;$++){if($+c>=n){(i||(i=[])).push({type:"overlong_rowspan",pos:u,n:w-$});break}let M=r+$*e;for(let N=0;N<y;N++){a[M+N]==0?a[M+N]=u:(i||(i=[])).push({type:"collision",row:c,pos:u,n:y-N});let E=_&&_[N];if(E){let I=(M+N)%e*2,F=s[I];F==null||F!=E&&s[I+1]==1?(s[I]=E,s[I+1]=1):F==E&&s[I+1]++}}}r+=y,u+=b.nodeSize}let d=(c+1)*e,m=0;for(;r<d;)a[r++]==0&&m++;m&&(i||(i=[])).push({type:"missing",row:c,n:m}),u++}(e===0||n===0)&&(i||(i=[])).push({type:"zero_sized"});let o=new Se(e,n,a,i),l=!1;for(let c=0;!l&&c<s.length;c+=2)s[c]!=null&&s[c+1]<n&&(l=!0);return l&&XE(o,s,t),o}function KE(t){let e=-1,n=!1;for(let a=0;a<t.childCount;a++){let r=t.child(a),i=0;if(n)for(let s=0;s<a;s++){let o=t.child(s);for(let l=0;l<o.childCount;l++){let c=o.child(l);s+c.attrs.rowspan>a&&(i+=c.attrs.colspan)}}for(let s=0;s<r.childCount;s++){let o=r.child(s);i+=o.attrs.colspan,o.attrs.rowspan>1&&(n=!0)}e==-1?e=i:e!=i&&(e=Math.max(e,i))}return e}function XE(t,e,n){t.problems||(t.problems=[]);let a={};for(let r=0;r<t.map.length;r++){let i=t.map[r];if(a[i])continue;a[i]=!0;let s=n.nodeAt(i);if(!s)throw new RangeError(`No cell with offset ${i} found`);let o=null,l=s.attrs;for(let c=0;c<l.colspan;c++){let u=e[(r+c)%t.width*2];u!=null&&(!l.colwidth||l.colwidth[c]!=u)&&((o||(o=ZE(l)))[c]=u)}o&&t.problems.unshift({type:"colwidth mismatch",pos:i,colwidth:o})}}function ZE(t){if(t.colwidth)return t.colwidth.slice();let e=[];for(let n=0;n<t.colspan;n++)e.push(0);return e}function g2(t,e){if(typeof t=="string")return{};let n=t.getAttribute("data-colwidth"),a=n&&/^\d+(,\d+)*$/.test(n)?n.split(",").map(s=>Number(s)):null,r=Number(t.getAttribute("colspan")||1),i={colspan:r,rowspan:Number(t.getAttribute("rowspan")||1),colwidth:a&&a.length==r?a:null};for(let s in e){let o=e[s].getFromDOM,l=o&&o(t);l!=null&&(i[s]=l)}return i}function b2(t,e){let n={};t.attrs.colspan!=1&&(n.colspan=t.attrs.colspan),t.attrs.rowspan!=1&&(n.rowspan=t.attrs.rowspan),t.attrs.colwidth&&(n["data-colwidth"]=t.attrs.colwidth.join(","));for(let a in e){let r=e[a].setDOMAttr;r&&r(t.attrs[a],n)}return n}function JE(t){if(t!==null){if(!Array.isArray(t))throw new TypeError("colwidth must be null or an array");for(let e of t)if(typeof e!="number")throw new TypeError("colwidth must be null or an array of numbers")}}function A2(t){let e=t.cellAttributes||{},n={colspan:{default:1,validate:"number"},rowspan:{default:1,validate:"number"},colwidth:{default:null,validate:JE}};for(let a in e)n[a]={default:e[a].default,validate:e[a].validate};return{table:{content:"table_row+",tableRole:"table",isolating:!0,group:t.tableGroup,parseDOM:[{tag:"table"}],toDOM(){return["table",["tbody",0]]}},table_row:{content:"(table_cell | table_header)*",tableRole:"row",parseDOM:[{tag:"tr"}],toDOM(){return["tr",0]}},table_cell:{content:t.cellContent,attrs:n,tableRole:"cell",isolating:!0,parseDOM:[{tag:"td",getAttrs:a=>g2(a,e)}],toDOM(a){return["td",b2(a,e),0]}},table_header:{content:t.cellContent,attrs:n,tableRole:"header_cell",isolating:!0,parseDOM:[{tag:"th",getAttrs:a=>g2(a,e)}],toDOM(a){return["th",b2(a,e),0]}}}}function Sn(t){let e=t.cached.tableNodeTypes;if(!e){e=t.cached.tableNodeTypes={};for(let n in t.nodes){let a=t.nodes[n],r=a.spec.tableRole;r&&(e[r]=a)}}return e}var br=new $e("selectingCells");function Os(t){for(let e=t.depth-1;e>0;e--)if(t.node(e).type.spec.tableRole=="row")return t.node(0).resolve(t.before(e+1));return null}function dn(t){let e=t.selection.$head;for(let n=e.depth;n>0;n--)if(e.node(n).type.spec.tableRole=="row")return!0;return!1}function lp(t){let e=t.selection;if("$anchorCell"in e&&e.$anchorCell)return e.$anchorCell.pos>e.$headCell.pos?e.$anchorCell:e.$headCell;if("node"in e&&e.node&&e.node.type.spec.tableRole=="cell")return e.$anchor;let n=Os(e.$head)||YE(e.$head);if(n)return n;throw new RangeError(`No cell found around position ${e.head}`)}function YE(t){for(let e=t.nodeAfter,n=t.pos;e;e=e.firstChild,n++){let a=e.type.spec.tableRole;if(a=="cell"||a=="header_cell")return t.doc.resolve(n)}for(let e=t.nodeBefore,n=t.pos;e;e=e.lastChild,n--){let a=e.type.spec.tableRole;if(a=="cell"||a=="header_cell")return t.doc.resolve(n-e.nodeSize)}}function d0(t){return t.parent.type.spec.tableRole=="row"&&!!t.nodeAfter}function QE(t){return t.node(0).resolve(t.pos+t.nodeAfter.nodeSize)}function f0(t,e){return t.depth==e.depth&&t.pos>=e.start(-1)&&t.pos<=e.end(-1)}function T2(t,e,n){let a=t.node(-1),r=Se.get(a),i=t.start(-1),s=r.nextCell(t.pos-i,e,n);return s==null?null:t.node(0).resolve(i+s)}function bi(t,e,n=1){let a={...t,colspan:t.colspan-n};return a.colwidth&&(a.colwidth=a.colwidth.slice(),a.colwidth.splice(e,n),a.colwidth.some(r=>r>0)||(a.colwidth=null)),a}function eA(t,e,n=1){let a={...t,colspan:t.colspan+n};if(a.colwidth){a.colwidth=a.colwidth.slice();for(let r=0;r<n;r++)a.colwidth.splice(e,0,0)}return a}function tA(t,e,n){let a=Sn(e.type.schema).header_cell;for(let r=0;r<t.height;r++)if(e.nodeAt(t.map[n+r*t.width]).type!=a)return!1;return!0}var Re=class Na extends ae{constructor(e,n=e){let a=e.node(-1),r=Se.get(a),i=e.start(-1),s=r.rectBetween(e.pos-i,n.pos-i),o=e.node(0),l=r.cellsInRect(s).filter(u=>u!=n.pos-i);l.unshift(n.pos-i);let c=l.map(u=>{let p=a.nodeAt(u);if(!p)throw new RangeError(`No cell with offset ${u} found`);let d=i+u+1;return new Ya(o.resolve(d),o.resolve(d+p.content.size))});super(c[0].$from,c[0].$to,c),this.$anchorCell=e,this.$headCell=n}map(e,n){let a=e.resolve(n.map(this.$anchorCell.pos)),r=e.resolve(n.map(this.$headCell.pos));if(d0(a)&&d0(r)&&f0(a,r)){let i=this.$anchorCell.node(-1)!=a.node(-1);return i&&this.isRowSelection()?Na.rowSelection(a,r):i&&this.isColSelection()?Na.colSelection(a,r):new Na(a,r)}return ue.between(a,r)}content(){let e=this.$anchorCell.node(-1),n=Se.get(e),a=this.$anchorCell.start(-1),r=n.rectBetween(this.$anchorCell.pos-a,this.$headCell.pos-a),i={},s=[];for(let l=r.top;l<r.bottom;l++){let c=[];for(let u=l*n.width+r.left,p=r.left;p<r.right;p++,u++){let d=n.map[u];if(i[d])continue;i[d]=!0;let m=n.findCell(d),h=e.nodeAt(d);if(!h)throw new RangeError(`No cell with offset ${d} found`);let b=r.left-m.left,y=m.right-r.right;if(b>0||y>0){let w=h.attrs;if(b>0&&(w=bi(w,0,b)),y>0&&(w=bi(w,w.colspan-y,y)),m.left<r.left){if(h=h.type.createAndFill(w),!h)throw new RangeError(`Could not create cell with attrs ${JSON.stringify(w)}`)}else h=h.type.create(w,h.content)}if(m.top<r.top||m.bottom>r.bottom){let w={...h.attrs,rowspan:Math.min(m.bottom,r.bottom)-Math.max(m.top,r.top)};m.top<r.top?h=h.type.createAndFill(w):h=h.type.create(w,h.content)}c.push(h)}s.push(e.child(l).copy(B.from(c)))}let o=this.isColSelection()&&this.isRowSelection()?e:s;return new V(B.from(o),1,1)}replace(e,n=V.empty){let a=e.steps.length,r=this.ranges;for(let s=0;s<r.length;s++){let{$from:o,$to:l}=r[s],c=e.mapping.slice(a);e.replace(c.map(o.pos),c.map(l.pos),s?V.empty:n)}let i=ae.findFrom(e.doc.resolve(e.mapping.slice(a).map(this.to)),-1);i&&e.setSelection(i)}replaceWith(e,n){this.replace(e,new V(B.from(n),0,0))}forEachCell(e){let n=this.$anchorCell.node(-1),a=Se.get(n),r=this.$anchorCell.start(-1),i=a.cellsInRect(a.rectBetween(this.$anchorCell.pos-r,this.$headCell.pos-r));for(let s=0;s<i.length;s++)e(n.nodeAt(i[s]),r+i[s])}isColSelection(){let e=this.$anchorCell.index(-1),n=this.$headCell.index(-1);if(Math.min(e,n)>0)return!1;let a=e+this.$anchorCell.nodeAfter.attrs.rowspan,r=n+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(a,r)==this.$headCell.node(-1).childCount}static colSelection(e,n=e){let a=e.node(-1),r=Se.get(a),i=e.start(-1),s=r.findCell(e.pos-i),o=r.findCell(n.pos-i),l=e.node(0);return s.top<=o.top?(s.top>0&&(e=l.resolve(i+r.map[s.left])),o.bottom<r.height&&(n=l.resolve(i+r.map[r.width*(r.height-1)+o.right-1]))):(o.top>0&&(n=l.resolve(i+r.map[o.left])),s.bottom<r.height&&(e=l.resolve(i+r.map[r.width*(r.height-1)+s.right-1]))),new Na(e,n)}isRowSelection(){let e=this.$anchorCell.node(-1),n=Se.get(e),a=this.$anchorCell.start(-1),r=n.colCount(this.$anchorCell.pos-a),i=n.colCount(this.$headCell.pos-a);if(Math.min(r,i)>0)return!1;let s=r+this.$anchorCell.nodeAfter.attrs.colspan,o=i+this.$headCell.nodeAfter.attrs.colspan;return Math.max(s,o)==n.width}eq(e){return e instanceof Na&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos}static rowSelection(e,n=e){let a=e.node(-1),r=Se.get(a),i=e.start(-1),s=r.findCell(e.pos-i),o=r.findCell(n.pos-i),l=e.node(0);return s.left<=o.left?(s.left>0&&(e=l.resolve(i+r.map[s.top*r.width])),o.right<r.width&&(n=l.resolve(i+r.map[r.width*(o.top+1)-1]))):(o.left>0&&(n=l.resolve(i+r.map[o.top*r.width])),s.right<r.width&&(e=l.resolve(i+r.map[r.width*(s.top+1)-1]))),new Na(e,n)}toJSON(){return{type:"cell",anchor:this.$anchorCell.pos,head:this.$headCell.pos}}static fromJSON(e,n){return new Na(e.resolve(n.anchor),e.resolve(n.head))}static create(e,n,a=n){return new Na(e.resolve(n),e.resolve(a))}getBookmark(){return new nA(this.$anchorCell.pos,this.$headCell.pos)}};Re.prototype.visible=!1;ae.jsonID("cell",Re);var nA=class M2{constructor(e,n){this.anchor=e,this.head=n}map(e){return new M2(e.map(this.anchor),e.map(this.head))}resolve(e){let n=e.resolve(this.anchor),a=e.resolve(this.head);return n.parent.type.spec.tableRole=="row"&&a.parent.type.spec.tableRole=="row"&&n.index()<n.parent.childCount&&a.index()<a.parent.childCount&&f0(n,a)?new Re(n,a):ae.near(a,1)}};function aA(t){if(!(t.selection instanceof Re))return null;let e=[];return t.selection.forEachCell((n,a)=>{e.push(rt.node(a,a+n.nodeSize,{class:"selectedCell"}))}),De.create(t.doc,e)}function rA({$from:t,$to:e}){if(t.pos==e.pos||t.pos<e.pos-6)return!1;let n=t.pos,a=e.pos,r=t.depth;for(;r>=0&&!(t.after(r+1)<t.end(r));r--,n++);for(let i=e.depth;i>=0&&!(e.before(i+1)>e.start(i));i--,a--);return n==a&&/row|table/.test(t.node(r).type.spec.tableRole)}function iA({$from:t,$to:e}){let n,a;for(let r=t.depth;r>0;r--){let i=t.node(r);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){n=i;break}}for(let r=e.depth;r>0;r--){let i=e.node(r);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){a=i;break}}return n!==a&&e.parentOffset===0}function sA(t,e,n){let a=(e||t).selection,r=(e||t).doc,i,s;if(a instanceof le&&(s=a.node.type.spec.tableRole)){if(s=="cell"||s=="header_cell")i=Re.create(r,a.from);else if(s=="row"){let o=r.resolve(a.from+1);i=Re.rowSelection(o,o)}else if(!n){let o=Se.get(a.node),l=a.from+1,c=l+o.map[o.width*o.height-1];i=Re.create(r,l+1,c)}}else a instanceof ue&&rA(a)?i=ue.create(r,a.from):a instanceof ue&&iA(a)&&(i=ue.create(r,a.$from.start(),a.$from.end()));return i&&(e||(e=t.tr)).setSelection(i),e}var oA=new $e("fix-tables");function N2(t,e,n,a){let r=t.childCount,i=e.childCount;e:for(let s=0,o=0;s<i;s++){let l=e.child(s);for(let c=o,u=Math.min(r,s+3);c<u;c++)if(t.child(c)==l){o=c+1,n+=l.nodeSize;continue e}a(l,n),o<r&&t.child(o).sameMarkup(l)?N2(t.child(o),l,n+1,a):l.nodesBetween(0,l.content.size,a,n+1),n+=l.nodeSize}}function lA(t,e){let n,a=(r,i)=>{r.type.spec.tableRole=="table"&&(n=cA(t,r,i,n))};return e?e.doc!=t.doc&&N2(e.doc,t.doc,0,a):t.doc.descendants(a),n}function cA(t,e,n,a){let r=Se.get(e);if(!r.problems)return a;a||(a=t.tr);let i=[];for(let l=0;l<r.height;l++)i.push(0);for(let l=0;l<r.problems.length;l++){let c=r.problems[l];if(c.type=="collision"){let u=e.nodeAt(c.pos);if(!u)continue;let p=u.attrs;for(let d=0;d<p.rowspan;d++)i[c.row+d]+=c.n;a.setNodeMarkup(a.mapping.map(n+1+c.pos),null,bi(p,p.colspan-c.n,c.n))}else if(c.type=="missing")i[c.row]+=c.n;else if(c.type=="overlong_rowspan"){let u=e.nodeAt(c.pos);if(!u)continue;a.setNodeMarkup(a.mapping.map(n+1+c.pos),null,{...u.attrs,rowspan:u.attrs.rowspan-c.n})}else if(c.type=="colwidth mismatch"){let u=e.nodeAt(c.pos);if(!u)continue;a.setNodeMarkup(a.mapping.map(n+1+c.pos),null,{...u.attrs,colwidth:c.colwidth})}else if(c.type=="zero_sized"){let u=a.mapping.map(n);a.delete(u,u+e.nodeSize)}}let s,o;for(let l=0;l<i.length;l++)i[l]&&(s==null&&(s=l),o=l);for(let l=0,c=n+1;l<r.height;l++){let u=e.child(l),p=c+u.nodeSize,d=i[l];if(d>0){let m="cell";u.firstChild&&(m=u.firstChild.type.spec.tableRole);let h=[];for(let y=0;y<d;y++){let w=Sn(t.schema)[m].createAndFill();w&&h.push(w)}let b=(l==0||s==l-1)&&o==l?c+1:p-1;a.insert(a.mapping.map(b),h)}c=p}return a.setMeta(oA,{fixTables:!0})}function I2(t){let e=Se.get(t),n=[],a=e.height,r=e.width;for(let i=0;i<a;i++){let s=[];for(let o=0;o<r;o++){let l=i*r+o,c=e.map[l];if(i>0){let u=l-r;if(c===e.map[u]){s.push(null);continue}}if(o>0){let u=l-1;if(c===e.map[u]){s.push(null);continue}}s.push(t.nodeAt(c))}n.push(s)}return n}function R2(t,e){let n=[],a=Se.get(t),r=a.height,i=a.width;for(let s=0;s<r;s++){let o=t.child(s),l=[];for(let u=0;u<i;u++){let p=e[s][u];if(!p)continue;let d=a.map[s*a.width+u],m=t.nodeAt(d);if(!m)continue;let h=m.type.createChecked(p.attrs,p.content,p.marks);l.push(h)}let c=o.type.createChecked(o.attrs,l,o.marks);n.push(c)}return t.type.createChecked(t.attrs,n,t.marks)}function z2(t,e,n,a){let r=e[0]>n[0]?-1:1,i=t.splice(e[0],e.length),s=i.length%2===0?1:0,o;return a===-1&&r===1?o=n[0]-1:a===1&&r===-1?o=n[n.length-1]-s+1:o=r===-1?n[0]:n[n.length-1]-s,t.splice(o,0,...i),t}function Bs(t){return uA(e=>e.type.spec.tableRole==="table",t)}function uA(t,e){for(let n=e.depth;n>=0;n-=1){let a=e.node(n);if(t(a))return{node:a,pos:n===0?0:e.before(n),start:e.start(n),depth:n}}return null}function Rs(t,e){let n=Bs(e.$from);if(!n)return;let a=Se.get(n.node);if(!(t<0||t>a.width-1))return a.cellsInRect({left:t,right:t+1,top:0,bottom:a.height}).map(r=>{let i=n.node.nodeAt(r),s=r+n.start;return{pos:s,start:s+1,node:i,depth:n.depth+2}})}function zs(t,e){let n=Bs(e.$from);if(!n)return;let a=Se.get(n.node);if(!(t<0||t>a.height-1))return a.cellsInRect({left:0,right:a.width,top:t,bottom:t+1}).map(r=>{let i=n.node.nodeAt(r),s=r+n.start;return{pos:s,start:s+1,node:i,depth:n.depth+2}})}function y2(t,e,n=e){let a=e,r=n;for(let u=e;u>=0;u--){let p=Rs(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.colspan+u-1;m>=a&&(a=u),m>r&&(r=m)})}for(let u=e;u<=r;u++){let p=Rs(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.colspan+u-1;d.node.attrs.colspan>1&&m>r&&(r=m)})}let i=[];for(let u=a;u<=r;u++){let p=Rs(u,t.selection);p&&p.length>0&&i.push(u)}a=i[0],r=i[i.length-1];let s=Rs(a,t.selection),o=zs(0,t.selection);if(!s||!o)return;let l=t.doc.resolve(s[s.length-1].pos),c;for(let u=r;u>=a;u--){let p=Rs(u,t.selection);if(p&&p.length>0){for(let d=o.length-1;d>=0;d--)if(o[d].pos===p[0].pos){c=p[0];break}if(c)break}}if(c)return{$anchor:l,$head:t.doc.resolve(c.pos),indexes:i}}function x2(t,e,n=e){let a=e,r=n;for(let u=e;u>=0;u--){let p=zs(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.rowspan+u-1;m>=a&&(a=u),m>r&&(r=m)})}for(let u=e;u<=r;u++){let p=zs(u,t.selection);p&&p.forEach(d=>{let m=d.node.attrs.rowspan+u-1;d.node.attrs.rowspan>1&&m>r&&(r=m)})}let i=[];for(let u=a;u<=r;u++){let p=zs(u,t.selection);p&&p.length>0&&i.push(u)}a=i[0],r=i[i.length-1];let s=zs(a,t.selection),o=Rs(0,t.selection);if(!s||!o)return;let l=t.doc.resolve(s[s.length-1].pos),c;for(let u=r;u>=a;u--){let p=zs(u,t.selection);if(p&&p.length>0){for(let d=o.length-1;d>=0;d--)if(o[d].pos===p[0].pos){c=p[0];break}if(c)break}}if(c)return{$anchor:l,$head:t.doc.resolve(c.pos),indexes:i}}function w2(t){return t[0].map((e,n)=>t.map(a=>a[n]))}function pA(t){var e,n;let{tr:a,originIndex:r,targetIndex:i,select:s,pos:o}=t,l=Bs(a.doc.resolve(o));if(!l)return!1;let c=(e=y2(a,r))===null||e===void 0?void 0:e.indexes,u=(n=y2(a,i))===null||n===void 0?void 0:n.indexes;if(!c||!u||c.includes(i))return!1;let p=dA(l.node,c,u,0);if(a.replaceWith(l.pos,l.pos+l.node.nodeSize,p),!s)return!0;let d=Se.get(p),m=l.start,h=i,b=d.positionAt(d.height-1,h,p),y=a.doc.resolve(m+b),w=d.positionAt(0,h,p),_=a.doc.resolve(m+w);return a.setSelection(Re.colSelection(y,_)),!0}function dA(t,e,n,a){let r=w2(I2(t));return r=z2(r,e,n,a),r=w2(r),R2(t,r)}function mA(t){var e,n;let{tr:a,originIndex:r,targetIndex:i,select:s,pos:o}=t,l=Bs(a.doc.resolve(o));if(!l)return!1;let c=(e=x2(a,r))===null||e===void 0?void 0:e.indexes,u=(n=x2(a,i))===null||n===void 0?void 0:n.indexes;if(!c||!u||c.includes(i))return!1;let p=hA(l.node,c,u,0);if(a.replaceWith(l.pos,l.pos+l.node.nodeSize,p),!s)return!0;let d=Se.get(p),m=l.start,h=i,b=d.positionAt(h,d.width-1,p),y=a.doc.resolve(m+b),w=d.positionAt(h,0,p),_=a.doc.resolve(m+w);return a.setSelection(Re.rowSelection(y,_)),!0}function hA(t,e,n,a){let r=I2(t);return r=z2(r,e,n,a),R2(t,r)}function Ia(t){let e=t.selection,n=lp(t),a=n.node(-1),r=n.start(-1),i=Se.get(a);return{...e instanceof Re?i.rectBetween(e.$anchorCell.pos-r,e.$headCell.pos-r):i.findCell(n.pos-r),tableStart:r,map:i,table:a}}function O2(t,{map:e,tableStart:n,table:a},r){let i=r>0?-1:0;tA(e,a,r+i)&&(i=r==0||r==e.width?null:0);for(let s=0;s<e.height;s++){let o=s*e.width+r;if(r>0&&r<e.width&&e.map[o-1]==e.map[o]){let l=e.map[o],c=a.nodeAt(l);t.setNodeMarkup(t.mapping.map(n+l),null,eA(c.attrs,r-e.colCount(l))),s+=c.attrs.rowspan-1}else{let l=i==null?Sn(a.type.schema).cell:a.nodeAt(e.map[o+i]).type,c=e.positionAt(s,r,a);t.insert(t.mapping.map(n+c),l.createAndFill())}}return t}function B2(t,e){if(!dn(t))return!1;if(e){let n=Ia(t);e(O2(t.tr,n,n.left))}return!0}function L2(t,e){if(!dn(t))return!1;if(e){let n=Ia(t);e(O2(t.tr,n,n.right))}return!0}function fA(t,{map:e,table:n,tableStart:a},r){let i=t.mapping.maps.length;for(let s=0;s<e.height;){let o=s*e.width+r,l=e.map[o],c=n.nodeAt(l),u=c.attrs;if(r>0&&e.map[o-1]==l||r<e.width-1&&e.map[o+1]==l)t.setNodeMarkup(t.mapping.slice(i).map(a+l),null,bi(u,r-e.colCount(l)));else{let p=t.mapping.slice(i).map(a+l);t.delete(p,p+c.nodeSize)}s+=u.rowspan}}function D2(t,e){if(!dn(t))return!1;if(e){let n=Ia(t),a=t.tr;if(n.left==0&&n.right==n.map.width)return!1;for(let r=n.right-1;fA(a,n,r),r!=n.left;r--){let i=n.tableStart?a.doc.nodeAt(n.tableStart-1):a.doc;if(!i)throw new RangeError("No table found");n.table=i,n.map=Se.get(i)}e(a)}return!0}function gA(t,{map:e,table:n,tableStart:a},r){let i=0;for(let c=0;c<r;c++)i+=n.child(c).nodeSize;let s=i+n.child(r).nodeSize,o=t.mapping.maps.length;t.delete(i+a,s+a);let l=new Set;for(let c=0,u=r*e.width;c<e.width;c++,u++){let p=e.map[u];if(!l.has(p)){if(l.add(p),r>0&&p==e.map[u-e.width]){let d=n.nodeAt(p).attrs;t.setNodeMarkup(t.mapping.slice(o).map(p+a),null,{...d,rowspan:d.rowspan-1}),c+=d.colspan-1}else if(r<e.height&&p==e.map[u+e.width]){let d=n.nodeAt(p),m=d.attrs,h=d.type.create({...m,rowspan:d.attrs.rowspan-1},d.content),b=e.positionAt(r+1,c,n);t.insert(t.mapping.slice(o).map(a+b),h),c+=m.colspan-1}}}}function F2(t,e){if(!dn(t))return!1;if(e){let n=Ia(t),a=t.tr;if(n.top==0&&n.bottom==n.map.height)return!1;for(let r=n.bottom-1;gA(a,n,r),r!=n.top;r--){let i=n.tableStart?a.doc.nodeAt(n.tableStart-1):a.doc;if(!i)throw new RangeError("No table found");n.table=i,n.map=Se.get(n.table)}e(a)}return!0}function P2(t,e){return function(n,a){if(!dn(n))return!1;let r=lp(n);if(r.nodeAfter.attrs[t]===e)return!1;if(a){let i=n.tr;n.selection instanceof Re?n.selection.forEachCell((s,o)=>{s.attrs[t]!==e&&i.setNodeMarkup(o,null,{...s.attrs,[t]:e})}):i.setNodeMarkup(r.pos,null,{...r.nodeAfter.attrs,[t]:e}),a(i)}return!0}}function bA(t){return function(e,n){if(!dn(e))return!1;if(n){let a=Sn(e.schema),r=Ia(e),i=e.tr,s=r.map.cellsInRect(t=="column"?{left:r.left,top:0,right:r.right,bottom:r.map.height}:t=="row"?{left:0,top:r.top,right:r.map.width,bottom:r.bottom}:r),o=s.map(l=>r.table.nodeAt(l));for(let l=0;l<s.length;l++)o[l].type==a.header_cell&&i.setNodeMarkup(r.tableStart+s[l],a.cell,o[l].attrs);if(i.steps.length===0)for(let l=0;l<s.length;l++)i.setNodeMarkup(r.tableStart+s[l],a.header_cell,o[l].attrs);n(i)}return!0}}function k2(t,e,n){let a=e.map.cellsInRect({left:0,top:0,right:t=="row"?e.map.width:1,bottom:t=="column"?e.map.height:1});for(let r=0;r<a.length;r++){let i=e.table.nodeAt(a[r]);if(i&&i.type!==n.header_cell)return!1}return!0}function g0(t,e){return e=e||{useDeprecatedLogic:!1},e.useDeprecatedLogic?bA(t):function(n,a){if(!dn(n))return!1;if(a){let r=Sn(n.schema),i=Ia(n),s=n.tr,o=k2("row",i,r),l=k2("column",i,r),c=(t==="column"?o:t==="row"&&l)?1:0,u=t=="column"?{left:0,top:c,right:1,bottom:i.map.height}:t=="row"?{left:c,top:0,right:i.map.width,bottom:1}:i,p=t=="column"?l?r.cell:r.header_cell:t=="row"?o?r.cell:r.header_cell:r.cell;i.map.cellsInRect(u).forEach(d=>{let m=d+i.tableStart,h=s.doc.nodeAt(m);h&&s.setNodeMarkup(m,p,h.attrs)}),a(s)}return!0}}var GW=g0("row",{useDeprecatedLogic:!0}),HW=g0("column",{useDeprecatedLogic:!0}),VW=g0("cell",{useDeprecatedLogic:!0});function yA(t,e){if(e<0){let n=t.nodeBefore;if(n)return t.pos-n.nodeSize;for(let a=t.index(-1)-1,r=t.before();a>=0;a--){let i=t.node(-1).child(a),s=i.lastChild;if(s)return r-1-s.nodeSize;r-=i.nodeSize}}else{if(t.index()<t.parent.childCount-1)return t.pos+t.nodeAfter.nodeSize;let n=t.node(-1);for(let a=t.indexAfter(-1),r=t.after();a<n.childCount;a++){let i=n.child(a);if(i.childCount)return r+1;r+=i.nodeSize}}return null}function b0(t){return function(e,n){if(!dn(e))return!1;let a=yA(lp(e),t);if(a==null)return!1;if(n){let r=e.doc.resolve(a);n(e.tr.setSelection(ue.between(r,QE(r))).scrollIntoView())}return!0}}function q2(t,e){let n=t.selection.$anchor;for(let a=n.depth;a>0;a--)if(n.node(a).type.spec.tableRole=="table")return e&&e(t.tr.delete(n.before(a),n.after(a)).scrollIntoView()),!0;return!1}function ap(t,e){let n=t.selection;if(!(n instanceof Re))return!1;if(e){let a=t.tr,r=Sn(t.schema).cell.createAndFill().content;n.forEachCell((i,s)=>{i.content.eq(r)||a.replace(a.mapping.map(s+1),a.mapping.map(s+i.nodeSize-1),new V(r,0,0))}),a.docChanged&&e(a)}return!0}function G2(t){return(e,n)=>{let{from:a,to:r,select:i=!0,pos:s=e.selection.from}=t,o=e.tr;return mA({tr:o,originIndex:a,targetIndex:r,select:i,pos:s})?(n?.(o),!0):!1}}function H2(t){return(e,n)=>{let{from:a,to:r,select:i=!0,pos:s=e.selection.from}=t,o=e.tr;return pA({tr:o,originIndex:a,targetIndex:r,select:i,pos:s})?(n?.(o),!0):!1}}function xA(t){if(t.size===0)return null;let{content:e,openStart:n,openEnd:a}=t;for(;e.childCount==1&&(n>0&&a>0||e.child(0).type.spec.tableRole=="table");)n--,a--,e=e.child(0).content;let r=e.child(0),i=r.type.spec.tableRole,s=r.type.schema,o=[];if(i=="row")for(let l=0;l<e.childCount;l++){let c=e.child(l).content,u=l?0:Math.max(0,n-1),p=l<e.childCount-1?0:Math.max(0,a-1);(u||p)&&(c=m0(Sn(s).row,new V(c,u,p)).content),o.push(c)}else if(i=="cell"||i=="header_cell")o.push(n||a?m0(Sn(s).row,new V(e,n,a)).content:e);else return null;return wA(s,o)}function wA(t,e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];for(let s=i.childCount-1;s>=0;s--){let{rowspan:o,colspan:l}=i.child(s).attrs;for(let c=r;c<r+o;c++)n[c]=(n[c]||0)+l}}let a=0;for(let r=0;r<n.length;r++)a=Math.max(a,n[r]);for(let r=0;r<n.length;r++)if(r>=e.length&&e.push(B.empty),n[r]<a){let i=Sn(t).cell.createAndFill(),s=[];for(let o=n[r];o<a;o++)s.push(i);e[r]=e[r].append(B.from(s))}return{height:e.length,width:a,rows:e}}function m0(t,e){let n=t.createAndFill();return new Zi(n).replace(0,n.content.size,e).doc}function kA({width:t,height:e,rows:n},a,r){if(t!=a){let i=[],s=[];for(let o=0;o<n.length;o++){let l=n[o],c=[];for(let u=i[o]||0,p=0;u<a;p++){let d=l.child(p%l.childCount);u+d.attrs.colspan>a&&(d=d.type.createChecked(bi(d.attrs,d.attrs.colspan,u+d.attrs.colspan-a),d.content)),c.push(d),u+=d.attrs.colspan;for(let m=1;m<d.attrs.rowspan;m++)i[o+m]=(i[o+m]||0)+d.attrs.colspan}s.push(B.from(c))}n=s,t=a}if(e!=r){let i=[];for(let s=0,o=0;s<r;s++,o++){let l=[],c=n[o%e];for(let u=0;u<c.childCount;u++){let p=c.child(u);s+p.attrs.rowspan>r&&(p=p.type.create({...p.attrs,rowspan:Math.max(1,r-p.attrs.rowspan)},p.content)),l.push(p)}i.push(B.from(l))}n=i,e=r}return{width:t,height:e,rows:n}}function _A(t,e,n,a,r,i,s){let o=t.doc.type.schema,l=Sn(o),c,u;if(r>e.width)for(let p=0,d=0;p<e.height;p++){let m=n.child(p);d+=m.nodeSize;let h=[],b;m.lastChild==null||m.lastChild.type==l.cell?b=c||(c=l.cell.createAndFill()):b=u||(u=l.header_cell.createAndFill());for(let y=e.width;y<r;y++)h.push(b);t.insert(t.mapping.slice(s).map(d-1+a),h)}if(i>e.height){let p=[];for(let h=0,b=(e.height-1)*e.width;h<Math.max(e.width,r);h++){let y=h>=e.width?!1:n.nodeAt(e.map[b+h]).type==l.header_cell;p.push(y?u||(u=l.header_cell.createAndFill()):c||(c=l.cell.createAndFill()))}let d=l.row.create(null,B.from(p)),m=[];for(let h=e.height;h<i;h++)m.push(d);t.insert(t.mapping.slice(s).map(a+n.nodeSize-2),m)}return!!(c||u)}function _2(t,e,n,a,r,i,s,o){if(s==0||s==e.height)return!1;let l=!1;for(let c=r;c<i;c++){let u=s*e.width+c,p=e.map[u];if(e.map[u-e.width]==p){l=!0;let d=n.nodeAt(p),{top:m,left:h}=e.findCell(p);t.setNodeMarkup(t.mapping.slice(o).map(p+a),null,{...d.attrs,rowspan:s-m}),t.insert(t.mapping.slice(o).map(e.positionAt(s,h,n)),d.type.createAndFill({...d.attrs,rowspan:m+d.attrs.rowspan-s})),c+=d.attrs.colspan-1}}return l}function v2(t,e,n,a,r,i,s,o){if(s==0||s==e.width)return!1;let l=!1;for(let c=r;c<i;c++){let u=c*e.width+s,p=e.map[u];if(e.map[u-1]==p){l=!0;let d=n.nodeAt(p),m=e.colCount(p),h=t.mapping.slice(o).map(p+a);t.setNodeMarkup(h,null,bi(d.attrs,s-m,d.attrs.colspan-(s-m))),t.insert(h+d.nodeSize,d.type.createAndFill(bi(d.attrs,0,s-m))),c+=d.attrs.rowspan-1}}return l}function $2(t,e,n,a,r){let i=n?t.doc.nodeAt(n-1):t.doc;if(!i)throw new Error("No table found");let s=Se.get(i),{top:o,left:l}=a,c=l+r.width,u=o+r.height,p=t.tr,d=0;function m(){if(i=n?p.doc.nodeAt(n-1):p.doc,!i)throw new Error("No table found");s=Se.get(i),d=p.mapping.maps.length}_A(p,s,i,n,c,u,d)&&m(),_2(p,s,i,n,l,c,o,d)&&m(),_2(p,s,i,n,l,c,u,d)&&m(),v2(p,s,i,n,o,u,l,d)&&m(),v2(p,s,i,n,o,u,c,d)&&m();for(let h=o;h<u;h++){let b=s.positionAt(h,l,i),y=s.positionAt(h,c,i);p.replace(p.mapping.slice(d).map(b+n),p.mapping.slice(d).map(y+n),new V(r.rows[h-o],0,0))}m(),p.setSelection(new Re(p.doc.resolve(n+s.positionAt(o,l,i)),p.doc.resolve(n+s.positionAt(u-1,c-1,i)))),e(p)}var vA=Gm({ArrowLeft:rp("horiz",-1),ArrowRight:rp("horiz",1),ArrowUp:rp("vert",-1),ArrowDown:rp("vert",1),"Shift-ArrowLeft":ip("horiz",-1),"Shift-ArrowRight":ip("horiz",1),"Shift-ArrowUp":ip("vert",-1),"Shift-ArrowDown":ip("vert",1),Backspace:ap,"Mod-Backspace":ap,Delete:ap,"Mod-Delete":ap});function sp(t,e,n){return n.eq(t.selection)?!1:(e&&e(t.tr.setSelection(n).scrollIntoView()),!0)}function rp(t,e){return(n,a,r)=>{if(!r)return!1;let i=n.selection;if(i instanceof Re)return sp(n,a,ae.near(i.$headCell,e));if(t!="horiz"&&!i.empty)return!1;let s=V2(r,t,e);if(s==null)return!1;if(t=="horiz")return sp(n,a,ae.near(n.doc.resolve(i.head+e),e));{let o=n.doc.resolve(s),l=T2(o,t,e),c;return l?c=ae.near(l,1):e<0?c=ae.near(n.doc.resolve(o.before(-1)),-1):c=ae.near(n.doc.resolve(o.after(-1)),1),sp(n,a,c)}}}function ip(t,e){return(n,a,r)=>{if(!r)return!1;let i=n.selection,s;if(i instanceof Re)s=i;else{let l=V2(r,t,e);if(l==null)return!1;s=new Re(n.doc.resolve(l))}let o=T2(s.$headCell,t,e);return o?sp(n,a,new Re(s.$anchorCell,o)):!1}}function $A(t,e){let n=t.state.doc,a=Os(n.resolve(e));return a?(t.dispatch(t.state.tr.setSelection(new Re(a))),!0):!1}function CA(t,e,n){if(!dn(t.state))return!1;let a=xA(n),r=t.state.selection;if(r instanceof Re){a||(a={width:1,height:1,rows:[B.from(m0(Sn(t.state.schema).cell,n))]});let i=r.$anchorCell.node(-1),s=r.$anchorCell.start(-1),o=Se.get(i).rectBetween(r.$anchorCell.pos-s,r.$headCell.pos-s);return a=kA(a,o.right-o.left,o.bottom-o.top),$2(t.state,t.dispatch,s,o,a),!0}else if(a){let i=lp(t.state),s=i.start(-1);return $2(t.state,t.dispatch,s,Se.get(i.node(-1)).findCell(i.pos-s),a),!0}else return!1}function jA(t,e){var n;if(e.button!=0||e.ctrlKey||e.metaKey)return;let a=C2(t,e.target),r;if(e.shiftKey&&t.state.selection instanceof Re)i(t.state.selection.$anchorCell,e),e.preventDefault();else if(e.shiftKey&&a&&(r=Os(t.state.selection.$anchor))!=null&&((n=c0(t,e))===null||n===void 0?void 0:n.pos)!=r.pos)i(r,e),e.preventDefault();else if(!a)return;function i(l,c){let u=c0(t,c),p=br.getState(t.state)==null;if(!u||!f0(l,u))if(p)u=l;else return;let d=new Re(l,u);if(p||!t.state.selection.eq(d)){let m=t.state.tr.setSelection(d);p&&m.setMeta(br,l.pos),t.dispatch(m)}}function s(){t.root.removeEventListener("mouseup",s),t.root.removeEventListener("dragstart",s),t.root.removeEventListener("mousemove",o),br.getState(t.state)!=null&&t.dispatch(t.state.tr.setMeta(br,-1))}function o(l){let c=l,u=br.getState(t.state),p;if(u!=null)p=t.state.doc.resolve(u);else if(C2(t,c.target)!=a&&(p=c0(t,e),!p))return s();p&&i(p,c)}t.root.addEventListener("mouseup",s),t.root.addEventListener("dragstart",s),t.root.addEventListener("mousemove",o)}function V2(t,e,n){if(!(t.state.selection instanceof ue))return null;let{$head:a}=t.state.selection;for(let r=a.depth-1;r>=0;r--){let i=a.node(r);if((n<0?a.index(r):a.indexAfter(r))!=(n<0?0:i.childCount))return null;if(i.type.spec.tableRole=="cell"||i.type.spec.tableRole=="header_cell"){let s=a.before(r),o=e=="vert"?n>0?"down":"up":n>0?"right":"left";return t.endOfTextblock(o)?s:null}}return null}function C2(t,e){for(;e&&e!=t.dom;e=e.parentNode)if(e.nodeName=="TD"||e.nodeName=="TH")return e;return null}function c0(t,e){let n=t.posAtCoords({left:e.clientX,top:e.clientY});if(!n)return null;let{inside:a,pos:r}=n;return a>=0&&Os(t.state.doc.resolve(a))||Os(t.state.doc.resolve(r))}var SA=class{constructor(t,e){this.node=t,this.defaultCellMinWidth=e,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.table.style.setProperty("--default-cell-min-width",`${e}px`),this.colgroup=this.table.appendChild(document.createElement("colgroup")),h0(t,this.colgroup,this.table,e),this.contentDOM=this.table.appendChild(document.createElement("tbody"))}update(t){return t.type!=this.node.type?!1:(this.node=t,h0(t,this.colgroup,this.table,this.defaultCellMinWidth),!0)}ignoreMutation(t){return t.type=="attributes"&&(t.target==this.table||this.colgroup.contains(t.target))}};function h0(t,e,n,a,r,i){let s=0,o=!0,l=e.firstChild,c=t.firstChild;if(c){for(let p=0,d=0;p<c.childCount;p++){let{colspan:m,colwidth:h}=c.child(p).attrs;for(let b=0;b<m;b++,d++){let y=r==d?i:h&&h[b],w=y?y+"px":"";if(s+=y||a,y||(o=!1),l)l.style.width!=w&&(l.style.width=w),l=l.nextSibling;else{let _=document.createElement("col");_.style.width=w,e.appendChild(_)}}}for(;l;){var u;let p=l.nextSibling;(u=l.parentNode)===null||u===void 0||u.removeChild(l),l=p}o?(n.style.width=s+"px",n.style.minWidth=""):(n.style.width="",n.style.minWidth=s+"px")}}var pn=new $e("tableColumnResizing");function W2({handleWidth:t=5,cellMinWidth:e=25,defaultCellMinWidth:n=100,View:a=SA,lastColumnResizable:r=!0}={}){let i=new ve({key:pn,state:{init(s,o){var l;let c=(l=i.spec)===null||l===void 0||(l=l.props)===null||l===void 0?void 0:l.nodeViews,u=Sn(o.schema).table.name;return a&&c&&(c[u]=(p,d)=>new a(p,n,d)),new EA(-1,!1)},apply(s,o){return o.apply(s)}},props:{attributes:s=>{let o=pn.getState(s);return o&&o.activeHandle>-1?{class:"resize-cursor"}:{}},handleDOMEvents:{mousemove:(s,o)=>{AA(s,o,t,r)},mouseleave:s=>{TA(s)},mousedown:(s,o)=>{MA(s,o,e,n)}},decorations:s=>{let o=pn.getState(s);if(o&&o.activeHandle>-1)return OA(s,o.activeHandle)},nodeViews:{}}});return i}var EA=class op{constructor(e,n){this.activeHandle=e,this.dragging=n}apply(e){let n=this,a=e.getMeta(pn);if(a&&a.setHandle!=null)return new op(a.setHandle,!1);if(a&&a.setDragging!==void 0)return new op(n.activeHandle,a.setDragging);if(n.activeHandle>-1&&e.docChanged){let r=e.mapping.map(n.activeHandle,-1);return d0(e.doc.resolve(r))||(r=-1),new op(r,n.dragging)}return n}};function AA(t,e,n,a){if(!t.editable)return;let r=pn.getState(t.state);if(r&&!r.dragging){let i=IA(e.target),s=-1;if(i){let{left:o,right:l}=i.getBoundingClientRect();e.clientX-o<=n?s=j2(t,e,"left",n):l-e.clientX<=n&&(s=j2(t,e,"right",n))}if(s!=r.activeHandle){if(!a&&s!==-1){let o=t.state.doc.resolve(s),l=o.node(-1),c=Se.get(l),u=o.start(-1);if(c.colCount(o.pos-u)+o.nodeAfter.attrs.colspan-1==c.width-1)return}U2(t,s)}}}function TA(t){if(!t.editable)return;let e=pn.getState(t.state);e&&e.activeHandle>-1&&!e.dragging&&U2(t,-1)}function MA(t,e,n,a){var r;if(!t.editable)return!1;let i=(r=t.dom.ownerDocument.defaultView)!==null&&r!==void 0?r:window,s=pn.getState(t.state);if(!s||s.activeHandle==-1||s.dragging)return!1;let o=t.state.doc.nodeAt(s.activeHandle),l=NA(t,s.activeHandle,o.attrs);t.dispatch(t.state.tr.setMeta(pn,{setDragging:{startX:e.clientX,startWidth:l}}));function c(p){i.removeEventListener("mouseup",c),i.removeEventListener("mousemove",u);let d=pn.getState(t.state);d?.dragging&&(RA(t,d.activeHandle,S2(d.dragging,p,n)),t.dispatch(t.state.tr.setMeta(pn,{setDragging:null})))}function u(p){if(!p.which)return c(p);let d=pn.getState(t.state);if(d&&d.dragging){let m=S2(d.dragging,p,n);E2(t,d.activeHandle,m,a)}}return E2(t,s.activeHandle,l,a),i.addEventListener("mouseup",c),i.addEventListener("mousemove",u),e.preventDefault(),!0}function NA(t,e,{colspan:n,colwidth:a}){let r=a&&a[a.length-1];if(r)return r;let i=t.domAtPos(e),s=i.node.childNodes[i.offset].offsetWidth,o=n;if(a)for(let l=0;l<n;l++)a[l]&&(s-=a[l],o--);return s/o}function IA(t){for(;t&&t.nodeName!="TD"&&t.nodeName!="TH";)t=t.classList&&t.classList.contains("ProseMirror")?null:t.parentNode;return t}function j2(t,e,n,a){let r=n=="right"?-a:a,i=t.posAtCoords({left:e.clientX+r,top:e.clientY});if(!i)return-1;let{pos:s}=i,o=Os(t.state.doc.resolve(s));if(!o)return-1;if(n=="right")return o.pos;let l=Se.get(o.node(-1)),c=o.start(-1),u=l.map.indexOf(o.pos-c);return u%l.width==0?-1:c+l.map[u-1]}function S2(t,e,n){let a=e.clientX-t.startX;return Math.max(n,t.startWidth+a)}function U2(t,e){t.dispatch(t.state.tr.setMeta(pn,{setHandle:e}))}function RA(t,e,n){let a=t.state.doc.resolve(e),r=a.node(-1),i=Se.get(r),s=a.start(-1),o=i.colCount(a.pos-s)+a.nodeAfter.attrs.colspan-1,l=t.state.tr;for(let c=0;c<i.height;c++){let u=c*i.width+o;if(c&&i.map[u]==i.map[u-i.width])continue;let p=i.map[u],d=r.nodeAt(p).attrs,m=d.colspan==1?0:o-i.colCount(p);if(d.colwidth&&d.colwidth[m]==n)continue;let h=d.colwidth?d.colwidth.slice():zA(d.colspan);h[m]=n,l.setNodeMarkup(s+p,null,{...d,colwidth:h})}l.docChanged&&t.dispatch(l)}function E2(t,e,n,a){let r=t.state.doc.resolve(e),i=r.node(-1),s=r.start(-1),o=Se.get(i).colCount(r.pos-s)+r.nodeAfter.attrs.colspan-1,l=t.domAtPos(r.start(-1)).node;for(;l&&l.nodeName!="TABLE";)l=l.parentNode;l&&h0(i,l.firstChild,l,a,o,n)}function zA(t){return Array(t).fill(0)}function OA(t,e){let n=[],a=t.doc.resolve(e),r=a.node(-1);if(!r)return De.empty;let i=Se.get(r),s=a.start(-1),o=i.colCount(a.pos-s)+a.nodeAfter.attrs.colspan-1;for(let c=0;c<i.height;c++){let u=o+c*i.width;if((o==i.width-1||i.map[u]!=i.map[u+1])&&(c==0||i.map[u]!=i.map[u-i.width])){var l;let p=i.map[u],d=s+p+r.nodeAt(p).nodeSize-1,m=document.createElement("div");m.className="column-resize-handle",!((l=pn.getState(t))===null||l===void 0)&&l.dragging&&n.push(rt.node(s+p,s+p+r.nodeAt(p).nodeSize,{class:"column-resize-dragging"})),n.push(rt.widget(d,m))}}return De.create(t.doc,n)}function K2({allowTableNodeSelection:t=!1}={}){return new ve({key:br,state:{init(){return null},apply(e,n){let a=e.getMeta(br);if(a!=null)return a==-1?null:a;if(n==null||!e.docChanged)return n;let{deleted:r,pos:i}=e.mapping.mapResult(n);return r?null:i}},props:{decorations:aA,handleDOMEvents:{mousedown:jA},createSelectionBetween(e){return br.getState(e.state)!=null?e.state.selection:null},handleTripleClick:$A,handleKeyDown:vA,handlePaste:CA},appendTransaction(e,n,a){return sA(a,lA(a,n),t)}})}var cp=typeof navigator<"u"?navigator:null,x0=cp&&cp.userAgent||"",BA=/Edge\/(\d+)/.exec(x0),LA=/MSIE \d/.exec(x0),DA=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(x0),FA=!!(LA||DA||BA),PA=!FA&&!!cp&&/Apple Computer/.test(cp.vendor),X2=new $e("safari-ime-span"),y0=!1,qA={key:X2,props:{decorations:GA,handleDOMEvents:{compositionstart:()=>{y0=!0},compositionend:()=>{y0=!1}}}};function GA(t){let{$from:e,$to:n,to:a}=t.selection;if(y0&&e.sameParent(n)){let r=rt.widget(a,HA,{ignoreSelection:!0,key:"safari-ime-span"});return De.create(t.doc,[r])}}function HA(t){let e=t.dom.ownerDocument.createElement("span");return e.className="ProseMirror-safari-ime-span",e}var Z2=new ve(PA?qA:{key:X2});function Ls(t,e){let n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let a=0,r=n.indexOf(e);for(;r!==-1;)a++,r=n.indexOf(e,r+e.length);return a}function w0(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function k0(t,e,n){let r=Ja((n||{}).ignore||[]),i=VA(e),s=-1;for(;++s<i.length;)qr(t,"text",o);function o(c,u){let p=-1,d;for(;++p<u.length;){let m=u[p],h=d?d.children:void 0;if(r(m,h?h.indexOf(m):void 0,d))return;d=m}if(d)return l(c,u)}function l(c,u){let p=u[u.length-1],d=i[s][0],m=i[s][1],h=0,y=p.children.indexOf(c),w=!1,_=[];d.lastIndex=0;let $=d.exec(c.value);for(;$;){let M=$.index,N={index:$.index,input:$.input,stack:[...u,c]},E=m(...$,N);if(typeof E=="string"&&(E=E.length>0?{type:"text",value:E}:void 0),E===!1?d.lastIndex=M+1:(h!==M&&_.push({type:"text",value:c.value.slice(h,M)}),Array.isArray(E)?_.push(...E):E&&_.push(E),h=M+$[0].length,w=!0),!d.global)break;$=d.exec(c.value)}return w?(h<c.value.length&&_.push({type:"text",value:c.value.slice(h)}),p.children.splice(y,1,..._)):_=[c],y+_.length}}function VA(t){let e=[];if(!Array.isArray(t))throw new TypeError("Expected find and replace tuple or list of tuples");let n=!t[0]||Array.isArray(t[0])?t:[t],a=-1;for(;++a<n.length;){let r=n[a];e.push([WA(r[0]),UA(r[1])])}return e}function WA(t){return typeof t=="string"?new RegExp(w0(t),"g"):t}function UA(t){return typeof t=="function"?t:function(){return t}}var _0="phrasing",v0=["autolink","link","image","label"];function C0(){return{transforms:[QA],enter:{literalAutolink:KA,literalAutolinkEmail:$0,literalAutolinkHttp:$0,literalAutolinkWww:$0},exit:{literalAutolink:YA,literalAutolinkEmail:JA,literalAutolinkHttp:XA,literalAutolinkWww:ZA}}}function j0(){return{unsafe:[{character:"@",before:"[+\\-.\\w]",after:"[\\-.\\w]",inConstruct:_0,notInConstruct:v0},{character:".",before:"[Ww]",after:"[\\-.\\w]",inConstruct:_0,notInConstruct:v0},{character:":",before:"[ps]",after:"\\/",inConstruct:_0,notInConstruct:v0}]}}function KA(t){this.enter({type:"link",title:null,url:"",children:[]},t)}function $0(t){this.config.enter.autolinkProtocol.call(this,t)}function XA(t){this.config.exit.autolinkProtocol.call(this,t)}function ZA(t){this.config.exit.data.call(this,t);let e=this.stack[this.stack.length-1];e.type,e.url="http://"+this.sliceSerialize(t)}function JA(t){this.config.exit.autolinkEmail.call(this,t)}function YA(t){this.exit(t)}function QA(t){k0(t,[[/(https?:\/\/|www(?=\.))([-.\w]+)([^ \t\r\n]*)/gi,eT],[/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu,tT]],{ignore:["link","linkReference"]})}function eT(t,e,n,a,r){let i="";if(!J2(r)||(/^w/i.test(e)&&(n=e+n,e="",i="http://"),!nT(n)))return!1;let s=aT(n+a);if(!s[0])return!1;let o={type:"link",title:null,url:i+e+s[0],children:[{type:"text",value:e+s[0]}]};return s[1]?[o,{type:"text",value:s[1]}]:o}function tT(t,e,n,a){return!J2(a,!0)||/[-\d_]$/.test(n)?!1:{type:"link",title:null,url:"mailto:"+e+"@"+n,children:[{type:"text",value:e+"@"+n}]}}function nT(t){let e=t.split(".");return!(e.length<2||e[e.length-1]&&(/_/.test(e[e.length-1])||!/[a-zA-Z\d]/.test(e[e.length-1]))||e[e.length-2]&&(/_/.test(e[e.length-2])||!/[a-zA-Z\d]/.test(e[e.length-2])))}function aT(t){let e=/[!"&'),.:;<>?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],a=n.indexOf(")"),r=Ls(t,"("),i=Ls(t,")");for(;a!==-1&&r>i;)t+=n.slice(0,a+1),n=n.slice(a+1),a=n.indexOf(")"),i++;return[t,n]}function J2(t,e){let n=t.input.charCodeAt(t.index-1);return(t.index===0||Vn(n)||Or(n))&&(!e||n!==47)}Y2.peek=dT;function rT(){this.buffer()}function iT(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function sT(){this.buffer()}function oT(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function lT(t){let e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ct(this.sliceSerialize(t)).toLowerCase(),n.label=e}function cT(t){this.exit(t)}function uT(t){let e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ct(this.sliceSerialize(t)).toLowerCase(),n.label=e}function pT(t){this.exit(t)}function dT(){return"["}function Y2(t,e,n,a){let r=n.createTracker(a),i=r.move("[^"),s=n.enter("footnoteReference"),o=n.enter("reference");return i+=r.move(n.safe(n.associationId(t),{after:"]",before:i})),o(),s(),i+=r.move("]"),i}function S0(){return{enter:{gfmFootnoteCallString:rT,gfmFootnoteCall:iT,gfmFootnoteDefinitionLabelString:sT,gfmFootnoteDefinition:oT},exit:{gfmFootnoteCallString:lT,gfmFootnoteCall:cT,gfmFootnoteDefinitionLabelString:uT,gfmFootnoteDefinition:pT}}}function E0(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:Y2},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(a,r,i,s){let o=i.createTracker(s),l=o.move("[^"),c=i.enter("footnoteDefinition"),u=i.enter("label");return l+=o.move(i.safe(i.associationId(a),{before:l,after:"]"})),u(),l+=o.move("]:"),a.children&&a.children.length>0&&(o.shift(4),l+=o.move((e?` +`:" ")+i.indentLines(i.containerFlow(a,o.current()),e?Q2:mT))),c(),l}}function mT(t,e,n){return e===0?t:Q2(t,e,n)}function Q2(t,e,n){return(n?"":" ")+t}var hT=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];e4.peek=bT;function A0(){return{canContainEols:["delete"],enter:{strikethrough:fT},exit:{strikethrough:gT}}}function T0(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:hT}],handlers:{delete:e4}}}function fT(t){this.enter({type:"delete",children:[]},t)}function gT(t){this.exit(t)}function e4(t,e,n,a){let r=n.createTracker(a),i=n.enter("strikethrough"),s=r.move("~~");return s+=n.containerPhrasing(t,{...r.current(),before:s,after:"~"}),s+=r.move("~~"),i(),s}function bT(){return"~"}function yT(t){return t.length}function n4(t,e){let n=e||{},a=(n.align||[]).concat(),r=n.stringLength||yT,i=[],s=[],o=[],l=[],c=0,u=-1;for(;++u<t.length;){let b=[],y=[],w=-1;for(t[u].length>c&&(c=t[u].length);++w<t[u].length;){let _=xT(t[u][w]);if(n.alignDelimiters!==!1){let $=r(_);y[w]=$,(l[w]===void 0||$>l[w])&&(l[w]=$)}b.push(_)}s[u]=b,o[u]=y}let p=-1;if(typeof a=="object"&&"length"in a)for(;++p<c;)i[p]=t4(a[p]);else{let b=t4(a);for(;++p<c;)i[p]=b}p=-1;let d=[],m=[];for(;++p<c;){let b=i[p],y="",w="";b===99?(y=":",w=":"):b===108?y=":":b===114&&(w=":");let _=n.alignDelimiters===!1?1:Math.max(1,l[p]-y.length-w.length),$=y+"-".repeat(_)+w;n.alignDelimiters!==!1&&(_=y.length+_+w.length,_>l[p]&&(l[p]=_),m[p]=_),d[p]=$}s.splice(1,0,d),o.splice(1,0,m),u=-1;let h=[];for(;++u<s.length;){let b=s[u],y=o[u];p=-1;let w=[];for(;++p<c;){let _=b[p]||"",$="",M="";if(n.alignDelimiters!==!1){let N=l[p]-(y[p]||0),E=i[p];E===114?$=" ".repeat(N):E===99?N%2?($=" ".repeat(N/2+.5),M=" ".repeat(N/2-.5)):($=" ".repeat(N/2),M=$):M=" ".repeat(N)}n.delimiterStart!==!1&&!p&&w.push("|"),n.padding!==!1&&!(n.alignDelimiters===!1&&_==="")&&(n.delimiterStart!==!1||p)&&w.push(" "),n.alignDelimiters!==!1&&w.push($),w.push(_),n.alignDelimiters!==!1&&w.push(M),n.padding!==!1&&w.push(" "),(n.delimiterEnd!==!1||p!==c-1)&&w.push("|")}h.push(n.delimiterEnd===!1?w.join("").replace(/ +$/,""):w.join(""))}return h.join(` +`)}function xT(t){return t==null?"":String(t)}function t4(t){let e=typeof t=="string"?t.codePointAt(0):0;return e===67||e===99?99:e===76||e===108?108:e===82||e===114?114:0}function N0(){return{enter:{table:wT,tableData:a4,tableHeader:a4,tableRow:_T},exit:{codeText:vT,table:kT,tableData:M0,tableHeader:M0,tableRow:M0}}}function wT(t){let e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function kT(t){this.exit(t),this.data.inTable=void 0}function _T(t){this.enter({type:"tableRow",children:[]},t)}function M0(t){this.exit(t)}function a4(t){this.enter({type:"tableCell",children:[]},t)}function vT(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,$T));let n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function $T(t,e){return e==="|"?e:t}function I0(t){let e=t||{},n=e.tableCellPadding,a=e.tablePipeAlign,r=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:d,table:s,tableCell:l,tableRow:o}};function s(m,h,b,y){return c(u(m,b,y),m.align)}function o(m,h,b,y){let w=p(m,b,y),_=c([w]);return _.slice(0,_.indexOf(` +`))}function l(m,h,b,y){let w=b.enter("tableCell"),_=b.enter("phrasing"),$=b.containerPhrasing(m,{...y,before:i,after:i});return _(),w(),$}function c(m,h){return n4(m,{align:h,alignDelimiters:a,padding:n,stringLength:r})}function u(m,h,b){let y=m.children,w=-1,_=[],$=h.enter("table");for(;++w<y.length;)_[w]=p(y[w],h,b);return $(),_}function p(m,h,b){let y=m.children,w=-1,_=[],$=h.enter("tableRow");for(;++w<y.length;)_[w]=l(y[w],m,h,b);return $(),_}function d(m,h,b){let y=Gr.inlineCode(m,h,b);return b.stack.includes("tableCell")&&(y=y.replace(/\|/g,"\\$&")),y}}function R0(){return{exit:{taskListCheckValueChecked:r4,taskListCheckValueUnchecked:r4,paragraph:CT}}}function z0(){return{unsafe:[{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{listItem:jT}}}function r4(t){let e=this.stack[this.stack.length-2];e.type,e.checked=t.type==="taskListCheckValueChecked"}function CT(t){let e=this.stack[this.stack.length-2];if(e&&e.type==="listItem"&&typeof e.checked=="boolean"){let n=this.stack[this.stack.length-1];n.type;let a=n.children[0];if(a&&a.type==="text"){let r=e.children,i=-1,s;for(;++i<r.length;){let o=r[i];if(o.type==="paragraph"){s=o;break}}s===n&&(a.value=a.value.slice(1),a.value.length===0?n.children.shift():n.position&&a.position&&typeof a.position.start.offset=="number"&&(a.position.start.column++,a.position.start.offset++,n.position.start=Object.assign({},a.position.start)))}}this.exit(t)}function jT(t,e,n,a){let r=t.children[0],i=typeof t.checked=="boolean"&&r&&r.type==="paragraph",s="["+(t.checked?"x":" ")+"] ",o=n.createTracker(a);i&&o.move(s);let l=Gr.listItem(t,e,n,{...a,...o.current()});return i&&(l=l.replace(/^(?:[*+-]|\d+\.)([\r\n]| {1,3})/,c)),l;function c(u){return u+s}}function O0(){return[C0(),S0(),A0(),N0(),R0()]}function B0(t){return{extensions:[j0(),E0(t),T0(),I0(t),z0()]}}var ST={tokenize:NT,partial:!0},i4={tokenize:IT,partial:!0},s4={tokenize:RT,partial:!0},o4={tokenize:zT,partial:!0},ET={tokenize:OT,partial:!0},l4={name:"wwwAutolink",tokenize:TT,previous:u4},c4={name:"protocolAutolink",tokenize:MT,previous:p4},Ra={name:"emailAutolink",tokenize:AT,previous:d4},ra={};function D0(){return{text:ra}}var yi=48;for(;yi<123;)ra[yi]=Ra,yi++,yi===58?yi=65:yi===91&&(yi=97);ra[43]=Ra;ra[45]=Ra;ra[46]=Ra;ra[95]=Ra;ra[72]=[Ra,c4];ra[104]=[Ra,c4];ra[87]=[Ra,l4];ra[119]=[Ra,l4];function AT(t,e,n){let a=this,r,i;return s;function s(p){return!L0(p)||!d4.call(a,a.previous)||F0(a.events)?n(p):(t.enter("literalAutolink"),t.enter("literalAutolinkEmail"),o(p))}function o(p){return L0(p)?(t.consume(p),o):p===64?(t.consume(p),l):n(p)}function l(p){return p===46?t.check(ET,u,c)(p):p===45||p===95||at(p)?(i=!0,t.consume(p),l):u(p)}function c(p){return t.consume(p),r=!0,l}function u(p){return i&&r&&nt(a.previous)?(t.exit("literalAutolinkEmail"),t.exit("literalAutolink"),e(p)):n(p)}}function TT(t,e,n){let a=this;return r;function r(s){return s!==87&&s!==119||!u4.call(a,a.previous)||F0(a.events)?n(s):(t.enter("literalAutolink"),t.enter("literalAutolinkWww"),t.check(ST,t.attempt(i4,t.attempt(s4,i),n),n)(s))}function i(s){return t.exit("literalAutolinkWww"),t.exit("literalAutolink"),e(s)}}function MT(t,e,n){let a=this,r="",i=!1;return s;function s(p){return(p===72||p===104)&&p4.call(a,a.previous)&&!F0(a.events)?(t.enter("literalAutolink"),t.enter("literalAutolinkHttp"),r+=String.fromCodePoint(p),t.consume(p),o):n(p)}function o(p){if(nt(p)&&r.length<5)return r+=String.fromCodePoint(p),t.consume(p),o;if(p===58){let d=r.toLowerCase();if(d==="http"||d==="https")return t.consume(p),l}return n(p)}function l(p){return p===47?(t.consume(p),i?c:(i=!0,l)):n(p)}function c(p){return p===null||zr(p)||ye(p)||Vn(p)||Or(p)?n(p):t.attempt(i4,t.attempt(s4,u),n)(p)}function u(p){return t.exit("literalAutolinkHttp"),t.exit("literalAutolink"),e(p)}}function NT(t,e,n){let a=0;return r;function r(s){return(s===87||s===119)&&a<3?(a++,t.consume(s),r):s===46&&a===3?(t.consume(s),i):n(s)}function i(s){return s===null?n(s):e(s)}}function IT(t,e,n){let a,r,i;return s;function s(c){return c===46||c===95?t.check(o4,l,o)(c):c===null||ye(c)||Vn(c)||c!==45&&Or(c)?l(c):(i=!0,t.consume(c),s)}function o(c){return c===95?a=!0:(r=a,a=void 0),t.consume(c),s}function l(c){return r||a||!i?n(c):e(c)}}function RT(t,e){let n=0,a=0;return r;function r(s){return s===40?(n++,t.consume(s),r):s===41&&a<n?i(s):s===33||s===34||s===38||s===39||s===41||s===42||s===44||s===46||s===58||s===59||s===60||s===63||s===93||s===95||s===126?t.check(o4,e,i)(s):s===null||ye(s)||Vn(s)?e(s):(t.consume(s),r)}function i(s){return s===41&&a++,t.consume(s),r}}function zT(t,e,n){return a;function a(o){return o===33||o===34||o===39||o===41||o===42||o===44||o===46||o===58||o===59||o===63||o===95||o===126?(t.consume(o),a):o===38?(t.consume(o),i):o===93?(t.consume(o),r):o===60||o===null||ye(o)||Vn(o)?e(o):n(o)}function r(o){return o===null||o===40||o===91||ye(o)||Vn(o)?e(o):a(o)}function i(o){return nt(o)?s(o):n(o)}function s(o){return o===59?(t.consume(o),a):nt(o)?(t.consume(o),s):n(o)}}function OT(t,e,n){return a;function a(i){return t.consume(i),r}function r(i){return at(i)?n(i):e(i)}}function u4(t){return t===null||t===40||t===42||t===95||t===91||t===93||t===126||ye(t)}function p4(t){return!nt(t)}function d4(t){return!(t===47||L0(t))}function L0(t){return t===43||t===45||t===46||t===95||at(t)}function F0(t){let e=t.length,n=!1;for(;e--;){let a=t[e][1];if((a.type==="labelLink"||a.type==="labelImage")&&!a._balanced){n=!0;break}if(a._gfmAutolinkLiteralWalkedInto){n=!1;break}}return t.length>0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}var BT={tokenize:HT,partial:!0};function P0(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:PT,continuation:{tokenize:qT},exit:GT}},text:{91:{name:"gfmFootnoteCall",tokenize:FT},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:LT,resolveTo:DT}}}}function LT(t,e,n){let a=this,r=a.events.length,i=a.parser.gfmFootnotes||(a.parser.gfmFootnotes=[]),s;for(;r--;){let l=a.events[r][1];if(l.type==="labelImage"){s=l;break}if(l.type==="gfmFootnoteCall"||l.type==="labelLink"||l.type==="label"||l.type==="image"||l.type==="link")break}return o;function o(l){if(!s||!s._balanced)return n(l);let c=Ct(a.sliceSerialize({start:s.end,end:a.now()}));return c.codePointAt(0)!==94||!i.includes(c.slice(1))?n(l):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(l),t.exit("gfmFootnoteCallLabelMarker"),e(l))}}function DT(t,e){let n=t.length,a;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){a=t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";let r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},i={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;let s={type:"gfmFootnoteCallString",start:Object.assign({},i.end),end:Object.assign({},t[t.length-1][1].start)},o={type:"chunkString",contentType:"string",start:Object.assign({},s.start),end:Object.assign({},s.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",i,e],["exit",i,e],["enter",s,e],["enter",o,e],["exit",o,e],["exit",s,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function FT(t,e,n){let a=this,r=a.parser.gfmFootnotes||(a.parser.gfmFootnotes=[]),i=0,s;return o;function o(p){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(p),t.exit("gfmFootnoteCallLabelMarker"),l}function l(p){return p!==94?n(p):(t.enter("gfmFootnoteCallMarker"),t.consume(p),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",c)}function c(p){if(i>999||p===93&&!s||p===null||p===91||ye(p))return n(p);if(p===93){t.exit("chunkString");let d=t.exit("gfmFootnoteCallString");return r.includes(Ct(a.sliceSerialize(d)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(p),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(p)}return ye(p)||(s=!0),i++,t.consume(p),p===92?u:c}function u(p){return p===91||p===92||p===93?(t.consume(p),i++,c):c(p)}}function PT(t,e,n){let a=this,r=a.parser.gfmFootnotes||(a.parser.gfmFootnotes=[]),i,s=0,o;return l;function l(h){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(h),t.exit("gfmFootnoteDefinitionLabelMarker"),c}function c(h){return h===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(h),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",u):n(h)}function u(h){if(s>999||h===93&&!o||h===null||h===91||ye(h))return n(h);if(h===93){t.exit("chunkString");let b=t.exit("gfmFootnoteDefinitionLabelString");return i=Ct(a.sliceSerialize(b)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(h),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),d}return ye(h)||(o=!0),s++,t.consume(h),h===92?p:u}function p(h){return h===91||h===92||h===93?(t.consume(h),s++,u):u(h)}function d(h){return h===58?(t.enter("definitionMarker"),t.consume(h),t.exit("definitionMarker"),r.includes(i)||r.push(i),Q(t,m,"gfmFootnoteDefinitionWhitespace")):n(h)}function m(h){return e(h)}}function qT(t,e,n){return t.check(Wn,e,t.attempt(BT,e,n))}function GT(t){t.exit("gfmFootnoteDefinition")}function HT(t,e,n){let a=this;return Q(t,r,"gfmFootnoteDefinitionIndent",5);function r(i){let s=a.events[a.events.length-1];return s&&s[1].type==="gfmFootnoteDefinitionIndent"&&s[2].sliceSerialize(s[1],!0).length===4?e(i):n(i)}}function q0(t){let n=(t||{}).singleTilde,a={name:"strikethrough",tokenize:i,resolveAll:r};return n==null&&(n=!0),{text:{126:a},insideSpan:{null:[a]},attentionMarkers:{null:[126]}};function r(s,o){let l=-1;for(;++l<s.length;)if(s[l][0]==="enter"&&s[l][1].type==="strikethroughSequenceTemporary"&&s[l][1]._close){let c=l;for(;c--;)if(s[c][0]==="exit"&&s[c][1].type==="strikethroughSequenceTemporary"&&s[c][1]._open&&s[l][1].end.offset-s[l][1].start.offset===s[c][1].end.offset-s[c][1].start.offset){s[l][1].type="strikethroughSequence",s[c][1].type="strikethroughSequence";let u={type:"strikethrough",start:Object.assign({},s[c][1].start),end:Object.assign({},s[l][1].end)},p={type:"strikethroughText",start:Object.assign({},s[c][1].end),end:Object.assign({},s[l][1].start)},d=[["enter",u,o],["enter",s[c][1],o],["exit",s[c][1],o],["enter",p,o]],m=o.parser.constructs.insideSpan.null;m&&We(d,d.length,0,Ka(m,s.slice(c+1,l),o)),We(d,d.length,0,[["exit",p,o],["enter",s[l][1],o],["exit",s[l][1],o],["exit",u,o]]),We(s,c-1,l-c+3,d),l=c+d.length-2;break}}for(l=-1;++l<s.length;)s[l][1].type==="strikethroughSequenceTemporary"&&(s[l][1].type="data");return s}function i(s,o,l){let c=this.previous,u=this.events,p=0;return d;function d(h){return c===126&&u[u.length-1][1].type!=="characterEscape"?l(h):(s.enter("strikethroughSequenceTemporary"),m(h))}function m(h){let b=ha(c);if(h===126)return p>1?l(h):(s.consume(h),p++,m);if(p<2&&!n)return l(h);let y=s.exit("strikethroughSequenceTemporary"),w=ha(h);return y._open=!w||w===2&&!!b,y._close=!b||b===2&&!!w,o(h)}}}var up=class{constructor(){this.map=[]}add(e,n,a){VT(this,e,n,a)}consume(e){if(this.map.sort(function(i,s){return i[0]-s[0]}),this.map.length===0)return;let n=this.map.length,a=[];for(;n>0;)n-=1,a.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];a.push(e.slice()),e.length=0;let r=a.pop();for(;r;){for(let i of r)e.push(i);r=a.pop()}this.map.length=0}};function VT(t,e,n,a){let r=0;if(!(n===0&&a.length===0)){for(;r<t.map.length;){if(t.map[r][0]===e){t.map[r][1]+=n,t.map[r][2].push(...a);return}r+=1}t.map.push([e,n,a])}}function m4(t,e){let n=!1,a=[];for(;e<t.length;){let r=t[e];if(n){if(r[0]==="enter")r[1].type==="tableContent"&&a.push(t[e+1][1].type==="tableDelimiterMarker"?"left":"none");else if(r[1].type==="tableContent"){if(t[e-1][1].type==="tableDelimiterMarker"){let i=a.length-1;a[i]=a[i]==="left"?"center":"right"}}else if(r[1].type==="tableDelimiterRow")break}else r[0]==="enter"&&r[1].type==="tableDelimiterRow"&&(n=!0);e+=1}return a}function G0(){return{flow:{null:{name:"table",tokenize:WT,resolveAll:UT}}}}function WT(t,e,n){let a=this,r=0,i=0,s;return o;function o(T){let ce=a.events.length-1;for(;ce>-1;){let J=a.events[ce][1].type;if(J==="lineEnding"||J==="linePrefix")ce--;else break}let Y=ce>-1?a.events[ce][1].type:null,K=Y==="tableHead"||Y==="tableRow"?E:l;return K===E&&a.parser.lazy[a.now().line]?n(T):K(T)}function l(T){return t.enter("tableHead"),t.enter("tableRow"),c(T)}function c(T){return T===124||(s=!0,i+=1),u(T)}function u(T){return T===null?n(T):W(T)?i>1?(i=0,a.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(T),t.exit("lineEnding"),m):n(T):te(T)?Q(t,u,"whitespace")(T):(i+=1,s&&(s=!1,r+=1),T===124?(t.enter("tableCellDivider"),t.consume(T),t.exit("tableCellDivider"),s=!0,u):(t.enter("data"),p(T)))}function p(T){return T===null||T===124||ye(T)?(t.exit("data"),u(T)):(t.consume(T),T===92?d:p)}function d(T){return T===92||T===124?(t.consume(T),p):p(T)}function m(T){return a.interrupt=!1,a.parser.lazy[a.now().line]?n(T):(t.enter("tableDelimiterRow"),s=!1,te(T)?Q(t,h,"linePrefix",a.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(T):h(T))}function h(T){return T===45||T===58?y(T):T===124?(s=!0,t.enter("tableCellDivider"),t.consume(T),t.exit("tableCellDivider"),b):N(T)}function b(T){return te(T)?Q(t,y,"whitespace")(T):y(T)}function y(T){return T===58?(i+=1,s=!0,t.enter("tableDelimiterMarker"),t.consume(T),t.exit("tableDelimiterMarker"),w):T===45?(i+=1,w(T)):T===null||W(T)?M(T):N(T)}function w(T){return T===45?(t.enter("tableDelimiterFiller"),_(T)):N(T)}function _(T){return T===45?(t.consume(T),_):T===58?(s=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(T),t.exit("tableDelimiterMarker"),$):(t.exit("tableDelimiterFiller"),$(T))}function $(T){return te(T)?Q(t,M,"whitespace")(T):M(T)}function M(T){return T===124?h(T):T===null||W(T)?!s||r!==i?N(T):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(T)):N(T)}function N(T){return n(T)}function E(T){return t.enter("tableRow"),I(T)}function I(T){return T===124?(t.enter("tableCellDivider"),t.consume(T),t.exit("tableCellDivider"),I):T===null||W(T)?(t.exit("tableRow"),e(T)):te(T)?Q(t,I,"whitespace")(T):(t.enter("data"),F(T))}function F(T){return T===null||T===124||ye(T)?(t.exit("data"),I(T)):(t.consume(T),T===92?L:F)}function L(T){return T===92||T===124?(t.consume(T),F):F(T)}}function UT(t,e){let n=-1,a=!0,r=0,i=[0,0,0,0],s=[0,0,0,0],o=!1,l=0,c,u,p,d=new up;for(;++n<t.length;){let m=t[n],h=m[1];m[0]==="enter"?h.type==="tableHead"?(o=!1,l!==0&&(h4(d,e,l,c,u),u=void 0,l=0),c={type:"table",start:Object.assign({},h.start),end:Object.assign({},h.end)},d.add(n,0,[["enter",c,e]])):h.type==="tableRow"||h.type==="tableDelimiterRow"?(a=!0,p=void 0,i=[0,0,0,0],s=[0,n+1,0,0],o&&(o=!1,u={type:"tableBody",start:Object.assign({},h.start),end:Object.assign({},h.end)},d.add(n,0,[["enter",u,e]])),r=h.type==="tableDelimiterRow"?2:u?3:1):r&&(h.type==="data"||h.type==="tableDelimiterMarker"||h.type==="tableDelimiterFiller")?(a=!1,s[2]===0&&(i[1]!==0&&(s[0]=s[1],p=pp(d,e,i,r,void 0,p),i=[0,0,0,0]),s[2]=n)):h.type==="tableCellDivider"&&(a?a=!1:(i[1]!==0&&(s[0]=s[1],p=pp(d,e,i,r,void 0,p)),i=s,s=[i[1],n,0,0])):h.type==="tableHead"?(o=!0,l=n):h.type==="tableRow"||h.type==="tableDelimiterRow"?(l=n,i[1]!==0?(s[0]=s[1],p=pp(d,e,i,r,n,p)):s[1]!==0&&(p=pp(d,e,s,r,n,p)),r=0):r&&(h.type==="data"||h.type==="tableDelimiterMarker"||h.type==="tableDelimiterFiller")&&(s[3]=n)}for(l!==0&&h4(d,e,l,c,u),d.consume(e.events),n=-1;++n<e.events.length;){let m=e.events[n];m[0]==="enter"&&m[1].type==="table"&&(m[1]._align=m4(e.events,n))}return t}function pp(t,e,n,a,r,i){let s=a===1?"tableHeader":a===2?"tableDelimiter":"tableData",o="tableContent";n[0]!==0&&(i.end=Object.assign({},Ds(e.events,n[0])),t.add(n[0],0,[["exit",i,e]]));let l=Ds(e.events,n[1]);if(i={type:s,start:Object.assign({},l),end:Object.assign({},l)},t.add(n[1],0,[["enter",i,e]]),n[2]!==0){let c=Ds(e.events,n[2]),u=Ds(e.events,n[3]),p={type:o,start:Object.assign({},c),end:Object.assign({},u)};if(t.add(n[2],0,[["enter",p,e]]),a!==2){let d=e.events[n[2]],m=e.events[n[3]];if(d[1].end=Object.assign({},m[1].end),d[1].type="chunkText",d[1].contentType="text",n[3]>n[2]+1){let h=n[2]+1,b=n[3]-n[2]-1;t.add(h,b,[])}}t.add(n[3]+1,0,[["exit",p,e]])}return r!==void 0&&(i.end=Object.assign({},Ds(e.events,r)),t.add(r,0,[["exit",i,e]]),i=void 0),i}function h4(t,e,n,a,r){let i=[],s=Ds(e.events,n);r&&(r.end=Object.assign({},s),i.push(["exit",r,e])),a.end=Object.assign({},s),i.push(["exit",a,e]),t.add(n+1,0,i)}function Ds(t,e){let n=t[e],a=n[0]==="enter"?"start":"end";return n[1][a]}var KT={name:"tasklistCheck",tokenize:XT};function H0(){return{text:{91:KT}}}function XT(t,e,n){let a=this;return r;function r(l){return a.previous!==null||!a._gfmTasklistFirstContentOfListItem?n(l):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(l),t.exit("taskListCheckMarker"),i)}function i(l){return ye(l)?(t.enter("taskListCheckValueUnchecked"),t.consume(l),t.exit("taskListCheckValueUnchecked"),s):l===88||l===120?(t.enter("taskListCheckValueChecked"),t.consume(l),t.exit("taskListCheckValueChecked"),s):n(l)}function s(l){return l===93?(t.enter("taskListCheckMarker"),t.consume(l),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),o):n(l)}function o(l){return W(l)?e(l):te(l)?t.check({tokenize:ZT},e,n)(l):n(l)}}function ZT(t,e,n){return Q(t,a,"whitespace");function a(r){return r===null?n(r):e(r)}}function f4(t){return lc([D0(),P0(),q0(t),G0(),H0()])}var JT={};function dp(t){let e=this,n=t||JT,a=e.data(),r=a.micromarkExtensions||(a.micromarkExtensions=[]),i=a.fromMarkdownExtensions||(a.fromMarkdownExtensions=[]),s=a.toMarkdownExtensions||(a.toMarkdownExtensions=[]);r.push(f4(n)),i.push(O0()),s.push(B0(n))}function ie(t,e){return Object.assign(t,{meta:{package:"@milkdown/preset-gfm",...e}}),t}var U0=hi("strike_through");ie(U0,{displayName:"Attr<strikethrough>",group:"Strikethrough"});var ml=fr("strike_through",t=>({parseDOM:[{tag:"del"},{style:"text-decoration",getAttrs:e=>e==="line-through"}],toDOM:e=>["del",t.get(U0.key)(e)],parseMarkdown:{match:e=>e.type==="delete",runner:(e,n,a)=>{e.openMark(a),e.next(n.children),e.closeMark(a)}},toMarkdown:{match:e=>e.type.name==="strike_through",runner:(e,n)=>{e.withMark(n,"delete")}}}));ie(ml.mark,{displayName:"MarkSchema<strikethrough>",group:"Strikethrough"});ie(ml.ctx,{displayName:"MarkSchemaCtx<strikethrough>",group:"Strikethrough"});var hl=re("ToggleStrikeThrough",t=>()=>ns(ml.type(t)));ie(hl,{displayName:"Command<ToggleStrikethrough>",group:"Strikethrough"});var b4=It(t=>ni(/(?<![\w:/])(~{1,2})(.+?)\1(?!\w|\/)/,ml.type(t)));ie(b4,{displayName:"InputRule<strikethrough>",group:"Strikethrough"});var K0=kt("strikeThroughKeymap",{ToggleStrikethrough:{shortcuts:"Mod-Alt-x",command:t=>{let e=t.get(we);return()=>e.call(hl.key)}}});ie(K0.ctx,{displayName:"KeymapCtx<strikethrough>",group:"Strikethrough"});ie(K0.shortcuts,{displayName:"Keymap<strikethrough>",group:"Strikethrough"});var fl=A2({tableGroup:"block",cellContent:"paragraph",cellAttributes:{alignment:{default:"left",getFromDOM:t=>t.style.textAlign||"left",setDOMAttr:(t,e)=>{e.style=`text-align: ${t||"left"}`}}}}),za=Oe("table",()=>({...fl.table,content:"table_header_row table_row+",disableDropCursor:!0,parseMarkdown:{match:t=>t.type==="table",runner:(t,e,n)=>{let a=e.align,r=e.children.map((i,s)=>({...i,align:a,isHeader:s===0}));t.openNode(n),t.next(r),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table",runner:(t,e)=>{let n=e.content.firstChild?.content;if(!n)return;let a=[];n.forEach(r=>{a.push(r.attrs.alignment)}),t.openNode("table",void 0,{align:a}),t.next(e.content),t.closeNode()}}}));ie(za.node,{displayName:"NodeSchema<table>",group:"Table"});ie(za.ctx,{displayName:"NodeSchemaCtx<table>",group:"Table"});var gl=Oe("table_header_row",()=>({...fl.table_row,disableDropCursor:!0,content:"(table_header)*",parseDOM:[{tag:"tr[data-is-header]"},{tag:"tr",getAttrs:t=>t instanceof HTMLElement&&t.querySelector("th")?{}:!1}],toDOM(){return["tr",{"data-is-header":!0},0]},parseMarkdown:{match:t=>!!(t.type==="tableRow"&&t.isHeader),runner:(t,e,n)=>{let a=e.align,r=e.children.map((i,s)=>({...i,align:a[s],isHeader:e.isHeader}));t.openNode(n),t.next(r),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table_header_row",runner:(t,e)=>{e.content.size!==0&&(t.openNode("tableRow",void 0,{isHeader:!0}),t.next(e.content),t.closeNode())}}}));ie(gl.node,{displayName:"NodeSchema<tableHeaderRow>",group:"Table"});ie(gl.ctx,{displayName:"NodeSchemaCtx<tableHeaderRow>",group:"Table"});var Ps=Oe("table_row",()=>({...fl.table_row,disableDropCursor:!0,content:"(table_cell)*",parseMarkdown:{match:t=>t.type==="tableRow",runner:(t,e,n)=>{let a=e.align,r=e.children.map((i,s)=>({...i,align:a[s]}));t.openNode(n),t.next(r),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table_row",runner:(t,e)=>{e.content.size!==0&&(t.openNode("tableRow"),t.next(e.content),t.closeNode())}}}));ie(Ps.node,{displayName:"NodeSchema<tableRow>",group:"Table"});ie(Ps.ctx,{displayName:"NodeSchemaCtx<tableRow>",group:"Table"});var bl=Oe("table_cell",()=>({...fl.table_cell,disableDropCursor:!0,parseMarkdown:{match:t=>t.type==="tableCell"&&!t.isHeader,runner:(t,e,n)=>{let a=e.align;t.openNode(n,{alignment:a}).openNode(t.schema.nodes.paragraph).next(e.children).closeNode().closeNode()}},toMarkdown:{match:t=>t.type.name==="table_cell",runner:(t,e)=>{t.openNode("tableCell").next(e.content).closeNode()}}}));ie(bl.node,{displayName:"NodeSchema<tableCell>",group:"Table"});ie(bl.ctx,{displayName:"NodeSchemaCtx<tableCell>",group:"Table"});var Fs=Oe("table_header",()=>({...fl.table_header,disableDropCursor:!0,parseMarkdown:{match:t=>t.type==="tableCell"&&!!t.isHeader,runner:(t,e,n)=>{let a=e.align;t.openNode(n,{alignment:a}),t.openNode(t.schema.nodes.paragraph),t.next(e.children),t.closeNode(),t.closeNode()}},toMarkdown:{match:t=>t.type.name==="table_header",runner:(t,e)=>{t.openNode("tableCell"),t.next(e.content),t.closeNode()}}}));ie(Fs.node,{displayName:"NodeSchema<tableHeader>",group:"Table"});ie(Fs.ctx,{displayName:"NodeSchemaCtx<tableHeader>",group:"Table"});function y4(t,e=3,n=3){let a=Array(n).fill(0).map(()=>bl.type(t).createAndFill()),r=Array(n).fill(0).map(()=>Fs.type(t).createAndFill()),i=Array(e).fill(0).map((s,o)=>o===0?gl.type(t).create(null,r):Ps.type(t).create(null,a));return za.type(t).create(null,i)}function x4(t){return(e,n)=>a=>{n=n??a.selection.from;let r=a.doc.resolve(n),i=Sx(l=>l.type.name==="table")(r),s=i?{node:i.node,from:i.start}:void 0,o=t==="row";if(s){let l=Se.get(s.node);if(e>=0&&e<(o?l.height:l.width)){let c=l.positionAt(o?e:l.height-1,o?l.width-1:e,s.node),u=a.doc.resolve(s.from+c),p=o?Re.rowSelection:Re.colSelection,d=l.positionAt(o?e:0,o?0:e,s.node),m=a.doc.resolve(s.from+d);return Pm(a.setSelection(p(u,m)))}}return a}}var YT=x4("row"),QT=x4("col");function w4(t,e,{map:n,tableStart:a,table:r},i){let s=Array(i).fill(0).reduce((l,c,u)=>l+r.child(u).nodeSize,a),o=Array(n.width).fill(0).map((l,c)=>{let u=r.nodeAt(n.map[c]);return bl.type(t).createAndFill({alignment:u?.attrs.alignment})});return e.insert(s,Ps.type(t).create(null,o)),e}function eM(t){let e=Bs(t.$from);if(!e)return;let n=Se.get(e.node);return n.cellsInRect({left:0,right:n.width,top:0,bottom:n.height}).map(a=>{let r=e.node.nodeAt(a),i=a+e.start;return{pos:i,start:i+1,node:r}})}function tM(t){let e=eM(t.selection);if(e&&e[0]){let n=t.doc.resolve(e[0].pos),a=e[e.length-1];if(a){let r=t.doc.resolve(a.pos);return Pm(t.setSelection(new Re(r,n)))}}return t}var X0=re("GoToPrevTableCell",()=>()=>b0(-1));ie(X0,{displayName:"Command<goToPrevTableCellCommand>",group:"Table"});var Z0=re("GoToNextTableCell",()=>()=>b0(1));ie(Z0,{displayName:"Command<goToNextTableCellCommand>",group:"Table"});var J0=re("ExitTable",t=>()=>(e,n)=>{if(!dn(e))return!1;let{$head:a}=e.selection,r=Cx(a,za.type(t));if(!r)return!1;let{to:i}=r,s=e.tr.replaceWith(i,i,Dn.type(t).createAndFill());return s.setSelection(ae.near(s.doc.resolve(i),1)).scrollIntoView(),n?.(s),!0});ie(J0,{displayName:"Command<breakTableCommand>",group:"Table"});var mp=re("InsertTable",t=>({row:e,col:n}={})=>(a,r)=>{let{selection:i,tr:s}=a,{from:o}=i,l=y4(t,e,n),c=s.replaceSelectionWith(l),u=ae.findFrom(c.doc.resolve(o),1,!0);return u&&c.setSelection(u),r?.(c),!0});ie(mp,{displayName:"Command<insertTableCommand>",group:"Table"});var k4=re("MoveRow",()=>({from:t,to:e,pos:n}={})=>G2({from:t??0,to:e??0,pos:n}));ie(k4,{displayName:"Command<moveRowCommand>",group:"Table"});var _4=re("MoveCol",()=>({from:t,to:e,pos:n}={})=>H2({from:t??0,to:e??0,pos:n}));ie(_4,{displayName:"Command<moveColCommand>",group:"Table"});var v4=re("SelectRow",()=>(t={index:0})=>(e,n)=>{let{tr:a}=e;return!!n?.(YT(t.index,t.pos)(a))});ie(v4,{displayName:"Command<selectRowCommand>",group:"Table"});var $4=re("SelectCol",()=>(t={index:0})=>(e,n)=>{let{tr:a}=e;return!!n?.(QT(t.index,t.pos)(a))});ie($4,{displayName:"Command<selectColCommand>",group:"Table"});var C4=re("SelectTable",()=>()=>(t,e)=>{let{tr:n}=t;return!!e?.(tM(n))});ie(C4,{displayName:"Command<selectTableCommand>",group:"Table"});var j4=re("DeleteSelectedCells",()=>()=>(t,e)=>{let{selection:n}=t;if(!(n instanceof Re))return!1;let a=n.isRowSelection(),r=n.isColSelection();return a&&r?q2(t,e):r?D2(t,e):F2(t,e)});ie(j4,{displayName:"Command<deleteSelectedCellsCommand>",group:"Table"});var S4=re("AddColBefore",()=>()=>B2);ie(S4,{displayName:"Command<addColBeforeCommand>",group:"Table"});var E4=re("AddColAfter",()=>()=>L2);ie(E4,{displayName:"Command<addColAfterCommand>",group:"Table"});var A4=re("AddRowBefore",t=>()=>(e,n)=>{if(!dn(e))return!1;if(n){let a=Ia(e);n(w4(t,e.tr,a,a.top))}return!0});ie(A4,{displayName:"Command<addRowBeforeCommand>",group:"Table"});var T4=re("AddRowAfter",t=>()=>(e,n)=>{if(!dn(e))return!1;if(n){let a=Ia(e);n(w4(t,e.tr,a,a.bottom))}return!0});ie(T4,{displayName:"Command<addRowAfterCommand>",group:"Table"});var M4=re("SetAlign",()=>(t="left")=>P2("alignment",t));ie(M4,{displayName:"Command<setAlignCommand>",group:"Table"});var N4=It(t=>new mt(/^\|(?<col>\d+)[xX](?<row>\d+)\|\s$/,(e,n,a,r)=>{let i=e.doc.resolve(a);if(!i.node(-1).canReplaceWith(i.index(-1),i.indexAfter(-1),za.type(t)))return null;let s=y4(t,Math.max(Number(n.groups?.row??0),2),Number(n.groups?.col)),o=e.tr.replaceRangeWith(a,r,s);return o.setSelection(ue.create(o.doc,a+3)).scrollIntoView()}));ie(N4,{displayName:"InputRule<insertTableInputRule>",group:"Table"});var I4=P_(t=>({run:(e,n,a)=>{if(a)return e;function r(c){let u=c.childCount,p=c.lastChild?.childCount??0;if(u===0||p===0)return Dn.type(t).create();let d=c.firstChild;if(!(p>0&&d&&d.childCount===0))return c;if(u>=3){let y=c.child(1),w=[];for(let M=0;M<y.childCount;M++){let N=y.child(M);w.push(Fs.type(t).create(N.attrs,N.content,N.marks))}let _=d.type.create(d.attrs,w),$=[];for(let M=2;M<u;M++)$.push(c.child(M));return c.type.create(c.attrs,[_,...$])}let m=Array(p).fill(0).map(()=>Fs.type(t).createAndFill()),h=new V(B.from(m),0,0),b=d.replace(0,0,h);return c.replace(0,d.nodeSize,new V(B.from(b),0,0))}function i(c){let u=Ps.type(t),p=[],d=[],m=!1;function h(){if(d.length===0)return;let b=gl.type(t).createAndFill(),y=za.type(t).create(null,[b,...d]);p.push(r(y)),d=[]}return c.forEach(b=>{b.type===u?(m=!0,d.push(b)):(h(),p.push(b))}),h(),m?B.from(p):c}function s(c){let u=i(c),p=u!==c,d=[];return u.forEach(m=>{if(m.type===za.type(t)){let h=r(m);h!==m&&(p=!0),d.push(h)}else if(m.childCount>0){let h=s(m.content);h!==m.content?(p=!0,d.push(m.copy(h))):d.push(m)}else d.push(m)}),p?B.from(d):c}function o(c){let u=[],p=[];c.forEach(d=>p.push(d));for(let d=0;d<p.length;d++){let m=p[d],h=p[d+1];m.type===Dn.type(t)&&m.content.size===0&&h&&h.type===za.type(t)||u.push(m)}return u.length<p.length?B.from(u):c}let l=s(e.content);return l=o(l),new V(B.from(l),e.openStart,e.openEnd)}}));ie(I4,{displayName:"PasteRule<table>",group:"Table"});var Y0=kt("tableKeymap",{NextCell:{priority:100,shortcuts:["Mod-]","Tab"],command:t=>{let e=t.get(we);return()=>e.call(Z0.key)}},PrevCell:{shortcuts:["Mod-[","Shift-Tab"],command:t=>{let e=t.get(we);return()=>e.call(X0.key)}},ExitTable:{shortcuts:["Mod-Enter","Enter"],command:t=>{let e=t.get(we);return()=>e.call(J0.key)}}});ie(Y0.ctx,{displayName:"KeymapCtx<table>",group:"Table"});ie(Y0.shortcuts,{displayName:"Keymap<table>",group:"Table"});var V0="footnote_definition",g4="footnoteDefinition",Q0=Oe("footnote_definition",()=>({group:"block",content:"block+",defining:!0,attrs:{label:{default:"",validate:"string"}},parseDOM:[{tag:`dl[data-type="${V0}"]`,getAttrs:t=>{if(!(t instanceof HTMLElement))throw an(t);return{label:t.dataset.label}},contentElement:"dd"}],toDOM:t=>{let e=t.attrs.label;return["dl",{"data-label":e,"data-type":V0},["dt",e],["dd",0]]},parseMarkdown:{match:({type:t})=>t===g4,runner:(t,e,n)=>{t.openNode(n,{label:e.label}).next(e.children).closeNode()}},toMarkdown:{match:t=>t.type.name===V0,runner:(t,e)=>{t.openNode(g4,void 0,{label:e.attrs.label,identifier:e.attrs.label}).next(e.content).closeNode()}}}));ie(Q0.ctx,{displayName:"NodeSchemaCtx<footnodeDef>",group:"footnote"});ie(Q0.node,{displayName:"NodeSchema<footnodeDef>",group:"footnote"});var W0="footnote_reference",eg=Oe("footnote_reference",()=>({group:"inline",inline:!0,atom:!0,attrs:{label:{default:"",validate:"string"}},parseDOM:[{tag:`sup[data-type="${W0}"]`,getAttrs:t=>{if(!(t instanceof HTMLElement))throw an(t);return{label:t.dataset.label}}}],toDOM:t=>{let e=t.attrs.label;return["sup",{"data-label":e,"data-type":W0},e]},parseMarkdown:{match:({type:t})=>t==="footnoteReference",runner:(t,e,n)=>{t.addNode(n,{label:e.label})}},toMarkdown:{match:t=>t.type.name===W0,runner:(t,e)=>{t.addNode("footnoteReference",void 0,void 0,{label:e.attrs.label,identifier:e.attrs.label})}}}));ie(eg.ctx,{displayName:"NodeSchemaCtx<footnodeRef>",group:"footnote"});ie(eg.node,{displayName:"NodeSchema<footnodeRef>",group:"footnote"});var tg=aa.extendSchema(t=>e=>{let n=t(e);return{...n,attrs:{...n.attrs,checked:{default:null,validate:"boolean|null"}},parseDOM:[{tag:'li[data-item-type="task"]',getAttrs:a=>{if(!(a instanceof HTMLElement))throw an(a);return{label:a.dataset.label,listType:a.dataset.listType,spread:a.dataset.spread,checked:a.dataset.checked?a.dataset.checked==="true":null}}},...n?.parseDOM||[]],toDOM:a=>n.toDOM&&a.attrs.checked==null?n.toDOM(a):["li",{"data-item-type":"task","data-label":a.attrs.label,"data-list-type":a.attrs.listType,"data-spread":a.attrs.spread,"data-checked":a.attrs.checked},0],parseMarkdown:{match:({type:a})=>a==="listItem",runner:(a,r,i)=>{if(r.checked==null){n.parseMarkdown.runner(a,r,i);return}let s=r.label!=null?`${r.label}.`:"\u2022",o=r.checked!=null?!!r.checked:null,l=r.label!=null?"ordered":"bullet",c=r.spread!=null?`${r.spread}`:"true";a.openNode(i,{label:s,listType:l,spread:c,checked:o}),a.next(r.children),a.closeNode()}},toMarkdown:{match:a=>a.type.name==="list_item",runner:(a,r)=>{if(r.attrs.checked==null){n.toMarkdown.runner(a,r);return}let i=r.attrs.label,s=r.attrs.listType,o=r.attrs.spread==="true",l=r.attrs.checked;a.openNode("listItem",void 0,{label:i,listType:s,spread:o,checked:l}),a.next(r.content),a.closeNode()}}}});ie(tg.node,{displayName:"NodeSchema<taskListItem>",group:"ListItem"});ie(tg.ctx,{displayName:"NodeSchemaCtx<taskListItem>",group:"ListItem"});var R4=It(()=>new mt(/^\[(?<checked>\s|x)\]\s$/,(t,e,n,a)=>{let r=t.doc.resolve(n),i=0,s=r.node(i);for(;s&&s.type.name!=="list_item";)i--,s=r.node(i);if(!s||s.attrs.checked!=null)return null;let o=e.groups?.checked==="x",l=r.before(i),c=t.tr;return c.deleteRange(n,a).setNodeMarkup(l,void 0,{...s.attrs,checked:o}),c}));ie(R4,{displayName:"InputRule<wrapInTaskListInputRule>",group:"ListItem"});var nM=[K0,Y0].flat(),aM=[N4,R4],rM=[b4],iM=[I4],z4=ot(()=>Z2);ie(z4,{displayName:"Prose<autoInsertSpanPlugin>",group:"Prose"});var sM=ot(()=>W2({}));ie(sM,{displayName:"Prose<columnResizingPlugin>",group:"Prose"});var O4=ot(()=>K2({allowTableNodeSelection:!0}));ie(O4,{displayName:"Prose<tableEditingPlugin>",group:"Prose"});var ng=jn("remarkGFM",()=>dp);ie(ng.plugin,{displayName:"Remark<remarkGFMPlugin>",group:"Remark"});ie(ng.options,{displayName:"RemarkConfig<remarkGFMPlugin>",group:"Remark"});var oM=new $e("MILKDOWN_KEEP_TABLE_ALIGN_PLUGIN");function lM(t,e){let n=0;return e.forEach((a,r,i)=>{a===t&&(n=i)}),n}var B4=ot(()=>new ve({key:oM,appendTransaction:(t,e,n)=>{let a,r=(i,s)=>{if(a||(a=n.tr),i.type.name!=="table_cell")return;let o=n.doc.resolve(s),l=o.node(o.depth),c=o.node(o.depth-1).firstChild;if(!c)return;let u=lM(i,l),p=c.maybeChild(u);if(!p)return;let d=p.attrs.alignment;d!==i.attrs.alignment&&a.setNodeMarkup(s,void 0,{...i.attrs,alignment:d})};return e.doc!==n.doc&&n.doc.descendants(r),a}}));ie(B4,{displayName:"Prose<keepTableAlignPlugin>",group:"Prose"});var cM=[B4,z4,ng,O4].flat(),uM=[tg,za,gl,Ps,Fs,bl,Q0,eg,U0,ml].flat(),pM=[Z0,X0,J0,mp,k4,_4,v4,$4,C4,j4,A4,T4,S4,E4,M4,hl],L4=[uM,aM,iM,rM,nM,pM,cM].flat();var dM=typeof global=="object"&&global&&global.Object===Object&&global,D4=dM;var mM=typeof self=="object"&&self&&self.Object===Object&&self,hM=D4||mM||Function("return this")(),hp=hM;var fM=hp.Symbol,qs=fM;var F4=Object.prototype,gM=F4.hasOwnProperty,bM=F4.toString,yl=qs?qs.toStringTag:void 0;function yM(t){var e=gM.call(t,yl),n=t[yl];try{t[yl]=void 0;var a=!0}catch{}var r=bM.call(t);return a&&(e?t[yl]=n:delete t[yl]),r}var P4=yM;var xM=Object.prototype,wM=xM.toString;function kM(t){return wM.call(t)}var q4=kM;var _M="[object Null]",vM="[object Undefined]",G4=qs?qs.toStringTag:void 0;function $M(t){return t==null?t===void 0?vM:_M:G4&&G4 in Object(t)?P4(t):q4(t)}var H4=$M;function CM(t){return t!=null&&typeof t=="object"}var V4=CM;var jM="[object Symbol]";function SM(t){return typeof t=="symbol"||V4(t)&&H4(t)==jM}var W4=SM;var EM=/\s/;function AM(t){for(var e=t.length;e--&&EM.test(t.charAt(e)););return e}var U4=AM;var TM=/^\s+/;function MM(t){return t&&t.slice(0,U4(t)+1).replace(TM,"")}var K4=MM;function NM(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var xl=NM;var X4=NaN,IM=/^[-+]0x[0-9a-f]+$/i,RM=/^0b[01]+$/i,zM=/^0o[0-7]+$/i,OM=parseInt;function BM(t){if(typeof t=="number")return t;if(W4(t))return X4;if(xl(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=xl(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=K4(t);var n=RM.test(t);return n||zM.test(t)?OM(t.slice(2),n?2:8):IM.test(t)?X4:+t}var ag=BM;var LM=function(){return hp.Date.now()},fp=LM;var DM="Expected a function",FM=Math.max,PM=Math.min;function qM(t,e,n){var a,r,i,s,o,l,c=0,u=!1,p=!1,d=!0;if(typeof t!="function")throw new TypeError(DM);e=ag(e)||0,xl(n)&&(u=!!n.leading,p="maxWait"in n,i=p?FM(ag(n.maxWait)||0,e):i,d="trailing"in n?!!n.trailing:d);function m(E){var I=a,F=r;return a=r=void 0,c=E,s=t.apply(F,I),s}function h(E){return c=E,o=setTimeout(w,e),u?m(E):s}function b(E){var I=E-l,F=E-c,L=e-I;return p?PM(L,i-F):L}function y(E){var I=E-l,F=E-c;return l===void 0||I>=e||I<0||p&&F>=i}function w(){var E=fp();if(y(E))return _(E);o=setTimeout(w,b(E))}function _(E){return o=void 0,d&&a?m(E):(a=r=void 0,s)}function $(){o!==void 0&&clearTimeout(o),c=0,a=l=r=o=void 0}function M(){return o===void 0?s:_(fp())}function N(){var E=fp(),I=y(E);if(a=arguments,r=this,l=E,I){if(o===void 0)return h(l);if(p)return clearTimeout(o),o=setTimeout(w,e),m(l)}return o===void 0&&(o=setTimeout(w,e)),s}return N.cancel=$,N.flush=M,N}var rg=qM;var Z4=class{constructor(){this.beforeMountedListeners=[],this.mountedListeners=[],this.updatedListeners=[],this.selectionUpdatedListeners=[],this.markdownUpdatedListeners=[],this.blurListeners=[],this.focusListeners=[],this.destroyListeners=[],this.beforeMount=t=>(this.beforeMountedListeners.push(t),this),this.mounted=t=>(this.mountedListeners.push(t),this),this.updated=t=>(this.updatedListeners.push(t),this)}get listeners(){return{beforeMount:this.beforeMountedListeners,mounted:this.mountedListeners,updated:this.updatedListeners,markdownUpdated:this.markdownUpdatedListeners,blur:this.blurListeners,focus:this.focusListeners,destroy:this.destroyListeners,selectionUpdated:this.selectionUpdatedListeners}}markdownUpdated(t){return this.markdownUpdatedListeners.push(t),this}blur(t){return this.blurListeners.push(t),this}focus(t){return this.focusListeners.push(t),this}destroy(t){return this.destroyListeners.push(t),this}selectionUpdated(t){return this.selectionUpdatedListeners.push(t),this}},gp=be(new Z4,"listener"),GM=new $e("MILKDOWN_LISTENER"),ig=t=>(t.inject(gp,new Z4),async()=>{await t.wait(_a);let{listeners:e}=t.get(gp);e.beforeMount.forEach(c=>c(t)),await t.wait(gs);let n=t.get($a),a=null,r=null,i=null,s=null,o=rg(()=>{if(!s)return;let{doc:c}=s;if(e.updated.length>0&&a&&!a.eq(c)&&e.updated.forEach(u=>{u(t,c,a)}),e.markdownUpdated.length>0&&a&&!a.eq(c)){let u=n(c);e.markdownUpdated.forEach(p=>{p(t,u,r)}),r=u}a=c,s=null},200),l=new ve({key:GM,view:()=>({destroy:()=>{e.destroy.forEach(c=>c(t))}}),props:{handleDOMEvents:{focus:()=>(e.focus.forEach(c=>c(t)),!1),blur:()=>(e.blur.forEach(c=>c(t)),!1)}},state:{init:(c,u)=>{a=u.doc,r=n(u.doc)},apply:c=>{let u=c.selection;(!i&&u||i&&!u.eq(i))&&(e.selectionUpdated.forEach(p=>{p(t,u,i)}),i=u),!(!(c.docChanged||c.storedMarksSet)||c.getMeta("addToHistory")===!1)&&(s=c,o())}}});t.update(Bn,c=>c.concat(l)),await t.wait(qo),e.mounted.forEach(c=>c(t))});ig.meta={package:"@milkdown/plugin-listener",displayName:"Listener"};function sg(t){if(!t)return!1;if(Array.isArray(t))return t.length>1?!1:sg(t[0]);let e=t.content;return e?sg(e):t.type==="text"}function HM(t,e){return Object.assign(t,{meta:{package:"@milkdown/plugin-clipboard",...e}}),t}function J4(t,e){let n=$x(e);if(n)return t.dispatch(t.state.tr.replaceSelectionWith(n,!0)),!0;try{return t.dispatch(t.state.tr.replaceSelection(e)),!0}catch{return!1}}var og=ot(t=>{let e=t.get(Tt);return t.update(Go,n=>({...n,editable:n.editable??(()=>!0),transformPastedHTML:(a,r)=>{let i=n.transformPastedHTML;return i&&(a=i(a,r)),a.includes("docs-internal-guid")&&(a=a.replace(/<b[^>]*id="docs-internal-guid[^"]*"[^>]*>([\s\S]*)<\/b>/,"$1"),a=a.replace(/<div[^>]*>(<table[\s\S]*?<\/table>)<\/div>/g,"$1")),a}})),new ve({key:new $e("MILKDOWN_CLIPBOARD"),props:{handlePaste:(n,a,r)=>{let i=t.get(va),s=n.props.editable?.(n.state),{clipboardData:o}=a;if(!s||!o||n.state.selection.$from.node().type.spec.code)return!1;let l=o.getData("text/plain"),c=o.getData("vscode-editor-data");if(c){let m=JSON.parse(c)?.mode;if(l&&m){let{tr:h}=n.state,b=jx("code_block",e);return h.replaceSelectionWith(b.create({language:m})).setSelection(ue.near(h.doc.resolve(Math.max(0,h.selection.from-2)))).insertText(l.replace(/\r\n?/g,` +`)),n.dispatch(h),!0}}let u=o.getData("text/html");if(u.length===0&&l.length===0)return!1;if(u.length>0&&r)return J4(n,r);let p=zn.fromSchema(e),d;if(u.length===0){let m=i(l);if(!m||typeof m=="string")return!1;d=On.fromSchema(e).serializeFragment(m.content)}else{let m=document.createElement("template");m.innerHTML=u,d=m.content.cloneNode(!0),m.remove()}return J4(n,p.parseSlice(d))},clipboardTextSerializer:n=>{let a=t.get($a);if(sg(n.content.toJSON()))return n.content.textBetween(0,n.content.size,` -`);let r=e.topNodeType.createAndFill(void 0,n.content);return r?a(r):""}}})});uM(K0,{displayName:"Prose<clipboard>"});var lp=200,kt=function(){};kt.prototype.append=function(e){return e.length?(e=kt.from(e),!this.length&&e||e.length<lp&&this.leafAppend(e)||this.length<lp&&e.leafPrepend(this)||this.appendInner(e)):this};kt.prototype.prepend=function(e){return e.length?kt.from(e).append(this):this};kt.prototype.appendInner=function(e){return new pM(this,e)};kt.prototype.slice=function(e,n){return e===void 0&&(e=0),n===void 0&&(n=this.length),e>=n?kt.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,n))};kt.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};kt.prototype.forEach=function(e,n,a){n===void 0&&(n=0),a===void 0&&(a=this.length),n<=a?this.forEachInner(e,n,a,0):this.forEachInvertedInner(e,n,a,0)};kt.prototype.map=function(e,n,a){n===void 0&&(n=0),a===void 0&&(a=this.length);var r=[];return this.forEach(function(i,s){return r.push(e(i,s))},n,a),r};kt.from=function(e){return e instanceof kt?e:e&&e.length?new M4(e):kt.empty};var M4=(function(t){function e(a){t.call(this),this.values=a}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(r,i){return r==0&&i==this.length?this:new e(this.values.slice(r,i))},e.prototype.getInner=function(r){return this.values[r]},e.prototype.forEachInner=function(r,i,s,o){for(var l=i;l<s;l++)if(r(this.values[l],o+l)===!1)return!1},e.prototype.forEachInvertedInner=function(r,i,s,o){for(var l=i-1;l>=s;l--)if(r(this.values[l],o+l)===!1)return!1},e.prototype.leafAppend=function(r){if(this.length+r.length<=lp)return new e(this.values.concat(r.flatten()))},e.prototype.leafPrepend=function(r){if(this.length+r.length<=lp)return new e(r.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(e.prototype,n),e})(kt);kt.empty=new M4([]);var pM=(function(t){function e(n,a){t.call(this),this.left=n,this.right=a,this.length=n.length+a.length,this.depth=Math.max(n.depth,a.depth)+1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(a){return a<this.left.length?this.left.get(a):this.right.get(a-this.left.length)},e.prototype.forEachInner=function(a,r,i,s){var o=this.left.length;if(r<o&&this.left.forEachInner(a,r,Math.min(i,o),s)===!1||i>o&&this.right.forEachInner(a,Math.max(r-o,0),Math.min(this.length,i)-o,s+o)===!1)return!1},e.prototype.forEachInvertedInner=function(a,r,i,s){var o=this.left.length;if(r>o&&this.right.forEachInvertedInner(a,r-o,Math.max(i,o)-o,s+o)===!1||i<o&&this.left.forEachInvertedInner(a,Math.min(r,o),i,s)===!1)return!1},e.prototype.sliceInner=function(a,r){if(a==0&&r==this.length)return this;var i=this.left.length;return r<=i?this.left.slice(a,r):a>=i?this.right.slice(a-i,r-i):this.left.slice(a,i).append(this.right.slice(0,r-i))},e.prototype.leafAppend=function(a){var r=this.right.leafAppend(a);if(r)return new e(this.left,r)},e.prototype.leafPrepend=function(a){var r=this.left.leafPrepend(a);if(r)return new e(r,this.right)},e.prototype.appendInner=function(a){return this.left.depth>=Math.max(this.right.depth,a.depth)+1?new e(this.left,new e(this.right,a)):new e(this,a)},e})(kt),X0=kt;var dM=500,mi=class t{constructor(e,n){this.items=e,this.eventCount=n}popEvent(e,n){if(this.eventCount==0)return null;let a=this.items.length;for(;;a--)if(this.items.get(a-1).selection){--a;break}let r,i;n&&(r=this.remapping(a,this.items.length),i=r.maps.length);let s=e.tr,o,l,c=[],u=[];return this.items.forEach((p,d)=>{if(!p.step){r||(r=this.remapping(a,d+1),i=r.maps.length),i--,u.push(p);return}if(r){u.push(new na(p.map));let m=p.step.map(r.slice(i)),h;m&&s.maybeStep(m).doc&&(h=s.mapping.maps[s.mapping.maps.length-1],c.push(new na(h,void 0,void 0,c.length+u.length))),i--,h&&r.appendMap(h,i)}else s.maybeStep(p.step);if(p.selection)return o=r?p.selection.map(r.slice(i)):p.selection,l=new t(this.items.slice(0,a).append(u.reverse().concat(c)),this.eventCount-1),!1},this.items.length,0),{remaining:l,transform:s,selection:o}}addTransform(e,n,a,r){let i=[],s=this.eventCount,o=this.items,l=!r&&o.length?o.get(o.length-1):null;for(let u=0;u<e.steps.length;u++){let p=e.steps[u].invert(e.docs[u]),d=new na(e.mapping.maps[u],p,n),m;(m=l&&l.merge(d))&&(d=m,u?i.pop():o=o.slice(0,o.length-1)),i.push(d),n&&(s++,n=void 0),r||(l=d)}let c=s-a.depth;return c>hM&&(o=mM(o,c),s-=c),new t(o.append(i),s)}remapping(e,n){let a=new go;return this.items.forEach((r,i)=>{let s=r.mirrorOffset!=null&&i-r.mirrorOffset>=e?a.maps.length-r.mirrorOffset:void 0;a.appendMap(r.map,s)},e,n),a}addMaps(e){return this.eventCount==0?this:new t(this.items.append(e.map(n=>new na(n))),this.eventCount)}rebased(e,n){if(!this.eventCount)return this;let a=[],r=Math.max(0,this.items.length-n),i=e.mapping,s=e.steps.length,o=this.eventCount;this.items.forEach(d=>{d.selection&&o--},r);let l=n;this.items.forEach(d=>{let m=i.getMirror(--l);if(m==null)return;s=Math.min(s,m);let h=i.maps[m];if(d.step){let b=e.steps[m].invert(e.docs[m]),y=d.selection&&d.selection.map(i.slice(l+1,m));y&&o++,a.push(new na(h,b,y))}else a.push(new na(h))},r);let c=[];for(let d=n;d<s;d++)c.push(new na(i.maps[d]));let u=this.items.slice(0,r).append(c).append(a),p=new t(u,o);return p.emptyItemCount()>dM&&(p=p.compress(this.items.length-a.length)),p}emptyItemCount(){let e=0;return this.items.forEach(n=>{n.step||e++}),e}compress(e=this.items.length){let n=this.remapping(0,e),a=n.maps.length,r=[],i=0;return this.items.forEach((s,o)=>{if(o>=e)r.push(s),s.selection&&i++;else if(s.step){let l=s.step.map(n.slice(a)),c=l&&l.getMap();if(a--,c&&n.appendMap(c,a),l){let u=s.selection&&s.selection.map(n.slice(a));u&&i++;let p=new na(c.invert(),l,u),d,m=r.length-1;(d=r.length&&r[m].merge(p))?r[m]=d:r.push(p)}}else s.map&&a--},this.items.length,0),new t(X0.from(r.reverse()),i)}};mi.empty=new mi(X0.empty,0);function mM(t,e){let n;return t.forEach((a,r)=>{if(a.selection&&e--==0)return n=r,!1}),t.slice(n)}var na=class t{constructor(e,n,a,r){this.map=e,this.step=n,this.selection=a,this.mirrorOffset=r}merge(e){if(this.step&&e.step&&!e.selection){let n=e.step.merge(this.step);if(n)return new t(n.getMap().invert(),n,this.selection)}}},aa=class{constructor(e,n,a,r,i){this.done=e,this.undone=n,this.prevRanges=a,this.prevTime=r,this.prevComposition=i}},hM=20;function fM(t,e,n,a){let r=n.getMeta(di),i;if(r)return r.historyState;n.getMeta(yM)&&(t=new aa(t.done,t.undone,null,0,-1));let s=n.getMeta("appendedTransaction");if(n.steps.length==0)return t;if(s&&s.getMeta(di))return s.getMeta(di).redo?new aa(t.done.addTransform(n,void 0,a,cp(e)),t.undone,N4(n.mapping.maps),t.prevTime,t.prevComposition):new aa(t.done,t.undone.addTransform(n,void 0,a,cp(e)),null,t.prevTime,t.prevComposition);if(n.getMeta("addToHistory")!==!1&&!(s&&s.getMeta("addToHistory")===!1)){let o=n.getMeta("composition"),l=t.prevTime==0||!s&&t.prevComposition!=o&&(t.prevTime<(n.time||0)-a.newGroupDelay||!gM(n,t.prevRanges)),c=s?Z0(t.prevRanges,n.mapping):N4(n.mapping.maps);return new aa(t.done.addTransform(n,l?e.selection.getBookmark():void 0,a,cp(e)),mi.empty,c,n.time,o??t.prevComposition)}else return(i=n.getMeta("rebased"))?new aa(t.done.rebased(n,i),t.undone.rebased(n,i),Z0(t.prevRanges,n.mapping),t.prevTime,t.prevComposition):new aa(t.done.addMaps(n.mapping.maps),t.undone.addMaps(n.mapping.maps),Z0(t.prevRanges,n.mapping),t.prevTime,t.prevComposition)}function gM(t,e){if(!e)return!1;if(!t.docChanged)return!0;let n=!1;return t.mapping.maps[0].forEach((a,r)=>{for(let i=0;i<e.length;i+=2)a<=e[i+1]&&r>=e[i]&&(n=!0)}),n}function N4(t){let e=[];for(let n=t.length-1;n>=0&&e.length==0;n--)t[n].forEach((a,r,i,s)=>e.push(i,s));return e}function Z0(t,e){if(!t)return null;let n=[];for(let a=0;a<t.length;a+=2){let r=e.map(t[a],1),i=e.map(t[a+1],-1);r<=i&&n.push(r,i)}return n}function bM(t,e,n){let a=cp(e),r=di.get(e).spec.config,i=(n?t.undone:t.done).popEvent(e,a);if(!i)return null;let s=i.selection.resolve(i.transform.doc),o=(n?t.done:t.undone).addTransform(i.transform,e.selection.getBookmark(),r,a),l=new aa(n?o:i.remaining,n?i.remaining:o,null,0,-1);return i.transform.setSelection(s).setMeta(di,{redo:n,historyState:l})}var J0=!1,I4=null;function cp(t){let e=t.plugins;if(I4!=e){J0=!1,I4=e;for(let n=0;n<e.length;n++)if(e[n].spec.historyPreserveItems){J0=!0;break}}return J0}var di=new Se("history"),yM=new Se("closeHistory");function R4(t={}){return t={depth:t.depth||100,newGroupDelay:t.newGroupDelay||500},new je({key:di,state:{init(){return new aa(mi.empty,mi.empty,null,0,-1)},apply(e,n,a){return fM(n,a,e,t)}},config:t,props:{handleDOMEvents:{beforeinput(e,n){let a=n.inputType,r=a=="historyUndo"?Y0:a=="historyRedo"?Q0:null;return!r||!e.editable?!1:(n.preventDefault(),r(e.state,e.dispatch))}}}})}function up(t,e){return(n,a)=>{let r=di.getState(n);if(!r||(t?r.undone:r.done).eventCount==0)return!1;if(a){let i=bM(r,n,t);i&&a(e?i.scrollIntoView():i)}return!0}}var Y0=up(!1,!0),Q0=up(!0,!0),RK=up(!1,!1),zK=up(!0,!1);function Rs(t,e){return Object.assign(t,{meta:{package:"@milkdown/plugin-history",...e}}),t}var eg=re("Undo",()=>()=>Y0);Rs(eg,{displayName:"Command<undo>"});var tg=re("Redo",()=>()=>Q0);Rs(tg,{displayName:"Command<redo>"});var ng=sn({},"historyProviderConfig");Rs(ng,{displayName:"Ctx<historyProviderConfig>"});var z4=yt(t=>R4(t.get(ng.key)));Rs(z4,{displayName:"Ctx<historyProviderPlugin>"});var ag=xt("historyKeymap",{Undo:{shortcuts:"Mod-z",command:t=>{let e=t.get(xe);return()=>e.call(eg.key)}},Redo:{shortcuts:["Mod-y","Shift-Mod-z"],command:t=>{let e=t.get(xe);return()=>e.call(tg.key)}}});Rs(ag.ctx,{displayName:"KeymapCtx<history>"});Rs(ag.shortcuts,{displayName:"Keymap<history>"});var O4=[ng,z4,ag,eg,tg].flat();var rg=sn({shouldAppend:t=>!(!t||["heading","paragraph"].includes(t.type.name)),getNode:t=>t.schema.nodes.paragraph.create()},"trailingConfig");rg.meta={package:"@milkdown/plugin-trailing",displayName:"Ctx<trailingConfig>"};var B4=yt(t=>{let e=new Se("MILKDOWN_TRAILING"),{shouldAppend:n,getNode:a}=t.get(rg.key),r=new je({key:e,state:{init:(i,s)=>{let o=s.tr.doc.lastChild;return n(o,s)},apply:(i,s,o,l)=>{if(!i.docChanged)return s;let c=i.doc.lastChild;return n(c,l)}},appendTransaction:(i,s,o)=>{let{doc:l,tr:c}=o,u=a?.(o),p=r.getState(o),d=l.content.size;if(!(!p||!u))return c.insert(d,u)}});return r});B4.meta={package:"@milkdown/plugin-trailing",displayName:"Prose<trailing>"};var L4=[rg,B4];var pp=["auto","light","dark"],wt={actionGroup:"code-actions",block:"code-block",copyButton:"copy-code",copySource:"code-copy-source",diagramBlock:"diagram-block",language:"code-language",mathBlock:"math-block",toneButton:"code-color-toggle"};function dp(t){return pp.includes(t)?t:"auto"}function D4(t){let e=dp(t),n=pp.indexOf(e);return pp[(n+1)%pp.length]}function mp(t,e){return t==="light"?e.lightLabel:t==="dark"?e.darkLabel:e.autoLabel}function zs(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var xM=["u","mark","kbd"];function hp(t,e,n={}){if(!n.katexEnabled)return`<code>${zs(e?`$$ +`);let r=e.topNodeType.createAndFill(void 0,n.content);return r?a(r):""}}})});HM(og,{displayName:"Prose<clipboard>"});var bp=200,_t=function(){};_t.prototype.append=function(e){return e.length?(e=_t.from(e),!this.length&&e||e.length<bp&&this.leafAppend(e)||this.length<bp&&e.leafPrepend(this)||this.appendInner(e)):this};_t.prototype.prepend=function(e){return e.length?_t.from(e).append(this):this};_t.prototype.appendInner=function(e){return new VM(this,e)};_t.prototype.slice=function(e,n){return e===void 0&&(e=0),n===void 0&&(n=this.length),e>=n?_t.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,n))};_t.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};_t.prototype.forEach=function(e,n,a){n===void 0&&(n=0),a===void 0&&(a=this.length),n<=a?this.forEachInner(e,n,a,0):this.forEachInvertedInner(e,n,a,0)};_t.prototype.map=function(e,n,a){n===void 0&&(n=0),a===void 0&&(a=this.length);var r=[];return this.forEach(function(i,s){return r.push(e(i,s))},n,a),r};_t.from=function(e){return e instanceof _t?e:e&&e.length?new Y4(e):_t.empty};var Y4=(function(t){function e(a){t.call(this),this.values=a}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(r,i){return r==0&&i==this.length?this:new e(this.values.slice(r,i))},e.prototype.getInner=function(r){return this.values[r]},e.prototype.forEachInner=function(r,i,s,o){for(var l=i;l<s;l++)if(r(this.values[l],o+l)===!1)return!1},e.prototype.forEachInvertedInner=function(r,i,s,o){for(var l=i-1;l>=s;l--)if(r(this.values[l],o+l)===!1)return!1},e.prototype.leafAppend=function(r){if(this.length+r.length<=bp)return new e(this.values.concat(r.flatten()))},e.prototype.leafPrepend=function(r){if(this.length+r.length<=bp)return new e(r.flatten().concat(this.values))},n.length.get=function(){return this.values.length},n.depth.get=function(){return 0},Object.defineProperties(e.prototype,n),e})(_t);_t.empty=new Y4([]);var VM=(function(t){function e(n,a){t.call(this),this.left=n,this.right=a,this.length=n.length+a.length,this.depth=Math.max(n.depth,a.depth)+1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(a){return a<this.left.length?this.left.get(a):this.right.get(a-this.left.length)},e.prototype.forEachInner=function(a,r,i,s){var o=this.left.length;if(r<o&&this.left.forEachInner(a,r,Math.min(i,o),s)===!1||i>o&&this.right.forEachInner(a,Math.max(r-o,0),Math.min(this.length,i)-o,s+o)===!1)return!1},e.prototype.forEachInvertedInner=function(a,r,i,s){var o=this.left.length;if(r>o&&this.right.forEachInvertedInner(a,r-o,Math.max(i,o)-o,s+o)===!1||i<o&&this.left.forEachInvertedInner(a,Math.min(r,o),i,s)===!1)return!1},e.prototype.sliceInner=function(a,r){if(a==0&&r==this.length)return this;var i=this.left.length;return r<=i?this.left.slice(a,r):a>=i?this.right.slice(a-i,r-i):this.left.slice(a,i).append(this.right.slice(0,r-i))},e.prototype.leafAppend=function(a){var r=this.right.leafAppend(a);if(r)return new e(this.left,r)},e.prototype.leafPrepend=function(a){var r=this.left.leafPrepend(a);if(r)return new e(r,this.right)},e.prototype.appendInner=function(a){return this.left.depth>=Math.max(this.right.depth,a.depth)+1?new e(this.left,new e(this.right,a)):new e(this,a)},e})(_t),lg=_t;var WM=500,wi=class t{constructor(e,n){this.items=e,this.eventCount=n}popEvent(e,n){if(this.eventCount==0)return null;let a=this.items.length;for(;;a--)if(this.items.get(a-1).selection){--a;break}let r,i;n&&(r=this.remapping(a,this.items.length),i=r.maps.length);let s=e.tr,o,l,c=[],u=[];return this.items.forEach((p,d)=>{if(!p.step){r||(r=this.remapping(a,d+1),i=r.maps.length),i--,u.push(p);return}if(r){u.push(new ia(p.map));let m=p.step.map(r.slice(i)),h;m&&s.maybeStep(m).doc&&(h=s.mapping.maps[s.mapping.maps.length-1],c.push(new ia(h,void 0,void 0,c.length+u.length))),i--,h&&r.appendMap(h,i)}else s.maybeStep(p.step);if(p.selection)return o=r?p.selection.map(r.slice(i)):p.selection,l=new t(this.items.slice(0,a).append(u.reverse().concat(c)),this.eventCount-1),!1},this.items.length,0),{remaining:l,transform:s,selection:o}}addTransform(e,n,a,r){let i=[],s=this.eventCount,o=this.items,l=!r&&o.length?o.get(o.length-1):null;for(let u=0;u<e.steps.length;u++){let p=e.steps[u].invert(e.docs[u]),d=new ia(e.mapping.maps[u],p,n),m;(m=l&&l.merge(d))&&(d=m,u?i.pop():o=o.slice(0,o.length-1)),i.push(d),n&&(s++,n=void 0),r||(l=d)}let c=s-a.depth;return c>KM&&(o=UM(o,c),s-=c),new t(o.append(i),s)}remapping(e,n){let a=new jo;return this.items.forEach((r,i)=>{let s=r.mirrorOffset!=null&&i-r.mirrorOffset>=e?a.maps.length-r.mirrorOffset:void 0;a.appendMap(r.map,s)},e,n),a}addMaps(e){return this.eventCount==0?this:new t(this.items.append(e.map(n=>new ia(n))),this.eventCount)}rebased(e,n){if(!this.eventCount)return this;let a=[],r=Math.max(0,this.items.length-n),i=e.mapping,s=e.steps.length,o=this.eventCount;this.items.forEach(d=>{d.selection&&o--},r);let l=n;this.items.forEach(d=>{let m=i.getMirror(--l);if(m==null)return;s=Math.min(s,m);let h=i.maps[m];if(d.step){let b=e.steps[m].invert(e.docs[m]),y=d.selection&&d.selection.map(i.slice(l+1,m));y&&o++,a.push(new ia(h,b,y))}else a.push(new ia(h))},r);let c=[];for(let d=n;d<s;d++)c.push(new ia(i.maps[d]));let u=this.items.slice(0,r).append(c).append(a),p=new t(u,o);return p.emptyItemCount()>WM&&(p=p.compress(this.items.length-a.length)),p}emptyItemCount(){let e=0;return this.items.forEach(n=>{n.step||e++}),e}compress(e=this.items.length){let n=this.remapping(0,e),a=n.maps.length,r=[],i=0;return this.items.forEach((s,o)=>{if(o>=e)r.push(s),s.selection&&i++;else if(s.step){let l=s.step.map(n.slice(a)),c=l&&l.getMap();if(a--,c&&n.appendMap(c,a),l){let u=s.selection&&s.selection.map(n.slice(a));u&&i++;let p=new ia(c.invert(),l,u),d,m=r.length-1;(d=r.length&&r[m].merge(p))?r[m]=d:r.push(p)}}else s.map&&a--},this.items.length,0),new t(lg.from(r.reverse()),i)}};wi.empty=new wi(lg.empty,0);function UM(t,e){let n;return t.forEach((a,r)=>{if(a.selection&&e--==0)return n=r,!1}),t.slice(n)}var ia=class t{constructor(e,n,a,r){this.map=e,this.step=n,this.selection=a,this.mirrorOffset=r}merge(e){if(this.step&&e.step&&!e.selection){let n=e.step.merge(this.step);if(n)return new t(n.getMap().invert(),n,this.selection)}}},sa=class{constructor(e,n,a,r,i){this.done=e,this.undone=n,this.prevRanges=a,this.prevTime=r,this.prevComposition=i}},KM=20;function XM(t,e,n,a){let r=n.getMeta(xi),i;if(r)return r.historyState;n.getMeta(YM)&&(t=new sa(t.done,t.undone,null,0,-1));let s=n.getMeta("appendedTransaction");if(n.steps.length==0)return t;if(s&&s.getMeta(xi))return s.getMeta(xi).redo?new sa(t.done.addTransform(n,void 0,a,yp(e)),t.undone,Q4(n.mapping.maps),t.prevTime,t.prevComposition):new sa(t.done,t.undone.addTransform(n,void 0,a,yp(e)),null,t.prevTime,t.prevComposition);if(n.getMeta("addToHistory")!==!1&&!(s&&s.getMeta("addToHistory")===!1)){let o=n.getMeta("composition"),l=t.prevTime==0||!s&&t.prevComposition!=o&&(t.prevTime<(n.time||0)-a.newGroupDelay||!ZM(n,t.prevRanges)),c=s?cg(t.prevRanges,n.mapping):Q4(n.mapping.maps);return new sa(t.done.addTransform(n,l?e.selection.getBookmark():void 0,a,yp(e)),wi.empty,c,n.time,o??t.prevComposition)}else return(i=n.getMeta("rebased"))?new sa(t.done.rebased(n,i),t.undone.rebased(n,i),cg(t.prevRanges,n.mapping),t.prevTime,t.prevComposition):new sa(t.done.addMaps(n.mapping.maps),t.undone.addMaps(n.mapping.maps),cg(t.prevRanges,n.mapping),t.prevTime,t.prevComposition)}function ZM(t,e){if(!e)return!1;if(!t.docChanged)return!0;let n=!1;return t.mapping.maps[0].forEach((a,r)=>{for(let i=0;i<e.length;i+=2)a<=e[i+1]&&r>=e[i]&&(n=!0)}),n}function Q4(t){let e=[];for(let n=t.length-1;n>=0&&e.length==0;n--)t[n].forEach((a,r,i,s)=>e.push(i,s));return e}function cg(t,e){if(!t)return null;let n=[];for(let a=0;a<t.length;a+=2){let r=e.map(t[a],1),i=e.map(t[a+1],-1);r<=i&&n.push(r,i)}return n}function JM(t,e,n){let a=yp(e),r=xi.get(e).spec.config,i=(n?t.undone:t.done).popEvent(e,a);if(!i)return null;let s=i.selection.resolve(i.transform.doc),o=(n?t.done:t.undone).addTransform(i.transform,e.selection.getBookmark(),r,a),l=new sa(n?o:i.remaining,n?i.remaining:o,null,0,-1);return i.transform.setSelection(s).setMeta(xi,{redo:n,historyState:l})}var ug=!1,ev=null;function yp(t){let e=t.plugins;if(ev!=e){ug=!1,ev=e;for(let n=0;n<e.length;n++)if(e[n].spec.historyPreserveItems){ug=!0;break}}return ug}var xi=new $e("history"),YM=new $e("closeHistory");function tv(t={}){return t={depth:t.depth||100,newGroupDelay:t.newGroupDelay||500},new ve({key:xi,state:{init(){return new sa(wi.empty,wi.empty,null,0,-1)},apply(e,n,a){return XM(n,a,e,t)}},config:t,props:{handleDOMEvents:{beforeinput(e,n){let a=n.inputType,r=a=="historyUndo"?pg:a=="historyRedo"?dg:null;return!r||!e.editable?!1:(n.preventDefault(),r(e.state,e.dispatch))}}}})}function xp(t,e){return(n,a)=>{let r=xi.getState(n);if(!r||(t?r.undone:r.done).eventCount==0)return!1;if(a){let i=JM(r,n,t);i&&a(e?i.scrollIntoView():i)}return!0}}var pg=xp(!1,!0),dg=xp(!0,!0),DX=xp(!1,!1),FX=xp(!0,!1);function Gs(t,e){return Object.assign(t,{meta:{package:"@milkdown/plugin-history",...e}}),t}var mg=re("Undo",()=>()=>pg);Gs(mg,{displayName:"Command<undo>"});var hg=re("Redo",()=>()=>dg);Gs(hg,{displayName:"Command<redo>"});var fg=Vt({},"historyProviderConfig");Gs(fg,{displayName:"Ctx<historyProviderConfig>"});var nv=ot(t=>tv(t.get(fg.key)));Gs(nv,{displayName:"Ctx<historyProviderPlugin>"});var gg=kt("historyKeymap",{Undo:{shortcuts:"Mod-z",command:t=>{let e=t.get(we);return()=>e.call(mg.key)}},Redo:{shortcuts:["Mod-y","Shift-Mod-z"],command:t=>{let e=t.get(we);return()=>e.call(hg.key)}}});Gs(gg.ctx,{displayName:"KeymapCtx<history>"});Gs(gg.shortcuts,{displayName:"Keymap<history>"});var av=[fg,nv,gg,mg,hg].flat();var bg=Vt({shouldAppend:t=>!(!t||["heading","paragraph"].includes(t.type.name)),getNode:t=>t.schema.nodes.paragraph.create()},"trailingConfig");bg.meta={package:"@milkdown/plugin-trailing",displayName:"Ctx<trailingConfig>"};var rv=ot(t=>{let e=new $e("MILKDOWN_TRAILING"),{shouldAppend:n,getNode:a}=t.get(bg.key),r=new ve({key:e,state:{init:(i,s)=>{let o=s.tr.doc.lastChild;return n(o,s)},apply:(i,s,o,l)=>{if(!i.docChanged)return s;let c=i.doc.lastChild;return n(c,l)}},appendTransaction:(i,s,o)=>{let{doc:l,tr:c}=o,u=a?.(o),p=r.getState(o),d=l.content.size;if(!(!p||!u))return c.insert(d,u)}});return r});rv.meta={package:"@milkdown/plugin-trailing",displayName:"Prose<trailing>"};var iv=[bg,rv];function QM(t){return new Promise(e=>{let n=new FileReader;n.addEventListener("load",()=>{e({alt:t.name,src:n.result})},!1),n.readAsDataURL(t)})}var eN=async(t,e)=>{let n=[];for(let r=0;r<t.length;r++){let i=t.item(r);i&&i.type.includes("image")&&n.push(i)}let{image:a}=e.nodes;if(!a)throw oc("image");return(await Promise.all(n.map(r=>QM(r)))).map(({alt:r,src:i})=>a.createAndFill({src:i,alt:r}))},ki=Vt({uploader:eN,enableHtmlFileUploader:!1,uploadWidgetFactory:(t,e)=>{let n=document.createElement("span");return n.textContent="Upload in progress...",rt.widget(t,n,e)}},"uploadConfig");ki.meta={package:"@milkdown/plugin-upload",displayName:"Ctx<uploadConfig>"};var sv=ot(t=>{let e=new $e("MILKDOWN_UPLOAD"),n=(r,i)=>{let s=e.getState(r);if(!s)return-1;let o=s.find(void 0,void 0,l=>l.id===i);return o.length?o[0]?.from??-1:-1},a=(r,i,s)=>{if(!s||s.length<=0)return!1;let o=Symbol("upload symbol"),l=t.get(Tt),{uploader:c,getInsertPos:u}=t.get(ki.key),{tr:p}=r.state,d=i instanceof DragEvent?r.posAtCoords({left:i.clientX,top:i.clientY})?.pos??p.selection.from:p.selection.from,m=typeof u=="function"?u(i,t,d):d;return r.dispatch(p.setMeta(e,{add:{id:o,pos:m}})),c(s,l,t,m).then(h=>{let b=n(r.state,o);b<0||r.dispatch(r.state.tr.replaceWith(b,b,h).setMeta(e,{remove:{id:o}}))}).catch(h=>{console.error(h)}),!0};return new ve({key:e,state:{init(){return De.empty},apply(r,i){let s=i.map(r.mapping,r.doc),o=r.getMeta(this);if(!o)return s;if(o.add){let{uploadWidgetFactory:l}=t.get(ki.key),c=l(o.add.pos,{id:o.add.id});return s.add(r.doc,[c])}if(o.remove){let l=s.find(void 0,void 0,c=>c.id===o.remove.id);return s.remove(l)}return s}},props:{decorations(r){return this.getState(r)},handlePaste:(r,i)=>{let{enableHtmlFileUploader:s}=t.get(ki.key);return!(i instanceof ClipboardEvent)||!s&&i.clipboardData?.getData("text/html")?!1:a(r,i,i.clipboardData?.files)},handleDrop:(r,i)=>i instanceof DragEvent?a(r,i,i.dataTransfer?.files):!1}})});sv.meta={package:"@milkdown/plugin-upload",displayName:"Prose<upload>"};var ov=[ki,sv];var wp=["auto","light","dark"],Qe={actionGroup:"code-actions",block:"code-block",copyButton:"copy-code",copySource:"code-copy-source",diagramBlock:"diagram-block",language:"code-language",mathBlock:"math-block",toneButton:"code-color-toggle"};function kp(t){return wp.includes(t)?t:"auto"}function lv(t){let e=kp(t),n=wp.indexOf(e);return wp[(n+1)%wp.length]}function _p(t,e){return t==="light"?e.lightLabel:t==="dark"?e.darkLabel:e.autoLabel}function Hs(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var tN=["u","mark","kbd"];function vp(t,e,n={}){if(!n.katexEnabled)return`<code>${Hs(e?`$$ ${t} -$$`:`$${t}$`)}</code>`;try{return y_.renderToString(t,{displayMode:e,throwOnError:!1,errorColor:n.errorColor||"#cc0000"})}catch{return`<code>${zs(t)}</code>`}}function F4(t){return String(t||"").trim().replace(/\s+/g,"-").toLowerCase()}function ig(t,e){let n=String(t||"").trim(),a=F4(n);return{id:n,normalizedId:a,label:n,exists:e?kM(e,n,a):!0,referenceId:`fnref-${a}`,definitionId:`fn-${a}`,fallbackMarkdown:`[^${n}]`}}function kM(t,e,n){if(t.has(e))return!0;for(let a of t.keys())if(F4(a)===n)return!0;return!1}function sg(t,e={}){let n=t.toLowerCase();return(e.safeInlineHtmlTags||xM).includes(n)}function q4(t){return`<code class="safe-html-source">${zs(t)}</code>`}function P4(t){let e=String(t||"").split(/\r?\n/),n=e[0]?.trim().match(/^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)]\s*(.*)$/i);if(!n)return null;let a=n[1].toLowerCase(),r=n[2]?[n[2]]:[];return{type:a,label:n[1].toUpperCase(),body:[...r,...e.slice(1)].join(` -`).trim()}}var Ne=class extends Error{constructor(t){super(t),this.name="ShikiError"}};function wM(t){return gg(t)}function gg(t){return Array.isArray(t)?_M(t):t instanceof RegExp?t:typeof t=="object"?vM(t):t}function _M(t){let e=[];for(let n=0,a=t.length;n<a;n++)e[n]=gg(t[n]);return e}function vM(t){let e={};for(let n in t)e[n]=gg(t[n]);return e}function J4(t,...e){return e.forEach(n=>{for(let a in n)t[a]=n[a]}),t}function Y4(t){let e=~t.lastIndexOf("/")||~t.lastIndexOf("\\");return e===0?t:~e===t.length-1?Y4(t.substring(0,t.length-1)):t.substr(~e+1)}var og=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g,fp=class{static hasCaptures(t){return t===null?!1:(og.lastIndex=0,og.test(t))}static replaceCaptures(t,e,n){return t.replace(og,(a,r,i,s)=>{let o=n[parseInt(r||i,10)];if(o){let l=e.substring(o.start,o.end);for(;l[0]===".";)l=l.substring(1);switch(s){case"downcase":return l.toLowerCase();case"upcase":return l.toUpperCase();default:return l}}else return a})}};function Q4(t,e){return t<e?-1:t>e?1:0}function ev(t,e){if(t===null&&e===null)return 0;if(!t)return-1;if(!e)return 1;let n=t.length,a=e.length;if(n===a){for(let r=0;r<n;r++){let i=Q4(t[r],e[r]);if(i!==0)return i}return 0}return n-a}function G4(t){return!!(/^#[0-9a-f]{6}$/i.test(t)||/^#[0-9a-f]{8}$/i.test(t)||/^#[0-9a-f]{3}$/i.test(t)||/^#[0-9a-f]{4}$/i.test(t))}function tv(t){return t.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&")}var nv=class{constructor(t){this.fn=t}cache=new Map;get(t){if(this.cache.has(t))return this.cache.get(t);let e=this.fn(t);return this.cache.set(t,e),e}},dl=class{constructor(t,e,n){this._colorMap=t,this._defaults=e,this._root=n}static createFromRawTheme(t,e){return this.createFromParsedTheme(jM(t),e)}static createFromParsedTheme(t,e){return EM(t,e)}_cachedMatchRoot=new nv(t=>this._root.match(t));getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(t){if(t===null)return this._defaults;let e=t.scopeName,a=this._cachedMatchRoot.get(e).find(r=>$M(t.parent,r.parentScopes));return a?new av(a.fontStyle,a.foreground,a.background):null}},lg=class gp{constructor(e,n){this.parent=e,this.scopeName=n}static push(e,n){for(let a of n)e=new gp(e,a);return e}static from(...e){let n=null;for(let a=0;a<e.length;a++)n=new gp(n,e[a]);return n}push(e){return new gp(this,e)}getSegments(){let e=this,n=[];for(;e;)n.push(e.scopeName),e=e.parent;return n.reverse(),n}toString(){return this.getSegments().join(" ")}extends(e){return this===e?!0:this.parent===null?!1:this.parent.extends(e)}getExtensionIfDefined(e){let n=[],a=this;for(;a&&a!==e;)n.push(a.scopeName),a=a.parent;return a===e?n.reverse():void 0}};function $M(t,e){if(e.length===0)return!0;for(let n=0;n<e.length;n++){let a=e[n],r=!1;if(a===">"){if(n===e.length-1)return!1;a=e[++n],r=!0}for(;t&&!CM(t.scopeName,a);){if(r)return!1;t=t.parent}if(!t)return!1;t=t.parent}return!0}function CM(t,e){return e===t||t.startsWith(e)&&t[e.length]==="."}var av=class{constructor(t,e,n){this.fontStyle=t,this.foregroundId=e,this.backgroundId=n}};function jM(t){if(!t)return[];if(!t.settings||!Array.isArray(t.settings))return[];let e=t.settings,n=[],a=0;for(let r=0,i=e.length;r<i;r++){let s=e[r];if(!s.settings)continue;let o;if(typeof s.scope=="string"){let p=s.scope;p=p.replace(/^[,]+/,""),p=p.replace(/[,]+$/,""),o=p.split(",")}else Array.isArray(s.scope)?o=s.scope:o=[""];let l=-1;if(typeof s.settings.fontStyle=="string"){l=0;let p=s.settings.fontStyle.split(" ");for(let d=0,m=p.length;d<m;d++)switch(p[d]){case"italic":l=l|1;break;case"bold":l=l|2;break;case"underline":l=l|4;break;case"strikethrough":l=l|8;break}}let c=null;typeof s.settings.foreground=="string"&&G4(s.settings.foreground)&&(c=s.settings.foreground);let u=null;typeof s.settings.background=="string"&&G4(s.settings.background)&&(u=s.settings.background);for(let p=0,d=o.length;p<d;p++){let h=o[p].trim().split(" "),b=h[h.length-1],y=null;h.length>1&&(y=h.slice(0,h.length-1),y.reverse()),n[a++]=new SM(b,y,r,l,c,u)}}return n}var SM=class{constructor(t,e,n,a,r,i){this.scope=t,this.parentScopes=e,this.index=n,this.fontStyle=a,this.foreground=r,this.background=i}},_t=(t=>(t[t.NotSet=-1]="NotSet",t[t.None=0]="None",t[t.Italic=1]="Italic",t[t.Bold=2]="Bold",t[t.Underline=4]="Underline",t[t.Strikethrough=8]="Strikethrough",t))(_t||{});function EM(t,e){t.sort((l,c)=>{let u=Q4(l.scope,c.scope);return u!==0||(u=ev(l.parentScopes,c.parentScopes),u!==0)?u:l.index-c.index});let n=0,a="#000000",r="#ffffff";for(;t.length>=1&&t[0].scope==="";){let l=t.shift();l.fontStyle!==-1&&(n=l.fontStyle),l.foreground!==null&&(a=l.foreground),l.background!==null&&(r=l.background)}let i=new AM(e),s=new av(n,i.getId(a),i.getId(r)),o=new MM(new ug(0,null,-1,0,0),[]);for(let l=0,c=t.length;l<c;l++){let u=t[l];o.insert(0,u.scope,u.parentScopes,u.fontStyle,i.getId(u.foreground),i.getId(u.background))}return new dl(i,s,o)}var AM=class{_isFrozen;_lastColorId;_id2color;_color2id;constructor(t){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(t)){this._isFrozen=!0;for(let e=0,n=t.length;e<n;e++)this._color2id[t[e]]=e,this._id2color[e]=t[e]}else this._isFrozen=!1}getId(t){if(t===null)return 0;t=t.toUpperCase();let e=this._color2id[t];if(e)return e;if(this._isFrozen)throw new Error(`Missing color in color map - ${t}`);return e=++this._lastColorId,this._color2id[t]=e,this._id2color[e]=t,e}getColorMap(){return this._id2color.slice(0)}},TM=Object.freeze([]),ug=class rv{scopeDepth;parentScopes;fontStyle;foreground;background;constructor(e,n,a,r,i){this.scopeDepth=e,this.parentScopes=n||TM,this.fontStyle=a,this.foreground=r,this.background=i}clone(){return new rv(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(e){let n=[];for(let a=0,r=e.length;a<r;a++)n[a]=e[a].clone();return n}acceptOverwrite(e,n,a,r){this.scopeDepth>e?console.log("how did this happen?"):this.scopeDepth=e,n!==-1&&(this.fontStyle=n),a!==0&&(this.foreground=a),r!==0&&(this.background=r)}},MM=class pg{constructor(e,n=[],a={}){this._mainRule=e,this._children=a,this._rulesWithParentScopes=n}_rulesWithParentScopes;static _cmpBySpecificity(e,n){if(e.scopeDepth!==n.scopeDepth)return n.scopeDepth-e.scopeDepth;let a=0,r=0;for(;e.parentScopes[a]===">"&&a++,n.parentScopes[r]===">"&&r++,!(a>=e.parentScopes.length||r>=n.parentScopes.length);){let i=n.parentScopes[r].length-e.parentScopes[a].length;if(i!==0)return i;a++,r++}return n.parentScopes.length-e.parentScopes.length}match(e){if(e!==""){let a=e.indexOf("."),r,i;if(a===-1?(r=e,i=""):(r=e.substring(0,a),i=e.substring(a+1)),this._children.hasOwnProperty(r))return this._children[r].match(i)}let n=this._rulesWithParentScopes.concat(this._mainRule);return n.sort(pg._cmpBySpecificity),n}insert(e,n,a,r,i,s){if(n===""){this._doInsertHere(e,a,r,i,s);return}let o=n.indexOf("."),l,c;o===-1?(l=n,c=""):(l=n.substring(0,o),c=n.substring(o+1));let u;this._children.hasOwnProperty(l)?u=this._children[l]:(u=new pg(this._mainRule.clone(),ug.cloneArr(this._rulesWithParentScopes)),this._children[l]=u),u.insert(e+1,c,a,r,i,s)}_doInsertHere(e,n,a,r,i){if(n===null){this._mainRule.acceptOverwrite(e,a,r,i);return}for(let s=0,o=this._rulesWithParentScopes.length;s<o;s++){let l=this._rulesWithParentScopes[s];if(ev(l.parentScopes,n)===0){l.acceptOverwrite(e,a,r,i);return}}a===-1&&(a=this._mainRule.fontStyle),r===0&&(r=this._mainRule.foreground),i===0&&(i=this._mainRule.background),this._rulesWithParentScopes.push(new ug(e,n,a,r,i))}},fi=class Cn{static toBinaryStr(e){return e.toString(2).padStart(32,"0")}static print(e){let n=Cn.getLanguageId(e),a=Cn.getTokenType(e),r=Cn.getFontStyle(e),i=Cn.getForeground(e),s=Cn.getBackground(e);console.log({languageId:n,tokenType:a,fontStyle:r,foreground:i,background:s})}static getLanguageId(e){return(e&255)>>>0}static getTokenType(e){return(e&768)>>>8}static containsBalancedBrackets(e){return(e&1024)!==0}static getFontStyle(e){return(e&30720)>>>11}static getForeground(e){return(e&16744448)>>>15}static getBackground(e){return(e&4278190080)>>>24}static set(e,n,a,r,i,s,o){let l=Cn.getLanguageId(e),c=Cn.getTokenType(e),u=Cn.containsBalancedBrackets(e)?1:0,p=Cn.getFontStyle(e),d=Cn.getForeground(e),m=Cn.getBackground(e);return n!==0&&(l=n),a!==8&&(c=a),r!==null&&(u=r?1:0),i!==-1&&(p=i),s!==0&&(d=s),o!==0&&(m=o),(l<<0|c<<8|u<<10|p<<11|d<<15|m<<24)>>>0}};function yp(t,e){let n=[],a=NM(t),r=a.next();for(;r!==null;){let l=0;if(r.length===2&&r.charAt(1)===":"){switch(r.charAt(0)){case"R":l=1;break;case"L":l=-1;break;default:console.log(`Unknown priority ${r} in scope selector`)}r=a.next()}let c=s();if(n.push({matcher:c,priority:l}),r!==",")break;r=a.next()}return n;function i(){if(r==="-"){r=a.next();let l=i();return c=>!!l&&!l(c)}if(r==="("){r=a.next();let l=o();return r===")"&&(r=a.next()),l}if(H4(r)){let l=[];do l.push(r),r=a.next();while(H4(r));return c=>e(l,c)}return null}function s(){let l=[],c=i();for(;c;)l.push(c),c=i();return u=>l.every(p=>p(u))}function o(){let l=[],c=s();for(;c&&(l.push(c),r==="|"||r===",");){do r=a.next();while(r==="|"||r===",");c=s()}return u=>l.some(p=>p(u))}}function H4(t){return!!t&&!!t.match(/[\w\.:]+/)}function NM(t){let e=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,n=e.exec(t);return{next:()=>{if(!n)return null;let a=n[0];return n=e.exec(t),a}}}function iv(t){typeof t.dispose=="function"&&t.dispose()}var ml=class{constructor(t){this.scopeName=t}toKey(){return this.scopeName}},IM=class{constructor(t,e){this.scopeName=t,this.ruleName=e}toKey(){return`${this.scopeName}#${this.ruleName}`}},RM=class{_references=[];_seenReferenceKeys=new Set;get references(){return this._references}visitedRule=new Set;add(t){let e=t.toKey();this._seenReferenceKeys.has(e)||(this._seenReferenceKeys.add(e),this._references.push(t))}},zM=class{constructor(t,e){this.repo=t,this.initialScopeName=e,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new ml(this.initialScopeName)]}seenFullScopeRequests=new Set;seenPartialScopeRequests=new Set;Q;processQueue(){let t=this.Q;this.Q=[];let e=new RM;for(let n of t)OM(n,this.initialScopeName,this.repo,e);for(let n of e.references)if(n instanceof ml){if(this.seenFullScopeRequests.has(n.scopeName))continue;this.seenFullScopeRequests.add(n.scopeName),this.Q.push(n)}else{if(this.seenFullScopeRequests.has(n.scopeName)||this.seenPartialScopeRequests.has(n.toKey()))continue;this.seenPartialScopeRequests.add(n.toKey()),this.Q.push(n)}}};function OM(t,e,n,a){let r=n.lookup(t.scopeName);if(!r){if(t.scopeName===e)throw new Error(`No grammar provided for <${e}>`);return}let i=n.lookup(e);t instanceof ml?bp({baseGrammar:i,selfGrammar:r},a):dg(t.ruleName,{baseGrammar:i,selfGrammar:r,repository:r.repository},a);let s=n.injections(t.scopeName);if(s)for(let o of s)a.add(new ml(o))}function dg(t,e,n){if(e.repository&&e.repository[t]){let a=e.repository[t];xp([a],e,n)}}function bp(t,e){t.selfGrammar.patterns&&Array.isArray(t.selfGrammar.patterns)&&xp(t.selfGrammar.patterns,{...t,repository:t.selfGrammar.repository},e),t.selfGrammar.injections&&xp(Object.values(t.selfGrammar.injections),{...t,repository:t.selfGrammar.repository},e)}function xp(t,e,n){for(let a of t){if(n.visitedRule.has(a))continue;n.visitedRule.add(a);let r=a.repository?J4({},e.repository,a.repository):e.repository;Array.isArray(a.patterns)&&xp(a.patterns,{...e,repository:r},n);let i=a.include;if(!i)continue;let s=sv(i);switch(s.kind){case 0:bp({...e,selfGrammar:e.baseGrammar},n);break;case 1:bp(e,n);break;case 2:dg(s.ruleName,{...e,repository:r},n);break;case 3:case 4:let o=s.scopeName===e.selfGrammar.scopeName?e.selfGrammar:s.scopeName===e.baseGrammar.scopeName?e.baseGrammar:void 0;if(o){let l={baseGrammar:e.baseGrammar,selfGrammar:o,repository:r};s.kind===4?dg(s.ruleName,l,n):bp(l,n)}else s.kind===4?n.add(new IM(s.scopeName,s.ruleName)):n.add(new ml(s.scopeName));break}}}var BM=class{kind=0},LM=class{kind=1},DM=class{constructor(t){this.ruleName=t}kind=2},FM=class{constructor(t){this.scopeName=t}kind=3},qM=class{constructor(t,e){this.scopeName=t,this.ruleName=e}kind=4};function sv(t){if(t==="$base")return new BM;if(t==="$self")return new LM;let e=t.indexOf("#");if(e===-1)return new FM(t);if(e===0)return new DM(t.substring(1));{let n=t.substring(0,e),a=t.substring(e+1);return new qM(n,a)}}var PM=/\\(\d+)/,V4=/\\(\d+)/g;var GM=-1,ov=-2;var gl=class{$location;id;_nameIsCapturing;_name;_contentNameIsCapturing;_contentName;constructor(t,e,n,a){this.$location=t,this.id=e,this._name=n||null,this._nameIsCapturing=fp.hasCaptures(this._name),this._contentName=a||null,this._contentNameIsCapturing=fp.hasCaptures(this._contentName)}get debugName(){let t=this.$location?`${Y4(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${t}`}getName(t,e){return!this._nameIsCapturing||this._name===null||t===null||e===null?this._name:fp.replaceCaptures(this._name,t,e)}getContentName(t,e){return!this._contentNameIsCapturing||this._contentName===null?this._contentName:fp.replaceCaptures(this._contentName,t,e)}},HM=class extends gl{retokenizeCapturedWithRuleId;constructor(t,e,n,a,r){super(t,e,n,a),this.retokenizeCapturedWithRuleId=r}dispose(){}collectPatterns(t,e){throw new Error("Not supported!")}compile(t,e){throw new Error("Not supported!")}compileAG(t,e,n,a){throw new Error("Not supported!")}},VM=class extends gl{_match;captures;_cachedCompiledPatterns;constructor(t,e,n,a,r){super(t,e,n,null),this._match=new hl(a,this.id),this.captures=r,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(t,e){e.push(this._match)}compile(t,e){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t).compileAG(t,n,a)}_getCachedCompiledPatterns(t){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new fl,this.collectPatterns(t,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},W4=class extends gl{hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor(t,e,n,a,r){super(t,e,n,a),this.patterns=r.patterns,this.hasMissingPatterns=r.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(t,e){for(let n of this.patterns)t.getRule(n).collectPatterns(t,e)}compile(t,e){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t).compileAG(t,n,a)}_getCachedCompiledPatterns(t){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new fl,this.collectPatterns(t,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},mg=class extends gl{_begin;beginCaptures;_end;endHasBackReferences;endCaptures;applyEndPatternLast;hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor(t,e,n,a,r,i,s,o,l,c){super(t,e,n,a),this._begin=new hl(r,this.id),this.beginCaptures=i,this._end=new hl(s||"\uFFFF",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=o,this.applyEndPatternLast=l||!1,this.patterns=c.patterns,this.hasMissingPatterns=c.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(t,e){return this._end.resolveBackReferences(t,e)}collectPatterns(t,e){e.push(this._begin)}compile(t,e){return this._getCachedCompiledPatterns(t,e).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t,e).compileAG(t,n,a)}_getCachedCompiledPatterns(t,e){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new fl;for(let n of this.patterns)t.getRule(n).collectPatterns(t,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,e):this._cachedCompiledPatterns.setSource(0,e)),this._cachedCompiledPatterns}},kp=class extends gl{_begin;beginCaptures;whileCaptures;_while;whileHasBackReferences;hasMissingPatterns;patterns;_cachedCompiledPatterns;_cachedCompiledWhilePatterns;constructor(t,e,n,a,r,i,s,o,l){super(t,e,n,a),this._begin=new hl(r,this.id),this.beginCaptures=i,this.whileCaptures=o,this._while=new hl(s,ov),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(t,e){return this._while.resolveBackReferences(t,e)}collectPatterns(t,e){e.push(this._begin)}compile(t,e){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t).compileAG(t,n,a)}_getCachedCompiledPatterns(t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new fl;for(let e of this.patterns)t.getRule(e).collectPatterns(t,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(t,e){return this._getCachedCompiledWhilePatterns(t,e).compile(t)}compileWhileAG(t,e,n,a){return this._getCachedCompiledWhilePatterns(t,e).compileAG(t,n,a)}_getCachedCompiledWhilePatterns(t,e){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new fl,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,e||"\uFFFF"),this._cachedCompiledWhilePatterns}},lv=class Mt{static createCaptureRule(e,n,a,r,i){return e.registerRule(s=>new HM(n,s,a,r,i))}static getCompiledRuleId(e,n,a){return e.id||n.registerRule(r=>{if(e.id=r,e.match)return new VM(e.$vscodeTextmateLocation,e.id,e.name,e.match,Mt._compileCaptures(e.captures,n,a));if(typeof e.begin>"u"){e.repository&&(a=J4({},a,e.repository));let i=e.patterns;return typeof i>"u"&&e.include&&(i=[{include:e.include}]),new W4(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,Mt._compilePatterns(i,n,a))}return e.while?new kp(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,Mt._compileCaptures(e.beginCaptures||e.captures,n,a),e.while,Mt._compileCaptures(e.whileCaptures||e.captures,n,a),Mt._compilePatterns(e.patterns,n,a)):new mg(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,Mt._compileCaptures(e.beginCaptures||e.captures,n,a),e.end,Mt._compileCaptures(e.endCaptures||e.captures,n,a),e.applyEndPatternLast,Mt._compilePatterns(e.patterns,n,a))}),e.id}static _compileCaptures(e,n,a){let r=[];if(e){let i=0;for(let s in e){if(s==="$vscodeTextmateLocation")continue;let o=parseInt(s,10);o>i&&(i=o)}for(let s=0;s<=i;s++)r[s]=null;for(let s in e){if(s==="$vscodeTextmateLocation")continue;let o=parseInt(s,10),l=0;e[s].patterns&&(l=Mt.getCompiledRuleId(e[s],n,a)),r[o]=Mt.createCaptureRule(n,e[s].$vscodeTextmateLocation,e[s].name,e[s].contentName,l)}}return r}static _compilePatterns(e,n,a){let r=[];if(e)for(let i=0,s=e.length;i<s;i++){let o=e[i],l=-1;if(o.include){let c=sv(o.include);switch(c.kind){case 0:case 1:l=Mt.getCompiledRuleId(a[o.include],n,a);break;case 2:let u=a[c.ruleName];u&&(l=Mt.getCompiledRuleId(u,n,a));break;case 3:case 4:let p=c.scopeName,d=c.kind===4?c.ruleName:null,m=n.getExternalGrammar(p,a);if(m)if(d){let h=m.repository[d];h&&(l=Mt.getCompiledRuleId(h,n,m.repository))}else l=Mt.getCompiledRuleId(m.repository.$self,n,m.repository);break}}else l=Mt.getCompiledRuleId(o,n,a);if(l!==-1){let c=n.getRule(l),u=!1;if((c instanceof W4||c instanceof mg||c instanceof kp)&&c.hasMissingPatterns&&c.patterns.length===0&&(u=!0),u)continue;r.push(l)}}return{patterns:r,hasMissingPatterns:(e?e.length:0)!==r.length}}},hl=class cv{source;ruleId;hasAnchor;hasBackReferences;_anchorCache;constructor(e,n){if(e&&typeof e=="string"){let a=e.length,r=0,i=[],s=!1;for(let o=0;o<a;o++)if(e.charAt(o)==="\\"&&o+1<a){let c=e.charAt(o+1);c==="z"?(i.push(e.substring(r,o)),i.push("$(?!\\n)(?<!\\n)"),r=o+2):(c==="A"||c==="G")&&(s=!0),o++}this.hasAnchor=s,r===0?this.source=e:(i.push(e.substring(r,a)),this.source=i.join(""))}else this.hasAnchor=!1,this.source=e;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=n,typeof this.source=="string"?this.hasBackReferences=PM.test(this.source):this.hasBackReferences=!1}clone(){return new cv(this.source,this.ruleId)}setSource(e){this.source!==e&&(this.source=e,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(e,n){if(typeof this.source!="string")throw new Error("This method should only be called if the source is a string");let a=n.map(r=>e.substring(r.start,r.end));return V4.lastIndex=0,this.source.replace(V4,(r,i)=>tv(a[parseInt(i,10)]||""))}_buildAnchorCache(){if(typeof this.source!="string")throw new Error("This method should only be called if the source is a string");let e=[],n=[],a=[],r=[],i,s,o,l;for(i=0,s=this.source.length;i<s;i++)o=this.source.charAt(i),e[i]=o,n[i]=o,a[i]=o,r[i]=o,o==="\\"&&i+1<s&&(l=this.source.charAt(i+1),l==="A"?(e[i+1]="\uFFFF",n[i+1]="\uFFFF",a[i+1]="A",r[i+1]="A"):l==="G"?(e[i+1]="\uFFFF",n[i+1]="G",a[i+1]="\uFFFF",r[i+1]="G"):(e[i+1]=l,n[i+1]=l,a[i+1]=l,r[i+1]=l),i++);return{A0_G0:e.join(""),A0_G1:n.join(""),A1_G0:a.join(""),A1_G1:r.join("")}}resolveAnchors(e,n){return!this.hasAnchor||!this._anchorCache||typeof this.source!="string"?this.source:e?n?this._anchorCache.A1_G1:this._anchorCache.A1_G0:n?this._anchorCache.A0_G1:this._anchorCache.A0_G0}},fl=class{_items;_hasAnchors;_cached;_anchorCache;constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&(this._cached.dispose(),this._cached=null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(t){this._items.push(t),this._hasAnchors=this._hasAnchors||t.hasAnchor}unshift(t){this._items.unshift(t),this._hasAnchors=this._hasAnchors||t.hasAnchor}length(){return this._items.length}setSource(t,e){this._items[t].source!==e&&(this._disposeCaches(),this._items[t].setSource(e))}compile(t){if(!this._cached){let e=this._items.map(n=>n.source);this._cached=new U4(t,e,this._items.map(n=>n.ruleId))}return this._cached}compileAG(t,e,n){return this._hasAnchors?e?n?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(t,e,n)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(t,e,n)),this._anchorCache.A1_G0):n?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(t,e,n)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(t,e,n)),this._anchorCache.A0_G0):this.compile(t)}_resolveAnchors(t,e,n){let a=this._items.map(r=>r.resolveAnchors(e,n));return new U4(t,a,this._items.map(r=>r.ruleId))}},U4=class{constructor(t,e,n){this.regExps=e,this.rules=n,this.scanner=t.createOnigScanner(e)}scanner;dispose(){typeof this.scanner.dispose=="function"&&this.scanner.dispose()}toString(){let t=[];for(let e=0,n=this.rules.length;e<n;e++)t.push(" - "+this.rules[e]+": "+this.regExps[e]);return t.join(` -`)}findNextMatchSync(t,e,n){let a=this.scanner.findNextMatchSync(t,e,n);return a?{ruleId:this.rules[a.index],captureIndices:a.captureIndices}:null}},cg=class{constructor(t,e){this.languageId=t,this.tokenType=e}},WM=class hg{_defaultAttributes;_embeddedLanguagesMatcher;constructor(e,n){this._defaultAttributes=new cg(e,8),this._embeddedLanguagesMatcher=new UM(Object.entries(n||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return e===null?hg._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}static _NULL_SCOPE_METADATA=new cg(0,0);_getBasicScopeAttributes=new nv(e=>{let n=this._scopeToLanguage(e),a=this._toStandardTokenType(e);return new cg(n,a)});_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){let n=e.match(hg.STANDARD_TOKEN_TYPE_REGEXP);if(!n)return 8;switch(n[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}static STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/},UM=class{values;scopesRegExp;constructor(t){if(t.length===0)this.values=null,this.scopesRegExp=null;else{this.values=new Map(t);let e=t.map(([n,a])=>tv(n));e.sort(),e.reverse(),this.scopesRegExp=new RegExp(`^((${e.join(")|(")}))($|\\.)`,"")}}match(t){if(!this.scopesRegExp)return;let e=t.match(this.scopesRegExp);if(e)return this.values.get(e[1])}},YK={InDebugMode:typeof process<"u"&&!!process.env.VSCODE_TEXTMATE_DEBUG},uv=!1,K4=class{constructor(t,e){this.stack=t,this.stoppedEarly=e}};function pv(t,e,n,a,r,i,s,o){let l=e.content.length,c=!1,u=-1;if(s){let m=KM(t,e,n,a,r,i);r=m.stack,a=m.linePos,n=m.isFirstLine,u=m.anchorPosition}let p=Date.now();for(;!c;){if(o!==0&&Date.now()-p>o)return new K4(r,!0);d()}return new K4(r,!1);function d(){let m=XM(t,e,n,a,r,u);if(!m){i.produce(r,l),c=!0;return}let h=m.captureIndices,b=m.matchedRuleId,y=h&&h.length>0?h[0].end>a:!1;if(b===GM){let k=r.getRule(t);i.produce(r,h[0].start),r=r.withContentNameScopesList(r.nameScopesList),ul(t,e,n,r,i,k.endCaptures,h),i.produce(r,h[0].end);let _=r;if(r=r.parent,u=_.getAnchorPos(),!y&&_.getEnterPos()===a){r=_,i.produce(r,l),c=!0;return}}else{let k=t.getRule(b);i.produce(r,h[0].start);let _=r,$=k.getName(e.content,h),M=r.contentNameScopesList.pushAttributed($,t);if(r=r.push(b,a,u,h[0].end===l,null,M,M),k instanceof mg){let N=k;ul(t,e,n,r,i,N.beginCaptures,h),i.produce(r,h[0].end),u=h[0].end;let E=N.getContentName(e.content,h),I=M.pushAttributed(E,t);if(r=r.withContentNameScopesList(I),N.endHasBackReferences&&(r=r.withEndRule(N.getEndWithResolvedBackReferences(e.content,h))),!y&&_.hasSameRuleAs(r)){r=r.pop(),i.produce(r,l),c=!0;return}}else if(k instanceof kp){let N=k;ul(t,e,n,r,i,N.beginCaptures,h),i.produce(r,h[0].end),u=h[0].end;let E=N.getContentName(e.content,h),I=M.pushAttributed(E,t);if(r=r.withContentNameScopesList(I),N.whileHasBackReferences&&(r=r.withEndRule(N.getWhileWithResolvedBackReferences(e.content,h))),!y&&_.hasSameRuleAs(r)){r=r.pop(),i.produce(r,l),c=!0;return}}else if(ul(t,e,n,r,i,k.captures,h),i.produce(r,h[0].end),r=r.pop(),!y){r=r.safePop(),i.produce(r,l),c=!0;return}}h[0].end>a&&(a=h[0].end,n=!1)}}function KM(t,e,n,a,r,i){let s=r.beginRuleCapturedEOL?0:-1,o=[];for(let l=r;l;l=l.pop()){let c=l.getRule(t);c instanceof kp&&o.push({rule:c,stack:l})}for(let l=o.pop();l;l=o.pop()){let{ruleScanner:c,findOptions:u}=YM(l.rule,t,l.stack.endRule,n,a===s),p=c.findNextMatchSync(e,a,u);if(p){if(p.ruleId!==ov){r=l.stack.pop();break}p.captureIndices&&p.captureIndices.length&&(i.produce(l.stack,p.captureIndices[0].start),ul(t,e,n,l.stack,i,l.rule.whileCaptures,p.captureIndices),i.produce(l.stack,p.captureIndices[0].end),s=p.captureIndices[0].end,p.captureIndices[0].end>a&&(a=p.captureIndices[0].end,n=!1))}else{r=l.stack.pop();break}}return{stack:r,linePos:a,anchorPosition:s,isFirstLine:n}}function XM(t,e,n,a,r,i){let s=ZM(t,e,n,a,r,i),o=t.getInjections();if(o.length===0)return s;let l=JM(o,t,e,n,a,r,i);if(!l)return s;if(!s)return l;let c=s.captureIndices[0].start,u=l.captureIndices[0].start;return u<c||l.priorityMatch&&u===c?l:s}function ZM(t,e,n,a,r,i){let s=r.getRule(t),{ruleScanner:o,findOptions:l}=dv(s,t,r.endRule,n,a===i),c=o.findNextMatchSync(e,a,l);return c?{captureIndices:c.captureIndices,matchedRuleId:c.ruleId}:null}function JM(t,e,n,a,r,i,s){let o=Number.MAX_VALUE,l=null,c,u=0,p=i.contentNameScopesList.getScopeNames();for(let d=0,m=t.length;d<m;d++){let h=t[d];if(!h.matcher(p))continue;let b=e.getRule(h.ruleId),{ruleScanner:y,findOptions:k}=dv(b,e,null,a,r===s),_=y.findNextMatchSync(n,r,k);if(!_)continue;let $=_.captureIndices[0].start;if(!($>=o)&&(o=$,l=_.captureIndices,c=_.ruleId,u=h.priority,o===r))break}return l?{priorityMatch:u===-1,captureIndices:l,matchedRuleId:c}:null}function dv(t,e,n,a,r){if(uv){let s=t.compile(e,n),o=mv(a,r);return{ruleScanner:s,findOptions:o}}return{ruleScanner:t.compileAG(e,n,a,r),findOptions:0}}function YM(t,e,n,a,r){if(uv){let s=t.compileWhile(e,n),o=mv(a,r);return{ruleScanner:s,findOptions:o}}return{ruleScanner:t.compileWhileAG(e,n,a,r),findOptions:0}}function mv(t,e){let n=0;return t||(n|=1),e||(n|=4),n}function ul(t,e,n,a,r,i,s){if(i.length===0)return;let o=e.content,l=Math.min(i.length,s.length),c=[],u=s[0].end;for(let p=0;p<l;p++){let d=i[p];if(d===null)continue;let m=s[p];if(m.length===0)continue;if(m.start>u)break;for(;c.length>0&&c[c.length-1].endPos<=m.start;)r.produceFromScopes(c[c.length-1].scopes,c[c.length-1].endPos),c.pop();if(c.length>0?r.produceFromScopes(c[c.length-1].scopes,m.start):r.produce(a,m.start),d.retokenizeCapturedWithRuleId){let b=d.getName(o,s),y=a.contentNameScopesList.pushAttributed(b,t),k=d.getContentName(o,s),_=y.pushAttributed(k,t),$=a.push(d.retokenizeCapturedWithRuleId,m.start,-1,!1,null,y,_),M=t.createOnigString(o.substring(0,m.end));pv(t,M,n&&m.start===0,m.start,$,r,!1,0),iv(M);continue}let h=d.getName(o,s);if(h!==null){let y=(c.length>0?c[c.length-1].scopes:a.contentNameScopesList).pushAttributed(h,t);c.push(new QM(y,m.end))}}for(;c.length>0;)r.produceFromScopes(c[c.length-1].scopes,c[c.length-1].endPos),c.pop()}var QM=class{scopes;endPos;constructor(t,e){this.scopes=t,this.endPos=e}};function eN(t,e,n,a,r,i,s,o){return new nN(t,e,n,a,r,i,s,o)}function X4(t,e,n,a,r){let i=yp(e,wp),s=lv.getCompiledRuleId(n,a,r.repository);for(let o of i)t.push({debugSelector:e,matcher:o.matcher,ruleId:s,grammar:r,priority:o.priority})}function wp(t,e){if(e.length<t.length)return!1;let n=0;return t.every(a=>{for(let r=n;r<e.length;r++)if(tN(e[r],a))return n=r+1,!0;return!1})}function tN(t,e){if(!t)return!1;if(t===e)return!0;let n=e.length;return t.length>n&&t.substr(0,n)===e&&t[n]==="."}var nN=class{constructor(t,e,n,a,r,i,s,o){if(this._rootScopeName=t,this.balancedBracketSelectors=i,this._onigLib=o,this._basicScopeAttributesProvider=new WM(n,a),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=s,this._grammar=Z4(e,null),this._injections=null,this._tokenTypeMatchers=[],r)for(let l of Object.keys(r)){let c=yp(l,wp);for(let u of c)this._tokenTypeMatchers.push({matcher:u.matcher,type:r[l]})}}_rootId;_lastRuleId;_ruleId2desc;_includedGrammars;_grammarRepository;_grammar;_injections;_basicScopeAttributesProvider;_tokenTypeMatchers;get themeProvider(){return this._grammarRepository}dispose(){for(let t of this._ruleId2desc)t&&t.dispose()}createOnigScanner(t){return this._onigLib.createOnigScanner(t)}createOnigString(t){return this._onigLib.createOnigString(t)}getMetadataForScope(t){return this._basicScopeAttributesProvider.getBasicScopeAttributes(t)}_collectInjections(){let t={lookup:r=>r===this._rootScopeName?this._grammar:this.getExternalGrammar(r),injections:r=>this._grammarRepository.injections(r)},e=[],n=this._rootScopeName,a=t.lookup(n);if(a){let r=a.injections;if(r)for(let s in r)X4(e,s,r[s],this,a);let i=this._grammarRepository.injections(n);i&&i.forEach(s=>{let o=this.getExternalGrammar(s);if(o){let l=o.injectionSelector;l&&X4(e,l,o,this,o)}})}return e.sort((r,i)=>r.priority-i.priority),e}getInjections(){return this._injections===null&&(this._injections=this._collectInjections()),this._injections}registerRule(t){let e=++this._lastRuleId,n=t(e);return this._ruleId2desc[e]=n,n}getRule(t){return this._ruleId2desc[t]}getExternalGrammar(t,e){if(this._includedGrammars[t])return this._includedGrammars[t];if(this._grammarRepository){let n=this._grammarRepository.lookup(t);if(n)return this._includedGrammars[t]=Z4(n,e&&e.$base),this._includedGrammars[t]}}tokenizeLine(t,e,n=0){let a=this._tokenize(t,e,!1,n);return{tokens:a.lineTokens.getResult(a.ruleStack,a.lineLength),ruleStack:a.ruleStack,stoppedEarly:a.stoppedEarly}}tokenizeLine2(t,e,n=0){let a=this._tokenize(t,e,!0,n);return{tokens:a.lineTokens.getBinaryResult(a.ruleStack,a.lineLength),ruleStack:a.ruleStack,stoppedEarly:a.stoppedEarly}}_tokenize(t,e,n,a){this._rootId===-1&&(this._rootId=lv.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository),this.getInjections());let r;if(!e||e===fg.NULL){r=!0;let c=this._basicScopeAttributesProvider.getDefaultAttributes(),u=this.themeProvider.getDefaults(),p=fi.set(0,c.languageId,c.tokenType,null,u.fontStyle,u.foregroundId,u.backgroundId),d=this.getRule(this._rootId).getName(null,null),m;d?m=pl.createRootAndLookUpScopeName(d,p,this):m=pl.createRoot("unknown",p),e=new fg(null,this._rootId,-1,-1,!1,null,m,m)}else r=!1,e.reset();t=t+` -`;let i=this.createOnigString(t),s=i.content.length,o=new rN(n,t,this._tokenTypeMatchers,this.balancedBracketSelectors),l=pv(this,i,r,0,e,o,!0,a);return iv(i),{lineLength:s,lineTokens:o,ruleStack:l.stack,stoppedEarly:l.stoppedEarly}}};function Z4(t,e){return t=wM(t),t.repository=t.repository||{},t.repository.$self={$vscodeTextmateLocation:t.$vscodeTextmateLocation,patterns:t.patterns,name:t.scopeName},t.repository.$base=e||t.repository.$self,t}var pl=class ra{constructor(e,n,a){this.parent=e,this.scopePath=n,this.tokenAttributes=a}static fromExtension(e,n){let a=e,r=e?.scopePath??null;for(let i of n)r=lg.push(r,i.scopeNames),a=new ra(a,r,i.encodedTokenAttributes);return a}static createRoot(e,n){return new ra(null,new lg(null,e),n)}static createRootAndLookUpScopeName(e,n,a){let r=a.getMetadataForScope(e),i=new lg(null,e),s=a.themeProvider.themeMatch(i),o=ra.mergeAttributes(n,r,s);return new ra(null,i,o)}get scopeName(){return this.scopePath.scopeName}toString(){return this.getScopeNames().join(" ")}equals(e){return ra.equals(this,e)}static equals(e,n){do{if(e===n||!e&&!n)return!0;if(!e||!n||e.scopeName!==n.scopeName||e.tokenAttributes!==n.tokenAttributes)return!1;e=e.parent,n=n.parent}while(!0)}static mergeAttributes(e,n,a){let r=-1,i=0,s=0;return a!==null&&(r=a.fontStyle,i=a.foregroundId,s=a.backgroundId),fi.set(e,n.languageId,n.tokenType,null,r,i,s)}pushAttributed(e,n){if(e===null)return this;if(e.indexOf(" ")===-1)return ra._pushAttributed(this,e,n);let a=e.split(/ /g),r=this;for(let i of a)r=ra._pushAttributed(r,i,n);return r}static _pushAttributed(e,n,a){let r=a.getMetadataForScope(n),i=e.scopePath.push(n),s=a.themeProvider.themeMatch(i),o=ra.mergeAttributes(e.tokenAttributes,r,s);return new ra(e,i,o)}getScopeNames(){return this.scopePath.getSegments()}getExtensionIfDefined(e){let n=[],a=this;for(;a&&a!==e;)n.push({encodedTokenAttributes:a.tokenAttributes,scopeNames:a.scopePath.getExtensionIfDefined(a.parent?.scopePath??null)}),a=a.parent;return a===e?n.reverse():void 0}},fg=class hi{constructor(e,n,a,r,i,s,o,l){this.parent=e,this.ruleId=n,this.beginRuleCapturedEOL=i,this.endRule=s,this.nameScopesList=o,this.contentNameScopesList=l,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=a,this._anchorPos=r}_stackElementBrand=void 0;static NULL=new hi(null,0,0,0,!1,null,null,null);_enterPos;_anchorPos;depth;equals(e){return e===null?!1:hi._equals(this,e)}static _equals(e,n){return e===n?!0:this._structuralEquals(e,n)?pl.equals(e.contentNameScopesList,n.contentNameScopesList):!1}static _structuralEquals(e,n){do{if(e===n||!e&&!n)return!0;if(!e||!n||e.depth!==n.depth||e.ruleId!==n.ruleId||e.endRule!==n.endRule)return!1;e=e.parent,n=n.parent}while(!0)}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){hi._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,n,a,r,i,s,o){return new hi(this,e,n,a,r,i,s,o)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){let e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,n){return this.parent&&(n=this.parent._writeString(e,n)),e[n++]=`(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`,n}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new hi(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let n=this;for(;n&&n._enterPos===e._enterPos;){if(n.ruleId===e.ruleId)return!0;n=n.parent}return!1}toStateStackFrame(){return{ruleId:this.ruleId,beginRuleCapturedEOL:this.beginRuleCapturedEOL,endRule:this.endRule,nameScopesList:this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList??null)??[],contentNameScopesList:this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList)??[]}}static pushFrame(e,n){let a=pl.fromExtension(e?.nameScopesList??null,n.nameScopesList);return new hi(e,n.ruleId,n.enterPos??-1,n.anchorPos??-1,n.beginRuleCapturedEOL,n.endRule,a,pl.fromExtension(a,n.contentNameScopesList))}},aN=class{balancedBracketScopes;unbalancedBracketScopes;allowAny=!1;constructor(t,e){this.balancedBracketScopes=t.flatMap(n=>n==="*"?(this.allowAny=!0,[]):yp(n,wp).map(a=>a.matcher)),this.unbalancedBracketScopes=e.flatMap(n=>yp(n,wp).map(a=>a.matcher))}get matchesAlways(){return this.allowAny&&this.unbalancedBracketScopes.length===0}get matchesNever(){return this.balancedBracketScopes.length===0&&!this.allowAny}match(t){for(let e of this.unbalancedBracketScopes)if(e(t))return!1;for(let e of this.balancedBracketScopes)if(e(t))return!0;return this.allowAny}},rN=class{constructor(t,e,n,a){this.balancedBracketSelectors=a,this._emitBinaryTokens=t,this._tokenTypeOverrides=n,this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}_emitBinaryTokens;_lineText;_tokens;_binaryTokens;_lastTokenEndIndex;_tokenTypeOverrides;produce(t,e){this.produceFromScopes(t.contentNameScopesList,e)}produceFromScopes(t,e){if(this._lastTokenEndIndex>=e)return;if(this._emitBinaryTokens){let a=t?.tokenAttributes??0,r=!1;if(this.balancedBracketSelectors?.matchesAlways&&(r=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){let i=t?.getScopeNames()??[];for(let s of this._tokenTypeOverrides)s.matcher(i)&&(a=fi.set(a,0,s.type,null,-1,0,0));this.balancedBracketSelectors&&(r=this.balancedBracketSelectors.match(i))}if(r&&(a=fi.set(a,0,8,r,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===a){this._lastTokenEndIndex=e;return}this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(a),this._lastTokenEndIndex=e;return}let n=t?.getScopeNames()??[];this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:e,scopes:n}),this._lastTokenEndIndex=e}getResult(t,e){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===e-1&&this._tokens.pop(),this._tokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(t,e),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(t,e){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===e-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),this._binaryTokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(t,e),this._binaryTokens[this._binaryTokens.length-2]=0);let n=new Uint32Array(this._binaryTokens.length);for(let a=0,r=this._binaryTokens.length;a<r;a++)n[a]=this._binaryTokens[a];return n}},iN=class{constructor(t,e){this._onigLib=e,this._theme=t}_grammars=new Map;_rawGrammars=new Map;_injectionGrammars=new Map;_theme;dispose(){for(let t of this._grammars.values())t.dispose()}setTheme(t){this._theme=t}getColorMap(){return this._theme.getColorMap()}addGrammar(t,e){this._rawGrammars.set(t.scopeName,t),e&&this._injectionGrammars.set(t.scopeName,e)}lookup(t){return this._rawGrammars.get(t)}injections(t){return this._injectionGrammars.get(t)}getDefaults(){return this._theme.getDefaults()}themeMatch(t){return this._theme.match(t)}grammarForScopeName(t,e,n,a,r){if(!this._grammars.has(t)){let i=this._rawGrammars.get(t);if(!i)return null;this._grammars.set(t,eN(t,i,e,n,a,r,this,this._onigLib))}return this._grammars.get(t)}},hv=class{_options;_syncRegistry;_ensureGrammarCache;constructor(t){this._options=t,this._syncRegistry=new iN(dl.createFromRawTheme(t.theme,t.colorMap),t.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(t,e){this._syncRegistry.setTheme(dl.createFromRawTheme(t,e))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(t,e,n){return this.loadGrammarWithConfiguration(t,e,{embeddedLanguages:n})}loadGrammarWithConfiguration(t,e,n){return this._loadGrammar(t,e,n.embeddedLanguages,n.tokenTypes,new aN(n.balancedBracketSelectors||[],n.unbalancedBracketSelectors||[]))}loadGrammar(t){return this._loadGrammar(t,0,null,null,null)}_loadGrammar(t,e,n,a,r){let i=new zM(this._syncRegistry,t);for(;i.Q.length>0;)i.Q.map(s=>this._loadSingleGrammar(s.scopeName)),i.processQueue();return this._grammarForScopeName(t,e,n,a,r)}_loadSingleGrammar(t){this._ensureGrammarCache.has(t)||(this._doLoadSingleGrammar(t),this._ensureGrammarCache.set(t,!0))}_doLoadSingleGrammar(t){let e=this._options.loadGrammar(t);if(e){let n=typeof this._options.getInjections=="function"?this._options.getInjections(t):void 0;this._syncRegistry.addGrammar(e,n)}}addGrammar(t,e=[],n=0,a=null){return this._syncRegistry.addGrammar(t,e),this._grammarForScopeName(t.scopeName,n,a)}_grammarForScopeName(t,e=0,n=null,a=null,r=null){return this._syncRegistry.grammarForScopeName(t,e,n,a,r)}},_p=fg.NULL;function yl(t,e){let n=typeof t=="string"?{}:{...t.colorReplacements},a=typeof t=="string"?t:t.name;for(let[r,i]of Object.entries(e?.colorReplacements||{}))typeof i=="string"?n[r]=i:r===a&&Object.assign(n,i);return n}function Na(t,e){return t&&(e?.[t?.toLowerCase()]||t)}function xv(t){return Array.isArray(t)?t:[t]}async function bg(t){return Promise.resolve(typeof t=="function"?t():t).then(e=>e.default||e)}function xl(t){return!t||["plaintext","txt","text","plain"].includes(t)}function kv(t){return t==="ansi"||xl(t)}function kl(t){return t==="none"}function wv(t){return kl(t)}function Os(t,e=!1){if(t.length===0)return[["",0]];let n=t.split(/(\r?\n)/g),a=0,r=[];for(let i=0;i<n.length;i+=2){let s=e?n[i]+(n[i+1]||""):n[i];r.push([s,a]),a+=n[i].length,a+=n[i+1]?.length||0}return r}var fv={light:"#333333",dark:"#bbbbbb"},gv={light:"#fffffe",dark:"#1e1e1e"},bv="__shiki_resolved";function vp(t){if(t?.[bv])return t;let e={...t};e.tokenColors&&!e.settings&&(e.settings=e.tokenColors,delete e.tokenColors),e.type||="dark",e.colorReplacements={...e.colorReplacements},e.settings||=[];let{bg:n,fg:a}=e;if(!n||!a){let o=e.settings?e.settings.find(l=>!l.name&&!l.scope):void 0;o?.settings?.foreground&&(a=o.settings.foreground),o?.settings?.background&&(n=o.settings.background),!a&&e?.colors?.["editor.foreground"]&&(a=e.colors["editor.foreground"]),!n&&e?.colors?.["editor.background"]&&(n=e.colors["editor.background"]),a||(a=e.type==="light"?fv.light:fv.dark),n||(n=e.type==="light"?gv.light:gv.dark),e.fg=a,e.bg=n}e.settings[0]&&e.settings[0].settings&&!e.settings[0].scope||e.settings.unshift({settings:{foreground:e.fg,background:e.bg}});let r=0,i=new Map;function s(o){if(i.has(o))return i.get(o);r+=1;let l=`#${r.toString(16).padStart(8,"0").toLowerCase()}`;return e.colorReplacements?.[`#${l}`]?s(o):(i.set(o,l),l)}e.settings=e.settings.map(o=>{let l=o.settings?.foreground&&!o.settings.foreground.startsWith("#"),c=o.settings?.background&&!o.settings.background.startsWith("#");if(!l&&!c)return o;let u={...o,settings:{...o.settings}};if(l){let p=s(o.settings.foreground);e.colorReplacements[p]=o.settings.foreground,u.settings.foreground=p}if(c){let p=s(o.settings.background);e.colorReplacements[p]=o.settings.background,u.settings.background=p}return u});for(let o of Object.keys(e.colors||{}))if((o==="editor.foreground"||o==="editor.background"||o.startsWith("terminal.ansi"))&&!e.colors[o]?.startsWith("#")){let l=s(e.colors[o]);e.colorReplacements[l]=e.colors[o],e.colors[o]=l}return Object.defineProperty(e,bv,{enumerable:!1,writable:!1,value:!0}),e}async function _v(t){return Array.from(new Set((await Promise.all(t.filter(e=>!kv(e)).map(async e=>await bg(e).then(n=>Array.isArray(n)?n:[n])))).flat()))}async function vv(t){return(await Promise.all(t.map(async e=>wv(e)?null:vp(await bg(e))))).filter(e=>!!e)}function $v(t,e){if(!e)return t;if(e[t]){let n=new Set([t]);for(;e[t];){if(t=e[t],n.has(t))throw new Ne(`Circular alias \`${Array.from(n).join(" -> ")} -> ${t}\``);n.add(t)}}return t}var sN=class extends hv{_resolvedThemes=new Map;_resolvedGrammars=new Map;_langMap=new Map;_langGraph=new Map;_textmateThemeCache=new WeakMap;_loadedThemesCache=null;_loadedLanguagesCache=null;constructor(t,e,n,a={}){super(t),this._resolver=t,this._themes=e,this._langs=n,this._alias=a,this._themes.map(r=>this.loadTheme(r)),this.loadLanguages(this._langs)}getTheme(t){return typeof t=="string"?this._resolvedThemes.get(t):this.loadTheme(t)}loadTheme(t){let e=vp(t);return e.name&&(this._resolvedThemes.set(e.name,e),this._loadedThemesCache=null),e}getLoadedThemes(){return this._loadedThemesCache||(this._loadedThemesCache=[...this._resolvedThemes.keys()]),this._loadedThemesCache}setTheme(t){let e=this._textmateThemeCache.get(t);e||(e=dl.createFromRawTheme(t),this._textmateThemeCache.set(t,e)),this._syncRegistry.setTheme(e)}getGrammar(t){return t=$v(t,this._alias),this._resolvedGrammars.get(t)}loadLanguage(t){if(this.getGrammar(t.name))return;let e=new Set([...this._langMap.values()].filter(r=>r.embeddedLangsLazy?.includes(t.name)));this._resolver.addLanguage(t);let n={balancedBracketSelectors:t.balancedBracketSelectors||["*"],unbalancedBracketSelectors:t.unbalancedBracketSelectors||[]};this._syncRegistry._rawGrammars.set(t.scopeName,t);let a=this.loadGrammarWithConfiguration(t.scopeName,1,n);if(a.name=t.name,this._resolvedGrammars.set(t.name,a),t.aliases&&t.aliases.forEach(r=>{this._alias[r]=t.name}),this._loadedLanguagesCache=null,e.size)for(let r of e)this._resolvedGrammars.delete(r.name),this._loadedLanguagesCache=null,this._syncRegistry?._injectionGrammars?.delete(r.scopeName),this._syncRegistry?._grammars?.delete(r.scopeName),this.loadLanguage(this._langMap.get(r.name))}dispose(){super.dispose(),this._resolvedThemes.clear(),this._resolvedGrammars.clear(),this._langMap.clear(),this._langGraph.clear(),this._loadedThemesCache=null}loadLanguages(t){for(let a of t)this.resolveEmbeddedLanguages(a);let e=Array.from(this._langGraph.entries()),n=e.filter(([a,r])=>!r);if(n.length){let a=e.filter(([r,i])=>i?(i.embeddedLanguages||i.embeddedLangs)?.some(s=>n.map(([o])=>o).includes(s)):!1).filter(r=>!n.includes(r));throw new Ne(`Missing languages ${n.map(([r])=>`\`${r}\``).join(", ")}, required by ${a.map(([r])=>`\`${r}\``).join(", ")}`)}for(let[a,r]of e)this._resolver.addLanguage(r);for(let[a,r]of e)this.loadLanguage(r)}getLoadedLanguages(){return this._loadedLanguagesCache||(this._loadedLanguagesCache=[...new Set([...this._resolvedGrammars.keys(),...Object.keys(this._alias)])]),this._loadedLanguagesCache}resolveEmbeddedLanguages(t){this._langMap.set(t.name,t),this._langGraph.set(t.name,t);let e=t.embeddedLanguages??t.embeddedLangs;if(e)for(let n of e)this._langGraph.set(n,this._langMap.get(n))}},oN=class{_langs=new Map;_scopeToLang=new Map;_injections=new Map;_onigLib;constructor(t,e){this._onigLib={createOnigScanner:n=>t.createScanner(n),createOnigString:n=>t.createString(n)},e.forEach(n=>this.addLanguage(n))}get onigLib(){return this._onigLib}getLangRegistration(t){return this._langs.get(t)}loadGrammar(t){return this._scopeToLang.get(t)}addLanguage(t){this._langs.set(t.name,t),t.aliases&&t.aliases.forEach(e=>{this._langs.set(e,t)}),this._scopeToLang.set(t.scopeName,t),t.injectTo&&t.injectTo.forEach(e=>{this._injections.get(e)||this._injections.set(e,[]),this._injections.get(e).push(t.scopeName)})}getInjections(t){let e=t.split("."),n=[];for(let a=1;a<=e.length;a++){let r=e.slice(0,a).join(".");n=[...n,...this._injections.get(r)||[]]}return n}},bl=0;function yg(t){bl+=1,t.warnings!==!1&&bl>=10&&bl%10===0&&console.warn(`[Shiki] ${bl} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \`highlighter.dispose()\` to release unused instances.`);let e=!1;if(!t.engine)throw new Ne("`engine` option is required for synchronous mode");let n=(t.langs||[]).flat(1),a=(t.themes||[]).flat(1).map(vp),r=new sN(new oN(t.engine,n),a,n,t.langAlias),i;function s(_){return $v(_,t.langAlias)}function o(_){y();let $=r.getGrammar(typeof _=="string"?_:_.name);if(!$)throw new Ne(`Language \`${_}\` not found, you may need to load it first`);return $}function l(_){if(_==="none")return{bg:"",fg:"",name:"none",settings:[],type:"dark"};y();let $=r.getTheme(_);if(!$)throw new Ne(`Theme \`${_}\` not found, you may need to load it first`);return $}function c(_){y();let $=l(_);return i!==_&&(r.setTheme($),i=_),{theme:$,colorMap:r.getColorMap()}}function u(){return y(),r.getLoadedThemes()}function p(){return y(),r.getLoadedLanguages()}function d(..._){y(),r.loadLanguages(_.flat(1))}async function m(..._){return d(await _v(_))}function h(..._){y();for(let $ of _.flat(1))r.loadTheme($)}async function b(..._){return y(),h(await vv(_))}function y(){if(e)throw new Ne("Shiki instance has been disposed")}function k(){e||(e=!0,r.dispose(),bl-=1)}return{setTheme:c,getTheme:l,getLanguage:o,getLoadedThemes:u,getLoadedLanguages:p,resolveLangAlias:s,loadLanguage:m,loadLanguageSync:d,loadTheme:b,loadThemeSync:h,dispose:k,[Symbol.dispose]:k}}async function xg(t){t.engine||console.warn("`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.");let[e,n,a]=await Promise.all([vv(t.themes||[]),_v(t.langs||[]),t.engine]);return yg({...t,themes:e,langs:n,engine:a})}var Cv=new WeakMap;function wl(t,e){Cv.set(t,e)}function Bs(t){return Cv.get(t)}var $p=class jv{_stacks={};lang;get themes(){return Object.keys(this._stacks)}get theme(){return this.themes[0]}get _stack(){return this._stacks[this.theme]}static initial(e,n){return new jv(Object.fromEntries(xv(n).map(a=>[a,_p])),e)}constructor(...e){if(e.length===2){let[n,a]=e;this.lang=a,this._stacks=n}else{let[n,a,r]=e;this.lang=a,this._stacks={[r]:n}}}getInternalStack(e=this.theme){return this._stacks[e]}getScopes(e=this.theme){return lN(this._stacks[e])}toJSON(){return{lang:this.lang,theme:this.theme,themes:this.themes,scopes:this.getScopes()}}};function lN(t){let e=[],n=new Set;function a(r){if(n.has(r))return;n.add(r);let i=r?.nameScopesList?.scopeName;i&&e.push(i),r.parent&&a(r.parent)}return a(t),e}function cN(t,e){if(!(t instanceof $p))throw new Ne("Invalid grammar state");return t.getInternalStack(e)}function kg(t,e,n={}){let{theme:a=t.getLoadedThemes()[0]}=n;if(xl(t.resolveLangAlias(n.lang||"text"))||kl(a))return Os(e).map(o=>[{content:o[0],offset:o[1]}]);let{theme:r,colorMap:i}=t.setTheme(a),s=t.getLanguage(n.lang||"text");if(n.grammarState){if(n.grammarState.lang!==s.name)throw new Ne(`Grammar state language "${n.grammarState.lang}" does not match highlight language "${s.name}"`);if(!n.grammarState.themes.includes(r.name))throw new Ne(`Grammar state themes "${n.grammarState.themes}" do not contain highlight theme "${r.name}"`)}return Ev(e,s,r,i,n)}function Sv(...t){if(t.length===2)return Bs(t[1]);let[e,n,a={}]=t,{lang:r="text",theme:i=e.getLoadedThemes()[0]}=a;if(xl(r)||kl(i))throw new Ne("Plain language does not have grammar state");if(r==="ansi")throw new Ne("ANSI language does not have grammar state");let{theme:s,colorMap:o}=e.setTheme(i),l=e.getLanguage(r);return new $p(wg(n,l,s,o,a).stateStack,l.name,s.name)}function Ev(t,e,n,a,r){let i=wg(t,e,n,a,r),s=new $p(i.stateStack,e.name,n.name);return wl(i.tokens,s),i.tokens}function wg(t,e,n,a,r){let i=yl(n,r),{tokenizeMaxLineLength:s=0,tokenizeTimeLimit:o=500}=r,l=Os(t),c=r.grammarState?cN(r.grammarState,n.name)??_p:r.grammarContextCode!=null?wg(r.grammarContextCode,e,n,a,{...r,grammarState:void 0,grammarContextCode:void 0}).stateStack:_p,u=[],p=[];for(let d=0,m=l.length;d<m;d++){let[h,b]=l[d];if(h===""){u=[],p.push([]);continue}if(s>0&&h.length>=s){u=[],p.push([{content:h,offset:b,color:"",fontStyle:0}]);continue}let y,k,_;r.includeExplanation&&(y=e.tokenizeLine(h,c,o),k=y.tokens,_=0);let $=e.tokenizeLine2(h,c,o),M=$.tokens.length/2;for(let N=0;N<M;N++){let E=$.tokens[2*N],I=N+1<M?$.tokens[2*N+2]:h.length;if(E===I)continue;let F=$.tokens[2*N+1],L=Na(a[fi.getForeground(F)],i),T=fi.getFontStyle(F),ce={content:h.substring(E,I),offset:b+E,color:L,fontStyle:T};if(r.includeExplanation){let Y=[];if(r.includeExplanation!=="scopeName")for(let J of n.settings){let ee;switch(typeof J.scope){case"string":ee=J.scope.split(/,/).map(ke=>ke.trim());break;case"object":ee=J.scope;break;default:continue}Y.push({settings:J,selectors:ee.map(ke=>ke.split(/ /))})}ce.explanation=[];let K=0;for(;E+K<I;){let J=k[_],ee=h.substring(J.startIndex,J.endIndex);K+=ee.length,ce.explanation.push({content:ee,scopes:r.includeExplanation==="scopeName"?uN(J.scopes):pN(Y,J.scopes)}),_+=1}}u.push(ce)}p.push(u),u=[],c=$.ruleStack}return{tokens:p,stateStack:c}}function uN(t){return t.map(e=>({scopeName:e}))}function pN(t,e){let n=[];for(let a=0,r=e.length;a<r;a++){let i=e[a];n[a]={scopeName:i,themeMatches:mN(t,i,e.slice(0,a))}}return n}function yv(t,e){return t===e||e.substring(0,t.length)===t&&e[t.length]==="."}function dN(t,e,n){if(!yv(t[t.length-1],e))return!1;let a=t.length-2,r=n.length-1;for(;a>=0&&r>=0;)yv(t[a],n[r])&&(a-=1),r-=1;return a===-1}function mN(t,e,n){let a=[];for(let{selectors:r,settings:i}of t)for(let s of r)if(dN(s,e,n)){a.push(i);break}return a}function Cp(t,e,n,a=kg){let r=Object.entries(n.themes).filter(c=>c[1]).map(c=>({color:c[0],theme:c[1]})),i=r.map(c=>{let u=a(t,e,{...n,theme:c.theme});return{tokens:u,state:Bs(u),theme:typeof c.theme=="string"?c.theme:c.theme.name}}),s=hN(...i.map(c=>c.tokens)),o=s[0].map((c,u)=>c.map((p,d)=>{let m={content:p.content,variants:{},offset:p.offset};return"includeExplanation"in n&&n.includeExplanation&&(m.explanation=p.explanation),s.forEach((h,b)=>{let{content:y,explanation:k,offset:_,...$}=h[u][d];m.variants[r[b].color]=$}),m})),l=i[0].state?new $p(Object.fromEntries(i.map(c=>[c.theme,c.state?.getInternalStack(c.theme)])),i[0].state.lang):void 0;return l&&wl(o,l),o}function hN(...t){let e=t.map(()=>[]),n=t.length;for(let a=0;a<t[0].length;a++){let r=t.map(l=>l[a]),i=e.map(()=>[]);e.forEach((l,c)=>l.push(i[c]));let s=r.map(()=>0),o=r.map(l=>l[0]);for(;o.every(l=>l);){let l=Math.min(...o.map(c=>c.content.length));for(let c=0;c<n;c++){let u=o[c];u.content.length===l?(i[c].push(u),s[c]+=1,o[c]=r[c][s[c]]):(i[c].push({...u,content:u.content.slice(0,l)}),o[c]={...u,content:u.content.slice(l),offset:u.offset+l})}}}return e}var Av=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","keygen","link","meta","param","source","track","wbr"];var Ia=class{constructor(e,n,a){this.normal=n,this.property=e,a&&(this.space=a)}};Ia.prototype.normal={};Ia.prototype.property={};Ia.prototype.space=void 0;function _g(t,e){let n={},a={};for(let r of t)Object.assign(n,r.property),Object.assign(a,r.normal);return new Ia(n,a,e)}function _l(t){return t.toLowerCase()}var ut=class{constructor(e,n){this.attribute=n,this.property=e}};ut.prototype.attribute="";ut.prototype.booleanish=!1;ut.prototype.boolean=!1;ut.prototype.commaOrSpaceSeparated=!1;ut.prototype.commaSeparated=!1;ut.prototype.defined=!1;ut.prototype.mustUseProperty=!1;ut.prototype.number=!1;ut.prototype.overloadedBoolean=!1;ut.prototype.property="";ut.prototype.spaceSeparated=!1;ut.prototype.space=void 0;var vl={};kb(vl,{boolean:()=>de,booleanish:()=>Ge,commaOrSpaceSeparated:()=>Ut,commaSeparated:()=>fr,number:()=>P,overloadedBoolean:()=>jp,spaceSeparated:()=>Ee});var fN=0,de=gi(),Ge=gi(),jp=gi(),P=gi(),Ee=gi(),fr=gi(),Ut=gi();function gi(){return 2**++fN}var vg=Object.keys(vl),bi=class extends ut{constructor(e,n,a,r){let i=-1;if(super(e,n),Tv(this,"space",r),typeof a=="number")for(;++i<vg.length;){let s=vg[i];Tv(this,vg[i],(a&vl[s])===vl[s])}}};bi.prototype.defined=!0;function Tv(t,e,n){n&&(t[e]=n)}function jn(t){let e={},n={};for(let[a,r]of Object.entries(t.properties)){let i=new bi(a,t.transform(t.attributes||{},a),r,t.space);t.mustUseProperty&&t.mustUseProperty.includes(a)&&(i.mustUseProperty=!0),e[a]=i,n[_l(a)]=a,n[_l(i.attribute)]=a}return new Ia(e,n,t.space)}var $g=jn({properties:{ariaActiveDescendant:null,ariaAtomic:Ge,ariaAutoComplete:null,ariaBusy:Ge,ariaChecked:Ge,ariaColCount:P,ariaColIndex:P,ariaColSpan:P,ariaControls:Ee,ariaCurrent:null,ariaDescribedBy:Ee,ariaDetails:null,ariaDisabled:Ge,ariaDropEffect:Ee,ariaErrorMessage:null,ariaExpanded:Ge,ariaFlowTo:Ee,ariaGrabbed:Ge,ariaHasPopup:null,ariaHidden:Ge,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Ee,ariaLevel:P,ariaLive:null,ariaModal:Ge,ariaMultiLine:Ge,ariaMultiSelectable:Ge,ariaOrientation:null,ariaOwns:Ee,ariaPlaceholder:null,ariaPosInSet:P,ariaPressed:Ge,ariaReadOnly:Ge,ariaRelevant:null,ariaRequired:Ge,ariaRoleDescription:Ee,ariaRowCount:P,ariaRowIndex:P,ariaRowSpan:P,ariaSelected:Ge,ariaSetSize:P,ariaSort:null,ariaValueMax:P,ariaValueMin:P,ariaValueNow:P,ariaValueText:null,role:null},transform(t,e){return e==="role"?e:"aria-"+e.slice(4).toLowerCase()}});function Sp(t,e){return e in t?t[e]:e}function Ep(t,e){return Sp(t,e.toLowerCase())}var Mv=jn({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:fr,acceptCharset:Ee,accessKey:Ee,action:null,allow:null,allowFullScreen:de,allowPaymentRequest:de,allowUserMedia:de,alt:null,as:null,async:de,autoCapitalize:null,autoComplete:Ee,autoFocus:de,autoPlay:de,blocking:Ee,capture:null,charSet:null,checked:de,cite:null,className:Ee,cols:P,colSpan:null,content:null,contentEditable:Ge,controls:de,controlsList:Ee,coords:P|fr,crossOrigin:null,data:null,dateTime:null,decoding:null,default:de,defer:de,dir:null,dirName:null,disabled:de,download:jp,draggable:Ge,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:de,formTarget:null,headers:Ee,height:P,hidden:jp,high:P,href:null,hrefLang:null,htmlFor:Ee,httpEquiv:Ee,id:null,imageSizes:null,imageSrcSet:null,inert:de,inputMode:null,integrity:null,is:null,isMap:de,itemId:null,itemProp:Ee,itemRef:Ee,itemScope:de,itemType:Ee,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:de,low:P,manifest:null,max:null,maxLength:P,media:null,method:null,min:null,minLength:P,multiple:de,muted:de,name:null,nonce:null,noModule:de,noValidate:de,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:de,optimum:P,pattern:null,ping:Ee,placeholder:null,playsInline:de,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:de,referrerPolicy:null,rel:Ee,required:de,reversed:de,rows:P,rowSpan:P,sandbox:Ee,scope:null,scoped:de,seamless:de,selected:de,shadowRootClonable:de,shadowRootDelegatesFocus:de,shadowRootMode:null,shape:null,size:P,sizes:null,slot:null,span:P,spellCheck:Ge,src:null,srcDoc:null,srcLang:null,srcSet:null,start:P,step:null,style:null,tabIndex:P,target:null,title:null,translate:null,type:null,typeMustMatch:de,useMap:null,value:Ge,width:P,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Ee,axis:null,background:null,bgColor:null,border:P,borderColor:null,bottomMargin:P,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:de,declare:de,event:null,face:null,frame:null,frameBorder:null,hSpace:P,leftMargin:P,link:null,longDesc:null,lowSrc:null,marginHeight:P,marginWidth:P,noResize:de,noHref:de,noShade:de,noWrap:de,object:null,profile:null,prompt:null,rev:null,rightMargin:P,rules:null,scheme:null,scrolling:Ge,standby:null,summary:null,text:null,topMargin:P,valueType:null,version:null,vAlign:null,vLink:null,vSpace:P,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:de,disableRemotePlayback:de,prefix:null,property:null,results:P,security:null,unselectable:null},space:"html",transform:Ep});var Nv=jn({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Ut,accentHeight:P,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:P,amplitude:P,arabicForm:null,ascent:P,attributeName:null,attributeType:null,azimuth:P,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:P,by:null,calcMode:null,capHeight:P,className:Ee,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:P,diffuseConstant:P,direction:null,display:null,dur:null,divisor:P,dominantBaseline:null,download:de,dx:null,dy:null,edgeMode:null,editable:null,elevation:P,enableBackground:null,end:null,event:null,exponent:P,externalResourcesRequired:null,fill:null,fillOpacity:P,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:fr,g2:fr,glyphName:fr,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:P,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:P,horizOriginX:P,horizOriginY:P,id:null,ideographic:P,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:P,k:P,k1:P,k2:P,k3:P,k4:P,kernelMatrix:Ut,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:P,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:P,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:P,overlineThickness:P,paintOrder:null,panose1:null,path:null,pathLength:P,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Ee,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:P,pointsAtY:P,pointsAtZ:P,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Ut,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Ut,rev:Ut,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Ut,requiredFeatures:Ut,requiredFonts:Ut,requiredFormats:Ut,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:P,specularExponent:P,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:P,strikethroughThickness:P,string:null,stroke:null,strokeDashArray:Ut,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:P,strokeOpacity:P,strokeWidth:null,style:null,surfaceScale:P,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Ut,tabIndex:P,tableValues:null,target:null,targetX:P,targetY:P,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Ut,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:P,underlineThickness:P,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:P,values:null,vAlphabetic:P,vMathematical:P,vectorEffect:null,vHanging:P,vIdeographic:P,version:null,vertAdvY:P,vertOriginX:P,vertOriginY:P,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:P,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:Sp});var Cg=jn({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(t,e){return"xlink:"+e.slice(5).toLowerCase()}});var jg=jn({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:Ep});var Sg=jn({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(t,e){return"xml:"+e.slice(3).toLowerCase()}});var gN=/[A-Z]/g,Iv=/-[a-z]/g,bN=/^data[-\w.:]+$/i;function Eg(t,e){let n=_l(e),a=e,r=ut;if(n in t.normal)return t.property[t.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&bN.test(e)){if(e.charAt(4)==="-"){let i=e.slice(5).replace(Iv,xN);a="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{let i=e.slice(4);if(!Iv.test(i)){let s=i.replace(gN,yN);s.charAt(0)!=="-"&&(s="-"+s),e="data"+s}}r=bi}return new r(a,e)}function yN(t){return"-"+t.toLowerCase()}function xN(t){return t.charAt(1).toUpperCase()}var Rv=_g([$g,Mv,Cg,jg,Sg],"html"),Ap=_g([$g,Nv,Cg,jg,Sg],"svg");var kN=/["&'<>`]/g,wN=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,_N=/[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,vN=/[|\\{}()[\]^$+*?.]/g,zv=new WeakMap;function Ov(t,e){if(t=t.replace(e.subset?$N(e.subset):kN,a),e.subset||e.escapeOnly)return t;return t.replace(wN,n).replace(_N,a);function n(r,i,s){return e.format((r.charCodeAt(0)-55296)*1024+r.charCodeAt(1)-56320+65536,s.charCodeAt(i+2),e)}function a(r,i,s){return e.format(r.charCodeAt(0),s.charCodeAt(i+1),e)}}function $N(t){let e=zv.get(t);return e||(e=CN(t),zv.set(t,e)),e}function CN(t){let e=[],n=-1;for(;++n<t.length;)e.push(t[n].replace(vN,"\\$&"));return new RegExp("(?:"+e.join("|")+")","g")}var jN=/[\dA-Fa-f]/;function Bv(t,e,n){let a="&#x"+t.toString(16).toUpperCase();return n&&e&&!jN.test(String.fromCharCode(e))?a:a+";"}var SN=/\d/;function Lv(t,e,n){let a="&#"+String(t);return n&&e&&!SN.test(String.fromCharCode(e))?a:a+";"}var Dv=["AElig","AMP","Aacute","Acirc","Agrave","Aring","Atilde","Auml","COPY","Ccedil","ETH","Eacute","Ecirc","Egrave","Euml","GT","Iacute","Icirc","Igrave","Iuml","LT","Ntilde","Oacute","Ocirc","Ograve","Oslash","Otilde","Ouml","QUOT","REG","THORN","Uacute","Ucirc","Ugrave","Uuml","Yacute","aacute","acirc","acute","aelig","agrave","amp","aring","atilde","auml","brvbar","ccedil","cedil","cent","copy","curren","deg","divide","eacute","ecirc","egrave","eth","euml","frac12","frac14","frac34","gt","iacute","icirc","iexcl","igrave","iquest","iuml","laquo","lt","macr","micro","middot","nbsp","not","ntilde","oacute","ocirc","ograve","ordf","ordm","oslash","otilde","ouml","para","plusmn","pound","quot","raquo","reg","sect","shy","sup1","sup2","sup3","szlig","thorn","times","uacute","ucirc","ugrave","uml","uuml","yacute","yen","yuml"];var Tp={nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",Agrave:"\xC0",Aacute:"\xC1",Acirc:"\xC2",Atilde:"\xC3",Auml:"\xC4",Aring:"\xC5",AElig:"\xC6",Ccedil:"\xC7",Egrave:"\xC8",Eacute:"\xC9",Ecirc:"\xCA",Euml:"\xCB",Igrave:"\xCC",Iacute:"\xCD",Icirc:"\xCE",Iuml:"\xCF",ETH:"\xD0",Ntilde:"\xD1",Ograve:"\xD2",Oacute:"\xD3",Ocirc:"\xD4",Otilde:"\xD5",Ouml:"\xD6",times:"\xD7",Oslash:"\xD8",Ugrave:"\xD9",Uacute:"\xDA",Ucirc:"\xDB",Uuml:"\xDC",Yacute:"\xDD",THORN:"\xDE",szlig:"\xDF",agrave:"\xE0",aacute:"\xE1",acirc:"\xE2",atilde:"\xE3",auml:"\xE4",aring:"\xE5",aelig:"\xE6",ccedil:"\xE7",egrave:"\xE8",eacute:"\xE9",ecirc:"\xEA",euml:"\xEB",igrave:"\xEC",iacute:"\xED",icirc:"\xEE",iuml:"\xEF",eth:"\xF0",ntilde:"\xF1",ograve:"\xF2",oacute:"\xF3",ocirc:"\xF4",otilde:"\xF5",ouml:"\xF6",divide:"\xF7",oslash:"\xF8",ugrave:"\xF9",uacute:"\xFA",ucirc:"\xFB",uuml:"\xFC",yacute:"\xFD",thorn:"\xFE",yuml:"\xFF",fnof:"\u0192",Alpha:"\u0391",Beta:"\u0392",Gamma:"\u0393",Delta:"\u0394",Epsilon:"\u0395",Zeta:"\u0396",Eta:"\u0397",Theta:"\u0398",Iota:"\u0399",Kappa:"\u039A",Lambda:"\u039B",Mu:"\u039C",Nu:"\u039D",Xi:"\u039E",Omicron:"\u039F",Pi:"\u03A0",Rho:"\u03A1",Sigma:"\u03A3",Tau:"\u03A4",Upsilon:"\u03A5",Phi:"\u03A6",Chi:"\u03A7",Psi:"\u03A8",Omega:"\u03A9",alpha:"\u03B1",beta:"\u03B2",gamma:"\u03B3",delta:"\u03B4",epsilon:"\u03B5",zeta:"\u03B6",eta:"\u03B7",theta:"\u03B8",iota:"\u03B9",kappa:"\u03BA",lambda:"\u03BB",mu:"\u03BC",nu:"\u03BD",xi:"\u03BE",omicron:"\u03BF",pi:"\u03C0",rho:"\u03C1",sigmaf:"\u03C2",sigma:"\u03C3",tau:"\u03C4",upsilon:"\u03C5",phi:"\u03C6",chi:"\u03C7",psi:"\u03C8",omega:"\u03C9",thetasym:"\u03D1",upsih:"\u03D2",piv:"\u03D6",bull:"\u2022",hellip:"\u2026",prime:"\u2032",Prime:"\u2033",oline:"\u203E",frasl:"\u2044",weierp:"\u2118",image:"\u2111",real:"\u211C",trade:"\u2122",alefsym:"\u2135",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193",harr:"\u2194",crarr:"\u21B5",lArr:"\u21D0",uArr:"\u21D1",rArr:"\u21D2",dArr:"\u21D3",hArr:"\u21D4",forall:"\u2200",part:"\u2202",exist:"\u2203",empty:"\u2205",nabla:"\u2207",isin:"\u2208",notin:"\u2209",ni:"\u220B",prod:"\u220F",sum:"\u2211",minus:"\u2212",lowast:"\u2217",radic:"\u221A",prop:"\u221D",infin:"\u221E",ang:"\u2220",and:"\u2227",or:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",there4:"\u2234",sim:"\u223C",cong:"\u2245",asymp:"\u2248",ne:"\u2260",equiv:"\u2261",le:"\u2264",ge:"\u2265",sub:"\u2282",sup:"\u2283",nsub:"\u2284",sube:"\u2286",supe:"\u2287",oplus:"\u2295",otimes:"\u2297",perp:"\u22A5",sdot:"\u22C5",lceil:"\u2308",rceil:"\u2309",lfloor:"\u230A",rfloor:"\u230B",lang:"\u2329",rang:"\u232A",loz:"\u25CA",spades:"\u2660",clubs:"\u2663",hearts:"\u2665",diams:"\u2666",quot:'"',amp:"&",lt:"<",gt:">",OElig:"\u0152",oelig:"\u0153",Scaron:"\u0160",scaron:"\u0161",Yuml:"\u0178",circ:"\u02C6",tilde:"\u02DC",ensp:"\u2002",emsp:"\u2003",thinsp:"\u2009",zwnj:"\u200C",zwj:"\u200D",lrm:"\u200E",rlm:"\u200F",ndash:"\u2013",mdash:"\u2014",lsquo:"\u2018",rsquo:"\u2019",sbquo:"\u201A",ldquo:"\u201C",rdquo:"\u201D",bdquo:"\u201E",dagger:"\u2020",Dagger:"\u2021",permil:"\u2030",lsaquo:"\u2039",rsaquo:"\u203A",euro:"\u20AC"};var Fv=["cent","copy","divide","gt","lt","not","para","times"];var qv={}.hasOwnProperty,Ag={},Mp;for(Mp in Tp)qv.call(Tp,Mp)&&(Ag[Tp[Mp]]=Mp);var EN=/[^\dA-Za-z]/;function Pv(t,e,n,a){let r=String.fromCharCode(t);if(qv.call(Ag,r)){let i=Ag[r],s="&"+i;return n&&Dv.includes(i)&&!Fv.includes(i)&&(!a||e&&e!==61&&EN.test(String.fromCharCode(e)))?s:s+";"}return""}function Gv(t,e,n){let a=Bv(t,e,n.omitOptionalSemicolons),r;if((n.useNamedReferences||n.useShortestReferences)&&(r=Pv(t,e,n.omitOptionalSemicolons,n.attribute)),(n.useShortestReferences||!r)&&n.useShortestReferences){let i=Lv(t,e,n.omitOptionalSemicolons);i.length<a.length&&(a=i)}return r&&(!n.useShortestReferences||r.length<a.length)?r:a}function Ra(t,e){return Ov(t,Object.assign({format:Gv},e))}var AN=/^>|^->|<!--|-->|--!>|<!-$/g,TN=[">"],MN=["<",">"];function Hv(t,e,n,a){return a.settings.bogusComments?"<?"+Ra(t.value,Object.assign({},a.settings.characterReferences,{subset:TN}))+">":"<!--"+t.value.replace(AN,r)+"-->";function r(i){return Ra(i,Object.assign({},a.settings.characterReferences,{subset:MN}))}}function Vv(t,e,n,a){return"<!"+(a.settings.upperDoctype?"DOCTYPE":"doctype")+(a.settings.tightDoctype?"":" ")+"html>"}function Wv(t,e){let n=e||{};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}function Uv(t){return t.join(" ").trim()}var NN=/[ \t\n\f\r]/g;function yi(t){return typeof t=="object"?t.type==="text"?Kv(t.value):!1:Kv(t)}function Kv(t){return t.replace(NN,"")===""}var Ue=Xv(1),Tg=Xv(-1),IN=[];function Xv(t){return e;function e(n,a,r){let i=n?n.children:IN,s=(a||0)+t,o=i[s];if(!r)for(;o&&yi(o);)s+=t,o=i[s];return o}}var RN={}.hasOwnProperty;function Np(t){return e;function e(n,a,r){return RN.call(t,n.tagName)&&t[n.tagName](n,a,r)}}var $l=Np({body:ON,caption:Mg,colgroup:Mg,dd:FN,dt:DN,head:Mg,html:zN,li:LN,optgroup:qN,option:PN,p:BN,rp:Zv,rt:Zv,tbody:HN,td:Jv,tfoot:VN,th:Jv,thead:GN,tr:WN});function Mg(t,e,n){let a=Ue(n,e,!0);return!a||a.type!=="comment"&&!(a.type==="text"&&yi(a.value.charAt(0)))}function zN(t,e,n){let a=Ue(n,e);return!a||a.type!=="comment"}function ON(t,e,n){let a=Ue(n,e);return!a||a.type!=="comment"}function BN(t,e,n){let a=Ue(n,e);return a?a.type==="element"&&(a.tagName==="address"||a.tagName==="article"||a.tagName==="aside"||a.tagName==="blockquote"||a.tagName==="details"||a.tagName==="div"||a.tagName==="dl"||a.tagName==="fieldset"||a.tagName==="figcaption"||a.tagName==="figure"||a.tagName==="footer"||a.tagName==="form"||a.tagName==="h1"||a.tagName==="h2"||a.tagName==="h3"||a.tagName==="h4"||a.tagName==="h5"||a.tagName==="h6"||a.tagName==="header"||a.tagName==="hgroup"||a.tagName==="hr"||a.tagName==="main"||a.tagName==="menu"||a.tagName==="nav"||a.tagName==="ol"||a.tagName==="p"||a.tagName==="pre"||a.tagName==="section"||a.tagName==="table"||a.tagName==="ul"):!n||!(n.type==="element"&&(n.tagName==="a"||n.tagName==="audio"||n.tagName==="del"||n.tagName==="ins"||n.tagName==="map"||n.tagName==="noscript"||n.tagName==="video"))}function LN(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&a.tagName==="li"}function DN(t,e,n){let a=Ue(n,e);return!!(a&&a.type==="element"&&(a.tagName==="dt"||a.tagName==="dd"))}function FN(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="dt"||a.tagName==="dd")}function Zv(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="rp"||a.tagName==="rt")}function qN(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&a.tagName==="optgroup"}function PN(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="option"||a.tagName==="optgroup")}function GN(t,e,n){let a=Ue(n,e);return!!(a&&a.type==="element"&&(a.tagName==="tbody"||a.tagName==="tfoot"))}function HN(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="tbody"||a.tagName==="tfoot")}function VN(t,e,n){return!Ue(n,e)}function WN(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&a.tagName==="tr"}function Jv(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="td"||a.tagName==="th")}var Yv=Np({body:XN,colgroup:ZN,head:KN,html:UN,tbody:JN});function UN(t){let e=Ue(t,-1);return!e||e.type!=="comment"}function KN(t){let e=new Set;for(let a of t.children)if(a.type==="element"&&(a.tagName==="base"||a.tagName==="title")){if(e.has(a.tagName))return!1;e.add(a.tagName)}let n=t.children[0];return!n||n.type==="element"}function XN(t){let e=Ue(t,-1,!0);return!e||e.type!=="comment"&&!(e.type==="text"&&yi(e.value.charAt(0)))&&!(e.type==="element"&&(e.tagName==="meta"||e.tagName==="link"||e.tagName==="script"||e.tagName==="style"||e.tagName==="template"))}function ZN(t,e,n){let a=Tg(n,e),r=Ue(t,-1,!0);return n&&a&&a.type==="element"&&a.tagName==="colgroup"&&$l(a,n.children.indexOf(a),n)?!1:!!(r&&r.type==="element"&&r.tagName==="col")}function JN(t,e,n){let a=Tg(n,e),r=Ue(t,-1);return n&&a&&a.type==="element"&&(a.tagName==="thead"||a.tagName==="tbody")&&$l(a,n.children.indexOf(a),n)?!1:!!(r&&r.type==="element"&&r.tagName==="tr")}var Ip={name:[[` +$$`:`$${t}$`)}</code>`;try{return D_.renderToString(t,{displayMode:e,throwOnError:!1,errorColor:n.errorColor||"#cc0000"})}catch{return`<code>${Hs(t)}</code>`}}function cv(t){return String(t||"").trim().replace(/\s+/g,"-").toLowerCase()}function yg(t,e){let n=String(t||"").trim(),a=cv(n);return{id:n,normalizedId:a,label:n,exists:e?nN(e,n,a):!0,referenceId:`fnref-${a}`,definitionId:`fn-${a}`,fallbackMarkdown:`[^${n}]`}}function nN(t,e,n){if(t.has(e))return!0;for(let a of t.keys())if(cv(a)===n)return!0;return!1}function xg(t,e={}){let n=t.toLowerCase();return(e.safeInlineHtmlTags||tN).includes(n)}function uv(t){return`<code class="safe-html-source">${Hs(t)}</code>`}function pv(t){let e=String(t||"").split(/\r?\n/),n=e[0]?.trim().match(/^\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)]\s*(.*)$/i);if(!n)return null;let a=n[1].toLowerCase(),r=n[2]?[n[2]]:[];return{type:a,label:n[1].toUpperCase(),body:[...r,...e.slice(1)].join(` +`).trim()}}var Ne=class extends Error{constructor(t){super(t),this.name="ShikiError"}};function aN(t){return Ag(t)}function Ag(t){return Array.isArray(t)?rN(t):t instanceof RegExp?t:typeof t=="object"?iN(t):t}function rN(t){let e=[];for(let n=0,a=t.length;n<a;n++)e[n]=Ag(t[n]);return e}function iN(t){let e={};for(let n in t)e[n]=Ag(t[n]);return e}function wv(t,...e){return e.forEach(n=>{for(let a in n)t[a]=n[a]}),t}function kv(t){let e=~t.lastIndexOf("/")||~t.lastIndexOf("\\");return e===0?t:~e===t.length-1?kv(t.substring(0,t.length-1)):t.substr(~e+1)}var wg=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g,$p=class{static hasCaptures(t){return t===null?!1:(wg.lastIndex=0,wg.test(t))}static replaceCaptures(t,e,n){return t.replace(wg,(a,r,i,s)=>{let o=n[parseInt(r||i,10)];if(o){let l=e.substring(o.start,o.end);for(;l[0]===".";)l=l.substring(1);switch(s){case"downcase":return l.toLowerCase();case"upcase":return l.toUpperCase();default:return l}}else return a})}};function _v(t,e){return t<e?-1:t>e?1:0}function vv(t,e){if(t===null&&e===null)return 0;if(!t)return-1;if(!e)return 1;let n=t.length,a=e.length;if(n===a){for(let r=0;r<n;r++){let i=_v(t[r],e[r]);if(i!==0)return i}return 0}return n-a}function dv(t){return!!(/^#[0-9a-f]{6}$/i.test(t)||/^#[0-9a-f]{8}$/i.test(t)||/^#[0-9a-f]{3}$/i.test(t)||/^#[0-9a-f]{4}$/i.test(t))}function $v(t){return t.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&")}var Cv=class{constructor(t){this.fn=t}cache=new Map;get(t){if(this.cache.has(t))return this.cache.get(t);let e=this.fn(t);return this.cache.set(t,e),e}},_l=class{constructor(t,e,n){this._colorMap=t,this._defaults=e,this._root=n}static createFromRawTheme(t,e){return this.createFromParsedTheme(lN(t),e)}static createFromParsedTheme(t,e){return uN(t,e)}_cachedMatchRoot=new Cv(t=>this._root.match(t));getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(t){if(t===null)return this._defaults;let e=t.scopeName,a=this._cachedMatchRoot.get(e).find(r=>sN(t.parent,r.parentScopes));return a?new jv(a.fontStyle,a.foreground,a.background):null}},kg=class Cp{constructor(e,n){this.parent=e,this.scopeName=n}static push(e,n){for(let a of n)e=new Cp(e,a);return e}static from(...e){let n=null;for(let a=0;a<e.length;a++)n=new Cp(n,e[a]);return n}push(e){return new Cp(this,e)}getSegments(){let e=this,n=[];for(;e;)n.push(e.scopeName),e=e.parent;return n.reverse(),n}toString(){return this.getSegments().join(" ")}extends(e){return this===e?!0:this.parent===null?!1:this.parent.extends(e)}getExtensionIfDefined(e){let n=[],a=this;for(;a&&a!==e;)n.push(a.scopeName),a=a.parent;return a===e?n.reverse():void 0}};function sN(t,e){if(e.length===0)return!0;for(let n=0;n<e.length;n++){let a=e[n],r=!1;if(a===">"){if(n===e.length-1)return!1;a=e[++n],r=!0}for(;t&&!oN(t.scopeName,a);){if(r)return!1;t=t.parent}if(!t)return!1;t=t.parent}return!0}function oN(t,e){return e===t||t.startsWith(e)&&t[e.length]==="."}var jv=class{constructor(t,e,n){this.fontStyle=t,this.foregroundId=e,this.backgroundId=n}};function lN(t){if(!t)return[];if(!t.settings||!Array.isArray(t.settings))return[];let e=t.settings,n=[],a=0;for(let r=0,i=e.length;r<i;r++){let s=e[r];if(!s.settings)continue;let o;if(typeof s.scope=="string"){let p=s.scope;p=p.replace(/^[,]+/,""),p=p.replace(/[,]+$/,""),o=p.split(",")}else Array.isArray(s.scope)?o=s.scope:o=[""];let l=-1;if(typeof s.settings.fontStyle=="string"){l=0;let p=s.settings.fontStyle.split(" ");for(let d=0,m=p.length;d<m;d++)switch(p[d]){case"italic":l=l|1;break;case"bold":l=l|2;break;case"underline":l=l|4;break;case"strikethrough":l=l|8;break}}let c=null;typeof s.settings.foreground=="string"&&dv(s.settings.foreground)&&(c=s.settings.foreground);let u=null;typeof s.settings.background=="string"&&dv(s.settings.background)&&(u=s.settings.background);for(let p=0,d=o.length;p<d;p++){let h=o[p].trim().split(" "),b=h[h.length-1],y=null;h.length>1&&(y=h.slice(0,h.length-1),y.reverse()),n[a++]=new cN(b,y,r,l,c,u)}}return n}var cN=class{constructor(t,e,n,a,r,i){this.scope=t,this.parentScopes=e,this.index=n,this.fontStyle=a,this.foreground=r,this.background=i}},vt=(t=>(t[t.NotSet=-1]="NotSet",t[t.None=0]="None",t[t.Italic=1]="Italic",t[t.Bold=2]="Bold",t[t.Underline=4]="Underline",t[t.Strikethrough=8]="Strikethrough",t))(vt||{});function uN(t,e){t.sort((l,c)=>{let u=_v(l.scope,c.scope);return u!==0||(u=vv(l.parentScopes,c.parentScopes),u!==0)?u:l.index-c.index});let n=0,a="#000000",r="#ffffff";for(;t.length>=1&&t[0].scope==="";){let l=t.shift();l.fontStyle!==-1&&(n=l.fontStyle),l.foreground!==null&&(a=l.foreground),l.background!==null&&(r=l.background)}let i=new pN(e),s=new jv(n,i.getId(a),i.getId(r)),o=new mN(new vg(0,null,-1,0,0),[]);for(let l=0,c=t.length;l<c;l++){let u=t[l];o.insert(0,u.scope,u.parentScopes,u.fontStyle,i.getId(u.foreground),i.getId(u.background))}return new _l(i,s,o)}var pN=class{_isFrozen;_lastColorId;_id2color;_color2id;constructor(t){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(t)){this._isFrozen=!0;for(let e=0,n=t.length;e<n;e++)this._color2id[t[e]]=e,this._id2color[e]=t[e]}else this._isFrozen=!1}getId(t){if(t===null)return 0;t=t.toUpperCase();let e=this._color2id[t];if(e)return e;if(this._isFrozen)throw new Error(`Missing color in color map - ${t}`);return e=++this._lastColorId,this._color2id[t]=e,this._id2color[e]=t,e}getColorMap(){return this._id2color.slice(0)}},dN=Object.freeze([]),vg=class Sv{scopeDepth;parentScopes;fontStyle;foreground;background;constructor(e,n,a,r,i){this.scopeDepth=e,this.parentScopes=n||dN,this.fontStyle=a,this.foreground=r,this.background=i}clone(){return new Sv(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(e){let n=[];for(let a=0,r=e.length;a<r;a++)n[a]=e[a].clone();return n}acceptOverwrite(e,n,a,r){this.scopeDepth>e?console.log("how did this happen?"):this.scopeDepth=e,n!==-1&&(this.fontStyle=n),a!==0&&(this.foreground=a),r!==0&&(this.background=r)}},mN=class $g{constructor(e,n=[],a={}){this._mainRule=e,this._children=a,this._rulesWithParentScopes=n}_rulesWithParentScopes;static _cmpBySpecificity(e,n){if(e.scopeDepth!==n.scopeDepth)return n.scopeDepth-e.scopeDepth;let a=0,r=0;for(;e.parentScopes[a]===">"&&a++,n.parentScopes[r]===">"&&r++,!(a>=e.parentScopes.length||r>=n.parentScopes.length);){let i=n.parentScopes[r].length-e.parentScopes[a].length;if(i!==0)return i;a++,r++}return n.parentScopes.length-e.parentScopes.length}match(e){if(e!==""){let a=e.indexOf("."),r,i;if(a===-1?(r=e,i=""):(r=e.substring(0,a),i=e.substring(a+1)),this._children.hasOwnProperty(r))return this._children[r].match(i)}let n=this._rulesWithParentScopes.concat(this._mainRule);return n.sort($g._cmpBySpecificity),n}insert(e,n,a,r,i,s){if(n===""){this._doInsertHere(e,a,r,i,s);return}let o=n.indexOf("."),l,c;o===-1?(l=n,c=""):(l=n.substring(0,o),c=n.substring(o+1));let u;this._children.hasOwnProperty(l)?u=this._children[l]:(u=new $g(this._mainRule.clone(),vg.cloneArr(this._rulesWithParentScopes)),this._children[l]=u),u.insert(e+1,c,a,r,i,s)}_doInsertHere(e,n,a,r,i){if(n===null){this._mainRule.acceptOverwrite(e,a,r,i);return}for(let s=0,o=this._rulesWithParentScopes.length;s<o;s++){let l=this._rulesWithParentScopes[s];if(vv(l.parentScopes,n)===0){l.acceptOverwrite(e,a,r,i);return}}a===-1&&(a=this._mainRule.fontStyle),r===0&&(r=this._mainRule.foreground),i===0&&(i=this._mainRule.background),this._rulesWithParentScopes.push(new vg(e,n,a,r,i))}},vi=class En{static toBinaryStr(e){return e.toString(2).padStart(32,"0")}static print(e){let n=En.getLanguageId(e),a=En.getTokenType(e),r=En.getFontStyle(e),i=En.getForeground(e),s=En.getBackground(e);console.log({languageId:n,tokenType:a,fontStyle:r,foreground:i,background:s})}static getLanguageId(e){return(e&255)>>>0}static getTokenType(e){return(e&768)>>>8}static containsBalancedBrackets(e){return(e&1024)!==0}static getFontStyle(e){return(e&30720)>>>11}static getForeground(e){return(e&16744448)>>>15}static getBackground(e){return(e&4278190080)>>>24}static set(e,n,a,r,i,s,o){let l=En.getLanguageId(e),c=En.getTokenType(e),u=En.containsBalancedBrackets(e)?1:0,p=En.getFontStyle(e),d=En.getForeground(e),m=En.getBackground(e);return n!==0&&(l=n),a!==8&&(c=a),r!==null&&(u=r?1:0),i!==-1&&(p=i),s!==0&&(d=s),o!==0&&(m=o),(l<<0|c<<8|u<<10|p<<11|d<<15|m<<24)>>>0}};function Sp(t,e){let n=[],a=hN(t),r=a.next();for(;r!==null;){let l=0;if(r.length===2&&r.charAt(1)===":"){switch(r.charAt(0)){case"R":l=1;break;case"L":l=-1;break;default:console.log(`Unknown priority ${r} in scope selector`)}r=a.next()}let c=s();if(n.push({matcher:c,priority:l}),r!==",")break;r=a.next()}return n;function i(){if(r==="-"){r=a.next();let l=i();return c=>!!l&&!l(c)}if(r==="("){r=a.next();let l=o();return r===")"&&(r=a.next()),l}if(mv(r)){let l=[];do l.push(r),r=a.next();while(mv(r));return c=>e(l,c)}return null}function s(){let l=[],c=i();for(;c;)l.push(c),c=i();return u=>l.every(p=>p(u))}function o(){let l=[],c=s();for(;c&&(l.push(c),r==="|"||r===",");){do r=a.next();while(r==="|"||r===",");c=s()}return u=>l.some(p=>p(u))}}function mv(t){return!!t&&!!t.match(/[\w\.:]+/)}function hN(t){let e=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,n=e.exec(t);return{next:()=>{if(!n)return null;let a=n[0];return n=e.exec(t),a}}}function Ev(t){typeof t.dispose=="function"&&t.dispose()}var vl=class{constructor(t){this.scopeName=t}toKey(){return this.scopeName}},fN=class{constructor(t,e){this.scopeName=t,this.ruleName=e}toKey(){return`${this.scopeName}#${this.ruleName}`}},gN=class{_references=[];_seenReferenceKeys=new Set;get references(){return this._references}visitedRule=new Set;add(t){let e=t.toKey();this._seenReferenceKeys.has(e)||(this._seenReferenceKeys.add(e),this._references.push(t))}},bN=class{constructor(t,e){this.repo=t,this.initialScopeName=e,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new vl(this.initialScopeName)]}seenFullScopeRequests=new Set;seenPartialScopeRequests=new Set;Q;processQueue(){let t=this.Q;this.Q=[];let e=new gN;for(let n of t)yN(n,this.initialScopeName,this.repo,e);for(let n of e.references)if(n instanceof vl){if(this.seenFullScopeRequests.has(n.scopeName))continue;this.seenFullScopeRequests.add(n.scopeName),this.Q.push(n)}else{if(this.seenFullScopeRequests.has(n.scopeName)||this.seenPartialScopeRequests.has(n.toKey()))continue;this.seenPartialScopeRequests.add(n.toKey()),this.Q.push(n)}}};function yN(t,e,n,a){let r=n.lookup(t.scopeName);if(!r){if(t.scopeName===e)throw new Error(`No grammar provided for <${e}>`);return}let i=n.lookup(e);t instanceof vl?jp({baseGrammar:i,selfGrammar:r},a):Cg(t.ruleName,{baseGrammar:i,selfGrammar:r,repository:r.repository},a);let s=n.injections(t.scopeName);if(s)for(let o of s)a.add(new vl(o))}function Cg(t,e,n){if(e.repository&&e.repository[t]){let a=e.repository[t];Ep([a],e,n)}}function jp(t,e){t.selfGrammar.patterns&&Array.isArray(t.selfGrammar.patterns)&&Ep(t.selfGrammar.patterns,{...t,repository:t.selfGrammar.repository},e),t.selfGrammar.injections&&Ep(Object.values(t.selfGrammar.injections),{...t,repository:t.selfGrammar.repository},e)}function Ep(t,e,n){for(let a of t){if(n.visitedRule.has(a))continue;n.visitedRule.add(a);let r=a.repository?wv({},e.repository,a.repository):e.repository;Array.isArray(a.patterns)&&Ep(a.patterns,{...e,repository:r},n);let i=a.include;if(!i)continue;let s=Av(i);switch(s.kind){case 0:jp({...e,selfGrammar:e.baseGrammar},n);break;case 1:jp(e,n);break;case 2:Cg(s.ruleName,{...e,repository:r},n);break;case 3:case 4:let o=s.scopeName===e.selfGrammar.scopeName?e.selfGrammar:s.scopeName===e.baseGrammar.scopeName?e.baseGrammar:void 0;if(o){let l={baseGrammar:e.baseGrammar,selfGrammar:o,repository:r};s.kind===4?Cg(s.ruleName,l,n):jp(l,n)}else s.kind===4?n.add(new fN(s.scopeName,s.ruleName)):n.add(new vl(s.scopeName));break}}}var xN=class{kind=0},wN=class{kind=1},kN=class{constructor(t){this.ruleName=t}kind=2},_N=class{constructor(t){this.scopeName=t}kind=3},vN=class{constructor(t,e){this.scopeName=t,this.ruleName=e}kind=4};function Av(t){if(t==="$base")return new xN;if(t==="$self")return new wN;let e=t.indexOf("#");if(e===-1)return new _N(t);if(e===0)return new kN(t.substring(1));{let n=t.substring(0,e),a=t.substring(e+1);return new vN(n,a)}}var $N=/\\(\d+)/,hv=/\\(\d+)/g;var CN=-1,Tv=-2;var jl=class{$location;id;_nameIsCapturing;_name;_contentNameIsCapturing;_contentName;constructor(t,e,n,a){this.$location=t,this.id=e,this._name=n||null,this._nameIsCapturing=$p.hasCaptures(this._name),this._contentName=a||null,this._contentNameIsCapturing=$p.hasCaptures(this._contentName)}get debugName(){let t=this.$location?`${kv(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${t}`}getName(t,e){return!this._nameIsCapturing||this._name===null||t===null||e===null?this._name:$p.replaceCaptures(this._name,t,e)}getContentName(t,e){return!this._contentNameIsCapturing||this._contentName===null?this._contentName:$p.replaceCaptures(this._contentName,t,e)}},jN=class extends jl{retokenizeCapturedWithRuleId;constructor(t,e,n,a,r){super(t,e,n,a),this.retokenizeCapturedWithRuleId=r}dispose(){}collectPatterns(t,e){throw new Error("Not supported!")}compile(t,e){throw new Error("Not supported!")}compileAG(t,e,n,a){throw new Error("Not supported!")}},SN=class extends jl{_match;captures;_cachedCompiledPatterns;constructor(t,e,n,a,r){super(t,e,n,null),this._match=new $l(a,this.id),this.captures=r,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(t,e){e.push(this._match)}compile(t,e){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t).compileAG(t,n,a)}_getCachedCompiledPatterns(t){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new Cl,this.collectPatterns(t,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},fv=class extends jl{hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor(t,e,n,a,r){super(t,e,n,a),this.patterns=r.patterns,this.hasMissingPatterns=r.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(t,e){for(let n of this.patterns)t.getRule(n).collectPatterns(t,e)}compile(t,e){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t).compileAG(t,n,a)}_getCachedCompiledPatterns(t){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new Cl,this.collectPatterns(t,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}},jg=class extends jl{_begin;beginCaptures;_end;endHasBackReferences;endCaptures;applyEndPatternLast;hasMissingPatterns;patterns;_cachedCompiledPatterns;constructor(t,e,n,a,r,i,s,o,l,c){super(t,e,n,a),this._begin=new $l(r,this.id),this.beginCaptures=i,this._end=new $l(s||"\uFFFF",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=o,this.applyEndPatternLast=l||!1,this.patterns=c.patterns,this.hasMissingPatterns=c.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(t,e){return this._end.resolveBackReferences(t,e)}collectPatterns(t,e){e.push(this._begin)}compile(t,e){return this._getCachedCompiledPatterns(t,e).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t,e).compileAG(t,n,a)}_getCachedCompiledPatterns(t,e){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new Cl;for(let n of this.patterns)t.getRule(n).collectPatterns(t,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,e):this._cachedCompiledPatterns.setSource(0,e)),this._cachedCompiledPatterns}},Ap=class extends jl{_begin;beginCaptures;whileCaptures;_while;whileHasBackReferences;hasMissingPatterns;patterns;_cachedCompiledPatterns;_cachedCompiledWhilePatterns;constructor(t,e,n,a,r,i,s,o,l){super(t,e,n,a),this._begin=new $l(r,this.id),this.beginCaptures=i,this.whileCaptures=o,this._while=new $l(s,Tv),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(t,e){return this._while.resolveBackReferences(t,e)}collectPatterns(t,e){e.push(this._begin)}compile(t,e){return this._getCachedCompiledPatterns(t).compile(t)}compileAG(t,e,n,a){return this._getCachedCompiledPatterns(t).compileAG(t,n,a)}_getCachedCompiledPatterns(t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new Cl;for(let e of this.patterns)t.getRule(e).collectPatterns(t,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(t,e){return this._getCachedCompiledWhilePatterns(t,e).compile(t)}compileWhileAG(t,e,n,a){return this._getCachedCompiledWhilePatterns(t,e).compileAG(t,n,a)}_getCachedCompiledWhilePatterns(t,e){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new Cl,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,e||"\uFFFF"),this._cachedCompiledWhilePatterns}},Mv=class Rt{static createCaptureRule(e,n,a,r,i){return e.registerRule(s=>new jN(n,s,a,r,i))}static getCompiledRuleId(e,n,a){return e.id||n.registerRule(r=>{if(e.id=r,e.match)return new SN(e.$vscodeTextmateLocation,e.id,e.name,e.match,Rt._compileCaptures(e.captures,n,a));if(typeof e.begin>"u"){e.repository&&(a=wv({},a,e.repository));let i=e.patterns;return typeof i>"u"&&e.include&&(i=[{include:e.include}]),new fv(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,Rt._compilePatterns(i,n,a))}return e.while?new Ap(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,Rt._compileCaptures(e.beginCaptures||e.captures,n,a),e.while,Rt._compileCaptures(e.whileCaptures||e.captures,n,a),Rt._compilePatterns(e.patterns,n,a)):new jg(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,Rt._compileCaptures(e.beginCaptures||e.captures,n,a),e.end,Rt._compileCaptures(e.endCaptures||e.captures,n,a),e.applyEndPatternLast,Rt._compilePatterns(e.patterns,n,a))}),e.id}static _compileCaptures(e,n,a){let r=[];if(e){let i=0;for(let s in e){if(s==="$vscodeTextmateLocation")continue;let o=parseInt(s,10);o>i&&(i=o)}for(let s=0;s<=i;s++)r[s]=null;for(let s in e){if(s==="$vscodeTextmateLocation")continue;let o=parseInt(s,10),l=0;e[s].patterns&&(l=Rt.getCompiledRuleId(e[s],n,a)),r[o]=Rt.createCaptureRule(n,e[s].$vscodeTextmateLocation,e[s].name,e[s].contentName,l)}}return r}static _compilePatterns(e,n,a){let r=[];if(e)for(let i=0,s=e.length;i<s;i++){let o=e[i],l=-1;if(o.include){let c=Av(o.include);switch(c.kind){case 0:case 1:l=Rt.getCompiledRuleId(a[o.include],n,a);break;case 2:let u=a[c.ruleName];u&&(l=Rt.getCompiledRuleId(u,n,a));break;case 3:case 4:let p=c.scopeName,d=c.kind===4?c.ruleName:null,m=n.getExternalGrammar(p,a);if(m)if(d){let h=m.repository[d];h&&(l=Rt.getCompiledRuleId(h,n,m.repository))}else l=Rt.getCompiledRuleId(m.repository.$self,n,m.repository);break}}else l=Rt.getCompiledRuleId(o,n,a);if(l!==-1){let c=n.getRule(l),u=!1;if((c instanceof fv||c instanceof jg||c instanceof Ap)&&c.hasMissingPatterns&&c.patterns.length===0&&(u=!0),u)continue;r.push(l)}}return{patterns:r,hasMissingPatterns:(e?e.length:0)!==r.length}}},$l=class Nv{source;ruleId;hasAnchor;hasBackReferences;_anchorCache;constructor(e,n){if(e&&typeof e=="string"){let a=e.length,r=0,i=[],s=!1;for(let o=0;o<a;o++)if(e.charAt(o)==="\\"&&o+1<a){let c=e.charAt(o+1);c==="z"?(i.push(e.substring(r,o)),i.push("$(?!\\n)(?<!\\n)"),r=o+2):(c==="A"||c==="G")&&(s=!0),o++}this.hasAnchor=s,r===0?this.source=e:(i.push(e.substring(r,a)),this.source=i.join(""))}else this.hasAnchor=!1,this.source=e;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=n,typeof this.source=="string"?this.hasBackReferences=$N.test(this.source):this.hasBackReferences=!1}clone(){return new Nv(this.source,this.ruleId)}setSource(e){this.source!==e&&(this.source=e,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(e,n){if(typeof this.source!="string")throw new Error("This method should only be called if the source is a string");let a=n.map(r=>e.substring(r.start,r.end));return hv.lastIndex=0,this.source.replace(hv,(r,i)=>$v(a[parseInt(i,10)]||""))}_buildAnchorCache(){if(typeof this.source!="string")throw new Error("This method should only be called if the source is a string");let e=[],n=[],a=[],r=[],i,s,o,l;for(i=0,s=this.source.length;i<s;i++)o=this.source.charAt(i),e[i]=o,n[i]=o,a[i]=o,r[i]=o,o==="\\"&&i+1<s&&(l=this.source.charAt(i+1),l==="A"?(e[i+1]="\uFFFF",n[i+1]="\uFFFF",a[i+1]="A",r[i+1]="A"):l==="G"?(e[i+1]="\uFFFF",n[i+1]="G",a[i+1]="\uFFFF",r[i+1]="G"):(e[i+1]=l,n[i+1]=l,a[i+1]=l,r[i+1]=l),i++);return{A0_G0:e.join(""),A0_G1:n.join(""),A1_G0:a.join(""),A1_G1:r.join("")}}resolveAnchors(e,n){return!this.hasAnchor||!this._anchorCache||typeof this.source!="string"?this.source:e?n?this._anchorCache.A1_G1:this._anchorCache.A1_G0:n?this._anchorCache.A0_G1:this._anchorCache.A0_G0}},Cl=class{_items;_hasAnchors;_cached;_anchorCache;constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&(this._cached.dispose(),this._cached=null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(t){this._items.push(t),this._hasAnchors=this._hasAnchors||t.hasAnchor}unshift(t){this._items.unshift(t),this._hasAnchors=this._hasAnchors||t.hasAnchor}length(){return this._items.length}setSource(t,e){this._items[t].source!==e&&(this._disposeCaches(),this._items[t].setSource(e))}compile(t){if(!this._cached){let e=this._items.map(n=>n.source);this._cached=new gv(t,e,this._items.map(n=>n.ruleId))}return this._cached}compileAG(t,e,n){return this._hasAnchors?e?n?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(t,e,n)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(t,e,n)),this._anchorCache.A1_G0):n?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(t,e,n)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(t,e,n)),this._anchorCache.A0_G0):this.compile(t)}_resolveAnchors(t,e,n){let a=this._items.map(r=>r.resolveAnchors(e,n));return new gv(t,a,this._items.map(r=>r.ruleId))}},gv=class{constructor(t,e,n){this.regExps=e,this.rules=n,this.scanner=t.createOnigScanner(e)}scanner;dispose(){typeof this.scanner.dispose=="function"&&this.scanner.dispose()}toString(){let t=[];for(let e=0,n=this.rules.length;e<n;e++)t.push(" - "+this.rules[e]+": "+this.regExps[e]);return t.join(` +`)}findNextMatchSync(t,e,n){let a=this.scanner.findNextMatchSync(t,e,n);return a?{ruleId:this.rules[a.index],captureIndices:a.captureIndices}:null}},_g=class{constructor(t,e){this.languageId=t,this.tokenType=e}},EN=class Sg{_defaultAttributes;_embeddedLanguagesMatcher;constructor(e,n){this._defaultAttributes=new _g(e,8),this._embeddedLanguagesMatcher=new AN(Object.entries(n||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return e===null?Sg._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}static _NULL_SCOPE_METADATA=new _g(0,0);_getBasicScopeAttributes=new Cv(e=>{let n=this._scopeToLanguage(e),a=this._toStandardTokenType(e);return new _g(n,a)});_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){let n=e.match(Sg.STANDARD_TOKEN_TYPE_REGEXP);if(!n)return 8;switch(n[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}static STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/},AN=class{values;scopesRegExp;constructor(t){if(t.length===0)this.values=null,this.scopesRegExp=null;else{this.values=new Map(t);let e=t.map(([n,a])=>$v(n));e.sort(),e.reverse(),this.scopesRegExp=new RegExp(`^((${e.join(")|(")}))($|\\.)`,"")}}match(t){if(!this.scopesRegExp)return;let e=t.match(this.scopesRegExp);if(e)return this.values.get(e[1])}},cZ={InDebugMode:typeof process<"u"&&!!process.env.VSCODE_TEXTMATE_DEBUG},Iv=!1,bv=class{constructor(t,e){this.stack=t,this.stoppedEarly=e}};function Rv(t,e,n,a,r,i,s,o){let l=e.content.length,c=!1,u=-1;if(s){let m=TN(t,e,n,a,r,i);r=m.stack,a=m.linePos,n=m.isFirstLine,u=m.anchorPosition}let p=Date.now();for(;!c;){if(o!==0&&Date.now()-p>o)return new bv(r,!0);d()}return new bv(r,!1);function d(){let m=MN(t,e,n,a,r,u);if(!m){i.produce(r,l),c=!0;return}let h=m.captureIndices,b=m.matchedRuleId,y=h&&h.length>0?h[0].end>a:!1;if(b===CN){let w=r.getRule(t);i.produce(r,h[0].start),r=r.withContentNameScopesList(r.nameScopesList),wl(t,e,n,r,i,w.endCaptures,h),i.produce(r,h[0].end);let _=r;if(r=r.parent,u=_.getAnchorPos(),!y&&_.getEnterPos()===a){r=_,i.produce(r,l),c=!0;return}}else{let w=t.getRule(b);i.produce(r,h[0].start);let _=r,$=w.getName(e.content,h),M=r.contentNameScopesList.pushAttributed($,t);if(r=r.push(b,a,u,h[0].end===l,null,M,M),w instanceof jg){let N=w;wl(t,e,n,r,i,N.beginCaptures,h),i.produce(r,h[0].end),u=h[0].end;let E=N.getContentName(e.content,h),I=M.pushAttributed(E,t);if(r=r.withContentNameScopesList(I),N.endHasBackReferences&&(r=r.withEndRule(N.getEndWithResolvedBackReferences(e.content,h))),!y&&_.hasSameRuleAs(r)){r=r.pop(),i.produce(r,l),c=!0;return}}else if(w instanceof Ap){let N=w;wl(t,e,n,r,i,N.beginCaptures,h),i.produce(r,h[0].end),u=h[0].end;let E=N.getContentName(e.content,h),I=M.pushAttributed(E,t);if(r=r.withContentNameScopesList(I),N.whileHasBackReferences&&(r=r.withEndRule(N.getWhileWithResolvedBackReferences(e.content,h))),!y&&_.hasSameRuleAs(r)){r=r.pop(),i.produce(r,l),c=!0;return}}else if(wl(t,e,n,r,i,w.captures,h),i.produce(r,h[0].end),r=r.pop(),!y){r=r.safePop(),i.produce(r,l),c=!0;return}}h[0].end>a&&(a=h[0].end,n=!1)}}function TN(t,e,n,a,r,i){let s=r.beginRuleCapturedEOL?0:-1,o=[];for(let l=r;l;l=l.pop()){let c=l.getRule(t);c instanceof Ap&&o.push({rule:c,stack:l})}for(let l=o.pop();l;l=o.pop()){let{ruleScanner:c,findOptions:u}=RN(l.rule,t,l.stack.endRule,n,a===s),p=c.findNextMatchSync(e,a,u);if(p){if(p.ruleId!==Tv){r=l.stack.pop();break}p.captureIndices&&p.captureIndices.length&&(i.produce(l.stack,p.captureIndices[0].start),wl(t,e,n,l.stack,i,l.rule.whileCaptures,p.captureIndices),i.produce(l.stack,p.captureIndices[0].end),s=p.captureIndices[0].end,p.captureIndices[0].end>a&&(a=p.captureIndices[0].end,n=!1))}else{r=l.stack.pop();break}}return{stack:r,linePos:a,anchorPosition:s,isFirstLine:n}}function MN(t,e,n,a,r,i){let s=NN(t,e,n,a,r,i),o=t.getInjections();if(o.length===0)return s;let l=IN(o,t,e,n,a,r,i);if(!l)return s;if(!s)return l;let c=s.captureIndices[0].start,u=l.captureIndices[0].start;return u<c||l.priorityMatch&&u===c?l:s}function NN(t,e,n,a,r,i){let s=r.getRule(t),{ruleScanner:o,findOptions:l}=zv(s,t,r.endRule,n,a===i),c=o.findNextMatchSync(e,a,l);return c?{captureIndices:c.captureIndices,matchedRuleId:c.ruleId}:null}function IN(t,e,n,a,r,i,s){let o=Number.MAX_VALUE,l=null,c,u=0,p=i.contentNameScopesList.getScopeNames();for(let d=0,m=t.length;d<m;d++){let h=t[d];if(!h.matcher(p))continue;let b=e.getRule(h.ruleId),{ruleScanner:y,findOptions:w}=zv(b,e,null,a,r===s),_=y.findNextMatchSync(n,r,w);if(!_)continue;let $=_.captureIndices[0].start;if(!($>=o)&&(o=$,l=_.captureIndices,c=_.ruleId,u=h.priority,o===r))break}return l?{priorityMatch:u===-1,captureIndices:l,matchedRuleId:c}:null}function zv(t,e,n,a,r){if(Iv){let s=t.compile(e,n),o=Ov(a,r);return{ruleScanner:s,findOptions:o}}return{ruleScanner:t.compileAG(e,n,a,r),findOptions:0}}function RN(t,e,n,a,r){if(Iv){let s=t.compileWhile(e,n),o=Ov(a,r);return{ruleScanner:s,findOptions:o}}return{ruleScanner:t.compileWhileAG(e,n,a,r),findOptions:0}}function Ov(t,e){let n=0;return t||(n|=1),e||(n|=4),n}function wl(t,e,n,a,r,i,s){if(i.length===0)return;let o=e.content,l=Math.min(i.length,s.length),c=[],u=s[0].end;for(let p=0;p<l;p++){let d=i[p];if(d===null)continue;let m=s[p];if(m.length===0)continue;if(m.start>u)break;for(;c.length>0&&c[c.length-1].endPos<=m.start;)r.produceFromScopes(c[c.length-1].scopes,c[c.length-1].endPos),c.pop();if(c.length>0?r.produceFromScopes(c[c.length-1].scopes,m.start):r.produce(a,m.start),d.retokenizeCapturedWithRuleId){let b=d.getName(o,s),y=a.contentNameScopesList.pushAttributed(b,t),w=d.getContentName(o,s),_=y.pushAttributed(w,t),$=a.push(d.retokenizeCapturedWithRuleId,m.start,-1,!1,null,y,_),M=t.createOnigString(o.substring(0,m.end));Rv(t,M,n&&m.start===0,m.start,$,r,!1,0),Ev(M);continue}let h=d.getName(o,s);if(h!==null){let y=(c.length>0?c[c.length-1].scopes:a.contentNameScopesList).pushAttributed(h,t);c.push(new zN(y,m.end))}}for(;c.length>0;)r.produceFromScopes(c[c.length-1].scopes,c[c.length-1].endPos),c.pop()}var zN=class{scopes;endPos;constructor(t,e){this.scopes=t,this.endPos=e}};function ON(t,e,n,a,r,i,s,o){return new LN(t,e,n,a,r,i,s,o)}function yv(t,e,n,a,r){let i=Sp(e,Tp),s=Mv.getCompiledRuleId(n,a,r.repository);for(let o of i)t.push({debugSelector:e,matcher:o.matcher,ruleId:s,grammar:r,priority:o.priority})}function Tp(t,e){if(e.length<t.length)return!1;let n=0;return t.every(a=>{for(let r=n;r<e.length;r++)if(BN(e[r],a))return n=r+1,!0;return!1})}function BN(t,e){if(!t)return!1;if(t===e)return!0;let n=e.length;return t.length>n&&t.substr(0,n)===e&&t[n]==="."}var LN=class{constructor(t,e,n,a,r,i,s,o){if(this._rootScopeName=t,this.balancedBracketSelectors=i,this._onigLib=o,this._basicScopeAttributesProvider=new EN(n,a),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=s,this._grammar=xv(e,null),this._injections=null,this._tokenTypeMatchers=[],r)for(let l of Object.keys(r)){let c=Sp(l,Tp);for(let u of c)this._tokenTypeMatchers.push({matcher:u.matcher,type:r[l]})}}_rootId;_lastRuleId;_ruleId2desc;_includedGrammars;_grammarRepository;_grammar;_injections;_basicScopeAttributesProvider;_tokenTypeMatchers;get themeProvider(){return this._grammarRepository}dispose(){for(let t of this._ruleId2desc)t&&t.dispose()}createOnigScanner(t){return this._onigLib.createOnigScanner(t)}createOnigString(t){return this._onigLib.createOnigString(t)}getMetadataForScope(t){return this._basicScopeAttributesProvider.getBasicScopeAttributes(t)}_collectInjections(){let t={lookup:r=>r===this._rootScopeName?this._grammar:this.getExternalGrammar(r),injections:r=>this._grammarRepository.injections(r)},e=[],n=this._rootScopeName,a=t.lookup(n);if(a){let r=a.injections;if(r)for(let s in r)yv(e,s,r[s],this,a);let i=this._grammarRepository.injections(n);i&&i.forEach(s=>{let o=this.getExternalGrammar(s);if(o){let l=o.injectionSelector;l&&yv(e,l,o,this,o)}})}return e.sort((r,i)=>r.priority-i.priority),e}getInjections(){return this._injections===null&&(this._injections=this._collectInjections()),this._injections}registerRule(t){let e=++this._lastRuleId,n=t(e);return this._ruleId2desc[e]=n,n}getRule(t){return this._ruleId2desc[t]}getExternalGrammar(t,e){if(this._includedGrammars[t])return this._includedGrammars[t];if(this._grammarRepository){let n=this._grammarRepository.lookup(t);if(n)return this._includedGrammars[t]=xv(n,e&&e.$base),this._includedGrammars[t]}}tokenizeLine(t,e,n=0){let a=this._tokenize(t,e,!1,n);return{tokens:a.lineTokens.getResult(a.ruleStack,a.lineLength),ruleStack:a.ruleStack,stoppedEarly:a.stoppedEarly}}tokenizeLine2(t,e,n=0){let a=this._tokenize(t,e,!0,n);return{tokens:a.lineTokens.getBinaryResult(a.ruleStack,a.lineLength),ruleStack:a.ruleStack,stoppedEarly:a.stoppedEarly}}_tokenize(t,e,n,a){this._rootId===-1&&(this._rootId=Mv.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository),this.getInjections());let r;if(!e||e===Eg.NULL){r=!0;let c=this._basicScopeAttributesProvider.getDefaultAttributes(),u=this.themeProvider.getDefaults(),p=vi.set(0,c.languageId,c.tokenType,null,u.fontStyle,u.foregroundId,u.backgroundId),d=this.getRule(this._rootId).getName(null,null),m;d?m=kl.createRootAndLookUpScopeName(d,p,this):m=kl.createRoot("unknown",p),e=new Eg(null,this._rootId,-1,-1,!1,null,m,m)}else r=!1,e.reset();t=t+` +`;let i=this.createOnigString(t),s=i.content.length,o=new FN(n,t,this._tokenTypeMatchers,this.balancedBracketSelectors),l=Rv(this,i,r,0,e,o,!0,a);return Ev(i),{lineLength:s,lineTokens:o,ruleStack:l.stack,stoppedEarly:l.stoppedEarly}}};function xv(t,e){return t=aN(t),t.repository=t.repository||{},t.repository.$self={$vscodeTextmateLocation:t.$vscodeTextmateLocation,patterns:t.patterns,name:t.scopeName},t.repository.$base=e||t.repository.$self,t}var kl=class oa{constructor(e,n,a){this.parent=e,this.scopePath=n,this.tokenAttributes=a}static fromExtension(e,n){let a=e,r=e?.scopePath??null;for(let i of n)r=kg.push(r,i.scopeNames),a=new oa(a,r,i.encodedTokenAttributes);return a}static createRoot(e,n){return new oa(null,new kg(null,e),n)}static createRootAndLookUpScopeName(e,n,a){let r=a.getMetadataForScope(e),i=new kg(null,e),s=a.themeProvider.themeMatch(i),o=oa.mergeAttributes(n,r,s);return new oa(null,i,o)}get scopeName(){return this.scopePath.scopeName}toString(){return this.getScopeNames().join(" ")}equals(e){return oa.equals(this,e)}static equals(e,n){do{if(e===n||!e&&!n)return!0;if(!e||!n||e.scopeName!==n.scopeName||e.tokenAttributes!==n.tokenAttributes)return!1;e=e.parent,n=n.parent}while(!0)}static mergeAttributes(e,n,a){let r=-1,i=0,s=0;return a!==null&&(r=a.fontStyle,i=a.foregroundId,s=a.backgroundId),vi.set(e,n.languageId,n.tokenType,null,r,i,s)}pushAttributed(e,n){if(e===null)return this;if(e.indexOf(" ")===-1)return oa._pushAttributed(this,e,n);let a=e.split(/ /g),r=this;for(let i of a)r=oa._pushAttributed(r,i,n);return r}static _pushAttributed(e,n,a){let r=a.getMetadataForScope(n),i=e.scopePath.push(n),s=a.themeProvider.themeMatch(i),o=oa.mergeAttributes(e.tokenAttributes,r,s);return new oa(e,i,o)}getScopeNames(){return this.scopePath.getSegments()}getExtensionIfDefined(e){let n=[],a=this;for(;a&&a!==e;)n.push({encodedTokenAttributes:a.tokenAttributes,scopeNames:a.scopePath.getExtensionIfDefined(a.parent?.scopePath??null)}),a=a.parent;return a===e?n.reverse():void 0}},Eg=class _i{constructor(e,n,a,r,i,s,o,l){this.parent=e,this.ruleId=n,this.beginRuleCapturedEOL=i,this.endRule=s,this.nameScopesList=o,this.contentNameScopesList=l,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=a,this._anchorPos=r}_stackElementBrand=void 0;static NULL=new _i(null,0,0,0,!1,null,null,null);_enterPos;_anchorPos;depth;equals(e){return e===null?!1:_i._equals(this,e)}static _equals(e,n){return e===n?!0:this._structuralEquals(e,n)?kl.equals(e.contentNameScopesList,n.contentNameScopesList):!1}static _structuralEquals(e,n){do{if(e===n||!e&&!n)return!0;if(!e||!n||e.depth!==n.depth||e.ruleId!==n.ruleId||e.endRule!==n.endRule)return!1;e=e.parent,n=n.parent}while(!0)}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){_i._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,n,a,r,i,s,o){return new _i(this,e,n,a,r,i,s,o)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){let e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,n){return this.parent&&(n=this.parent._writeString(e,n)),e[n++]=`(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`,n}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new _i(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let n=this;for(;n&&n._enterPos===e._enterPos;){if(n.ruleId===e.ruleId)return!0;n=n.parent}return!1}toStateStackFrame(){return{ruleId:this.ruleId,beginRuleCapturedEOL:this.beginRuleCapturedEOL,endRule:this.endRule,nameScopesList:this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList??null)??[],contentNameScopesList:this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList)??[]}}static pushFrame(e,n){let a=kl.fromExtension(e?.nameScopesList??null,n.nameScopesList);return new _i(e,n.ruleId,n.enterPos??-1,n.anchorPos??-1,n.beginRuleCapturedEOL,n.endRule,a,kl.fromExtension(a,n.contentNameScopesList))}},DN=class{balancedBracketScopes;unbalancedBracketScopes;allowAny=!1;constructor(t,e){this.balancedBracketScopes=t.flatMap(n=>n==="*"?(this.allowAny=!0,[]):Sp(n,Tp).map(a=>a.matcher)),this.unbalancedBracketScopes=e.flatMap(n=>Sp(n,Tp).map(a=>a.matcher))}get matchesAlways(){return this.allowAny&&this.unbalancedBracketScopes.length===0}get matchesNever(){return this.balancedBracketScopes.length===0&&!this.allowAny}match(t){for(let e of this.unbalancedBracketScopes)if(e(t))return!1;for(let e of this.balancedBracketScopes)if(e(t))return!0;return this.allowAny}},FN=class{constructor(t,e,n,a){this.balancedBracketSelectors=a,this._emitBinaryTokens=t,this._tokenTypeOverrides=n,this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}_emitBinaryTokens;_lineText;_tokens;_binaryTokens;_lastTokenEndIndex;_tokenTypeOverrides;produce(t,e){this.produceFromScopes(t.contentNameScopesList,e)}produceFromScopes(t,e){if(this._lastTokenEndIndex>=e)return;if(this._emitBinaryTokens){let a=t?.tokenAttributes??0,r=!1;if(this.balancedBracketSelectors?.matchesAlways&&(r=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){let i=t?.getScopeNames()??[];for(let s of this._tokenTypeOverrides)s.matcher(i)&&(a=vi.set(a,0,s.type,null,-1,0,0));this.balancedBracketSelectors&&(r=this.balancedBracketSelectors.match(i))}if(r&&(a=vi.set(a,0,8,r,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===a){this._lastTokenEndIndex=e;return}this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(a),this._lastTokenEndIndex=e;return}let n=t?.getScopeNames()??[];this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:e,scopes:n}),this._lastTokenEndIndex=e}getResult(t,e){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===e-1&&this._tokens.pop(),this._tokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(t,e),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(t,e){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===e-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),this._binaryTokens.length===0&&(this._lastTokenEndIndex=-1,this.produce(t,e),this._binaryTokens[this._binaryTokens.length-2]=0);let n=new Uint32Array(this._binaryTokens.length);for(let a=0,r=this._binaryTokens.length;a<r;a++)n[a]=this._binaryTokens[a];return n}},PN=class{constructor(t,e){this._onigLib=e,this._theme=t}_grammars=new Map;_rawGrammars=new Map;_injectionGrammars=new Map;_theme;dispose(){for(let t of this._grammars.values())t.dispose()}setTheme(t){this._theme=t}getColorMap(){return this._theme.getColorMap()}addGrammar(t,e){this._rawGrammars.set(t.scopeName,t),e&&this._injectionGrammars.set(t.scopeName,e)}lookup(t){return this._rawGrammars.get(t)}injections(t){return this._injectionGrammars.get(t)}getDefaults(){return this._theme.getDefaults()}themeMatch(t){return this._theme.match(t)}grammarForScopeName(t,e,n,a,r){if(!this._grammars.has(t)){let i=this._rawGrammars.get(t);if(!i)return null;this._grammars.set(t,ON(t,i,e,n,a,r,this,this._onigLib))}return this._grammars.get(t)}},Bv=class{_options;_syncRegistry;_ensureGrammarCache;constructor(t){this._options=t,this._syncRegistry=new PN(_l.createFromRawTheme(t.theme,t.colorMap),t.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(t,e){this._syncRegistry.setTheme(_l.createFromRawTheme(t,e))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(t,e,n){return this.loadGrammarWithConfiguration(t,e,{embeddedLanguages:n})}loadGrammarWithConfiguration(t,e,n){return this._loadGrammar(t,e,n.embeddedLanguages,n.tokenTypes,new DN(n.balancedBracketSelectors||[],n.unbalancedBracketSelectors||[]))}loadGrammar(t){return this._loadGrammar(t,0,null,null,null)}_loadGrammar(t,e,n,a,r){let i=new bN(this._syncRegistry,t);for(;i.Q.length>0;)i.Q.map(s=>this._loadSingleGrammar(s.scopeName)),i.processQueue();return this._grammarForScopeName(t,e,n,a,r)}_loadSingleGrammar(t){this._ensureGrammarCache.has(t)||(this._doLoadSingleGrammar(t),this._ensureGrammarCache.set(t,!0))}_doLoadSingleGrammar(t){let e=this._options.loadGrammar(t);if(e){let n=typeof this._options.getInjections=="function"?this._options.getInjections(t):void 0;this._syncRegistry.addGrammar(e,n)}}addGrammar(t,e=[],n=0,a=null){return this._syncRegistry.addGrammar(t,e),this._grammarForScopeName(t.scopeName,n,a)}_grammarForScopeName(t,e=0,n=null,a=null,r=null){return this._syncRegistry.grammarForScopeName(t,e,n,a,r)}},Mp=Eg.NULL;function El(t,e){let n=typeof t=="string"?{}:{...t.colorReplacements},a=typeof t=="string"?t:t.name;for(let[r,i]of Object.entries(e?.colorReplacements||{}))typeof i=="string"?n[r]=i:r===a&&Object.assign(n,i);return n}function Oa(t,e){return t&&(e?.[t?.toLowerCase()]||t)}function qv(t){return Array.isArray(t)?t:[t]}async function Tg(t){return Promise.resolve(typeof t=="function"?t():t).then(e=>e.default||e)}function Al(t){return!t||["plaintext","txt","text","plain"].includes(t)}function Gv(t){return t==="ansi"||Al(t)}function Tl(t){return t==="none"}function Hv(t){return Tl(t)}function Vs(t,e=!1){if(t.length===0)return[["",0]];let n=t.split(/(\r?\n)/g),a=0,r=[];for(let i=0;i<n.length;i+=2){let s=e?n[i]+(n[i+1]||""):n[i];r.push([s,a]),a+=n[i].length,a+=n[i+1]?.length||0}return r}var Lv={light:"#333333",dark:"#bbbbbb"},Dv={light:"#fffffe",dark:"#1e1e1e"},Fv="__shiki_resolved";function Np(t){if(t?.[Fv])return t;let e={...t};e.tokenColors&&!e.settings&&(e.settings=e.tokenColors,delete e.tokenColors),e.type||="dark",e.colorReplacements={...e.colorReplacements},e.settings||=[];let{bg:n,fg:a}=e;if(!n||!a){let o=e.settings?e.settings.find(l=>!l.name&&!l.scope):void 0;o?.settings?.foreground&&(a=o.settings.foreground),o?.settings?.background&&(n=o.settings.background),!a&&e?.colors?.["editor.foreground"]&&(a=e.colors["editor.foreground"]),!n&&e?.colors?.["editor.background"]&&(n=e.colors["editor.background"]),a||(a=e.type==="light"?Lv.light:Lv.dark),n||(n=e.type==="light"?Dv.light:Dv.dark),e.fg=a,e.bg=n}e.settings[0]&&e.settings[0].settings&&!e.settings[0].scope||e.settings.unshift({settings:{foreground:e.fg,background:e.bg}});let r=0,i=new Map;function s(o){if(i.has(o))return i.get(o);r+=1;let l=`#${r.toString(16).padStart(8,"0").toLowerCase()}`;return e.colorReplacements?.[`#${l}`]?s(o):(i.set(o,l),l)}e.settings=e.settings.map(o=>{let l=o.settings?.foreground&&!o.settings.foreground.startsWith("#"),c=o.settings?.background&&!o.settings.background.startsWith("#");if(!l&&!c)return o;let u={...o,settings:{...o.settings}};if(l){let p=s(o.settings.foreground);e.colorReplacements[p]=o.settings.foreground,u.settings.foreground=p}if(c){let p=s(o.settings.background);e.colorReplacements[p]=o.settings.background,u.settings.background=p}return u});for(let o of Object.keys(e.colors||{}))if((o==="editor.foreground"||o==="editor.background"||o.startsWith("terminal.ansi"))&&!e.colors[o]?.startsWith("#")){let l=s(e.colors[o]);e.colorReplacements[l]=e.colors[o],e.colors[o]=l}return Object.defineProperty(e,Fv,{enumerable:!1,writable:!1,value:!0}),e}async function Vv(t){return Array.from(new Set((await Promise.all(t.filter(e=>!Gv(e)).map(async e=>await Tg(e).then(n=>Array.isArray(n)?n:[n])))).flat()))}async function Wv(t){return(await Promise.all(t.map(async e=>Hv(e)?null:Np(await Tg(e))))).filter(e=>!!e)}function Uv(t,e){if(!e)return t;if(e[t]){let n=new Set([t]);for(;e[t];){if(t=e[t],n.has(t))throw new Ne(`Circular alias \`${Array.from(n).join(" -> ")} -> ${t}\``);n.add(t)}}return t}var qN=class extends Bv{_resolvedThemes=new Map;_resolvedGrammars=new Map;_langMap=new Map;_langGraph=new Map;_textmateThemeCache=new WeakMap;_loadedThemesCache=null;_loadedLanguagesCache=null;constructor(t,e,n,a={}){super(t),this._resolver=t,this._themes=e,this._langs=n,this._alias=a,this._themes.map(r=>this.loadTheme(r)),this.loadLanguages(this._langs)}getTheme(t){return typeof t=="string"?this._resolvedThemes.get(t):this.loadTheme(t)}loadTheme(t){let e=Np(t);return e.name&&(this._resolvedThemes.set(e.name,e),this._loadedThemesCache=null),e}getLoadedThemes(){return this._loadedThemesCache||(this._loadedThemesCache=[...this._resolvedThemes.keys()]),this._loadedThemesCache}setTheme(t){let e=this._textmateThemeCache.get(t);e||(e=_l.createFromRawTheme(t),this._textmateThemeCache.set(t,e)),this._syncRegistry.setTheme(e)}getGrammar(t){return t=Uv(t,this._alias),this._resolvedGrammars.get(t)}loadLanguage(t){if(this.getGrammar(t.name))return;let e=new Set([...this._langMap.values()].filter(r=>r.embeddedLangsLazy?.includes(t.name)));this._resolver.addLanguage(t);let n={balancedBracketSelectors:t.balancedBracketSelectors||["*"],unbalancedBracketSelectors:t.unbalancedBracketSelectors||[]};this._syncRegistry._rawGrammars.set(t.scopeName,t);let a=this.loadGrammarWithConfiguration(t.scopeName,1,n);if(a.name=t.name,this._resolvedGrammars.set(t.name,a),t.aliases&&t.aliases.forEach(r=>{this._alias[r]=t.name}),this._loadedLanguagesCache=null,e.size)for(let r of e)this._resolvedGrammars.delete(r.name),this._loadedLanguagesCache=null,this._syncRegistry?._injectionGrammars?.delete(r.scopeName),this._syncRegistry?._grammars?.delete(r.scopeName),this.loadLanguage(this._langMap.get(r.name))}dispose(){super.dispose(),this._resolvedThemes.clear(),this._resolvedGrammars.clear(),this._langMap.clear(),this._langGraph.clear(),this._loadedThemesCache=null}loadLanguages(t){for(let a of t)this.resolveEmbeddedLanguages(a);let e=Array.from(this._langGraph.entries()),n=e.filter(([a,r])=>!r);if(n.length){let a=e.filter(([r,i])=>i?(i.embeddedLanguages||i.embeddedLangs)?.some(s=>n.map(([o])=>o).includes(s)):!1).filter(r=>!n.includes(r));throw new Ne(`Missing languages ${n.map(([r])=>`\`${r}\``).join(", ")}, required by ${a.map(([r])=>`\`${r}\``).join(", ")}`)}for(let[a,r]of e)this._resolver.addLanguage(r);for(let[a,r]of e)this.loadLanguage(r)}getLoadedLanguages(){return this._loadedLanguagesCache||(this._loadedLanguagesCache=[...new Set([...this._resolvedGrammars.keys(),...Object.keys(this._alias)])]),this._loadedLanguagesCache}resolveEmbeddedLanguages(t){this._langMap.set(t.name,t),this._langGraph.set(t.name,t);let e=t.embeddedLanguages??t.embeddedLangs;if(e)for(let n of e)this._langGraph.set(n,this._langMap.get(n))}},GN=class{_langs=new Map;_scopeToLang=new Map;_injections=new Map;_onigLib;constructor(t,e){this._onigLib={createOnigScanner:n=>t.createScanner(n),createOnigString:n=>t.createString(n)},e.forEach(n=>this.addLanguage(n))}get onigLib(){return this._onigLib}getLangRegistration(t){return this._langs.get(t)}loadGrammar(t){return this._scopeToLang.get(t)}addLanguage(t){this._langs.set(t.name,t),t.aliases&&t.aliases.forEach(e=>{this._langs.set(e,t)}),this._scopeToLang.set(t.scopeName,t),t.injectTo&&t.injectTo.forEach(e=>{this._injections.get(e)||this._injections.set(e,[]),this._injections.get(e).push(t.scopeName)})}getInjections(t){let e=t.split("."),n=[];for(let a=1;a<=e.length;a++){let r=e.slice(0,a).join(".");n=[...n,...this._injections.get(r)||[]]}return n}},Sl=0;function Mg(t){Sl+=1,t.warnings!==!1&&Sl>=10&&Sl%10===0&&console.warn(`[Shiki] ${Sl} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \`highlighter.dispose()\` to release unused instances.`);let e=!1;if(!t.engine)throw new Ne("`engine` option is required for synchronous mode");let n=(t.langs||[]).flat(1),a=(t.themes||[]).flat(1).map(Np),r=new qN(new GN(t.engine,n),a,n,t.langAlias),i;function s(_){return Uv(_,t.langAlias)}function o(_){y();let $=r.getGrammar(typeof _=="string"?_:_.name);if(!$)throw new Ne(`Language \`${_}\` not found, you may need to load it first`);return $}function l(_){if(_==="none")return{bg:"",fg:"",name:"none",settings:[],type:"dark"};y();let $=r.getTheme(_);if(!$)throw new Ne(`Theme \`${_}\` not found, you may need to load it first`);return $}function c(_){y();let $=l(_);return i!==_&&(r.setTheme($),i=_),{theme:$,colorMap:r.getColorMap()}}function u(){return y(),r.getLoadedThemes()}function p(){return y(),r.getLoadedLanguages()}function d(..._){y(),r.loadLanguages(_.flat(1))}async function m(..._){return d(await Vv(_))}function h(..._){y();for(let $ of _.flat(1))r.loadTheme($)}async function b(..._){return y(),h(await Wv(_))}function y(){if(e)throw new Ne("Shiki instance has been disposed")}function w(){e||(e=!0,r.dispose(),Sl-=1)}return{setTheme:c,getTheme:l,getLanguage:o,getLoadedThemes:u,getLoadedLanguages:p,resolveLangAlias:s,loadLanguage:m,loadLanguageSync:d,loadTheme:b,loadThemeSync:h,dispose:w,[Symbol.dispose]:w}}async function Ng(t){t.engine||console.warn("`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.");let[e,n,a]=await Promise.all([Wv(t.themes||[]),Vv(t.langs||[]),t.engine]);return Mg({...t,themes:e,langs:n,engine:a})}var Kv=new WeakMap;function Ml(t,e){Kv.set(t,e)}function Ws(t){return Kv.get(t)}var Ip=class Xv{_stacks={};lang;get themes(){return Object.keys(this._stacks)}get theme(){return this.themes[0]}get _stack(){return this._stacks[this.theme]}static initial(e,n){return new Xv(Object.fromEntries(qv(n).map(a=>[a,Mp])),e)}constructor(...e){if(e.length===2){let[n,a]=e;this.lang=a,this._stacks=n}else{let[n,a,r]=e;this.lang=a,this._stacks={[r]:n}}}getInternalStack(e=this.theme){return this._stacks[e]}getScopes(e=this.theme){return HN(this._stacks[e])}toJSON(){return{lang:this.lang,theme:this.theme,themes:this.themes,scopes:this.getScopes()}}};function HN(t){let e=[],n=new Set;function a(r){if(n.has(r))return;n.add(r);let i=r?.nameScopesList?.scopeName;i&&e.push(i),r.parent&&a(r.parent)}return a(t),e}function VN(t,e){if(!(t instanceof Ip))throw new Ne("Invalid grammar state");return t.getInternalStack(e)}function Ig(t,e,n={}){let{theme:a=t.getLoadedThemes()[0]}=n;if(Al(t.resolveLangAlias(n.lang||"text"))||Tl(a))return Vs(e).map(o=>[{content:o[0],offset:o[1]}]);let{theme:r,colorMap:i}=t.setTheme(a),s=t.getLanguage(n.lang||"text");if(n.grammarState){if(n.grammarState.lang!==s.name)throw new Ne(`Grammar state language "${n.grammarState.lang}" does not match highlight language "${s.name}"`);if(!n.grammarState.themes.includes(r.name))throw new Ne(`Grammar state themes "${n.grammarState.themes}" do not contain highlight theme "${r.name}"`)}return Jv(e,s,r,i,n)}function Zv(...t){if(t.length===2)return Ws(t[1]);let[e,n,a={}]=t,{lang:r="text",theme:i=e.getLoadedThemes()[0]}=a;if(Al(r)||Tl(i))throw new Ne("Plain language does not have grammar state");if(r==="ansi")throw new Ne("ANSI language does not have grammar state");let{theme:s,colorMap:o}=e.setTheme(i),l=e.getLanguage(r);return new Ip(Rg(n,l,s,o,a).stateStack,l.name,s.name)}function Jv(t,e,n,a,r){let i=Rg(t,e,n,a,r),s=new Ip(i.stateStack,e.name,n.name);return Ml(i.tokens,s),i.tokens}function Rg(t,e,n,a,r){let i=El(n,r),{tokenizeMaxLineLength:s=0,tokenizeTimeLimit:o=500}=r,l=Vs(t),c=r.grammarState?VN(r.grammarState,n.name)??Mp:r.grammarContextCode!=null?Rg(r.grammarContextCode,e,n,a,{...r,grammarState:void 0,grammarContextCode:void 0}).stateStack:Mp,u=[],p=[];for(let d=0,m=l.length;d<m;d++){let[h,b]=l[d];if(h===""){u=[],p.push([]);continue}if(s>0&&h.length>=s){u=[],p.push([{content:h,offset:b,color:"",fontStyle:0}]);continue}let y,w,_;r.includeExplanation&&(y=e.tokenizeLine(h,c,o),w=y.tokens,_=0);let $=e.tokenizeLine2(h,c,o),M=$.tokens.length/2;for(let N=0;N<M;N++){let E=$.tokens[2*N],I=N+1<M?$.tokens[2*N+2]:h.length;if(E===I)continue;let F=$.tokens[2*N+1],L=Oa(a[vi.getForeground(F)],i),T=vi.getFontStyle(F),ce={content:h.substring(E,I),offset:b+E,color:L,fontStyle:T};if(r.includeExplanation){let Y=[];if(r.includeExplanation!=="scopeName")for(let J of n.settings){let ee;switch(typeof J.scope){case"string":ee=J.scope.split(/,/).map(_e=>_e.trim());break;case"object":ee=J.scope;break;default:continue}Y.push({settings:J,selectors:ee.map(_e=>_e.split(/ /))})}ce.explanation=[];let K=0;for(;E+K<I;){let J=w[_],ee=h.substring(J.startIndex,J.endIndex);K+=ee.length,ce.explanation.push({content:ee,scopes:r.includeExplanation==="scopeName"?WN(J.scopes):UN(Y,J.scopes)}),_+=1}}u.push(ce)}p.push(u),u=[],c=$.ruleStack}return{tokens:p,stateStack:c}}function WN(t){return t.map(e=>({scopeName:e}))}function UN(t,e){let n=[];for(let a=0,r=e.length;a<r;a++){let i=e[a];n[a]={scopeName:i,themeMatches:XN(t,i,e.slice(0,a))}}return n}function Pv(t,e){return t===e||e.substring(0,t.length)===t&&e[t.length]==="."}function KN(t,e,n){if(!Pv(t[t.length-1],e))return!1;let a=t.length-2,r=n.length-1;for(;a>=0&&r>=0;)Pv(t[a],n[r])&&(a-=1),r-=1;return a===-1}function XN(t,e,n){let a=[];for(let{selectors:r,settings:i}of t)for(let s of r)if(KN(s,e,n)){a.push(i);break}return a}function Rp(t,e,n,a=Ig){let r=Object.entries(n.themes).filter(c=>c[1]).map(c=>({color:c[0],theme:c[1]})),i=r.map(c=>{let u=a(t,e,{...n,theme:c.theme});return{tokens:u,state:Ws(u),theme:typeof c.theme=="string"?c.theme:c.theme.name}}),s=ZN(...i.map(c=>c.tokens)),o=s[0].map((c,u)=>c.map((p,d)=>{let m={content:p.content,variants:{},offset:p.offset};return"includeExplanation"in n&&n.includeExplanation&&(m.explanation=p.explanation),s.forEach((h,b)=>{let{content:y,explanation:w,offset:_,...$}=h[u][d];m.variants[r[b].color]=$}),m})),l=i[0].state?new Ip(Object.fromEntries(i.map(c=>[c.theme,c.state?.getInternalStack(c.theme)])),i[0].state.lang):void 0;return l&&Ml(o,l),o}function ZN(...t){let e=t.map(()=>[]),n=t.length;for(let a=0;a<t[0].length;a++){let r=t.map(l=>l[a]),i=e.map(()=>[]);e.forEach((l,c)=>l.push(i[c]));let s=r.map(()=>0),o=r.map(l=>l[0]);for(;o.every(l=>l);){let l=Math.min(...o.map(c=>c.content.length));for(let c=0;c<n;c++){let u=o[c];u.content.length===l?(i[c].push(u),s[c]+=1,o[c]=r[c][s[c]]):(i[c].push({...u,content:u.content.slice(0,l)}),o[c]={...u,content:u.content.slice(l),offset:u.offset+l})}}}return e}var Yv=["area","base","basefont","bgsound","br","col","command","embed","frame","hr","image","img","input","keygen","link","meta","param","source","track","wbr"];var Ba=class{constructor(e,n,a){this.normal=n,this.property=e,a&&(this.space=a)}};Ba.prototype.normal={};Ba.prototype.property={};Ba.prototype.space=void 0;function zg(t,e){let n={},a={};for(let r of t)Object.assign(n,r.property),Object.assign(a,r.normal);return new Ba(n,a,e)}function Nl(t){return t.toLowerCase()}var ht=class{constructor(e,n){this.attribute=n,this.property=e}};ht.prototype.attribute="";ht.prototype.booleanish=!1;ht.prototype.boolean=!1;ht.prototype.commaOrSpaceSeparated=!1;ht.prototype.commaSeparated=!1;ht.prototype.defined=!1;ht.prototype.mustUseProperty=!1;ht.prototype.number=!1;ht.prototype.overloadedBoolean=!1;ht.prototype.property="";ht.prototype.spaceSeparated=!1;ht.prototype.space=void 0;var Il={};qb(Il,{boolean:()=>de,booleanish:()=>He,commaOrSpaceSeparated:()=>Jt,commaSeparated:()=>yr,number:()=>q,overloadedBoolean:()=>zp,spaceSeparated:()=>Ae});var JN=0,de=$i(),He=$i(),zp=$i(),q=$i(),Ae=$i(),yr=$i(),Jt=$i();function $i(){return 2**++JN}var Og=Object.keys(Il),Ci=class extends ht{constructor(e,n,a,r){let i=-1;if(super(e,n),Qv(this,"space",r),typeof a=="number")for(;++i<Og.length;){let s=Og[i];Qv(this,Og[i],(a&Il[s])===Il[s])}}};Ci.prototype.defined=!0;function Qv(t,e,n){n&&(t[e]=n)}function An(t){let e={},n={};for(let[a,r]of Object.entries(t.properties)){let i=new Ci(a,t.transform(t.attributes||{},a),r,t.space);t.mustUseProperty&&t.mustUseProperty.includes(a)&&(i.mustUseProperty=!0),e[a]=i,n[Nl(a)]=a,n[Nl(i.attribute)]=a}return new Ba(e,n,t.space)}var Bg=An({properties:{ariaActiveDescendant:null,ariaAtomic:He,ariaAutoComplete:null,ariaBusy:He,ariaChecked:He,ariaColCount:q,ariaColIndex:q,ariaColSpan:q,ariaControls:Ae,ariaCurrent:null,ariaDescribedBy:Ae,ariaDetails:null,ariaDisabled:He,ariaDropEffect:Ae,ariaErrorMessage:null,ariaExpanded:He,ariaFlowTo:Ae,ariaGrabbed:He,ariaHasPopup:null,ariaHidden:He,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Ae,ariaLevel:q,ariaLive:null,ariaModal:He,ariaMultiLine:He,ariaMultiSelectable:He,ariaOrientation:null,ariaOwns:Ae,ariaPlaceholder:null,ariaPosInSet:q,ariaPressed:He,ariaReadOnly:He,ariaRelevant:null,ariaRequired:He,ariaRoleDescription:Ae,ariaRowCount:q,ariaRowIndex:q,ariaRowSpan:q,ariaSelected:He,ariaSetSize:q,ariaSort:null,ariaValueMax:q,ariaValueMin:q,ariaValueNow:q,ariaValueText:null,role:null},transform(t,e){return e==="role"?e:"aria-"+e.slice(4).toLowerCase()}});function Op(t,e){return e in t?t[e]:e}function Bp(t,e){return Op(t,e.toLowerCase())}var e$=An({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:yr,acceptCharset:Ae,accessKey:Ae,action:null,allow:null,allowFullScreen:de,allowPaymentRequest:de,allowUserMedia:de,alt:null,as:null,async:de,autoCapitalize:null,autoComplete:Ae,autoFocus:de,autoPlay:de,blocking:Ae,capture:null,charSet:null,checked:de,cite:null,className:Ae,cols:q,colSpan:null,content:null,contentEditable:He,controls:de,controlsList:Ae,coords:q|yr,crossOrigin:null,data:null,dateTime:null,decoding:null,default:de,defer:de,dir:null,dirName:null,disabled:de,download:zp,draggable:He,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:de,formTarget:null,headers:Ae,height:q,hidden:zp,high:q,href:null,hrefLang:null,htmlFor:Ae,httpEquiv:Ae,id:null,imageSizes:null,imageSrcSet:null,inert:de,inputMode:null,integrity:null,is:null,isMap:de,itemId:null,itemProp:Ae,itemRef:Ae,itemScope:de,itemType:Ae,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:de,low:q,manifest:null,max:null,maxLength:q,media:null,method:null,min:null,minLength:q,multiple:de,muted:de,name:null,nonce:null,noModule:de,noValidate:de,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:de,optimum:q,pattern:null,ping:Ae,placeholder:null,playsInline:de,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:de,referrerPolicy:null,rel:Ae,required:de,reversed:de,rows:q,rowSpan:q,sandbox:Ae,scope:null,scoped:de,seamless:de,selected:de,shadowRootClonable:de,shadowRootDelegatesFocus:de,shadowRootMode:null,shape:null,size:q,sizes:null,slot:null,span:q,spellCheck:He,src:null,srcDoc:null,srcLang:null,srcSet:null,start:q,step:null,style:null,tabIndex:q,target:null,title:null,translate:null,type:null,typeMustMatch:de,useMap:null,value:He,width:q,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Ae,axis:null,background:null,bgColor:null,border:q,borderColor:null,bottomMargin:q,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:de,declare:de,event:null,face:null,frame:null,frameBorder:null,hSpace:q,leftMargin:q,link:null,longDesc:null,lowSrc:null,marginHeight:q,marginWidth:q,noResize:de,noHref:de,noShade:de,noWrap:de,object:null,profile:null,prompt:null,rev:null,rightMargin:q,rules:null,scheme:null,scrolling:He,standby:null,summary:null,text:null,topMargin:q,valueType:null,version:null,vAlign:null,vLink:null,vSpace:q,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:de,disableRemotePlayback:de,prefix:null,property:null,results:q,security:null,unselectable:null},space:"html",transform:Bp});var t$=An({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Jt,accentHeight:q,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:q,amplitude:q,arabicForm:null,ascent:q,attributeName:null,attributeType:null,azimuth:q,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:q,by:null,calcMode:null,capHeight:q,className:Ae,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:q,diffuseConstant:q,direction:null,display:null,dur:null,divisor:q,dominantBaseline:null,download:de,dx:null,dy:null,edgeMode:null,editable:null,elevation:q,enableBackground:null,end:null,event:null,exponent:q,externalResourcesRequired:null,fill:null,fillOpacity:q,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:yr,g2:yr,glyphName:yr,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:q,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:q,horizOriginX:q,horizOriginY:q,id:null,ideographic:q,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:q,k:q,k1:q,k2:q,k3:q,k4:q,kernelMatrix:Jt,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:q,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:q,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:q,overlineThickness:q,paintOrder:null,panose1:null,path:null,pathLength:q,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Ae,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:q,pointsAtY:q,pointsAtZ:q,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Jt,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Jt,rev:Jt,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Jt,requiredFeatures:Jt,requiredFonts:Jt,requiredFormats:Jt,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:q,specularExponent:q,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:q,strikethroughThickness:q,string:null,stroke:null,strokeDashArray:Jt,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:q,strokeOpacity:q,strokeWidth:null,style:null,surfaceScale:q,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Jt,tabIndex:q,tableValues:null,target:null,targetX:q,targetY:q,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Jt,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:q,underlineThickness:q,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:q,values:null,vAlphabetic:q,vMathematical:q,vectorEffect:null,vHanging:q,vIdeographic:q,version:null,vertAdvY:q,vertOriginX:q,vertOriginY:q,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:q,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:Op});var Lg=An({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(t,e){return"xlink:"+e.slice(5).toLowerCase()}});var Dg=An({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:Bp});var Fg=An({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(t,e){return"xml:"+e.slice(3).toLowerCase()}});var YN=/[A-Z]/g,n$=/-[a-z]/g,QN=/^data[-\w.:]+$/i;function Pg(t,e){let n=Nl(e),a=e,r=ht;if(n in t.normal)return t.property[t.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&QN.test(e)){if(e.charAt(4)==="-"){let i=e.slice(5).replace(n$,tI);a="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{let i=e.slice(4);if(!n$.test(i)){let s=i.replace(YN,eI);s.charAt(0)!=="-"&&(s="-"+s),e="data"+s}}r=Ci}return new r(a,e)}function eI(t){return"-"+t.toLowerCase()}function tI(t){return t.charAt(1).toUpperCase()}var a$=zg([Bg,e$,Lg,Dg,Fg],"html"),Lp=zg([Bg,t$,Lg,Dg,Fg],"svg");var nI=/["&'<>`]/g,aI=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,rI=/[\x01-\t\v\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,iI=/[|\\{}()[\]^$+*?.]/g,r$=new WeakMap;function i$(t,e){if(t=t.replace(e.subset?sI(e.subset):nI,a),e.subset||e.escapeOnly)return t;return t.replace(aI,n).replace(rI,a);function n(r,i,s){return e.format((r.charCodeAt(0)-55296)*1024+r.charCodeAt(1)-56320+65536,s.charCodeAt(i+2),e)}function a(r,i,s){return e.format(r.charCodeAt(0),s.charCodeAt(i+1),e)}}function sI(t){let e=r$.get(t);return e||(e=oI(t),r$.set(t,e)),e}function oI(t){let e=[],n=-1;for(;++n<t.length;)e.push(t[n].replace(iI,"\\$&"));return new RegExp("(?:"+e.join("|")+")","g")}var lI=/[\dA-Fa-f]/;function s$(t,e,n){let a="&#x"+t.toString(16).toUpperCase();return n&&e&&!lI.test(String.fromCharCode(e))?a:a+";"}var cI=/\d/;function o$(t,e,n){let a="&#"+String(t);return n&&e&&!cI.test(String.fromCharCode(e))?a:a+";"}var l$=["AElig","AMP","Aacute","Acirc","Agrave","Aring","Atilde","Auml","COPY","Ccedil","ETH","Eacute","Ecirc","Egrave","Euml","GT","Iacute","Icirc","Igrave","Iuml","LT","Ntilde","Oacute","Ocirc","Ograve","Oslash","Otilde","Ouml","QUOT","REG","THORN","Uacute","Ucirc","Ugrave","Uuml","Yacute","aacute","acirc","acute","aelig","agrave","amp","aring","atilde","auml","brvbar","ccedil","cedil","cent","copy","curren","deg","divide","eacute","ecirc","egrave","eth","euml","frac12","frac14","frac34","gt","iacute","icirc","iexcl","igrave","iquest","iuml","laquo","lt","macr","micro","middot","nbsp","not","ntilde","oacute","ocirc","ograve","ordf","ordm","oslash","otilde","ouml","para","plusmn","pound","quot","raquo","reg","sect","shy","sup1","sup2","sup3","szlig","thorn","times","uacute","ucirc","ugrave","uml","uuml","yacute","yen","yuml"];var Dp={nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",Agrave:"\xC0",Aacute:"\xC1",Acirc:"\xC2",Atilde:"\xC3",Auml:"\xC4",Aring:"\xC5",AElig:"\xC6",Ccedil:"\xC7",Egrave:"\xC8",Eacute:"\xC9",Ecirc:"\xCA",Euml:"\xCB",Igrave:"\xCC",Iacute:"\xCD",Icirc:"\xCE",Iuml:"\xCF",ETH:"\xD0",Ntilde:"\xD1",Ograve:"\xD2",Oacute:"\xD3",Ocirc:"\xD4",Otilde:"\xD5",Ouml:"\xD6",times:"\xD7",Oslash:"\xD8",Ugrave:"\xD9",Uacute:"\xDA",Ucirc:"\xDB",Uuml:"\xDC",Yacute:"\xDD",THORN:"\xDE",szlig:"\xDF",agrave:"\xE0",aacute:"\xE1",acirc:"\xE2",atilde:"\xE3",auml:"\xE4",aring:"\xE5",aelig:"\xE6",ccedil:"\xE7",egrave:"\xE8",eacute:"\xE9",ecirc:"\xEA",euml:"\xEB",igrave:"\xEC",iacute:"\xED",icirc:"\xEE",iuml:"\xEF",eth:"\xF0",ntilde:"\xF1",ograve:"\xF2",oacute:"\xF3",ocirc:"\xF4",otilde:"\xF5",ouml:"\xF6",divide:"\xF7",oslash:"\xF8",ugrave:"\xF9",uacute:"\xFA",ucirc:"\xFB",uuml:"\xFC",yacute:"\xFD",thorn:"\xFE",yuml:"\xFF",fnof:"\u0192",Alpha:"\u0391",Beta:"\u0392",Gamma:"\u0393",Delta:"\u0394",Epsilon:"\u0395",Zeta:"\u0396",Eta:"\u0397",Theta:"\u0398",Iota:"\u0399",Kappa:"\u039A",Lambda:"\u039B",Mu:"\u039C",Nu:"\u039D",Xi:"\u039E",Omicron:"\u039F",Pi:"\u03A0",Rho:"\u03A1",Sigma:"\u03A3",Tau:"\u03A4",Upsilon:"\u03A5",Phi:"\u03A6",Chi:"\u03A7",Psi:"\u03A8",Omega:"\u03A9",alpha:"\u03B1",beta:"\u03B2",gamma:"\u03B3",delta:"\u03B4",epsilon:"\u03B5",zeta:"\u03B6",eta:"\u03B7",theta:"\u03B8",iota:"\u03B9",kappa:"\u03BA",lambda:"\u03BB",mu:"\u03BC",nu:"\u03BD",xi:"\u03BE",omicron:"\u03BF",pi:"\u03C0",rho:"\u03C1",sigmaf:"\u03C2",sigma:"\u03C3",tau:"\u03C4",upsilon:"\u03C5",phi:"\u03C6",chi:"\u03C7",psi:"\u03C8",omega:"\u03C9",thetasym:"\u03D1",upsih:"\u03D2",piv:"\u03D6",bull:"\u2022",hellip:"\u2026",prime:"\u2032",Prime:"\u2033",oline:"\u203E",frasl:"\u2044",weierp:"\u2118",image:"\u2111",real:"\u211C",trade:"\u2122",alefsym:"\u2135",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193",harr:"\u2194",crarr:"\u21B5",lArr:"\u21D0",uArr:"\u21D1",rArr:"\u21D2",dArr:"\u21D3",hArr:"\u21D4",forall:"\u2200",part:"\u2202",exist:"\u2203",empty:"\u2205",nabla:"\u2207",isin:"\u2208",notin:"\u2209",ni:"\u220B",prod:"\u220F",sum:"\u2211",minus:"\u2212",lowast:"\u2217",radic:"\u221A",prop:"\u221D",infin:"\u221E",ang:"\u2220",and:"\u2227",or:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",there4:"\u2234",sim:"\u223C",cong:"\u2245",asymp:"\u2248",ne:"\u2260",equiv:"\u2261",le:"\u2264",ge:"\u2265",sub:"\u2282",sup:"\u2283",nsub:"\u2284",sube:"\u2286",supe:"\u2287",oplus:"\u2295",otimes:"\u2297",perp:"\u22A5",sdot:"\u22C5",lceil:"\u2308",rceil:"\u2309",lfloor:"\u230A",rfloor:"\u230B",lang:"\u2329",rang:"\u232A",loz:"\u25CA",spades:"\u2660",clubs:"\u2663",hearts:"\u2665",diams:"\u2666",quot:'"',amp:"&",lt:"<",gt:">",OElig:"\u0152",oelig:"\u0153",Scaron:"\u0160",scaron:"\u0161",Yuml:"\u0178",circ:"\u02C6",tilde:"\u02DC",ensp:"\u2002",emsp:"\u2003",thinsp:"\u2009",zwnj:"\u200C",zwj:"\u200D",lrm:"\u200E",rlm:"\u200F",ndash:"\u2013",mdash:"\u2014",lsquo:"\u2018",rsquo:"\u2019",sbquo:"\u201A",ldquo:"\u201C",rdquo:"\u201D",bdquo:"\u201E",dagger:"\u2020",Dagger:"\u2021",permil:"\u2030",lsaquo:"\u2039",rsaquo:"\u203A",euro:"\u20AC"};var c$=["cent","copy","divide","gt","lt","not","para","times"];var u$={}.hasOwnProperty,qg={},Fp;for(Fp in Dp)u$.call(Dp,Fp)&&(qg[Dp[Fp]]=Fp);var uI=/[^\dA-Za-z]/;function p$(t,e,n,a){let r=String.fromCharCode(t);if(u$.call(qg,r)){let i=qg[r],s="&"+i;return n&&l$.includes(i)&&!c$.includes(i)&&(!a||e&&e!==61&&uI.test(String.fromCharCode(e)))?s:s+";"}return""}function d$(t,e,n){let a=s$(t,e,n.omitOptionalSemicolons),r;if((n.useNamedReferences||n.useShortestReferences)&&(r=p$(t,e,n.omitOptionalSemicolons,n.attribute)),(n.useShortestReferences||!r)&&n.useShortestReferences){let i=o$(t,e,n.omitOptionalSemicolons);i.length<a.length&&(a=i)}return r&&(!n.useShortestReferences||r.length<a.length)?r:a}function La(t,e){return i$(t,Object.assign({format:d$},e))}var pI=/^>|^->|<!--|-->|--!>|<!-$/g,dI=[">"],mI=["<",">"];function m$(t,e,n,a){return a.settings.bogusComments?"<?"+La(t.value,Object.assign({},a.settings.characterReferences,{subset:dI}))+">":"<!--"+t.value.replace(pI,r)+"-->";function r(i){return La(i,Object.assign({},a.settings.characterReferences,{subset:mI}))}}function h$(t,e,n,a){return"<!"+(a.settings.upperDoctype?"DOCTYPE":"doctype")+(a.settings.tightDoctype?"":" ")+"html>"}function f$(t,e){let n=e||{};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}function g$(t){return t.join(" ").trim()}var hI=/[ \t\n\f\r]/g;function ji(t){return typeof t=="object"?t.type==="text"?b$(t.value):!1:b$(t)}function b$(t){return t.replace(hI,"")===""}var Ue=y$(1),Gg=y$(-1),fI=[];function y$(t){return e;function e(n,a,r){let i=n?n.children:fI,s=(a||0)+t,o=i[s];if(!r)for(;o&&ji(o);)s+=t,o=i[s];return o}}var gI={}.hasOwnProperty;function Pp(t){return e;function e(n,a,r){return gI.call(t,n.tagName)&&t[n.tagName](n,a,r)}}var Rl=Pp({body:yI,caption:Hg,colgroup:Hg,dd:_I,dt:kI,head:Hg,html:bI,li:wI,optgroup:vI,option:$I,p:xI,rp:x$,rt:x$,tbody:jI,td:w$,tfoot:SI,th:w$,thead:CI,tr:EI});function Hg(t,e,n){let a=Ue(n,e,!0);return!a||a.type!=="comment"&&!(a.type==="text"&&ji(a.value.charAt(0)))}function bI(t,e,n){let a=Ue(n,e);return!a||a.type!=="comment"}function yI(t,e,n){let a=Ue(n,e);return!a||a.type!=="comment"}function xI(t,e,n){let a=Ue(n,e);return a?a.type==="element"&&(a.tagName==="address"||a.tagName==="article"||a.tagName==="aside"||a.tagName==="blockquote"||a.tagName==="details"||a.tagName==="div"||a.tagName==="dl"||a.tagName==="fieldset"||a.tagName==="figcaption"||a.tagName==="figure"||a.tagName==="footer"||a.tagName==="form"||a.tagName==="h1"||a.tagName==="h2"||a.tagName==="h3"||a.tagName==="h4"||a.tagName==="h5"||a.tagName==="h6"||a.tagName==="header"||a.tagName==="hgroup"||a.tagName==="hr"||a.tagName==="main"||a.tagName==="menu"||a.tagName==="nav"||a.tagName==="ol"||a.tagName==="p"||a.tagName==="pre"||a.tagName==="section"||a.tagName==="table"||a.tagName==="ul"):!n||!(n.type==="element"&&(n.tagName==="a"||n.tagName==="audio"||n.tagName==="del"||n.tagName==="ins"||n.tagName==="map"||n.tagName==="noscript"||n.tagName==="video"))}function wI(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&a.tagName==="li"}function kI(t,e,n){let a=Ue(n,e);return!!(a&&a.type==="element"&&(a.tagName==="dt"||a.tagName==="dd"))}function _I(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="dt"||a.tagName==="dd")}function x$(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="rp"||a.tagName==="rt")}function vI(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&a.tagName==="optgroup"}function $I(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="option"||a.tagName==="optgroup")}function CI(t,e,n){let a=Ue(n,e);return!!(a&&a.type==="element"&&(a.tagName==="tbody"||a.tagName==="tfoot"))}function jI(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="tbody"||a.tagName==="tfoot")}function SI(t,e,n){return!Ue(n,e)}function EI(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&a.tagName==="tr"}function w$(t,e,n){let a=Ue(n,e);return!a||a.type==="element"&&(a.tagName==="td"||a.tagName==="th")}var k$=Pp({body:MI,colgroup:NI,head:TI,html:AI,tbody:II});function AI(t){let e=Ue(t,-1);return!e||e.type!=="comment"}function TI(t){let e=new Set;for(let a of t.children)if(a.type==="element"&&(a.tagName==="base"||a.tagName==="title")){if(e.has(a.tagName))return!1;e.add(a.tagName)}let n=t.children[0];return!n||n.type==="element"}function MI(t){let e=Ue(t,-1,!0);return!e||e.type!=="comment"&&!(e.type==="text"&&ji(e.value.charAt(0)))&&!(e.type==="element"&&(e.tagName==="meta"||e.tagName==="link"||e.tagName==="script"||e.tagName==="style"||e.tagName==="template"))}function NI(t,e,n){let a=Gg(n,e),r=Ue(t,-1,!0);return n&&a&&a.type==="element"&&a.tagName==="colgroup"&&Rl(a,n.children.indexOf(a),n)?!1:!!(r&&r.type==="element"&&r.tagName==="col")}function II(t,e,n){let a=Gg(n,e),r=Ue(t,-1);return n&&a&&a.type==="element"&&(a.tagName==="thead"||a.tagName==="tbody")&&Rl(a,n.children.indexOf(a),n)?!1:!!(r&&r.type==="element"&&r.tagName==="tr")}var qp={name:[[` \f\r &/=>`.split(""),` \f\r "&'/=>\``.split("")],[`\0 \f\r "&'/<=>`.split(""),`\0 @@ -323,10 +323,10 @@ $$`:`$${t}$`)}</code>`;try{return y_.renderToString(t,{displayMode:e,throwOnErro \f\r &>`.split(""),`\0 \f\r "&'<=>\``.split("")],[`\0 \f\r "&'<=>\``.split(""),`\0 -\f\r "&'<=>\``.split("")]],single:[["&'".split(""),"\"&'`".split("")],["\0&'".split(""),"\0\"&'`".split("")]],double:[['"&'.split(""),"\"&'`".split("")],['\0"&'.split(""),"\0\"&'`".split("")]]};function Qv(t,e,n,a){let r=a.schema,i=r.space==="svg"?!1:a.settings.omitOptionalTags,s=r.space==="svg"?a.settings.closeEmptyElements:a.settings.voids.includes(t.tagName.toLowerCase()),o=[],l;r.space==="html"&&t.tagName==="svg"&&(a.schema=Ap);let c=YN(a,t.properties),u=a.all(r.space==="html"&&t.tagName==="template"?t.content:t);return a.schema=r,u&&(s=!1),(c||!i||!Yv(t,e,n))&&(o.push("<",t.tagName,c?" "+c:""),s&&(r.space==="svg"||a.settings.closeSelfClosing)&&(l=c.charAt(c.length-1),(!a.settings.tightSelfClosing||l==="/"||l&&l!=='"'&&l!=="'")&&o.push(" "),o.push("/")),o.push(">")),o.push(u),!s&&(!i||!$l(t,e,n))&&o.push("</"+t.tagName+">"),o.join("")}function YN(t,e){let n=[],a=-1,r;if(e){for(r in e)if(e[r]!==null&&e[r]!==void 0){let i=QN(t,r,e[r]);i&&n.push(i)}}for(;++a<n.length;){let i=t.settings.tightAttributes?n[a].charAt(n[a].length-1):void 0;a!==n.length-1&&i!=='"'&&i!=="'"&&(n[a]+=" ")}return n.join("")}function QN(t,e,n){let a=Eg(t.schema,e),r=t.settings.allowParseErrors&&t.schema.space==="html"?0:1,i=t.settings.allowDangerousCharacters?0:1,s=t.quote,o;if(a.overloadedBoolean&&(n===a.attribute||n==="")?n=!0:(a.boolean||a.overloadedBoolean)&&(typeof n!="string"||n===a.attribute||n==="")&&(n=!!n),n==null||n===!1||typeof n=="number"&&Number.isNaN(n))return"";let l=Ra(a.attribute,Object.assign({},t.settings.characterReferences,{subset:Ip.name[r][i]}));return n===!0||(n=Array.isArray(n)?(a.commaSeparated?Wv:Uv)(n,{padLeft:!t.settings.tightCommaSeparatedLists}):String(n),t.settings.collapseEmptyAttributes&&!n)?l:(t.settings.preferUnquoted&&(o=Ra(n,Object.assign({},t.settings.characterReferences,{attribute:!0,subset:Ip.unquoted[r][i]}))),o!==n&&(t.settings.quoteSmart&&As(n,s)>As(n,t.alternative)&&(s=t.alternative),o=s+Ra(n,Object.assign({},t.settings.characterReferences,{subset:(s==="'"?Ip.single:Ip.double)[r][i],attribute:!0}))+s),l+(o&&"="+o))}var eI=["<","&"];function Rp(t,e,n,a){return n&&n.type==="element"&&(n.tagName==="script"||n.tagName==="style")?t.value:Ra(t.value,Object.assign({},a.settings.characterReferences,{subset:eI}))}function e$(t,e,n,a){return a.settings.allowDangerousHtml?t.value:Rp(t,e,n,a)}function t$(t,e,n,a){return a.all(t)}var n$=dc("type",{invalid:tI,unknown:nI,handlers:{comment:Hv,doctype:Vv,element:Qv,raw:e$,root:t$,text:Rp}});function tI(t){throw new Error("Expected node, not `"+t+"`")}function nI(t){let e=t;throw new Error("Cannot compile unknown node `"+e.type+"`")}var aI={},rI={},iI=[];function Ng(t,e){let n=e||aI,a=n.quote||'"',r=a==='"'?"'":'"';if(a!=='"'&&a!=="'")throw new Error("Invalid quote `"+a+"`, expected `'` or `\"`");return{one:sI,all:oI,settings:{omitOptionalTags:n.omitOptionalTags||!1,allowParseErrors:n.allowParseErrors||!1,allowDangerousCharacters:n.allowDangerousCharacters||!1,quoteSmart:n.quoteSmart||!1,preferUnquoted:n.preferUnquoted||!1,tightAttributes:n.tightAttributes||!1,upperDoctype:n.upperDoctype||!1,tightDoctype:n.tightDoctype||!1,bogusComments:n.bogusComments||!1,tightCommaSeparatedLists:n.tightCommaSeparatedLists||!1,tightSelfClosing:n.tightSelfClosing||!1,collapseEmptyAttributes:n.collapseEmptyAttributes||!1,allowDangerousHtml:n.allowDangerousHtml||!1,voids:n.voids||Av,characterReferences:n.characterReferences||rI,closeSelfClosing:n.closeSelfClosing||!1,closeEmptyElements:n.closeEmptyElements||!1},schema:n.space==="svg"?Ap:Rv,quote:a,alternative:r}.one(Array.isArray(t)?{type:"root",children:t}:t,void 0,void 0)}function sI(t,e,n){return n$(t,e,n,this)}function oI(t){let e=[],n=t&&t.children||iI,a=-1;for(;++a<n.length;)e[a]=this.one(n[a],a,t);return e.join("")}function i$(t,e){if(!e)return t;t.properties||={},t.properties.class||=[],typeof t.properties.class=="string"&&(t.properties.class=t.properties.class.split(/\s+/g)),Array.isArray(t.properties.class)||(t.properties.class=[]);let n=Array.isArray(e)?e:e.split(/\s+/g);for(let a of n)a&&!t.properties.class.includes(a)&&t.properties.class.push(a);return t}function lI(t){let e=Os(t,!0).map(([r])=>r);function n(r){if(r===t.length)return{line:e.length-1,character:e[e.length-1].length};let i=r,s=0;for(let o of e){if(i<o.length)break;i-=o.length,s++}return{line:s,character:i}}function a(r,i){let s=0;for(let o=0;o<r;o++)s+=e[o].length;return s+=i,s}return{lines:e,indexToPos:n,posToIndex:a}}var Og="light-dark()",cI=["color","background-color"];function uI(t,e){let n=0,a=[];for(let r of e)r>n&&a.push({...t,content:t.content.slice(n,r),offset:t.offset+n}),n=r;return n<t.content.length&&a.push({...t,content:t.content.slice(n),offset:t.offset+n}),a}function pI(t,e){let n=Array.from(e instanceof Set?e:new Set(e)).sort((a,r)=>a-r);return n.length?t.map(a=>a.flatMap(r=>{let i=n.filter(s=>r.offset<s&&s<r.offset+r.content.length).map(s=>s-r.offset).sort((s,o)=>s-o);return i.length?uI(r,i):r})):t}function dI(t,e,n,a,r="css-vars"){let i={content:t.content,explanation:t.explanation,offset:t.offset},s=e.map(u=>zp(t.variants[u])),o=new Set(s.flatMap(u=>Object.keys(u))),l={},c=(u,p)=>{let d=p==="color"?"":p==="background-color"?"-bg":`-${p}`;return n+e[u]+(p==="color"?"":d)};return s.forEach((u,p)=>{for(let d of o){let m=u[d]||"inherit";if(p===0&&a&&cI.includes(d))if(a===Og&&s.length>1){let h=e.findIndex(y=>y==="light"),b=e.findIndex(y=>y==="dark");if(h===-1||b===-1)throw new Ne('When using `defaultColor: "light-dark()"`, you must provide both `light` and `dark` themes');l[d]=`light-dark(${s[h][d]||"inherit"}, ${s[b][d]||"inherit"})`,r==="css-vars"&&(l[c(p,d)]=m)}else l[d]=m;else r==="css-vars"&&(l[c(p,d)]=m)}}),i.htmlStyle=l,i}function zp(t){let e={};if(t.color&&(e.color=t.color),t.bgColor&&(e["background-color"]=t.bgColor),t.fontStyle){t.fontStyle&_t.Italic&&(e["font-style"]="italic"),t.fontStyle&_t.Bold&&(e["font-weight"]="bold");let n=[];t.fontStyle&_t.Underline&&n.push("underline"),t.fontStyle&_t.Strikethrough&&n.push("line-through"),n.length&&(e["text-decoration"]=n.join(" "))}return e}function Rg(t){return typeof t=="string"?t:Object.entries(t).map(([e,n])=>`${e}:${n}`).join(";")}function mI(){let t=new WeakMap;function e(n){if(!t.has(n.meta)){let r=function(s){if(typeof s=="number"){if(s<0||s>n.source.length)throw new Ne(`Invalid decoration offset: ${s}. Code length: ${n.source.length}`);return{...a.indexToPos(s),offset:s}}else{let o=a.lines[s.line];if(o===void 0)throw new Ne(`Invalid decoration position ${JSON.stringify(s)}. Lines length: ${a.lines.length}`);let l=s.character;if(l<0&&(l=o.length+l),l<0||l>o.length)throw new Ne(`Invalid decoration position ${JSON.stringify(s)}. Line ${s.line} length: ${o.length}`);return{...s,character:l,offset:a.posToIndex(s.line,l)}}},a=lI(n.source),i=(n.options.decorations||[]).map(s=>({...s,start:r(s.start),end:r(s.end)}));hI(i),t.set(n.meta,{decorations:i,converter:a,source:n.source})}return t.get(n.meta)}return{name:"shiki:decorations",tokens(n){if(this.options.decorations?.length)return pI(n,e(this).decorations.flatMap(a=>[a.start.offset,a.end.offset]))},code(n){if(!this.options.decorations?.length)return;let a=e(this),r=Array.from(n.children).filter(u=>u.type==="element"&&u.tagName==="span");if(r.length!==a.converter.lines.length)throw new Ne(`Number of lines in code element (${r.length}) does not match the number of lines in the source (${a.converter.lines.length}). Failed to apply decorations.`);function i(u,p,d,m){let h=r[u],b="",y=-1,k=-1;if(p===0&&(y=0),d===0&&(k=0),d===Number.POSITIVE_INFINITY&&(k=h.children.length),y===-1||k===-1)for(let $=0;$<h.children.length;$++)b+=s$(h.children[$]),y===-1&&b.length===p&&(y=$+1),k===-1&&b.length===d&&(k=$+1);if(y===-1)throw new Ne(`Failed to find start index for decoration ${JSON.stringify(m.start)}`);if(k===-1)throw new Ne(`Failed to find end index for decoration ${JSON.stringify(m.end)}`);let _=h.children.slice(y,k);if(!m.alwaysWrap&&_.length===h.children.length)o(h,m,"line");else if(!m.alwaysWrap&&_.length===1&&_[0].type==="element")o(_[0],m,"token");else{let $={type:"element",tagName:"span",properties:{},children:_};o($,m,"wrapper"),h.children.splice(y,_.length,$)}}function s(u,p){r[u]=o(r[u],p,"line")}function o(u,p,d){let m=p.properties||{},h=p.transform||(b=>b);return u.tagName=p.tagName||"span",u.properties={...u.properties,...m,class:u.properties.class},p.properties?.class&&i$(u,p.properties.class),u=h(u,d)||u,u}let l=[],c=a.decorations.sort((u,p)=>p.start.offset-u.start.offset||u.end.offset-p.end.offset);for(let u of c){let{start:p,end:d}=u;if(p.line===d.line)i(p.line,p.character,d.character,u);else if(p.line<d.line){i(p.line,p.character,Number.POSITIVE_INFINITY,u);for(let m=p.line+1;m<d.line;m++)l.unshift(()=>s(m,u));i(d.line,0,d.character,u)}}l.forEach(u=>u())}}}function hI(t){for(let e=0;e<t.length;e++){let n=t[e];if(n.start.offset>n.end.offset)throw new Ne(`Invalid decoration range: ${JSON.stringify(n.start)} - ${JSON.stringify(n.end)}`);for(let a=e+1;a<t.length;a++){let r=t[a],i=n.start.offset<=r.start.offset&&r.start.offset<n.end.offset,s=n.start.offset<r.end.offset&&r.end.offset<=n.end.offset,o=r.start.offset<=n.start.offset&&n.start.offset<r.end.offset,l=r.start.offset<n.end.offset&&n.end.offset<=r.end.offset;if(i||s||o||l){if(i&&s||o&&l||o&&n.start.offset===n.end.offset||s&&r.start.offset===r.end.offset)continue;throw new Ne(`Decorations ${JSON.stringify(n.start)} and ${JSON.stringify(r.start)} intersect.`)}}}}function s$(t){return t.type==="text"?t.value:t.type==="element"?t.children.map(s$).join(""):""}var fI=[mI()];function Op(t){let e=gI(t.transformers||[]);return[...e.pre,...e.normal,...e.post,...fI]}function gI(t){let e=[],n=[],a=[];for(let r of t)switch(r.enforce){case"pre":e.push(r);break;case"post":n.push(r);break;default:a.push(r)}return{pre:e,post:n,normal:a}}var xi=["black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite"],Ig={1:"bold",2:"dim",3:"italic",4:"underline",7:"reverse",8:"hidden",9:"strikethrough"};function bI(t,e){let n=t.indexOf("\x1B",e);if(n!==-1&&t[n+1]==="["){let a=t.indexOf("m",n);if(a!==-1)return{sequence:t.substring(n+2,a).split(";"),startPosition:n,position:a+1}}return{position:t.length}}function a$(t){let e=t.shift();if(e==="2"){let n=t.splice(0,3).map(a=>Number.parseInt(a));return n.length!==3||n.some(a=>Number.isNaN(a))?void 0:{type:"rgb",rgb:n}}else if(e==="5"){let n=t.shift();if(n)return{type:"table",index:Number(n)}}}function yI(t){let e=[];for(;t.length>0;){let n=t.shift();if(!n)continue;let a=Number.parseInt(n);if(!Number.isNaN(a))if(a===0)e.push({type:"resetAll"});else if(a<=9)Ig[a]&&e.push({type:"setDecoration",value:Ig[a]});else if(a<=29){let r=Ig[a-20];r&&(e.push({type:"resetDecoration",value:r}),r==="dim"&&e.push({type:"resetDecoration",value:"bold"}))}else if(a<=37)e.push({type:"setForegroundColor",value:{type:"named",name:xi[a-30]}});else if(a===38){let r=a$(t);r&&e.push({type:"setForegroundColor",value:r})}else if(a===39)e.push({type:"resetForegroundColor"});else if(a<=47)e.push({type:"setBackgroundColor",value:{type:"named",name:xi[a-40]}});else if(a===48){let r=a$(t);r&&e.push({type:"setBackgroundColor",value:r})}else a===49?e.push({type:"resetBackgroundColor"}):a===53?e.push({type:"setDecoration",value:"overline"}):a===55?e.push({type:"resetDecoration",value:"overline"}):a>=90&&a<=97?e.push({type:"setForegroundColor",value:{type:"named",name:xi[a-90+8]}}):a>=100&&a<=107&&e.push({type:"setBackgroundColor",value:{type:"named",name:xi[a-100+8]}})}return e}function xI(){let t=null,e=null,n=new Set;return{parse(a){let r=[],i=0;do{let s=bI(a,i),o=s.sequence?a.substring(i,s.startPosition):a.substring(i);if(o.length>0&&r.push({value:o,foreground:t,background:e,decorations:new Set(n)}),s.sequence){let l=yI(s.sequence);for(let c of l)c.type==="resetAll"?(t=null,e=null,n.clear()):c.type==="resetForegroundColor"?t=null:c.type==="resetBackgroundColor"?e=null:c.type==="resetDecoration"&&n.delete(c.value);for(let c of l)c.type==="setForegroundColor"?t=c.value:c.type==="setBackgroundColor"?e=c.value:c.type==="setDecoration"&&n.add(c.value)}i=s.position}while(i<a.length);return r}}}var kI={black:"#000000",red:"#bb0000",green:"#00bb00",yellow:"#bbbb00",blue:"#0000bb",magenta:"#ff00ff",cyan:"#00bbbb",white:"#eeeeee",brightBlack:"#555555",brightRed:"#ff5555",brightGreen:"#00ff00",brightYellow:"#ffff55",brightBlue:"#5555ff",brightMagenta:"#ff55ff",brightCyan:"#55ffff",brightWhite:"#ffffff"};function wI(t=kI){function e(o){return t[o]}function n(o){return`#${o.map(l=>Math.max(0,Math.min(l,255)).toString(16).padStart(2,"0")).join("")}`}let a;function r(){if(a)return a;a=[];for(let c=0;c<xi.length;c++)a.push(e(xi[c]));let o=[0,95,135,175,215,255];for(let c=0;c<6;c++)for(let u=0;u<6;u++)for(let p=0;p<6;p++)a.push(n([o[c],o[u],o[p]]));let l=8;for(let c=0;c<24;c++,l+=10)a.push(n([l,l,l]));return a}function i(o){return r()[o]}function s(o){switch(o.type){case"named":return e(o.name);case"rgb":return n(o.rgb);case"table":return i(o.index)}}return{value:s}}var _I={black:"#000000",red:"#cd3131",green:"#0DBC79",yellow:"#E5E510",blue:"#2472C8",magenta:"#BC3FBC",cyan:"#11A8CD",white:"#E5E5E5",brightBlack:"#666666",brightRed:"#F14C4C",brightGreen:"#23D18B",brightYellow:"#F5F543",brightBlue:"#3B8EEA",brightMagenta:"#D670D6",brightCyan:"#29B8DB",brightWhite:"#FFFFFF"};function vI(t,e,n){let a=yl(t,n),r=Os(e),i=wI(Object.fromEntries(xi.map(o=>{let l=`terminal.ansi${o[0].toUpperCase()}${o.substring(1)}`;return[o,t.colors?.[l]||_I[o]]}))),s=xI();return r.map(o=>s.parse(o[0]).map(l=>{let c,u;l.decorations.has("reverse")?(c=l.background?i.value(l.background):t.bg,u=l.foreground?i.value(l.foreground):t.fg):(c=l.foreground?i.value(l.foreground):t.fg,u=l.background?i.value(l.background):void 0),c=Na(c,a),u=Na(u,a),l.decorations.has("dim")&&(c=$I(c));let p=_t.None;return l.decorations.has("bold")&&(p|=_t.Bold),l.decorations.has("italic")&&(p|=_t.Italic),l.decorations.has("underline")&&(p|=_t.Underline),l.decorations.has("strikethrough")&&(p|=_t.Strikethrough),{content:l.value,offset:o[1],color:c,bgColor:u,fontStyle:p}}))}function $I(t){let e=t.match(/#([0-9a-f]{3,8})/i);if(e){let a=e[1];if(a.length===8){let r=Math.round(Number.parseInt(a.slice(6,8),16)/2).toString(16).padStart(2,"0");return`#${a.slice(0,6)}${r}`}else{if(a.length===6)return`#${a}80`;if(a.length===4){let r=a[0],i=a[1],s=a[2],o=a[3];return`#${r}${r}${i}${i}${s}${s}${Math.round(Number.parseInt(`${o}${o}`,16)/2).toString(16).padStart(2,"0")}`}else if(a.length===3){let r=a[0],i=a[1],s=a[2];return`#${r}${r}${i}${i}${s}${s}80`}}}let n=t.match(/var\((--[\w-]+-ansi-[\w-]+)\)/);return n?`var(${n[1]}-dim)`:t}function zg(t,e,n={}){let a=t.resolveLangAlias(n.lang||"text"),{theme:r=t.getLoadedThemes()[0]}=n;if(!xl(a)&&!kl(r)&&a==="ansi"){let{theme:i}=t.setTheme(r);return vI(i,e,n)}return kg(t,e,n)}function Bp(t,e,n){let a,r,i,s,o,l;if("themes"in n){let{defaultColor:c="light",cssVariablePrefix:u="--shiki-",colorsRendering:p="css-vars"}=n,d=Object.entries(n.themes).filter(k=>k[1]).map(k=>({color:k[0],theme:k[1]})).sort((k,_)=>k.color===c?-1:_.color===c?1:0);if(d.length===0)throw new Ne("`themes` option must not be empty");let m=Cp(t,e,n,zg);if(l=Bs(m),c&&Og!==c&&!d.find(k=>k.color===c))throw new Ne(`\`themes\` option must contain the defaultColor key \`${c}\``);let h=d.map(k=>t.getTheme(k.theme)),b=d.map(k=>k.color);i=m.map(k=>k.map(_=>dI(_,b,u,c,p))),l&&wl(i,l);let y=d.map(k=>yl(k.theme,n));r=r$(d,h,y,u,c,"fg",p),a=r$(d,h,y,u,c,"bg",p),s=`shiki-themes ${h.map(k=>k.name).join(" ")}`,o=c?void 0:[r,a].join(";")}else if("theme"in n){let c=yl(n.theme,n);i=zg(t,e,n);let u=t.getTheme(n.theme);a=Na(u.bg,c),r=Na(u.fg,c),s=u.name,l=Bs(i)}else throw new Ne("Invalid options, either `theme` or `themes` must be provided");return{tokens:i,fg:r,bg:a,themeName:s,rootStyle:o,grammarState:l}}function r$(t,e,n,a,r,i,s){return t.map((o,l)=>{let c=Na(e[l][i],n[l])||"inherit",u=`${a+o.color}${i==="bg"?"-bg":""}:${c}`;if(l===0&&r){if(r===Og&&t.length>1){let p=t.findIndex(m=>m.color==="light"),d=t.findIndex(m=>m.color==="dark");if(p===-1||d===-1)throw new Ne('When using `defaultColor: "light-dark()"`, you must provide both `light` and `dark` themes');return`light-dark(${Na(e[p][i],n[p])||"inherit"}, ${Na(e[d][i],n[d])||"inherit"});${u}`}return c}return s==="css-vars"?u:null}).filter(o=>!!o).join(";")}function Lp(t,e,n,a={meta:{},options:n,codeToHast:(r,i)=>Lp(t,r,i),codeToTokens:(r,i)=>Bp(t,r,i)}){let r=e;for(let h of Op(n))r=h.preprocess?.call(a,r,n)||r;let{tokens:i,fg:s,bg:o,themeName:l,rootStyle:c,grammarState:u}=Bp(t,r,n),{mergeWhitespaces:p=!0,mergeSameStyleTokens:d=!1}=n;p===!0?i=jI(i):p==="never"&&(i=SI(i)),d&&(i=EI(i));let m={...a,get source(){return r}};for(let h of Op(n))i=h.tokens?.call(m,i)||i;return CI(i,{...n,fg:s,bg:o,themeName:l,rootStyle:n.rootStyle===!1?!1:n.rootStyle??c},m,u)}function CI(t,e,n,a=Bs(t)){let r=Op(e),i=[],s={type:"root",children:[]},{structure:o="classic",tabindex:l="0"}=e,c={class:`shiki ${e.themeName||""}`};e.rootStyle!==!1&&(e.rootStyle!=null?c.style=e.rootStyle:c.style=`background-color:${e.bg};color:${e.fg}`),l!==!1&&l!=null&&(c.tabindex=l.toString());for(let[b,y]of Object.entries(e.meta||{}))b.startsWith("_")||(c[b]=y);let u={type:"element",tagName:"pre",properties:c,children:[],data:e.data},p={type:"element",tagName:"code",properties:{},children:i},d=[],m={...n,structure:o,addClassToHast:i$,get source(){return n.source},get tokens(){return t},get options(){return e},get root(){return s},get pre(){return u},get code(){return p},get lines(){return d}};if(t.forEach((b,y)=>{y&&(o==="inline"?s.children.push({type:"element",tagName:"br",properties:{},children:[]}):o==="classic"&&i.push({type:"text",value:` -`}));let k={type:"element",tagName:"span",properties:{class:"line"},children:[]},_=0;for(let $ of b){let M={type:"element",tagName:"span",properties:{...$.htmlAttrs},children:[{type:"text",value:$.content}]},N=Rg($.htmlStyle||zp($));N&&(M.properties.style=N);for(let E of r)M=E?.span?.call(m,M,y+1,_,k,$)||M;o==="inline"?s.children.push(M):o==="classic"&&k.children.push(M),_+=$.content.length}if(o==="classic"){for(let $ of r)k=$?.line?.call(m,k,y+1)||k;d.push(k),i.push(k)}else o==="inline"&&d.push(k)}),o==="classic"){for(let b of r)p=b?.code?.call(m,p)||p;u.children.push(p);for(let b of r)u=b?.pre?.call(m,u)||u;s.children.push(u)}else if(o==="inline"){let b=[],y={type:"element",tagName:"span",properties:{class:"line"},children:[]};for(let _ of s.children)_.type==="element"&&_.tagName==="br"?(b.push(y),y={type:"element",tagName:"span",properties:{class:"line"},children:[]}):(_.type==="element"||_.type==="text")&&y.children.push(_);b.push(y);let k={type:"element",tagName:"code",properties:{},children:b};for(let _ of r)k=_?.code?.call(m,k)||k;s.children=[];for(let _=0;_<k.children.length;_++){_>0&&s.children.push({type:"element",tagName:"br",properties:{},children:[]});let $=k.children[_];$.type==="element"&&s.children.push(...$.children)}}let h=s;for(let b of r)h=b?.root?.call(m,h)||h;return a&&wl(h,a),h}function jI(t){return t.map(e=>{let n=[],a="",r;return e.forEach((i,s)=>{let o=!(i.fontStyle&&(i.fontStyle&_t.Underline||i.fontStyle&_t.Strikethrough));o&&i.content.match(/^\s+$/)&&e[s+1]?(r===void 0&&(r=i.offset),a+=i.content):a?(o?n.push({...i,offset:r,content:a+i.content}):n.push({content:a,offset:r},i),r=void 0,a=""):n.push(i)}),n})}function SI(t){return t.map(e=>e.flatMap(n=>{if(n.content.match(/^\s+$/))return n;let a=n.content.match(/^(\s*)(.*?)(\s*)$/);if(!a)return n;let[,r,i,s]=a;if(!r&&!s)return n;let o=[{...n,offset:n.offset+r.length,content:i}];return r&&o.unshift({content:r,offset:n.offset}),s&&o.push({content:s,offset:n.offset+r.length+i.length}),o}))}function EI(t){return t.map(e=>{let n=[];for(let a of e){if(n.length===0){n.push({...a});continue}let r=n[n.length-1],i=Rg(r.htmlStyle||zp(r)),s=Rg(a.htmlStyle||zp(a)),o=r.fontStyle&&(r.fontStyle&_t.Underline||r.fontStyle&_t.Strikethrough),l=a.fontStyle&&(a.fontStyle&_t.Underline||a.fontStyle&_t.Strikethrough);!o&&!l&&i===s?r.content+=a.content:n.push({...a})}return n})}var AI=Ng;function TI(t,e,n){let a={meta:{},options:n,codeToHast:(i,s)=>Lp(t,i,s),codeToTokens:(i,s)=>Bp(t,i,s)},r=AI(Lp(t,e,n,a));for(let i of Op(n))r=i.postprocess?.call(a,r,n)||r;return r}async function o$(t){let e=await xg(t);return{getLastGrammarState:(...n)=>Sv(e,...n),codeToTokensBase:(n,a)=>zg(e,n,a),codeToTokensWithThemes:(n,a)=>Cp(e,n,a),codeToTokens:(n,a)=>Bp(e,n,a),codeToHast:(n,a)=>Lp(e,n,a),codeToHtml:(n,a)=>TI(e,n,a),getBundledLanguages:()=>({}),getBundledThemes:()=>({}),...e,getInternalContext:()=>e}}var l$=class{regexps;constructor(t,e={}){this.patterns=t,this.options=e;let{forgiving:n=!1,cache:a,regexConstructor:r}=e;if(!r)throw new Error("Option `regexConstructor` is not provided");this.regexps=t.map(i=>{if(typeof i!="string")return i;let s=a?.get(i);if(s){if(s instanceof RegExp)return s;if(n)return null;throw s}try{let o=r(i);return a?.set(i,o),o}catch(o){if(a?.set(i,o),n)return null;throw o}})}findNextMatchSync(t,e,n){let a=typeof t=="string"?t:t.content,r=[];function i(s,o,l=0){return{index:s,captureIndices:o.indices.map(c=>c==null?{start:4294967295,end:4294967295,length:0}:{start:c[0]+l,end:c[1]+l,length:c[1]-c[0]})}}for(let s=0;s<this.regexps.length;s++){let o=this.regexps[s];if(o)try{o.lastIndex=e;let l=o.exec(a);if(!l)continue;if(l.index===e)return i(s,l,0);r.push([s,l,0])}catch(l){if(this.options.forgiving)continue;throw l}}if(r.length){let s=Math.min(...r.map(o=>o[1].index));for(let[o,l,c]of r)if(l.index===s)return i(o,l,c)}return null}};function gr(t){if([...t].length!==1)throw new Error(`Expected "${t}" to be a single code point`);return t.codePointAt(0)}function c$(t,e,n){return t.has(e)||t.set(e,n),t.get(e)}var Cl=new Set(["alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit"]),Qe=String.raw;function za(t,e){if(t==null)throw new Error(e??"Value expected");return t}var f$=Qe`\[\^?`,g$=`c.? | C(?:-.?)?|${Qe`[pP]\{(?:\^?[-\x20_]*[A-Za-z][-\x20\w]*\})?`}|${Qe`x[89A-Fa-f]\p{AHex}(?:\\x[89A-Fa-f]\p{AHex})*`}|${Qe`u(?:\p{AHex}{4})? | x\{[^\}]*\}? | x\p{AHex}{0,2}`}|${Qe`o\{[^\}]*\}?`}|${Qe`\d{1,3}`}`,Lg=/[?*+][?+]?|\{(?:\d+(?:,\d*)?|,\d+)\}\??/,Dp=new RegExp(Qe` +\f\r "&'<=>\``.split("")]],single:[["&'".split(""),"\"&'`".split("")],["\0&'".split(""),"\0\"&'`".split("")]],double:[['"&'.split(""),"\"&'`".split("")],['\0"&'.split(""),"\0\"&'`".split("")]]};function _$(t,e,n,a){let r=a.schema,i=r.space==="svg"?!1:a.settings.omitOptionalTags,s=r.space==="svg"?a.settings.closeEmptyElements:a.settings.voids.includes(t.tagName.toLowerCase()),o=[],l;r.space==="html"&&t.tagName==="svg"&&(a.schema=Lp);let c=RI(a,t.properties),u=a.all(r.space==="html"&&t.tagName==="template"?t.content:t);return a.schema=r,u&&(s=!1),(c||!i||!k$(t,e,n))&&(o.push("<",t.tagName,c?" "+c:""),s&&(r.space==="svg"||a.settings.closeSelfClosing)&&(l=c.charAt(c.length-1),(!a.settings.tightSelfClosing||l==="/"||l&&l!=='"'&&l!=="'")&&o.push(" "),o.push("/")),o.push(">")),o.push(u),!s&&(!i||!Rl(t,e,n))&&o.push("</"+t.tagName+">"),o.join("")}function RI(t,e){let n=[],a=-1,r;if(e){for(r in e)if(e[r]!==null&&e[r]!==void 0){let i=zI(t,r,e[r]);i&&n.push(i)}}for(;++a<n.length;){let i=t.settings.tightAttributes?n[a].charAt(n[a].length-1):void 0;a!==n.length-1&&i!=='"'&&i!=="'"&&(n[a]+=" ")}return n.join("")}function zI(t,e,n){let a=Pg(t.schema,e),r=t.settings.allowParseErrors&&t.schema.space==="html"?0:1,i=t.settings.allowDangerousCharacters?0:1,s=t.quote,o;if(a.overloadedBoolean&&(n===a.attribute||n==="")?n=!0:(a.boolean||a.overloadedBoolean)&&(typeof n!="string"||n===a.attribute||n==="")&&(n=!!n),n==null||n===!1||typeof n=="number"&&Number.isNaN(n))return"";let l=La(a.attribute,Object.assign({},t.settings.characterReferences,{subset:qp.name[r][i]}));return n===!0||(n=Array.isArray(n)?(a.commaSeparated?f$:g$)(n,{padLeft:!t.settings.tightCommaSeparatedLists}):String(n),t.settings.collapseEmptyAttributes&&!n)?l:(t.settings.preferUnquoted&&(o=La(n,Object.assign({},t.settings.characterReferences,{attribute:!0,subset:qp.unquoted[r][i]}))),o!==n&&(t.settings.quoteSmart&&Ls(n,s)>Ls(n,t.alternative)&&(s=t.alternative),o=s+La(n,Object.assign({},t.settings.characterReferences,{subset:(s==="'"?qp.single:qp.double)[r][i],attribute:!0}))+s),l+(o&&"="+o))}var OI=["<","&"];function Gp(t,e,n,a){return n&&n.type==="element"&&(n.tagName==="script"||n.tagName==="style")?t.value:La(t.value,Object.assign({},a.settings.characterReferences,{subset:OI}))}function v$(t,e,n,a){return a.settings.allowDangerousHtml?t.value:Gp(t,e,n,a)}function $$(t,e,n,a){return a.all(t)}var C$=kc("type",{invalid:BI,unknown:LI,handlers:{comment:m$,doctype:h$,element:_$,raw:v$,root:$$,text:Gp}});function BI(t){throw new Error("Expected node, not `"+t+"`")}function LI(t){let e=t;throw new Error("Cannot compile unknown node `"+e.type+"`")}var DI={},FI={},PI=[];function Vg(t,e){let n=e||DI,a=n.quote||'"',r=a==='"'?"'":'"';if(a!=='"'&&a!=="'")throw new Error("Invalid quote `"+a+"`, expected `'` or `\"`");return{one:qI,all:GI,settings:{omitOptionalTags:n.omitOptionalTags||!1,allowParseErrors:n.allowParseErrors||!1,allowDangerousCharacters:n.allowDangerousCharacters||!1,quoteSmart:n.quoteSmart||!1,preferUnquoted:n.preferUnquoted||!1,tightAttributes:n.tightAttributes||!1,upperDoctype:n.upperDoctype||!1,tightDoctype:n.tightDoctype||!1,bogusComments:n.bogusComments||!1,tightCommaSeparatedLists:n.tightCommaSeparatedLists||!1,tightSelfClosing:n.tightSelfClosing||!1,collapseEmptyAttributes:n.collapseEmptyAttributes||!1,allowDangerousHtml:n.allowDangerousHtml||!1,voids:n.voids||Yv,characterReferences:n.characterReferences||FI,closeSelfClosing:n.closeSelfClosing||!1,closeEmptyElements:n.closeEmptyElements||!1},schema:n.space==="svg"?Lp:a$,quote:a,alternative:r}.one(Array.isArray(t)?{type:"root",children:t}:t,void 0,void 0)}function qI(t,e,n){return C$(t,e,n,this)}function GI(t){let e=[],n=t&&t.children||PI,a=-1;for(;++a<n.length;)e[a]=this.one(n[a],a,t);return e.join("")}function E$(t,e){if(!e)return t;t.properties||={},t.properties.class||=[],typeof t.properties.class=="string"&&(t.properties.class=t.properties.class.split(/\s+/g)),Array.isArray(t.properties.class)||(t.properties.class=[]);let n=Array.isArray(e)?e:e.split(/\s+/g);for(let a of n)a&&!t.properties.class.includes(a)&&t.properties.class.push(a);return t}function HI(t){let e=Vs(t,!0).map(([r])=>r);function n(r){if(r===t.length)return{line:e.length-1,character:e[e.length-1].length};let i=r,s=0;for(let o of e){if(i<o.length)break;i-=o.length,s++}return{line:s,character:i}}function a(r,i){let s=0;for(let o=0;o<r;o++)s+=e[o].length;return s+=i,s}return{lines:e,indexToPos:n,posToIndex:a}}var Xg="light-dark()",VI=["color","background-color"];function WI(t,e){let n=0,a=[];for(let r of e)r>n&&a.push({...t,content:t.content.slice(n,r),offset:t.offset+n}),n=r;return n<t.content.length&&a.push({...t,content:t.content.slice(n),offset:t.offset+n}),a}function UI(t,e){let n=Array.from(e instanceof Set?e:new Set(e)).sort((a,r)=>a-r);return n.length?t.map(a=>a.flatMap(r=>{let i=n.filter(s=>r.offset<s&&s<r.offset+r.content.length).map(s=>s-r.offset).sort((s,o)=>s-o);return i.length?WI(r,i):r})):t}function KI(t,e,n,a,r="css-vars"){let i={content:t.content,explanation:t.explanation,offset:t.offset},s=e.map(u=>Hp(t.variants[u])),o=new Set(s.flatMap(u=>Object.keys(u))),l={},c=(u,p)=>{let d=p==="color"?"":p==="background-color"?"-bg":`-${p}`;return n+e[u]+(p==="color"?"":d)};return s.forEach((u,p)=>{for(let d of o){let m=u[d]||"inherit";if(p===0&&a&&VI.includes(d))if(a===Xg&&s.length>1){let h=e.findIndex(y=>y==="light"),b=e.findIndex(y=>y==="dark");if(h===-1||b===-1)throw new Ne('When using `defaultColor: "light-dark()"`, you must provide both `light` and `dark` themes');l[d]=`light-dark(${s[h][d]||"inherit"}, ${s[b][d]||"inherit"})`,r==="css-vars"&&(l[c(p,d)]=m)}else l[d]=m;else r==="css-vars"&&(l[c(p,d)]=m)}}),i.htmlStyle=l,i}function Hp(t){let e={};if(t.color&&(e.color=t.color),t.bgColor&&(e["background-color"]=t.bgColor),t.fontStyle){t.fontStyle&vt.Italic&&(e["font-style"]="italic"),t.fontStyle&vt.Bold&&(e["font-weight"]="bold");let n=[];t.fontStyle&vt.Underline&&n.push("underline"),t.fontStyle&vt.Strikethrough&&n.push("line-through"),n.length&&(e["text-decoration"]=n.join(" "))}return e}function Ug(t){return typeof t=="string"?t:Object.entries(t).map(([e,n])=>`${e}:${n}`).join(";")}function XI(){let t=new WeakMap;function e(n){if(!t.has(n.meta)){let r=function(s){if(typeof s=="number"){if(s<0||s>n.source.length)throw new Ne(`Invalid decoration offset: ${s}. Code length: ${n.source.length}`);return{...a.indexToPos(s),offset:s}}else{let o=a.lines[s.line];if(o===void 0)throw new Ne(`Invalid decoration position ${JSON.stringify(s)}. Lines length: ${a.lines.length}`);let l=s.character;if(l<0&&(l=o.length+l),l<0||l>o.length)throw new Ne(`Invalid decoration position ${JSON.stringify(s)}. Line ${s.line} length: ${o.length}`);return{...s,character:l,offset:a.posToIndex(s.line,l)}}},a=HI(n.source),i=(n.options.decorations||[]).map(s=>({...s,start:r(s.start),end:r(s.end)}));ZI(i),t.set(n.meta,{decorations:i,converter:a,source:n.source})}return t.get(n.meta)}return{name:"shiki:decorations",tokens(n){if(this.options.decorations?.length)return UI(n,e(this).decorations.flatMap(a=>[a.start.offset,a.end.offset]))},code(n){if(!this.options.decorations?.length)return;let a=e(this),r=Array.from(n.children).filter(u=>u.type==="element"&&u.tagName==="span");if(r.length!==a.converter.lines.length)throw new Ne(`Number of lines in code element (${r.length}) does not match the number of lines in the source (${a.converter.lines.length}). Failed to apply decorations.`);function i(u,p,d,m){let h=r[u],b="",y=-1,w=-1;if(p===0&&(y=0),d===0&&(w=0),d===Number.POSITIVE_INFINITY&&(w=h.children.length),y===-1||w===-1)for(let $=0;$<h.children.length;$++)b+=A$(h.children[$]),y===-1&&b.length===p&&(y=$+1),w===-1&&b.length===d&&(w=$+1);if(y===-1)throw new Ne(`Failed to find start index for decoration ${JSON.stringify(m.start)}`);if(w===-1)throw new Ne(`Failed to find end index for decoration ${JSON.stringify(m.end)}`);let _=h.children.slice(y,w);if(!m.alwaysWrap&&_.length===h.children.length)o(h,m,"line");else if(!m.alwaysWrap&&_.length===1&&_[0].type==="element")o(_[0],m,"token");else{let $={type:"element",tagName:"span",properties:{},children:_};o($,m,"wrapper"),h.children.splice(y,_.length,$)}}function s(u,p){r[u]=o(r[u],p,"line")}function o(u,p,d){let m=p.properties||{},h=p.transform||(b=>b);return u.tagName=p.tagName||"span",u.properties={...u.properties,...m,class:u.properties.class},p.properties?.class&&E$(u,p.properties.class),u=h(u,d)||u,u}let l=[],c=a.decorations.sort((u,p)=>p.start.offset-u.start.offset||u.end.offset-p.end.offset);for(let u of c){let{start:p,end:d}=u;if(p.line===d.line)i(p.line,p.character,d.character,u);else if(p.line<d.line){i(p.line,p.character,Number.POSITIVE_INFINITY,u);for(let m=p.line+1;m<d.line;m++)l.unshift(()=>s(m,u));i(d.line,0,d.character,u)}}l.forEach(u=>u())}}}function ZI(t){for(let e=0;e<t.length;e++){let n=t[e];if(n.start.offset>n.end.offset)throw new Ne(`Invalid decoration range: ${JSON.stringify(n.start)} - ${JSON.stringify(n.end)}`);for(let a=e+1;a<t.length;a++){let r=t[a],i=n.start.offset<=r.start.offset&&r.start.offset<n.end.offset,s=n.start.offset<r.end.offset&&r.end.offset<=n.end.offset,o=r.start.offset<=n.start.offset&&n.start.offset<r.end.offset,l=r.start.offset<n.end.offset&&n.end.offset<=r.end.offset;if(i||s||o||l){if(i&&s||o&&l||o&&n.start.offset===n.end.offset||s&&r.start.offset===r.end.offset)continue;throw new Ne(`Decorations ${JSON.stringify(n.start)} and ${JSON.stringify(r.start)} intersect.`)}}}}function A$(t){return t.type==="text"?t.value:t.type==="element"?t.children.map(A$).join(""):""}var JI=[XI()];function Vp(t){let e=YI(t.transformers||[]);return[...e.pre,...e.normal,...e.post,...JI]}function YI(t){let e=[],n=[],a=[];for(let r of t)switch(r.enforce){case"pre":e.push(r);break;case"post":n.push(r);break;default:a.push(r)}return{pre:e,post:n,normal:a}}var Si=["black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite"],Wg={1:"bold",2:"dim",3:"italic",4:"underline",7:"reverse",8:"hidden",9:"strikethrough"};function QI(t,e){let n=t.indexOf("\x1B",e);if(n!==-1&&t[n+1]==="["){let a=t.indexOf("m",n);if(a!==-1)return{sequence:t.substring(n+2,a).split(";"),startPosition:n,position:a+1}}return{position:t.length}}function j$(t){let e=t.shift();if(e==="2"){let n=t.splice(0,3).map(a=>Number.parseInt(a));return n.length!==3||n.some(a=>Number.isNaN(a))?void 0:{type:"rgb",rgb:n}}else if(e==="5"){let n=t.shift();if(n)return{type:"table",index:Number(n)}}}function eR(t){let e=[];for(;t.length>0;){let n=t.shift();if(!n)continue;let a=Number.parseInt(n);if(!Number.isNaN(a))if(a===0)e.push({type:"resetAll"});else if(a<=9)Wg[a]&&e.push({type:"setDecoration",value:Wg[a]});else if(a<=29){let r=Wg[a-20];r&&(e.push({type:"resetDecoration",value:r}),r==="dim"&&e.push({type:"resetDecoration",value:"bold"}))}else if(a<=37)e.push({type:"setForegroundColor",value:{type:"named",name:Si[a-30]}});else if(a===38){let r=j$(t);r&&e.push({type:"setForegroundColor",value:r})}else if(a===39)e.push({type:"resetForegroundColor"});else if(a<=47)e.push({type:"setBackgroundColor",value:{type:"named",name:Si[a-40]}});else if(a===48){let r=j$(t);r&&e.push({type:"setBackgroundColor",value:r})}else a===49?e.push({type:"resetBackgroundColor"}):a===53?e.push({type:"setDecoration",value:"overline"}):a===55?e.push({type:"resetDecoration",value:"overline"}):a>=90&&a<=97?e.push({type:"setForegroundColor",value:{type:"named",name:Si[a-90+8]}}):a>=100&&a<=107&&e.push({type:"setBackgroundColor",value:{type:"named",name:Si[a-100+8]}})}return e}function tR(){let t=null,e=null,n=new Set;return{parse(a){let r=[],i=0;do{let s=QI(a,i),o=s.sequence?a.substring(i,s.startPosition):a.substring(i);if(o.length>0&&r.push({value:o,foreground:t,background:e,decorations:new Set(n)}),s.sequence){let l=eR(s.sequence);for(let c of l)c.type==="resetAll"?(t=null,e=null,n.clear()):c.type==="resetForegroundColor"?t=null:c.type==="resetBackgroundColor"?e=null:c.type==="resetDecoration"&&n.delete(c.value);for(let c of l)c.type==="setForegroundColor"?t=c.value:c.type==="setBackgroundColor"?e=c.value:c.type==="setDecoration"&&n.add(c.value)}i=s.position}while(i<a.length);return r}}}var nR={black:"#000000",red:"#bb0000",green:"#00bb00",yellow:"#bbbb00",blue:"#0000bb",magenta:"#ff00ff",cyan:"#00bbbb",white:"#eeeeee",brightBlack:"#555555",brightRed:"#ff5555",brightGreen:"#00ff00",brightYellow:"#ffff55",brightBlue:"#5555ff",brightMagenta:"#ff55ff",brightCyan:"#55ffff",brightWhite:"#ffffff"};function aR(t=nR){function e(o){return t[o]}function n(o){return`#${o.map(l=>Math.max(0,Math.min(l,255)).toString(16).padStart(2,"0")).join("")}`}let a;function r(){if(a)return a;a=[];for(let c=0;c<Si.length;c++)a.push(e(Si[c]));let o=[0,95,135,175,215,255];for(let c=0;c<6;c++)for(let u=0;u<6;u++)for(let p=0;p<6;p++)a.push(n([o[c],o[u],o[p]]));let l=8;for(let c=0;c<24;c++,l+=10)a.push(n([l,l,l]));return a}function i(o){return r()[o]}function s(o){switch(o.type){case"named":return e(o.name);case"rgb":return n(o.rgb);case"table":return i(o.index)}}return{value:s}}var rR={black:"#000000",red:"#cd3131",green:"#0DBC79",yellow:"#E5E510",blue:"#2472C8",magenta:"#BC3FBC",cyan:"#11A8CD",white:"#E5E5E5",brightBlack:"#666666",brightRed:"#F14C4C",brightGreen:"#23D18B",brightYellow:"#F5F543",brightBlue:"#3B8EEA",brightMagenta:"#D670D6",brightCyan:"#29B8DB",brightWhite:"#FFFFFF"};function iR(t,e,n){let a=El(t,n),r=Vs(e),i=aR(Object.fromEntries(Si.map(o=>{let l=`terminal.ansi${o[0].toUpperCase()}${o.substring(1)}`;return[o,t.colors?.[l]||rR[o]]}))),s=tR();return r.map(o=>s.parse(o[0]).map(l=>{let c,u;l.decorations.has("reverse")?(c=l.background?i.value(l.background):t.bg,u=l.foreground?i.value(l.foreground):t.fg):(c=l.foreground?i.value(l.foreground):t.fg,u=l.background?i.value(l.background):void 0),c=Oa(c,a),u=Oa(u,a),l.decorations.has("dim")&&(c=sR(c));let p=vt.None;return l.decorations.has("bold")&&(p|=vt.Bold),l.decorations.has("italic")&&(p|=vt.Italic),l.decorations.has("underline")&&(p|=vt.Underline),l.decorations.has("strikethrough")&&(p|=vt.Strikethrough),{content:l.value,offset:o[1],color:c,bgColor:u,fontStyle:p}}))}function sR(t){let e=t.match(/#([0-9a-f]{3,8})/i);if(e){let a=e[1];if(a.length===8){let r=Math.round(Number.parseInt(a.slice(6,8),16)/2).toString(16).padStart(2,"0");return`#${a.slice(0,6)}${r}`}else{if(a.length===6)return`#${a}80`;if(a.length===4){let r=a[0],i=a[1],s=a[2],o=a[3];return`#${r}${r}${i}${i}${s}${s}${Math.round(Number.parseInt(`${o}${o}`,16)/2).toString(16).padStart(2,"0")}`}else if(a.length===3){let r=a[0],i=a[1],s=a[2];return`#${r}${r}${i}${i}${s}${s}80`}}}let n=t.match(/var\((--[\w-]+-ansi-[\w-]+)\)/);return n?`var(${n[1]}-dim)`:t}function Kg(t,e,n={}){let a=t.resolveLangAlias(n.lang||"text"),{theme:r=t.getLoadedThemes()[0]}=n;if(!Al(a)&&!Tl(r)&&a==="ansi"){let{theme:i}=t.setTheme(r);return iR(i,e,n)}return Ig(t,e,n)}function Wp(t,e,n){let a,r,i,s,o,l;if("themes"in n){let{defaultColor:c="light",cssVariablePrefix:u="--shiki-",colorsRendering:p="css-vars"}=n,d=Object.entries(n.themes).filter(w=>w[1]).map(w=>({color:w[0],theme:w[1]})).sort((w,_)=>w.color===c?-1:_.color===c?1:0);if(d.length===0)throw new Ne("`themes` option must not be empty");let m=Rp(t,e,n,Kg);if(l=Ws(m),c&&Xg!==c&&!d.find(w=>w.color===c))throw new Ne(`\`themes\` option must contain the defaultColor key \`${c}\``);let h=d.map(w=>t.getTheme(w.theme)),b=d.map(w=>w.color);i=m.map(w=>w.map(_=>KI(_,b,u,c,p))),l&&Ml(i,l);let y=d.map(w=>El(w.theme,n));r=S$(d,h,y,u,c,"fg",p),a=S$(d,h,y,u,c,"bg",p),s=`shiki-themes ${h.map(w=>w.name).join(" ")}`,o=c?void 0:[r,a].join(";")}else if("theme"in n){let c=El(n.theme,n);i=Kg(t,e,n);let u=t.getTheme(n.theme);a=Oa(u.bg,c),r=Oa(u.fg,c),s=u.name,l=Ws(i)}else throw new Ne("Invalid options, either `theme` or `themes` must be provided");return{tokens:i,fg:r,bg:a,themeName:s,rootStyle:o,grammarState:l}}function S$(t,e,n,a,r,i,s){return t.map((o,l)=>{let c=Oa(e[l][i],n[l])||"inherit",u=`${a+o.color}${i==="bg"?"-bg":""}:${c}`;if(l===0&&r){if(r===Xg&&t.length>1){let p=t.findIndex(m=>m.color==="light"),d=t.findIndex(m=>m.color==="dark");if(p===-1||d===-1)throw new Ne('When using `defaultColor: "light-dark()"`, you must provide both `light` and `dark` themes');return`light-dark(${Oa(e[p][i],n[p])||"inherit"}, ${Oa(e[d][i],n[d])||"inherit"});${u}`}return c}return s==="css-vars"?u:null}).filter(o=>!!o).join(";")}function Up(t,e,n,a={meta:{},options:n,codeToHast:(r,i)=>Up(t,r,i),codeToTokens:(r,i)=>Wp(t,r,i)}){let r=e;for(let h of Vp(n))r=h.preprocess?.call(a,r,n)||r;let{tokens:i,fg:s,bg:o,themeName:l,rootStyle:c,grammarState:u}=Wp(t,r,n),{mergeWhitespaces:p=!0,mergeSameStyleTokens:d=!1}=n;p===!0?i=lR(i):p==="never"&&(i=cR(i)),d&&(i=uR(i));let m={...a,get source(){return r}};for(let h of Vp(n))i=h.tokens?.call(m,i)||i;return oR(i,{...n,fg:s,bg:o,themeName:l,rootStyle:n.rootStyle===!1?!1:n.rootStyle??c},m,u)}function oR(t,e,n,a=Ws(t)){let r=Vp(e),i=[],s={type:"root",children:[]},{structure:o="classic",tabindex:l="0"}=e,c={class:`shiki ${e.themeName||""}`};e.rootStyle!==!1&&(e.rootStyle!=null?c.style=e.rootStyle:c.style=`background-color:${e.bg};color:${e.fg}`),l!==!1&&l!=null&&(c.tabindex=l.toString());for(let[b,y]of Object.entries(e.meta||{}))b.startsWith("_")||(c[b]=y);let u={type:"element",tagName:"pre",properties:c,children:[],data:e.data},p={type:"element",tagName:"code",properties:{},children:i},d=[],m={...n,structure:o,addClassToHast:E$,get source(){return n.source},get tokens(){return t},get options(){return e},get root(){return s},get pre(){return u},get code(){return p},get lines(){return d}};if(t.forEach((b,y)=>{y&&(o==="inline"?s.children.push({type:"element",tagName:"br",properties:{},children:[]}):o==="classic"&&i.push({type:"text",value:` +`}));let w={type:"element",tagName:"span",properties:{class:"line"},children:[]},_=0;for(let $ of b){let M={type:"element",tagName:"span",properties:{...$.htmlAttrs},children:[{type:"text",value:$.content}]},N=Ug($.htmlStyle||Hp($));N&&(M.properties.style=N);for(let E of r)M=E?.span?.call(m,M,y+1,_,w,$)||M;o==="inline"?s.children.push(M):o==="classic"&&w.children.push(M),_+=$.content.length}if(o==="classic"){for(let $ of r)w=$?.line?.call(m,w,y+1)||w;d.push(w),i.push(w)}else o==="inline"&&d.push(w)}),o==="classic"){for(let b of r)p=b?.code?.call(m,p)||p;u.children.push(p);for(let b of r)u=b?.pre?.call(m,u)||u;s.children.push(u)}else if(o==="inline"){let b=[],y={type:"element",tagName:"span",properties:{class:"line"},children:[]};for(let _ of s.children)_.type==="element"&&_.tagName==="br"?(b.push(y),y={type:"element",tagName:"span",properties:{class:"line"},children:[]}):(_.type==="element"||_.type==="text")&&y.children.push(_);b.push(y);let w={type:"element",tagName:"code",properties:{},children:b};for(let _ of r)w=_?.code?.call(m,w)||w;s.children=[];for(let _=0;_<w.children.length;_++){_>0&&s.children.push({type:"element",tagName:"br",properties:{},children:[]});let $=w.children[_];$.type==="element"&&s.children.push(...$.children)}}let h=s;for(let b of r)h=b?.root?.call(m,h)||h;return a&&Ml(h,a),h}function lR(t){return t.map(e=>{let n=[],a="",r;return e.forEach((i,s)=>{let o=!(i.fontStyle&&(i.fontStyle&vt.Underline||i.fontStyle&vt.Strikethrough));o&&i.content.match(/^\s+$/)&&e[s+1]?(r===void 0&&(r=i.offset),a+=i.content):a?(o?n.push({...i,offset:r,content:a+i.content}):n.push({content:a,offset:r},i),r=void 0,a=""):n.push(i)}),n})}function cR(t){return t.map(e=>e.flatMap(n=>{if(n.content.match(/^\s+$/))return n;let a=n.content.match(/^(\s*)(.*?)(\s*)$/);if(!a)return n;let[,r,i,s]=a;if(!r&&!s)return n;let o=[{...n,offset:n.offset+r.length,content:i}];return r&&o.unshift({content:r,offset:n.offset}),s&&o.push({content:s,offset:n.offset+r.length+i.length}),o}))}function uR(t){return t.map(e=>{let n=[];for(let a of e){if(n.length===0){n.push({...a});continue}let r=n[n.length-1],i=Ug(r.htmlStyle||Hp(r)),s=Ug(a.htmlStyle||Hp(a)),o=r.fontStyle&&(r.fontStyle&vt.Underline||r.fontStyle&vt.Strikethrough),l=a.fontStyle&&(a.fontStyle&vt.Underline||a.fontStyle&vt.Strikethrough);!o&&!l&&i===s?r.content+=a.content:n.push({...a})}return n})}var pR=Vg;function dR(t,e,n){let a={meta:{},options:n,codeToHast:(i,s)=>Up(t,i,s),codeToTokens:(i,s)=>Wp(t,i,s)},r=pR(Up(t,e,n,a));for(let i of Vp(n))r=i.postprocess?.call(a,r,n)||r;return r}async function T$(t){let e=await Ng(t);return{getLastGrammarState:(...n)=>Zv(e,...n),codeToTokensBase:(n,a)=>Kg(e,n,a),codeToTokensWithThemes:(n,a)=>Rp(e,n,a),codeToTokens:(n,a)=>Wp(e,n,a),codeToHast:(n,a)=>Up(e,n,a),codeToHtml:(n,a)=>dR(e,n,a),getBundledLanguages:()=>({}),getBundledThemes:()=>({}),...e,getInternalContext:()=>e}}var M$=class{regexps;constructor(t,e={}){this.patterns=t,this.options=e;let{forgiving:n=!1,cache:a,regexConstructor:r}=e;if(!r)throw new Error("Option `regexConstructor` is not provided");this.regexps=t.map(i=>{if(typeof i!="string")return i;let s=a?.get(i);if(s){if(s instanceof RegExp)return s;if(n)return null;throw s}try{let o=r(i);return a?.set(i,o),o}catch(o){if(a?.set(i,o),n)return null;throw o}})}findNextMatchSync(t,e,n){let a=typeof t=="string"?t:t.content,r=[];function i(s,o,l=0){return{index:s,captureIndices:o.indices.map(c=>c==null?{start:4294967295,end:4294967295,length:0}:{start:c[0]+l,end:c[1]+l,length:c[1]-c[0]})}}for(let s=0;s<this.regexps.length;s++){let o=this.regexps[s];if(o)try{o.lastIndex=e;let l=o.exec(a);if(!l)continue;if(l.index===e)return i(s,l,0);r.push([s,l,0])}catch(l){if(this.options.forgiving)continue;throw l}}if(r.length){let s=Math.min(...r.map(o=>o[1].index));for(let[o,l,c]of r)if(l.index===s)return i(o,l,c)}return null}};function xr(t){if([...t].length!==1)throw new Error(`Expected "${t}" to be a single code point`);return t.codePointAt(0)}function N$(t,e,n){return t.has(e)||t.set(e,n),t.get(e)}var zl=new Set(["alnum","alpha","ascii","blank","cntrl","digit","graph","lower","print","punct","space","upper","word","xdigit"]),et=String.raw;function Da(t,e){if(t==null)throw new Error(e??"Value expected");return t}var L$=et`\[\^?`,D$=`c.? | C(?:-.?)?|${et`[pP]\{(?:\^?[-\x20_]*[A-Za-z][-\x20\w]*\})?`}|${et`x[89A-Fa-f]\p{AHex}(?:\\x[89A-Fa-f]\p{AHex})*`}|${et`u(?:\p{AHex}{4})? | x\{[^\}]*\}? | x\p{AHex}{0,2}`}|${et`o\{[^\}]*\}?`}|${et`\d{1,3}`}`,Jg=/[?*+][?+]?|\{(?:\d+(?:,\d*)?|,\d+)\}\??/,Kp=new RegExp(et` \\ (?: - ${g$} + ${D$} | [gk]<[^>]*>? | [gk]'[^']*'? | . @@ -343,20 +343,20 @@ $$`:`$${t}$`)}</code>`;try{return y_.renderToString(t,{displayMode:e,throwOnErro )? | \*[^\)]*\)? )? - | (?:${Lg.source})+ - | ${f$} + | (?:${Jg.source})+ + | ${L$} | . -`.replace(/\s+/g,""),"gsu"),Bg=new RegExp(Qe` +`.replace(/\s+/g,""),"gsu"),Zg=new RegExp(et` \\ (?: - ${g$} + ${D$} | . ) | \[:(?:\^?\p{Alpha}+|\^):\] - | ${f$} + | ${L$} | && | . -`.replace(/\s+/g,""),"gsu");function b$(t,e={}){let n={flags:"",...e,rules:{captureGroup:!1,singleline:!1,...e.rules}};if(typeof t!="string")throw new Error("String expected as pattern");let a=XI(n.flags),r=[a.extended],i={captureGroup:n.rules.captureGroup,getCurrentModX(){return r.at(-1)},numOpenGroups:0,popModX(){r.pop()},pushModX(p){r.push(p)},replaceCurrentModX(p){r[r.length-1]=p},singleline:n.rules.singleline},s=[],o;for(Dp.lastIndex=0;o=Dp.exec(t);){let p=MI(i,t,o[0],Dp.lastIndex);p.tokens?s.push(...p.tokens):p.token&&s.push(p.token),p.lastIndex!==void 0&&(Dp.lastIndex=p.lastIndex)}let l=[],c=0;s.filter(p=>p.type==="GroupOpen").forEach(p=>{p.kind==="capturing"?p.number=++c:p.raw==="("&&l.push(p)}),c||l.forEach((p,d)=>{p.kind="capturing",p.number=d+1});let u=c||l.length;return{tokens:s.map(p=>p.type==="EscapedNumber"?JI(p,u):p).flat(),flags:a}}function MI(t,e,n,a){let[r,i]=n;if(n==="["||n==="[^"){let s=NI(e,n,a);return{tokens:s.tokens,lastIndex:s.lastIndex}}if(r==="\\"){if("AbBGyYzZ".includes(i))return{token:u$(n,n)};if(/^\\g[<']/.test(n)){if(!/^\\g(?:<[^>]+>|'[^']+')$/.test(n))throw new Error(`Invalid group name "${n}"`);return{token:PI(n)}}if(/^\\k[<']/.test(n)){if(!/^\\k(?:<[^>]+>|'[^']+')$/.test(n))throw new Error(`Invalid group name "${n}"`);return{token:x$(n)}}if(i==="K")return{token:k$("keep",n)};if(i==="N"||i==="R")return{token:ki("newline",n,{negate:i==="N"})};if(i==="O")return{token:ki("any",n)};if(i==="X")return{token:ki("text_segment",n)};let s=y$(n,{inCharClass:!1});return Array.isArray(s)?{tokens:s}:{token:s}}if(r==="("){if(i==="*")return{token:WI(n)};if(n==="(?{")throw new Error(`Unsupported callout "${n}"`);if(n.startsWith("(?#")){if(e[a]!==")")throw new Error('Unclosed comment group "(?#"');return{lastIndex:a+1}}if(/^\(\?[-imx]+[:)]$/.test(n))return{token:VI(n,t)};if(t.pushModX(t.getCurrentModX()),t.numOpenGroups++,n==="("&&!t.captureGroup||n==="(?:")return{token:Ls("group",n)};if(n==="(?>")return{token:Ls("atomic",n)};if(n==="(?="||n==="(?!"||n==="(?<="||n==="(?<!")return{token:Ls(n[2]==="<"?"lookbehind":"lookahead",n,{negate:n.endsWith("!")})};if(n==="("&&t.captureGroup||n.startsWith("(?<")&&n.endsWith(">")||n.startsWith("(?'")&&n.endsWith("'"))return{token:Ls("capturing",n,{...n!=="("&&{name:n.slice(3,-1)}})};if(n.startsWith("(?~")){if(n==="(?~|")throw new Error(`Unsupported absence function kind "${n}"`);return{token:Ls("absence_repeater",n)}}throw n==="(?("?new Error(`Unsupported conditional "${n}"`):new Error(`Invalid or unsupported group option "${n}"`)}if(n===")"){if(t.popModX(),t.numOpenGroups--,t.numOpenGroups<0)throw new Error('Unmatched ")"');return{token:DI(n)}}if(t.getCurrentModX()){if(n==="#"){let s=e.indexOf(` -`,a);return{lastIndex:s===-1?e.length:s}}if(/^\s$/.test(n)){let s=/\s+/y;return s.lastIndex=a,{lastIndex:s.exec(e)?s.lastIndex:a}}}if(n===".")return{token:ki("dot",n)};if(n==="^"||n==="$"){let s=t.singleline?{"^":Qe`\A`,$:Qe`\Z`}[n]:n;return{token:u$(s,n)}}return n==="|"?{token:RI(n)}:Lg.test(n)?{tokens:YI(n)}:{token:Oa(gr(n),n)}}function NI(t,e,n){let a=[p$(e[1]==="^",e)],r=1,i;for(Bg.lastIndex=n;i=Bg.exec(t);){let s=i[0];if(s[0]==="["&&s[1]!==":")r++,a.push(p$(s[1]==="^",s));else if(s==="]"){if(a.at(-1).type==="CharacterClassOpen")a.push(Oa(93,s));else if(r--,a.push(zI(s)),!r)break}else{let o=II(s);Array.isArray(o)?a.push(...o):a.push(o)}}return{tokens:a,lastIndex:Bg.lastIndex||t.length}}function II(t){if(t[0]==="\\")return y$(t,{inCharClass:!0});if(t[0]==="["){let e=/\[:(?<negate>\^?)(?<name>[a-z]+):\]/.exec(t);if(!e||!Cl.has(e.groups.name))throw new Error(`Invalid POSIX class "${t}"`);return ki("posix",t,{value:e.groups.name,negate:!!e.groups.negate})}return t==="-"?OI(t):t==="&&"?BI(t):Oa(gr(t),t)}function y$(t,{inCharClass:e}){let n=t[1];if(n==="c"||n==="C")return HI(t);if("dDhHsSwW".includes(n))return UI(t);if(t.startsWith(Qe`\o{`))throw new Error(`Incomplete, invalid, or unsupported octal code point "${t}"`);if(/^\\[pP]\{/.test(t)){if(t.length===3)throw new Error(`Incomplete or invalid Unicode property "${t}"`);return KI(t)}if(/^\\x[89A-Fa-f]\p{AHex}/u.test(t))try{let a=t.split(/\\x/).slice(1).map(s=>parseInt(s,16)),r=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}).decode(new Uint8Array(a)),i=new TextEncoder;return[...r].map(s=>{let o=[...i.encode(s)].map(l=>`\\x${l.toString(16)}`).join("");return Oa(gr(s),o)})}catch{throw new Error(`Multibyte code "${t}" incomplete or invalid in Oniguruma`)}if(n==="u"||n==="x")return Oa(ZI(t),t);if(d$.has(n))return Oa(d$.get(n),t);if(/\d/.test(n))return LI(e,t);if(t==="\\")throw new Error(Qe`Incomplete escape "\"`);if(n==="M")throw new Error(`Unsupported meta "${t}"`);if([...t].length===2)return Oa(t.codePointAt(1),t);throw new Error(`Unexpected escape "${t}"`)}function RI(t){return{type:"Alternator",raw:t}}function u$(t,e){return{type:"Assertion",kind:t,raw:e}}function x$(t){return{type:"Backreference",raw:t}}function Oa(t,e){return{type:"Character",value:t,raw:e}}function zI(t){return{type:"CharacterClassClose",raw:t}}function OI(t){return{type:"CharacterClassHyphen",raw:t}}function BI(t){return{type:"CharacterClassIntersector",raw:t}}function p$(t,e){return{type:"CharacterClassOpen",negate:t,raw:e}}function ki(t,e,n={}){return{type:"CharacterSet",kind:t,...n,raw:e}}function k$(t,e,n={}){return t==="keep"?{type:"Directive",kind:t,raw:e}:{type:"Directive",kind:t,flags:za(n.flags),raw:e}}function LI(t,e){return{type:"EscapedNumber",inCharClass:t,raw:e}}function DI(t){return{type:"GroupClose",raw:t}}function Ls(t,e,n={}){return{type:"GroupOpen",kind:t,...n,raw:e}}function FI(t,e,n,a){return{type:"NamedCallout",kind:t,tag:e,arguments:n,raw:a}}function qI(t,e,n,a){return{type:"Quantifier",kind:t,min:e,max:n,raw:a}}function PI(t){return{type:"Subroutine",raw:t}}var GI=new Set(["COUNT","CMP","ERROR","FAIL","MAX","MISMATCH","SKIP","TOTAL_COUNT"]),d$=new Map([["a",7],["b",8],["e",27],["f",12],["n",10],["r",13],["t",9],["v",11]]);function HI(t){let e=t[1]==="c"?t[2]:t[3];if(!e||!/[A-Za-z]/.test(e))throw new Error(`Unsupported control character "${t}"`);return Oa(gr(e.toUpperCase())-64,t)}function VI(t,e){let{on:n,off:a}=/^\(\?(?<on>[imx]*)(?:-(?<off>[-imx]*))?/.exec(t).groups;a??="";let r=(e.getCurrentModX()||n.includes("x"))&&!a.includes("x"),i=h$(n),s=h$(a),o={};if(i&&(o.enable=i),s&&(o.disable=s),t.endsWith(")"))return e.replaceCurrentModX(r),k$("flags",t,{flags:o});if(t.endsWith(":"))return e.pushModX(r),e.numOpenGroups++,Ls("group",t,{...(i||s)&&{flags:o}});throw new Error(`Unexpected flag modifier "${t}"`)}function WI(t){let e=/\(\*(?<name>[A-Za-z_]\w*)?(?:\[(?<tag>(?:[A-Za-z_]\w*)?)\])?(?:\{(?<args>[^}]*)\})?\)/.exec(t);if(!e)throw new Error(`Incomplete or invalid named callout "${t}"`);let{name:n,tag:a,args:r}=e.groups;if(!n)throw new Error(`Invalid named callout "${t}"`);if(a==="")throw new Error(`Named callout tag with empty value not allowed "${t}"`);let i=r?r.split(",").filter(u=>u!=="").map(u=>/^[+-]?\d+$/.test(u)?+u:u):[],[s,o,l]=i,c=GI.has(n)?n.toLowerCase():"custom";switch(c){case"fail":case"mismatch":case"skip":if(i.length>0)throw new Error(`Named callout arguments not allowed "${i}"`);break;case"error":if(i.length>1)throw new Error(`Named callout allows only one argument "${i}"`);if(typeof s=="string")throw new Error(`Named callout argument must be a number "${s}"`);break;case"max":if(!i.length||i.length>2)throw new Error(`Named callout must have one or two arguments "${i}"`);if(typeof s=="string"&&!/^[A-Za-z_]\w*$/.test(s))throw new Error(`Named callout argument one must be a tag or number "${s}"`);if(i.length===2&&(typeof o=="number"||!/^[<>X]$/.test(o)))throw new Error(`Named callout optional argument two must be '<', '>', or 'X' "${o}"`);break;case"count":case"total_count":if(i.length>1)throw new Error(`Named callout allows only one argument "${i}"`);if(i.length===1&&(typeof s=="number"||!/^[<>X]$/.test(s)))throw new Error(`Named callout optional argument must be '<', '>', or 'X' "${s}"`);break;case"cmp":if(i.length!==3)throw new Error(`Named callout must have three arguments "${i}"`);if(typeof s=="string"&&!/^[A-Za-z_]\w*$/.test(s))throw new Error(`Named callout argument one must be a tag or number "${s}"`);if(typeof o=="number"||!/^(?:[<>!=]=|[<>])$/.test(o))throw new Error(`Named callout argument two must be '==', '!=', '>', '<', '>=', or '<=' "${o}"`);if(typeof l=="string"&&!/^[A-Za-z_]\w*$/.test(l))throw new Error(`Named callout argument three must be a tag or number "${l}"`);break;case"custom":throw new Error(`Undefined callout name "${n}"`);default:throw new Error(`Unexpected named callout kind "${c}"`)}return FI(c,a??null,r?.split(",")??null,t)}function m$(t){let e=null,n,a;if(t[0]==="{"){let{minStr:r,maxStr:i}=/^\{(?<minStr>\d*)(?:,(?<maxStr>\d*))?/.exec(t).groups,s=1e5;if(+r>s||i&&+i>s)throw new Error("Quantifier value unsupported in Oniguruma");if(n=+r,a=i===void 0?+r:i===""?1/0:+i,n>a&&(e="possessive",[n,a]=[a,n]),t.endsWith("?")){if(e==="possessive")throw new Error('Unsupported possessive interval quantifier chain with "?"');e="lazy"}else e||(e="greedy")}else n=t[0]==="+"?1:0,a=t[0]==="?"?1:1/0,e=t[1]==="+"?"possessive":t[1]==="?"?"lazy":"greedy";return qI(e,n,a,t)}function UI(t){let e=t[1].toLowerCase();return ki({d:"digit",h:"hex",s:"space",w:"word"}[e],t,{negate:t[1]!==e})}function KI(t){let{p:e,neg:n,value:a}=/^\\(?<p>[pP])\{(?<neg>\^?)(?<value>[^}]+)/.exec(t).groups;return ki("property",t,{value:a,negate:e==="P"&&!n||e==="p"&&!!n})}function h$(t){let e={};return t.includes("i")&&(e.ignoreCase=!0),t.includes("m")&&(e.dotAll=!0),t.includes("x")&&(e.extended=!0),Object.keys(e).length?e:null}function XI(t){let e={ignoreCase:!1,dotAll:!1,extended:!1,digitIsAscii:!1,posixIsAscii:!1,spaceIsAscii:!1,wordIsAscii:!1,textSegmentMode:null};for(let n=0;n<t.length;n++){let a=t[n];if(!"imxDPSWy".includes(a))throw new Error(`Invalid flag "${a}"`);if(a==="y"){if(!/^y{[gw]}/.test(t.slice(n)))throw new Error('Invalid or unspecified flag "y" mode');e.textSegmentMode=t[n+2]==="g"?"grapheme":"word",n+=3;continue}e[{i:"ignoreCase",m:"dotAll",x:"extended",D:"digitIsAscii",P:"posixIsAscii",S:"spaceIsAscii",W:"wordIsAscii"}[a]]=!0}return e}function ZI(t){if(/^(?:\\u(?!\p{AHex}{4})|\\x(?!\p{AHex}{1,2}|\{\p{AHex}{1,8}\}))/u.test(t))throw new Error(`Incomplete or invalid escape "${t}"`);let e=t[2]==="{"?/^\\x\{\s*(?<hex>\p{AHex}+)/u.exec(t).groups.hex:t.slice(2);return parseInt(e,16)}function JI(t,e){let{raw:n,inCharClass:a}=t,r=n.slice(1);if(!a&&(r!=="0"&&r.length===1||r[0]!=="0"&&+r<=e))return[x$(n)];let i=[],s=r.match(/^[0-7]+|\d/g);for(let o=0;o<s.length;o++){let l=s[o],c;if(o===0&&l!=="8"&&l!=="9"){if(c=parseInt(l,8),c>127)throw new Error(Qe`Octal encoded byte above 177 unsupported "${n}"`)}else c=gr(l);i.push(Oa(c,(o===0?"\\":"")+l))}return i}function YI(t){let e=[],n=new RegExp(Lg,"gy"),a;for(;a=n.exec(t);){let r=a[0];if(r[0]==="{"){let i=/^\{(?<min>\d+),(?<max>\d+)\}\??$/.exec(r);if(i){let{min:s,max:o}=i.groups;if(+s>+o&&r.endsWith("?")){n.lastIndex--,e.push(m$(r.slice(0,-1)));continue}}}e.push(m$(r))}return e}function Fp(t,e){if(!Array.isArray(t.body))throw new Error("Expected node with body array");if(t.body.length!==1)return!1;let n=t.body[0];return!e||Object.keys(e).every(a=>e[a]===n[a])}function w$(t){return QI.has(t.type)}var QI=new Set(["AbsenceFunction","Backreference","CapturingGroup","Character","CharacterClass","CharacterSet","Group","Quantifier","Subroutine"]);function Pp(t,e={}){let n={flags:"",normalizeUnknownPropertyNames:!1,skipBackrefValidation:!1,skipLookbehindValidation:!1,skipPropertyNameValidation:!1,unicodePropertyMap:null,...e,rules:{captureGroup:!1,singleline:!1,...e.rules}},a=b$(t,{flags:n.flags,rules:{captureGroup:n.rules.captureGroup,singleline:n.rules.singleline}}),r=(d,m)=>{let h=a.tokens[i.nextIndex];switch(i.parent=d,i.nextIndex++,h.type){case"Alternator":return Ba();case"Assertion":return eR(h);case"Backreference":return tR(h,i);case"Character":return Ds(h.value,{useLastValid:!!m.isCheckingRangeEnd});case"CharacterClassHyphen":return nR(h,i,m);case"CharacterClassOpen":return aR(h,i,m);case"CharacterSet":return rR(h,i);case"Directive":return uR(h.kind,{flags:h.flags});case"GroupOpen":return iR(h,i,m);case"NamedCallout":return dR(h.kind,h.tag,h.arguments);case"Quantifier":return sR(h,i);case"Subroutine":return oR(h,i);default:throw new Error(`Unexpected token type "${h.type}"`)}},i={capturingGroups:[],hasNumberedRef:!1,namedGroupsByName:new Map,nextIndex:0,normalizeUnknownPropertyNames:n.normalizeUnknownPropertyNames,parent:null,skipBackrefValidation:n.skipBackrefValidation,skipLookbehindValidation:n.skipLookbehindValidation,skipPropertyNameValidation:n.skipPropertyNameValidation,subroutines:[],tokens:a.tokens,unicodePropertyMap:n.unicodePropertyMap,walk:r},s=hR(pR(a.flags)),o=s.body[0];for(;i.nextIndex<a.tokens.length;){let d=r(o,{});d.type==="Alternative"?(s.body.push(d),o=d):o.body.push(d)}let{capturingGroups:l,hasNumberedRef:c,namedGroupsByName:u,subroutines:p}=i;if(c&&u.size&&!n.rules.captureGroup)throw new Error("Numbered backref/subroutine not allowed when using named capture");for(let{ref:d}of p)if(typeof d=="number"){if(d>l.length)throw new Error("Subroutine uses a group number that's not defined");d&&(l[d-1].isSubroutined=!0)}else if(u.has(d)){if(u.get(d).length>1)throw new Error(Qe`Subroutine uses a duplicate group name "\g<${d}>"`);u.get(d)[0].isSubroutined=!0}else throw new Error(Qe`Subroutine uses a group name that's not defined "\g<${d}>"`);return s}function eR({kind:t}){return Gp(za({"^":"line_start",$:"line_end","\\A":"string_start","\\b":"word_boundary","\\B":"word_boundary","\\G":"search_start","\\y":"text_segment_boundary","\\Y":"text_segment_boundary","\\z":"string_end","\\Z":"string_end_newline"}[t],`Unexpected assertion kind "${t}"`),{negate:t===Qe`\B`||t===Qe`\Y`})}function tR({raw:t},e){let n=/^\\k[<']/.test(t),a=n?t.slice(3,-1):t.slice(1),r=(i,s=!1)=>{let o=e.capturingGroups.length,l=!1;if(i>o)if(e.skipBackrefValidation)l=!0;else throw new Error(`Not enough capturing groups defined to the left "${t}"`);return e.hasNumberedRef=!0,qp(s?o+1-i:i,{orphan:l})};if(n){let i=/^(?<sign>-?)0*(?<num>[1-9]\d*)$/.exec(a);if(i)return r(+i.groups.num,!!i.groups.sign);if(/[-+]/.test(a))throw new Error(`Invalid backref name "${t}"`);if(!e.namedGroupsByName.has(a))throw new Error(`Group name not defined to the left "${t}"`);return qp(a)}return r(+a)}function nR(t,e,n){let{tokens:a,walk:r}=e,i=e.parent,s=i.body.at(-1),o=a[e.nextIndex];if(!n.isCheckingRangeEnd&&s&&s.type!=="CharacterClass"&&s.type!=="CharacterClassRange"&&o&&o.type!=="CharacterClassOpen"&&o.type!=="CharacterClassClose"&&o.type!=="CharacterClassIntersector"){let l=r(i,{...n,isCheckingRangeEnd:!0});if(s.type==="Character"&&l.type==="Character")return i.body.pop(),cR(s,l);throw new Error("Invalid character class range")}return Ds(gr("-"))}function aR({negate:t},e,n){let{tokens:a,walk:r}=e,i=[jl()],s=a[e.nextIndex],o=$$(s);for(;o.type!=="CharacterClassClose";){if(o.type==="CharacterClassIntersector")i.push(jl()),e.nextIndex++;else{let c=i.at(-1);c.body.push(r(c,n))}o=$$(a[e.nextIndex],s)}let l=jl({negate:t});return i.length===1?l.body=i[0].body:(l.kind="intersection",l.body=i.map(c=>c.body.length===1?c.body[0]:c)),e.nextIndex++,l}function rR({kind:t,negate:e,value:n},a){let{normalizeUnknownPropertyNames:r,skipPropertyNameValidation:i,unicodePropertyMap:s}=a;if(t==="property"){let o=Fs(n);if(Cl.has(o)&&!s?.has(o))t="posix",n=o;else return wi(n,{negate:e,normalizeUnknownPropertyNames:r,skipPropertyNameValidation:i,unicodePropertyMap:s})}return t==="posix"?mR(n,{negate:e}):Hp(t,{negate:e})}function iR(t,e,n){let{tokens:a,capturingGroups:r,namedGroupsByName:i,skipLookbehindValidation:s,walk:o}=e,l=fR(t),c=l.type==="AbsenceFunction",u=v$(l),p=u&&l.negate;if(l.type==="CapturingGroup"&&(r.push(l),l.name&&c$(i,l.name,[]).push(l)),c&&n.isInAbsenceFunction)throw new Error("Nested absence function not supported by Oniguruma");let d=C$(a[e.nextIndex]);for(;d.type!=="GroupClose";){if(d.type==="Alternator")l.body.push(Ba()),e.nextIndex++;else{let m=l.body.at(-1),h=o(m,{...n,isInAbsenceFunction:n.isInAbsenceFunction||c,isInLookbehind:n.isInLookbehind||u,isInNegLookbehind:n.isInNegLookbehind||p});if(m.body.push(h),(u||n.isInLookbehind)&&!s){let b="Lookbehind includes a pattern not allowed by Oniguruma";if(p||n.isInNegLookbehind){if(_$(h)||h.type==="CapturingGroup")throw new Error(b)}else if(_$(h)||v$(h)&&h.negate)throw new Error(b)}}d=C$(a[e.nextIndex])}return e.nextIndex++,l}function sR({kind:t,min:e,max:n},a){let r=a.parent,i=r.body.at(-1);if(!i||!w$(i))throw new Error("Quantifier requires a repeatable token");let s=Fg(t,e,n,i);return r.body.pop(),s}function oR({raw:t},e){let{capturingGroups:n,subroutines:a}=e,r=t.slice(3,-1),i=/^(?<sign>[-+]?)0*(?<num>[1-9]\d*)$/.exec(r);if(i){let o=+i.groups.num,l=n.length;if(e.hasNumberedRef=!0,r={"":o,"+":l+o,"-":l+1-o}[i.groups.sign],r<1)throw new Error("Invalid subroutine number")}else r==="0"&&(r=0);let s=qg(r);return a.push(s),s}function lR(t,e){if(t!=="repeater")throw new Error(`Unexpected absence function kind "${t}"`);return{type:"AbsenceFunction",kind:t,body:Sl(e?.body)}}function Ba(t){return{type:"Alternative",body:j$(t?.body)}}function Gp(t,e){let n={type:"Assertion",kind:t};return(t==="word_boundary"||t==="text_segment_boundary")&&(n.negate=!!e?.negate),n}function qp(t,e){let n=!!e?.orphan;return{type:"Backreference",ref:t,...n&&{orphan:n}}}function Dg(t,e){let n={name:void 0,isSubroutined:!1,...e};if(n.name!==void 0&&!gR(n.name))throw new Error(`Group name "${n.name}" invalid in Oniguruma`);return{type:"CapturingGroup",number:t,...n.name&&{name:n.name},...n.isSubroutined&&{isSubroutined:n.isSubroutined},body:Sl(e?.body)}}function Ds(t,e){let n={useLastValid:!1,...e};if(t>1114111){let a=t.toString(16);if(n.useLastValid)t=1114111;else throw t>1310719?new Error(`Invalid code point out of range "\\x{${a}}"`):new Error(`Invalid code point out of range in JS "\\x{${a}}"`)}return{type:"Character",value:t}}function jl(t){let e={kind:"union",negate:!1,...t};return{type:"CharacterClass",kind:e.kind,negate:e.negate,body:j$(t?.body)}}function cR(t,e){if(e.value<t.value)throw new Error("Character class range out of order");return{type:"CharacterClassRange",min:t,max:e}}function Hp(t,e){let n=!!e?.negate,a={type:"CharacterSet",kind:t};return(t==="digit"||t==="hex"||t==="newline"||t==="space"||t==="word")&&(a.negate=n),(t==="text_segment"||t==="newline"&&!n)&&(a.variableLength=!0),a}function uR(t,e={}){if(t==="keep")return{type:"Directive",kind:t};if(t==="flags")return{type:"Directive",kind:t,flags:za(e.flags)};throw new Error(`Unexpected directive kind "${t}"`)}function pR(t){return{type:"Flags",...t}}function un(t){let e=t?.atomic,n=t?.flags;if(e&&n)throw new Error("Atomic group cannot have flags");return{type:"Group",...e&&{atomic:e},...n&&{flags:n},body:Sl(t?.body)}}function br(t){let e={behind:!1,negate:!1,...t};return{type:"LookaroundAssertion",kind:e.behind?"lookbehind":"lookahead",negate:e.negate,body:Sl(t?.body)}}function dR(t,e,n){return{type:"NamedCallout",kind:t,tag:e,arguments:n}}function mR(t,e){let n=!!e?.negate;if(!Cl.has(t))throw new Error(`Invalid POSIX class "${t}"`);return{type:"CharacterSet",kind:"posix",value:t,negate:n}}function Fg(t,e,n,a){if(e>n)throw new Error("Invalid reversed quantifier range");return{type:"Quantifier",kind:t,min:e,max:n,body:a}}function hR(t,e){return{type:"Regex",body:Sl(e?.body),flags:t}}function qg(t){return{type:"Subroutine",ref:t}}function wi(t,e){let n={negate:!1,normalizeUnknownPropertyNames:!1,skipPropertyNameValidation:!1,unicodePropertyMap:null,...e},a=n.unicodePropertyMap?.get(Fs(t));if(!a){if(n.normalizeUnknownPropertyNames)a=bR(t);else if(n.unicodePropertyMap&&!n.skipPropertyNameValidation)throw new Error(Qe`Invalid Unicode property "\p{${t}}"`)}return{type:"CharacterSet",kind:"property",value:a??t,negate:n.negate}}function fR({flags:t,kind:e,name:n,negate:a,number:r}){switch(e){case"absence_repeater":return lR("repeater");case"atomic":return un({atomic:!0});case"capturing":return Dg(r,{name:n});case"group":return un({flags:t});case"lookahead":case"lookbehind":return br({behind:e==="lookbehind",negate:a});default:throw new Error(`Unexpected group kind "${e}"`)}}function Sl(t){if(t===void 0)t=[Ba()];else if(!Array.isArray(t)||!t.length||!t.every(e=>e.type==="Alternative"))throw new Error("Invalid body; expected array of one or more Alternative nodes");return t}function j$(t){if(t===void 0)t=[];else if(!Array.isArray(t)||!t.every(e=>!!e.type))throw new Error("Invalid body; expected array of nodes");return t}function _$(t){return t.type==="LookaroundAssertion"&&t.kind==="lookahead"}function v$(t){return t.type==="LookaroundAssertion"&&t.kind==="lookbehind"}function gR(t){return/^[\p{Alpha}\p{Pc}][^)]*$/u.test(t)}function bR(t){return t.trim().replace(/[- _]+/g,"_").replace(/[A-Z][a-z]+(?=[A-Z])/g,"$&_").replace(/[A-Za-z]+/g,e=>e[0].toUpperCase()+e.slice(1).toLowerCase())}function Fs(t){return t.replace(/[- _]+/g,"").toLowerCase()}function $$(t,e){let n=e;return za(t,`Unclosed character class${n?.type==="Character"&&n.value===93&&n.raw==="]"?' (started with "]")':""}`)}function C$(t){return za(t,"Unclosed group")}function _i(t,e,n=null){function a(i,s){for(let o=0;o<i.length;o++){let l=r(i[o],s,o,i);o=Math.max(-1,o+l)}}function r(i,s=null,o=null,l=null){let c=0,u=!1,p={node:i,parent:s,key:o,container:l,root:t,remove(){Vp(l).splice(Math.max(0,qs(o)+c),1),c--,u=!0},removeAllNextSiblings(){return Vp(l).splice(qs(o)+1)},removeAllPrevSiblings(){let k=qs(o)+c;return c-=k,Vp(l).splice(0,Math.max(0,k))},replaceWith(k,_={}){let $=!!_.traverse;l?l[Math.max(0,qs(o)+c)]=k:za(s,"Can't replace root node")[o]=k,$&&r(k,s,o,l),u=!0},replaceWithMultiple(k,_={}){let $=!!_.traverse;if(Vp(l).splice(Math.max(0,qs(o)+c),1,...k),c+=k.length-1,$){let M=0;for(let N=0;N<k.length;N++)M+=r(k[N],s,qs(o)+N+M,l)}u=!0},skip(){u=!0}},{type:d}=i,m=e["*"],h=e[d],b=typeof m=="function"?m:m?.enter,y=typeof h=="function"?h:h?.enter;if(b?.(p,n),y?.(p,n),!u)switch(d){case"AbsenceFunction":case"Alternative":case"CapturingGroup":case"CharacterClass":case"Group":case"LookaroundAssertion":a(i.body,i);break;case"Assertion":case"Backreference":case"Character":case"CharacterSet":case"Directive":case"Flags":case"NamedCallout":case"Subroutine":break;case"CharacterClassRange":r(i.min,i,"min"),r(i.max,i,"max");break;case"Quantifier":r(i.body,i,"body");break;case"Regex":a(i.body,i),r(i.flags,i,"flags");break;default:throw new Error(`Unexpected node type "${d}"`)}return h?.exit?.(p,n),m?.exit?.(p,n),c}return r(t),t}function Vp(t){if(!Array.isArray(t))throw new Error("Container expected");return t}function qs(t){if(typeof t!="number")throw new Error("Numeric key expected");return t}var S$=String.raw`\(\?(?:[:=!>A-Za-z\-]|<[=!]|\(DEFINE\))`;function E$(t,e){for(let n=0;n<t.length;n++)t[n]>=e&&t[n]++}function A$(t,e,n,a){return t.slice(0,e)+a+t.slice(e+n.length)}var Kt=Object.freeze({DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS"});function El(t,e,n,a){let r=new RegExp(String.raw`${e}|(?<$skip>\[\^?|\\?.)`,"gsu"),i=[!1],s=0,o="";for(let l of t.matchAll(r)){let{0:c,groups:{$skip:u}}=l;if(!u&&(!a||a===Kt.DEFAULT==!s)){n instanceof Function?o+=n(l,{context:s?Kt.CHAR_CLASS:Kt.DEFAULT,negated:i[i.length-1]}):o+=n;continue}c[0]==="["?(s++,i.push(c[1]==="^")):c==="]"&&s&&(s--,i.pop()),o+=c}return o}function Pg(t,e,n,a){El(t,e,n,a)}function yR(t,e,n=0,a){if(!new RegExp(e,"su").test(t))return null;let r=new RegExp(`${e}|(?<$skip>\\\\?.)`,"gsu");r.lastIndex=n;let i=0,s;for(;s=r.exec(t);){let{0:o,groups:{$skip:l}}=s;if(!l&&(!a||a===Kt.DEFAULT==!i))return s;o==="["?i++:o==="]"&&i&&i--,r.lastIndex==s.index&&r.lastIndex++}return null}function Al(t,e,n){return!!yR(t,e,0,n)}function T$(t,e){let n=/\\?./gsu;n.lastIndex=e;let a=t.length,r=0,i=1,s;for(;s=n.exec(t);){let[o]=s;if(o==="[")r++;else if(r)o==="]"&&r--;else if(o==="(")i++;else if(o===")"&&(i--,!i)){a=s.index;break}}return t.slice(e,a)}var M$=new RegExp(String.raw`(?<noncapturingStart>${S$})|(?<capturingStart>\((?:\?<[^>]+>)?)|\\?.`,"gsu");function Hg(t,e){let n=e?.hiddenCaptures??[],a=e?.captureTransfers??new Map;if(!/\(\?>/.test(t))return{pattern:t,captureTransfers:a,hiddenCaptures:n};let r="(?>",i="(?:(?=(",s=[0],o=[],l=0,c=0,u=NaN,p;do{p=!1;let d=0,m=0,h=!1,b;for(M$.lastIndex=Number.isNaN(u)?0:u+i.length;b=M$.exec(t);){let{0:y,index:k,groups:{capturingStart:_,noncapturingStart:$}}=b;if(y==="[")d++;else if(d)y==="]"&&d--;else if(y===r&&!h)u=k,h=!0;else if(h&&$)m++;else if(_)h?m++:(l++,s.push(l+c));else if(y===")"&&h){if(!m){c++;let M=l+c;if(t=`${t.slice(0,u)}${i}${t.slice(u+r.length,k)}))<$$${M}>)${t.slice(k+1)}`,p=!0,o.push(M),E$(n,M),a.size){let N=new Map;a.forEach((E,I)=>{N.set(I>=M?I+1:I,E.map(F=>F>=M?F+1:F))}),a=N}break}m--}}}while(p);return n.push(...o),t=El(t,String.raw`\\(?<backrefNum>[1-9]\d*)|<\$\$(?<wrappedBackrefNum>\d+)>`,({0:d,groups:{backrefNum:m,wrappedBackrefNum:h}})=>{if(m){let b=+m;if(b>s.length-1)throw new Error(`Backref "${d}" greater than number of captures`);return`\\${s[b]}`}return`\\${h}`},Kt.DEFAULT),{pattern:t,captureTransfers:a,hiddenCaptures:n}}var N$=String.raw`(?:[?*+]|\{\d+(?:,\d*)?\})`,Gg=new RegExp(String.raw` +`.replace(/\s+/g,""),"gsu");function F$(t,e={}){let n={flags:"",...e,rules:{captureGroup:!1,singleline:!1,...e.rules}};if(typeof t!="string")throw new Error("String expected as pattern");let a=MR(n.flags),r=[a.extended],i={captureGroup:n.rules.captureGroup,getCurrentModX(){return r.at(-1)},numOpenGroups:0,popModX(){r.pop()},pushModX(p){r.push(p)},replaceCurrentModX(p){r[r.length-1]=p},singleline:n.rules.singleline},s=[],o;for(Kp.lastIndex=0;o=Kp.exec(t);){let p=mR(i,t,o[0],Kp.lastIndex);p.tokens?s.push(...p.tokens):p.token&&s.push(p.token),p.lastIndex!==void 0&&(Kp.lastIndex=p.lastIndex)}let l=[],c=0;s.filter(p=>p.type==="GroupOpen").forEach(p=>{p.kind==="capturing"?p.number=++c:p.raw==="("&&l.push(p)}),c||l.forEach((p,d)=>{p.kind="capturing",p.number=d+1});let u=c||l.length;return{tokens:s.map(p=>p.type==="EscapedNumber"?IR(p,u):p).flat(),flags:a}}function mR(t,e,n,a){let[r,i]=n;if(n==="["||n==="[^"){let s=hR(e,n,a);return{tokens:s.tokens,lastIndex:s.lastIndex}}if(r==="\\"){if("AbBGyYzZ".includes(i))return{token:I$(n,n)};if(/^\\g[<']/.test(n)){if(!/^\\g(?:<[^>]+>|'[^']+')$/.test(n))throw new Error(`Invalid group name "${n}"`);return{token:$R(n)}}if(/^\\k[<']/.test(n)){if(!/^\\k(?:<[^>]+>|'[^']+')$/.test(n))throw new Error(`Invalid group name "${n}"`);return{token:q$(n)}}if(i==="K")return{token:G$("keep",n)};if(i==="N"||i==="R")return{token:Ei("newline",n,{negate:i==="N"})};if(i==="O")return{token:Ei("any",n)};if(i==="X")return{token:Ei("text_segment",n)};let s=P$(n,{inCharClass:!1});return Array.isArray(s)?{tokens:s}:{token:s}}if(r==="("){if(i==="*")return{token:ER(n)};if(n==="(?{")throw new Error(`Unsupported callout "${n}"`);if(n.startsWith("(?#")){if(e[a]!==")")throw new Error('Unclosed comment group "(?#"');return{lastIndex:a+1}}if(/^\(\?[-imx]+[:)]$/.test(n))return{token:SR(n,t)};if(t.pushModX(t.getCurrentModX()),t.numOpenGroups++,n==="("&&!t.captureGroup||n==="(?:")return{token:Us("group",n)};if(n==="(?>")return{token:Us("atomic",n)};if(n==="(?="||n==="(?!"||n==="(?<="||n==="(?<!")return{token:Us(n[2]==="<"?"lookbehind":"lookahead",n,{negate:n.endsWith("!")})};if(n==="("&&t.captureGroup||n.startsWith("(?<")&&n.endsWith(">")||n.startsWith("(?'")&&n.endsWith("'"))return{token:Us("capturing",n,{...n!=="("&&{name:n.slice(3,-1)}})};if(n.startsWith("(?~")){if(n==="(?~|")throw new Error(`Unsupported absence function kind "${n}"`);return{token:Us("absence_repeater",n)}}throw n==="(?("?new Error(`Unsupported conditional "${n}"`):new Error(`Invalid or unsupported group option "${n}"`)}if(n===")"){if(t.popModX(),t.numOpenGroups--,t.numOpenGroups<0)throw new Error('Unmatched ")"');return{token:kR(n)}}if(t.getCurrentModX()){if(n==="#"){let s=e.indexOf(` +`,a);return{lastIndex:s===-1?e.length:s}}if(/^\s$/.test(n)){let s=/\s+/y;return s.lastIndex=a,{lastIndex:s.exec(e)?s.lastIndex:a}}}if(n===".")return{token:Ei("dot",n)};if(n==="^"||n==="$"){let s=t.singleline?{"^":et`\A`,$:et`\Z`}[n]:n;return{token:I$(s,n)}}return n==="|"?{token:gR(n)}:Jg.test(n)?{tokens:RR(n)}:{token:Fa(xr(n),n)}}function hR(t,e,n){let a=[R$(e[1]==="^",e)],r=1,i;for(Zg.lastIndex=n;i=Zg.exec(t);){let s=i[0];if(s[0]==="["&&s[1]!==":")r++,a.push(R$(s[1]==="^",s));else if(s==="]"){if(a.at(-1).type==="CharacterClassOpen")a.push(Fa(93,s));else if(r--,a.push(bR(s)),!r)break}else{let o=fR(s);Array.isArray(o)?a.push(...o):a.push(o)}}return{tokens:a,lastIndex:Zg.lastIndex||t.length}}function fR(t){if(t[0]==="\\")return P$(t,{inCharClass:!0});if(t[0]==="["){let e=/\[:(?<negate>\^?)(?<name>[a-z]+):\]/.exec(t);if(!e||!zl.has(e.groups.name))throw new Error(`Invalid POSIX class "${t}"`);return Ei("posix",t,{value:e.groups.name,negate:!!e.groups.negate})}return t==="-"?yR(t):t==="&&"?xR(t):Fa(xr(t),t)}function P$(t,{inCharClass:e}){let n=t[1];if(n==="c"||n==="C")return jR(t);if("dDhHsSwW".includes(n))return AR(t);if(t.startsWith(et`\o{`))throw new Error(`Incomplete, invalid, or unsupported octal code point "${t}"`);if(/^\\[pP]\{/.test(t)){if(t.length===3)throw new Error(`Incomplete or invalid Unicode property "${t}"`);return TR(t)}if(/^\\x[89A-Fa-f]\p{AHex}/u.test(t))try{let a=t.split(/\\x/).slice(1).map(s=>parseInt(s,16)),r=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}).decode(new Uint8Array(a)),i=new TextEncoder;return[...r].map(s=>{let o=[...i.encode(s)].map(l=>`\\x${l.toString(16)}`).join("");return Fa(xr(s),o)})}catch{throw new Error(`Multibyte code "${t}" incomplete or invalid in Oniguruma`)}if(n==="u"||n==="x")return Fa(NR(t),t);if(z$.has(n))return Fa(z$.get(n),t);if(/\d/.test(n))return wR(e,t);if(t==="\\")throw new Error(et`Incomplete escape "\"`);if(n==="M")throw new Error(`Unsupported meta "${t}"`);if([...t].length===2)return Fa(t.codePointAt(1),t);throw new Error(`Unexpected escape "${t}"`)}function gR(t){return{type:"Alternator",raw:t}}function I$(t,e){return{type:"Assertion",kind:t,raw:e}}function q$(t){return{type:"Backreference",raw:t}}function Fa(t,e){return{type:"Character",value:t,raw:e}}function bR(t){return{type:"CharacterClassClose",raw:t}}function yR(t){return{type:"CharacterClassHyphen",raw:t}}function xR(t){return{type:"CharacterClassIntersector",raw:t}}function R$(t,e){return{type:"CharacterClassOpen",negate:t,raw:e}}function Ei(t,e,n={}){return{type:"CharacterSet",kind:t,...n,raw:e}}function G$(t,e,n={}){return t==="keep"?{type:"Directive",kind:t,raw:e}:{type:"Directive",kind:t,flags:Da(n.flags),raw:e}}function wR(t,e){return{type:"EscapedNumber",inCharClass:t,raw:e}}function kR(t){return{type:"GroupClose",raw:t}}function Us(t,e,n={}){return{type:"GroupOpen",kind:t,...n,raw:e}}function _R(t,e,n,a){return{type:"NamedCallout",kind:t,tag:e,arguments:n,raw:a}}function vR(t,e,n,a){return{type:"Quantifier",kind:t,min:e,max:n,raw:a}}function $R(t){return{type:"Subroutine",raw:t}}var CR=new Set(["COUNT","CMP","ERROR","FAIL","MAX","MISMATCH","SKIP","TOTAL_COUNT"]),z$=new Map([["a",7],["b",8],["e",27],["f",12],["n",10],["r",13],["t",9],["v",11]]);function jR(t){let e=t[1]==="c"?t[2]:t[3];if(!e||!/[A-Za-z]/.test(e))throw new Error(`Unsupported control character "${t}"`);return Fa(xr(e.toUpperCase())-64,t)}function SR(t,e){let{on:n,off:a}=/^\(\?(?<on>[imx]*)(?:-(?<off>[-imx]*))?/.exec(t).groups;a??="";let r=(e.getCurrentModX()||n.includes("x"))&&!a.includes("x"),i=B$(n),s=B$(a),o={};if(i&&(o.enable=i),s&&(o.disable=s),t.endsWith(")"))return e.replaceCurrentModX(r),G$("flags",t,{flags:o});if(t.endsWith(":"))return e.pushModX(r),e.numOpenGroups++,Us("group",t,{...(i||s)&&{flags:o}});throw new Error(`Unexpected flag modifier "${t}"`)}function ER(t){let e=/\(\*(?<name>[A-Za-z_]\w*)?(?:\[(?<tag>(?:[A-Za-z_]\w*)?)\])?(?:\{(?<args>[^}]*)\})?\)/.exec(t);if(!e)throw new Error(`Incomplete or invalid named callout "${t}"`);let{name:n,tag:a,args:r}=e.groups;if(!n)throw new Error(`Invalid named callout "${t}"`);if(a==="")throw new Error(`Named callout tag with empty value not allowed "${t}"`);let i=r?r.split(",").filter(u=>u!=="").map(u=>/^[+-]?\d+$/.test(u)?+u:u):[],[s,o,l]=i,c=CR.has(n)?n.toLowerCase():"custom";switch(c){case"fail":case"mismatch":case"skip":if(i.length>0)throw new Error(`Named callout arguments not allowed "${i}"`);break;case"error":if(i.length>1)throw new Error(`Named callout allows only one argument "${i}"`);if(typeof s=="string")throw new Error(`Named callout argument must be a number "${s}"`);break;case"max":if(!i.length||i.length>2)throw new Error(`Named callout must have one or two arguments "${i}"`);if(typeof s=="string"&&!/^[A-Za-z_]\w*$/.test(s))throw new Error(`Named callout argument one must be a tag or number "${s}"`);if(i.length===2&&(typeof o=="number"||!/^[<>X]$/.test(o)))throw new Error(`Named callout optional argument two must be '<', '>', or 'X' "${o}"`);break;case"count":case"total_count":if(i.length>1)throw new Error(`Named callout allows only one argument "${i}"`);if(i.length===1&&(typeof s=="number"||!/^[<>X]$/.test(s)))throw new Error(`Named callout optional argument must be '<', '>', or 'X' "${s}"`);break;case"cmp":if(i.length!==3)throw new Error(`Named callout must have three arguments "${i}"`);if(typeof s=="string"&&!/^[A-Za-z_]\w*$/.test(s))throw new Error(`Named callout argument one must be a tag or number "${s}"`);if(typeof o=="number"||!/^(?:[<>!=]=|[<>])$/.test(o))throw new Error(`Named callout argument two must be '==', '!=', '>', '<', '>=', or '<=' "${o}"`);if(typeof l=="string"&&!/^[A-Za-z_]\w*$/.test(l))throw new Error(`Named callout argument three must be a tag or number "${l}"`);break;case"custom":throw new Error(`Undefined callout name "${n}"`);default:throw new Error(`Unexpected named callout kind "${c}"`)}return _R(c,a??null,r?.split(",")??null,t)}function O$(t){let e=null,n,a;if(t[0]==="{"){let{minStr:r,maxStr:i}=/^\{(?<minStr>\d*)(?:,(?<maxStr>\d*))?/.exec(t).groups,s=1e5;if(+r>s||i&&+i>s)throw new Error("Quantifier value unsupported in Oniguruma");if(n=+r,a=i===void 0?+r:i===""?1/0:+i,n>a&&(e="possessive",[n,a]=[a,n]),t.endsWith("?")){if(e==="possessive")throw new Error('Unsupported possessive interval quantifier chain with "?"');e="lazy"}else e||(e="greedy")}else n=t[0]==="+"?1:0,a=t[0]==="?"?1:1/0,e=t[1]==="+"?"possessive":t[1]==="?"?"lazy":"greedy";return vR(e,n,a,t)}function AR(t){let e=t[1].toLowerCase();return Ei({d:"digit",h:"hex",s:"space",w:"word"}[e],t,{negate:t[1]!==e})}function TR(t){let{p:e,neg:n,value:a}=/^\\(?<p>[pP])\{(?<neg>\^?)(?<value>[^}]+)/.exec(t).groups;return Ei("property",t,{value:a,negate:e==="P"&&!n||e==="p"&&!!n})}function B$(t){let e={};return t.includes("i")&&(e.ignoreCase=!0),t.includes("m")&&(e.dotAll=!0),t.includes("x")&&(e.extended=!0),Object.keys(e).length?e:null}function MR(t){let e={ignoreCase:!1,dotAll:!1,extended:!1,digitIsAscii:!1,posixIsAscii:!1,spaceIsAscii:!1,wordIsAscii:!1,textSegmentMode:null};for(let n=0;n<t.length;n++){let a=t[n];if(!"imxDPSWy".includes(a))throw new Error(`Invalid flag "${a}"`);if(a==="y"){if(!/^y{[gw]}/.test(t.slice(n)))throw new Error('Invalid or unspecified flag "y" mode');e.textSegmentMode=t[n+2]==="g"?"grapheme":"word",n+=3;continue}e[{i:"ignoreCase",m:"dotAll",x:"extended",D:"digitIsAscii",P:"posixIsAscii",S:"spaceIsAscii",W:"wordIsAscii"}[a]]=!0}return e}function NR(t){if(/^(?:\\u(?!\p{AHex}{4})|\\x(?!\p{AHex}{1,2}|\{\p{AHex}{1,8}\}))/u.test(t))throw new Error(`Incomplete or invalid escape "${t}"`);let e=t[2]==="{"?/^\\x\{\s*(?<hex>\p{AHex}+)/u.exec(t).groups.hex:t.slice(2);return parseInt(e,16)}function IR(t,e){let{raw:n,inCharClass:a}=t,r=n.slice(1);if(!a&&(r!=="0"&&r.length===1||r[0]!=="0"&&+r<=e))return[q$(n)];let i=[],s=r.match(/^[0-7]+|\d/g);for(let o=0;o<s.length;o++){let l=s[o],c;if(o===0&&l!=="8"&&l!=="9"){if(c=parseInt(l,8),c>127)throw new Error(et`Octal encoded byte above 177 unsupported "${n}"`)}else c=xr(l);i.push(Fa(c,(o===0?"\\":"")+l))}return i}function RR(t){let e=[],n=new RegExp(Jg,"gy"),a;for(;a=n.exec(t);){let r=a[0];if(r[0]==="{"){let i=/^\{(?<min>\d+),(?<max>\d+)\}\??$/.exec(r);if(i){let{min:s,max:o}=i.groups;if(+s>+o&&r.endsWith("?")){n.lastIndex--,e.push(O$(r.slice(0,-1)));continue}}}e.push(O$(r))}return e}function Xp(t,e){if(!Array.isArray(t.body))throw new Error("Expected node with body array");if(t.body.length!==1)return!1;let n=t.body[0];return!e||Object.keys(e).every(a=>e[a]===n[a])}function H$(t){return zR.has(t.type)}var zR=new Set(["AbsenceFunction","Backreference","CapturingGroup","Character","CharacterClass","CharacterSet","Group","Quantifier","Subroutine"]);function Jp(t,e={}){let n={flags:"",normalizeUnknownPropertyNames:!1,skipBackrefValidation:!1,skipLookbehindValidation:!1,skipPropertyNameValidation:!1,unicodePropertyMap:null,...e,rules:{captureGroup:!1,singleline:!1,...e.rules}},a=F$(t,{flags:n.flags,rules:{captureGroup:n.rules.captureGroup,singleline:n.rules.singleline}}),r=(d,m)=>{let h=a.tokens[i.nextIndex];switch(i.parent=d,i.nextIndex++,h.type){case"Alternator":return Pa();case"Assertion":return OR(h);case"Backreference":return BR(h,i);case"Character":return Ks(h.value,{useLastValid:!!m.isCheckingRangeEnd});case"CharacterClassHyphen":return LR(h,i,m);case"CharacterClassOpen":return DR(h,i,m);case"CharacterSet":return FR(h,i);case"Directive":return WR(h.kind,{flags:h.flags});case"GroupOpen":return PR(h,i,m);case"NamedCallout":return KR(h.kind,h.tag,h.arguments);case"Quantifier":return qR(h,i);case"Subroutine":return GR(h,i);default:throw new Error(`Unexpected token type "${h.type}"`)}},i={capturingGroups:[],hasNumberedRef:!1,namedGroupsByName:new Map,nextIndex:0,normalizeUnknownPropertyNames:n.normalizeUnknownPropertyNames,parent:null,skipBackrefValidation:n.skipBackrefValidation,skipLookbehindValidation:n.skipLookbehindValidation,skipPropertyNameValidation:n.skipPropertyNameValidation,subroutines:[],tokens:a.tokens,unicodePropertyMap:n.unicodePropertyMap,walk:r},s=ZR(UR(a.flags)),o=s.body[0];for(;i.nextIndex<a.tokens.length;){let d=r(o,{});d.type==="Alternative"?(s.body.push(d),o=d):o.body.push(d)}let{capturingGroups:l,hasNumberedRef:c,namedGroupsByName:u,subroutines:p}=i;if(c&&u.size&&!n.rules.captureGroup)throw new Error("Numbered backref/subroutine not allowed when using named capture");for(let{ref:d}of p)if(typeof d=="number"){if(d>l.length)throw new Error("Subroutine uses a group number that's not defined");d&&(l[d-1].isSubroutined=!0)}else if(u.has(d)){if(u.get(d).length>1)throw new Error(et`Subroutine uses a duplicate group name "\g<${d}>"`);u.get(d)[0].isSubroutined=!0}else throw new Error(et`Subroutine uses a group name that's not defined "\g<${d}>"`);return s}function OR({kind:t}){return Yp(Da({"^":"line_start",$:"line_end","\\A":"string_start","\\b":"word_boundary","\\B":"word_boundary","\\G":"search_start","\\y":"text_segment_boundary","\\Y":"text_segment_boundary","\\z":"string_end","\\Z":"string_end_newline"}[t],`Unexpected assertion kind "${t}"`),{negate:t===et`\B`||t===et`\Y`})}function BR({raw:t},e){let n=/^\\k[<']/.test(t),a=n?t.slice(3,-1):t.slice(1),r=(i,s=!1)=>{let o=e.capturingGroups.length,l=!1;if(i>o)if(e.skipBackrefValidation)l=!0;else throw new Error(`Not enough capturing groups defined to the left "${t}"`);return e.hasNumberedRef=!0,Zp(s?o+1-i:i,{orphan:l})};if(n){let i=/^(?<sign>-?)0*(?<num>[1-9]\d*)$/.exec(a);if(i)return r(+i.groups.num,!!i.groups.sign);if(/[-+]/.test(a))throw new Error(`Invalid backref name "${t}"`);if(!e.namedGroupsByName.has(a))throw new Error(`Group name not defined to the left "${t}"`);return Zp(a)}return r(+a)}function LR(t,e,n){let{tokens:a,walk:r}=e,i=e.parent,s=i.body.at(-1),o=a[e.nextIndex];if(!n.isCheckingRangeEnd&&s&&s.type!=="CharacterClass"&&s.type!=="CharacterClassRange"&&o&&o.type!=="CharacterClassOpen"&&o.type!=="CharacterClassClose"&&o.type!=="CharacterClassIntersector"){let l=r(i,{...n,isCheckingRangeEnd:!0});if(s.type==="Character"&&l.type==="Character")return i.body.pop(),VR(s,l);throw new Error("Invalid character class range")}return Ks(xr("-"))}function DR({negate:t},e,n){let{tokens:a,walk:r}=e,i=[Ol()],s=a[e.nextIndex],o=U$(s);for(;o.type!=="CharacterClassClose";){if(o.type==="CharacterClassIntersector")i.push(Ol()),e.nextIndex++;else{let c=i.at(-1);c.body.push(r(c,n))}o=U$(a[e.nextIndex],s)}let l=Ol({negate:t});return i.length===1?l.body=i[0].body:(l.kind="intersection",l.body=i.map(c=>c.body.length===1?c.body[0]:c)),e.nextIndex++,l}function FR({kind:t,negate:e,value:n},a){let{normalizeUnknownPropertyNames:r,skipPropertyNameValidation:i,unicodePropertyMap:s}=a;if(t==="property"){let o=Xs(n);if(zl.has(o)&&!s?.has(o))t="posix",n=o;else return Ai(n,{negate:e,normalizeUnknownPropertyNames:r,skipPropertyNameValidation:i,unicodePropertyMap:s})}return t==="posix"?XR(n,{negate:e}):Qp(t,{negate:e})}function PR(t,e,n){let{tokens:a,capturingGroups:r,namedGroupsByName:i,skipLookbehindValidation:s,walk:o}=e,l=JR(t),c=l.type==="AbsenceFunction",u=W$(l),p=u&&l.negate;if(l.type==="CapturingGroup"&&(r.push(l),l.name&&N$(i,l.name,[]).push(l)),c&&n.isInAbsenceFunction)throw new Error("Nested absence function not supported by Oniguruma");let d=K$(a[e.nextIndex]);for(;d.type!=="GroupClose";){if(d.type==="Alternator")l.body.push(Pa()),e.nextIndex++;else{let m=l.body.at(-1),h=o(m,{...n,isInAbsenceFunction:n.isInAbsenceFunction||c,isInLookbehind:n.isInLookbehind||u,isInNegLookbehind:n.isInNegLookbehind||p});if(m.body.push(h),(u||n.isInLookbehind)&&!s){let b="Lookbehind includes a pattern not allowed by Oniguruma";if(p||n.isInNegLookbehind){if(V$(h)||h.type==="CapturingGroup")throw new Error(b)}else if(V$(h)||W$(h)&&h.negate)throw new Error(b)}}d=K$(a[e.nextIndex])}return e.nextIndex++,l}function qR({kind:t,min:e,max:n},a){let r=a.parent,i=r.body.at(-1);if(!i||!H$(i))throw new Error("Quantifier requires a repeatable token");let s=Qg(t,e,n,i);return r.body.pop(),s}function GR({raw:t},e){let{capturingGroups:n,subroutines:a}=e,r=t.slice(3,-1),i=/^(?<sign>[-+]?)0*(?<num>[1-9]\d*)$/.exec(r);if(i){let o=+i.groups.num,l=n.length;if(e.hasNumberedRef=!0,r={"":o,"+":l+o,"-":l+1-o}[i.groups.sign],r<1)throw new Error("Invalid subroutine number")}else r==="0"&&(r=0);let s=eb(r);return a.push(s),s}function HR(t,e){if(t!=="repeater")throw new Error(`Unexpected absence function kind "${t}"`);return{type:"AbsenceFunction",kind:t,body:Bl(e?.body)}}function Pa(t){return{type:"Alternative",body:X$(t?.body)}}function Yp(t,e){let n={type:"Assertion",kind:t};return(t==="word_boundary"||t==="text_segment_boundary")&&(n.negate=!!e?.negate),n}function Zp(t,e){let n=!!e?.orphan;return{type:"Backreference",ref:t,...n&&{orphan:n}}}function Yg(t,e){let n={name:void 0,isSubroutined:!1,...e};if(n.name!==void 0&&!YR(n.name))throw new Error(`Group name "${n.name}" invalid in Oniguruma`);return{type:"CapturingGroup",number:t,...n.name&&{name:n.name},...n.isSubroutined&&{isSubroutined:n.isSubroutined},body:Bl(e?.body)}}function Ks(t,e){let n={useLastValid:!1,...e};if(t>1114111){let a=t.toString(16);if(n.useLastValid)t=1114111;else throw t>1310719?new Error(`Invalid code point out of range "\\x{${a}}"`):new Error(`Invalid code point out of range in JS "\\x{${a}}"`)}return{type:"Character",value:t}}function Ol(t){let e={kind:"union",negate:!1,...t};return{type:"CharacterClass",kind:e.kind,negate:e.negate,body:X$(t?.body)}}function VR(t,e){if(e.value<t.value)throw new Error("Character class range out of order");return{type:"CharacterClassRange",min:t,max:e}}function Qp(t,e){let n=!!e?.negate,a={type:"CharacterSet",kind:t};return(t==="digit"||t==="hex"||t==="newline"||t==="space"||t==="word")&&(a.negate=n),(t==="text_segment"||t==="newline"&&!n)&&(a.variableLength=!0),a}function WR(t,e={}){if(t==="keep")return{type:"Directive",kind:t};if(t==="flags")return{type:"Directive",kind:t,flags:Da(e.flags)};throw new Error(`Unexpected directive kind "${t}"`)}function UR(t){return{type:"Flags",...t}}function mn(t){let e=t?.atomic,n=t?.flags;if(e&&n)throw new Error("Atomic group cannot have flags");return{type:"Group",...e&&{atomic:e},...n&&{flags:n},body:Bl(t?.body)}}function wr(t){let e={behind:!1,negate:!1,...t};return{type:"LookaroundAssertion",kind:e.behind?"lookbehind":"lookahead",negate:e.negate,body:Bl(t?.body)}}function KR(t,e,n){return{type:"NamedCallout",kind:t,tag:e,arguments:n}}function XR(t,e){let n=!!e?.negate;if(!zl.has(t))throw new Error(`Invalid POSIX class "${t}"`);return{type:"CharacterSet",kind:"posix",value:t,negate:n}}function Qg(t,e,n,a){if(e>n)throw new Error("Invalid reversed quantifier range");return{type:"Quantifier",kind:t,min:e,max:n,body:a}}function ZR(t,e){return{type:"Regex",body:Bl(e?.body),flags:t}}function eb(t){return{type:"Subroutine",ref:t}}function Ai(t,e){let n={negate:!1,normalizeUnknownPropertyNames:!1,skipPropertyNameValidation:!1,unicodePropertyMap:null,...e},a=n.unicodePropertyMap?.get(Xs(t));if(!a){if(n.normalizeUnknownPropertyNames)a=QR(t);else if(n.unicodePropertyMap&&!n.skipPropertyNameValidation)throw new Error(et`Invalid Unicode property "\p{${t}}"`)}return{type:"CharacterSet",kind:"property",value:a??t,negate:n.negate}}function JR({flags:t,kind:e,name:n,negate:a,number:r}){switch(e){case"absence_repeater":return HR("repeater");case"atomic":return mn({atomic:!0});case"capturing":return Yg(r,{name:n});case"group":return mn({flags:t});case"lookahead":case"lookbehind":return wr({behind:e==="lookbehind",negate:a});default:throw new Error(`Unexpected group kind "${e}"`)}}function Bl(t){if(t===void 0)t=[Pa()];else if(!Array.isArray(t)||!t.length||!t.every(e=>e.type==="Alternative"))throw new Error("Invalid body; expected array of one or more Alternative nodes");return t}function X$(t){if(t===void 0)t=[];else if(!Array.isArray(t)||!t.every(e=>!!e.type))throw new Error("Invalid body; expected array of nodes");return t}function V$(t){return t.type==="LookaroundAssertion"&&t.kind==="lookahead"}function W$(t){return t.type==="LookaroundAssertion"&&t.kind==="lookbehind"}function YR(t){return/^[\p{Alpha}\p{Pc}][^)]*$/u.test(t)}function QR(t){return t.trim().replace(/[- _]+/g,"_").replace(/[A-Z][a-z]+(?=[A-Z])/g,"$&_").replace(/[A-Za-z]+/g,e=>e[0].toUpperCase()+e.slice(1).toLowerCase())}function Xs(t){return t.replace(/[- _]+/g,"").toLowerCase()}function U$(t,e){let n=e;return Da(t,`Unclosed character class${n?.type==="Character"&&n.value===93&&n.raw==="]"?' (started with "]")':""}`)}function K$(t){return Da(t,"Unclosed group")}function Ti(t,e,n=null){function a(i,s){for(let o=0;o<i.length;o++){let l=r(i[o],s,o,i);o=Math.max(-1,o+l)}}function r(i,s=null,o=null,l=null){let c=0,u=!1,p={node:i,parent:s,key:o,container:l,root:t,remove(){ed(l).splice(Math.max(0,Zs(o)+c),1),c--,u=!0},removeAllNextSiblings(){return ed(l).splice(Zs(o)+1)},removeAllPrevSiblings(){let w=Zs(o)+c;return c-=w,ed(l).splice(0,Math.max(0,w))},replaceWith(w,_={}){let $=!!_.traverse;l?l[Math.max(0,Zs(o)+c)]=w:Da(s,"Can't replace root node")[o]=w,$&&r(w,s,o,l),u=!0},replaceWithMultiple(w,_={}){let $=!!_.traverse;if(ed(l).splice(Math.max(0,Zs(o)+c),1,...w),c+=w.length-1,$){let M=0;for(let N=0;N<w.length;N++)M+=r(w[N],s,Zs(o)+N+M,l)}u=!0},skip(){u=!0}},{type:d}=i,m=e["*"],h=e[d],b=typeof m=="function"?m:m?.enter,y=typeof h=="function"?h:h?.enter;if(b?.(p,n),y?.(p,n),!u)switch(d){case"AbsenceFunction":case"Alternative":case"CapturingGroup":case"CharacterClass":case"Group":case"LookaroundAssertion":a(i.body,i);break;case"Assertion":case"Backreference":case"Character":case"CharacterSet":case"Directive":case"Flags":case"NamedCallout":case"Subroutine":break;case"CharacterClassRange":r(i.min,i,"min"),r(i.max,i,"max");break;case"Quantifier":r(i.body,i,"body");break;case"Regex":a(i.body,i),r(i.flags,i,"flags");break;default:throw new Error(`Unexpected node type "${d}"`)}return h?.exit?.(p,n),m?.exit?.(p,n),c}return r(t),t}function ed(t){if(!Array.isArray(t))throw new Error("Container expected");return t}function Zs(t){if(typeof t!="number")throw new Error("Numeric key expected");return t}var Z$=String.raw`\(\?(?:[:=!>A-Za-z\-]|<[=!]|\(DEFINE\))`;function J$(t,e){for(let n=0;n<t.length;n++)t[n]>=e&&t[n]++}function Y$(t,e,n,a){return t.slice(0,e)+a+t.slice(e+n.length)}var Yt=Object.freeze({DEFAULT:"DEFAULT",CHAR_CLASS:"CHAR_CLASS"});function Ll(t,e,n,a){let r=new RegExp(String.raw`${e}|(?<$skip>\[\^?|\\?.)`,"gsu"),i=[!1],s=0,o="";for(let l of t.matchAll(r)){let{0:c,groups:{$skip:u}}=l;if(!u&&(!a||a===Yt.DEFAULT==!s)){n instanceof Function?o+=n(l,{context:s?Yt.CHAR_CLASS:Yt.DEFAULT,negated:i[i.length-1]}):o+=n;continue}c[0]==="["?(s++,i.push(c[1]==="^")):c==="]"&&s&&(s--,i.pop()),o+=c}return o}function tb(t,e,n,a){Ll(t,e,n,a)}function ez(t,e,n=0,a){if(!new RegExp(e,"su").test(t))return null;let r=new RegExp(`${e}|(?<$skip>\\\\?.)`,"gsu");r.lastIndex=n;let i=0,s;for(;s=r.exec(t);){let{0:o,groups:{$skip:l}}=s;if(!l&&(!a||a===Yt.DEFAULT==!i))return s;o==="["?i++:o==="]"&&i&&i--,r.lastIndex==s.index&&r.lastIndex++}return null}function Dl(t,e,n){return!!ez(t,e,0,n)}function Q$(t,e){let n=/\\?./gsu;n.lastIndex=e;let a=t.length,r=0,i=1,s;for(;s=n.exec(t);){let[o]=s;if(o==="[")r++;else if(r)o==="]"&&r--;else if(o==="(")i++;else if(o===")"&&(i--,!i)){a=s.index;break}}return t.slice(e,a)}var e3=new RegExp(String.raw`(?<noncapturingStart>${Z$})|(?<capturingStart>\((?:\?<[^>]+>)?)|\\?.`,"gsu");function ab(t,e){let n=e?.hiddenCaptures??[],a=e?.captureTransfers??new Map;if(!/\(\?>/.test(t))return{pattern:t,captureTransfers:a,hiddenCaptures:n};let r="(?>",i="(?:(?=(",s=[0],o=[],l=0,c=0,u=NaN,p;do{p=!1;let d=0,m=0,h=!1,b;for(e3.lastIndex=Number.isNaN(u)?0:u+i.length;b=e3.exec(t);){let{0:y,index:w,groups:{capturingStart:_,noncapturingStart:$}}=b;if(y==="[")d++;else if(d)y==="]"&&d--;else if(y===r&&!h)u=w,h=!0;else if(h&&$)m++;else if(_)h?m++:(l++,s.push(l+c));else if(y===")"&&h){if(!m){c++;let M=l+c;if(t=`${t.slice(0,u)}${i}${t.slice(u+r.length,w)}))<$$${M}>)${t.slice(w+1)}`,p=!0,o.push(M),J$(n,M),a.size){let N=new Map;a.forEach((E,I)=>{N.set(I>=M?I+1:I,E.map(F=>F>=M?F+1:F))}),a=N}break}m--}}}while(p);return n.push(...o),t=Ll(t,String.raw`\\(?<backrefNum>[1-9]\d*)|<\$\$(?<wrappedBackrefNum>\d+)>`,({0:d,groups:{backrefNum:m,wrappedBackrefNum:h}})=>{if(m){let b=+m;if(b>s.length-1)throw new Error(`Backref "${d}" greater than number of captures`);return`\\${s[b]}`}return`\\${h}`},Yt.DEFAULT),{pattern:t,captureTransfers:a,hiddenCaptures:n}}var t3=String.raw`(?:[?*+]|\{\d+(?:,\d*)?\})`,nb=new RegExp(String.raw` \\(?: \d+ | c[A-Za-z] | [gk]<[^>]+> @@ -369,9 +369,9 @@ $$`:`$${t}$`)}</code>`;try{return y_.renderToString(t,{displayMode:e,throwOnErro | [A-Za-z\-]+: | \(DEFINE\) ))? -| (?<qBase>${N$})(?<qMod>[?+]?)(?<invalidQ>[?*+\{]?) +| (?<qBase>${t3})(?<qMod>[?+]?)(?<invalidQ>[?*+\{]?) | \\?. -`.replace(/\s+/g,""),"gsu");function Vg(t){if(!new RegExp(`${N$}\\+`).test(t))return{pattern:t};let e=[],n=null,a=null,r="",i=0,s;for(Gg.lastIndex=0;s=Gg.exec(t);){let{0:o,index:l,groups:{qBase:c,qMod:u,invalidQ:p}}=s;if(o==="[")i||(a=l),i++;else if(o==="]")i?i--:a=null;else if(!i)if(u==="+"&&r&&!r.startsWith("(")){if(p)throw new Error(`Invalid quantifier "${o}"`);let d=-1;if(/^\{\d+\}$/.test(c))t=A$(t,l+c.length,u,"");else{if(r===")"||r==="]"){let m=r===")"?n:a;if(m===null)throw new Error(`Invalid unmatched "${r}"`);t=`${t.slice(0,m)}(?>${t.slice(m,l)}${c})${t.slice(l+o.length)}`}else t=`${t.slice(0,l-r.length)}(?>${r}${c})${t.slice(l+o.length)}`;d+=4}Gg.lastIndex+=d}else o[0]==="("?e.push(l):o===")"&&(n=e.length?e.pop():null);r=o}return{pattern:t}}var Sn=String.raw,xR=Sn`\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`,Ug=Sn`\(\?R=(?<rDepth>[^\)]+)\)|${xR}`,Wp=Sn`\(\?<(?![=!])(?<captureName>[^>]+)>`,B$=Sn`${Wp}|(?<unnamed>\()(?!\?)`,vi=new RegExp(Sn`${Wp}|${Ug}|\(\?|\\?.`,"gsu"),Wg="Cannot use multiple overlapping recursions";function L$(t,e){let{hiddenCaptures:n,mode:a}={hiddenCaptures:[],mode:"plugin",...e},r=e?.captureTransfers??new Map;if(!new RegExp(Ug,"su").test(t))return{pattern:t,captureTransfers:r,hiddenCaptures:n};if(a==="plugin"&&Al(t,Sn`\(\?\(DEFINE\)`,Kt.DEFAULT))throw new Error("DEFINE groups cannot be used with recursion");let i=[],s=Al(t,Sn`\\[1-9]`,Kt.DEFAULT),o=new Map,l=[],c=!1,u=0,p=0,d;for(vi.lastIndex=0;d=vi.exec(t);){let{0:m,groups:{captureName:h,rDepth:b,gRNameOrNum:y,gRDepth:k}}=d;if(m==="[")u++;else if(u)m==="]"&&u--;else if(b){if(I$(b),c)throw new Error(Wg);if(s)throw new Error(`${a==="external"?"Backrefs":"Numbered backrefs"} cannot be used with global recursion`);let _=t.slice(0,d.index),$=t.slice(vi.lastIndex);if(Al($,Ug,Kt.DEFAULT))throw new Error(Wg);let M=+b-1;t=R$(_,$,M,!1,n,i,p),r=O$(r,_,M,i.length,0,p);break}else if(y){I$(k);let _=!1;for(let Y of l)if(Y.name===y||Y.num===+y){if(_=!0,Y.hasRecursedWithin)throw new Error(Wg);break}if(!_)throw new Error(Sn`Recursive \g cannot be used outside the referenced group "${a==="external"?y:Sn`\g<${y}&R=${k}>`}"`);let $=o.get(y),M=T$(t,$);if(s&&Al(M,Sn`${Wp}|\((?!\?)`,Kt.DEFAULT))throw new Error(`${a==="external"?"Backrefs":"Numbered backrefs"} cannot be used with recursion of capturing groups`);let N=t.slice($,d.index),E=M.slice(N.length+m.length),I=i.length,F=+k-1,L=R$(N,E,F,!0,n,i,p);r=O$(r,N,F,i.length-I,I,p);let T=t.slice(0,$),ce=t.slice($+M.length);t=`${T}${L}${ce}`,vi.lastIndex+=L.length-m.length-N.length-E.length,l.forEach(Y=>Y.hasRecursedWithin=!0),c=!0}else if(h)p++,o.set(String(p),vi.lastIndex),o.set(h,vi.lastIndex),l.push({num:p,name:h});else if(m[0]==="("){let _=m==="(";_&&(p++,o.set(String(p),vi.lastIndex)),l.push(_?{num:p}:{})}else m===")"&&l.pop()}return n.push(...i),{pattern:t,captureTransfers:r,hiddenCaptures:n}}function I$(t){let e=`Max depth must be integer between 2 and 100; used ${t}`;if(!/^[1-9]\d*$/.test(t))throw new Error(e);if(t=+t,t<2||t>100)throw new Error(e)}function R$(t,e,n,a,r,i,s){let o=new Set;a&&Pg(t+e,Wp,({groups:{captureName:c}})=>{o.add(c)},Kt.DEFAULT);let l=[n,a?o:null,r,i,s];return`${t}${z$(`(?:${t}`,"forward",...l)}(?:)${z$(`${e})`,"backward",...l)}${e}`}function z$(t,e,n,a,r,i,s){let l=u=>e==="forward"?u+2:n-u+2-1,c="";for(let u=0;u<n;u++){let p=l(u);c+=El(t,Sn`${B$}|\\k<(?<backref>[^>]+)>`,({0:d,groups:{captureName:m,unnamed:h,backref:b}})=>{if(b&&a&&!a.has(b))return d;let y=`_$${p}`;if(h||m){let k=s+i.length+1;return i.push(k),kR(r,k),h?d:`(?<${m}${y}>`}return Sn`\k<${b}${y}>`},Kt.DEFAULT)}return c}function kR(t,e){for(let n=0;n<t.length;n++)t[n]>=e&&t[n]++}function O$(t,e,n,a,r,i){if(t.size&&a){let s=0;Pg(e,B$,()=>s++,Kt.DEFAULT);let o=i-s+r,l=new Map;return t.forEach((c,u)=>{let p=(a-s*n)/n,d=s*n,m=u>o+s?u+a:u,h=[];for(let b of c)if(b<=o)h.push(b);else if(b>o+s+p)h.push(b+a);else if(b<=o+s)for(let y=0;y<=n;y++)h.push(b+s*y);else for(let y=0;y<=n;y++)h.push(b+d+p*y);l.set(m,h)}),l}return t}var rt=String.fromCodePoint,me=String.raw,Dn={},Kp=globalThis.RegExp;Dn.flagGroups=(()=>{try{new Kp("(?i:)")}catch{return!1}return!0})();Dn.unicodeSets=(()=>{try{new Kp("[[]]","v")}catch{return!1}return!0})();Dn.bugFlagVLiteralHyphenIsRange=Dn.unicodeSets?(()=>{try{new Kp(me`[\d\-a]`,"v")}catch{return!0}return!1})():!1;Dn.bugNestedClassIgnoresNegation=Dn.unicodeSets&&new Kp("[[^a]]","v").test("a");function Up(t,{enable:e,disable:n}){return{dotAll:!n?.dotAll&&!!(e?.dotAll||t.dotAll),ignoreCase:!n?.ignoreCase&&!!(e?.ignoreCase||t.ignoreCase)}}function Tl(t,e,n){return t.has(e)||t.set(e,n),t.get(e)}function Yg(t,e){return D$[t]>=D$[e]}function wR(t,e){if(t==null)throw new Error(e??"Value expected");return t}var D$={ES2025:2025,ES2024:2024,ES2018:2018},_R={auto:"auto",ES2025:"ES2025",ES2024:"ES2024",ES2018:"ES2018"};function H$(t={}){if({}.toString.call(t)!=="[object Object]")throw new Error("Unexpected options");if(t.target!==void 0&&!_R[t.target])throw new Error(`Unexpected target "${t.target}"`);let e={accuracy:"default",avoidSubclass:!1,flags:"",global:!1,hasIndices:!1,lazyCompileLength:1/0,target:"auto",verbose:!1,...t,rules:{allowOrphanBackrefs:!1,asciiWordBoundaries:!1,captureGroup:!1,recursionLimit:20,singleline:!1,...t.rules}};return e.target==="auto"&&(e.target=Dn.flagGroups?"ES2025":Dn.unicodeSets?"ES2024":"ES2018"),e}var vR="[ -\r ]",$R=new Set([rt(304),rt(305)]),La=me`[\p{L}\p{M}\p{N}\p{Pc}]`;function V$(t){if($R.has(t))return[t];let e=new Set,n=t.toLowerCase(),a=n.toUpperCase(),r=SR.get(n),i=CR.get(n),s=jR.get(n);return[...a].length===1&&e.add(a),s&&e.add(s),r&&e.add(r),e.add(n),i&&e.add(i),[...e]}var eb=new Map(`C Other +`.replace(/\s+/g,""),"gsu");function rb(t){if(!new RegExp(`${t3}\\+`).test(t))return{pattern:t};let e=[],n=null,a=null,r="",i=0,s;for(nb.lastIndex=0;s=nb.exec(t);){let{0:o,index:l,groups:{qBase:c,qMod:u,invalidQ:p}}=s;if(o==="[")i||(a=l),i++;else if(o==="]")i?i--:a=null;else if(!i)if(u==="+"&&r&&!r.startsWith("(")){if(p)throw new Error(`Invalid quantifier "${o}"`);let d=-1;if(/^\{\d+\}$/.test(c))t=Y$(t,l+c.length,u,"");else{if(r===")"||r==="]"){let m=r===")"?n:a;if(m===null)throw new Error(`Invalid unmatched "${r}"`);t=`${t.slice(0,m)}(?>${t.slice(m,l)}${c})${t.slice(l+o.length)}`}else t=`${t.slice(0,l-r.length)}(?>${r}${c})${t.slice(l+o.length)}`;d+=4}nb.lastIndex+=d}else o[0]==="("?e.push(l):o===")"&&(n=e.length?e.pop():null);r=o}return{pattern:t}}var Tn=String.raw,tz=Tn`\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`,sb=Tn`\(\?R=(?<rDepth>[^\)]+)\)|${tz}`,td=Tn`\(\?<(?![=!])(?<captureName>[^>]+)>`,s3=Tn`${td}|(?<unnamed>\()(?!\?)`,Mi=new RegExp(Tn`${td}|${sb}|\(\?|\\?.`,"gsu"),ib="Cannot use multiple overlapping recursions";function o3(t,e){let{hiddenCaptures:n,mode:a}={hiddenCaptures:[],mode:"plugin",...e},r=e?.captureTransfers??new Map;if(!new RegExp(sb,"su").test(t))return{pattern:t,captureTransfers:r,hiddenCaptures:n};if(a==="plugin"&&Dl(t,Tn`\(\?\(DEFINE\)`,Yt.DEFAULT))throw new Error("DEFINE groups cannot be used with recursion");let i=[],s=Dl(t,Tn`\\[1-9]`,Yt.DEFAULT),o=new Map,l=[],c=!1,u=0,p=0,d;for(Mi.lastIndex=0;d=Mi.exec(t);){let{0:m,groups:{captureName:h,rDepth:b,gRNameOrNum:y,gRDepth:w}}=d;if(m==="[")u++;else if(u)m==="]"&&u--;else if(b){if(n3(b),c)throw new Error(ib);if(s)throw new Error(`${a==="external"?"Backrefs":"Numbered backrefs"} cannot be used with global recursion`);let _=t.slice(0,d.index),$=t.slice(Mi.lastIndex);if(Dl($,sb,Yt.DEFAULT))throw new Error(ib);let M=+b-1;t=a3(_,$,M,!1,n,i,p),r=i3(r,_,M,i.length,0,p);break}else if(y){n3(w);let _=!1;for(let Y of l)if(Y.name===y||Y.num===+y){if(_=!0,Y.hasRecursedWithin)throw new Error(ib);break}if(!_)throw new Error(Tn`Recursive \g cannot be used outside the referenced group "${a==="external"?y:Tn`\g<${y}&R=${w}>`}"`);let $=o.get(y),M=Q$(t,$);if(s&&Dl(M,Tn`${td}|\((?!\?)`,Yt.DEFAULT))throw new Error(`${a==="external"?"Backrefs":"Numbered backrefs"} cannot be used with recursion of capturing groups`);let N=t.slice($,d.index),E=M.slice(N.length+m.length),I=i.length,F=+w-1,L=a3(N,E,F,!0,n,i,p);r=i3(r,N,F,i.length-I,I,p);let T=t.slice(0,$),ce=t.slice($+M.length);t=`${T}${L}${ce}`,Mi.lastIndex+=L.length-m.length-N.length-E.length,l.forEach(Y=>Y.hasRecursedWithin=!0),c=!0}else if(h)p++,o.set(String(p),Mi.lastIndex),o.set(h,Mi.lastIndex),l.push({num:p,name:h});else if(m[0]==="("){let _=m==="(";_&&(p++,o.set(String(p),Mi.lastIndex)),l.push(_?{num:p}:{})}else m===")"&&l.pop()}return n.push(...i),{pattern:t,captureTransfers:r,hiddenCaptures:n}}function n3(t){let e=`Max depth must be integer between 2 and 100; used ${t}`;if(!/^[1-9]\d*$/.test(t))throw new Error(e);if(t=+t,t<2||t>100)throw new Error(e)}function a3(t,e,n,a,r,i,s){let o=new Set;a&&tb(t+e,td,({groups:{captureName:c}})=>{o.add(c)},Yt.DEFAULT);let l=[n,a?o:null,r,i,s];return`${t}${r3(`(?:${t}`,"forward",...l)}(?:)${r3(`${e})`,"backward",...l)}${e}`}function r3(t,e,n,a,r,i,s){let l=u=>e==="forward"?u+2:n-u+2-1,c="";for(let u=0;u<n;u++){let p=l(u);c+=Ll(t,Tn`${s3}|\\k<(?<backref>[^>]+)>`,({0:d,groups:{captureName:m,unnamed:h,backref:b}})=>{if(b&&a&&!a.has(b))return d;let y=`_$${p}`;if(h||m){let w=s+i.length+1;return i.push(w),nz(r,w),h?d:`(?<${m}${y}>`}return Tn`\k<${b}${y}>`},Yt.DEFAULT)}return c}function nz(t,e){for(let n=0;n<t.length;n++)t[n]>=e&&t[n]++}function i3(t,e,n,a,r,i){if(t.size&&a){let s=0;tb(e,s3,()=>s++,Yt.DEFAULT);let o=i-s+r,l=new Map;return t.forEach((c,u)=>{let p=(a-s*n)/n,d=s*n,m=u>o+s?u+a:u,h=[];for(let b of c)if(b<=o)h.push(b);else if(b>o+s+p)h.push(b+a);else if(b<=o+s)for(let y=0;y<=n;y++)h.push(b+s*y);else for(let y=0;y<=n;y++)h.push(b+d+p*y);l.set(m,h)}),l}return t}var lt=String.fromCodePoint,me=String.raw,Fn={},ad=globalThis.RegExp;Fn.flagGroups=(()=>{try{new ad("(?i:)")}catch{return!1}return!0})();Fn.unicodeSets=(()=>{try{new ad("[[]]","v")}catch{return!1}return!0})();Fn.bugFlagVLiteralHyphenIsRange=Fn.unicodeSets?(()=>{try{new ad(me`[\d\-a]`,"v")}catch{return!0}return!1})():!1;Fn.bugNestedClassIgnoresNegation=Fn.unicodeSets&&new ad("[[^a]]","v").test("a");function nd(t,{enable:e,disable:n}){return{dotAll:!n?.dotAll&&!!(e?.dotAll||t.dotAll),ignoreCase:!n?.ignoreCase&&!!(e?.ignoreCase||t.ignoreCase)}}function Fl(t,e,n){return t.has(e)||t.set(e,n),t.get(e)}function pb(t,e){return l3[t]>=l3[e]}function az(t,e){if(t==null)throw new Error(e??"Value expected");return t}var l3={ES2025:2025,ES2024:2024,ES2018:2018},rz={auto:"auto",ES2025:"ES2025",ES2024:"ES2024",ES2018:"ES2018"};function m3(t={}){if({}.toString.call(t)!=="[object Object]")throw new Error("Unexpected options");if(t.target!==void 0&&!rz[t.target])throw new Error(`Unexpected target "${t.target}"`);let e={accuracy:"default",avoidSubclass:!1,flags:"",global:!1,hasIndices:!1,lazyCompileLength:1/0,target:"auto",verbose:!1,...t,rules:{allowOrphanBackrefs:!1,asciiWordBoundaries:!1,captureGroup:!1,recursionLimit:20,singleline:!1,...t.rules}};return e.target==="auto"&&(e.target=Fn.flagGroups?"ES2025":Fn.unicodeSets?"ES2024":"ES2018"),e}var iz="[ -\r ]",sz=new Set([lt(304),lt(305)]),qa=me`[\p{L}\p{M}\p{N}\p{Pc}]`;function h3(t){if(sz.has(t))return[t];let e=new Set,n=t.toLowerCase(),a=n.toUpperCase(),r=cz.get(n),i=oz.get(n),s=lz.get(n);return[...a].length===1&&e.add(a),s&&e.add(s),r&&e.add(r),e.add(n),i&&e.add(i),[...e]}var mb=new Map(`C Other Cc Control cntrl Cf Format Cn Unassigned @@ -461,46 +461,55 @@ Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC -XID_Start XIDS`.split(/\s/).map(t=>[Fs(t),t])),CR=new Map([["s",rt(383)],[rt(383),"s"]]),jR=new Map([[rt(223),rt(7838)],[rt(107),rt(8490)],[rt(229),rt(8491)],[rt(969),rt(8486)]]),SR=new Map([yr(453),yr(456),yr(459),yr(498),...Kg(8072,8079),...Kg(8088,8095),...Kg(8104,8111),yr(8124),yr(8140),yr(8188)]),ER=new Map([["alnum",me`[\p{Alpha}\p{Nd}]`],["alpha",me`\p{Alpha}`],["ascii",me`\p{ASCII}`],["blank",me`[\p{Zs}\t]`],["cntrl",me`\p{Cc}`],["digit",me`\p{Nd}`],["graph",me`[\P{space}&&\P{Cc}&&\P{Cn}&&\P{Cs}]`],["lower",me`\p{Lower}`],["print",me`[[\P{space}&&\P{Cc}&&\P{Cn}&&\P{Cs}]\p{Zs}]`],["punct",me`[\p{P}\p{S}]`],["space",me`\p{space}`],["upper",me`\p{Upper}`],["word",me`[\p{Alpha}\p{M}\p{Nd}\p{Pc}]`],["xdigit",me`\p{AHex}`]]);function AR(t,e){let n=[];for(let a=t;a<=e;a++)n.push(a);return n}function yr(t){let e=rt(t);return[e.toLowerCase(),e]}function Kg(t,e){return AR(t,e).map(n=>yr(n))}var W$=new Set(["Lower","Lowercase","Upper","Uppercase","Ll","Lowercase_Letter","Lt","Titlecase_Letter","Lu","Uppercase_Letter"]);function TR(t,e){let n={accuracy:"default",asciiWordBoundaries:!1,avoidSubclass:!1,bestEffortTarget:"ES2025",...e};U$(t);let a={accuracy:n.accuracy,asciiWordBoundaries:n.asciiWordBoundaries,avoidSubclass:n.avoidSubclass,flagDirectivesByAlt:new Map,jsGroupNameMap:new Map,minTargetEs2024:Yg(n.bestEffortTarget,"ES2024"),passedLookbehind:!1,strategy:null,subroutineRefMap:new Map,supportedGNodes:new Set,digitIsAscii:t.flags.digitIsAscii,spaceIsAscii:t.flags.spaceIsAscii,wordIsAscii:t.flags.wordIsAscii};_i(t,MR,a);let r={dotAll:t.flags.dotAll,ignoreCase:t.flags.ignoreCase},i={currentFlags:r,prevFlags:null,globalFlags:r,groupOriginByCopy:new Map,groupsByName:new Map,multiplexCapturesToLeftByRef:new Map,openRefs:new Map,reffedNodesByReferencer:new Map,subroutineRefMap:a.subroutineRefMap};_i(t,NR,i);let s={groupsByName:i.groupsByName,highestOrphanBackref:0,numCapturesToLeft:0,reffedNodesByReferencer:i.reffedNodesByReferencer};return _i(t,IR,s),t._originMap=i.groupOriginByCopy,t._strategy=a.strategy,t}var MR={AbsenceFunction({node:t,parent:e,replaceWith:n}){let{body:a,kind:r}=t;if(r==="repeater"){let i=un();i.body[0].body.push(br({negate:!0,body:a}),wi("Any"));let s=un();s.body[0].body.push(Fg("greedy",0,1/0,i)),n(Ke(s,e),{traverse:!0})}else throw new Error('Unsupported absence function "(?~|"')},Alternative:{enter({node:t,parent:e,key:n},{flagDirectivesByAlt:a}){let r=t.body.filter(i=>i.kind==="flags");for(let i=n+1;i<e.body.length;i++){let s=e.body[i];Tl(a,s,[]).push(...r)}},exit({node:t},{flagDirectivesByAlt:e}){if(e.get(t)?.length){let n=X$(e.get(t));if(n){let a=un({flags:n});a.body[0].body=t.body,t.body=[Ke(a,t)]}}}},Assertion({node:t,parent:e,key:n,container:a,root:r,remove:i,replaceWith:s},o){let{kind:l,negate:c}=t,{asciiWordBoundaries:u,avoidSubclass:p,supportedGNodes:d,wordIsAscii:m}=o;if(l==="text_segment_boundary")throw new Error(`Unsupported text segment boundary "\\${c?"Y":"y"}"`);if(l==="line_end")s(Ke(br({body:[Ba({body:[Gp("string_end")]}),Ba({body:[Ds(10)]})]}),e));else if(l==="line_start")s(Ke(Da(me`(?<=\A|\n(?!\z))`,{skipLookbehindValidation:!0}),e));else if(l==="search_start")if(d.has(t))r.flags.sticky=!0,i();else{let h=a[n-1];if(h&&DR(h))s(Ke(br({negate:!0}),e));else{if(p)throw new Error(me`Uses "\G" in a way that requires a subclass`);s(xr(Gp("string_start"),e)),o.strategy="clip_search"}}else if(!(l==="string_end"||l==="string_start"))if(l==="string_end_newline")s(Ke(Da(me`(?=\n?\z)`),e));else if(l==="word_boundary"){if(!m&&!u){let h=`(?:(?<=${La})(?!${La})|(?<!${La})(?=${La}))`,b=`(?:(?<=${La})(?=${La})|(?<!${La})(?!${La}))`;s(Ke(Da(c?b:h),e))}}else throw new Error(`Unexpected assertion kind "${l}"`)},Backreference({node:t},{jsGroupNameMap:e}){let{ref:n}=t;typeof n=="string"&&!Zg(n)&&(n=Xg(n,e),t.ref=n)},CapturingGroup({node:t},{jsGroupNameMap:e,subroutineRefMap:n}){let{name:a}=t;a&&!Zg(a)&&(a=Xg(a,e),t.name=a),n.set(t.number,t),a&&n.set(a,t)},CharacterClassRange({node:t,parent:e,replaceWith:n}){if(e.kind==="intersection"){let a=jl({body:[t]});n(Ke(a,e),{traverse:!0})}},CharacterSet({node:t,parent:e,replaceWith:n},{accuracy:a,minTargetEs2024:r,digitIsAscii:i,spaceIsAscii:s,wordIsAscii:o}){let{kind:l,negate:c,value:u}=t;if(i&&(l==="digit"||u==="digit")){n(xr(Hp("digit",{negate:c}),e));return}if(s&&(l==="space"||u==="space")){n(Ke(Jg(Da(vR),c),e));return}if(o&&(l==="word"||u==="word")){n(xr(Hp("word",{negate:c}),e));return}if(l==="any")n(xr(wi("Any"),e));else if(l==="digit")n(xr(wi("Nd",{negate:c}),e));else if(l!=="dot")if(l==="text_segment"){if(a==="strict")throw new Error(me`Use of "\X" requires non-strict accuracy`);let p="\\p{Emoji}(?:\\p{EMod}|\\uFE0F\\u20E3?|[\\x{E0020}-\\x{E007E}]+\\x{E007F})?",d=me`\p{RI}{2}|${p}(?:\u200D${p})*`;n(Ke(Da(me`(?>\r\n|${r?me`\p{RGI_Emoji}`:d}|\P{M}\p{M}*)`,{skipPropertyNameValidation:!0}),e))}else if(l==="hex")n(xr(wi("AHex",{negate:c}),e));else if(l==="newline")n(Ke(Da(c?`[^ +XID_Start XIDS`.split(/\s/).map(t=>[Xs(t),t])),oz=new Map([["s",lt(383)],[lt(383),"s"]]),lz=new Map([[lt(223),lt(7838)],[lt(107),lt(8490)],[lt(229),lt(8491)],[lt(969),lt(8486)]]),cz=new Map([kr(453),kr(456),kr(459),kr(498),...ob(8072,8079),...ob(8088,8095),...ob(8104,8111),kr(8124),kr(8140),kr(8188)]),uz=new Map([["alnum",me`[\p{Alpha}\p{Nd}]`],["alpha",me`\p{Alpha}`],["ascii",me`\p{ASCII}`],["blank",me`[\p{Zs}\t]`],["cntrl",me`\p{Cc}`],["digit",me`\p{Nd}`],["graph",me`[\P{space}&&\P{Cc}&&\P{Cn}&&\P{Cs}]`],["lower",me`\p{Lower}`],["print",me`[[\P{space}&&\P{Cc}&&\P{Cn}&&\P{Cs}]\p{Zs}]`],["punct",me`[\p{P}\p{S}]`],["space",me`\p{space}`],["upper",me`\p{Upper}`],["word",me`[\p{Alpha}\p{M}\p{Nd}\p{Pc}]`],["xdigit",me`\p{AHex}`]]);function pz(t,e){let n=[];for(let a=t;a<=e;a++)n.push(a);return n}function kr(t){let e=lt(t);return[e.toLowerCase(),e]}function ob(t,e){return pz(t,e).map(n=>kr(n))}var f3=new Set(["Lower","Lowercase","Upper","Uppercase","Ll","Lowercase_Letter","Lt","Titlecase_Letter","Lu","Uppercase_Letter"]);function dz(t,e){let n={accuracy:"default",asciiWordBoundaries:!1,avoidSubclass:!1,bestEffortTarget:"ES2025",...e};g3(t);let a={accuracy:n.accuracy,asciiWordBoundaries:n.asciiWordBoundaries,avoidSubclass:n.avoidSubclass,flagDirectivesByAlt:new Map,jsGroupNameMap:new Map,minTargetEs2024:pb(n.bestEffortTarget,"ES2024"),passedLookbehind:!1,strategy:null,subroutineRefMap:new Map,supportedGNodes:new Set,digitIsAscii:t.flags.digitIsAscii,spaceIsAscii:t.flags.spaceIsAscii,wordIsAscii:t.flags.wordIsAscii};Ti(t,mz,a);let r={dotAll:t.flags.dotAll,ignoreCase:t.flags.ignoreCase},i={currentFlags:r,prevFlags:null,globalFlags:r,groupOriginByCopy:new Map,groupsByName:new Map,multiplexCapturesToLeftByRef:new Map,openRefs:new Map,reffedNodesByReferencer:new Map,subroutineRefMap:a.subroutineRefMap};Ti(t,hz,i);let s={groupsByName:i.groupsByName,highestOrphanBackref:0,numCapturesToLeft:0,reffedNodesByReferencer:i.reffedNodesByReferencer};return Ti(t,fz,s),t._originMap=i.groupOriginByCopy,t._strategy=a.strategy,t}var mz={AbsenceFunction({node:t,parent:e,replaceWith:n}){let{body:a,kind:r}=t;if(r==="repeater"){let i=mn();i.body[0].body.push(wr({negate:!0,body:a}),Ai("Any"));let s=mn();s.body[0].body.push(Qg("greedy",0,1/0,i)),n(Ke(s,e),{traverse:!0})}else throw new Error('Unsupported absence function "(?~|"')},Alternative:{enter({node:t,parent:e,key:n},{flagDirectivesByAlt:a}){let r=t.body.filter(i=>i.kind==="flags");for(let i=n+1;i<e.body.length;i++){let s=e.body[i];Fl(a,s,[]).push(...r)}},exit({node:t},{flagDirectivesByAlt:e}){if(e.get(t)?.length){let n=y3(e.get(t));if(n){let a=mn({flags:n});a.body[0].body=t.body,t.body=[Ke(a,t)]}}}},Assertion({node:t,parent:e,key:n,container:a,root:r,remove:i,replaceWith:s},o){let{kind:l,negate:c}=t,{asciiWordBoundaries:u,avoidSubclass:p,supportedGNodes:d,wordIsAscii:m}=o;if(l==="text_segment_boundary")throw new Error(`Unsupported text segment boundary "\\${c?"Y":"y"}"`);if(l==="line_end")s(Ke(wr({body:[Pa({body:[Yp("string_end")]}),Pa({body:[Ks(10)]})]}),e));else if(l==="line_start")s(Ke(Ga(me`(?<=\A|\n(?!\z))`,{skipLookbehindValidation:!0}),e));else if(l==="search_start")if(d.has(t))r.flags.sticky=!0,i();else{let h=a[n-1];if(h&&kz(h))s(Ke(wr({negate:!0}),e));else{if(p)throw new Error(me`Uses "\G" in a way that requires a subclass`);s(_r(Yp("string_start"),e)),o.strategy="clip_search"}}else if(!(l==="string_end"||l==="string_start"))if(l==="string_end_newline")s(Ke(Ga(me`(?=\n?\z)`),e));else if(l==="word_boundary"){if(!m&&!u){let h=`(?:(?<=${qa})(?!${qa})|(?<!${qa})(?=${qa}))`,b=`(?:(?<=${qa})(?=${qa})|(?<!${qa})(?!${qa}))`;s(Ke(Ga(c?b:h),e))}}else throw new Error(`Unexpected assertion kind "${l}"`)},Backreference({node:t},{jsGroupNameMap:e}){let{ref:n}=t;typeof n=="string"&&!cb(n)&&(n=lb(n,e),t.ref=n)},CapturingGroup({node:t},{jsGroupNameMap:e,subroutineRefMap:n}){let{name:a}=t;a&&!cb(a)&&(a=lb(a,e),t.name=a),n.set(t.number,t),a&&n.set(a,t)},CharacterClassRange({node:t,parent:e,replaceWith:n}){if(e.kind==="intersection"){let a=Ol({body:[t]});n(Ke(a,e),{traverse:!0})}},CharacterSet({node:t,parent:e,replaceWith:n},{accuracy:a,minTargetEs2024:r,digitIsAscii:i,spaceIsAscii:s,wordIsAscii:o}){let{kind:l,negate:c,value:u}=t;if(i&&(l==="digit"||u==="digit")){n(_r(Qp("digit",{negate:c}),e));return}if(s&&(l==="space"||u==="space")){n(Ke(ub(Ga(iz),c),e));return}if(o&&(l==="word"||u==="word")){n(_r(Qp("word",{negate:c}),e));return}if(l==="any")n(_r(Ai("Any"),e));else if(l==="digit")n(_r(Ai("Nd",{negate:c}),e));else if(l!=="dot")if(l==="text_segment"){if(a==="strict")throw new Error(me`Use of "\X" requires non-strict accuracy`);let p="\\p{Emoji}(?:\\p{EMod}|\\uFE0F\\u20E3?|[\\x{E0020}-\\x{E007E}]+\\x{E007F})?",d=me`\p{RI}{2}|${p}(?:\u200D${p})*`;n(Ke(Ga(me`(?>\r\n|${r?me`\p{RGI_Emoji}`:d}|\P{M}\p{M}*)`,{skipPropertyNameValidation:!0}),e))}else if(l==="hex")n(_r(Ai("AHex",{negate:c}),e));else if(l==="newline")n(Ke(Ga(c?`[^ ]`:`(?>\r ?|[ -\v\f\x85\u2028\u2029])`),e));else if(l==="posix")if(!r&&(u==="graph"||u==="print")){if(a==="strict")throw new Error(`POSIX class "${u}" requires min target ES2024 or non-strict accuracy`);let p={graph:"!-~",print:" -~"}[u];c&&(p=`\0-${rt(p.codePointAt(0)-1)}${rt(p.codePointAt(2)+1)}-\u{10FFFF}`),n(Ke(Da(`[${p}]`),e))}else n(Ke(Jg(Da(ER.get(u)),c),e));else if(l==="property")eb.has(Fs(u))||(t.key="sc");else if(l==="space")n(xr(wi("space",{negate:c}),e));else if(l==="word")n(Ke(Jg(Da(La),c),e));else throw new Error(`Unexpected character set kind "${l}"`)},Directive({node:t,parent:e,root:n,remove:a,replaceWith:r,removeAllPrevSiblings:i,removeAllNextSiblings:s}){let{kind:o,flags:l}=t;if(o==="flags")if(!l.enable&&!l.disable)a();else{let c=un({flags:l});c.body[0].body=s(),r(Ke(c,e),{traverse:!0})}else if(o==="keep"){let c=n.body[0],p=n.body.length===1&&Fp(c,{type:"Group"})&&c.body[0].body.length===1?c.body[0]:n;if(e.parent!==p||p.body.length>1)throw new Error(me`Uses "\K" in a way that's unsupported`);let d=br({behind:!0});d.body[0].body=i(),r(Ke(d,e))}else throw new Error(`Unexpected directive kind "${o}"`)},Flags({node:t,parent:e}){if(t.posixIsAscii)throw new Error('Unsupported flag "P"');if(t.textSegmentMode==="word")throw new Error('Unsupported flag "y{w}"');["digitIsAscii","extended","posixIsAscii","spaceIsAscii","wordIsAscii","textSegmentMode"].forEach(n=>delete t[n]),Object.assign(t,{global:!1,hasIndices:!1,multiline:!1,sticky:t.sticky??!1}),e.options={disable:{x:!0,n:!0},force:{v:!0}}},Group({node:t}){if(!t.flags)return;let{enable:e,disable:n}=t.flags;e?.extended&&delete e.extended,n?.extended&&delete n.extended,e?.dotAll&&n?.dotAll&&delete e.dotAll,e?.ignoreCase&&n?.ignoreCase&&delete e.ignoreCase,e&&!Object.keys(e).length&&delete t.flags.enable,n&&!Object.keys(n).length&&delete t.flags.disable,!t.flags.enable&&!t.flags.disable&&delete t.flags},LookaroundAssertion({node:t},e){let{kind:n}=t;n==="lookbehind"&&(e.passedLookbehind=!0)},NamedCallout({node:t,parent:e,replaceWith:n}){let{kind:a}=t;if(a==="fail")n(Ke(br({negate:!0}),e));else throw new Error(`Unsupported named callout "(*${a.toUpperCase()}"`)},Quantifier({node:t}){if(t.body.type==="Quantifier"){let e=un();e.body[0].body.push(t.body),t.body=Ke(e,t)}},Regex:{enter({node:t},{supportedGNodes:e}){let n=[],a=!1,r=!1;for(let i of t.body)if(i.body.length===1&&i.body[0].kind==="search_start")i.body.pop();else{let s=J$(i.body);s?(a=!0,Array.isArray(s)?n.push(...s):n.push(s)):r=!0}a&&!r&&n.forEach(i=>e.add(i))},exit(t,{accuracy:e,passedLookbehind:n,strategy:a}){if(e==="strict"&&n&&a)throw new Error(me`Uses "\G" in a way that requires non-strict accuracy`)}},Subroutine({node:t},{jsGroupNameMap:e}){let{ref:n}=t;typeof n=="string"&&!Zg(n)&&(n=Xg(n,e),t.ref=n)}},NR={Backreference({node:t},{multiplexCapturesToLeftByRef:e,reffedNodesByReferencer:n}){let{orphan:a,ref:r}=t;a||n.set(t,[...e.get(r).map(({node:i})=>i)])},CapturingGroup:{enter({node:t,parent:e,replaceWith:n,skip:a},{groupOriginByCopy:r,groupsByName:i,multiplexCapturesToLeftByRef:s,openRefs:o,reffedNodesByReferencer:l}){let c=r.get(t);if(c&&o.has(t.number)){let p=xr(F$(t.number),e);l.set(p,o.get(t.number)),n(p);return}o.set(t.number,t),s.set(t.number,[]),t.name&&Tl(s,t.name,[]);let u=s.get(t.name??t.number);for(let p=0;p<u.length;p++){let d=u[p];if(c===d.node||c&&c===d.origin||t===d.origin){u.splice(p,1);break}}if(s.get(t.number).push({node:t,origin:c}),t.name&&s.get(t.name).push({node:t,origin:c}),t.name){let p=Tl(i,t.name,new Map),d=!1;if(c)d=!0;else for(let m of p.values())if(!m.hasDuplicateNameToRemove){d=!0;break}i.get(t.name).set(t,{node:t,hasDuplicateNameToRemove:d})}},exit({node:t},{openRefs:e}){e.get(t.number)===t&&e.delete(t.number)}},Group:{enter({node:t},e){e.prevFlags=e.currentFlags,t.flags&&(e.currentFlags=Up(e.currentFlags,t.flags))},exit(t,e){e.currentFlags=e.prevFlags}},Subroutine({node:t,parent:e,replaceWith:n},a){let{isRecursive:r,ref:i}=t;if(r){let u=e;for(;(u=u.parent)&&!(u.type==="CapturingGroup"&&(u.name===i||u.number===i)););a.reffedNodesByReferencer.set(t,u);return}let s=a.subroutineRefMap.get(i),o=i===0,l=o?F$(0):K$(s,a.groupOriginByCopy,null),c=l;if(!o){let u=X$(OR(s,d=>d.type==="Group"&&!!d.flags)),p=u?Up(a.globalFlags,u):a.globalFlags;RR(p,a.currentFlags)||(c=un({flags:BR(p)}),c.body[0].body.push(l))}n(Ke(c,e),{traverse:!o})}},IR={Backreference({node:t,parent:e,replaceWith:n},a){if(t.orphan){a.highestOrphanBackref=Math.max(a.highestOrphanBackref,t.ref);return}let i=a.reffedNodesByReferencer.get(t).filter(s=>zR(s,t));if(!i.length)n(Ke(br({negate:!0}),e));else if(i.length>1){let s=un({atomic:!0,body:i.reverse().map(o=>Ba({body:[qp(o.number)]}))});n(Ke(s,e))}else t.ref=i[0].number},CapturingGroup({node:t},e){t.number=++e.numCapturesToLeft,t.name&&e.groupsByName.get(t.name).get(t).hasDuplicateNameToRemove&&delete t.name},Regex:{exit({node:t},e){let n=Math.max(e.highestOrphanBackref-e.numCapturesToLeft,0);for(let a=0;a<n;a++){let r=Dg();t.body.at(-1).body.push(r)}}},Subroutine({node:t},e){!t.isRecursive||t.ref===0||(t.ref=e.reffedNodesByReferencer.get(t).number)}};function U$(t){_i(t,{"*"({node:e,parent:n}){e.parent=n}})}function RR(t,e){return t.dotAll===e.dotAll&&t.ignoreCase===e.ignoreCase}function zR(t,e){let n=e;do{if(n.type==="Regex")return!1;if(n.type==="Alternative")continue;if(n===t)return!1;let a=Z$(n.parent);for(let r of a){if(r===n)break;if(r===t||Y$(r,t))return!0}}while(n=n.parent);throw new Error("Unexpected path")}function K$(t,e,n,a){let r=Array.isArray(t)?[]:{};for(let[i,s]of Object.entries(t))i==="parent"?r.parent=Array.isArray(n)?a:n:s&&typeof s=="object"?r[i]=K$(s,e,r,n):(i==="type"&&s==="CapturingGroup"&&e.set(r,e.get(t)??t),r[i]=s);return r}function F$(t){let e=qg(t);return e.isRecursive=!0,e}function OR(t,e){let n=[];for(;t=t.parent;)(!e||e(t))&&n.push(t);return n}function Xg(t,e){if(e.has(t))return e.get(t);let n=`$${e.size}_${t.replace(/^[^$_\p{IDS}]|[^$\u200C\u200D\p{IDC}]/ug,"_")}`;return e.set(t,n),n}function X$(t){let e=["dotAll","ignoreCase"],n={enable:{},disable:{}};return t.forEach(({flags:a})=>{e.forEach(r=>{a.enable?.[r]&&(delete n.disable[r],n.enable[r]=!0),a.disable?.[r]&&(n.disable[r]=!0)})}),Object.keys(n.enable).length||delete n.enable,Object.keys(n.disable).length||delete n.disable,n.enable||n.disable?n:null}function BR({dotAll:t,ignoreCase:e}){let n={};return(t||e)&&(n.enable={},t&&(n.enable.dotAll=!0),e&&(n.enable.ignoreCase=!0)),(!t||!e)&&(n.disable={},!t&&(n.disable.dotAll=!0),!e&&(n.disable.ignoreCase=!0)),n}function Z$(t){if(!t)throw new Error("Node expected");let{body:e}=t;return Array.isArray(e)?e:e?[e]:null}function J$(t){let e=t.find(n=>n.kind==="search_start"||FR(n,{negate:!1})||!LR(n));if(!e)return null;if(e.kind==="search_start")return e;if(e.type==="LookaroundAssertion")return e.body[0].body[0];if(e.type==="CapturingGroup"||e.type==="Group"){let n=[];for(let a of e.body){let r=J$(a.body);if(!r)return null;Array.isArray(r)?n.push(...r):n.push(r)}return n}return null}function Y$(t,e){let n=Z$(t)??[];for(let a of n)if(a===e||Y$(a,e))return!0;return!1}function LR({type:t}){return t==="Assertion"||t==="Directive"||t==="LookaroundAssertion"}function DR(t){let e=["Character","CharacterClass","CharacterSet"];return e.includes(t.type)||t.type==="Quantifier"&&t.min&&e.includes(t.body.type)}function FR(t,e){let n={negate:null,...e};return t.type==="LookaroundAssertion"&&(n.negate===null||t.negate===n.negate)&&t.body.length===1&&Fp(t.body[0],{type:"Assertion",kind:"search_start"})}function Zg(t){return/^[$_\p{IDS}][$\u200C\u200D\p{IDC}]*$/u.test(t)}function Da(t,e){let a=Pp(t,{...e,unicodePropertyMap:eb}).body;return a.length>1||a[0].body.length>1?un({body:a}):a[0].body[0]}function Jg(t,e){return t.negate=e,t}function xr(t,e){return t.parent=e,t}function Ke(t,e){return U$(t),t.parent=e,t}function qR(t,e){let n=H$(e),a=Yg(n.target,"ES2024"),r=Yg(n.target,"ES2025"),i=n.rules.recursionLimit;if(!Number.isInteger(i)||i<2||i>20)throw new Error("Invalid recursionLimit; use 2-20");let s=null,o=null;if(!r){let m=[t.flags.ignoreCase];_i(t,PR,{getCurrentModI:()=>m.at(-1),popModI(){m.pop()},pushModI(h){m.push(h)},setHasCasedChar(){m.at(-1)?s=!0:o=!0}})}let l={dotAll:t.flags.dotAll,ignoreCase:!!((t.flags.ignoreCase||s)&&!o)},c=t,u={accuracy:n.accuracy,appliedGlobalFlags:l,captureMap:new Map,currentFlags:{dotAll:t.flags.dotAll,ignoreCase:t.flags.ignoreCase},inCharClass:!1,lastNode:c,originMap:t._originMap,recursionLimit:i,useAppliedIgnoreCase:!!(!r&&s&&o),useFlagMods:r,useFlagV:a,verbose:n.verbose};function p(m){return u.lastNode=c,c=m,wR(GR[m.type],`Unexpected node type "${m.type}"`)(m,u,p)}let d={pattern:t.body.map(p).join("|"),flags:p(t.flags),options:{...t.options}};return a||(delete d.options.force.v,d.options.disable.v=!0,d.options.unicodeSetsPlugin=null),d._captureTransfers=new Map,d._hiddenCaptures=[],u.captureMap.forEach((m,h)=>{m.hidden&&d._hiddenCaptures.push(h),m.transferTo&&Tl(d._captureTransfers,m.transferTo,[]).push(h)}),d}var PR={"*":{enter({node:t},e){if(P$(t)){let n=e.getCurrentModI();e.pushModI(t.flags?Up({ignoreCase:n},t.flags).ignoreCase:n)}},exit({node:t},e){P$(t)&&e.popModI()}},Backreference(t,e){e.setHasCasedChar()},Character({node:t},e){tb(rt(t.value))&&e.setHasCasedChar()},CharacterClassRange({node:t,skip:e},n){e(),Q$(t,{firstOnly:!0}).length&&n.setHasCasedChar()},CharacterSet({node:t},e){t.kind==="property"&&W$.has(t.value)&&e.setHasCasedChar()}},GR={Alternative({body:t},e,n){return t.map(n).join("")},Assertion({kind:t,negate:e}){if(t==="string_end")return"$";if(t==="string_start")return"^";if(t==="word_boundary")return e?me`\B`:me`\b`;throw new Error(`Unexpected assertion kind "${t}"`)},Backreference({ref:t},e){if(typeof t!="number")throw new Error("Unexpected named backref in transformed AST");if(!e.useFlagMods&&e.accuracy==="strict"&&e.currentFlags.ignoreCase&&!e.captureMap.get(t).ignoreCase)throw new Error("Use of case-insensitive backref to case-sensitive group requires target ES2025 or non-strict accuracy");return"\\"+t},CapturingGroup(t,e,n){let{body:a,name:r,number:i}=t,s={ignoreCase:e.currentFlags.ignoreCase},o=e.originMap.get(t);return o&&(s.hidden=!0,i>o.number&&(s.transferTo=o.number)),e.captureMap.set(i,s),`(${r?`?<${r}>`:""}${a.map(n).join("|")})`},Character({value:t},e){let n=rt(t),a=Ps(t,{escDigit:e.lastNode.type==="Backreference",inCharClass:e.inCharClass,useFlagV:e.useFlagV});if(a!==n)return a;if(e.useAppliedIgnoreCase&&e.currentFlags.ignoreCase&&tb(n)){let r=V$(n);return e.inCharClass?r.join(""):r.length>1?`[${r.join("")}]`:r[0]}return n},CharacterClass(t,e,n){let{kind:a,negate:r,parent:i}=t,{body:s}=t;if(a==="intersection"&&!e.useFlagV)throw new Error("Use of character class intersection requires min target ES2024");Dn.bugFlagVLiteralHyphenIsRange&&e.useFlagV&&s.some(G$)&&(s=[Ds(45),...s.filter(c=>!G$(c))]);let o=()=>`[${r?"^":""}${s.map(n).join(a==="intersection"?"&&":"")}]`;if(!e.inCharClass){if((!e.useFlagV||Dn.bugNestedClassIgnoresNegation)&&!r){let u=s.filter(p=>p.type==="CharacterClass"&&p.kind==="union"&&p.negate);if(u.length){let p=un(),d=p.body[0];return p.parent=i,d.parent=p,s=s.filter(m=>!u.includes(m)),t.body=s,s.length?(t.parent=d,d.body.push(t)):p.body.pop(),u.forEach(m=>{let h=Ba({body:[m]});m.parent=h,h.parent=p,p.body.push(h)}),n(p)}}e.inCharClass=!0;let c=o();return e.inCharClass=!1,c}let l=s[0];if(a==="union"&&!r&&l&&((!e.useFlagV||!e.verbose)&&i.kind==="union"&&!(Dn.bugFlagVLiteralHyphenIsRange&&e.useFlagV)||!e.verbose&&i.kind==="intersection"&&s.length===1&&l.type!=="CharacterClassRange"))return s.map(n).join("");if(!e.useFlagV&&i.type==="CharacterClass")throw new Error("Uses nested character class in a way that requires min target ES2024");return o()},CharacterClassRange(t,e){let n=t.min.value,a=t.max.value,r={escDigit:!1,inCharClass:!0,useFlagV:e.useFlagV},i=Ps(n,r),s=Ps(a,r),o=new Set;if(e.useAppliedIgnoreCase&&e.currentFlags.ignoreCase){let l=Q$(t);KR(l).forEach(u=>{o.add(Array.isArray(u)?`${Ps(u[0],r)}-${Ps(u[1],r)}`:Ps(u,r))})}return`${i}-${s}${[...o].join("")}`},CharacterSet({kind:t,negate:e,value:n,key:a},r){if(t==="dot")return r.currentFlags.dotAll?r.appliedGlobalFlags.dotAll||r.useFlagMods?".":"[^]":me`[^\n]`;if(t==="digit")return e?me`\D`:me`\d`;if(t==="property"){if(r.useAppliedIgnoreCase&&r.currentFlags.ignoreCase&&W$.has(n))throw new Error(`Unicode property "${n}" can't be case-insensitive when other chars have specific case`);return`${e?me`\P`:me`\p`}{${a?`${a}=`:""}${n}}`}if(t==="word")return e?me`\W`:me`\w`;throw new Error(`Unexpected character set kind "${t}"`)},Flags(t,e){return(e.appliedGlobalFlags.ignoreCase?"i":"")+(t.dotAll?"s":"")+(t.sticky?"y":"")},Group({atomic:t,body:e,flags:n,parent:a},r,i){let s=r.currentFlags;n&&(r.currentFlags=Up(s,n));let o=e.map(i).join("|"),l=!r.verbose&&e.length===1&&a.type!=="Quantifier"&&!t&&(!r.useFlagMods||!n)?o:`(?${XR(t,n,r.useFlagMods)}${o})`;return r.currentFlags=s,l},LookaroundAssertion({body:t,kind:e,negate:n},a,r){return`(?${`${e==="lookahead"?"":"<"}${n?"!":"="}`}${t.map(r).join("|")})`},Quantifier(t,e,n){return n(t.body)+ZR(t)},Subroutine({isRecursive:t,ref:e},n){if(!t)throw new Error("Unexpected non-recursive subroutine in transformed AST");let a=n.recursionLimit;return e===0?`(?R=${a})`:me`\g<${e}&R=${a}>`}},HR=new Set(["$","(",")","*","+",".","?","[","\\","]","^","{","|","}"]),VR=new Set(["-","\\","]","^","["]),WR=new Set(["(",")","-","/","[","\\","]","^","{","|","}","!","#","$","%","&","*","+",",",".",":",";","<","=",">","?","@","`","~"]),q$=new Map([[9,me`\t`],[10,me`\n`],[11,me`\v`],[12,me`\f`],[13,me`\r`],[8232,me`\u2028`],[8233,me`\u2029`],[65279,me`\uFEFF`]]),UR=/^\p{Cased}$/u;function tb(t){return UR.test(t)}function Q$(t,e){let n=!!e?.firstOnly,a=t.min.value,r=t.max.value,i=[];if(a<65&&(r===65535||r>=131071)||a===65536&&r>=131071)return i;for(let s=a;s<=r;s++){let o=rt(s);if(!tb(o))continue;let l=V$(o).filter(c=>{let u=c.codePointAt(0);return u<a||u>r});if(l.length&&(i.push(...l),n))break}return i}function Ps(t,{escDigit:e,inCharClass:n,useFlagV:a}){if(q$.has(t))return q$.get(t);if(t<32||t>126&&t<160||t>262143||e&&JR(t))return t>255?`\\u{${t.toString(16).toUpperCase()}}`:`\\x${t.toString(16).toUpperCase().padStart(2,"0")}`;let r=n?a?WR:VR:HR,i=rt(t);return(r.has(i)?"\\":"")+i}function KR(t){let e=t.map(r=>r.codePointAt(0)).sort((r,i)=>r-i),n=[],a=null;for(let r=0;r<e.length;r++)e[r+1]===e[r]+1?a??=e[r]:a===null?n.push(e[r]):(n.push([a,e[r]]),a=null);return n}function XR(t,e,n){if(t)return">";let a="";if(e&&n){let{enable:r,disable:i}=e;a=(r?.ignoreCase?"i":"")+(r?.dotAll?"s":"")+(i?"-":"")+(i?.ignoreCase?"i":"")+(i?.dotAll?"s":"")}return`${a}:`}function ZR({kind:t,max:e,min:n}){let a;return!n&&e===1?a="?":!n&&e===1/0?a="*":n===1&&e===1/0?a="+":n===e?a=`{${n}}`:a=`{${n},${e===1/0?"":e}}`,a+{greedy:"",lazy:"?",possessive:"+"}[t]}function P$({type:t}){return t==="CapturingGroup"||t==="Group"||t==="LookaroundAssertion"}function JR(t){return t>47&&t<58}function G$({type:t,value:e}){return t==="Character"&&e===45}var YR=class Qg extends RegExp{#t=new Map;#e=null;#a;#n=null;#i=null;rawOptions={};get source(){return this.#a||"(?:)"}constructor(e,n,a){let r=!!a?.lazyCompile;if(e instanceof RegExp){if(a)throw new Error("Cannot provide options when copying a regexp");let i=e;super(i,n),this.#a=i.source,i instanceof Qg&&(this.#t=i.#t,this.#n=i.#n,this.#i=i.#i,this.rawOptions=i.rawOptions)}else{let i={hiddenCaptures:[],strategy:null,transfers:[],...a};super(r?"":e,n),this.#a=e,this.#t=ez(i.hiddenCaptures,i.transfers),this.#i=i.strategy,this.rawOptions=a??{}}r||(this.#e=this)}exec(e){if(!this.#e){let{lazyCompile:r,...i}=this.rawOptions;this.#e=new Qg(this.#a,this.flags,i)}let n=this.global||this.sticky,a=this.lastIndex;if(this.#i==="clip_search"&&n&&a){this.lastIndex=0;let r=this.#s(e.slice(a));return r&&(QR(r,a,e,this.hasIndices),this.lastIndex+=a),r}return this.#s(e)}#s(e){this.#e.lastIndex=this.lastIndex;let n=super.exec.call(this.#e,e);if(this.lastIndex=this.#e.lastIndex,!n||!this.#t.size)return n;let a=[...n];n.length=1;let r;this.hasIndices&&(r=[...n.indices],n.indices.length=1);let i=[0];for(let s=1;s<a.length;s++){let{hidden:o,transferTo:l}=this.#t.get(s)??{};if(o?i.push(null):(i.push(n.length),n.push(a[s]),this.hasIndices&&n.indices.push(r[s])),l&&a[s]!==void 0){let c=i[l];if(!c)throw new Error(`Invalid capture transfer to "${c}"`);if(n[c]=a[s],this.hasIndices&&(n.indices[c]=r[s]),n.groups){this.#n||(this.#n=tz(this.source));let u=this.#n.get(l);u&&(n.groups[u]=a[s],this.hasIndices&&(n.indices.groups[u]=r[s]))}}}return n}};function QR(t,e,n,a){if(t.index+=e,t.input=n,a){let r=t.indices;for(let s=0;s<r.length;s++){let o=r[s];o&&(r[s]=[o[0]+e,o[1]+e])}let i=r.groups;i&&Object.keys(i).forEach(s=>{let o=i[s];o&&(i[s]=[o[0]+e,o[1]+e])})}}function ez(t,e){let n=new Map;for(let a of t)n.set(a,{hidden:!0});for(let[a,r]of e)for(let i of r)Tl(n,i,{}).transferTo=a;return n}function tz(t){let e=/(?<capture>\((?:\?<(?![=!])(?<name>[^>]+)>|(?!\?)))|\\?./gsu,n=new Map,a=0,r=0,i;for(;i=e.exec(t);){let{0:s,groups:{capture:o,name:l}}=i;s==="["?a++:a?s==="]"&&a--:o&&(r++,l&&n.set(r,l))}return n}function e3(t,e){let n=nz(t,e);return n.options?new YR(n.pattern,n.flags,n.options):new RegExp(n.pattern,n.flags)}function nz(t,e){let n=H$(e),a=Pp(t,{flags:n.flags,normalizeUnknownPropertyNames:!0,rules:{captureGroup:n.rules.captureGroup,singleline:n.rules.singleline},skipBackrefValidation:n.rules.allowOrphanBackrefs,unicodePropertyMap:eb}),r=TR(a,{accuracy:n.accuracy,asciiWordBoundaries:n.rules.asciiWordBoundaries,avoidSubclass:n.avoidSubclass,bestEffortTarget:n.target}),i=qR(r,n),s=L$(i.pattern,{captureTransfers:i._captureTransfers,hiddenCaptures:i._hiddenCaptures,mode:"external"}),o=Vg(s.pattern),l=Hg(o.pattern,{captureTransfers:s.captureTransfers,hiddenCaptures:s.hiddenCaptures}),c={pattern:l.pattern,flags:`${n.hasIndices?"d":""}${n.global?"g":""}${i.flags}${i.options.disable.v?"u":"v"}`};if(n.avoidSubclass){if(n.lazyCompileLength!==1/0)throw new Error("Lazy compilation requires subclass")}else{let u=l.hiddenCaptures.sort((h,b)=>h-b),p=Array.from(l.captureTransfers),d=r._strategy,m=c.pattern.length>=n.lazyCompileLength;(u.length||p.length||d||m)&&(c.options={...u.length&&{hiddenCaptures:u},...p.length&&{transfers:p},...d&&{strategy:d},...m&&{lazyCompile:m}})}return c}function t3(t,e){return e3(t,{global:!0,hasIndices:!0,lazyCompileLength:3e3,rules:{allowOrphanBackrefs:!0,asciiWordBoundaries:!0,captureGroup:!0,recursionLimit:5,singleline:!0},...e})}function nb(t={}){let e=Object.assign({target:"auto",cache:new Map},t);return e.regexConstructor||=n=>t3(n,{target:e.target}),{createScanner(n){return new l$(n,e)},createString(n){return{content:n}}}}var az=Object.freeze(JSON.parse(`{"displayName":"CSS","name":"css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#combinators"},{"include":"#selector"},{"include":"#at-rules"},{"include":"#rule-list"}],"repository":{"at-rules":{"patterns":[{"begin":"\\\\A\\\\uFEFF?(?i:(?=\\\\s*@charset\\\\b))","end":";|(?=$)","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.charset.css","patterns":[{"captures":{"1":{"name":"invalid.illegal.not-lowercase.charset.css"},"2":{"name":"invalid.illegal.leading-whitespace.charset.css"},"3":{"name":"invalid.illegal.no-whitespace.charset.css"},"4":{"name":"invalid.illegal.whitespace.charset.css"},"5":{"name":"invalid.illegal.not-double-quoted.charset.css"},"6":{"name":"invalid.illegal.unclosed-string.charset.css"},"7":{"name":"invalid.illegal.unexpected-characters.charset.css"}},"match":"\\\\G((?!@charset)@\\\\w+)|\\\\G(\\\\s+)|(@charset\\\\S[^;]*)|(?<=@charset)( {2,}|\\\\t+)|(?<=@charset )([^\\";]+)|(\\"[^\\"]+)$|(?<=\\")([^;]+)"},{"captures":{"1":{"name":"keyword.control.at-rule.charset.css"},"2":{"name":"punctuation.definition.keyword.css"}},"match":"((@)charset)(?=\\\\s)"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"|$","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"begin":"(?:\\\\G|^)(?=[^\\"]+$)","end":"$","name":"invalid.illegal.unclosed.string.css"}]}]},{"begin":"(?i)((@)import)(?:\\\\s+|$|(?=[\\"']|/\\\\*))","beginCaptures":{"1":{"name":"keyword.control.at-rule.import.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":";","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.import.css","patterns":[{"begin":"\\\\G\\\\s*(?=/\\\\*)","end":"(?<=\\\\*/)\\\\s*","patterns":[{"include":"#comment-block"}]},{"include":"#string"},{"include":"#url"},{"include":"#media-query-list"}]},{"begin":"(?i)((@)font-face)(?=\\\\s*|\\\\{|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.font-face.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":"(?!\\\\G)","name":"meta.at-rule.font-face.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#rule-list"}]},{"begin":"(?i)(@)page(?=[:{\\\\s]|/\\\\*|$)","captures":{"0":{"name":"keyword.control.at-rule.page.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*($|[:;{]))","name":"meta.at-rule.page.css","patterns":[{"include":"#rule-list"}]},{"begin":"(?i)(?=@media([(\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)media","beginCaptures":{"0":{"name":"keyword.control.at-rule.media.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.media.header.css","patterns":[{"include":"#media-query-list"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.media.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.media.end.bracket.curly.css"}},"name":"meta.at-rule.media.body.css","patterns":[{"include":"$self"}]}]},{"begin":"(?i)(?=@counter-style([\\"';{\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)counter-style","beginCaptures":{"0":{"name":"keyword.control.at-rule.counter-style.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*\\\\{)","name":"meta.at-rule.counter-style.header.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"captures":{"0":{"patterns":[{"include":"#escapes"}]}},"match":"[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.parameter.style-name.css"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}},"name":"meta.at-rule.counter-style.body.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#rule-list-innards"}]}]},{"begin":"(?i)(?=@document([\\"';{\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)document","beginCaptures":{"0":{"name":"keyword.control.at-rule.document.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.document.header.css","patterns":[{"begin":"(?i)(?<![-\\\\w])(url-prefix|domain|regexp)(\\\\()","beginCaptures":{"1":{"name":"support.function.document-rule.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.document-rule.css","patterns":[{"include":"#string"},{"include":"#comment-block"},{"include":"#escapes"},{"match":"[^\\"')\\\\s]+","name":"variable.parameter.document-rule.css"}]},{"include":"#url"},{"include":"#commas"},{"include":"#comment-block"},{"include":"#escapes"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.document.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.document.end.bracket.curly.css"}},"name":"meta.at-rule.document.body.css","patterns":[{"include":"$self"}]}]},{"begin":"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\"';{\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes","beginCaptures":{"0":{"name":"keyword.control.at-rule.keyframes.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*\\\\{)","name":"meta.at-rule.keyframes.header.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"captures":{"0":{"patterns":[{"include":"#escapes"}]}},"match":"[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.parameter.keyframe-list.css"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.keyframes.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.keyframes.end.bracket.curly.css"}},"name":"meta.at-rule.keyframes.body.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"captures":{"1":{"name":"entity.other.keyframe-offset.css"},"2":{"name":"entity.other.keyframe-offset.percentage.css"}},"match":"(?i)(?<![-\\\\w])(from|to)(?![-\\\\w])|([-+]?(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)%)"},{"include":"#rule-list"}]}]},{"begin":"(?i)(?=@supports([(\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)|(?=;)","patterns":[{"begin":"(?i)\\\\G(@)supports","beginCaptures":{"0":{"name":"keyword.control.at-rule.supports.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.supports.header.css","patterns":[{"include":"#feature-query-operators"},{"include":"#feature-query"},{"include":"#comment-block"},{"include":"#escapes"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.supports.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.supports.end.bracket.curly.css"}},"name":"meta.at-rule.supports.body.css","patterns":[{"include":"$self"}]}]},{"begin":"(?i)((@)(-(ms|o)-)?viewport)(?=[\\"';{\\\\s]|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.viewport.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;@{])","name":"meta.at-rule.viewport.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"}]},{"begin":"(?i)((@)font-feature-values)(?=[\\"';{\\\\s]|/\\\\*|$)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.at-rule.font-feature-values.css"},"2":{"name":"punctuation.definition.keyword.css"}},"contentName":"variable.parameter.font-name.css","end":"(?=\\\\s*[;@{])","name":"meta.at-rule.font-features.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"}]},{"include":"#font-features"},{"begin":"(?i)((@)namespace)(?=[\\"';\\\\s]|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.namespace.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":";|(?=[@{])","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.namespace.css","patterns":[{"include":"#url"},{"captures":{"1":{"patterns":[{"include":"#comment-block"}]},"2":{"name":"entity.name.function.namespace-prefix.css","patterns":[{"include":"#escapes"}]}},"match":"(?i)(?:\\\\G|^|(?<=\\\\s))(?=(?<=\\\\s|^)[-A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\s*/\\\\*(?:[^*]|\\\\*[^/])*\\\\*/)(.*?)([-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*)"},{"include":"#comment-block"},{"include":"#escapes"},{"include":"#string"}]},{"begin":"(?i)(?=@[-\\\\w]+[^;]+;s*$)","end":"(?<=;)(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)[-\\\\w]+","beginCaptures":{"0":{"name":"keyword.control.at-rule.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":";","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.header.css"}]},{"begin":"(?i)(?=@[-\\\\w]+([({\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)[-\\\\w]+","beginCaptures":{"0":{"name":"keyword.control.at-rule.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.header.css"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.end.bracket.curly.css"}},"name":"meta.at-rule.body.css","patterns":[{"include":"$self"}]}]}]},"color-keywords":{"patterns":[{"match":"(?i)(?<![-\\\\w])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![-\\\\w])","name":"support.constant.color.w3c-standard-color-name.css"},{"match":"(?i)(?<![-\\\\w])(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)(?![-\\\\w])","name":"support.constant.color.w3c-extended-color-name.css"},{"match":"(?i)(?<![-\\\\w])currentColor(?![-\\\\w])","name":"support.constant.color.current.css"},{"match":"(?i)(?<![-\\\\w])(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)(?![-\\\\w])","name":"invalid.deprecated.color.system.css"}]},"combinators":{"patterns":[{"match":"/deep/|>>>","name":"invalid.deprecated.combinator.css"},{"match":">>|[+>~]","name":"keyword.operator.combinator.css"}]},"commas":{"match":",","name":"punctuation.separator.list.comma.css"},"comment-block":{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.css"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.css"}},"name":"comment.block.css"},"escapes":{"patterns":[{"match":"\\\\\\\\\\\\h{1,6}","name":"constant.character.escape.codepoint.css"},{"begin":"\\\\\\\\$\\\\s*","end":"^(?<!\\\\G)","name":"constant.character.escape.newline.css"},{"match":"\\\\\\\\.","name":"constant.character.escape.css"}]},"feature-query":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.condition.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.condition.end.bracket.round.css"}},"name":"meta.feature-query.css","patterns":[{"include":"#feature-query-operators"},{"include":"#feature-query"}]},"feature-query-operators":{"patterns":[{"match":"(?i)(?<=[()\\\\s]|^|\\\\*/)(and|not|or)(?=[()\\\\s]|/\\\\*|$)","name":"keyword.operator.logical.feature.$1.css"},{"include":"#rule-list-innards"}]},"font-features":{"begin":"(?i)((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))(?=[\\"';@{\\\\s]|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.\${3:/downcase}.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":"(?<=})","name":"meta.at-rule.\${3:/downcase}.css","patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}},"name":"meta.property-list.font-feature.css","patterns":[{"captures":{"0":{"patterns":[{"include":"#escapes"}]}},"match":"[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.font-feature.css"},{"include":"#rule-list-innards"}]}]},"functional-pseudo-classes":{"patterns":[{"begin":"(?i)((:)dir)(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"match":"(?i)(?<![-\\\\w])(ltr|rtl)(?![-\\\\w])","name":"support.constant.text-direction.css"},{"include":"#property-values"}]},{"begin":"(?i)((:)lang)(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"match":"(?<=[(,\\\\s])[A-Za-z]+(-[0-9A-Za-z]*|\\\\\\\\(?:\\\\h{1,6}|.))*(?=[),\\\\s])","name":"support.constant.language-range.css"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"include":"#escapes"},{"match":"(?<=[\\"\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=[\\"\\\\s])","name":"support.constant.language-range.css"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.single.css","patterns":[{"include":"#escapes"},{"match":"(?<=['\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=['\\\\s])","name":"support.constant.language-range.css"}]},{"include":"#commas"}]},{"begin":"(?i)((:)(?:not|has|matches|where|is))(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#selector-innards"}]},{"begin":"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"match":"(?i)[-+]?(\\\\d+n?|n)(\\\\s*[-+]\\\\s*\\\\d+)?","name":"constant.numeric.css"},{"match":"(?i)even|odd","name":"support.constant.parity.css"}]}]},"functions":{"patterns":[{"begin":"(?i)(?<![-\\\\w])(calc)(\\\\()","beginCaptures":{"1":{"name":"support.function.calc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.calc.css","patterns":[{"match":"[*/]|(?<=\\\\s|^)[-+](?=\\\\s|$)","name":"keyword.operator.arithmetic.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(rgba?|hsla?|hwb|lab|oklab|lch|oklch|color)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.color.css","patterns":[{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])((?:-(?:webkit-|moz-|o-))?(?:repeating-)?(?:linear|radial|conic)-gradient)(\\\\()","beginCaptures":{"1":{"name":"support.function.gradient.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.gradient.css","patterns":[{"match":"(?i)(?<![-\\\\w])(from|to|at|in|hue)(?![-\\\\w])","name":"keyword.operator.gradient.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(-webkit-gradient)(\\\\()","beginCaptures":{"1":{"name":"invalid.deprecated.gradient.function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.gradient.invalid.deprecated.gradient.css","patterns":[{"begin":"(?i)(?<![-\\\\w])(from|to|color-stop)(\\\\()","beginCaptures":{"1":{"name":"invalid.deprecated.function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#property-values"}]},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate|color-mix|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia|styleset|stylistic|swash|symbols|cos|sin|tan|acos|asin|atan2??|hypot|sqrt|pow|log|exp|abs|sign)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.misc.css","patterns":[{"match":"(?i)(?<=[\\",\\\\s]|\\\\*/|^)\\\\d+x(?=[\\"'),\\\\s]|/\\\\*|$)","name":"constant.numeric.other.density.css"},{"include":"#property-values"},{"match":"[^\\"'),\\\\s]+","name":"variable.parameter.misc.css"}]},{"begin":"(?i)(?<![-\\\\w])(circle|ellipse|inset|polygon|rect)(\\\\()","beginCaptures":{"1":{"name":"support.function.shape.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.shape.css","patterns":[{"match":"(?i)(?<=\\\\s|^|\\\\*/)(at|round)(?=\\\\s|/\\\\*|$)","name":"keyword.operator.shape.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(cubic-bezier|steps)(\\\\()","beginCaptures":{"1":{"name":"support.function.timing-function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.timing-function.css","patterns":[{"match":"(?i)(?<![-\\\\w])(start|end)(?=\\\\s*\\\\)|$)","name":"support.constant.step-direction.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])((?:translate|scale|rotate)(?:[XYZ]|3D)?|matrix(?:3D)?|skew[XY]?|perspective)(\\\\()","beginCaptures":{"1":{"name":"support.function.transform.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#property-values"}]},{"include":"#url"},{"begin":"(?i)(?<![-\\\\w])(var)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.variable.css","patterns":[{"match":"--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.argument.css"},{"include":"#property-values"}]}]},"media-feature-keywords":{"match":"(?i)(?<=^|[:\\\\s]|\\\\*/)(?:portrait|landscape|progressive|interlace|fullscreen|standalone|minimal-ui|browser|hover)(?=[)\\\\s]|$)","name":"support.constant.property-value.css"},"media-features":{"captures":{"1":{"name":"support.type.property-name.media.css"},"2":{"name":"support.type.property-name.media.css"},"3":{"name":"support.type.vendored.property-name.media.css"}},"match":"(?i)(?<=^|[(\\\\s]|\\\\*/)(?:((?:m(?:in-|ax-))?(?:height|width|aspect-ratio|color|color-index|monochrome|resolution)|grid|scan|orientation|display-mode|hover)|((?:m(?:in-|ax-))?device-(?:height|width|aspect-ratio))|((?:[-_](?:webkit|apple|khtml|epub|moz|ms|o|xv|ah|rim|atsc|hp|tc|wap|ro)|(?:mso|prince))-[-\\\\w]+(?=\\\\s*(?:/\\\\*(?:[^*]|\\\\*[^/])*\\\\*/)?\\\\s*[):])))(?=\\\\s|$|[):<=>]|/\\\\*)"},"media-query":{"begin":"\\\\G","end":"(?=\\\\s*[;{])","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#media-types"},{"match":"(?i)(?<=\\\\s|^|,|\\\\*/)(only|not)(?=[{\\\\s]|/\\\\*|$)","name":"keyword.operator.logical.$1.media.css"},{"match":"(?i)(?<=\\\\s|^|\\\\*/|\\\\))and(?=\\\\s|/\\\\*|$)","name":"keyword.operator.logical.and.media.css"},{"match":",(?:(?:\\\\s*,)+|(?=\\\\s*[);{]))","name":"invalid.illegal.comma.css"},{"include":"#commas"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.css"}},"patterns":[{"include":"#media-features"},{"include":"#media-feature-keywords"},{"match":":","name":"punctuation.separator.key-value.css"},{"match":">=|<=|[<=>]","name":"keyword.operator.comparison.css"},{"captures":{"1":{"name":"constant.numeric.css"},"2":{"name":"keyword.operator.arithmetic.css"},"3":{"name":"constant.numeric.css"}},"match":"(\\\\d+)\\\\s*(/)\\\\s*(\\\\d+)","name":"meta.ratio.css"},{"include":"#numeric-values"},{"include":"#comment-block"}]}]},"media-query-list":{"begin":"(?=\\\\s*[^;{])","end":"(?=\\\\s*[;{])","patterns":[{"include":"#media-query"}]},"media-types":{"captures":{"1":{"name":"support.constant.media.css"},"2":{"name":"invalid.deprecated.constant.media.css"}},"match":"(?i)(?<=^|[,\\\\s]|\\\\*/)(?:(all|print|screen|speech)|(aural|braille|embossed|handheld|projection|tty|tv))(?=$|[,;{\\\\s]|/\\\\*)"},"numeric-values":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.constant.css"}},"match":"(#)(?:\\\\h{3,4}|\\\\h{6}|\\\\h{8})\\\\b","name":"constant.other.color.rgb-value.hex.css"},{"captures":{"1":{"name":"keyword.other.unit.percentage.css"},"2":{"name":"keyword.other.unit.\${2:/downcase}.css"}},"match":"(?i)(?<![-\\\\w])[-+]?(?:[0-9]+(?:\\\\.[0-9]+)?|\\\\.[0-9]+)(?:(?<=[0-9])E[-+]?[0-9]+)?(?:(%)|(deg|grad|rad|turn|Hz|kHz|ch|cm|em|ex|fr|in|mm|mozmm|pc|pt|px|q|rem|rch|rex|rlh|ic|ric|rcap|vh|vw|vb|vi|svh|svw|svb|svi|dvh|dvw|dvb|dvi|lvh|lvw|lvb|lvi|vmax|vmin|cqw|cqi|cqh|cqb|cqmin|cqmax|dpi|dpcm|dppx|s|ms)\\\\b)?","name":"constant.numeric.css"}]},"property-keywords":{"patterns":[{"match":"(?i)(?<![-\\\\w])(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse|always|antialiased|auto|auto-fill|auto-fit|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow|flow-root|forwards|freeze|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83|jis90|justify|justify-all|kannada|keep-all|landscape|larger??|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]|reset-size|reverse|revert|revert-layer|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)(?![-\\\\w])","name":"support.constant.property-value.css"},{"match":"(?i)(?<![-\\\\w])(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman|urdu)(?![-\\\\w])","name":"support.constant.property-value.list-style-type.css"},{"match":"(?<![-\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+","name":"support.constant.vendored.property-value.css"},{"match":"(?<![-\\\\w])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![-\\\\w])","name":"support.constant.font-name.css"}]},"property-names":{"patterns":[{"match":"(?i)(?<![-\\\\w])(?:accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|aspect-ratio|backdrop-filter|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border|border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color|border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end|border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius|border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|container|container-name|container-type|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align|inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation|justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset|mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position|offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline|overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]|pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin|place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align|ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start|scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right|scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom|scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right|scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type|scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size|speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright|text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style|text-decoration-thickness|text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation|text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform|transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom|alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile|color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity|glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid|marker-start|rx??|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|[xy]|adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break|balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length|bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction|box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column|column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break|delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position|flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust|initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count|justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group|orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range|play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim|radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness|right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color|rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral|speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch|string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height|text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style|top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range|voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap)(?![-\\\\w])","name":"support.type.property-name.css"},{"match":"(?<![-\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+","name":"support.type.vendored.property-name.css"}]},"property-values":{"patterns":[{"include":"#commas"},{"include":"#comment-block"},{"include":"#escapes"},{"include":"#functions"},{"include":"#property-keywords"},{"include":"#unicode-range"},{"include":"#numeric-values"},{"include":"#color-keywords"},{"include":"#string"},{"match":"!\\\\s*important(?![-\\\\w])","name":"keyword.other.important.css"}]},"pseudo-classes":{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"invalid.illegal.colon.css"}},"match":"(?i)(:)(:*)(?:active|any-link|checked|default|disabled|empty|enabled|first|(?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover|in-range|indeterminate|invalid|left|link|optional|out-of-range|read-only|read-write|required|right|root|scope|target|unresolved|valid|visited)(?![-\\\\w]|\\\\s*[;}])","name":"entity.other.attribute-name.pseudo-class.css"},"pseudo-elements":{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"punctuation.definition.entity.css"}},"match":"(?i)(?:(::?)(?:after|before|first-letter|first-line|(?:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-a-z]+)|(::)(?:backdrop|content|grammar-error|marker|placeholder|selection|shadow|spelling-error))(?![-\\\\w]|\\\\s*[;}])","name":"entity.other.attribute-name.pseudo-element.css"},"rule-list":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}},"name":"meta.property-list.css","patterns":[{"include":"#rule-list-innards"}]},"rule-list-innards":{"patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#font-features"},{"match":"(?<![-\\\\w])--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.css"},{"begin":"(?<![-A-Za-z])(?=[-A-Za-z])","end":"$|(?![-A-Za-z])","name":"meta.property-name.css","patterns":[{"include":"#property-names"}]},{"begin":"(:)\\\\s*","beginCaptures":{"1":{"name":"punctuation.separator.key-value.css"}},"contentName":"meta.property-value.css","end":"\\\\s*(;)|\\\\s*(?=[)}])","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"patterns":[{"include":"#comment-block"},{"include":"#property-values"}]},{"match":";","name":"punctuation.terminator.rule.css"}]},"selector":{"begin":"(?=\\\\|?(?:[-#*.:A-\\\\[_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)))","end":"(?=\\\\s*[)/@{])","name":"meta.selector.css","patterns":[{"include":"#selector-innards"}]},"selector-innards":{"patterns":[{"include":"#comment-block"},{"include":"#commas"},{"include":"#escapes"},{"include":"#combinators"},{"captures":{"1":{"name":"entity.other.namespace-prefix.css"},"2":{"name":"punctuation.separator.css"}},"match":"(?:^|(?<=[(,;}\\\\s]))(?![-*\\\\w]+\\\\|(?![-#*.:A-\\\\[_a-z[^\\\\x00-\\\\x7F]]))([-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*|\\\\*)?(\\\\|)"},{"include":"#tag-names"},{"match":"\\\\*","name":"entity.name.tag.wildcard.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}},"match":"(?<![-@\\\\w])([#.])((?:-?[0-9]|-(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)|(?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*(?:[]!\\"%-(*;<?@^\`|}]|/(?!\\\\*))+)(?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*)","name":"invalid.illegal.bad-identifier.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}},"match":"(\\\\.)((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)","name":"entity.other.attribute-name.class.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}},"match":"(#)(-?(?![0-9])(?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)","name":"entity.other.attribute-name.id.css"},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.entity.begin.bracket.square.css"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.entity.end.bracket.square.css"}},"name":"meta.attribute-selector.css","patterns":[{"include":"#comment-block"},{"include":"#string"},{"captures":{"1":{"name":"storage.modifier.ignore-case.css"}},"match":"(?<=[\\"'\\\\s]|^|\\\\*/)\\\\s*([Ii])\\\\s*(?=[]\\\\s]|/\\\\*|$)"},{"captures":{"1":{"name":"string.unquoted.attribute-value.css","patterns":[{"include":"#escapes"}]}},"match":"(?<==)\\\\s*((?!/\\\\*)(?:[^]\\"'\\\\\\\\\\\\s]|\\\\\\\\.)+)"},{"include":"#escapes"},{"match":"[$*^|~]?=","name":"keyword.operator.pattern.css"},{"match":"\\\\|","name":"punctuation.separator.css"},{"captures":{"1":{"name":"entity.other.namespace-prefix.css","patterns":[{"include":"#escapes"}]}},"match":"(-?(?!\\\\d)(?:[-\\\\w[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+|\\\\*)(?=\\\\|(?![=\\\\s]|$|])(?:-?(?!\\\\d)|[-\\\\\\\\\\\\w[^\\\\x00-\\\\x7F]]))"},{"captures":{"1":{"name":"entity.other.attribute-name.css","patterns":[{"include":"#escapes"}]}},"match":"(-?(?!\\\\d)(?>[-\\\\w[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+)\\\\s*(?=[]$*=^|~]|/\\\\*)"}]},{"include":"#pseudo-classes"},{"include":"#pseudo-elements"},{"include":"#functional-pseudo-classes"},{"match":"(?<![-@\\\\w])(?=[a-z]\\\\w*-)(?:(?![A-Z])[-\\\\w])+(?![-(\\\\w])","name":"entity.name.tag.custom.css"}]},"string":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"|(?<!\\\\\\\\)(?=$|\\\\n)","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"begin":"(?:\\\\G|^)(?=(?:[^\\"\\\\\\\\]|\\\\\\\\.)+$)","end":"$","name":"invalid.illegal.unclosed.string.css","patterns":[{"include":"#escapes"}]},{"include":"#escapes"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"'|(?<!\\\\\\\\)(?=$|\\\\n)","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.single.css","patterns":[{"begin":"(?:\\\\G|^)(?=(?:[^'\\\\\\\\]|\\\\\\\\.)+$)","end":"$","name":"invalid.illegal.unclosed.string.css","patterns":[{"include":"#escapes"}]},{"include":"#escapes"}]}]},"tag-names":{"match":"(?i)(?<![-:\\\\w])(?:a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound|big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i|iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark|marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rtc??|ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong|style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|ul??|var|video|wbr|xmp|altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern|annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced|mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot|mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup|msup|mtable|mtd|mtext|mtr|munder|munderover|semantics)(?=[#)+,.:>\\\\[{|~\\\\s]|/\\\\*|$)","name":"entity.name.tag.css"},"unicode-range":{"captures":{"0":{"name":"constant.other.unicode-range.css"},"1":{"name":"punctuation.separator.dash.unicode-range.css"}},"match":"(?<![-\\\\w])[Uu]\\\\+[?\\\\h]{1,6}(?:(-)\\\\h{1,6})?(?![-\\\\w])"},"url":{"begin":"(?i)(?<![-@\\\\w])(url)(\\\\()","beginCaptures":{"1":{"name":"support.function.url.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.url.css","patterns":[{"match":"[^\\"')\\\\s]+","name":"variable.parameter.url.css"},{"include":"#string"},{"include":"#comment-block"},{"include":"#escapes"}]}},"scopeName":"source.css"}`)),Xp=[az];var rz=Object.freeze(JSON.parse(`{"displayName":"Go","name":"go","patterns":[{"include":"#statements"}],"repository":{"after_control_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"variable.other.go"}]}},"match":"(?<=\\\\brange\\\\b|;|\\\\bif\\\\b|\\\\bfor\\\\b|[<>]|<=|>=|==|!=|\\\\w[-%*+/]|\\\\w[-%*+/]=|\\\\|\\\\||&&)\\\\s*((?![]\\\\[]+)[-\\\\]!%*+./:<=>\\\\[_[:alnum:]]+)\\\\s*(?=\\\\{)"},"brackets":{"patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"$self"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"$self"}]},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"$self"}]}]},"built_in_functions":{"patterns":[{"match":"\\\\b(append|cap|close|complex|copy|delete|imag|len|panic|print|println|real|recover|min|max|clear)\\\\b(?=\\\\()","name":"entity.name.function.support.builtin.go"},{"begin":"\\\\b(new)\\\\b(\\\\()","beginCaptures":{"1":{"name":"entity.name.function.support.builtin.go"},"2":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#functions"},{"include":"#struct_variables_types"},{"include":"#support_functions"},{"include":"#type-declarations"},{"include":"#generic_types"},{"match":"\\\\w+","name":"entity.name.type.go"},{"include":"$self"}]},{"begin":"\\\\b(make)\\\\b(\\\\()((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?[]*\\\\[]+{0,1}(?:(?!\\\\bmap\\\\b)[.\\\\w]+)?(\\\\[(?:\\\\S+(?:,\\\\s*\\\\S+)*)?])?,?)?","beginCaptures":{"1":{"name":"entity.name.function.support.builtin.go"},"2":{"name":"punctuation.definition.begin.bracket.round.go"},"3":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"$self"}]}]},"comments":{"patterns":[{"begin":"(/\\\\*)","beginCaptures":{"1":{"name":"punctuation.definition.comment.go"}},"end":"(\\\\*/)","endCaptures":{"1":{"name":"punctuation.definition.comment.go"}},"name":"comment.block.go"},{"begin":"(//)","beginCaptures":{"1":{"name":"punctuation.definition.comment.go"}},"end":"\\\\n|$","name":"comment.line.double-slash.go"}]},"const_assignment":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.constant.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\bconst\\\\b)\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"begin":"(?<=\\\\bconst\\\\b)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.constant.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"include":"$self"}]}]},"delimiters":{"patterns":[{"match":",","name":"punctuation.other.comma.go"},{"match":"\\\\.(?!\\\\.\\\\.)","name":"punctuation.other.period.go"},{"match":":(?!=)","name":"punctuation.other.colon.go"}]},"double_parentheses_types":{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<!\\\\w)(\\\\([]*\\\\[]+{0,1}[.\\\\w]+(?:\\\\[(?:[]*.\\\\[{}\\\\w]+(?:,\\\\s*[]*.\\\\[{}\\\\w]+)*)?])?\\\\))(?=\\\\()"},"function_declaration":{"begin":"^\\\\b(func)\\\\b\\\\s*(\\\\([^)]+\\\\)\\\\s*)?(?:(\\\\w+)(?=[(\\\\[]))?","beginCaptures":{"1":{"name":"keyword.function.go"},"2":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"captures":{"1":{"name":"variable.parameter.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(\\\\w+\\\\s+)?([*.\\\\w]+(?:\\\\[(?:[*.\\\\w]+(?:,\\\\s+)?)+{0,1}])?)"},{"include":"$self"}]}]},"3":{"patterns":[{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"entity.name.function.go"}]}},"end":"(?<=\\\\))\\\\s*((?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?![]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b)[-\\\\]*.\\\\[\\\\w]+)?\\\\s*(?=\\\\{)","endCaptures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\))\\\\s*((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[-\\\\]*.<>\\\\[\\\\w]+\\\\s*(?:/[*/].*)?)$"},{"include":"$self"}]},"function_param_types":{"patterns":[{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#type-declarations-without-brackets"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+(?=(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b\\\\s*\\\\{)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"(?:(?<=\\\\()|^\\\\s*)((?:\\\\b\\\\w+,\\\\s*)+(?:/[*/].*)?)$"},{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.parameter.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?:[]*.\\\\[\\\\w]+{0,1}(?:\\\\bfunc\\\\b\\\\([^)]+{0,1}\\\\)(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*)+(?:[]*.\\\\[\\\\w]+|\\\\([^)]+{0,1}\\\\))?|(?:[]*\\\\[]+{0,1}[*.\\\\w]+(?:\\\\[[^]]+])?[*.\\\\w]+{0,1})+))"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"([.\\\\w]+)"},{"include":"$self"}]},"functions":{"begin":"\\\\b(func)\\\\b(?=\\\\()","beginCaptures":{"1":{"name":"keyword.function.go"}},"end":"(?<=\\\\))(\\\\s*(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+)?(\\\\s*(?:[]*\\\\[]+{0,1}[*.\\\\w]+)?(?:\\\\[(?:[*.\\\\w]+{0,1}(?:\\\\[[^]]+{0,1}])?(?:,\\\\s+)?)+]|\\\\([^)]+{0,1}\\\\))?[*.\\\\w]+{0,1}\\\\s*(?=\\\\{)|\\\\s*(?:[]*\\\\[]+{0,1}(?!\\\\bfunc\\\\b)[*.\\\\w]+(?:\\\\[(?:[*.\\\\w]+{0,1}(?:\\\\[[^]]+{0,1}])?(?:,\\\\s+)?)+])?[*.\\\\w]+{0,1}|\\\\([^)]+{0,1}\\\\)))?","endCaptures":{"1":{"patterns":[{"include":"#type-declarations"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"include":"#parameter-variable-types"}]},"functions_inline":{"captures":{"1":{"name":"keyword.function.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"},{"include":"$self"}]},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b(func)\\\\b(\\\\([^/]*?\\\\)\\\\s+\\\\([^/]*?\\\\))\\\\s+(?=\\\\{)"},"generic_param_types":{"patterns":[{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#type-declarations-without-brackets"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+(?=(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b\\\\s*\\\\{)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"(?:(?<=\\\\()|^\\\\s*)((?:\\\\b\\\\w+,\\\\s*)+(?:/[*/].*)?)$"},{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.parameter.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"3":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?:[]*.\\\\[\\\\w]+{0,1}(?:\\\\bfunc\\\\b\\\\([^)]+{0,1}\\\\)(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*)+(?:[*.\\\\w]+|\\\\([^)]+{0,1}\\\\))?|(?:(?:[*.~\\\\w]+|\\\\[(?:[*.\\\\w]+{0,1}(?:\\\\[[^]]+{0,1}])?(?:,\\\\s+)?)+])[*.\\\\w]+{0,1})+))"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b([.\\\\w]+)"},{"include":"$self"}]},"generic_types":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"patterns":[{"include":"#parameter-variable-types"}]}},"match":"([*.\\\\w]+)(\\\\[[^]]+{0,1}])"},"group-functions":{"patterns":[{"include":"#function_declaration"},{"include":"#functions_inline"},{"include":"#functions"},{"include":"#built_in_functions"},{"include":"#support_functions"}]},"group-types":{"patterns":[{"include":"#other_struct_interface_expressions"},{"include":"#type_assertion_inline"},{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#single_type"},{"include":"#multi_types"},{"include":"#struct_interface_declaration"},{"include":"#double_parentheses_types"},{"include":"#switch_types"},{"include":"#type-declarations"}]},"group-variables":{"patterns":[{"include":"#const_assignment"},{"include":"#var_assignment"},{"include":"#variable_assignment"},{"include":"#label_loop_variables"},{"include":"#slice_index_variables"},{"include":"#property_variables"},{"include":"#switch_variables"},{"include":"#other_variables"}]},"hover":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"match":"\\\\binvalid\\\\b\\\\s+\\\\btype\\\\b","name":"invalid.field.go"},{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=^\\\\bfield\\\\b)\\\\s+([*.\\\\w]+)\\\\s+([\\\\s\\\\S]+)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=^\\\\breturns\\\\b)\\\\s+([\\\\s\\\\S]+)"}]},"import":{"patterns":[{"begin":"\\\\b(import)\\\\s+","beginCaptures":{"1":{"name":"keyword.control.import.go"}},"end":"(?!\\\\G)","patterns":[{"include":"#imports"}]}]},"imports":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.import.go"}]},"2":{"name":"string.quoted.double.go"},"3":{"name":"punctuation.definition.string.begin.go"},"4":{"name":"entity.name.import.go"},"5":{"name":"punctuation.definition.string.end.go"}},"match":"(\\\\s*[.\\\\w]+)?\\\\s*((\\")([^\\"]*)(\\"))"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.imports.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.imports.end.bracket.round.go"}},"patterns":[{"include":"#comments"},{"include":"#imports"}]},{"include":"$self"}]},"interface_variables_types":{"begin":"\\\\b(interface)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.interface.go"},"2":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#interface_variables_types_field"},{"include":"$self"}]},"interface_variables_types_field":{"patterns":[{"include":"#support_functions"},{"include":"#type-declarations-without-brackets"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"([.\\\\w]+)"}]},"keywords":{"patterns":[{"match":"\\\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\\\b","name":"keyword.control.go"},{"match":"\\\\bchan\\\\b","name":"keyword.channel.go"},{"match":"\\\\bconst\\\\b","name":"keyword.const.go"},{"match":"\\\\bvar\\\\b","name":"keyword.var.go"},{"match":"\\\\bfunc\\\\b","name":"keyword.function.go"},{"match":"\\\\binterface\\\\b","name":"keyword.interface.go"},{"match":"\\\\bmap\\\\b","name":"keyword.map.go"},{"match":"\\\\bstruct\\\\b","name":"keyword.struct.go"},{"match":"\\\\bimport\\\\b","name":"keyword.control.import.go"},{"match":"\\\\btype\\\\b","name":"keyword.type.go"}]},"label_loop_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.label.go"}]}},"match":"^(\\\\s*\\\\w+:\\\\s*|\\\\s*\\\\b(?:break|goto|continue)\\\\b\\\\s+\\\\w+(?:\\\\s*/[*/]\\\\s*.*)?)$"},"language_constants":{"captures":{"1":{"name":"constant.language.boolean.go"},"2":{"name":"constant.language.null.go"},"3":{"name":"constant.language.iota.go"}},"match":"\\\\b(?:(true|false)|(nil)|(iota))\\\\b"},"map_types":{"begin":"\\\\b(map)\\\\b(\\\\[)","beginCaptures":{"1":{"name":"keyword.map.go"},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"(])((?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?![]*\\\\[]+{0,1}\\\\b(?:func|struct|map)\\\\b)[]*\\\\[]+{0,1}[.\\\\w]+(?:\\\\[(?:[]*.\\\\[{}\\\\w]+(?:,\\\\s*[]*.\\\\[{}\\\\w]+)*)?])?)?","endCaptures":{"1":{"name":"punctuation.definition.end.bracket.square.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"include":"#functions"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"multi_types":{"begin":"\\\\b(type)\\\\b\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.type.go"},"2":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"numeric_literals":{"captures":{"0":{"patterns":[{"begin":"(?=.)","end":"\\\\n|$","patterns":[{"captures":{"1":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"2":{"name":"punctuation.separator.constant.numeric.go"},"3":{"name":"constant.numeric.decimal.point.go"},"4":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"5":{"name":"punctuation.separator.constant.numeric.go"},"6":{"name":"keyword.other.unit.exponent.decimal.go"},"7":{"name":"keyword.operator.plus.exponent.decimal.go"},"8":{"name":"keyword.operator.minus.exponent.decimal.go"},"9":{"name":"constant.numeric.exponent.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"10":{"name":"keyword.other.unit.imaginary.go"},"11":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"12":{"name":"punctuation.separator.constant.numeric.go"},"13":{"name":"keyword.other.unit.exponent.decimal.go"},"14":{"name":"keyword.operator.plus.exponent.decimal.go"},"15":{"name":"keyword.operator.minus.exponent.decimal.go"},"16":{"name":"constant.numeric.exponent.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"17":{"name":"keyword.other.unit.imaginary.go"},"18":{"name":"constant.numeric.decimal.point.go"},"19":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"20":{"name":"punctuation.separator.constant.numeric.go"},"21":{"name":"keyword.other.unit.exponent.decimal.go"},"22":{"name":"keyword.operator.plus.exponent.decimal.go"},"23":{"name":"keyword.operator.minus.exponent.decimal.go"},"24":{"name":"constant.numeric.exponent.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"25":{"name":"keyword.other.unit.imaginary.go"},"26":{"name":"keyword.other.unit.hexadecimal.go"},"27":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"28":{"name":"punctuation.separator.constant.numeric.go"},"29":{"name":"constant.numeric.hexadecimal.go"},"30":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"31":{"name":"punctuation.separator.constant.numeric.go"},"32":{"name":"keyword.other.unit.exponent.hexadecimal.go"},"33":{"name":"keyword.operator.plus.exponent.hexadecimal.go"},"34":{"name":"keyword.operator.minus.exponent.hexadecimal.go"},"35":{"name":"constant.numeric.exponent.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"36":{"name":"keyword.other.unit.imaginary.go"},"37":{"name":"keyword.other.unit.hexadecimal.go"},"38":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"39":{"name":"punctuation.separator.constant.numeric.go"},"40":{"name":"keyword.other.unit.exponent.hexadecimal.go"},"41":{"name":"keyword.operator.plus.exponent.hexadecimal.go"},"42":{"name":"keyword.operator.minus.exponent.hexadecimal.go"},"43":{"name":"constant.numeric.exponent.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"44":{"name":"keyword.other.unit.imaginary.go"},"45":{"name":"keyword.other.unit.hexadecimal.go"},"46":{"name":"constant.numeric.hexadecimal.go"},"47":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"48":{"name":"punctuation.separator.constant.numeric.go"},"49":{"name":"keyword.other.unit.exponent.hexadecimal.go"},"50":{"name":"keyword.operator.plus.exponent.hexadecimal.go"},"51":{"name":"keyword.operator.minus.exponent.hexadecimal.go"},"52":{"name":"constant.numeric.exponent.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"53":{"name":"keyword.other.unit.imaginary.go"}},"match":"\\\\G(?:(?:(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)((?<=[0-9])\\\\.|\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)?(?:(?<!_)([Ee])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*))?(i(?!\\\\w))?(?:\\\\n|$)|(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)(?<!_)([Ee])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))|((?<=[0-9])\\\\.|\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)(?:(?<!_)([Ee])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*))?(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])_?(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)((?<=\\\\h)\\\\.|\\\\.(?=\\\\h))(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)?(?<!_)([Pp])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])_?(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)(?<!_)([Pp])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])((?<=\\\\h)\\\\.|\\\\.(?=\\\\h))(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)(?<!_)([Pp])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))"},{"captures":{"1":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"2":{"name":"punctuation.separator.constant.numeric.go"},"3":{"name":"keyword.other.unit.imaginary.go"},"4":{"name":"keyword.other.unit.binary.go"},"5":{"name":"constant.numeric.binary.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"6":{"name":"punctuation.separator.constant.numeric.go"},"7":{"name":"keyword.other.unit.imaginary.go"},"8":{"name":"keyword.other.unit.octal.go"},"9":{"name":"constant.numeric.octal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"10":{"name":"punctuation.separator.constant.numeric.go"},"11":{"name":"keyword.other.unit.imaginary.go"},"12":{"name":"keyword.other.unit.hexadecimal.go"},"13":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"14":{"name":"punctuation.separator.constant.numeric.go"},"15":{"name":"keyword.other.unit.imaginary.go"}},"match":"\\\\G(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)(i(?!\\\\w))?(?:\\\\n|$)|(0[Bb])_?([01](?:[01]|((?<=\\\\h)_(?=\\\\h)))*)(i(?!\\\\w))?(?:\\\\n|$))|(0[Oo]?)_?((?:[0-7]|((?<=\\\\h)_(?=\\\\h)))+)(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])_?(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)(i(?!\\\\w))?(?:\\\\n|$))"},{"match":"(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])+","name":"invalid.illegal.constant.numeric.go"}]}]}},"match":"(?<!\\\\w)\\\\.?\\\\d(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])*"},"operators":{"patterns":[{"match":"(?<!\\\\w)[\\\\&*]+(?!\\\\d)(?=[]\\\\[\\\\w]|<-)","name":"keyword.operator.address.go"},{"match":"<-","name":"keyword.operator.channel.go"},{"match":"--","name":"keyword.operator.decrement.go"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.go"},{"match":"(==|!=|<=|>=|<(?!<)|>(?!>))","name":"keyword.operator.comparison.go"},{"match":"(&&|\\\\|\\\\||!)","name":"keyword.operator.logical.go"},{"match":"((?:|[-%*+/:^|]|<<|>>|&\\\\^?)=)","name":"keyword.operator.assignment.go"},{"match":"([-%*+/])","name":"keyword.operator.arithmetic.go"},{"match":"(&(?!\\\\^)|[\\\\^|]|&\\\\^|<<|>>|~)","name":"keyword.operator.arithmetic.bitwise.go"},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.ellipsis.go"}]},"other_struct_interface_expressions":{"patterns":[{"include":"#after_control_variables"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b(?!(?:struct|interface)\\\\b)([.\\\\w]+)(?<brackets>\\\\[(?:[^]\\\\[]|\\\\g<brackets>)*])?(?=\\\\{)"}]},"other_variables":{"match":"\\\\w+","name":"variable.other.go"},"package_name":{"patterns":[{"begin":"\\\\b(package)\\\\s+","beginCaptures":{"1":{"name":"keyword.package.go"}},"end":"(?!\\\\G)","patterns":[{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"entity.name.type.package.go"}]}]},"parameter-variable-types":{"patterns":[{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]}]},"property_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]}},"match":"\\\\b([.\\\\w]+:(?!=))"},"raw_string_literals":{"begin":"\`","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.go"}},"end":"\`","endCaptures":{"0":{"name":"punctuation.definition.string.end.go"}},"name":"string.quoted.raw.go","patterns":[{"include":"#string_placeholder"}]},"runes":{"patterns":[{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.go"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.go"}},"name":"string.quoted.rune.go","patterns":[{"match":"\\\\G(\\\\\\\\([0-7]{3}|[\\"'\\\\\\\\abfnrtv]|x\\\\h{2}|u\\\\h{4}|U\\\\h{8})|.)(?=')","name":"constant.other.rune.go"},{"match":"[^']+","name":"invalid.illegal.unknown-rune.go"}]}]},"single_type":{"patterns":[{"captures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"3":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"},{"include":"$self"}]},{"include":"#type-declarations"},{"include":"#generic_types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b(type)\\\\b\\\\s*([*.\\\\w]+)\\\\s+(?!(?:=\\\\s*)?[]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b)([\\\\s\\\\S]+)"},{"begin":"(?:^|\\\\s+)\\\\b(type)\\\\b\\\\s*([*.\\\\w]+)(?=\\\\[)","beginCaptures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"end":"(?<=])(\\\\s+(?:=\\\\s*)?(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?![]*\\\\[]+{0,1}\\\\b(?:struct|interface|func)\\\\b)[-\\\\]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?","endCaptures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"include":"#struct_variables_types"},{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}]},"slice_index_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.go"}]}},"match":"(?<=\\\\w\\\\[)((?:\\\\b[-%\\\\&*+./<>|\\\\w]+:|:\\\\b[-%\\\\&*+./<>|\\\\w]+)(?:\\\\b[-%\\\\&*+./<>|\\\\w]+)?(?::\\\\b[-%\\\\&*+./<>|\\\\w]+)?)(?=])"},"statements":{"patterns":[{"include":"#package_name"},{"include":"#import"},{"include":"#syntax_errors"},{"include":"#group-functions"},{"include":"#group-types"},{"include":"#group-variables"},{"include":"#hover"}]},"storage_types":{"patterns":[{"match":"\\\\bbool\\\\b","name":"storage.type.boolean.go"},{"match":"\\\\bbyte\\\\b","name":"storage.type.byte.go"},{"match":"\\\\berror\\\\b","name":"storage.type.error.go"},{"match":"\\\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\\\b","name":"storage.type.numeric.go"},{"match":"\\\\brune\\\\b","name":"storage.type.rune.go"},{"match":"\\\\bstring\\\\b","name":"storage.type.string.go"},{"match":"\\\\buintptr\\\\b","name":"storage.type.uintptr.go"},{"match":"\\\\bany\\\\b","name":"entity.name.type.any.go"},{"match":"\\\\bcomparable\\\\b","name":"entity.name.type.comparable.go"}]},"string_escaped_char":{"patterns":[{"match":"\\\\\\\\([0-7]{3}|[\\"'\\\\\\\\abfnrtv]|x\\\\h{2}|u\\\\h{4}|U\\\\h{8})","name":"constant.character.escape.go"},{"match":"\\\\\\\\[^\\"'0-7Uabfnrtuvx]","name":"invalid.illegal.unknown-escape.go"}]},"string_literals":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.go"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.go"}},"name":"string.quoted.double.go","patterns":[{"include":"#string_escaped_char"},{"include":"#string_placeholder"}]}]},"string_placeholder":{"patterns":[{"match":"%(\\\\[\\\\d+])?([- #+0]{0,2}((\\\\d+|\\\\*)?(\\\\.?(\\\\d+|\\\\*|(\\\\[\\\\d+])\\\\*?)?(\\\\[\\\\d+])?)?))?[%EFGTUXb-gopqstvwx]","name":"constant.other.placeholder.go"}]},"struct_interface_declaration":{"captures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b(type)\\\\b\\\\s*([.\\\\w]+)"},"struct_variable_types_fields_multi":{"patterns":[{"begin":"\\\\b(\\\\w+(?:,\\\\s*\\\\b\\\\w+)*(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*[]*\\\\[]+{0,1})\\\\b(struct)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"name":"keyword.struct.go"},"3":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#struct_variables_types_fields"},{"include":"$self"}]},{"begin":"\\\\b(\\\\w+(?:,\\\\s*\\\\b\\\\w+)*(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*[]*\\\\[]+{0,1})\\\\b(interface)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"name":"keyword.interface.go"},"3":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#interface_variables_types_field"},{"include":"$self"}]},{"begin":"\\\\b(\\\\w+(?:,\\\\s*\\\\b\\\\w+)*(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*[]*\\\\[]+{0,1})\\\\b(func)\\\\b\\\\s*(\\\\()","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"name":"keyword.function.go"},"3":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"},{"include":"$self"}]},{"include":"#parameter-variable-types"}]},"struct_variables_types":{"begin":"\\\\b(struct)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.struct.go"},"2":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#struct_variables_types_fields"},{"include":"$self"}]},"struct_variables_types_fields":{"patterns":[{"include":"#struct_variable_types_fields_multi"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\{)\\\\s*((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*.\\\\[\\\\w]+)\\\\s*(?=})"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\{)\\\\s*((?:\\\\w+,\\\\s*)+{0,1}\\\\w+\\\\s+)((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*.\\\\[\\\\w]+)\\\\s*(?=})"},{"captures":{"1":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\w+,\\\\s*)+{0,1}\\\\w+\\\\s+)?((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[^\\"/\`\\\\s]+;?)"}]}},"match":"(?<=\\\\{)((?:\\\\s*(?:(?:\\\\w+,\\\\s*)+{0,1}\\\\w+\\\\s+)?(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[^\\"/\`\\\\s]+;?)+)\\\\s*(?=})"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[*.\\\\w]+\\\\s*)(?:(?=[\\"/\`])|$)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b(\\\\w+(?:\\\\s*,\\\\s*\\\\b\\\\w+)*)\\\\s*([^\\"/\`]+)"}]},"support_functions":{"captures":{"1":{"name":"entity.name.function.support.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"entity.name.function.support.go"}]},"3":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?:((?<=\\\\.)\\\\b\\\\w+)|\\\\b(\\\\w+))(?<brackets>\\\\[(?:[^]\\\\[]|\\\\g<brackets>)*])?(?=\\\\()"},"switch_types":{"begin":"(?<=\\\\bswitch\\\\b)\\\\s*(\\\\w+\\\\s*:=)?\\\\s*([-\\\\]%\\\\&(-+./<>\\\\[|\\\\w]+)(\\\\.\\\\(\\\\btype\\\\b\\\\)\\\\s*)(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#operators"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]},"2":{"patterns":[{"include":"#support_functions"},{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.go"}]},"3":{"patterns":[{"include":"#delimiters"},{"include":"#brackets"},{"match":"\\\\btype\\\\b","name":"keyword.type.go"}]},"4":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"captures":{"1":{"name":"keyword.control.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"3":{"name":"punctuation.other.colon.go"},"4":{"patterns":[{"include":"#comments"}]}},"match":"^\\\\s*\\\\b(case)\\\\b\\\\s+([!*,.<=>\\\\w\\\\s]+)(:)(\\\\s*/[*/]\\\\s*.*)?$"},{"begin":"\\\\bcase\\\\b","beginCaptures":{"0":{"name":"keyword.control.go"}},"end":":","endCaptures":{"0":{"name":"punctuation.other.colon.go"}},"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},{"include":"$self"}]},"switch_variables":{"patterns":[{"captures":{"1":{"name":"keyword.control.go"},"2":{"patterns":[{"include":"#type-declarations"},{"include":"#support_functions"},{"include":"#variable_assignment"},{"match":"\\\\w+","name":"variable.other.go"}]}},"match":"^\\\\s*\\\\b(case)\\\\b\\\\s+([\\\\s\\\\S]+:\\\\s*(?:/[*/].*)?)$"},{"begin":"(?<=\\\\bswitch\\\\b)\\\\s*((?:[.\\\\w]+(?:\\\\s*[-!%\\\\&+,/:<=>|]+\\\\s*[.\\\\w]+)*\\\\s*[-!%\\\\&+,/:<=>|]+)?\\\\s*[-\\\\]%\\\\&(-+./<>\\\\[|\\\\w]+{0,1}\\\\s*(?:;\\\\s*[-\\\\]%\\\\&(-+./<>\\\\[|\\\\w]+\\\\s*)?)(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#support_functions"},{"include":"#type-declarations"},{"include":"#variable_assignment"},{"match":"\\\\w+","name":"variable.other.go"}]},"2":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"begin":"\\\\bcase\\\\b","beginCaptures":{"0":{"name":"keyword.control.go"}},"end":":","endCaptures":{"0":{"name":"punctuation.other.colon.go"}},"patterns":[{"include":"#support_functions"},{"include":"#type-declarations"},{"include":"#variable_assignment"},{"match":"\\\\w+","name":"variable.other.go"}]},{"include":"$self"}]}]},"syntax_errors":{"patterns":[{"captures":{"1":{"name":"invalid.illegal.slice.go"}},"match":"\\\\[](\\\\s+)"},{"match":"\\\\b0[0-7]*[89]\\\\d*\\\\b","name":"invalid.illegal.numeric.go"}]},"terminators":{"match":";","name":"punctuation.terminator.go"},"type-declarations":{"patterns":[{"include":"#language_constants"},{"include":"#comments"},{"include":"#map_types"},{"include":"#brackets"},{"include":"#delimiters"},{"include":"#keywords"},{"include":"#operators"},{"include":"#runes"},{"include":"#storage_types"},{"include":"#raw_string_literals"},{"include":"#string_literals"},{"include":"#numeric_literals"},{"include":"#terminators"}]},"type-declarations-without-brackets":{"patterns":[{"include":"#language_constants"},{"include":"#comments"},{"include":"#map_types"},{"include":"#delimiters"},{"include":"#keywords"},{"include":"#operators"},{"include":"#runes"},{"include":"#storage_types"},{"include":"#raw_string_literals"},{"include":"#string_literals"},{"include":"#numeric_literals"},{"include":"#terminators"}]},"type_assertion_inline":{"captures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\.\\\\()(?:\\\\b(type)\\\\b|((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*\\\\[]+{0,1}[.\\\\w]+(?:\\\\[(?:[]*.\\\\[{}\\\\w]+(?:,\\\\s*[]*.\\\\[{}\\\\w]+)*)?])?))(?=\\\\))"},"var_assignment":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\bvar\\\\b)\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"begin":"(?<=\\\\bvar\\\\b)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"include":"$self"}]}]},"variable_assignment":{"patterns":[{"captures":{"0":{"patterns":[{"include":"#delimiters"},{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]}},"match":"\\\\b\\\\w+(?:,\\\\s*\\\\w+)*(?=\\\\s*:=)"},{"captures":{"0":{"patterns":[{"include":"#delimiters"},{"include":"#operators"},{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]}},"match":"\\\\b[*.\\\\w]+(?:,\\\\s*[*.\\\\w]+)*(?=\\\\s*=(?!=))"}]}},"scopeName":"source.go"}`)),n3=[rz];var iz=Object.freeze(JSON.parse(`{"displayName":"JavaScript","name":"javascript","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.objectliteral.js","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.js"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js"}},"name":"meta.array.literal.js","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"variable.parameter.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.js"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.js","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.js","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.js","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.js"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.js"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"include":"#jsx"}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.type.class.js"}},"end":"(?<=})","name":"meta.class.js","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.js"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.type.class.js"}},"end":"(?<=})","name":"meta.class.js","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"name":"comment.block.documentation.js","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.js"},"2":{"name":"storage.type.internaldeclaration.js"},"3":{"name":"punctuation.decorator.internaldeclaration.js"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"name":"comment.block.js"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js"},"2":{"name":"comment.line.double-slash.js"},"3":{"name":"punctuation.definition.comment.js"},"4":{"name":"storage.type.internaldeclaration.js"},"5":{"name":"punctuation.decorator.internaldeclaration.js"}},"contentName":"comment.line.double-slash.js","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.js"},{"captures":{"1":{"name":"keyword.control.loop.js"},"2":{"name":"entity.name.label.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.js"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.js"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.js"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.js"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.block.js","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.js"}},"end":"(?=\\\\s)","name":"meta.decorator.js","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"name":"meta.parameter.object-binding-pattern.js","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"name":"meta.paramter.array-binding-pattern.js","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"variable.parameter.js"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"meta.definition.variable.js variable.other.readwrite.js"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"meta.definition.variable.js variable.other.constant.js"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.js"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.js","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.js"},"2":{"name":"entity.name.tag.directive.js"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.js"}},"name":"meta.tag.js","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.js"},{"match":"=","name":"keyword.operator.assignment.js"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.js"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.js"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|'(?:\\\\*(?!/)|\\\\\\\\(?!')|[^*\\\\\\\\])*?'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.type.enum.js"},"5":{"name":"entity.name.type.enum.js"}},"end":"(?<=})","name":"meta.enum.declaration.js","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.js"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"keyword.control.as.js"},"3":{"name":"storage.type.namespace.js"},"4":{"name":"entity.name.type.module.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"keyword.control.type.js"},"3":{"name":"keyword.operator.assignment.js"},"4":{"name":"keyword.control.default.js"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.js","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"keyword.control.type.js"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.js","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"entity.name.function.js variable.language.this.js"},"4":{"name":"entity.name.function.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"variable.parameter.js variable.language.this.js"},"4":{"name":"variable.parameter.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.js"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.js"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.js"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.js"},"2":{"name":"keyword.generator.asterisk.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.js"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.js"},{"captures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"keyword.control.satisfies.js"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.js"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.js"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.js"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.js"},{"match":"[!=]==?","name":"keyword.operator.comparison.js"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.js"},{"captures":{"1":{"name":"keyword.operator.logical.js"},"2":{"name":"keyword.operator.assignment.compound.js"},"3":{"name":"keyword.operator.arithmetic.js"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.js"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.js"},{"match":"=","name":"keyword.operator.assignment.js"},{"match":"--","name":"keyword.operator.decrement.js"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.js"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.js"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.js"},"2":{"name":"keyword.operator.arithmetic.js"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.js"},"2":{"name":"keyword.operator.arithmetic.js"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#jsx"},{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.js"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.js","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.js entity.name.function.js"},"2":{"name":"keyword.operator.optional.js"},"3":{"name":"keyword.operator.definiteassignment.js"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.js variable.object.property.js"},{"match":"\\\\?","name":"keyword.operator.optional.js"},{"match":"!","name":"keyword.operator.definiteassignment.js"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.js"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.js"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.js","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.js","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.js punctuation.accessor.optional.js"},{"match":"!","name":"meta.function-call.js keyword.operator.definiteassignment.js"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.js"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.async.js"},"4":{"name":"storage.type.function.js"},"5":{"name":"keyword.generator.asterisk.js"},"6":{"name":"meta.definition.function.js entity.name.function.js"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.js","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"storage.type.function.js"},"3":{"name":"keyword.generator.asterisk.js"},"4":{"name":"meta.definition.function.js entity.name.function.js"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.js","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.js entity.name.function.js"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.js"}},"name":"meta.parameters.js","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"entity.name.function.js"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"variable.other.constant.property.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"variable.other.property.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.js"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.js"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.js"},"2":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"keyword.other.js"}},"name":"string.regexp.js","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"keyword.control.import.js"},"4":{"name":"keyword.control.type.js"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.js","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.js"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"keyword.control.import.js"},"4":{"name":"keyword.control.type.js"},"5":{"name":"variable.other.readwrite.alias.js"},"6":{"name":"keyword.operator.assignment.js"},"7":{"name":"keyword.control.require.js"},"8":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"name":"meta.import-equals.external.js","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"keyword.control.import.js"},"4":{"name":"keyword.control.type.js"},"5":{"name":"variable.other.readwrite.alias.js"},"6":{"name":"keyword.operator.assignment.js"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.js","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.js"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.js"},"2":{"name":"keyword.control.assert.js"},"3":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.js"},{"match":":","name":"punctuation.separator.key-value.js"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.block.js","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.js"},"2":{"name":"keyword.control.default.js"},"3":{"name":"constant.language.import-export-all.js"},"4":{"name":"variable.other.readwrite.js"},"5":{"name":"string.quoted.alias.js"},"12":{"name":"keyword.control.as.js"},"13":{"name":"keyword.control.default.js"},"14":{"name":"variable.other.readwrite.alias.js"},"15":{"name":"string.quoted.alias.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.js"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.js"},{"captures":{"1":{"name":"keyword.control.type.js"},"2":{"name":"variable.other.readwrite.alias.js"},"3":{"name":"string.quoted.alias.js"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.js"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"meta.brace.square.js"},"3":{"name":"variable.parameter.js"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js"},"2":{"name":"keyword.operator.optional.js"}},"name":"meta.indexer.declaration.js","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"meta.brace.square.js"},"4":{"name":"entity.name.type.js"},"5":{"name":"keyword.operator.expression.in.js"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js"},"2":{"name":"keyword.operator.type.modifier.js"},"3":{"name":"keyword.operator.optional.js"}},"name":"meta.indexer.mappedtype.declaration.js","patterns":[{"captures":{"1":{"name":"keyword.control.as.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.js"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.type.interface.js"}},"end":"(?<=})","name":"meta.interface.js","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.js"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"jsx":{"patterns":[{"include":"#jsx-tag-without-attributes-in-expression"},{"include":"#jsx-tag-in-expression"}]},"jsx-children":{"patterns":[{"include":"#jsx-tag-without-attributes"},{"include":"#jsx-tag"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-entities"}]},"jsx-entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.js"},"3":{"name":"punctuation.definition.entity.js"}},"match":"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.js"}]},"jsx-evaluated-code":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.js"}},"contentName":"meta.embedded.expression.js","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.js"}},"patterns":[{"include":"#expression"}]},"jsx-string-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.js"}},"name":"string.quoted.double.js","patterns":[{"include":"#jsx-entities"}]},"jsx-string-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.js"}},"name":"string.quoted.single.js","patterns":[{"include":"#jsx-entities"}]},"jsx-tag":{"begin":"(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(/>)|(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.js"},"2":{"name":"punctuation.definition.tag.begin.js"},"3":{"name":"entity.name.tag.namespace.js"},"4":{"name":"punctuation.separator.namespace.js"},"5":{"name":"entity.name.tag.js"},"6":{"name":"support.class.component.js"},"7":{"name":"punctuation.definition.tag.end.js"}},"name":"meta.tag.js","patterns":[{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js"},"2":{"name":"entity.name.tag.namespace.js"},"3":{"name":"punctuation.separator.namespace.js"},"4":{"name":"entity.name.tag.js"},"5":{"name":"support.class.component.js"}},"end":"(?=/?>)","patterns":[{"include":"#comment"},{"include":"#type-arguments"},{"include":"#jsx-tag-attributes"}]},{"begin":"(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.end.js"}},"contentName":"meta.jsx.children.js","end":"(?=</)","patterns":[{"include":"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{"match":"=(?=\\\\s*(?:[\\"'{]|/\\\\*|//|\\\\n))","name":"keyword.operator.assignment.js"},"jsx-tag-attribute-name":{"captures":{"1":{"name":"entity.other.attribute-name.namespace.js"},"2":{"name":"punctuation.separator.namespace.js"},"3":{"name":"entity.other.attribute-name.js"}},"match":"\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\s]|/?>|/\\\\*|//)"},"jsx-tag-attributes":{"begin":"\\\\s+","end":"(?=/?>)","name":"meta.tag.attributes.js","patterns":[{"include":"#comment"},{"include":"#jsx-tag-attribute-name"},{"include":"#jsx-tag-attribute-assignment"},{"include":"#jsx-string-double-quoted"},{"include":"#jsx-string-single-quoted"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{"match":"\\\\S+","name":"invalid.illegal.attribute.js"},"jsx-tag-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?!<\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,))(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","patterns":[{"include":"#jsx-tag"}]},"jsx-tag-without-attributes":{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js"},"2":{"name":"entity.name.tag.namespace.js"},"3":{"name":"punctuation.separator.namespace.js"},"4":{"name":"entity.name.tag.js"},"5":{"name":"support.class.component.js"},"6":{"name":"punctuation.definition.tag.end.js"}},"contentName":"meta.jsx.children.js","end":"(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.js"},"2":{"name":"entity.name.tag.namespace.js"},"3":{"name":"punctuation.separator.namespace.js"},"4":{"name":"entity.name.tag.js"},"5":{"name":"support.class.component.js"},"6":{"name":"punctuation.definition.tag.end.js"}},"name":"meta.tag.without-attributes.js","patterns":[{"include":"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","patterns":[{"include":"#jsx-tag-without-attributes"}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.js"},"2":{"name":"punctuation.separator.label.js"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.js"},"2":{"name":"punctuation.separator.label.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.modifier.async.js"},"5":{"name":"storage.type.js"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.modifier.async.js"},"5":{"name":"keyword.operator.new.js"},"6":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.modifier.async.js"},"5":{"name":"storage.type.property.js"},"6":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.js entity.name.function.js"},{"match":"\\\\?","name":"keyword.operator.optional.js"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$'_\`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.namespace.js"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.js","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.js"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.js"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.js","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.js"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.js"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.js"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.js"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.js"},{"captures":{"0":{"name":"constant.numeric.decimal.js"},"1":{"name":"meta.delimiter.decimal.period.js"},"2":{"name":"storage.type.numeric.bigint.js"},"3":{"name":"meta.delimiter.decimal.period.js"},"4":{"name":"storage.type.numeric.bigint.js"},"5":{"name":"meta.delimiter.decimal.period.js"},"6":{"name":"storage.type.numeric.bigint.js"},"7":{"name":"storage.type.numeric.bigint.js"},"8":{"name":"meta.delimiter.decimal.period.js"},"9":{"name":"storage.type.numeric.bigint.js"},"10":{"name":"meta.delimiter.decimal.period.js"},"11":{"name":"storage.type.numeric.bigint.js"},"12":{"name":"meta.delimiter.decimal.period.js"},"13":{"name":"storage.type.numeric.bigint.js"},"14":{"name":"storage.type.numeric.bigint.js"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.js"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.js"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.js"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.js"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"variable.other.constant.object.property.js"},"4":{"name":"variable.other.object.property.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.js"},"2":{"name":"variable.other.object.js"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.objectliteral.js","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"storage.type.property.js"},"3":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"storage.type.property.js"},"3":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.js meta.object-literal.key.js","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"'\`])","end":"(?=:)|((?<=[\\"'\`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.js meta.object-literal.key.js","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.js meta.object-literal.key.js","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"'\`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.js"},"1":{"name":"constant.numeric.decimal.js"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js"},{"captures":{"0":{"name":"meta.object-literal.key.js"},"1":{"name":"entity.name.function.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.js"},{"captures":{"0":{"name":"meta.object-literal.key.js"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js"}},"end":"(?=[,}])","name":"meta.object.member.js","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js"},{"captures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.js"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"keyword.control.satisfies.js"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.js","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.js punctuation.separator.key-value.js"}},"end":"(?=[,}])","name":"meta.object.member.js","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"entity.name.function.js variable.language.this.js"},"4":{"name":"entity.name.function.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"variable.parameter.js variable.language.this.js"},"4":{"name":"variable.parameter.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.js","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"}},"contentName":"meta.arrow.js meta.return.type.arrow.js","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.js"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.js"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.js"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"invalid.illegal.newline.js"}},"name":"string.quoted.double.js","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"invalid.illegal.newline.js"}},"name":"string.quoted.single.js","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.js"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"keyword.other.js"}},"name":"string.regexp.js","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"keyword.other.js"}},"name":"string.regexp.js","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.js","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.js","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.js"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.js"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js"},"2":{"name":"comment.line.double-slash.js"},"3":{"name":"punctuation.definition.comment.js"},"4":{"name":"storage.type.internaldeclaration.js"},"5":{"name":"punctuation.decorator.internaldeclaration.js"}},"contentName":"comment.line.double-slash.js","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.js"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.js"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"'\`])","name":"keyword.operator.expression.import.js"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.js"},{"captures":{"1":{"name":"keyword.control.import.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"},"4":{"name":"support.variable.property.importmeta.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"},"4":{"name":"support.variable.property.target.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"support.variable.property.js"},"4":{"name":"support.constant.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.js"},"2":{"name":"support.type.object.module.js"},"3":{"name":"punctuation.accessor.js"},"4":{"name":"punctuation.accessor.optional.js"},"5":{"name":"support.type.object.module.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"switch-statement.expr.js","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.js"},"2":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"name":"switch-expression.expr.js","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"(?=})","name":"switch-block.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.js"}},"end":"(?=:)","name":"case-clause.expr.js","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.js punctuation.definition.section.case-statement.js"},"2":{"name":"meta.block.js punctuation.definition.block.js"}},"contentName":"meta.block.js","end":"}","endCaptures":{"0":{"name":"meta.block.js punctuation.definition.block.js"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.js punctuation.definition.section.case-statement.js"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js"},"2":{"name":"string.template.js punctuation.definition.string.template.begin.js"}},"contentName":"string.template.js","end":"\`","endCaptures":{"0":{"name":"string.template.js punctuation.definition.string.template.end.js"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","end":"(?=\`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.js"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js"}},"end":"(?=\`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js"}},"contentName":"meta.embedded.line.js","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js"}},"name":"meta.template.expression.js","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js"},"2":{"name":"string.template.js punctuation.definition.string.template.begin.js"}},"contentName":"string.template.js","end":"\`","endCaptures":{"0":{"name":"string.template.js punctuation.definition.string.template.end.js"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js"}},"contentName":"meta.embedded.line.js","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js"}},"name":"meta.template.expression.js","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.js"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.js"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.js"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.type.js"},"4":{"name":"entity.name.type.alias.js"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.js","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"},"2":{"name":"keyword.control.intrinsic.js"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.js"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.js"}},"name":"meta.type.parameters.js","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.js"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.js"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.js"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.js"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.js storage.modifier.js"},"2":{"name":"meta.type.constructor.js keyword.control.new.js"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.control.new.js"}},"end":"(?<=\\\\))","name":"meta.type.constructor.js","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.js","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.js"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.js","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.js","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.js"},"2":{"name":"entity.name.type.js"},"3":{"name":"keyword.operator.expression.extends.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.js"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"},"4":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},"contentName":"meta.type.parameters.js","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.js"},"2":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},"contentName":"meta.type.parameters.js","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.js"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.object.type.js","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.js"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.js"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.js"},{"match":"([:?])","name":"keyword.operator.ternary.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.js"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.js"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.js"}},"name":"meta.type.parameters.js","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.js"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"name":"meta.type.paren.cover.js","patterns":[{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"entity.name.function.js variable.language.this.js"},"4":{"name":"entity.name.function.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"variable.parameter.js variable.language.this.js"},"4":{"name":"variable.parameter.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.js"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.js"},"2":{"name":"variable.parameter.js variable.language.this.js"},"3":{"name":"variable.parameter.js"},"4":{"name":"keyword.operator.expression.is.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.js"},"2":{"name":"variable.parameter.js variable.language.this.js"},"3":{"name":"variable.parameter.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.js"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.js"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.js"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js"}},"name":"meta.type.tuple.js","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.js"},{"captures":{"1":{"name":"entity.name.label.js"},"2":{"name":"keyword.operator.optional.js"},"3":{"name":"punctuation.separator.label.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.js"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.js"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.js"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.constant.js entity.name.function.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.constant.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js entity.name.function.js"},"2":{"name":"keyword.operator.definiteassignment.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.constant.js"},"2":{"name":"keyword.operator.definiteassignment.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.readwrite.js"},"2":{"name":"keyword.operator.definiteassignment.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.js","aliases":["js","cjs","mjs"]}`)),Zp=[iz];var sz=Object.freeze(JSON.parse(`{"displayName":"HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"html","patterns":[{"include":"#xml-processing"},{"include":"#comment"},{"include":"#doctype"},{"include":"#cdata"},{"include":"#tags-valid"},{"include":"#tags-invalid"},{"include":"#entities"}],"repository":{"attribute":{"patterns":[{"begin":"(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"style(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.style.html","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.html"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"begin":"(?=[^/<=>\`\\\\s]|/(?!>))","end":"(?!\\\\G)","name":"meta.embedded.line.css","patterns":[{"captures":{"0":{"name":"source.css"}},"match":"([^\\"'/<=>\`\\\\s]|/(?!>))+","name":"string.unquoted.html"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.css","end":"(\\")","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.css"}},"name":"string.quoted.double.html","patterns":[{"include":"#entities"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.css","end":"(')","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.css"}},"name":"string.quoted.single.html","patterns":[{"include":"#entities"}]}]},{"match":"=","name":"invalid.illegal.unexpected-equals-sign.html"}]}]},{"begin":"on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o((?:n|ff)line)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d((?:|meta)data)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.event-handler.$1.html","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.html"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"begin":"(?=[^/<=>\`\\\\s]|/(?!>))","end":"(?!\\\\G)","name":"meta.embedded.line.js","patterns":[{"captures":{"0":{"name":"source.js"},"1":{"patterns":[{"include":"source.js"}]}},"match":"(([^\\"'/<=>\`\\\\s]|/(?!>))+)","name":"string.unquoted.html"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.js","end":"(\\")","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.js"}},"name":"string.quoted.double.html","patterns":[{"captures":{"0":{"patterns":[{"include":"source.js"}]}},"match":"([^\\\\n\\"/]|/(?![*/]))+"},{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"(?=\\")|\\\\n","name":"comment.line.double-slash.js"},{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.js"}},"end":"(?=\\")|\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.js"}},"name":"comment.block.js"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.js","end":"(')","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.js"}},"name":"string.quoted.single.html","patterns":[{"captures":{"0":{"patterns":[{"include":"source.js"}]}},"match":"([^\\\\n'/]|/(?![*/]))+"},{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"(?=')|\\\\n","name":"comment.line.double-slash.js"},{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.js"}},"end":"(?=')|\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.js"}},"name":"comment.block.js"}]}]},{"match":"=","name":"invalid.illegal.unexpected-equals-sign.html"}]}]},{"begin":"(data-[-a-z]+)(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.data-x.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"(align|bgcolor|border)(?![-:\\\\w])","beginCaptures":{"0":{"name":"invalid.deprecated.entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"([^\\\\x00- \\"'/<=>\\\\x7F-\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.unrecognized.$1.html","patterns":[{"include":"#attribute-interior"}]},{"match":"[^>\\\\s]+","name":"invalid.illegal.character-not-allowed-here.html"}]},"attribute-interior":{"patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.html"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"match":"([^\\"'/<=>\`\\\\s]|/(?!>))+","name":"string.unquoted.html"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}},"name":"string.quoted.double.html","patterns":[{"include":"#entities"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}},"name":"string.quoted.single.html","patterns":[{"include":"#entities"}]},{"match":"=","name":"invalid.illegal.unexpected-equals-sign.html"}]}]},"cdata":{"begin":"<!\\\\[CDATA\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.tag.begin.html"}},"contentName":"string.other.inline-data.html","end":"]]>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.cdata.html"},"comment":{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.html"}},"end":"-->","name":"comment.block.html","patterns":[{"match":"\\\\G-?>","name":"invalid.illegal.characters-not-allowed-here.html"},{"match":"<!-(?:-(?!>)|(?=-->))","name":"invalid.illegal.characters-not-allowed-here.html"},{"match":"--!>","name":"invalid.illegal.characters-not-allowed-here.html"}]},"core-minus-invalid":{"patterns":[{"include":"#xml-processing"},{"include":"#comment"},{"include":"#doctype"},{"include":"#cdata"},{"include":"#tags-valid"},{"include":"#entities"}]},"doctype":{"begin":"<!(?=(?i:DOCTYPE\\\\s))","beginCaptures":{"0":{"name":"punctuation.definition.tag.begin.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.doctype.html","patterns":[{"match":"\\\\G(?i:DOCTYPE)","name":"entity.name.tag.html"},{"begin":"\\"","end":"\\"","name":"string.quoted.double.html"},{"match":"[^>\\\\s]+","name":"entity.other.attribute-name.html"}]},"entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.html"},"912":{"name":"punctuation.definition.entity.html"}},"match":"(&)(?=[A-Za-z])((a(s(ymp(eq)?|cr|t)|n(d(slope|[dv]|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a([a-h]))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|[Ee]|acir)?|elig|f(r)?|w((?:con|)int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))|(B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h([DUdu])?|times|H([DUdu])?|d([LRlr])|u([LRlr])|plus|D([LRlr])|v([HLRhlr])?|U([LRlr])|V([HLRhlr])?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1([24])|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))|(c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr([lr])|p(s|c([au]p)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w((?:con|)int)|lubs(uit)?|a(cute|p(s|c([au]p)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly((?:Double|)Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))|(d(s(c([ry])|trok|ol)|har([lr])|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up((?:Down|)Arrow)|VerticalBar|L(ong(RightArrow|Left((?:Right|)Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))|(e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t([ah])|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(D??ot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1([34]))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty((?:|Very)SmallSquare)|acr)))|(f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(l??ig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1([2-68])|78|2([35])|3([458])|45|5([68])))))|F(scr|cy|illed((?:|Very)SmallSquare)|o(uriertrf|pf|rAll)|fr))|(G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im([el])?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(q?less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l([Eaj])?|a(cute|p|mma(d)?)|rave|g(g)?|breve))|(h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok((?:lef|righ)tarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks([ew]arow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))|(i(s(cr|in(s(v)?|dot|[Ev])?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(i??nt)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f([fr])|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))|(j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))|(k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))|(l(s(h|cr|trok|im([eg])?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(d??il)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i([ef])?|Par))?|Har|o(ng(left((?:|right)arrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r((?:d|us)har))|ur((?:ds|u)har)|jcy|par(lt)?|e(s(s(sim|dot|eq(q?gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left((?:|right)arrow)|rightarrow|Left((?:Right|)Arrow))|pf|wer((?:Righ|Lef)tArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))|(M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u((?:lti|)map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))|(n(s(hort(parallel|mid)|c(cue|[er])?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|[Ee])?|b(set(eq(q)?)?|[Ee])?)|par|qsu([bp]e)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v([abc]))?|in(dot|v([abc])|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g([et]))|fr|w(near|ar(hk|r(ow)?)|Arr)|V([Dd]ash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft((?:|right)arrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr([cw])?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft((?:|right)arrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes((?:Slant|)Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi((?:n|ck)Space)|VeryThinSpace))|Jcy|fr|acute))|(o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|[fm])?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly((?:Double|)Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))|(p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d([ou])|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))|(q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))|(R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(d??il)|aron)|Barr|t(hree|imes|ri([ef]|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng([de]|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr)))|(s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma([fv])?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot([be])?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n([Ee])|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|n([Ee])|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar([ef]))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort((?:Right|Down|Up|Left)Arrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))|(t(s(hcy|c([ry])|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead((?:lef|righ)tarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i((?:n|ck)Space)|e(ta|refore))|c(y|edil|aron)|S(H??cy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a([bu])|ripleDot))|(u(scr|h(ar([lr])|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per((?:Righ|Lef)tArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))|(v(s(cr|u(pn([Ee])|bn([Ee])))|nsu([bp])|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))|(w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))|(X(scr|i|opf|fr)|x(s(cr|qcup)|h([Aa]rr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l([Aa]rr)|r([Aa]rr)|map))|(y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))|(z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(n?j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)))(;)","name":"constant.character.entity.named.$2.html"},{"captures":{"1":{"name":"punctuation.definition.entity.html"},"3":{"name":"punctuation.definition.entity.html"}},"match":"(&)#[0-9]+(;)","name":"constant.character.entity.numeric.decimal.html"},{"captures":{"1":{"name":"punctuation.definition.entity.html"},"3":{"name":"punctuation.definition.entity.html"}},"match":"(&)#[Xx]\\\\h+(;)","name":"constant.character.entity.numeric.hexadecimal.html"},{"match":"&(?=[0-9A-Za-z]+;)","name":"invalid.illegal.ambiguous-ampersand.html"}]},"math":{"patterns":[{"begin":"(?i)(<)(math)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)","endCaptures":{"0":{"name":"meta.tag.structure.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]}],"repository":{"attribute":{"patterns":[{"begin":"(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u([bp]scriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"([^\\\\x00- \\"'/<=>\\\\x7F-\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.unrecognized.$1.html","patterns":[{"include":"#attribute-interior"}]},{"match":"[^>\\\\s]+","name":"invalid.illegal.character-not-allowed-here.html"}]},"tags":{"patterns":[{"include":"#comment"},{"include":"#cdata"},{"captures":{"0":{"name":"meta.tag.structure.math.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.structure.math.$2.html"},{"begin":"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.math.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.structure.math.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.math.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.inline.math.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.inline.math.$2.html"},{"begin":"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.inline.math.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.inline.math.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.inline.math.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.object.math.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(mglyph)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.object.math.$2.html"},{"begin":"(?i)(<)(mglyph)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.object.math.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.object.math.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.object.math.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.other.invalid.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(([:\\\\w]+))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.other.invalid.html"},{"begin":"(?i)(<)((\\\\w[^>\\\\s]*))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.other.invalid.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.other.invalid.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"name":"punctuation.definition.tag.end.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.other.invalid.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.invalid.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"include":"#tags-invalid"}]}}},"svg":{"patterns":[{"begin":"(?i)(<)(svg)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)","endCaptures":{"0":{"name":"meta.tag.structure.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]}],"repository":{"attribute":{"patterns":[{"begin":"(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em([hv])|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y([12]|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS((?:cript|tyle)Type)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget([XY])?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At([XYZ]))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-([xy])|adv-y)))|alues)|k([123]|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f([XY]|errerPolicy)|l)|adius|x)?|g([12]|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x([12]|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk((?:Content|)Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"([^\\\\x00- \\"'/<=>\\\\x7F-\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.unrecognized.$1.html","patterns":[{"include":"#attribute-interior"}]},{"match":"[^>\\\\s]+","name":"invalid.illegal.character-not-allowed-here.html"}]},"tags":{"patterns":[{"include":"#comment"},{"include":"#cdata"},{"captures":{"0":{"name":"meta.tag.metadata.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.metadata.svg.$2.html"},{"begin":"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.metadata.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.metadata.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.metadata.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.structure.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.structure.svg.$2.html"},{"begin":"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.structure.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.inline.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.inline.svg.$2.html"},{"begin":"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.inline.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.inline.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.inline.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.object.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.object.svg.$2.html"},{"begin":"(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.object.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.object.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.object.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.other.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.other.svg.$2.html"},{"begin":"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.other.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.other.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"},"4":{"name":"punctuation.definition.tag.end.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.other.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.other.invalid.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(([:\\\\w]+))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.other.invalid.html"},{"begin":"(?i)(<)((\\\\w[^>\\\\s]*))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.other.invalid.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.other.invalid.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"name":"punctuation.definition.tag.end.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.other.invalid.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.invalid.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"include":"#tags-invalid"}]}}},"tags-invalid":{"patterns":[{"begin":"(</?)((\\\\w[^>\\\\s]*))(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.$2.html","patterns":[{"include":"#attribute"}]}]},"tags-valid":{"patterns":[{"begin":"(^[\\\\t ]+)?(?=<(?i:style)\\\\b(?!-))","beginCaptures":{"1":{"name":"punctuation.whitespace.embedded.leading.html"}},"end":"(?!\\\\G)([\\\\t ]*$\\\\n?)?","endCaptures":{"1":{"name":"punctuation.whitespace.embedded.trailing.html"}},"patterns":[{"begin":"(?i)(<)(style)(?=\\\\s|/?>)","beginCaptures":{"0":{"name":"meta.tag.metadata.style.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"(?i)((<)/)(style)\\\\s*(>)","endCaptures":{"0":{"name":"meta.tag.metadata.style.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"source.css-ignored-vscode"},"3":{"name":"entity.name.tag.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.embedded.block.html","patterns":[{"begin":"\\\\G","captures":{"1":{"name":"punctuation.definition.tag.end.html"}},"end":"(>)","name":"meta.tag.metadata.style.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?!\\\\G)","end":"(?=</(?i:style))","name":"source.css","patterns":[{"include":"source.css"}]}]}]},{"begin":"(^[\\\\t ]+)?(?=<(?i:script)\\\\b(?!-))","beginCaptures":{"1":{"name":"punctuation.whitespace.embedded.leading.html"}},"end":"(?!\\\\G)([\\\\t ]*$\\\\n?)?","endCaptures":{"1":{"name":"punctuation.whitespace.embedded.trailing.html"}},"patterns":[{"begin":"(<)((?i:script))\\\\b","beginCaptures":{"0":{"name":"meta.tag.metadata.script.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"(/)((?i:script))(>)","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.embedded.block.html","patterns":[{"begin":"\\\\G","end":"(?=/)","patterns":[{"begin":"(>)","beginCaptures":{"0":{"name":"meta.tag.metadata.script.start.html"},"1":{"name":"punctuation.definition.tag.end.html"}},"end":"((<))(?=/(?i:script))","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"source.js-ignored-vscode"}},"patterns":[{"begin":"\\\\G","end":"(?=</(?i:script))","name":"source.js","patterns":[{"begin":"(^[\\\\t ]+)?(?=//)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js"}},"end":"(?!\\\\G)","patterns":[{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"(?=<\/script)|\\\\n","name":"comment.line.double-slash.js"}]},{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"\\\\*/|(?=<\/script)","name":"comment.block.js"},{"include":"source.js"}]}]},{"begin":"\\\\G","end":"(?i:(?=>|type(?=[=\\\\s])(?!\\\\s*=\\\\s*(''|\\"\\"|([\\"']?)(text/(javascript(1\\\\.[0-5])?|x-javascript|jscript|livescript|(x-)?ecmascript|babel)|application/((?:(x-)?jav|(x-)?ecm)ascript)|module)[\\"'>\\\\s]))))","name":"meta.tag.metadata.script.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i:(?=type\\\\s*=\\\\s*([\\"']?)text/(x-handlebars|(x-(handlebars-)?|ng-)?template|html)[\\"'>\\\\s]))","end":"((<))(?=/(?i:script))","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"text.html.basic"}},"patterns":[{"begin":"\\\\G","end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.script.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?!\\\\G)","end":"(?=</(?i:script))","name":"text.html.basic","patterns":[{"include":"text.html.basic"}]}]},{"begin":"(?=(?i:type))","end":"(<)(?=/(?i:script))","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"}},"patterns":[{"begin":"\\\\G","end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.script.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?!\\\\G)","end":"(?=</(?i:script))","name":"source.unknown"}]}]}]}]},{"begin":"(?i)(<)(base|link|meta)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(noscript|title)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(noscript|title)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(col|hr|input)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(area|br|wbr)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(embed|img|param|source|track)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((basefont|isindex))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((center|frameset|noembed|noframes))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((center|frameset|noembed|noframes))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((frame))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((applet))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((applet))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.no-longer-supported.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.no-longer-supported.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.$2.end.html","patterns":[{"include":"#attribute"}]},{"include":"#math"},{"include":"#svg"},{"begin":"(<)([A-Za-z][.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.custom.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(</)([A-Za-z][.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.custom.end.html","patterns":[{"include":"#attribute"}]}]},"xml-processing":{"begin":"(<\\\\?)(xml)","captures":{"1":{"name":"punctuation.definition.tag.html"},"2":{"name":"entity.name.tag.html"}},"end":"(\\\\?>)","name":"meta.tag.metadata.processing.xml.html","patterns":[{"include":"#attribute"}]}},"scopeName":"text.html.basic","embeddedLangs":["javascript","css"]}`)),a3=[...Zp,...Xp,sz];var oz=Object.freeze(JSON.parse('{"displayName":"JSON","name":"json","patterns":[{"include":"#value"}],"repository":{"array":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.array.begin.json"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.array.end.json"}},"name":"meta.structure.array.json","patterns":[{"include":"#value"},{"match":",","name":"punctuation.separator.array.json"},{"match":"[^]\\\\s]","name":"invalid.illegal.expected-array-separator.json"}]},"comments":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","captures":{"0":{"name":"punctuation.definition.comment.json"}},"end":"\\\\*/","name":"comment.block.documentation.json"},{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.json"}},"end":"\\\\*/","name":"comment.block.json"},{"captures":{"1":{"name":"punctuation.definition.comment.json"}},"match":"(//).*$\\\\n?","name":"comment.line.double-slash.js"}]},"constant":{"match":"\\\\b(?:true|false|null)\\\\b","name":"constant.language.json"},"number":{"match":"-?(?:0|[1-9]\\\\d*)(?:(?:\\\\.\\\\d+)?(?:[Ee][-+]?\\\\d+)?)?","name":"constant.numeric.json"},"object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.dictionary.begin.json"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.dictionary.end.json"}},"name":"meta.structure.dictionary.json","patterns":[{"include":"#objectkey"},{"include":"#comments"},{"begin":":","beginCaptures":{"0":{"name":"punctuation.separator.dictionary.key-value.json"}},"end":"(,)|(?=})","endCaptures":{"1":{"name":"punctuation.separator.dictionary.pair.json"}},"name":"meta.structure.dictionary.value.json","patterns":[{"include":"#value"},{"match":"[^,\\\\s]","name":"invalid.illegal.expected-dictionary-separator.json"}]},{"match":"[^}\\\\s]","name":"invalid.illegal.expected-dictionary-separator.json"}]},"objectkey":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.support.type.property-name.begin.json"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.support.type.property-name.end.json"}},"name":"string.json support.type.property-name.json","patterns":[{"include":"#stringcontent"}]},"string":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.json"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.json"}},"name":"string.quoted.double.json","patterns":[{"include":"#stringcontent"}]},"stringcontent":{"patterns":[{"match":"\\\\\\\\(?:[\\"/\\\\\\\\bfnrt]|u\\\\h{4})","name":"constant.character.escape.json"},{"match":"\\\\\\\\.","name":"invalid.illegal.unrecognized-string-escape.json"}]},"value":{"patterns":[{"include":"#constant"},{"include":"#number"},{"include":"#string"},{"include":"#array"},{"include":"#object"},{"include":"#comments"}]}},"scopeName":"source.json"}')),r3=[oz];var lz=Object.freeze(JSON.parse(`{"displayName":"JSX","name":"jsx","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js.jsx"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.objectliteral.js.jsx","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js.jsx"}},"name":"meta.array.literal.js.jsx","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"variable.parameter.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.js.jsx"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.js.jsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js.jsx"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.js.jsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.js.jsx","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.js.jsx"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.js.jsx"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"include":"#jsx"}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.type.class.js.jsx"}},"end":"(?<=})","name":"meta.class.js.jsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.js.jsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.type.class.js.jsx"}},"end":"(?<=})","name":"meta.class.js.jsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.js.jsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js.jsx"}},"name":"comment.block.documentation.js.jsx","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.js.jsx"},"2":{"name":"storage.type.internaldeclaration.js.jsx"},"3":{"name":"punctuation.decorator.internaldeclaration.js.jsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js.jsx"}},"name":"comment.block.js.jsx"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js.jsx"},"2":{"name":"comment.line.double-slash.js.jsx"},"3":{"name":"punctuation.definition.comment.js.jsx"},"4":{"name":"storage.type.internaldeclaration.js.jsx"},"5":{"name":"punctuation.decorator.internaldeclaration.js.jsx"}},"contentName":"comment.line.double-slash.js.jsx","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.js.jsx"},{"captures":{"1":{"name":"keyword.control.loop.js.jsx"},"2":{"name":"entity.name.label.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.js.jsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.js.jsx"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.js.jsx"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.js.jsx"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.block.js.jsx","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js.jsx"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.js.jsx"}},"end":"(?=\\\\s)","name":"meta.decorator.js.jsx","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js.jsx","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js.jsx","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"name":"meta.parameter.object-binding-pattern.js.jsx","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"name":"meta.paramter.array-binding-pattern.js.jsx","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"variable.parameter.js.jsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js.jsx","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js.jsx","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.js.jsx"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.js.jsx","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.js.jsx"},"2":{"name":"entity.name.tag.directive.js.jsx"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.js.jsx"}},"name":"meta.tag.js.jsx","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.js.jsx"},{"match":"=","name":"keyword.operator.assignment.js.jsx"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.js.jsx"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.js.jsx"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|'(?:\\\\*(?!/)|\\\\\\\\(?!')|[^*\\\\\\\\])*?'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.type.enum.js.jsx"},"5":{"name":"entity.name.type.enum.js.jsx"}},"end":"(?<=})","name":"meta.enum.declaration.js.jsx","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.js.jsx"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"keyword.control.as.js.jsx"},"3":{"name":"storage.type.namespace.js.jsx"},"4":{"name":"entity.name.type.module.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"keyword.control.type.js.jsx"},"3":{"name":"keyword.operator.assignment.js.jsx"},"4":{"name":"keyword.control.default.js.jsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.js.jsx","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"keyword.control.type.js.jsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.js.jsx","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"entity.name.function.js.jsx variable.language.this.js.jsx"},"4":{"name":"entity.name.function.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"4":{"name":"variable.parameter.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js.jsx"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.js.jsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.js.jsx"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.js.jsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.js.jsx"},"2":{"name":"keyword.generator.asterisk.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.js.jsx"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.js.jsx"},{"captures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"keyword.control.satisfies.js.jsx"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.js.jsx"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.js.jsx"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.js.jsx"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.js.jsx"},{"match":"[!=]==?","name":"keyword.operator.comparison.js.jsx"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.js.jsx"},{"captures":{"1":{"name":"keyword.operator.logical.js.jsx"},"2":{"name":"keyword.operator.assignment.compound.js.jsx"},"3":{"name":"keyword.operator.arithmetic.js.jsx"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.js.jsx"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.js.jsx"},{"match":"=","name":"keyword.operator.assignment.js.jsx"},{"match":"--","name":"keyword.operator.decrement.js.jsx"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.js.jsx"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.js.jsx"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.js.jsx"},"2":{"name":"keyword.operator.arithmetic.js.jsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.js.jsx"},"2":{"name":"keyword.operator.arithmetic.js.jsx"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#jsx"},{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.js.jsx","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.js.jsx entity.name.function.js.jsx"},"2":{"name":"keyword.operator.optional.js.jsx"},"3":{"name":"keyword.operator.definiteassignment.js.jsx"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.js.jsx variable.object.property.js.jsx"},{"match":"\\\\?","name":"keyword.operator.optional.js.jsx"},{"match":"!","name":"keyword.operator.definiteassignment.js.jsx"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.js.jsx"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.js.jsx"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.js.jsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.js.jsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx"},{"match":"!","name":"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.js.jsx"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.async.js.jsx"},"4":{"name":"storage.type.function.js.jsx"},"5":{"name":"keyword.generator.asterisk.js.jsx"},"6":{"name":"meta.definition.function.js.jsx entity.name.function.js.jsx"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.js.jsx","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"storage.type.function.js.jsx"},"3":{"name":"keyword.generator.asterisk.js.jsx"},"4":{"name":"meta.definition.function.js.jsx entity.name.function.js.jsx"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.js.jsx","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.js.jsx entity.name.function.js.jsx"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.js.jsx"}},"name":"meta.parameters.js.jsx","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js.jsx"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"entity.name.function.js.jsx"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"variable.other.constant.property.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"variable.other.property.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.js.jsx"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.js.jsx"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.js.jsx"},"2":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"keyword.other.js.jsx"}},"name":"string.regexp.js.jsx","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"keyword.control.import.js.jsx"},"4":{"name":"keyword.control.type.js.jsx"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.js.jsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.js.jsx"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"keyword.control.import.js.jsx"},"4":{"name":"keyword.control.type.js.jsx"},"5":{"name":"variable.other.readwrite.alias.js.jsx"},"6":{"name":"keyword.operator.assignment.js.jsx"},"7":{"name":"keyword.control.require.js.jsx"},"8":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"name":"meta.import-equals.external.js.jsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"keyword.control.import.js.jsx"},"4":{"name":"keyword.control.type.js.jsx"},"5":{"name":"variable.other.readwrite.alias.js.jsx"},"6":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.js.jsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.js.jsx"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.js.jsx"},"2":{"name":"keyword.control.assert.js.jsx"},"3":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.js.jsx"},{"match":":","name":"punctuation.separator.key-value.js.jsx"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.block.js.jsx","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.js.jsx"},"2":{"name":"keyword.control.default.js.jsx"},"3":{"name":"constant.language.import-export-all.js.jsx"},"4":{"name":"variable.other.readwrite.js.jsx"},"5":{"name":"string.quoted.alias.js.jsx"},"12":{"name":"keyword.control.as.js.jsx"},"13":{"name":"keyword.control.default.js.jsx"},"14":{"name":"variable.other.readwrite.alias.js.jsx"},"15":{"name":"string.quoted.alias.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.js.jsx"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.js.jsx"},{"captures":{"1":{"name":"keyword.control.type.js.jsx"},"2":{"name":"variable.other.readwrite.alias.js.jsx"},"3":{"name":"string.quoted.alias.js.jsx"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.js.jsx"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"meta.brace.square.js.jsx"},"3":{"name":"variable.parameter.js.jsx"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js.jsx"},"2":{"name":"keyword.operator.optional.js.jsx"}},"name":"meta.indexer.declaration.js.jsx","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"meta.brace.square.js.jsx"},"4":{"name":"entity.name.type.js.jsx"},"5":{"name":"keyword.operator.expression.in.js.jsx"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js.jsx"},"2":{"name":"keyword.operator.type.modifier.js.jsx"},"3":{"name":"keyword.operator.optional.js.jsx"}},"name":"meta.indexer.mappedtype.declaration.js.jsx","patterns":[{"captures":{"1":{"name":"keyword.control.as.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.js.jsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.type.interface.js.jsx"}},"end":"(?<=})","name":"meta.interface.js.jsx","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.js.jsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"jsx":{"patterns":[{"include":"#jsx-tag-without-attributes-in-expression"},{"include":"#jsx-tag-in-expression"}]},"jsx-children":{"patterns":[{"include":"#jsx-tag-without-attributes"},{"include":"#jsx-tag"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-entities"}]},"jsx-entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.js.jsx"},"3":{"name":"punctuation.definition.entity.js.jsx"}},"match":"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.js.jsx"}]},"jsx-evaluated-code":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.js.jsx"}},"contentName":"meta.embedded.expression.js.jsx","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.js.jsx"}},"patterns":[{"include":"#expression"}]},"jsx-string-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.js.jsx"}},"name":"string.quoted.double.js.jsx","patterns":[{"include":"#jsx-entities"}]},"jsx-string-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.js.jsx"}},"name":"string.quoted.single.js.jsx","patterns":[{"include":"#jsx-entities"}]},"jsx-tag":{"begin":"(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(/>)|(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.js.jsx"},"2":{"name":"punctuation.definition.tag.begin.js.jsx"},"3":{"name":"entity.name.tag.namespace.js.jsx"},"4":{"name":"punctuation.separator.namespace.js.jsx"},"5":{"name":"entity.name.tag.js.jsx"},"6":{"name":"support.class.component.js.jsx"},"7":{"name":"punctuation.definition.tag.end.js.jsx"}},"name":"meta.tag.js.jsx","patterns":[{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js.jsx"},"2":{"name":"entity.name.tag.namespace.js.jsx"},"3":{"name":"punctuation.separator.namespace.js.jsx"},"4":{"name":"entity.name.tag.js.jsx"},"5":{"name":"support.class.component.js.jsx"}},"end":"(?=/?>)","patterns":[{"include":"#comment"},{"include":"#type-arguments"},{"include":"#jsx-tag-attributes"}]},{"begin":"(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.end.js.jsx"}},"contentName":"meta.jsx.children.js.jsx","end":"(?=</)","patterns":[{"include":"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{"match":"=(?=\\\\s*(?:[\\"'{]|/\\\\*|//|\\\\n))","name":"keyword.operator.assignment.js.jsx"},"jsx-tag-attribute-name":{"captures":{"1":{"name":"entity.other.attribute-name.namespace.js.jsx"},"2":{"name":"punctuation.separator.namespace.js.jsx"},"3":{"name":"entity.other.attribute-name.js.jsx"}},"match":"\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\s]|/?>|/\\\\*|//)"},"jsx-tag-attributes":{"begin":"\\\\s+","end":"(?=/?>)","name":"meta.tag.attributes.js.jsx","patterns":[{"include":"#comment"},{"include":"#jsx-tag-attribute-name"},{"include":"#jsx-tag-attribute-assignment"},{"include":"#jsx-string-double-quoted"},{"include":"#jsx-string-single-quoted"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{"match":"\\\\S+","name":"invalid.illegal.attribute.js.jsx"},"jsx-tag-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?!<\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,))(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","patterns":[{"include":"#jsx-tag"}]},"jsx-tag-without-attributes":{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js.jsx"},"2":{"name":"entity.name.tag.namespace.js.jsx"},"3":{"name":"punctuation.separator.namespace.js.jsx"},"4":{"name":"entity.name.tag.js.jsx"},"5":{"name":"support.class.component.js.jsx"},"6":{"name":"punctuation.definition.tag.end.js.jsx"}},"contentName":"meta.jsx.children.js.jsx","end":"(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.js.jsx"},"2":{"name":"entity.name.tag.namespace.js.jsx"},"3":{"name":"punctuation.separator.namespace.js.jsx"},"4":{"name":"entity.name.tag.js.jsx"},"5":{"name":"support.class.component.js.jsx"},"6":{"name":"punctuation.definition.tag.end.js.jsx"}},"name":"meta.tag.without-attributes.js.jsx","patterns":[{"include":"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","patterns":[{"include":"#jsx-tag-without-attributes"}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.js.jsx"},"2":{"name":"punctuation.separator.label.js.jsx"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.js.jsx"},"2":{"name":"punctuation.separator.label.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.modifier.async.js.jsx"},"5":{"name":"storage.type.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.modifier.async.js.jsx"},"5":{"name":"keyword.operator.new.js.jsx"},"6":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.modifier.async.js.jsx"},"5":{"name":"storage.type.property.js.jsx"},"6":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.js.jsx entity.name.function.js.jsx"},{"match":"\\\\?","name":"keyword.operator.optional.js.jsx"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$'_\`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.namespace.js.jsx"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.js.jsx","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.js.jsx"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.js.jsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.js.jsx","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.js.jsx"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.js.jsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.js.jsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.js.jsx"},{"captures":{"0":{"name":"constant.numeric.decimal.js.jsx"},"1":{"name":"meta.delimiter.decimal.period.js.jsx"},"2":{"name":"storage.type.numeric.bigint.js.jsx"},"3":{"name":"meta.delimiter.decimal.period.js.jsx"},"4":{"name":"storage.type.numeric.bigint.js.jsx"},"5":{"name":"meta.delimiter.decimal.period.js.jsx"},"6":{"name":"storage.type.numeric.bigint.js.jsx"},"7":{"name":"storage.type.numeric.bigint.js.jsx"},"8":{"name":"meta.delimiter.decimal.period.js.jsx"},"9":{"name":"storage.type.numeric.bigint.js.jsx"},"10":{"name":"meta.delimiter.decimal.period.js.jsx"},"11":{"name":"storage.type.numeric.bigint.js.jsx"},"12":{"name":"meta.delimiter.decimal.period.js.jsx"},"13":{"name":"storage.type.numeric.bigint.js.jsx"},"14":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.js.jsx"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.js.jsx"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.js.jsx"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.js.jsx"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"variable.other.constant.object.property.js.jsx"},"4":{"name":"variable.other.object.property.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.js.jsx"},"2":{"name":"variable.other.object.js.jsx"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.objectliteral.js.jsx","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"storage.type.property.js.jsx"},"3":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"storage.type.property.js.jsx"},"3":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.js.jsx meta.object-literal.key.js.jsx","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"'\`])","end":"(?=:)|((?<=[\\"'\`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.js.jsx meta.object-literal.key.js.jsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.js.jsx meta.object-literal.key.js.jsx","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"'\`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.js.jsx"},"1":{"name":"constant.numeric.decimal.js.jsx"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js.jsx"},{"captures":{"0":{"name":"meta.object-literal.key.js.jsx"},"1":{"name":"entity.name.function.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.js.jsx"},{"captures":{"0":{"name":"meta.object-literal.key.js.jsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js.jsx"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js.jsx"}},"end":"(?=[,}])","name":"meta.object.member.js.jsx","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js.jsx"},{"captures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.js.jsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"keyword.control.satisfies.js.jsx"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.js.jsx","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js.jsx","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx"}},"end":"(?=[,}])","name":"meta.object.member.js.jsx","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"entity.name.function.js.jsx variable.language.this.js.jsx"},"4":{"name":"entity.name.function.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"4":{"name":"variable.parameter.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.js.jsx","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx"}},"contentName":"meta.arrow.js.jsx meta.return.type.arrow.js.jsx","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.js.jsx"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.js.jsx"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.js.jsx"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"invalid.illegal.newline.js.jsx"}},"name":"string.quoted.double.js.jsx","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"invalid.illegal.newline.js.jsx"}},"name":"string.quoted.single.js.jsx","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"keyword.other.js.jsx"}},"name":"string.regexp.js.jsx","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"keyword.other.js.jsx"}},"name":"string.regexp.js.jsx","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.js.jsx","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.js.jsx","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.js.jsx"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.js.jsx"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js.jsx"},"2":{"name":"comment.line.double-slash.js.jsx"},"3":{"name":"punctuation.definition.comment.js.jsx"},"4":{"name":"storage.type.internaldeclaration.js.jsx"},"5":{"name":"punctuation.decorator.internaldeclaration.js.jsx"}},"contentName":"comment.line.double-slash.js.jsx","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.js.jsx"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.js.jsx"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"'\`])","name":"keyword.operator.expression.import.js.jsx"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.js.jsx"},{"captures":{"1":{"name":"keyword.control.import.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"},"4":{"name":"support.variable.property.importmeta.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"},"4":{"name":"support.variable.property.target.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"support.variable.property.js.jsx"},"4":{"name":"support.constant.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.js.jsx"},"2":{"name":"support.type.object.module.js.jsx"},"3":{"name":"punctuation.accessor.js.jsx"},"4":{"name":"punctuation.accessor.optional.js.jsx"},"5":{"name":"support.type.object.module.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"switch-statement.expr.js.jsx","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.js.jsx"},"2":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"name":"switch-expression.expr.js.jsx","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"(?=})","name":"switch-block.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.js.jsx"}},"end":"(?=:)","name":"case-clause.expr.js.jsx","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"},"2":{"name":"meta.block.js.jsx punctuation.definition.block.js.jsx"}},"contentName":"meta.block.js.jsx","end":"}","endCaptures":{"0":{"name":"meta.block.js.jsx punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js.jsx"},"2":{"name":"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},"contentName":"string.template.js.jsx","end":"\`","endCaptures":{"0":{"name":"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","end":"(?=\`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.js.jsx"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js.jsx"}},"end":"(?=\`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js.jsx"}},"contentName":"meta.embedded.line.js.jsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js.jsx"}},"name":"meta.template.expression.js.jsx","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js.jsx"},"2":{"name":"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},"contentName":"string.template.js.jsx","end":"\`","endCaptures":{"0":{"name":"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js.jsx"}},"contentName":"meta.embedded.line.js.jsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js.jsx"}},"name":"meta.template.expression.js.jsx","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.js.jsx"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.js.jsx"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.js.jsx"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.type.js.jsx"},"4":{"name":"entity.name.type.alias.js.jsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.js.jsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"},"2":{"name":"keyword.control.intrinsic.js.jsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js.jsx","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js.jsx","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.js.jsx"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.js.jsx"}},"name":"meta.type.parameters.js.jsx","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.js.jsx"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.js.jsx"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.js.jsx"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.js.jsx storage.modifier.js.jsx"},"2":{"name":"meta.type.constructor.js.jsx keyword.control.new.js.jsx"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.control.new.js.jsx"}},"end":"(?<=\\\\))","name":"meta.type.constructor.js.jsx","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.js.jsx","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.js.jsx"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.js.jsx","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js.jsx"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.js.jsx","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.js.jsx"},"2":{"name":"entity.name.type.js.jsx"},"3":{"name":"keyword.operator.expression.extends.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.js.jsx"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"},"4":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"}},"contentName":"meta.type.parameters.js.jsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.js.jsx"},"2":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"}},"contentName":"meta.type.parameters.js.jsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.js.jsx"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.object.type.js.jsx","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.js.jsx"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.js.jsx"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.js.jsx"},{"match":"([:?])","name":"keyword.operator.ternary.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.js.jsx"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.js.jsx"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.js.jsx"}},"name":"meta.type.parameters.js.jsx","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js.jsx"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.js.jsx"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"name":"meta.type.paren.cover.js.jsx","patterns":[{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"entity.name.function.js.jsx variable.language.this.js.jsx"},"4":{"name":"entity.name.function.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"4":{"name":"variable.parameter.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.js.jsx"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.js.jsx"},"2":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"3":{"name":"variable.parameter.js.jsx"},"4":{"name":"keyword.operator.expression.is.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.js.jsx"},"2":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"3":{"name":"variable.parameter.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.js.jsx"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.js.jsx"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js.jsx"}},"name":"meta.type.tuple.js.jsx","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.js.jsx"},{"captures":{"1":{"name":"entity.name.label.js.jsx"},"2":{"name":"keyword.operator.optional.js.jsx"},"3":{"name":"punctuation.separator.label.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.js.jsx"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.js.jsx"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js.jsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js.jsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.js.jsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx entity.name.function.js.jsx"},"2":{"name":"keyword.operator.definiteassignment.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx"},"2":{"name":"keyword.operator.definiteassignment.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"},"2":{"name":"keyword.operator.definiteassignment.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.js.jsx"}`)),i3=[lz];var cz=Object.freeze(JSON.parse('{"displayName":"Markdown","name":"markdown","patterns":[{"include":"#frontMatter"},{"include":"#block"}],"repository":{"ampersand":{"match":"&(?!([0-9A-Za-z]+|#[0-9]+|#x\\\\h+);)","name":"meta.other.valid-ampersand.markdown"},"block":{"patterns":[{"include":"#separator"},{"include":"#heading"},{"include":"#blockquote"},{"include":"#lists"},{"include":"#fenced_code_block"},{"include":"#raw_block"},{"include":"#link-def"},{"include":"#html"},{"include":"#table"},{"include":"#paragraph"}]},"blockquote":{"begin":"(^|\\\\G) {0,3}(>) ?","captures":{"2":{"name":"punctuation.definition.quote.begin.markdown"}},"name":"markup.quote.markdown","patterns":[{"include":"#block"}],"while":"(^|\\\\G)\\\\s*(>) ?"},"bold":{"begin":"(?<open>(\\\\*\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*\\\\*|(?<!\\\\w)\\\\b__))(?=\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>|\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]?+|\\\\[((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+](( ?\\\\[[^]]*+])|(\\\\([\\\\t ]*+<?(.*?)>?[\\\\t ]*+((?<title>[\\"\'])(.*?)\\\\k<title>)?\\\\))))|(?!(?<=\\\\S)\\\\k<open>).)++(?<=\\\\S)(?=__\\\\b|\\\\*\\\\*)\\\\k<open>)","captures":{"1":{"name":"punctuation.definition.bold.markdown"}},"end":"(?<=\\\\S)(\\\\1)","name":"markup.bold.markdown","patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"},{"include":"#strikethrough"}]},"bracket":{"match":"<(?![!$/?A-Za-z])","name":"meta.other.valid-bracket.markdown"},"escape":{"match":"\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]","name":"constant.character.escape.markdown"},"fenced_code_block":{"patterns":[{"include":"#fenced_code_block_css"},{"include":"#fenced_code_block_basic"},{"include":"#fenced_code_block_ini"},{"include":"#fenced_code_block_java"},{"include":"#fenced_code_block_lua"},{"include":"#fenced_code_block_makefile"},{"include":"#fenced_code_block_perl"},{"include":"#fenced_code_block_r"},{"include":"#fenced_code_block_ruby"},{"include":"#fenced_code_block_php"},{"include":"#fenced_code_block_sql"},{"include":"#fenced_code_block_vs_net"},{"include":"#fenced_code_block_xml"},{"include":"#fenced_code_block_xsl"},{"include":"#fenced_code_block_yaml"},{"include":"#fenced_code_block_dosbatch"},{"include":"#fenced_code_block_clojure"},{"include":"#fenced_code_block_coffee"},{"include":"#fenced_code_block_c"},{"include":"#fenced_code_block_cpp"},{"include":"#fenced_code_block_diff"},{"include":"#fenced_code_block_dockerfile"},{"include":"#fenced_code_block_git_commit"},{"include":"#fenced_code_block_git_rebase"},{"include":"#fenced_code_block_go"},{"include":"#fenced_code_block_groovy"},{"include":"#fenced_code_block_pug"},{"include":"#fenced_code_block_ignore"},{"include":"#fenced_code_block_js"},{"include":"#fenced_code_block_js_regexp"},{"include":"#fenced_code_block_json"},{"include":"#fenced_code_block_jsonc"},{"include":"#fenced_code_block_jsonl"},{"include":"#fenced_code_block_less"},{"include":"#fenced_code_block_objc"},{"include":"#fenced_code_block_swift"},{"include":"#fenced_code_block_scss"},{"include":"#fenced_code_block_perl6"},{"include":"#fenced_code_block_powershell"},{"include":"#fenced_code_block_python"},{"include":"#fenced_code_block_julia"},{"include":"#fenced_code_block_regexp_python"},{"include":"#fenced_code_block_rust"},{"include":"#fenced_code_block_scala"},{"include":"#fenced_code_block_shell"},{"include":"#fenced_code_block_ts"},{"include":"#fenced_code_block_tsx"},{"include":"#fenced_code_block_csharp"},{"include":"#fenced_code_block_fsharp"},{"include":"#fenced_code_block_dart"},{"include":"#fenced_code_block_handlebars"},{"include":"#fenced_code_block_markdown"},{"include":"#fenced_code_block_log"},{"include":"#fenced_code_block_erlang"},{"include":"#fenced_code_block_elixir"},{"include":"#fenced_code_block_latex"},{"include":"#fenced_code_block_bibtex"},{"include":"#fenced_code_block_twig"},{"include":"#fenced_code_block_yang"},{"include":"#fenced_code_block_abap"},{"include":"#fenced_code_block_restructuredtext"},{"include":"#fenced_code_block_unknown"}]},"fenced_code_block_abap":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(abap)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.abap","patterns":[{"include":"source.abap"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_basic":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(html?|shtml|xhtml|inc|tmpl|tpl)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.html","patterns":[{"include":"text.html.basic"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_bibtex":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bibtex)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.bibtex","patterns":[{"include":"text.bibtex"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_c":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([ch])((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.c","patterns":[{"include":"source.c"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_clojure":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cl(?:js??|ojure))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.clojure","patterns":[{"include":"source.clojure"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_coffee":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.coffee","patterns":[{"include":"source.coffee"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_cpp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c(?:pp|\\\\+\\\\+|xx))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.cpp source.cpp","patterns":[{"include":"source.cpp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_csharp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c(?:s|sharp|#))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.csharp","patterns":[{"include":"source.cs"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_css":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(css(?:|.erb))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.css","patterns":[{"include":"source.css"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dart":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dart)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dart","patterns":[{"include":"source.dart"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_diff":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(patch|diff|rej)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.diff","patterns":[{"include":"source.diff"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dockerfile":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([Dd]ockerfile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dockerfile","patterns":[{"include":"source.dockerfile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dosbatch":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bat(?:|ch))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dosbatch","patterns":[{"include":"source.batchfile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_elixir":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(elixir)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.elixir","patterns":[{"include":"source.elixir"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_erlang":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(erlang)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.erlang","patterns":[{"include":"source.erlang"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_fsharp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(f(?:s|sharp|#))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.fsharp","patterns":[{"include":"source.fsharp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_git_commit":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:COMMIT_EDIT|MERGE_)MSG)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.git_commit","patterns":[{"include":"text.git-commit"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_git_rebase":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(git-rebase-todo)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.git_rebase","patterns":[{"include":"text.git-rebase"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_go":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(go(?:|lang))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.go","patterns":[{"include":"source.go"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_groovy":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(g(?:roovy|vy))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.groovy","patterns":[{"include":"source.groovy"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_handlebars":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(h(?:andlebars|bs))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.handlebars","patterns":[{"include":"text.html.handlebars"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ignore":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:git|)ignore)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ignore","patterns":[{"include":"source.ignore"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ini":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ini|conf)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ini","patterns":[{"include":"source.ini"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_java":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(java|bsh)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.java","patterns":[{"include":"source.java"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_js":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsx??|javascript|es6|mjs|cjs|dataviewjs|\\\\{\\\\.js.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.javascript","patterns":[{"include":"source.js"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_js_regexp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(regexp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.js_regexp","patterns":[{"include":"source.js.regexp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_json":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(json5??|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.json","patterns":[{"include":"source.json"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_jsonc":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonc)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.jsonc","patterns":[{"include":"source.json.comments"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_jsonl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonl(?:|ines))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.jsonl","patterns":[{"include":"source.json.lines"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_julia":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(julia|\\\\{\\\\.julia.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.julia","patterns":[{"include":"source.julia"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_latex":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:la|)tex)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.latex","patterns":[{"include":"text.tex.latex"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_less":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(less)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.less","patterns":[{"include":"source.css.less"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_log":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(log)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.log","patterns":[{"include":"text.log"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_lua":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(lua)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.lua","patterns":[{"include":"source.lua"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_makefile":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:[Mm]|GNUm|OCamlM)akefile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.makefile","patterns":[{"include":"source.makefile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_markdown":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(m(?:arkdown|d))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.markdown","patterns":[{"include":"text.html.markdown"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_objc":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|[hm])((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.objc","patterns":[{"include":"source.objc"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_perl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.perl","patterns":[{"include":"source.perl"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_perl6":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.perl6","patterns":[{"include":"source.perl.6"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_php":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(php3??|php4|php5|phpt|phtml|aw|ctp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.php","patterns":[{"include":"text.html.basic"},{"include":"source.php"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_powershell":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(p(?:owershell|s1|sm1|sd1|wsh))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.powershell","patterns":[{"include":"source.powershell"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_pug":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jade|pug)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.pug","patterns":[{"include":"text.pug"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_python":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(python|py3??|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gypi??|\\\\{\\\\.python.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.python","patterns":[{"include":"source.python"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_r":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([RSrs]|Rprofile|\\\\{\\\\.r.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.r","patterns":[{"include":"source.r"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_regexp_python":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(re)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.regexp_python","patterns":[{"include":"source.regexp.python"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_restructuredtext":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(r(?:estructuredtext|st))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.restructuredtext","patterns":[{"include":"source.rst"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ruby":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ruby|rbx??|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ruby","patterns":[{"include":"source.ruby"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_rust":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(rust|rs|\\\\{\\\\.rust.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.rust","patterns":[{"include":"source.rust"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_scala":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(s(?:cala|bt))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.scala","patterns":[{"include":"source.scala"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_scss":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scss)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.scss","patterns":[{"include":"source.css.scss"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_shell":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\{\\\\.bash.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.shellscript","patterns":[{"include":"source.shell"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_sql":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(sql|ddl|dml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.sql","patterns":[{"include":"source.sql"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_swift":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(swift)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.swift","patterns":[{"include":"source.swift"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ts":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(t(?:ypescript|s))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.typescript","patterns":[{"include":"source.ts"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_tsx":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(tsx)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.typescriptreact","patterns":[{"include":"source.tsx"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_twig":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(twig)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.twig","patterns":[{"include":"source.twig"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_unknown":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?=([^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown"},"fenced_code_block_vs_net":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vb)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.vs_net","patterns":[{"include":"source.asp.vb.net"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_xml":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.xml","patterns":[{"include":"text.xml"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_xsl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xslt??)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.xsl","patterns":[{"include":"text.xml.xsl"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_yaml":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ya?ml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.yaml","patterns":[{"include":"source.yaml"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_yang":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(yang)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.yang","patterns":[{"include":"source.yang"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"frontMatter":{"applyEndPatternLast":1,"begin":"\\\\A(?=(-{3,}))","end":"^(?: {0,3}\\\\1-*[\\\\t ]*|[\\\\t ]*\\\\.{3})$","endCaptures":{"0":{"name":"punctuation.definition.end.frontmatter"}},"patterns":[{"begin":"\\\\A(-{3,})(.*)$","beginCaptures":{"1":{"name":"punctuation.definition.begin.frontmatter"},"2":{"name":"comment.frontmatter"}},"contentName":"meta.embedded.block.frontmatter","patterns":[{"include":"source.yaml"}],"while":"^(?!(?: {0,3}\\\\1-*[\\\\t ]*|[\\\\t ]*\\\\.{3})$)"}]},"heading":{"captures":{"1":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{6})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.6.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{5})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.5.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{4})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.4.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{3})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.3.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{2})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.2.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{1})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.1.markdown"}]}},"match":"(?:^|\\\\G) {0,3}(#{1,6}\\\\s+(.*?)(\\\\s+#{1,6})?\\\\s*)$","name":"markup.heading.markdown"},"heading-setext":{"patterns":[{"match":"^(={3,})(?=[\\\\t ]*$\\\\n?)","name":"markup.heading.setext.1.markdown"},{"match":"^(-{3,})(?=[\\\\t ]*$\\\\n?)","name":"markup.heading.setext.2.markdown"}]},"html":{"patterns":[{"begin":"(^|\\\\G)\\\\s*(<!--)","captures":{"1":{"name":"punctuation.definition.comment.html"},"2":{"name":"punctuation.definition.comment.html"}},"end":"(-->)","name":"comment.block.html"},{"begin":"(?i)(^|\\\\G)\\\\s*(?=<(script|style|pre)(\\\\s|$|>)(?!.*?</(script|style|pre)>))","end":"(?i)(.*)((</)(script|style|pre)(>))","endCaptures":{"1":{"patterns":[{"include":"text.html.derivative"}]},"2":{"name":"meta.tag.structure.$4.end.html"},"3":{"name":"punctuation.definition.tag.begin.html"},"4":{"name":"entity.name.tag.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"patterns":[{"begin":"(\\\\s*|$)","patterns":[{"include":"text.html.derivative"}],"while":"(?i)^(?!.*</(script|style|pre)>)"}]},{"begin":"(?i)(^|\\\\G)\\\\s*(?=</?[A-Za-z]+[^\\\\&/;gt\\\\s]*(\\\\s|$|/?>))","patterns":[{"include":"text.html.derivative"}],"while":"^(?!\\\\s*$)"},{"begin":"(^|\\\\G)\\\\s*(?=(<(?:[-0-9A-Za-z](/?>|\\\\s.*?>)|/[-0-9A-Za-z]>))\\\\s*$)","patterns":[{"include":"text.html.derivative"}],"while":"^(?!\\\\s*$)"}]},"image-inline":{"captures":{"1":{"name":"punctuation.definition.link.description.begin.markdown"},"2":{"name":"string.other.link.description.markdown"},"4":{"name":"punctuation.definition.link.description.end.markdown"},"5":{"name":"punctuation.definition.metadata.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.image.markdown"},"9":{"name":"punctuation.definition.link.markdown"},"10":{"name":"markup.underline.link.image.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"},"18":{"name":"string.other.link.description.title.markdown"},"19":{"name":"punctuation.definition.string.begin.markdown"},"20":{"name":"punctuation.definition.string.end.markdown"},"21":{"name":"punctuation.definition.metadata.markdown"}},"match":"(!\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\()[\\\\t ]*((<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|((?<url>(?>[^()\\\\s]+)|\\\\(\\\\g<url>*\\\\))*))[\\\\t ]*(?:((\\\\().+?(\\\\)))|((\\").+?(\\"))|((\').+?(\')))?\\\\s*(\\\\))","name":"meta.image.inline.markdown"},"image-ref":{"captures":{"1":{"name":"punctuation.definition.link.description.begin.markdown"},"2":{"name":"string.other.link.description.markdown"},"4":{"name":"punctuation.definition.link.description.end.markdown"},"5":{"name":"punctuation.definition.constant.markdown"},"6":{"name":"constant.other.reference.link.markdown"},"7":{"name":"punctuation.definition.constant.markdown"}},"match":"(!\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(]) ?(\\\\[)(.*?)(])","name":"meta.image.reference.markdown"},"inline":{"patterns":[{"include":"#ampersand"},{"include":"#bracket"},{"include":"#bold"},{"include":"#italic"},{"include":"#raw"},{"include":"#strikethrough"},{"include":"#escape"},{"include":"#image-inline"},{"include":"#image-ref"},{"include":"#link-email"},{"include":"#link-inet"},{"include":"#link-inline"},{"include":"#link-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref-shortcut"}]},"italic":{"begin":"(?<open>(\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*|(?<!\\\\w)\\\\b_))(?=\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>|\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]?+|\\\\[((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+](( ?\\\\[[^]]*+])|(\\\\([\\\\t ]*+<?(.*?)>?[\\\\t ]*+((?<title>[\\"\'])(.*?)\\\\k<title>)?\\\\))))|\\\\k<open>\\\\k<open>|(?!(?<=\\\\S)\\\\k<open>).)++(?<=\\\\S)(?=_\\\\b|\\\\*)\\\\k<open>)","captures":{"1":{"name":"punctuation.definition.italic.markdown"}},"end":"(?<=\\\\S)(\\\\1)((?!\\\\1)|(?=\\\\1\\\\1))","name":"markup.italic.markdown","patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"},{"include":"#strikethrough"}]},"link-def":{"captures":{"1":{"name":"punctuation.definition.constant.markdown"},"2":{"name":"constant.other.reference.link.markdown"},"3":{"name":"punctuation.definition.constant.markdown"},"4":{"name":"punctuation.separator.key-value.markdown"},"5":{"name":"punctuation.definition.link.markdown"},"6":{"name":"markup.underline.link.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.markdown"},"9":{"name":"string.other.link.description.title.markdown"},"10":{"name":"punctuation.definition.string.begin.markdown"},"11":{"name":"punctuation.definition.string.end.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"}},"match":"\\\\s*(\\\\[)([^]]+?)(])(:)[\\\\t ]*(?:(<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|(\\\\S+?))[\\\\t ]*(?:((\\\\().+?(\\\\)))|((\\").+?(\\"))|((\').+?(\')))?\\\\s*$","name":"meta.link.reference.def.markdown"},"link-email":{"captures":{"1":{"name":"punctuation.definition.link.markdown"},"2":{"name":"markup.underline.link.markdown"},"4":{"name":"punctuation.definition.link.markdown"}},"match":"(<)((?:mailto:)?[!#-\'*+\\\\--9=?A-Z^-~]+@[-0-9A-Za-z]+(?:\\\\.[-0-9A-Za-z]+)*)(>)","name":"meta.link.email.lt-gt.markdown"},"link-inet":{"captures":{"1":{"name":"punctuation.definition.link.markdown"},"2":{"name":"markup.underline.link.markdown"},"3":{"name":"punctuation.definition.link.markdown"}},"match":"(<)((?:https?|ftp)://.*?)(>)","name":"meta.link.inet.markdown"},"link-inline":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown","patterns":[{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#strikethrough"},{"include":"#image-inline"}]},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.metadata.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.markdown"},"9":{"name":"punctuation.definition.link.markdown"},"10":{"name":"markup.underline.link.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"},"18":{"name":"string.other.link.description.title.markdown"},"19":{"name":"punctuation.definition.string.begin.markdown"},"20":{"name":"punctuation.definition.string.end.markdown"},"21":{"name":"punctuation.definition.metadata.markdown"}},"match":"(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\()[\\\\t ]*((<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|((?<url>(?>[^()\\\\s]+)|\\\\(\\\\g<url>*\\\\))*))[\\\\t ]*(?:((\\\\()[^()]*(\\\\)))|((\\")[^\\"]*(\\"))|((\')[^\']*(\')))?\\\\s*(\\\\))","name":"meta.link.inline.markdown"},"link-ref":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown","patterns":[{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#strikethrough"},{"include":"#image-inline"}]},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.constant.begin.markdown"},"6":{"name":"constant.other.reference.link.markdown"},"7":{"name":"punctuation.definition.constant.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\[)([^]]*+)(])","name":"meta.link.reference.markdown"},"link-ref-literal":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown"},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.constant.begin.markdown"},"6":{"name":"punctuation.definition.constant.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(]) ?(\\\\[)(])","name":"meta.link.reference.literal.markdown"},"link-ref-shortcut":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown"},"3":{"name":"punctuation.definition.link.title.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?:[^]\\\\[\\\\\\\\\\\\s]|\\\\\\\\[]\\\\[])+?)((?<!\\\\\\\\)])","name":"meta.link.reference.markdown"},"list_paragraph":{"begin":"(^|\\\\G)(?=\\\\S)(?![*->]\\\\s|[0-9]+\\\\.\\\\s)","name":"meta.paragraph.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"},{"include":"#heading-setext"}],"while":"(^|\\\\G)(?!\\\\s*$|#| {0,3}([-*>_] {2,}){3,}[\\\\t ]*$\\\\n?| {0,3}[*->]| {0,3}[0-9]+\\\\.)"},"lists":{"patterns":[{"begin":"(^|\\\\G)( {0,3})([-*+])([\\\\t ])","beginCaptures":{"3":{"name":"punctuation.definition.list.begin.markdown"}},"name":"markup.list.unnumbered.markdown","patterns":[{"include":"#block"},{"include":"#list_paragraph"}],"while":"((^|\\\\G)( {2,4}|\\\\t))|^([\\\\t ]*)$"},{"begin":"(^|\\\\G)( {0,3})([0-9]+[).])([\\\\t ])","beginCaptures":{"3":{"name":"punctuation.definition.list.begin.markdown"}},"name":"markup.list.numbered.markdown","patterns":[{"include":"#block"},{"include":"#list_paragraph"}],"while":"((^|\\\\G)( {2,4}|\\\\t))|^([\\\\t ]*)$"}]},"paragraph":{"begin":"(^|\\\\G) {0,3}(?=[^\\\\t\\\\n ])","name":"meta.paragraph.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"},{"include":"#heading-setext"}],"while":"(^|\\\\G)((?=\\\\s*[-=]{3,}\\\\s*$)| {4,}(?=[^\\\\t\\\\n ]))"},"raw":{"captures":{"1":{"name":"punctuation.definition.raw.markdown"},"3":{"name":"punctuation.definition.raw.markdown"}},"match":"(`+)((?:[^`]|(?!(?<!`)\\\\1(?!`))`)*+)(\\\\1)","name":"markup.inline.raw.string.markdown"},"raw_block":{"begin":"(^|\\\\G)( {4}|\\\\t)","name":"markup.raw.block.markdown","while":"(^|\\\\G)( {4}|\\\\t)"},"separator":{"match":"(^|\\\\G) {0,3}([-*_])( {0,2}\\\\2){2,}[\\\\t ]*$\\\\n?","name":"meta.separator.markdown"},"strikethrough":{"captures":{"1":{"name":"punctuation.definition.strikethrough.markdown"},"2":{"patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"}]},"3":{"name":"punctuation.definition.strikethrough.markdown"}},"match":"(?<!\\\\\\\\)(~{2,})(?!(?<=\\\\w~~)_)((?:[^~]|(?!(?<![\\\\\\\\~])\\\\1(?!~))~)*+)(\\\\1)(?!(?<=_\\\\1)\\\\w)","name":"markup.strikethrough.markdown"},"table":{"begin":"(^|\\\\G)(\\\\|)(?=[^|].+\\\\|\\\\s*$)","beginCaptures":{"2":{"name":"punctuation.definition.table.markdown"}},"name":"markup.table.markdown","patterns":[{"match":"\\\\|","name":"punctuation.definition.table.markdown"},{"captures":{"1":{"name":"punctuation.separator.table.markdown"}},"match":"(?<=\\\\|)\\\\s*(:?-+:?)\\\\s*(?=\\\\|)"},{"captures":{"1":{"patterns":[{"include":"#inline"}]}},"match":"(?<=\\\\|)\\\\s*(?=\\\\S)((\\\\\\\\\\\\||[^|])+)(?<=\\\\S)\\\\s*(?=\\\\|)"}],"while":"(^|\\\\G)(?=\\\\|)"}},"scopeName":"text.html.markdown","embeddedLangs":[],"aliases":["md"],"embeddedLangsLazy":["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","jsonl","less","objective-c","swift","scss","raku","powershell","python","julia","regexp","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","log","erlang","elixir","latex","bibtex","abap","rst","html-derivative"]}')),ab=[cz];var uz=Object.freeze(JSON.parse(`{"displayName":"Python","name":"python","patterns":[{"include":"#statement"},{"include":"#expression"}],"repository":{"annotated-parameter":{"begin":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(:)","beginCaptures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"punctuation.separator.annotation.python"}},"end":"(,)|(?=\\\\))","endCaptures":{"1":{"name":"punctuation.separator.parameters.python"}},"patterns":[{"include":"#expression"},{"match":"=(?!=)","name":"keyword.operator.assignment.python"}]},"assignment-operator":{"match":"<<=|>>=|//=|\\\\*\\\\*=|\\\\+=|-=|/=|@=|\\\\*=|%=|~=|\\\\^=|&=|\\\\|=|=(?!=)","name":"keyword.operator.assignment.python"},"backticks":{"begin":"\`","end":"\`|(?<!\\\\\\\\)(\\\\n)","name":"invalid.deprecated.backtick.python","patterns":[{"include":"#expression"}]},"builtin-callables":{"patterns":[{"include":"#illegal-names"},{"include":"#illegal-object-name"},{"include":"#builtin-exceptions"},{"include":"#builtin-functions"},{"include":"#builtin-types"}]},"builtin-exceptions":{"match":"(?<!\\\\.)\\\\b((Arithmetic|Assertion|Attribute|Buffer|BlockingIO|BrokenPipe|ChildProcess|(Connection(Aborted|Refused|Reset)?)|EOF|Environment|FileExists|FileNotFound|FloatingPoint|IO|Import|Indentation|Index|Interrupted|IsADirectory|NotADirectory|Permission|ProcessLookup|Timeout|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow|Reference|Runtime|Recursion|Syntax|System|Tab|Type|UnboundLocal|Unicode(Encode|Decode|Translate)?|Value|Windows|ZeroDivision|ModuleNotFound)Error|((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes|Resource)?Warning|SystemExit|Stop(Async)?Iteration|KeyboardInterrupt|GeneratorExit|(Base)?Exception)\\\\b","name":"support.type.exception.python"},"builtin-functions":{"patterns":[{"match":"(?<!\\\\.)\\\\b(__import__|abs|aiter|all|any|anext|ascii|bin|breakpoint|callable|chr|compile|copyright|credits|delattr|dir|divmod|enumerate|eval|exec|exit|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|license|locals|map|max|memoryview|min|next|oct|open|ord|pow|print|quit|range|reload|repr|reversed|round|setattr|sorted|sum|vars|zip)\\\\b","name":"support.function.builtin.python"},{"match":"(?<!\\\\.)\\\\b(file|reduce|intern|raw_input|unicode|cmp|basestring|execfile|long|xrange)\\\\b","name":"variable.legacy.builtin.python"}]},"builtin-possible-callables":{"patterns":[{"include":"#builtin-callables"},{"include":"#magic-names"}]},"builtin-types":{"match":"(?<!\\\\.)\\\\b(bool|bytearray|bytes|classmethod|complex|dict|float|frozenset|int|list|object|property|set|slice|staticmethod|str|tuple|type|super)\\\\b","name":"support.type.python"},"call-wrapper-inheritance":{"begin":"\\\\b(?=([_[:alpha:]]\\\\w*)\\\\s*(\\\\())","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"name":"meta.function-call.python","patterns":[{"include":"#inheritance-name"},{"include":"#function-arguments"}]},"class-declaration":{"patterns":[{"begin":"\\\\s*(class)\\\\s+(?=[_[:alpha:]]\\\\w*\\\\s*([(:]))","beginCaptures":{"1":{"name":"storage.type.class.python"}},"end":"(:)","endCaptures":{"1":{"name":"punctuation.section.class.begin.python"}},"name":"meta.class.python","patterns":[{"include":"#class-name"},{"include":"#class-inheritance"}]}]},"class-inheritance":{"begin":"(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.inheritance.begin.python"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.inheritance.end.python"}},"name":"meta.class.inheritance.python","patterns":[{"match":"(\\\\*\\\\*?)","name":"keyword.operator.unpacking.arguments.python"},{"match":",","name":"punctuation.separator.inheritance.python"},{"match":"=(?!=)","name":"keyword.operator.assignment.python"},{"match":"\\\\bmetaclass\\\\b","name":"support.type.metaclass.python"},{"include":"#illegal-names"},{"include":"#class-kwarg"},{"include":"#call-wrapper-inheritance"},{"include":"#expression-base"},{"include":"#member-access-class"},{"include":"#inheritance-identifier"}]},"class-kwarg":{"captures":{"1":{"name":"entity.other.inherited-class.python variable.parameter.class.python"},"2":{"name":"keyword.operator.assignment.python"}},"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(=)(?!=)"},"class-name":{"patterns":[{"include":"#illegal-object-name"},{"include":"#builtin-possible-callables"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"entity.name.type.class.python"}]},"codetags":{"captures":{"1":{"name":"keyword.codetag.notation.python"}},"match":"\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\b"},"comments":{"patterns":[{"begin":"#\\\\s*(type:)\\\\s*+(?!$|#)","beginCaptures":{"0":{"name":"meta.typehint.comment.python"},"1":{"name":"comment.typehint.directive.notation.python"}},"contentName":"meta.typehint.comment.python","end":"$|(?=#)","name":"comment.line.number-sign.python","patterns":[{"match":"\\\\Gignore(?=\\\\s*(?:$|#))","name":"comment.typehint.ignore.notation.python"},{"match":"(?<!\\\\.)\\\\b(bool|bytes|float|int|object|str|List|Dict|Iterable|Sequence|Set|FrozenSet|Callable|Union|Tuple|Any|None)\\\\b","name":"comment.typehint.type.notation.python"},{"match":"([]()*,.=\\\\[]|(->))","name":"comment.typehint.punctuation.notation.python"},{"match":"([_[:alpha:]]\\\\w*)","name":"comment.typehint.variable.notation.python"}]},{"include":"#comments-base"}]},"comments-base":{"begin":"(#)","beginCaptures":{"1":{"name":"punctuation.definition.comment.python"}},"end":"$()","name":"comment.line.number-sign.python","patterns":[{"include":"#codetags"}]},"comments-string-double-three":{"begin":"(#)","beginCaptures":{"1":{"name":"punctuation.definition.comment.python"}},"end":"($|(?=\\"\\"\\"))","name":"comment.line.number-sign.python","patterns":[{"include":"#codetags"}]},"comments-string-single-three":{"begin":"(#)","beginCaptures":{"1":{"name":"punctuation.definition.comment.python"}},"end":"($|(?='''))","name":"comment.line.number-sign.python","patterns":[{"include":"#codetags"}]},"curly-braces":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.dict.begin.python"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.dict.end.python"}},"patterns":[{"match":":","name":"punctuation.separator.dict.python"},{"include":"#expression"}]},"decorator":{"begin":"^\\\\s*((@))\\\\s*(?=[_[:alpha:]]\\\\w*)","beginCaptures":{"1":{"name":"entity.name.function.decorator.python"},"2":{"name":"punctuation.definition.decorator.python"}},"end":"(\\\\))(.*?)(?=\\\\s*(?:#|$))|(?=[\\\\n#])","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"},"2":{"name":"invalid.illegal.decorator.python"}},"name":"meta.function.decorator.python","patterns":[{"include":"#decorator-name"},{"include":"#function-arguments"}]},"decorator-name":{"patterns":[{"include":"#builtin-callables"},{"include":"#illegal-object-name"},{"captures":{"2":{"name":"punctuation.separator.period.python"}},"match":"([_[:alpha:]]\\\\w*)|(\\\\.)","name":"entity.name.function.decorator.python"},{"include":"#line-continuation"},{"captures":{"1":{"name":"invalid.illegal.decorator.python"}},"match":"\\\\s*([^#(.\\\\\\\\_[:alpha:]\\\\s].*?)(?=#|$)","name":"invalid.illegal.decorator.python"}]},"docstring":{"patterns":[{"begin":"('''|\\"\\"\\")","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\1)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"}},"name":"string.quoted.docstring.multi.python","patterns":[{"include":"#docstring-prompt"},{"include":"#codetags"},{"include":"#docstring-guts-unicode"}]},{"begin":"([Rr])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"}},"name":"string.quoted.docstring.raw.multi.python","patterns":[{"include":"#string-consume-escape"},{"include":"#docstring-prompt"},{"include":"#codetags"}]},{"begin":"([\\"'])","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\1)|(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.docstring.single.python","patterns":[{"include":"#codetags"},{"include":"#docstring-guts-unicode"}]},{"begin":"([Rr])([\\"'])","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)|(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.docstring.raw.single.python","patterns":[{"include":"#string-consume-escape"},{"include":"#codetags"}]}]},"docstring-guts-unicode":{"patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"}]},"docstring-prompt":{"captures":{"1":{"name":"keyword.control.flow.python"}},"match":"(?:^|\\\\G)\\\\s*((?:>>>|\\\\.\\\\.\\\\.)\\\\s)(?=\\\\s*\\\\S)"},"docstring-statement":{"begin":"^(?=\\\\s*[Rr]?('''|\\"\\"\\"|[\\"']))","end":"((?<=\\\\1)|^)(?!\\\\s*[Rr]?('''|\\"\\"\\"|[\\"']))","patterns":[{"include":"#docstring"}]},"double-one-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"double-one-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"double-one-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#double-one-regexp-character-set"},{"include":"#double-one-regexp-comments"},{"include":"#regexp-flags"},{"include":"#double-one-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#double-one-regexp-lookahead"},{"include":"#double-one-regexp-lookahead-negative"},{"include":"#double-one-regexp-lookbehind"},{"include":"#double-one-regexp-lookbehind-negative"},{"include":"#double-one-regexp-conditional"},{"include":"#double-one-regexp-parentheses-non-capturing"},{"include":"#double-one-regexp-parentheses"}]},"double-one-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-three-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"double-three-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"double-three-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#double-three-regexp-character-set"},{"include":"#double-three-regexp-comments"},{"include":"#regexp-flags"},{"include":"#double-three-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#double-three-regexp-lookahead"},{"include":"#double-three-regexp-lookahead-negative"},{"include":"#double-three-regexp-lookbehind"},{"include":"#double-three-regexp-lookbehind-negative"},{"include":"#double-three-regexp-conditional"},{"include":"#double-three-regexp-parentheses-non-capturing"},{"include":"#double-three-regexp-parentheses"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"ellipsis":{"match":"\\\\.\\\\.\\\\.","name":"constant.other.ellipsis.python"},"escape-sequence":{"match":"\\\\\\\\(x\\\\h{2}|[0-7]{1,3}|[\\"'\\\\\\\\abfnrtv])","name":"constant.character.escape.python"},"escape-sequence-unicode":{"patterns":[{"match":"\\\\\\\\(u\\\\h{4}|U\\\\h{8}|N\\\\{[\\\\w\\\\s]+?})","name":"constant.character.escape.python"}]},"expression":{"patterns":[{"include":"#expression-base"},{"include":"#member-access"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b"}]},"expression-bare":{"patterns":[{"include":"#backticks"},{"include":"#illegal-anno"},{"include":"#literal"},{"include":"#regexp"},{"include":"#string"},{"include":"#lambda"},{"include":"#generator"},{"include":"#illegal-operator"},{"include":"#operator"},{"include":"#curly-braces"},{"include":"#item-access"},{"include":"#list"},{"include":"#odd-function-call"},{"include":"#round-braces"},{"include":"#function-call"},{"include":"#builtin-functions"},{"include":"#builtin-types"},{"include":"#builtin-exceptions"},{"include":"#magic-names"},{"include":"#special-names"},{"include":"#illegal-names"},{"include":"#special-variables"},{"include":"#ellipsis"},{"include":"#punctuation"},{"include":"#line-continuation"}]},"expression-base":{"patterns":[{"include":"#comments"},{"include":"#expression-bare"},{"include":"#line-continuation"}]},"f-expression":{"patterns":[{"include":"#expression-bare"},{"include":"#member-access"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b"}]},"fregexp-base-expression":{"patterns":[{"include":"#fregexp-quantifier"},{"include":"#fstring-formatting-braces"},{"match":"\\\\{.*?}"},{"include":"#regexp-base-common"}]},"fregexp-quantifier":{"match":"\\\\{\\\\{(\\\\d+|\\\\d+,(\\\\d+)?|,\\\\d+)}}","name":"keyword.operator.quantifier.regexp"},"fstring-fnorm-quoted-multi-line":{"begin":"\\\\b([Ff])([BUbu])?('''|\\"\\"\\")","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.multi.python storage.type.string.python"},"2":{"name":"invalid.illegal.prefix.python"},"3":{"name":"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"}},"end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"include":"#fstring-multi-core"}]},"fstring-fnorm-quoted-single-line":{"begin":"\\\\b([Ff])([BUbu])?(([\\"']))","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.single.python storage.type.string.python"},"2":{"name":"invalid.illegal.prefix.python"},"3":{"name":"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"}},"end":"(\\\\3)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"include":"#fstring-single-core"}]},"fstring-formatting":{"patterns":[{"include":"#fstring-formatting-braces"},{"include":"#fstring-formatting-singe-brace"}]},"fstring-formatting-braces":{"patterns":[{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"},"2":{"name":"invalid.illegal.brace.python"},"3":{"name":"constant.character.format.placeholder.other.python"}},"match":"(\\\\{)(\\\\s*?)(})"},{"match":"(\\\\{\\\\{|}})","name":"constant.character.escape.python"}]},"fstring-formatting-singe-brace":{"match":"(}(?!}))","name":"invalid.illegal.brace.python"},"fstring-guts":{"patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"},{"include":"#fstring-formatting"}]},"fstring-illegal-multi-brace":{"patterns":[{"include":"#impossible"}]},"fstring-illegal-single-brace":{"begin":"(\\\\{)(?=[^\\\\n}]*$\\\\n?)","beginCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"end":"(})|(?=\\\\n)","endCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"patterns":[{"include":"#fstring-terminator-single"},{"include":"#f-expression"}]},"fstring-multi-brace":{"begin":"(\\\\{)","beginCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"end":"(})","endCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"patterns":[{"include":"#fstring-terminator-multi"},{"include":"#f-expression"}]},"fstring-multi-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|'''|\\"\\"\\"))|\\\\n","name":"string.interpolated.python string.quoted.multi.python"},"fstring-normf-quoted-multi-line":{"begin":"\\\\b([BUbu])([Ff])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"string.interpolated.python string.quoted.multi.python storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python string.quoted.multi.python"}},"end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"include":"#fstring-multi-core"}]},"fstring-normf-quoted-single-line":{"begin":"\\\\b([BUbu])([Ff])(([\\"']))","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"string.interpolated.python string.quoted.single.python storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python string.quoted.single.python"}},"end":"(\\\\3)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"include":"#fstring-single-core"}]},"fstring-raw-guts":{"patterns":[{"include":"#string-consume-escape"},{"include":"#fstring-formatting"}]},"fstring-raw-multi-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|'''|\\"\\"\\"))|\\\\n","name":"string.interpolated.python string.quoted.raw.multi.python"},"fstring-raw-quoted-multi-line":{"begin":"\\\\b([Rr][Ff]|[Ff][Rr])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python string.quoted.raw.multi.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-raw-guts"},{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"include":"#fstring-raw-multi-core"}]},"fstring-raw-quoted-single-line":{"begin":"\\\\b([Rr][Ff]|[Ff][Rr])(([\\"']))","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.raw.single.python storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python string.quoted.raw.single.python"}},"end":"(\\\\2)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-raw-guts"},{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"include":"#fstring-raw-single-core"}]},"fstring-raw-single-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|([\\"'])|((?<!\\\\\\\\)\\\\n)))|\\\\n","name":"string.interpolated.python string.quoted.raw.single.python"},"fstring-single-brace":{"begin":"(\\\\{)","beginCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"end":"(})|(?=\\\\n)","endCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"patterns":[{"include":"#fstring-terminator-single"},{"include":"#f-expression"}]},"fstring-single-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|([\\"'])|((?<!\\\\\\\\)\\\\n)))|\\\\n","name":"string.interpolated.python string.quoted.single.python"},"fstring-terminator-multi":{"patterns":[{"match":"(=(![ars])?)(?=})","name":"storage.type.format.python"},{"match":"(=?![ars])(?=})","name":"storage.type.format.python"},{"captures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"match":"(=?(?:![ars])?)(:\\\\w?[<=>^]?[- +]?#?\\\\d*,?(\\\\.\\\\d+)?[%EFGXb-gnosx]?)(?=})"},{"include":"#fstring-terminator-multi-tail"}]},"fstring-terminator-multi-tail":{"begin":"(=?(?:![ars])?)(:)(?=.*?\\\\{)","beginCaptures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"end":"(?=})","patterns":[{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"match":"([%EFGXb-gnosx])(?=})","name":"storage.type.format.python"},{"match":"(\\\\.\\\\d+)","name":"storage.type.format.python"},{"match":"(,)","name":"storage.type.format.python"},{"match":"(\\\\d+)","name":"storage.type.format.python"},{"match":"(#)","name":"storage.type.format.python"},{"match":"([- +])","name":"storage.type.format.python"},{"match":"([<=>^])","name":"storage.type.format.python"},{"match":"(\\\\w)","name":"storage.type.format.python"}]},"fstring-terminator-single":{"patterns":[{"match":"(=(![ars])?)(?=})","name":"storage.type.format.python"},{"match":"(=?![ars])(?=})","name":"storage.type.format.python"},{"captures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"match":"(=?(?:![ars])?)(:\\\\w?[<=>^]?[- +]?#?\\\\d*,?(\\\\.\\\\d+)?[%EFGXb-gnosx]?)(?=})"},{"include":"#fstring-terminator-single-tail"}]},"fstring-terminator-single-tail":{"begin":"(=?(?:![ars])?)(:)(?=.*?\\\\{)","beginCaptures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"end":"(?=})|(?=\\\\n)","patterns":[{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"match":"([%EFGXb-gnosx])(?=})","name":"storage.type.format.python"},{"match":"(\\\\.\\\\d+)","name":"storage.type.format.python"},{"match":"(,)","name":"storage.type.format.python"},{"match":"(\\\\d+)","name":"storage.type.format.python"},{"match":"(#)","name":"storage.type.format.python"},{"match":"([- +])","name":"storage.type.format.python"},{"match":"([<=>^])","name":"storage.type.format.python"},{"match":"(\\\\w)","name":"storage.type.format.python"}]},"function-arguments":{"begin":"(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.arguments.begin.python"}},"contentName":"meta.function-call.arguments.python","end":"(?=\\\\))(?!\\\\)\\\\s*\\\\()","patterns":[{"match":"(,)","name":"punctuation.separator.arguments.python"},{"captures":{"1":{"name":"keyword.operator.unpacking.arguments.python"}},"match":"(?:(?<=[(,])|^)\\\\s*(\\\\*{1,2})"},{"include":"#lambda-incomplete"},{"include":"#illegal-names"},{"captures":{"1":{"name":"variable.parameter.function-call.python"},"2":{"name":"keyword.operator.assignment.python"}},"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(=)(?!=)"},{"match":"=(?!=)","name":"keyword.operator.assignment.python"},{"include":"#expression"},{"captures":{"1":{"name":"punctuation.definition.arguments.end.python"},"2":{"name":"punctuation.definition.arguments.begin.python"}},"match":"\\\\s*(\\\\))\\\\s*(\\\\()"}]},"function-call":{"begin":"\\\\b(?=([_[:alpha:]]\\\\w*)\\\\s*(\\\\())","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"name":"meta.function-call.python","patterns":[{"include":"#special-variables"},{"include":"#function-name"},{"include":"#function-arguments"}]},"function-declaration":{"begin":"\\\\s*(?:\\\\b(async)\\\\s+)?\\\\b(def)\\\\s+(?=[_[:alpha:]]\\\\p{word}*\\\\s*\\\\()","beginCaptures":{"1":{"name":"storage.type.function.async.python"},"2":{"name":"storage.type.function.python"}},"end":"(:|(?=[\\\\n\\"#']))","endCaptures":{"1":{"name":"punctuation.section.function.begin.python"}},"name":"meta.function.python","patterns":[{"include":"#function-def-name"},{"include":"#parameters"},{"include":"#line-continuation"},{"include":"#return-annotation"}]},"function-def-name":{"patterns":[{"include":"#illegal-object-name"},{"include":"#builtin-possible-callables"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"entity.name.function.python"}]},"function-name":{"patterns":[{"include":"#builtin-possible-callables"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"meta.function-call.generic.python"}]},"generator":{"begin":"\\\\bfor\\\\b","beginCaptures":{"0":{"name":"keyword.control.flow.python"}},"end":"\\\\bin\\\\b","endCaptures":{"0":{"name":"keyword.control.flow.python"}},"patterns":[{"include":"#expression"}]},"illegal-anno":{"match":"->","name":"invalid.illegal.annotation.python"},"illegal-names":{"captures":{"1":{"name":"keyword.control.flow.python"},"2":{"name":"keyword.control.import.python"}},"match":"\\\\b(?:(and|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|in|is|(?<=\\\\.)lambda|lambda(?=\\\\s*[.=])|nonlocal|not|or|pass|raise|return|try|while|with|yield)|(as|import))\\\\b"},"illegal-object-name":{"match":"\\\\b(True|False|None)\\\\b","name":"keyword.illegal.name.python"},"illegal-operator":{"patterns":[{"match":"&&|\\\\|\\\\||--|\\\\+\\\\+","name":"invalid.illegal.operator.python"},{"match":"[$?]","name":"invalid.illegal.operator.python"},{"match":"!\\\\b","name":"invalid.illegal.operator.python"}]},"import":{"patterns":[{"begin":"\\\\b(?<!\\\\.)(from)\\\\b(?=.+import)","beginCaptures":{"1":{"name":"keyword.control.import.python"}},"end":"$|(?=import)","patterns":[{"match":"\\\\.+","name":"punctuation.separator.period.python"},{"include":"#expression"}]},{"begin":"\\\\b(?<!\\\\.)(import)\\\\b","beginCaptures":{"1":{"name":"keyword.control.import.python"}},"end":"$","patterns":[{"match":"\\\\b(?<!\\\\.)as\\\\b","name":"keyword.control.import.python"},{"include":"#expression"}]}]},"impossible":{"match":"$.^"},"inheritance-identifier":{"captures":{"1":{"name":"entity.other.inherited-class.python"}},"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b"},"inheritance-name":{"patterns":[{"include":"#lambda-incomplete"},{"include":"#builtin-possible-callables"},{"include":"#inheritance-identifier"}]},"item-access":{"patterns":[{"begin":"\\\\b(?=[_[:alpha:]]\\\\w*\\\\s*\\\\[)","end":"(])","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"name":"meta.item-access.python","patterns":[{"include":"#item-name"},{"include":"#item-index"},{"include":"#expression"}]}]},"item-index":{"begin":"(\\\\[)","beginCaptures":{"1":{"name":"punctuation.definition.arguments.begin.python"}},"contentName":"meta.item-access.arguments.python","end":"(?=])","patterns":[{"match":":","name":"punctuation.separator.slice.python"},{"include":"#expression"}]},"item-name":{"patterns":[{"include":"#special-variables"},{"include":"#builtin-functions"},{"include":"#special-names"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"meta.indexed-name.python"}]},"lambda":{"patterns":[{"captures":{"1":{"name":"keyword.control.flow.python"}},"match":"((?<=\\\\.)lambda|lambda(?=\\\\s*[.=]))"},{"captures":{"1":{"name":"storage.type.function.lambda.python"}},"match":"\\\\b(lambda)\\\\s*?(?=[\\\\n,]|$)"},{"begin":"\\\\b(lambda)\\\\b","beginCaptures":{"1":{"name":"storage.type.function.lambda.python"}},"contentName":"meta.function.lambda.parameters.python","end":"(:)|(\\\\n)","endCaptures":{"1":{"name":"punctuation.section.function.lambda.begin.python"}},"name":"meta.lambda-function.python","patterns":[{"match":"/","name":"keyword.operator.positional.parameter.python"},{"match":"(\\\\*\\\\*?)","name":"keyword.operator.unpacking.parameter.python"},{"include":"#lambda-nested-incomplete"},{"include":"#illegal-names"},{"captures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"punctuation.separator.parameters.python"}},"match":"([_[:alpha:]]\\\\w*)\\\\s*(?:(,)|(?=:|$))"},{"include":"#comments"},{"include":"#backticks"},{"include":"#illegal-anno"},{"include":"#lambda-parameter-with-default"},{"include":"#line-continuation"},{"include":"#illegal-operator"}]}]},"lambda-incomplete":{"match":"\\\\blambda(?=\\\\s*[),])","name":"storage.type.function.lambda.python"},"lambda-nested-incomplete":{"match":"\\\\blambda(?=\\\\s*[),:])","name":"storage.type.function.lambda.python"},"lambda-parameter-with-default":{"begin":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(=)","beginCaptures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"keyword.operator.python"}},"end":"(,)|(?=:|$)","endCaptures":{"1":{"name":"punctuation.separator.parameters.python"}},"patterns":[{"include":"#expression"}]},"line-continuation":{"patterns":[{"captures":{"1":{"name":"punctuation.separator.continuation.line.python"},"2":{"name":"invalid.illegal.line.continuation.python"}},"match":"(\\\\\\\\)\\\\s*(\\\\S.*$\\\\n?)"},{"begin":"(\\\\\\\\)\\\\s*$\\\\n?","beginCaptures":{"1":{"name":"punctuation.separator.continuation.line.python"}},"end":"(?=^\\\\s*$)|(?!(\\\\s*[Rr]?('''|\\"\\"\\"|[\\"']))|\\\\G()$)","patterns":[{"include":"#regexp"},{"include":"#string"}]}]},"list":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.list.begin.python"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.list.end.python"}},"patterns":[{"include":"#expression"}]},"literal":{"patterns":[{"match":"\\\\b(True|False|None|NotImplemented|Ellipsis)\\\\b","name":"constant.language.python"},{"include":"#number"}]},"loose-default":{"begin":"(=)","beginCaptures":{"1":{"name":"keyword.operator.python"}},"end":"(,)|(?=\\\\))","endCaptures":{"1":{"name":"punctuation.separator.parameters.python"}},"patterns":[{"include":"#expression"}]},"magic-function-names":{"captures":{"1":{"name":"support.function.magic.python"}},"match":"\\\\b(__(?:abs|add|aenter|aexit|aiter|and|anext|await|bool|call|ceil|class_getitem|cmp|coerce|complex|contains|copy|deepcopy|del|delattr|delete|delitem|delslice|dir|div|divmod|enter|eq|exit|float|floor|floordiv|format|get??|getattr|getattribute|getinitargs|getitem|getnewargs|getslice|getstate|gt|hash|hex|iadd|iand|idiv|ifloordiv||ilshift|imod|imul|index|init|instancecheck|int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|len??|long|lshift|lt|missing|mod|mul|neg??|new|next|nonzero|oct|or|pos|pow|radd|rand|rdiv|rdivmod|reduce|reduce_ex|repr|reversed|rfloordiv||rlshift|rmod|rmul|ror|round|rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|set_name|setslice|setstate|sizeof|str|sub|subclasscheck|truediv|trunc|unicode|xor|matmul|rmatmul|imatmul|init_subclass|set_name|fspath|bytes|prepare|length_hint)__)\\\\b"},"magic-names":{"patterns":[{"include":"#magic-function-names"},{"include":"#magic-variable-names"}]},"magic-variable-names":{"captures":{"1":{"name":"support.variable.magic.python"}},"match":"\\\\b(__(?:all|annotations|bases|builtins|class|closure|code|debug|defaults|dict|doc|file|func|globals|kwdefaults|match_args|members|metaclass|methods|module|mro|mro_entries|name|qualname|post_init|self|signature|slots|subclasses|version|weakref|wrapped|classcell|spec|path|package|future|traceback)__)\\\\b"},"member-access":{"begin":"(\\\\.)\\\\s*(?!\\\\.)","beginCaptures":{"1":{"name":"punctuation.separator.period.python"}},"end":"(?<=\\\\S)(?=\\\\W)|(^|(?<=\\\\s))(?=[^\\\\\\\\\\\\w\\\\s])|$","name":"meta.member.access.python","patterns":[{"include":"#function-call"},{"include":"#member-access-base"},{"include":"#member-access-attribute"}]},"member-access-attribute":{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"meta.attribute.python"},"member-access-base":{"patterns":[{"include":"#magic-names"},{"include":"#illegal-names"},{"include":"#illegal-object-name"},{"include":"#special-names"},{"include":"#line-continuation"},{"include":"#item-access"}]},"member-access-class":{"begin":"(\\\\.)\\\\s*(?!\\\\.)","beginCaptures":{"1":{"name":"punctuation.separator.period.python"}},"end":"(?<=\\\\S)(?=\\\\W)|$","name":"meta.member.access.python","patterns":[{"include":"#call-wrapper-inheritance"},{"include":"#member-access-base"},{"include":"#inheritance-identifier"}]},"number":{"name":"constant.numeric.python","patterns":[{"include":"#number-float"},{"include":"#number-dec"},{"include":"#number-hex"},{"include":"#number-oct"},{"include":"#number-bin"},{"include":"#number-long"},{"match":"\\\\b[0-9]+\\\\w+","name":"invalid.illegal.name.python"}]},"number-bin":{"captures":{"1":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])(0[Bb])(_?[01])+\\\\b","name":"constant.numeric.bin.python"},"number-dec":{"captures":{"1":{"name":"storage.type.imaginary.number.python"},"2":{"name":"invalid.illegal.dec.python"}},"match":"(?<![.\\\\w])(?:[1-9](?:_?[0-9])*|0+|[0-9](?:_?[0-9])*([Jj])|0([0-9]+)(?![.Ee]))\\\\b","name":"constant.numeric.dec.python"},"number-float":{"captures":{"1":{"name":"storage.type.imaginary.number.python"}},"match":"(?<!\\\\w)(?:(?:\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\.)(?:[Ee][-+]?[0-9](?:_?[0-9])*)?|[0-9](?:_?[0-9])*[Ee][-+]?[0-9](?:_?[0-9])*)([Jj])?\\\\b","name":"constant.numeric.float.python"},"number-hex":{"captures":{"1":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])(0[Xx])(_?\\\\h)+\\\\b","name":"constant.numeric.hex.python"},"number-long":{"captures":{"2":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])([1-9][0-9]*|0)([Ll])\\\\b","name":"constant.numeric.bin.python"},"number-oct":{"captures":{"1":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])(0[Oo])(_?[0-7])+\\\\b","name":"constant.numeric.oct.python"},"odd-function-call":{"begin":"(?<=[])])\\\\s*(?=\\\\()","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"patterns":[{"include":"#function-arguments"}]},"operator":{"captures":{"1":{"name":"keyword.operator.logical.python"},"2":{"name":"keyword.control.flow.python"},"3":{"name":"keyword.operator.bitwise.python"},"4":{"name":"keyword.operator.arithmetic.python"},"5":{"name":"keyword.operator.comparison.python"},"6":{"name":"keyword.operator.assignment.python"}},"match":"\\\\b(?<!\\\\.)(?:(and|or|not|in|is)|(for|if|else|await|yield(?:\\\\s+from)?))(?!\\\\s*:)\\\\b|(<<|>>|[\\\\&^|~])|(\\\\*\\\\*|[-%*+]|//|[/@])|(!=|==|>=|<=|[<>])|(:=)"},"parameter-special":{"captures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"variable.parameter.function.language.special.self.python"},"3":{"name":"variable.parameter.function.language.special.cls.python"},"4":{"name":"punctuation.separator.parameters.python"}},"match":"\\\\b((self)|(cls))\\\\b\\\\s*(?:(,)|(?=\\\\)))"},"parameters":{"begin":"(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.parameters.begin.python"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.parameters.end.python"}},"name":"meta.function.parameters.python","patterns":[{"match":"/","name":"keyword.operator.positional.parameter.python"},{"match":"(\\\\*\\\\*?)","name":"keyword.operator.unpacking.parameter.python"},{"include":"#lambda-incomplete"},{"include":"#illegal-names"},{"include":"#illegal-object-name"},{"include":"#parameter-special"},{"captures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"punctuation.separator.parameters.python"}},"match":"([_[:alpha:]]\\\\w*)\\\\s*(?:(,)|(?=[\\\\n#)=]))"},{"include":"#comments"},{"include":"#loose-default"},{"include":"#annotated-parameter"}]},"punctuation":{"patterns":[{"match":":","name":"punctuation.separator.colon.python"},{"match":",","name":"punctuation.separator.element.python"}]},"regexp":{"patterns":[{"include":"#regexp-single-three-line"},{"include":"#regexp-double-three-line"},{"include":"#regexp-single-one-line"},{"include":"#regexp-double-one-line"}]},"regexp-backreference":{"captures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"},"2":{"name":"entity.name.tag.named.backreference.regexp"},"3":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"}},"match":"(\\\\()(\\\\?P=\\\\w+(?:\\\\s+\\\\p{alnum}+)?)(\\\\))","name":"meta.backreference.named.regexp"},"regexp-backreference-number":{"captures":{"1":{"name":"entity.name.tag.backreference.regexp"}},"match":"(\\\\\\\\[1-9]\\\\d?)","name":"meta.backreference.regexp"},"regexp-base-common":{"patterns":[{"match":"\\\\.","name":"support.other.match.any.regexp"},{"match":"\\\\^","name":"support.other.match.begin.regexp"},{"match":"\\\\$","name":"support.other.match.end.regexp"},{"match":"[*+?]\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.disjunction.regexp"},{"include":"#regexp-escape-sequence"}]},"regexp-base-expression":{"patterns":[{"include":"#regexp-quantifier"},{"include":"#regexp-base-common"}]},"regexp-charecter-set-escapes":{"patterns":[{"match":"\\\\\\\\[\\\\\\\\abfnrtv]","name":"constant.character.escape.regexp"},{"include":"#regexp-escape-special"},{"match":"\\\\\\\\([0-7]{1,3})","name":"constant.character.escape.regexp"},{"include":"#regexp-escape-character"},{"include":"#regexp-escape-unicode"},{"include":"#regexp-escape-catchall"}]},"regexp-double-one-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\")","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\")|(?<!\\\\\\\\)(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.single.python","patterns":[{"include":"#double-one-regexp-expression"}]},"regexp-double-three-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\"\\"\\")","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\"\\"\\")","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.multi.python","patterns":[{"include":"#double-three-regexp-expression"}]},"regexp-escape-catchall":{"match":"\\\\\\\\(.|\\\\n)","name":"constant.character.escape.regexp"},"regexp-escape-character":{"match":"\\\\\\\\(x\\\\h{2}|0[0-7]{1,2}|[0-7]{3})","name":"constant.character.escape.regexp"},"regexp-escape-sequence":{"patterns":[{"include":"#regexp-escape-special"},{"include":"#regexp-escape-character"},{"include":"#regexp-escape-unicode"},{"include":"#regexp-backreference-number"},{"include":"#regexp-escape-catchall"}]},"regexp-escape-special":{"match":"\\\\\\\\([ABDSWZbdsw])","name":"support.other.escape.special.regexp"},"regexp-escape-unicode":{"match":"\\\\\\\\(u\\\\h{4}|U\\\\h{8})","name":"constant.character.unicode.regexp"},"regexp-flags":{"match":"\\\\(\\\\?[Laimsux]+\\\\)","name":"storage.modifier.flag.regexp"},"regexp-quantifier":{"match":"\\\\{(\\\\d+|\\\\d+,(\\\\d+)?|,\\\\d+)}","name":"keyword.operator.quantifier.regexp"},"regexp-single-one-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(')","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(')|(?<!\\\\\\\\)(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.single.python","patterns":[{"include":"#single-one-regexp-expression"}]},"regexp-single-three-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(''')","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(''')","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.multi.python","patterns":[{"include":"#single-three-regexp-expression"}]},"return-annotation":{"begin":"(->)","beginCaptures":{"1":{"name":"punctuation.separator.annotation.result.python"}},"end":"(?=:)","patterns":[{"include":"#expression"}]},"round-braces":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.parenthesis.begin.python"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.parenthesis.end.python"}},"patterns":[{"include":"#expression"}]},"semicolon":{"patterns":[{"match":";$","name":"invalid.deprecated.semicolon.python"}]},"single-one-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"single-one-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"single-one-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#single-one-regexp-character-set"},{"include":"#single-one-regexp-comments"},{"include":"#regexp-flags"},{"include":"#single-one-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#single-one-regexp-lookahead"},{"include":"#single-one-regexp-lookahead-negative"},{"include":"#single-one-regexp-lookbehind"},{"include":"#single-one-regexp-lookbehind-negative"},{"include":"#single-one-regexp-conditional"},{"include":"#single-one-regexp-parentheses-non-capturing"},{"include":"#single-one-regexp-parentheses"}]},"single-one-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-three-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?='''))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"single-three-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"single-three-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#single-three-regexp-character-set"},{"include":"#single-three-regexp-comments"},{"include":"#regexp-flags"},{"include":"#single-three-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#single-three-regexp-lookahead"},{"include":"#single-three-regexp-lookahead-negative"},{"include":"#single-three-regexp-lookbehind"},{"include":"#single-three-regexp-lookbehind-negative"},{"include":"#single-three-regexp-conditional"},{"include":"#single-three-regexp-parentheses-non-capturing"},{"include":"#single-three-regexp-parentheses"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"special-names":{"match":"\\\\b(_*\\\\p{upper}[_\\\\d]*\\\\p{upper})[[:upper:]\\\\d]*(_\\\\w*)?\\\\b","name":"constant.other.caps.python"},"special-variables":{"captures":{"1":{"name":"variable.language.special.self.python"},"2":{"name":"variable.language.special.cls.python"}},"match":"\\\\b(?<!\\\\.)(?:(self)|(cls))\\\\b"},"statement":{"patterns":[{"include":"#import"},{"include":"#class-declaration"},{"include":"#function-declaration"},{"include":"#generator"},{"include":"#statement-keyword"},{"include":"#assignment-operator"},{"include":"#decorator"},{"include":"#docstring-statement"},{"include":"#semicolon"}]},"statement-keyword":{"patterns":[{"match":"\\\\b((async\\\\s+)?\\\\s*def)\\\\b","name":"storage.type.function.python"},{"match":"\\\\b(?<!\\\\.)as\\\\b(?=.*[:\\\\\\\\])","name":"keyword.control.flow.python"},{"match":"\\\\b(?<!\\\\.)as\\\\b","name":"keyword.control.import.python"},{"match":"\\\\b(?<!\\\\.)(async|continue|del|assert|break|finally|for|from|elif|else|if|except|pass|raise|return|try|while|with)\\\\b","name":"keyword.control.flow.python"},{"match":"\\\\b(?<!\\\\.)(global|nonlocal)\\\\b","name":"storage.modifier.declaration.python"},{"match":"\\\\b(?<!\\\\.)(class)\\\\b","name":"storage.type.class.python"},{"captures":{"1":{"name":"keyword.control.flow.python"}},"match":"^\\\\s*(case|match)(?=\\\\s*([-\\"#'(+:\\\\[{\\\\w\\\\d]|$))\\\\b"}]},"string":{"patterns":[{"include":"#string-quoted-multi-line"},{"include":"#string-quoted-single-line"},{"include":"#string-bin-quoted-multi-line"},{"include":"#string-bin-quoted-single-line"},{"include":"#string-raw-quoted-multi-line"},{"include":"#string-raw-quoted-single-line"},{"include":"#string-raw-bin-quoted-multi-line"},{"include":"#string-raw-bin-quoted-single-line"},{"include":"#fstring-fnorm-quoted-multi-line"},{"include":"#fstring-fnorm-quoted-single-line"},{"include":"#fstring-normf-quoted-multi-line"},{"include":"#fstring-normf-quoted-single-line"},{"include":"#fstring-raw-quoted-multi-line"},{"include":"#fstring-raw-quoted-single-line"}]},"string-bin-quoted-multi-line":{"begin":"\\\\b([Bb])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.binary.multi.python","patterns":[{"include":"#string-entity"}]},"string-bin-quoted-single-line":{"begin":"\\\\b([Bb])(([\\"']))","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.binary.single.python","patterns":[{"include":"#string-entity"}]},"string-brace-formatting":{"patterns":[{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"},"3":{"name":"storage.type.format.python"},"4":{"name":"storage.type.format.python"}},"match":"(\\\\{\\\\{|}}|\\\\{\\\\w*(\\\\.[_[:alpha:]]\\\\w*|\\\\[[^]\\"']+])*(![ars])?(:\\\\w?[<=>^]?[- +]?#?\\\\d*,?(\\\\.\\\\d+)?[%EFGXb-gnosx]?)?})","name":"meta.format.brace.python"},{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"},"3":{"name":"storage.type.format.python"},"4":{"name":"storage.type.format.python"}},"match":"(\\\\{\\\\w*(\\\\.[_[:alpha:]]\\\\w*|\\\\[[^]\\"']+])*(![ars])?(:)[^\\\\n\\"'{}]*(?:\\\\{[^\\\\n\\"'}]*?}[^\\\\n\\"'{}]*)*})","name":"meta.format.brace.python"}]},"string-consume-escape":{"match":"\\\\\\\\[\\\\n\\"'\\\\\\\\]"},"string-entity":{"patterns":[{"include":"#escape-sequence"},{"include":"#string-line-continuation"},{"include":"#string-formatting"}]},"string-formatting":{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"match":"(%(\\\\([\\\\w\\\\s]*\\\\))?[- #+0]*(\\\\d+|\\\\*)?(\\\\.(\\\\d+|\\\\*))?([Lhl])?[%EFGXa-giorsux])","name":"meta.format.percent.python"},"string-line-continuation":{"match":"\\\\\\\\$","name":"constant.language.python"},"string-multi-bad-brace1-formatting-raw":{"begin":"(?=\\\\{%(.*?(?!'''|\\"\\"\\"))%})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#string-consume-escape"}]},"string-multi-bad-brace1-formatting-unicode":{"begin":"(?=\\\\{%(.*?(?!'''|\\"\\"\\"))%})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"}]},"string-multi-bad-brace2-formatting-raw":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!'''|\\"\\"\\")[^!.:\\\\[}\\\\w]).*?(?!'''|\\"\\"\\")})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"}]},"string-multi-bad-brace2-formatting-unicode":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!'''|\\"\\"\\")[^!.:\\\\[}\\\\w]).*?(?!'''|\\"\\"\\")})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#string-entity"}]},"string-quoted-multi-line":{"begin":"(?:\\\\b([Rr])(?=[Uu]))?([Uu])?('''|\\"\\"\\")","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.multi.python","patterns":[{"include":"#string-multi-bad-brace1-formatting-unicode"},{"include":"#string-multi-bad-brace2-formatting-unicode"},{"include":"#string-unicode-guts"}]},"string-quoted-single-line":{"begin":"(?:\\\\b([Rr])(?=[Uu]))?([Uu])?(([\\"']))","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\3)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.single.python","patterns":[{"include":"#string-single-bad-brace1-formatting-unicode"},{"include":"#string-single-bad-brace2-formatting-unicode"},{"include":"#string-unicode-guts"}]},"string-raw-bin-guts":{"patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"}]},"string-raw-bin-quoted-multi-line":{"begin":"\\\\b(R[Bb]|[Bb]R)('''|\\"\\"\\")","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.binary.multi.python","patterns":[{"include":"#string-raw-bin-guts"}]},"string-raw-bin-quoted-single-line":{"begin":"\\\\b(R[Bb]|[Bb]R)(([\\"']))","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.binary.single.python","patterns":[{"include":"#string-raw-bin-guts"}]},"string-raw-guts":{"patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"},{"include":"#string-brace-formatting"}]},"string-raw-quoted-multi-line":{"begin":"\\\\b(([Uu]R)|(R))('''|\\"\\"\\")","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\4)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.multi.python","patterns":[{"include":"#string-multi-bad-brace1-formatting-raw"},{"include":"#string-multi-bad-brace2-formatting-raw"},{"include":"#string-raw-guts"}]},"string-raw-quoted-single-line":{"begin":"\\\\b(([Uu]R)|(R))(([\\"']))","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\4)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.single.python","patterns":[{"include":"#string-single-bad-brace1-formatting-raw"},{"include":"#string-single-bad-brace2-formatting-raw"},{"include":"#string-raw-guts"}]},"string-single-bad-brace1-formatting-raw":{"begin":"(?=\\\\{%(.*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n)))%})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#string-consume-escape"}]},"string-single-bad-brace1-formatting-unicode":{"begin":"(?=\\\\{%(.*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n)))%})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"}]},"string-single-bad-brace2-formatting-raw":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))[^!.:\\\\[}\\\\w]).*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"}]},"string-single-bad-brace2-formatting-unicode":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))[^!.:\\\\[}\\\\w]).*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#string-entity"}]},"string-unicode-guts":{"patterns":[{"include":"#escape-sequence-unicode"},{"include":"#string-entity"},{"include":"#string-brace-formatting"}]}},"scopeName":"source.python","aliases":["py"]}`)),s3=[uz];var pz=Object.freeze(JSON.parse(`{"displayName":"Shell","name":"shellscript","patterns":[{"include":"#initial_context"}],"repository":{"alias_statement":{"begin":"[\\\\t ]*+(alias)[\\\\t ]*+((?:((?<!\\\\w)-\\\\w+)\\\\b[\\\\t ]*+)*)[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))","beginCaptures":{"1":{"name":"storage.type.alias.shell"},"2":{"patterns":[{"match":"(?<!\\\\w)-\\\\w+\\\\b","name":"string.unquoted.argument.shell constant.other.option.shell"}]},"3":{"name":"string.unquoted.argument.shell constant.other.option.shell"},"4":{"name":"variable.other.assignment.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"variable.other.assignment.shell"},"7":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"8":{"name":"punctuation.definition.array.access.shell"},"9":{"name":"keyword.operator.assignment.shell"},"10":{"name":"keyword.operator.assignment.compound.shell"},"11":{"name":"keyword.operator.assignment.compound.shell"}},"end":"(?=[\\\\t ]|$)|(?:(?:(?:(;)|(&&))|(\\\\|\\\\|))|(&))","endCaptures":{"1":{"name":"punctuation.terminator.statement.semicolon.shell"},"2":{"name":"punctuation.separator.statement.and.shell"},"3":{"name":"punctuation.separator.statement.or.shell"},"4":{"name":"punctuation.separator.statement.background.shell"}},"name":"meta.expression.assignment.alias.shell","patterns":[{"include":"#normal_context"}]},"argument":{"begin":"[\\\\t ]++(?![\\\\n#\\\\&(\\\\[|]|$|;)","beginCaptures":{},"end":"(?=[\\\\t \\\\&;|]|$|[\\\\n)\`])","endCaptures":{},"name":"meta.argument.shell","patterns":[{"include":"#argument_context"},{"include":"#line_continuation"}]},"argument_context":{"patterns":[{"captures":{"1":{"name":"string.unquoted.argument.shell","patterns":[{"match":"\\\\*","name":"variable.language.special.wildcard.shell"},{"include":"#variable"},{"include":"#numeric_literal"},{"captures":{"1":{"name":"constant.language.$1.shell"}},"match":"(?<!\\\\w)\\\\b(true|false)\\\\b(?!\\\\w)"}]}},"match":"[\\\\t ]*+([^\\\\t\\\\n \\"$\\\\&-);<>\\\\\\\\\`|]+(?!>))"},{"include":"#normal_context"}]},"arithmetic_double":{"patterns":[{"begin":"\\\\(\\\\(","beginCaptures":{"0":{"name":"punctuation.section.arithmetic.double.shell"}},"end":"\\\\)\\\\s*\\\\)","endCaptures":{"0":{"name":"punctuation.section.arithmetic.double.shell"}},"name":"meta.arithmetic.shell","patterns":[{"include":"#math"},{"include":"#string"}]}]},"arithmetic_no_dollar":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.section.arithmetic.single.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.arithmetic.single.shell"}},"name":"meta.arithmetic.shell","patterns":[{"include":"#math"},{"include":"#string"}]}]},"array_access_inline":{"captures":{"1":{"name":"punctuation.section.array.shell"},"2":{"patterns":[{"include":"#special_expansion"},{"include":"#string"},{"include":"#variable"}]},"3":{"name":"punctuation.section.array.shell"}},"match":"(\\\\[)([^]\\\\[]+)(])"},"array_value":{"begin":"[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))[\\\\t ]*+(\\\\()","beginCaptures":{"1":{"name":"variable.other.assignment.shell"},"2":{"name":"punctuation.definition.array.access.shell"},"3":{"name":"variable.other.assignment.shell"},"4":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"keyword.operator.assignment.shell"},"7":{"name":"keyword.operator.assignment.compound.shell"},"8":{"name":"keyword.operator.assignment.compound.shell"},"9":{"name":"punctuation.definition.array.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.array.shell"}},"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"variable.other.assignment.array.shell entity.other.attribute-name.shell"},"2":{"name":"keyword.operator.assignment.shell punctuation.definition.assignment.shell"}},"match":"((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(=)"},{"captures":{"1":{"name":"punctuation.definition.bracket.named-array.shell"},"2":{"name":"string.unquoted.shell entity.other.attribute-name.bracket.shell"},"3":{"name":"punctuation.definition.bracket.named-array.shell"},"4":{"name":"punctuation.definition.assignment.shell"}},"match":"(\\\\[)(.+?)(])(=)"},{"include":"#normal_context"},{"include":"#simple_unquoted"}]},"assignment_statement":{"patterns":[{"include":"#array_value"},{"include":"#modified_assignment_statement"},{"include":"#normal_assignment_statement"}]},"basic_command_name":{"captures":{"1":{"name":"storage.modifier.$1.shell"},"2":{"name":"entity.name.function.call.shell entity.name.command.shell","patterns":[{"match":"(?<!\\\\w)(?:continue|return|break)(?!\\\\w)","name":"keyword.control.$0.shell"},{"match":"(?<!\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\w)(?!-)","name":"support.function.builtin.shell"},{"include":"#variable"}]}},"match":"(?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;])(?!nocorrect |nocorrect\\\\t|nocorrect$|readonly |readonly\\\\t|readonly$|function |function\\\\t|function$|foreach |foreach\\\\t|foreach$|coproc |coproc\\\\t|coproc$|logout |logout\\\\t|logout$|export |export\\\\t|export$|select |select\\\\t|select$|repeat |repeat\\\\t|repeat$|pushd |pushd\\\\t|pushd$|until |until\\\\t|until$|while |while\\\\t|while$|local |local\\\\t|local$|case |case\\\\t|case$|done |done\\\\t|done$|elif |elif\\\\t|elif$|else |else\\\\t|else$|esac |esac\\\\t|esac$|popd |popd\\\\t|popd$|then |then\\\\t|then$|time |time\\\\t|time$|for |for\\\\t|for$|end |end\\\\t|end$|fi |fi\\\\t|fi$|do |do\\\\t|do$|in |in\\\\t|in$|if |if\\\\t|if$)(?:((?<=^|[\\\\t \\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\t \\\\&;]|$))|((?![\\"']|\\\\\\\\\\\\n?$)[^\\\\t\\\\n\\\\r !\\"'<>]+?))(?:(?=[\\\\t ])|(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\))","name":"meta.statement.command.name.basic.shell"},"block_comment":{"begin":"\\\\s*+(/\\\\*)","beginCaptures":{"1":{"name":"punctuation.definition.comment.begin.shell"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.shell"}},"name":"comment.block.shell"},"boolean":{"match":"\\\\b(?:true|false)\\\\b","name":"constant.language.$0.shell"},"case_statement":{"begin":"\\\\b(case)\\\\b[\\\\t ]*+(.+?)[\\\\t ]*+\\\\b(in)\\\\b","beginCaptures":{"1":{"name":"keyword.control.case.shell"},"2":{"patterns":[{"include":"#initial_context"}]},"3":{"name":"keyword.control.in.shell"}},"end":"\\\\besac\\\\b","endCaptures":{"0":{"name":"keyword.control.esac.shell"}},"name":"meta.case.shell","patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.operator.pattern.case.default.shell"}},"match":"[\\\\t ]*+(\\\\* *\\\\))"},{"begin":"(?<!\\\\))(?![\\\\t ]*+(?:esac\\\\b|$))","beginCaptures":{},"end":"(?=\\\\besac\\\\b)|(\\\\))","endCaptures":{"1":{"name":"keyword.operator.pattern.case.shell"}},"name":"meta.case.entry.pattern.shell","patterns":[{"include":"#case_statement_context"}]},{"begin":"(?<=\\\\))","beginCaptures":{},"end":"(;;)|(?=\\\\besac\\\\b)","endCaptures":{"1":{"name":"punctuation.terminator.statement.case.shell"}},"name":"meta.case.entry.body.shell","patterns":[{"include":"#typical_statements"},{"include":"#initial_context"}]}]},"case_statement_context":{"patterns":[{"match":"\\\\*","name":"variable.language.special.quantifier.star.shell keyword.operator.quantifier.star.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{"match":"\\\\+","name":"variable.language.special.quantifier.plus.shell keyword.operator.quantifier.plus.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{"match":"\\\\?","name":"variable.language.special.quantifier.question.shell keyword.operator.quantifier.question.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{"match":"@","name":"variable.language.special.at.shell keyword.operator.at.shell punctuation.definition.regex.at.shell"},{"match":"\\\\|","name":"keyword.operator.orvariable.language.special.or.shell keyword.operator.alternation.ruby.shell punctuation.definition.regex.alternation.shell punctuation.separator.regex.alternation.shell"},{"match":"\\\\\\\\.","name":"constant.character.escape.shell"},{"match":"(?<=\\\\tin| in|[\\\\t ]|;;)\\\\(","name":"keyword.operator.pattern.case.shell"},{"begin":"(?<=\\\\S)(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.group.shell punctuation.definition.regex.group.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.definition.regex.group.shell"}},"name":"meta.parenthese.shell","patterns":[{"include":"#case_statement_context"}]},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.character-class.shell"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.character-class.shell"}},"name":"string.regexp.character-class.shell","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.shell"}]},{"include":"#string"},{"match":"[^\\\\t\\\\n )*?@\\\\[|]","name":"string.unquoted.pattern.shell string.regexp.unquoted.shell"}]},"command_name_range":{"begin":"\\\\G","beginCaptures":{},"end":"(?=[\\\\t \\\\&;|]|$|[\\\\n)\`])|(?=<)","endCaptures":{},"name":"meta.statement.command.name.shell","patterns":[{"match":"(?<!\\\\w)(?:continue|return|break)(?!\\\\w)","name":"entity.name.function.call.shell entity.name.command.shell keyword.control.$0.shell"},{"match":"(?<!\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\w)(?!-)","name":"entity.name.function.call.shell entity.name.command.shell support.function.builtin.shell"},{"include":"#variable"},{"captures":{"1":{"name":"entity.name.function.call.shell entity.name.command.shell"}},"match":"(?<!\\\\w)(?<=\\\\G|[\\"')}])([^\\\\t\\\\n\\\\r \\"\\\\&');->\`{|]+)"},{"begin":"(?:\\\\G|(?<![\\\\t\\\\n #\\\\&;{|]))(\\\\$?)((\\")|('))","beginCaptures":{"1":{"name":"meta.statement.command.name.quoted.shell punctuation.definition.string.shell entity.name.function.call.shell entity.name.command.shell"},"2":{},"3":{"name":"meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"},"4":{"name":"meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"}},"end":"(?<!\\\\G)(?<=\\\\2)","endCaptures":{},"patterns":[{"include":"#continuation_of_single_quoted_command_name"},{"include":"#continuation_of_double_quoted_command_name"}]},{"include":"#line_continuation"},{"include":"#simple_unquoted"}]},"command_statement":{"begin":"[\\\\t ]*+(?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;])(?!nocorrect |nocorrect\\\\t|nocorrect$|readonly |readonly\\\\t|readonly$|function |function\\\\t|function$|foreach |foreach\\\\t|foreach$|coproc |coproc\\\\t|coproc$|logout |logout\\\\t|logout$|export |export\\\\t|export$|select |select\\\\t|select$|repeat |repeat\\\\t|repeat$|pushd |pushd\\\\t|pushd$|until |until\\\\t|until$|while |while\\\\t|while$|local |local\\\\t|local$|case |case\\\\t|case$|done |done\\\\t|done$|elif |elif\\\\t|elif$|else |else\\\\t|else$|esac |esac\\\\t|esac$|popd |popd\\\\t|popd$|then |then\\\\t|then$|time |time\\\\t|time$|for |for\\\\t|for$|end |end\\\\t|end$|fi |fi\\\\t|fi$|do |do\\\\t|do$|in |in\\\\t|in$|if |if\\\\t|if$)(?!\\\\\\\\\\\\n?$)","beginCaptures":{},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.command.shell","patterns":[{"include":"#command_name_range"},{"include":"#line_continuation"},{"include":"#option"},{"include":"#argument"},{"include":"#string"},{"include":"#heredoc"}]},"comment":{"captures":{"1":{"name":"comment.line.number-sign.shell meta.shebang.shell"},"2":{"name":"punctuation.definition.comment.shebang.shell"},"3":{"name":"comment.line.number-sign.shell"},"4":{"name":"punctuation.definition.comment.shell"}},"match":"(?:^|[\\\\t ]++)(?:((#!).*)|((#).*))"},"comments":{"patterns":[{"include":"#block_comment"},{"include":"#line_comment"}]},"compound-command":{"patterns":[{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"name":"meta.scope.logical-expression.shell","patterns":[{"include":"#logical-expression"},{"include":"#initial_context"}]},{"begin":"(?<=\\\\s|^)\\\\{(?=\\\\s|$)","beginCaptures":{"0":{"name":"punctuation.definition.group.shell"}},"end":"(?<=^|;)\\\\s*(})","endCaptures":{"1":{"name":"punctuation.definition.group.shell"}},"name":"meta.scope.group.shell","patterns":[{"include":"#initial_context"}]}]},"continuation_of_double_quoted_command_name":{"begin":"\\\\G(?<=\\")","beginCaptures":{},"contentName":"meta.statement.command.name.continuation string.quoted.double entity.name.function.call entity.name.command","end":"\\"","endCaptures":{"0":{"name":"string.quoted.double.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"}},"patterns":[{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"include":"#variable"},{"include":"#interpolation"}]},"continuation_of_single_quoted_command_name":{"begin":"\\\\G(?<=')","beginCaptures":{},"contentName":"meta.statement.command.name.continuation string.quoted.single entity.name.function.call entity.name.command","end":"'","endCaptures":{"0":{"name":"string.quoted.single.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"}}},"custom_command_names":{"patterns":[]},"custom_commands":{"patterns":[]},"double_quote_context":{"patterns":[{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"include":"#variable"},{"include":"#interpolation"}]},"double_quote_escape_char":{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},"floating_keyword":{"patterns":[{"match":"(?<=^|[\\\\t \\\\&;])(?:then|elif|else|done|end|do|if|fi)(?=[\\\\t \\\\&;]|$)","name":"keyword.control.$0.shell"}]},"for_statement":{"patterns":[{"begin":"\\\\b(for)\\\\b[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))[\\\\t ]*+\\\\b(in)\\\\b","beginCaptures":{"1":{"name":"keyword.control.for.shell"},"2":{"name":"variable.other.for.shell"},"3":{"name":"keyword.control.in.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.for.in.shell","patterns":[{"include":"#string"},{"include":"#simple_unquoted"},{"include":"#normal_context"}]},{"begin":"\\\\b(for)\\\\b","beginCaptures":{"1":{"name":"keyword.control.for.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.for.shell","patterns":[{"include":"#arithmetic_double"},{"include":"#normal_context"}]}]},"function_definition":{"applyEndPatternLast":1,"begin":"[\\\\t ]*+(?:\\\\b(function)\\\\b[\\\\t ]*+([^\\\\t\\\\n\\\\r \\"'()=]+)(?:(\\\\()[\\\\t ]*+(\\\\)))?|([^\\\\t\\\\n\\\\r \\"'()=]+)[\\\\t ]*+(\\\\()[\\\\t ]*+(\\\\)))","beginCaptures":{"1":{"name":"storage.type.function.shell"},"2":{"name":"entity.name.function.shell"},"3":{"name":"punctuation.definition.arguments.shell"},"4":{"name":"punctuation.definition.arguments.shell"},"5":{"name":"entity.name.function.shell"},"6":{"name":"punctuation.definition.arguments.shell"},"7":{"name":"punctuation.definition.arguments.shell"}},"end":"(?<=[)}])","endCaptures":{},"name":"meta.function.shell","patterns":[{"match":"\\\\G[\\\\t\\\\n ]"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"name":"meta.function.body.shell","patterns":[{"include":"#initial_context"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"name":"meta.function.body.shell","patterns":[{"include":"#initial_context"}]},{"include":"#initial_context"}]},"heredoc":{"patterns":[{"begin":"((?<!<)<<-)[\\\\t ]*+([\\"'])[\\\\t ]*+([^\\"']+?)(?=[\\"\\\\&';<\\\\s])(\\\\2)(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.quote.shell"},"3":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"4":{"name":"punctuation.definition.string.heredoc.quote.shell"},"5":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.quoted.heredoc.indent.$3","end":"^\\\\t*\\\\3(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.$0.shell"}},"patterns":[]},{"begin":"((?<!<)<<(?!<))[\\\\t ]*+([\\"'])[\\\\t ]*+([^\\"']+?)(?=[\\"\\\\&';<\\\\s])(\\\\2)(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.quote.shell"},"3":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"4":{"name":"punctuation.definition.string.heredoc.quote.shell"},"5":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.quoted.heredoc.no-indent.$3","end":"^\\\\3(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.delimiter.shell"}},"patterns":[]},{"begin":"((?<!<)<<-)[\\\\t ]*+([^\\\\t \\"']+)(?=[\\"\\\\&';<\\\\s])(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"3":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.unquoted.heredoc.indent.$2","end":"^\\\\t*\\\\2(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.delimiter.shell"}},"patterns":[{"include":"#double_quote_escape_char"},{"include":"#variable"},{"include":"#interpolation"}]},{"begin":"((?<!<)<<(?!<))[\\\\t ]*+([^\\\\t \\"']+)(?=[\\"\\\\&';<\\\\s])(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"3":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.unquoted.heredoc.no-indent.$2","end":"^\\\\2(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.delimiter.shell"}},"patterns":[{"include":"#double_quote_escape_char"},{"include":"#variable"},{"include":"#interpolation"}]}]},"herestring":{"patterns":[{"begin":"(<<<)\\\\s*(('))","beginCaptures":{"1":{"name":"keyword.operator.herestring.shell"},"2":{"name":"string.quoted.single.shell"},"3":{"name":"punctuation.definition.string.begin.shell"}},"contentName":"string.quoted.single.shell","end":"(')","endCaptures":{"0":{"name":"string.quoted.single.shell"},"1":{"name":"punctuation.definition.string.end.shell"}},"name":"meta.herestring.shell"},{"begin":"(<<<)\\\\s*((\\"))","beginCaptures":{"1":{"name":"keyword.operator.herestring.shell"},"2":{"name":"string.quoted.double.shell"},"3":{"name":"punctuation.definition.string.begin.shell"}},"contentName":"string.quoted.double.shell","end":"(\\")","endCaptures":{"0":{"name":"string.quoted.double.shell"},"1":{"name":"punctuation.definition.string.end.shell"}},"name":"meta.herestring.shell","patterns":[{"include":"#double_quote_context"}]},{"captures":{"1":{"name":"keyword.operator.herestring.shell"},"2":{"name":"string.unquoted.herestring.shell","patterns":[{"include":"#initial_context"}]}},"match":"(<<<)\\\\s*(([^)\\\\\\\\\\\\s]|\\\\\\\\.)+)","name":"meta.herestring.shell"}]},"initial_context":{"patterns":[{"include":"#comment"},{"include":"#pipeline"},{"include":"#normal_statement_seperator"},{"include":"#logical_expression_double"},{"include":"#logical_expression_single"},{"include":"#assignment_statement"},{"include":"#case_statement"},{"include":"#for_statement"},{"include":"#loop"},{"include":"#function_definition"},{"include":"#line_continuation"},{"include":"#arithmetic_double"},{"include":"#misc_ranges"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#redirection"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#alias_statement"},{"include":"#normal_statement"},{"include":"#string"},{"include":"#support"}]},"inline_comment":{"captures":{"1":{"name":"comment.block.shell punctuation.definition.comment.begin.shell"},"2":{"name":"comment.block.shell"},"3":{"patterns":[{"match":"\\\\*/","name":"comment.block.shell punctuation.definition.comment.end.shell"},{"match":"\\\\*","name":"comment.block.shell"}]}},"match":"(/\\\\*)((?:[^*]|\\\\*++[^/])*+(\\\\*++/))"},"interpolation":{"patterns":[{"include":"#arithmetic_dollar"},{"include":"#subshell_dollar"},{"begin":"\`","beginCaptures":{"0":{"name":"punctuation.definition.evaluation.backticks.shell"}},"end":"\`","endCaptures":{"0":{"name":"punctuation.definition.evaluation.backticks.shell"}},"name":"string.interpolated.backtick.shell","patterns":[{"match":"\\\\\\\\[$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"begin":"(?<=\\\\W)(?=#)(?!#\\\\{)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.shell"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.shell"}},"end":"(?=\`)","name":"comment.line.number-sign.shell"}]},{"include":"#initial_context"}]}]},"keyword":{"patterns":[{"match":"(?<=^|[\\\\&;\\\\s])(then|else|elif|fi|for|in|do|done|select|continue|esac|while|until|return)(?=[\\\\&;\\\\s]|$)","name":"keyword.control.shell"},{"match":"(?<=^|[\\\\&;\\\\s])(?:export|declare|typeset|local|readonly)(?=[\\\\&;\\\\s]|$)","name":"storage.modifier.shell"}]},"line_comment":{"begin":"\\\\s*+(//)","beginCaptures":{"1":{"name":"punctuation.definition.comment.shell"}},"end":"(?<=\\\\n)(?<!\\\\\\\\\\\\n)","endCaptures":{},"name":"comment.line.double-slash.shell","patterns":[{"include":"#line_continuation_character"}]},"line_continuation":{"match":"\\\\\\\\(?=\\\\n)","name":"constant.character.escape.line-continuation.shell"},"logical-expression":{"patterns":[{"include":"#arithmetic_no_dollar"},{"match":"=[=~]?|!=?|[<>]|&&|\\\\|\\\\|","name":"keyword.operator.logical.shell"},{"match":"(?<!\\\\S)-(nt|ot|ef|eq|ne|l[et]|g[et]|[GLNOSa-hknopr-uwxz])\\\\b","name":"keyword.operator.logical.shell"}]},"logical_expression_context":{"patterns":[{"include":"#regex_comparison"},{"include":"#arithmetic_no_dollar"},{"include":"#logical-expression"},{"include":"#logical_expression_single"},{"include":"#logical_expression_double"},{"include":"#comment"},{"include":"#boolean"},{"include":"#redirect_number"},{"include":"#numeric_literal"},{"include":"#pipeline"},{"include":"#normal_statement_seperator"},{"include":"#string"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#support"}]},"logical_expression_double":{"begin":"\\\\[\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"end":"]]","endCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"name":"meta.scope.logical-expression.shell","patterns":[{"include":"#logical_expression_context"}]},"logical_expression_single":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"name":"meta.scope.logical-expression.shell","patterns":[{"include":"#logical_expression_context"}]},"loop":{"patterns":[{"begin":"(?<=^|[\\\\&;\\\\s])(for)\\\\s+(.+?)\\\\s+(in)(?=[\\\\&;\\\\s]|$)","beginCaptures":{"1":{"name":"keyword.control.shell"},"2":{"name":"variable.other.loop.shell","patterns":[{"include":"#string"}]},"3":{"name":"keyword.control.shell"}},"end":"(?<=^|[\\\\&;\\\\s])done(?=[\\\\&;\\\\s]|$|\\\\))","endCaptures":{"0":{"name":"keyword.control.shell"}},"name":"meta.scope.for-in-loop.shell","patterns":[{"include":"#initial_context"}]},{"begin":"(?<=^|[\\\\&;\\\\s])(while|until)(?=[\\\\&;\\\\s]|$)","beginCaptures":{"1":{"name":"keyword.control.shell"}},"end":"(?<=^|[\\\\&;\\\\s])done(?=[\\\\&;\\\\s]|$|\\\\))","endCaptures":{"0":{"name":"keyword.control.shell"}},"name":"meta.scope.while-loop.shell","patterns":[{"include":"#initial_context"}]},{"begin":"(?<=^|[\\\\&;\\\\s])(select)\\\\s+((?:[^\\\\\\\\\\\\s]|\\\\\\\\.)+)(?=[\\\\&;\\\\s]|$)","beginCaptures":{"1":{"name":"keyword.control.shell"},"2":{"name":"variable.other.loop.shell"}},"end":"(?<=^|[\\\\&;\\\\s])(done)(?=[\\\\&;\\\\s]|$|\\\\))","endCaptures":{"1":{"name":"keyword.control.shell"}},"name":"meta.scope.select-block.shell","patterns":[{"include":"#initial_context"}]},{"begin":"(?<=^|[\\\\&;\\\\s])if(?=[\\\\&;\\\\s]|$)","beginCaptures":{"0":{"name":"keyword.control.if.shell"}},"end":"(?<=^|[\\\\&;\\\\s])fi(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"keyword.control.fi.shell"}},"name":"meta.scope.if-block.shell","patterns":[{"include":"#initial_context"}]}]},"math":{"patterns":[{"include":"#variable"},{"match":"\\\\+{1,2}|-{1,2}|[!~]|\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\&*+/^|]=|<<=|>>=","name":"keyword.operator.arithmetic.shell"},{"match":"0[Xx]\\\\h+","name":"constant.numeric.hex.shell"},{"match":";","name":"punctuation.separator.semicolon.range"},{"match":"0\\\\d+","name":"constant.numeric.octal.shell"},{"match":"\\\\d{1,2}#[0-9@-Z_a-z]+","name":"constant.numeric.other.shell"},{"match":"\\\\d+","name":"constant.numeric.integer.shell"},{"match":"(?<!\\\\w)[0-9A-Z_a-z]+(?!\\\\w)","name":"variable.other.normal.shell"}]},"math_operators":{"patterns":[{"match":"\\\\+{1,2}|-{1,2}|[!~]|\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\&*+/^|]=|<<=|>>=","name":"keyword.operator.arithmetic.shell"},{"match":"0[Xx]\\\\h+","name":"constant.numeric.hex.shell"},{"match":"0\\\\d+","name":"constant.numeric.octal.shell"},{"match":"\\\\d{1,2}#[0-9@-Z_a-z]+","name":"constant.numeric.other.shell"},{"match":"\\\\d+","name":"constant.numeric.integer.shell"}]},"misc_ranges":{"patterns":[{"include":"#logical_expression_single"},{"include":"#logical_expression_double"},{"include":"#subshell_dollar"},{"begin":"(?<![^\\\\t ])(\\\\{)(?![$\\\\w])","beginCaptures":{"1":{"name":"punctuation.definition.group.shell"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.group.shell"}},"name":"meta.scope.group.shell","patterns":[{"include":"#initial_context"}]}]},"modified_assignment_statement":{"begin":"(?<=^|[\\\\t \\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\t \\\\&;]|$)","beginCaptures":{"0":{"name":"storage.modifier.$0.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.shell meta.expression.assignment.modified.shell","patterns":[{"match":"(?<!\\\\w)-\\\\w+\\\\b","name":"string.unquoted.argument.shell constant.other.option.shell"},{"include":"#array_value"},{"captures":{"1":{"name":"variable.other.assignment.shell"},"2":{"name":"punctuation.definition.array.access.shell"},"3":{"name":"variable.other.assignment.shell"},"4":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"keyword.operator.assignment.shell"},"7":{"name":"keyword.operator.assignment.compound.shell"},"8":{"name":"keyword.operator.assignment.compound.shell"},"9":{"name":"constant.numeric.shell constant.numeric.hex.shell"},"10":{"name":"constant.numeric.shell constant.numeric.octal.shell"},"11":{"name":"constant.numeric.shell constant.numeric.other.shell"},"12":{"name":"constant.numeric.shell constant.numeric.decimal.shell"},"13":{"name":"constant.numeric.shell constant.numeric.version.shell"},"14":{"name":"constant.numeric.shell constant.numeric.integer.shell"}},"match":"((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))?(?:(?<=[\\\\t =]|^|[(\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\h+)|(0\\\\d+))|(\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\d+\\\\.\\\\d+))|(-?\\\\d+(?:\\\\.\\\\d+)+))|(-?\\\\d+))(?=[\\\\t ]|$|[);}]))?"},{"include":"#normal_context"}]},"modifiers":{"match":"(?<=^|[\\\\t \\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\t \\\\&;]|$)","name":"storage.modifier.$0.shell"},"normal_assignment_statement":{"begin":"[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))","beginCaptures":{"1":{"name":"variable.other.assignment.shell"},"2":{"name":"punctuation.definition.array.access.shell"},"3":{"name":"variable.other.assignment.shell"},"4":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"keyword.operator.assignment.shell"},"7":{"name":"keyword.operator.assignment.compound.shell"},"8":{"name":"keyword.operator.assignment.compound.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.expression.assignment.shell","patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#normal_assignment_statement"},{"begin":"(?<=[\\\\t ])(?![\\\\t ]|\\\\w+=)","beginCaptures":{},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.command.env.shell","patterns":[{"include":"#command_name_range"},{"include":"#line_continuation"},{"include":"#option"},{"include":"#argument"},{"include":"#string"}]},{"include":"#simple_unquoted"},{"include":"#normal_context"}]},"normal_context":{"patterns":[{"include":"#comment"},{"include":"#pipeline"},{"include":"#normal_statement_seperator"},{"include":"#misc_ranges"},{"include":"#boolean"},{"include":"#redirect_number"},{"include":"#numeric_literal"},{"include":"#string"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#redirection"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#support"},{"include":"#parenthese"}]},"normal_statement":{"begin":"(?!^[\\\\t ]*+$)(?:(?<=(?:^until| until|\\\\tuntil|^while| while|\\\\twhile|^elif| elif|\\\\telif|^else| else|\\\\telse|^then| then|\\\\tthen|^do| do|\\\\tdo|^if| if|\\\\tif) )|(?<=^|[!\\\\&(;\`{|]))[\\\\t ]*+(?!nocorrect\\\\W|nocorrect\\\\$|function\\\\W|function\\\\$|foreach\\\\W|foreach\\\\$|repeat\\\\W|repeat\\\\$|logout\\\\W|logout\\\\$|coproc\\\\W|coproc\\\\$|select\\\\W|select\\\\$|while\\\\W|while\\\\$|pushd\\\\W|pushd\\\\$|until\\\\W|until\\\\$|case\\\\W|case\\\\$|done\\\\W|done\\\\$|elif\\\\W|elif\\\\$|else\\\\W|else\\\\$|esac\\\\W|esac\\\\$|popd\\\\W|popd\\\\$|then\\\\W|then\\\\$|time\\\\W|time\\\\$|for\\\\W|for\\\\$|end\\\\W|end\\\\$|fi\\\\W|fi\\\\$|do\\\\W|do\\\\$|in\\\\W|in\\\\$|if\\\\W|if\\\\$)","beginCaptures":{},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.shell","patterns":[{"include":"#typical_statements"}]},"normal_statement_seperator":{"captures":{"1":{"name":"punctuation.terminator.statement.semicolon.shell"},"2":{"name":"punctuation.separator.statement.and.shell"},"3":{"name":"punctuation.separator.statement.or.shell"},"4":{"name":"punctuation.separator.statement.background.shell"}},"match":"(?:(?:(;)|(&&))|(\\\\|\\\\|))|(&)"},"numeric_literal":{"captures":{"1":{"name":"constant.numeric.shell constant.numeric.hex.shell"},"2":{"name":"constant.numeric.shell constant.numeric.octal.shell"},"3":{"name":"constant.numeric.shell constant.numeric.other.shell"},"4":{"name":"constant.numeric.shell constant.numeric.decimal.shell"},"5":{"name":"constant.numeric.shell constant.numeric.version.shell"},"6":{"name":"constant.numeric.shell constant.numeric.integer.shell"}},"match":"(?<=[\\\\t =]|^|[(\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\h+)|(0\\\\d+))|(\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\d+\\\\.\\\\d+))|(-?\\\\d+(?:\\\\.\\\\d+)+))|(-?\\\\d+))(?=[\\\\t ]|$|[);}])"},"option":{"begin":"[\\\\t ]++(-)((?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;]))","beginCaptures":{"1":{"name":"string.unquoted.argument.shell constant.other.option.dash.shell"},"2":{"name":"string.unquoted.argument.shell constant.other.option.shell"}},"contentName":"string.unquoted.argument constant.other.option","end":"(?=[\\\\t ])|(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"patterns":[{"include":"#option_context"}]},"option_context":{"patterns":[{"include":"#misc_ranges"},{"include":"#string"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#redirection"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#support"}]},"parenthese":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.section.parenthese.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.parenthese.shell"}},"name":"meta.parenthese.group.shell","patterns":[{"include":"#initial_context"}]}]},"pathname":{"patterns":[{"match":"(?<=[:=\\\\s]|^)~","name":"keyword.operator.tilde.shell"},{"match":"[*?]","name":"keyword.operator.glob.shell"},{"begin":"([!*+?@])(\\\\()","beginCaptures":{"1":{"name":"keyword.operator.extglob.shell"},"2":{"name":"punctuation.definition.extglob.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.extglob.shell"}},"name":"meta.structure.extglob.shell","patterns":[{"include":"#initial_context"}]}]},"pipeline":{"patterns":[{"match":"(?<=^|[\\\\&;\\\\s])(time)(?=[\\\\&;\\\\s]|$)","name":"keyword.other.shell"},{"match":"[!|]","name":"keyword.operator.pipe.shell"}]},"redirect_fix":{"captures":{"1":{"name":"keyword.operator.redirect.shell"},"2":{"name":"string.unquoted.argument.shell"}},"match":"(>>?)[\\\\t ]*+([^\\\\t\\\\n \\"$\\\\&-);<>\\\\\\\\\`|]+)"},"redirect_number":{"captures":{"1":{"name":"keyword.operator.redirect.stdout.shell"},"2":{"name":"keyword.operator.redirect.stderr.shell"},"3":{"name":"keyword.operator.redirect.$3.shell"}},"match":"(?<=[\\\\t ])(?:(1)|(2)|(\\\\d+))(?=>)"},"redirection":{"patterns":[{"begin":"[<>]\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.interpolated.process-substitution.shell","patterns":[{"include":"#initial_context"}]},{"match":"(?<![<>])(&>|\\\\d*>&\\\\d*|\\\\d*(>>|[<>])|\\\\d*<&|\\\\d*<>)(?![<>])","name":"keyword.operator.redirect.shell"}]},"regex_comparison":{"match":"=~","name":"keyword.operator.logical.regex.shell"},"regexp":{"patterns":[{"match":".+"}]},"simple_options":{"captures":{"0":{"patterns":[{"captures":{"1":{"name":"string.unquoted.argument.shell constant.other.option.dash.shell"},"2":{"name":"string.unquoted.argument.shell constant.other.option.shell"}},"match":"[\\\\t ]++(-)(\\\\w+)"}]}},"match":"(?:[\\\\t ]++-\\\\w+)*"},"simple_unquoted":{"match":"[^\\\\t\\\\n \\"$\\\\&-);<>\\\\\\\\\`|]","name":"string.unquoted.shell"},"special_expansion":{"match":"!|:[-=?]?|[*@]|##?|%%|[%/]","name":"keyword.operator.expansion.shell"},"start_of_command":{"match":"[\\\\t ]*+(?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;])(?!nocorrect |nocorrect\\\\t|nocorrect$|readonly |readonly\\\\t|readonly$|function |function\\\\t|function$|foreach |foreach\\\\t|foreach$|coproc |coproc\\\\t|coproc$|logout |logout\\\\t|logout$|export |export\\\\t|export$|select |select\\\\t|select$|repeat |repeat\\\\t|repeat$|pushd |pushd\\\\t|pushd$|until |until\\\\t|until$|while |while\\\\t|while$|local |local\\\\t|local$|case |case\\\\t|case$|done |done\\\\t|done$|elif |elif\\\\t|elif$|else |else\\\\t|else$|esac |esac\\\\t|esac$|popd |popd\\\\t|popd$|then |then\\\\t|then$|time |time\\\\t|time$|for |for\\\\t|for$|end |end\\\\t|end$|fi |fi\\\\t|fi$|do |do\\\\t|do$|in |in\\\\t|in$|if |if\\\\t|if$)(?!\\\\\\\\\\\\n?$)"},"string":{"patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.shell"},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.quoted.single.shell"},{"begin":"\\\\$?\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.quoted.double.shell","patterns":[{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"include":"#variable"},{"include":"#interpolation"}]},{"begin":"\\\\$'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.quoted.single.dollar.shell","patterns":[{"match":"\\\\\\\\['\\\\\\\\abefnrtv]","name":"constant.character.escape.ansi-c.shell"},{"match":"\\\\\\\\[0-9]{3}\\"","name":"constant.character.escape.octal.shell"},{"match":"\\\\\\\\x\\\\h{2}\\"","name":"constant.character.escape.hex.shell"},{"match":"\\\\\\\\c.\\"","name":"constant.character.escape.control-char.shell"}]}]},"subshell_dollar":{"patterns":[{"begin":"\\\\$\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.subshell.single.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.subshell.single.shell"}},"name":"meta.scope.subshell","patterns":[{"include":"#parenthese"},{"include":"#initial_context"}]}]},"support":{"patterns":[{"match":"(?<=^|[\\\\&;\\\\s])[.:](?=[\\\\&;\\\\s]|$)","name":"support.function.builtin.shell"}]},"typical_statements":{"patterns":[{"include":"#assignment_statement"},{"include":"#case_statement"},{"include":"#for_statement"},{"include":"#while_statement"},{"include":"#function_definition"},{"include":"#command_statement"},{"include":"#line_continuation"},{"include":"#arithmetic_double"},{"include":"#normal_context"}]},"variable":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.parameter.positional.all.shell"},"2":{"name":"variable.parameter.positional.all.shell"}},"match":"(\\\\$)(@(?!\\\\w))"},{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.parameter.positional.shell"},"2":{"name":"variable.parameter.positional.shell"}},"match":"(\\\\$)([0-9](?!\\\\w))"},{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.language.special.shell"},"2":{"name":"variable.language.special.shell"}},"match":"(\\\\$)([-!#$*0?_](?!\\\\w))"},{"begin":"(\\\\$)(\\\\{)[\\\\t ]*+(?=\\\\d)","beginCaptures":{"1":{"name":"punctuation.definition.variable.shell variable.parameter.positional.shell"},"2":{"name":"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell variable.parameter.positional.shell"}},"contentName":"meta.parameter-expansion","end":"}","endCaptures":{"0":{"name":"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell variable.parameter.positional.shell"}},"patterns":[{"include":"#special_expansion"},{"include":"#array_access_inline"},{"match":"[0-9]+","name":"variable.parameter.positional.shell"},{"match":"(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)","name":"variable.other.normal.shell"},{"include":"#variable"},{"include":"#string"}]},{"begin":"(\\\\$)(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.variable.shell"},"2":{"name":"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell"}},"contentName":"meta.parameter-expansion","end":"}","endCaptures":{"0":{"name":"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell"}},"patterns":[{"include":"#special_expansion"},{"include":"#array_access_inline"},{"match":"(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)","name":"variable.other.normal.shell"},{"include":"#variable"},{"include":"#string"}]},{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.other.normal.shell"},"2":{"name":"variable.other.normal.shell"}},"match":"(\\\\$)(\\\\w+(?!\\\\w))"}]},"while_statement":{"patterns":[{"begin":"\\\\b(while)\\\\b","beginCaptures":{"1":{"name":"keyword.control.while.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.while.shell","patterns":[{"include":"#line_continuation"},{"include":"#math_operators"},{"include":"#option"},{"include":"#simple_unquoted"},{"include":"#normal_context"},{"include":"#string"}]}]}},"scopeName":"source.shell","aliases":["bash","sh","shell","zsh"]}`)),rb=[pz];var dz=Object.freeze(JSON.parse('{"displayName":"SQL","name":"sql","patterns":[{"match":"((?<!@)@)\\\\b(\\\\w+)\\\\b","name":"text.variable"},{"match":"(\\\\[)[^]]*(])","name":"text.bracketed"},{"include":"#comments"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.sql"},"5":{"name":"entity.name.function.sql"}},"match":"(?i:^\\\\s*(create(?:\\\\s+or\\\\s+replace)?)\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)([\\"\'`]?)(\\\\w+)\\\\4","name":"meta.create.sql"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.sql"}},"match":"(?i:^\\\\s*(drop)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))","name":"meta.drop.sql"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.table.sql"},"3":{"name":"entity.name.function.sql"},"4":{"name":"keyword.other.cascade.sql"}},"match":"(?i:\\\\s*(drop)\\\\s+(table)\\\\s+(\\\\w+)(\\\\s+cascade)?\\\\b)","name":"meta.drop.sql"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.table.sql"}},"match":"(?i:^\\\\s*(alter)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)","name":"meta.alter.sql"},{"captures":{"1":{"name":"storage.type.sql"},"2":{"name":"storage.type.sql"},"3":{"name":"constant.numeric.sql"},"4":{"name":"storage.type.sql"},"5":{"name":"constant.numeric.sql"},"6":{"name":"storage.type.sql"},"7":{"name":"constant.numeric.sql"},"8":{"name":"constant.numeric.sql"},"9":{"name":"storage.type.sql"},"10":{"name":"constant.numeric.sql"},"11":{"name":"storage.type.sql"},"12":{"name":"storage.type.sql"},"13":{"name":"storage.type.sql"},"14":{"name":"constant.numeric.sql"},"15":{"name":"storage.type.sql"}},"match":"(?i)\\\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\\\b|\\\\b(bit\\\\svarying|character\\\\s(?:varying)?|tinyint|var\\\\schar|float|interval)\\\\((\\\\d+)\\\\)|\\\\b(char|number|varchar\\\\d?)\\\\b(?:\\\\((\\\\d+)\\\\))?|\\\\b(numeric|decimal)\\\\b(?:\\\\((\\\\d+),(\\\\d+)\\\\))?|\\\\b(times?)\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\swith(?:out)?\\\\stime\\\\szone\\\\b)?|\\\\b(timestamp)(s|tz)?\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\s(with(?:|out))\\\\stime\\\\szone\\\\b)?"},{"match":"(?i:\\\\b((?:primary|foreign)\\\\s+key|references|on\\\\s+(delete|update)(\\\\s+cascade)?|nocheck|check|constraint|collate|default)\\\\b)","name":"storage.modifier.sql"},{"match":"\\\\b\\\\d+\\\\b","name":"constant.numeric.sql"},{"match":"(?i:\\\\b(select(\\\\s+(all|distinct))?|insert\\\\s+(ignore\\\\s+)?into|update|delete|from|set|where|group\\\\s+by|or|like|and|union(\\\\s+all)?|having|order\\\\s+by|limit|cross\\\\s+join|join|straight_join|(inner|(left|right|full)(\\\\s+outer)?)\\\\s+join|natural(\\\\s+(inner|(left|right|full)(\\\\s+outer)?))?\\\\s+join)\\\\b)","name":"keyword.other.DML.sql"},{"match":"(?i:\\\\b(on|off|((is\\\\s+)?not\\\\s+)?null)\\\\b)","name":"keyword.other.DDL.create.II.sql"},{"match":"(?i:\\\\bvalues\\\\b)","name":"keyword.other.DML.II.sql"},{"match":"(?i:\\\\b(begin(\\\\s+work)?|start\\\\s+transaction|commit(\\\\s+work)?|rollback(\\\\s+work)?)\\\\b)","name":"keyword.other.LUW.sql"},{"match":"(?i:\\\\b(grant(\\\\swith\\\\sgrant\\\\soption)?|revoke)\\\\b)","name":"keyword.other.authorization.sql"},{"match":"(?i:\\\\bin\\\\b)","name":"keyword.other.data-integrity.sql"},{"match":"(?i:^\\\\s*(comment\\\\s+on\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\s+)","name":"keyword.other.object-comments.sql"},{"match":"(?i)\\\\bAS\\\\b","name":"keyword.other.alias.sql"},{"match":"(?i)\\\\b(DESC|ASC)\\\\b","name":"keyword.other.order.sql"},{"match":"\\\\*","name":"keyword.operator.star.sql"},{"match":"[!<>]?=|<>|[<>]","name":"keyword.operator.comparison.sql"},{"match":"[-+/]","name":"keyword.operator.math.sql"},{"match":"\\\\|\\\\|","name":"keyword.operator.concatenator.sql"},{"captures":{"1":{"name":"support.function.aggregate.sql"}},"match":"(?i)\\\\b(approx_count_distinct|approx_percentile_cont|approx_percentile_disc|avg|checksum_agg|count|count_big|group|grouping|grouping_id|max|min|sum|stdevp??|varp??)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.analytic.sql"}},"match":"(?i)\\\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.bitmanipulation.sql"}},"match":"(?i)\\\\b((?:bit_coun|get_bi|left_shif|right_shif|set_bi)t)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.conversion.sql"}},"match":"(?i)\\\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.collation.sql"}},"match":"(?i)\\\\b(collationproperty|tertiary_weights)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.cryptographic.sql"}},"match":"(?i)\\\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.cursor.sql"}},"match":"(?i)\\\\b(cursor_status)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.datetime.sql"}},"match":"(?i)\\\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|datetrunc|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.datatype.sql"}},"match":"(?i)\\\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.expression.sql"}},"match":"(?i)\\\\b(coalesce|nullif)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.globalvar.sql"}},"match":"(?<!@)@@(?i)\\\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.json.sql"}},"match":"(?i)\\\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.logical.sql"}},"match":"(?i)\\\\b(choose|iif|greatest|least)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.mathematical.sql"}},"match":"(?i)\\\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.metadata.sql"}},"match":"(?i)\\\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.ranking.sql"}},"match":"(?i)\\\\b(rank|dense_rank|ntile|row_number)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.rowset.sql"}},"match":"(?i)\\\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.security.sql"}},"match":"(?i)\\\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.string.sql"}},"match":"(?i)\\\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.system.sql"}},"match":"(?i)\\\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.textimage.sql"}},"match":"(?i)\\\\b(patindex|textptr|textvalid)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.vector.sql"}},"match":"(?i)\\\\b(vector_(?:distance|norm|normalize))\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"constant.other.database-name.sql"},"2":{"name":"constant.other.table-name.sql"}},"match":"(\\\\w+?)\\\\.(\\\\w+)"},{"include":"#strings"},{"include":"#regexps"},{"match":"\\\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_drop|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blockers|blocksize|bmk|both|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|checksum|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|connection|containment|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\\\\\s+or\\\\\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime2??|datetimeoffset|day(s)?|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_fulltext_language|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filegrowth|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|for|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hour(s)?|http|identity|identity_value|if|ifnull|ignore|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|incremental|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|leading|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|log|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|match|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minute(s)?|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|month|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|nested_triggers|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|nulls|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|quarter|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replace|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|respect|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|scalar|schema|schemabinding|scoped|scroll|scroll_locks|sddl|second|secexpr|seconds|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|sessions??|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|shortest_path|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablockx??|take|tape|target|target_index|target_partition|target_recovery_time|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|top??|torn_page_detection|track_columns_updated|trailing|tran|transaction|transfer|transform_noise_words|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|two_digit_year_cutoff|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|values??|varbinary|varchar|vector|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|wait_at_low_priority|waitfor|webmethod|week|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|windows??|with|within|within group|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|year|zone)\\\\b","name":"keyword.other.sql"},{"captures":{"1":{"name":"punctuation.section.scope.begin.sql"},"2":{"name":"punctuation.section.scope.end.sql"}},"match":"(\\\\()(\\\\))","name":"meta.block.sql"}],"repository":{"comment-block":{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.sql"}},"end":"\\\\*/","name":"comment.block","patterns":[{"include":"#comment-block"}]},"comments":{"patterns":[{"begin":"(^[\\\\t ]+)?(?=--)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.sql"}},"end":"(?!\\\\G)","patterns":[{"begin":"--","beginCaptures":{"0":{"name":"punctuation.definition.comment.sql"}},"end":"\\\\n","name":"comment.line.double-dash.sql"}]},{"begin":"(^[\\\\t ]+)?(?=#)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.sql"}},"end":"(?!\\\\G)","patterns":[]},{"include":"#comment-block"}]},"regexps":{"patterns":[{"begin":"/(?=\\\\S.*/)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"/","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.regexp.sql","patterns":[{"include":"#string_interpolation"},{"match":"\\\\\\\\/","name":"constant.character.escape.slash.sql"}]},{"begin":"%r\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.regexp.modr.sql","patterns":[{"include":"#string_interpolation"}]}]},"string_escape":{"match":"\\\\\\\\.","name":"constant.character.escape.sql"},"string_interpolation":{"captures":{"1":{"name":"punctuation.definition.string.begin.sql"},"3":{"name":"punctuation.definition.string.end.sql"}},"match":"(#\\\\{)([^}]*)(})","name":"string.interpolated.sql"},"strings":{"patterns":[{"captures":{"2":{"name":"punctuation.definition.string.begin.sql"},"3":{"name":"punctuation.definition.string.end.sql"}},"match":"(N)?(\')[^\']*(\')","name":"string.quoted.single.sql"},{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"\'","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.quoted.single.sql","patterns":[{"include":"#string_escape"}]},{"captures":{"1":{"name":"punctuation.definition.string.begin.sql"},"2":{"name":"punctuation.definition.string.end.sql"}},"match":"(`)[^\\\\\\\\`]*(`)","name":"string.quoted.other.backtick.sql"},{"begin":"`","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"`","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.quoted.other.backtick.sql","patterns":[{"include":"#string_escape"}]},{"captures":{"1":{"name":"punctuation.definition.string.begin.sql"},"2":{"name":"punctuation.definition.string.end.sql"}},"match":"(\\")[^\\"#]*(\\")","name":"string.quoted.double.sql"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.quoted.double.sql","patterns":[{"include":"#string_interpolation"}]},{"begin":"%\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.other.quoted.brackets.sql","patterns":[{"include":"#string_interpolation"}]}]}},"scopeName":"source.sql"}')),o3=[dz];var mz=Object.freeze(JSON.parse(`{"displayName":"TSX","name":"tsx","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.tsx"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.objectliteral.tsx","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.tsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.tsx"}},"name":"meta.array.literal.tsx","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"variable.parameter.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.tsx"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.tsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.tsx"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.tsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.tsx","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.tsx"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.tsx"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"include":"#jsx"}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.type.class.tsx"}},"end":"(?<=})","name":"meta.class.tsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.tsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.type.class.tsx"}},"end":"(?<=})","name":"meta.class.tsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.tsx"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.tsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.tsx"}},"name":"comment.block.documentation.tsx","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.tsx"},"2":{"name":"storage.type.internaldeclaration.tsx"},"3":{"name":"punctuation.decorator.internaldeclaration.tsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.tsx"}},"name":"comment.block.tsx"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.tsx"},"2":{"name":"comment.line.double-slash.tsx"},"3":{"name":"punctuation.definition.comment.tsx"},"4":{"name":"storage.type.internaldeclaration.tsx"},"5":{"name":"punctuation.decorator.internaldeclaration.tsx"}},"contentName":"comment.line.double-slash.tsx","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.tsx"},{"captures":{"1":{"name":"keyword.control.loop.tsx"},"2":{"name":"entity.name.label.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.tsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.tsx"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.tsx"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.tsx"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.block.tsx","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.tsx"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.tsx"}},"end":"(?=\\\\s)","name":"meta.decorator.tsx","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.tsx","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.tsx","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"name":"meta.parameter.object-binding-pattern.tsx","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"name":"meta.paramter.array-binding-pattern.tsx","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"variable.parameter.tsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.tsx","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.tsx","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"meta.definition.variable.tsx variable.other.readwrite.tsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"meta.definition.variable.tsx variable.other.constant.tsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.tsx"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.tsx","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.tsx"},"2":{"name":"entity.name.tag.directive.tsx"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.tsx"}},"name":"meta.tag.tsx","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.tsx"},{"match":"=","name":"keyword.operator.assignment.tsx"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.tsx"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.tsx"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|'(?:\\\\*(?!/)|\\\\\\\\(?!')|[^*\\\\\\\\])*?'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.type.enum.tsx"},"5":{"name":"entity.name.type.enum.tsx"}},"end":"(?<=})","name":"meta.enum.declaration.tsx","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.tsx"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"keyword.control.as.tsx"},"3":{"name":"storage.type.namespace.tsx"},"4":{"name":"entity.name.type.module.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"keyword.control.type.tsx"},"3":{"name":"keyword.operator.assignment.tsx"},"4":{"name":"keyword.control.default.tsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.tsx","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"keyword.control.type.tsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.tsx","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"entity.name.function.tsx variable.language.this.tsx"},"4":{"name":"entity.name.function.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"variable.parameter.tsx variable.language.this.tsx"},"4":{"name":"variable.parameter.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.tsx"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.tsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.tsx"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.tsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.tsx"},"2":{"name":"keyword.generator.asterisk.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.tsx"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.tsx"},{"captures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"keyword.control.satisfies.tsx"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.tsx"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.tsx"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.tsx"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.tsx"},{"match":"[!=]==?","name":"keyword.operator.comparison.tsx"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.tsx"},{"captures":{"1":{"name":"keyword.operator.logical.tsx"},"2":{"name":"keyword.operator.assignment.compound.tsx"},"3":{"name":"keyword.operator.arithmetic.tsx"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.tsx"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.tsx"},{"match":"=","name":"keyword.operator.assignment.tsx"},{"match":"--","name":"keyword.operator.decrement.tsx"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.tsx"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.tsx"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.tsx"},"2":{"name":"keyword.operator.arithmetic.tsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.tsx"},"2":{"name":"keyword.operator.arithmetic.tsx"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#jsx"},{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.tsx"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.tsx","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.tsx entity.name.function.tsx"},"2":{"name":"keyword.operator.optional.tsx"},"3":{"name":"keyword.operator.definiteassignment.tsx"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.tsx variable.object.property.tsx"},{"match":"\\\\?","name":"keyword.operator.optional.tsx"},{"match":"!","name":"keyword.operator.definiteassignment.tsx"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.tsx"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.tsx"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.tsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.tsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.tsx punctuation.accessor.optional.tsx"},{"match":"!","name":"meta.function-call.tsx keyword.operator.definiteassignment.tsx"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tsx"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.async.tsx"},"4":{"name":"storage.type.function.tsx"},"5":{"name":"keyword.generator.asterisk.tsx"},"6":{"name":"meta.definition.function.tsx entity.name.function.tsx"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.tsx","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"storage.type.function.tsx"},"3":{"name":"keyword.generator.asterisk.tsx"},"4":{"name":"meta.definition.function.tsx entity.name.function.tsx"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.tsx","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.tsx entity.name.function.tsx"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.tsx"}},"name":"meta.parameters.tsx","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.tsx"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"entity.name.function.tsx"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"variable.other.constant.property.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"variable.other.property.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.tsx"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.tsx"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.tsx"},"2":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"keyword.other.tsx"}},"name":"string.regexp.tsx","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"keyword.control.import.tsx"},"4":{"name":"keyword.control.type.tsx"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.tsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.tsx"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"keyword.control.import.tsx"},"4":{"name":"keyword.control.type.tsx"},"5":{"name":"variable.other.readwrite.alias.tsx"},"6":{"name":"keyword.operator.assignment.tsx"},"7":{"name":"keyword.control.require.tsx"},"8":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"name":"meta.import-equals.external.tsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"keyword.control.import.tsx"},"4":{"name":"keyword.control.type.tsx"},"5":{"name":"variable.other.readwrite.alias.tsx"},"6":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.tsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.tsx"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.tsx"},"2":{"name":"keyword.control.assert.tsx"},"3":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.tsx"},{"match":":","name":"punctuation.separator.key-value.tsx"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.block.tsx","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.tsx"},"2":{"name":"keyword.control.default.tsx"},"3":{"name":"constant.language.import-export-all.tsx"},"4":{"name":"variable.other.readwrite.tsx"},"5":{"name":"string.quoted.alias.tsx"},"12":{"name":"keyword.control.as.tsx"},"13":{"name":"keyword.control.default.tsx"},"14":{"name":"variable.other.readwrite.alias.tsx"},"15":{"name":"string.quoted.alias.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.tsx"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.tsx"},{"captures":{"1":{"name":"keyword.control.type.tsx"},"2":{"name":"variable.other.readwrite.alias.tsx"},"3":{"name":"string.quoted.alias.tsx"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.tsx"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"meta.brace.square.tsx"},"3":{"name":"variable.parameter.tsx"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.tsx"},"2":{"name":"keyword.operator.optional.tsx"}},"name":"meta.indexer.declaration.tsx","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"meta.brace.square.tsx"},"4":{"name":"entity.name.type.tsx"},"5":{"name":"keyword.operator.expression.in.tsx"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.tsx"},"2":{"name":"keyword.operator.type.modifier.tsx"},"3":{"name":"keyword.operator.optional.tsx"}},"name":"meta.indexer.mappedtype.declaration.tsx","patterns":[{"captures":{"1":{"name":"keyword.control.as.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.tsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.type.interface.tsx"}},"end":"(?<=})","name":"meta.interface.tsx","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.tsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"jsx":{"patterns":[{"include":"#jsx-tag-without-attributes-in-expression"},{"include":"#jsx-tag-in-expression"}]},"jsx-children":{"patterns":[{"include":"#jsx-tag-without-attributes"},{"include":"#jsx-tag"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-entities"}]},"jsx-entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.tsx"},"3":{"name":"punctuation.definition.entity.tsx"}},"match":"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.tsx"}]},"jsx-evaluated-code":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.tsx"}},"contentName":"meta.embedded.expression.tsx","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.tsx"}},"patterns":[{"include":"#expression"}]},"jsx-string-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.tsx"}},"name":"string.quoted.double.tsx","patterns":[{"include":"#jsx-entities"}]},"jsx-string-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.tsx"}},"name":"string.quoted.single.tsx","patterns":[{"include":"#jsx-entities"}]},"jsx-tag":{"begin":"(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(/>)|(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.tsx"},"2":{"name":"punctuation.definition.tag.begin.tsx"},"3":{"name":"entity.name.tag.namespace.tsx"},"4":{"name":"punctuation.separator.namespace.tsx"},"5":{"name":"entity.name.tag.tsx"},"6":{"name":"support.class.component.tsx"},"7":{"name":"punctuation.definition.tag.end.tsx"}},"name":"meta.tag.tsx","patterns":[{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.tsx"},"2":{"name":"entity.name.tag.namespace.tsx"},"3":{"name":"punctuation.separator.namespace.tsx"},"4":{"name":"entity.name.tag.tsx"},"5":{"name":"support.class.component.tsx"}},"end":"(?=/?>)","patterns":[{"include":"#comment"},{"include":"#type-arguments"},{"include":"#jsx-tag-attributes"}]},{"begin":"(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.end.tsx"}},"contentName":"meta.jsx.children.tsx","end":"(?=</)","patterns":[{"include":"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{"match":"=(?=\\\\s*(?:[\\"'{]|/\\\\*|//|\\\\n))","name":"keyword.operator.assignment.tsx"},"jsx-tag-attribute-name":{"captures":{"1":{"name":"entity.other.attribute-name.namespace.tsx"},"2":{"name":"punctuation.separator.namespace.tsx"},"3":{"name":"entity.other.attribute-name.tsx"}},"match":"\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\s]|/?>|/\\\\*|//)"},"jsx-tag-attributes":{"begin":"\\\\s+","end":"(?=/?>)","name":"meta.tag.attributes.tsx","patterns":[{"include":"#comment"},{"include":"#jsx-tag-attribute-name"},{"include":"#jsx-tag-attribute-assignment"},{"include":"#jsx-string-double-quoted"},{"include":"#jsx-string-single-quoted"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{"match":"\\\\S+","name":"invalid.illegal.attribute.tsx"},"jsx-tag-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?!<\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,))(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","patterns":[{"include":"#jsx-tag"}]},"jsx-tag-without-attributes":{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.tsx"},"2":{"name":"entity.name.tag.namespace.tsx"},"3":{"name":"punctuation.separator.namespace.tsx"},"4":{"name":"entity.name.tag.tsx"},"5":{"name":"support.class.component.tsx"},"6":{"name":"punctuation.definition.tag.end.tsx"}},"contentName":"meta.jsx.children.tsx","end":"(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.tsx"},"2":{"name":"entity.name.tag.namespace.tsx"},"3":{"name":"punctuation.separator.namespace.tsx"},"4":{"name":"entity.name.tag.tsx"},"5":{"name":"support.class.component.tsx"},"6":{"name":"punctuation.definition.tag.end.tsx"}},"name":"meta.tag.without-attributes.tsx","patterns":[{"include":"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","patterns":[{"include":"#jsx-tag-without-attributes"}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.tsx"},"2":{"name":"punctuation.separator.label.tsx"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.tsx"},"2":{"name":"punctuation.separator.label.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.modifier.async.tsx"},"5":{"name":"storage.type.tsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.modifier.async.tsx"},"5":{"name":"keyword.operator.new.tsx"},"6":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.modifier.async.tsx"},"5":{"name":"storage.type.property.tsx"},"6":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.tsx entity.name.function.tsx"},{"match":"\\\\?","name":"keyword.operator.optional.tsx"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$'_\`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.namespace.tsx"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.tsx","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.tsx"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.tsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.tsx","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.tsx"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.tsx"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.tsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.tsx"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.tsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.tsx"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.tsx"},{"captures":{"0":{"name":"constant.numeric.decimal.tsx"},"1":{"name":"meta.delimiter.decimal.period.tsx"},"2":{"name":"storage.type.numeric.bigint.tsx"},"3":{"name":"meta.delimiter.decimal.period.tsx"},"4":{"name":"storage.type.numeric.bigint.tsx"},"5":{"name":"meta.delimiter.decimal.period.tsx"},"6":{"name":"storage.type.numeric.bigint.tsx"},"7":{"name":"storage.type.numeric.bigint.tsx"},"8":{"name":"meta.delimiter.decimal.period.tsx"},"9":{"name":"storage.type.numeric.bigint.tsx"},"10":{"name":"meta.delimiter.decimal.period.tsx"},"11":{"name":"storage.type.numeric.bigint.tsx"},"12":{"name":"meta.delimiter.decimal.period.tsx"},"13":{"name":"storage.type.numeric.bigint.tsx"},"14":{"name":"storage.type.numeric.bigint.tsx"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.tsx"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.tsx"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.tsx"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.tsx"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"variable.other.constant.object.property.tsx"},"4":{"name":"variable.other.object.property.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.tsx"},"2":{"name":"variable.other.object.tsx"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.objectliteral.tsx","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"storage.type.property.tsx"},"3":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"storage.type.property.tsx"},"3":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.tsx meta.object-literal.key.tsx","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"'\`])","end":"(?=:)|((?<=[\\"'\`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.tsx meta.object-literal.key.tsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.tsx meta.object-literal.key.tsx","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"'\`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.tsx"},"1":{"name":"constant.numeric.decimal.tsx"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.tsx"},{"captures":{"0":{"name":"meta.object-literal.key.tsx"},"1":{"name":"entity.name.function.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.tsx"},{"captures":{"0":{"name":"meta.object-literal.key.tsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.tsx"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.tsx"}},"end":"(?=[,}])","name":"meta.object.member.tsx","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.tsx"},{"captures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.tsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"keyword.control.satisfies.tsx"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.tsx","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.tsx","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.tsx punctuation.separator.key-value.tsx"}},"end":"(?=[,}])","name":"meta.object.member.tsx","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"entity.name.function.tsx variable.language.this.tsx"},"4":{"name":"entity.name.function.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"variable.parameter.tsx variable.language.this.tsx"},"4":{"name":"variable.parameter.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.tsx","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"}},"contentName":"meta.arrow.tsx meta.return.type.arrow.tsx","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.tsx"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.tsx"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.tsx"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"invalid.illegal.newline.tsx"}},"name":"string.quoted.double.tsx","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"invalid.illegal.newline.tsx"}},"name":"string.quoted.single.tsx","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"keyword.other.tsx"}},"name":"string.regexp.tsx","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"keyword.other.tsx"}},"name":"string.regexp.tsx","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.tsx","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.tsx","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.tsx"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.tsx"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.tsx"},"2":{"name":"comment.line.double-slash.tsx"},"3":{"name":"punctuation.definition.comment.tsx"},"4":{"name":"storage.type.internaldeclaration.tsx"},"5":{"name":"punctuation.decorator.internaldeclaration.tsx"}},"contentName":"comment.line.double-slash.tsx","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.tsx"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.tsx"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"'\`])","name":"keyword.operator.expression.import.tsx"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.tsx"},{"captures":{"1":{"name":"keyword.control.import.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"},"4":{"name":"support.variable.property.importmeta.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"},"4":{"name":"support.variable.property.target.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"support.variable.property.tsx"},"4":{"name":"support.constant.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.tsx"},"2":{"name":"support.type.object.module.tsx"},"3":{"name":"punctuation.accessor.tsx"},"4":{"name":"punctuation.accessor.optional.tsx"},"5":{"name":"support.type.object.module.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"switch-statement.expr.tsx","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.tsx"},"2":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"name":"switch-expression.expr.tsx","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"(?=})","name":"switch-block.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.tsx"}},"end":"(?=:)","name":"case-clause.expr.tsx","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"},"2":{"name":"meta.block.tsx punctuation.definition.block.tsx"}},"contentName":"meta.block.tsx","end":"}","endCaptures":{"0":{"name":"meta.block.tsx punctuation.definition.block.tsx"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.tsx"},"2":{"name":"string.template.tsx punctuation.definition.string.template.begin.tsx"}},"contentName":"string.template.tsx","end":"\`","endCaptures":{"0":{"name":"string.template.tsx punctuation.definition.string.template.end.tsx"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","end":"(?=\`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.tsx"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.tsx"}},"end":"(?=\`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.tsx"}},"contentName":"meta.embedded.line.tsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.tsx"}},"name":"meta.template.expression.tsx","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.tsx"},"2":{"name":"string.template.tsx punctuation.definition.string.template.begin.tsx"}},"contentName":"string.template.tsx","end":"\`","endCaptures":{"0":{"name":"string.template.tsx punctuation.definition.string.template.end.tsx"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.tsx"}},"contentName":"meta.embedded.line.tsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.tsx"}},"name":"meta.template.expression.tsx","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.tsx"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.tsx"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.tsx"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.type.tsx"},"4":{"name":"entity.name.type.alias.tsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.tsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"},"2":{"name":"keyword.control.intrinsic.tsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.tsx","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.tsx","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.tsx"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.tsx"}},"name":"meta.type.parameters.tsx","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.tsx"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.tsx"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.tsx"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.tsx"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.tsx storage.modifier.tsx"},"2":{"name":"meta.type.constructor.tsx keyword.control.new.tsx"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.control.new.tsx"}},"end":"(?<=\\\\))","name":"meta.type.constructor.tsx","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.tsx","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.tsx"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.tsx","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.tsx"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.tsx","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.tsx"},"2":{"name":"entity.name.type.tsx"},"3":{"name":"keyword.operator.expression.extends.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.tsx"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"},"4":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"}},"contentName":"meta.type.parameters.tsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.tsx"},"2":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"}},"contentName":"meta.type.parameters.tsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.tsx"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.object.type.tsx","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.tsx"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.tsx"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.tsx"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.tsx"},{"match":"([:?])","name":"keyword.operator.ternary.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.tsx"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.tsx"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.tsx"}},"name":"meta.type.parameters.tsx","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.tsx"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.tsx"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"name":"meta.type.paren.cover.tsx","patterns":[{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"entity.name.function.tsx variable.language.this.tsx"},"4":{"name":"entity.name.function.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"variable.parameter.tsx variable.language.this.tsx"},"4":{"name":"variable.parameter.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.tsx"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.tsx"},"2":{"name":"variable.parameter.tsx variable.language.this.tsx"},"3":{"name":"variable.parameter.tsx"},"4":{"name":"keyword.operator.expression.is.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.tsx"},"2":{"name":"variable.parameter.tsx variable.language.this.tsx"},"3":{"name":"variable.parameter.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.tsx"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.tsx"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.tsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.tsx"}},"name":"meta.type.tuple.tsx","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.tsx"},{"captures":{"1":{"name":"entity.name.label.tsx"},"2":{"name":"keyword.operator.optional.tsx"},"3":{"name":"punctuation.separator.label.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.tsx"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.tsx"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.tsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.tsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.tsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.constant.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.tsx entity.name.function.tsx"},"2":{"name":"keyword.operator.definiteassignment.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.constant.tsx"},"2":{"name":"keyword.operator.definiteassignment.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.readwrite.tsx"},"2":{"name":"keyword.operator.definiteassignment.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.tsx"}`)),l3=[mz];var hz=Object.freeze(JSON.parse('{"displayName":"TypeScript","name":"typescript","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.objectliteral.ts","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"variable.parameter.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.ts"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.ts","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.ts"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.ts","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.ts","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.ts"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.ts"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"captures":{"1":{"name":"meta.brace.angle.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"meta.brace.angle.ts"}},"match":"\\\\s*(<)\\\\s*(const)\\\\s*(>)","name":"cast.expr.ts"},{"begin":"(?<!\\\\+\\\\+|--)(?<=^return|[^$._[:alnum:]]return|^throw|[^$._[:alnum:]]throw|^yield|[^$._[:alnum:]]yield|^await|[^$._[:alnum:]]await|^default|[^$._[:alnum:]]default|[\\\\&(*,:=>?^|]|[^$_[:alnum:]](?:\\\\+\\\\+|--)|[^+]\\\\+|[^-]-)\\\\s*(<)(?!<?=)(?!\\\\s*$)","beginCaptures":{"1":{"name":"meta.brace.angle.ts"}},"end":"(>)","endCaptures":{"1":{"name":"meta.brace.angle.ts"}},"name":"cast.expr.ts","patterns":[{"include":"#type"}]},{"begin":"(?<=^)\\\\s*(<)(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*>)","beginCaptures":{"1":{"name":"meta.brace.angle.ts"}},"end":"(>)","endCaptures":{"1":{"name":"meta.brace.angle.ts"}},"name":"cast.expr.ts","patterns":[{"include":"#type"}]}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.type.class.ts"}},"end":"(?<=})","name":"meta.class.ts","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.ts"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.type.class.ts"}},"end":"(?<=})","name":"meta.class.ts","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.ts"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.ts"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.ts"}},"name":"comment.block.documentation.ts","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.ts"},"2":{"name":"storage.type.internaldeclaration.ts"},"3":{"name":"punctuation.decorator.internaldeclaration.ts"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.ts"}},"name":"comment.block.ts"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.ts"},"2":{"name":"comment.line.double-slash.ts"},"3":{"name":"punctuation.definition.comment.ts"},"4":{"name":"storage.type.internaldeclaration.ts"},"5":{"name":"punctuation.decorator.internaldeclaration.ts"}},"contentName":"comment.line.double-slash.ts","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.ts"},{"captures":{"1":{"name":"keyword.control.loop.ts"},"2":{"name":"entity.name.label.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.ts"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.ts"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.ts"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.ts"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.block.ts","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.ts"}},"end":"(?=\\\\s)","name":"meta.decorator.ts","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.ts","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.ts","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"name":"meta.parameter.object-binding-pattern.ts","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"name":"meta.paramter.array-binding-pattern.ts","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"variable.parameter.ts"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.ts","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.ts","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"meta.definition.variable.ts variable.other.readwrite.ts"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"meta.definition.variable.ts variable.other.constant.ts"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.ts"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.ts","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.ts"},"2":{"name":"entity.name.tag.directive.ts"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.ts"}},"name":"meta.tag.ts","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.ts"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.ts"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|\'(?:\\\\*(?!/)|\\\\\\\\(?!\')|[^*\\\\\\\\])*?\'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"\']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.type.enum.ts"},"5":{"name":"entity.name.type.enum.ts"}},"end":"(?<=})","name":"meta.enum.declaration.ts","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.ts"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"keyword.control.as.ts"},"3":{"name":"storage.type.namespace.ts"},"4":{"name":"entity.name.type.module.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"keyword.control.type.ts"},"3":{"name":"keyword.operator.assignment.ts"},"4":{"name":"keyword.control.default.ts"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.ts","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"keyword.control.type.ts"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.ts","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"entity.name.function.ts variable.language.this.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"variable.parameter.ts variable.language.this.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.ts"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.ts"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.ts"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.ts"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.ts"},"2":{"name":"keyword.generator.asterisk.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.ts"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.ts"},{"captures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"keyword.control.satisfies.ts"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.ts"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"keyword.operator.assignment.compound.ts"},"3":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.ts"},"2":{"name":"keyword.operator.arithmetic.ts"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.ts"},"2":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.ts"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.ts","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.ts entity.name.function.ts"},"2":{"name":"keyword.operator.optional.ts"},"3":{"name":"keyword.operator.definiteassignment.ts"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.ts variable.object.property.ts"},{"match":"\\\\?","name":"keyword.operator.optional.ts"},{"match":"!","name":"keyword.operator.definiteassignment.ts"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.ts"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.ts"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.ts","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.ts","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.ts punctuation.accessor.optional.ts"},{"match":"!","name":"meta.function-call.ts keyword.operator.definiteassignment.ts"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.async.ts"},"4":{"name":"storage.type.function.ts"},"5":{"name":"keyword.generator.asterisk.ts"},"6":{"name":"meta.definition.function.ts entity.name.function.ts"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.ts","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"storage.type.function.ts"},"3":{"name":"keyword.generator.asterisk.ts"},"4":{"name":"meta.definition.function.ts entity.name.function.ts"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.ts","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.ts entity.name.function.ts"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"entity.name.function.ts"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"variable.other.constant.property.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"variable.other.property.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.ts"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.ts"},"2":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"keyword.other.ts"}},"name":"string.regexp.ts","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.control.import.ts"},"4":{"name":"keyword.control.type.ts"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.ts","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"\'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.ts"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.control.import.ts"},"4":{"name":"keyword.control.type.ts"},"5":{"name":"variable.other.readwrite.alias.ts"},"6":{"name":"keyword.operator.assignment.ts"},"7":{"name":"keyword.control.require.ts"},"8":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.import-equals.external.ts","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.control.import.ts"},"4":{"name":"keyword.control.type.ts"},"5":{"name":"variable.other.readwrite.alias.ts"},"6":{"name":"keyword.operator.assignment.ts"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.ts","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.ts"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.ts"},"2":{"name":"keyword.control.assert.ts"},"3":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.ts"},{"match":":","name":"punctuation.separator.key-value.ts"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.block.ts","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.ts"},"2":{"name":"keyword.control.default.ts"},"3":{"name":"constant.language.import-export-all.ts"},"4":{"name":"variable.other.readwrite.ts"},"5":{"name":"string.quoted.alias.ts"},"12":{"name":"keyword.control.as.ts"},"13":{"name":"keyword.control.default.ts"},"14":{"name":"variable.other.readwrite.alias.ts"},"15":{"name":"string.quoted.alias.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.ts"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.ts"},{"captures":{"1":{"name":"keyword.control.type.ts"},"2":{"name":"variable.other.readwrite.alias.ts"},"3":{"name":"string.quoted.alias.ts"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.ts"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"meta.brace.square.ts"},"3":{"name":"variable.parameter.ts"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.ts"},"2":{"name":"keyword.operator.optional.ts"}},"name":"meta.indexer.declaration.ts","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"meta.brace.square.ts"},"4":{"name":"entity.name.type.ts"},"5":{"name":"keyword.operator.expression.in.ts"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.ts"},"2":{"name":"keyword.operator.type.modifier.ts"},"3":{"name":"keyword.operator.optional.ts"}},"name":"meta.indexer.mappedtype.declaration.ts","patterns":[{"captures":{"1":{"name":"keyword.control.as.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.ts"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.type.interface.ts"}},"end":"(?<=})","name":"meta.interface.ts","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.ts"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.ts"},"2":{"name":"punctuation.separator.label.ts"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.ts"},"2":{"name":"punctuation.separator.label.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.modifier.async.ts"},"5":{"name":"storage.type.ts"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.modifier.async.ts"},"5":{"name":"keyword.operator.new.ts"},"6":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.modifier.async.ts"},"5":{"name":"storage.type.property.ts"},"6":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.ts entity.name.function.ts"},{"match":"\\\\?","name":"keyword.operator.optional.ts"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$\'_`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.namespace.ts"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.ts","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.ts"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.ts"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.ts","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.ts"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.ts"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"captures":{"1":{"name":"storage.type.numeric.bigint.ts"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"captures":{"1":{"name":"storage.type.numeric.bigint.ts"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"storage.type.numeric.bigint.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"storage.type.numeric.bigint.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"storage.type.numeric.bigint.ts"},"7":{"name":"storage.type.numeric.bigint.ts"},"8":{"name":"meta.delimiter.decimal.period.ts"},"9":{"name":"storage.type.numeric.bigint.ts"},"10":{"name":"meta.delimiter.decimal.period.ts"},"11":{"name":"storage.type.numeric.bigint.ts"},"12":{"name":"meta.delimiter.decimal.period.ts"},"13":{"name":"storage.type.numeric.bigint.ts"},"14":{"name":"storage.type.numeric.bigint.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.ts"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.ts"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.ts"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"variable.other.constant.object.property.ts"},"4":{"name":"variable.other.object.property.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.objectliteral.ts","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"storage.type.property.ts"},"3":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"storage.type.property.ts"},"3":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.ts meta.object-literal.key.ts","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"\'`])","end":"(?=:)|((?<=[\\"\'`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.ts meta.object-literal.key.ts","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.ts meta.object-literal.key.ts","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"\'`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.ts"},"1":{"name":"constant.numeric.decimal.ts"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.ts"},{"captures":{"0":{"name":"meta.object-literal.key.ts"},"1":{"name":"entity.name.function.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.ts"},{"captures":{"0":{"name":"meta.object-literal.key.ts"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.ts"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.ts"}},"end":"(?=[,}])","name":"meta.object.member.ts","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.ts"},{"captures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.ts"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"keyword.control.satisfies.ts"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.ts","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.ts","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.ts punctuation.separator.key-value.ts"}},"end":"(?=[,}])","name":"meta.object.member.ts","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"entity.name.function.ts variable.language.this.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"variable.parameter.ts variable.language.this.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"}},"contentName":"meta.arrow.ts meta.return.type.arrow.ts","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.ts"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.ts"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"keyword.other.ts"}},"name":"string.regexp.ts","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"keyword.other.ts"}},"name":"string.regexp.ts","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.ts","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.ts","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.ts"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.ts"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.ts"},"2":{"name":"comment.line.double-slash.ts"},"3":{"name":"punctuation.definition.comment.ts"},"4":{"name":"storage.type.internaldeclaration.ts"},"5":{"name":"punctuation.decorator.internaldeclaration.ts"}},"contentName":"comment.line.double-slash.ts","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.ts"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.ts"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"\'`])","name":"keyword.operator.expression.import.ts"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.ts"},{"captures":{"1":{"name":"keyword.control.import.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"},"4":{"name":"support.variable.property.importmeta.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"},"4":{"name":"support.variable.property.target.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"support.variable.property.ts"},"4":{"name":"support.constant.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.ts"},"2":{"name":"support.type.object.module.ts"},"3":{"name":"punctuation.accessor.ts"},"4":{"name":"punctuation.accessor.optional.ts"},"5":{"name":"support.type.object.module.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"switch-statement.expr.ts","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.ts"},"2":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"switch-expression.expr.ts","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"(?=})","name":"switch-block.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.ts"}},"end":"(?=:)","name":"case-clause.expr.ts","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.ts punctuation.definition.section.case-statement.ts"},"2":{"name":"meta.block.ts punctuation.definition.block.ts"}},"contentName":"meta.block.ts","end":"}","endCaptures":{"0":{"name":"meta.block.ts punctuation.definition.block.ts"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.ts punctuation.definition.section.case-statement.ts"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.type.ts"},"4":{"name":"entity.name.type.alias.ts"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.ts","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"},"2":{"name":"keyword.control.intrinsic.ts"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.ts"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.ts"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.ts"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.ts storage.modifier.ts"},"2":{"name":"meta.type.constructor.ts keyword.control.new.ts"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.ts"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.ts","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.ts"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.ts","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.ts"},"2":{"name":"entity.name.type.ts"},"3":{"name":"keyword.operator.expression.extends.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.ts"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"},"4":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},"contentName":"meta.type.parameters.ts","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.ts"},"2":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},"contentName":"meta.type.parameters.ts","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.ts"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.ts"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.ts"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.ts"},{"match":"([:?])","name":"keyword.operator.ternary.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.ts"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.ts"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"entity.name.function.ts variable.language.this.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"variable.parameter.ts variable.language.this.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.ts"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.ts"},"2":{"name":"variable.parameter.ts variable.language.this.ts"},"3":{"name":"variable.parameter.ts"},"4":{"name":"keyword.operator.expression.is.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.ts"},"2":{"name":"variable.parameter.ts variable.language.this.ts"},"3":{"name":"variable.parameter.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.ts"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.ts"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.ts"},{"captures":{"1":{"name":"entity.name.label.ts"},"2":{"name":"keyword.operator.optional.ts"},"3":{"name":"punctuation.separator.label.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.ts"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.ts"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.ts"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.ts"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.ts"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.constant.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.ts entity.name.function.ts"},"2":{"name":"keyword.operator.definiteassignment.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.constant.ts"},"2":{"name":"keyword.operator.definiteassignment.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.readwrite.ts"},"2":{"name":"keyword.operator.definiteassignment.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.ts","aliases":["ts","cts","mts"]}')),c3=[hz];var fz=Object.freeze(JSON.parse(`{"displayName":"YAML","fileTypes":["yaml","yml","rviz","reek","clang-format","yaml-tmlanguage","syntax","sublime-syntax"],"firstLineMatch":"^%YAML( ?1.\\\\d+)?","name":"yaml","patterns":[{"include":"#comment"},{"include":"#property"},{"include":"#directive"},{"match":"^---","name":"entity.other.document.begin.yaml"},{"match":"^\\\\.{3}","name":"entity.other.document.end.yaml"},{"include":"#node"}],"repository":{"block-collection":{"patterns":[{"include":"#block-sequence"},{"include":"#block-mapping"}]},"block-mapping":{"patterns":[{"include":"#block-pair"}]},"block-node":{"patterns":[{"include":"#prototype"},{"include":"#block-scalar"},{"include":"#block-collection"},{"include":"#flow-scalar-plain-out"},{"include":"#flow-node"}]},"block-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"1":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=\\\\?)|^ *(:)|(:)","endCaptures":{"1":{"name":"punctuation.separator.key-value.mapping.yaml"},"2":{"name":"invalid.illegal.expected-newline.yaml"}},"name":"meta.block-mapping.yaml","patterns":[{"include":"#block-node"}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S)([^:\\\\s]|:\\\\S|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},{"match":":(?=\\\\s|$)","name":"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{"begin":"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)","beginCaptures":{"1":{"name":"keyword.control.flow.block-scalar.literal.yaml"},"2":{"name":"keyword.control.flow.block-scalar.folded.yaml"},"3":{"name":"constant.numeric.indentation-indicator.yaml"},"4":{"name":"storage.modifier.chomping-indicator.yaml"},"5":{"patterns":[{"include":"#comment"},{"match":".+","name":"invalid.illegal.expected-comment-or-newline.yaml"}]}},"end":"^(?=\\\\S)|(?!\\\\G)","patterns":[{"begin":"^( +)(?! )","end":"^(?!\\\\1|\\\\s*$)","name":"string.unquoted.block.yaml"}]},"block-sequence":{"match":"(-)(?!\\\\S)","name":"punctuation.definition.block.sequence.item.yaml"},"comment":{"begin":"(?:^([\\\\t ]*)|[\\\\t ]+)(?=#\\\\p{print}*$)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.yaml"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.yaml"}},"end":"\\\\n","name":"comment.line.number-sign.yaml"}]},"directive":{"begin":"^%","beginCaptures":{"0":{"name":"punctuation.definition.directive.begin.yaml"}},"end":"(?=$|[\\\\t ]+($|#))","name":"meta.directive.yaml","patterns":[{"captures":{"1":{"name":"keyword.other.directive.yaml.yaml"},"2":{"name":"constant.numeric.yaml-version.yaml"}},"match":"\\\\G(YAML)[\\\\t ]+(\\\\d+\\\\.\\\\d+)"},{"captures":{"1":{"name":"keyword.other.directive.tag.yaml"},"2":{"name":"storage.type.tag-handle.yaml"},"3":{"name":"support.type.tag-prefix.yaml"}},"match":"\\\\G(TAG)(?:[\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\t ]+(!(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])*|(?![]!,\\\\[{}])(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+))?)?"},{"captures":{"1":{"name":"support.other.directive.reserved.yaml"},"2":{"name":"string.unquoted.directive-name.yaml"},"3":{"name":"string.unquoted.directive-parameter.yaml"}},"match":"\\\\G(\\\\w+)(?:[\\\\t ]+(\\\\w+)(?:[\\\\t ]+(\\\\w+))?)?"},{"match":"\\\\S+","name":"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{"captures":{"1":{"name":"keyword.control.flow.alias.yaml"},"2":{"name":"punctuation.definition.alias.yaml"},"3":{"name":"variable.other.alias.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"((\\\\*))([^],/\\\\[{}\\\\s]+)([^],}\\\\s]\\\\S*)?"},"flow-collection":{"patterns":[{"include":"#flow-sequence"},{"include":"#flow-mapping"}]},"flow-mapping":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.mapping.begin.yaml"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.mapping.end.yaml"}},"name":"meta.flow-mapping.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.mapping.yaml"},{"include":"#flow-pair"}]},"flow-node":{"patterns":[{"include":"#prototype"},{"include":"#flow-alias"},{"include":"#flow-collection"},{"include":"#flow-scalar"}]},"flow-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.explicit.yaml","patterns":[{"include":"#prototype"},{"include":"#flow-pair"},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","beginCaptures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","patterns":[{"include":"#flow-value"}]}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s])([^],:\\\\[{}\\\\s]|:[^],\\\\[{}\\\\s]|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"meta.flow-pair.key.yaml","patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","captures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.yaml","patterns":[{"include":"#flow-value"}]}]},"flow-scalar":{"patterns":[{"include":"#flow-scalar-double-quoted"},{"include":"#flow-scalar-single-quoted"},{"include":"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.double.yaml","patterns":[{"match":"\\\\\\\\([ \\"/0LN\\\\\\\\_abefnprtv]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})","name":"constant.character.escape.yaml"},{"match":"\\\\\\\\\\\\n","name":"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{"patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])"}]},"flow-scalar-plain-out":{"patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))"}]},"flow-scalar-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"'(?!')","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.single.yaml","patterns":[{"match":"''","name":"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.sequence.begin.yaml"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.sequence.end.yaml"}},"name":"meta.flow-sequence.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.sequence.yaml"},{"include":"#flow-pair"},{"include":"#flow-node"}]},"flow-value":{"patterns":[{"begin":"\\\\G(?![],}])","end":"(?=[],}])","name":"meta.flow-pair.value.yaml","patterns":[{"include":"#flow-node"}]}]},"node":{"patterns":[{"include":"#block-node"}]},"property":{"begin":"(?=[!\\\\&])","end":"(?!\\\\G)","name":"meta.property.yaml","patterns":[{"captures":{"1":{"name":"keyword.control.property.anchor.yaml"},"2":{"name":"punctuation.definition.anchor.yaml"},"3":{"name":"entity.name.type.anchor.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"\\\\G((&))([^],/\\\\[{}\\\\s]+)(\\\\S+)?"},{"match":"\\\\G!(?:<(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\h{2}|[#$\\\\&-+\\\\--;=?-Z_a-z~])+|)(?=[\\\\t ]|$)","name":"storage.type.tag-handle.yaml"},{"match":"\\\\S+","name":"invalid.illegal.tag-handle.yaml"}]},"prototype":{"patterns":[{"include":"#comment"},{"include":"#property"}]}},"scopeName":"source.yaml","aliases":["yml"]}`)),u3=[fz];var p3=Object.freeze(JSON.parse('{"colors":{"actionBar.toggledBackground":"#383a49","activityBarBadge.background":"#007ACC","checkbox.border":"#6B6B6B","editor.background":"#1E1E1E","editor.foreground":"#D4D4D4","editor.inactiveSelectionBackground":"#3A3D41","editor.selectionHighlightBackground":"#ADD6FF26","editorIndentGuide.activeBackground1":"#707070","editorIndentGuide.background1":"#404040","input.placeholderForeground":"#A6A6A6","list.activeSelectionIconForeground":"#FFF","list.dropBackground":"#383B3D","menu.background":"#252526","menu.border":"#454545","menu.foreground":"#CCCCCC","menu.selectionBackground":"#0078d4","menu.separatorBackground":"#454545","ports.iconRunningProcessForeground":"#369432","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#ccc3","sideBarTitle.foreground":"#BBBBBB","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#ccc3","tab.selectedBackground":"#222222","tab.selectedForeground":"#ffffffa0","terminal.inactiveSelectionBackground":"#3A3D41","widget.border":"#303031"},"displayName":"Dark Plus","name":"dark-plus","semanticHighlighting":true,"semanticTokenColors":{"customLiteral":"#DCDCAA","newOperator":"#C586C0","numberLiteral":"#b5cea8","stringLiteral":"#ce9178"},"tokenColors":[{"scope":["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],"settings":{"foreground":"#D4D4D4"}},{"scope":"emphasis","settings":{"fontStyle":"italic"}},{"scope":"strong","settings":{"fontStyle":"bold"}},{"scope":"header","settings":{"foreground":"#000080"}},{"scope":"comment","settings":{"foreground":"#6A9955"}},{"scope":"constant.language","settings":{"foreground":"#569cd6"}},{"scope":["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],"settings":{"foreground":"#b5cea8"}},{"scope":"constant.regexp","settings":{"foreground":"#646695"}},{"scope":"entity.name.tag","settings":{"foreground":"#569cd6"}},{"scope":["entity.name.tag.css","entity.name.tag.less"],"settings":{"foreground":"#d7ba7d"}},{"scope":"entity.other.attribute-name","settings":{"foreground":"#9cdcfe"}},{"scope":["entity.other.attribute-name.class.css","source.css entity.other.attribute-name.class","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.parent.less","source.css entity.other.attribute-name.pseudo-class","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.scss"],"settings":{"foreground":"#d7ba7d"}},{"scope":"invalid","settings":{"foreground":"#f44747"}},{"scope":"markup.underline","settings":{"fontStyle":"underline"}},{"scope":"markup.bold","settings":{"fontStyle":"bold","foreground":"#569cd6"}},{"scope":"markup.heading","settings":{"fontStyle":"bold","foreground":"#569cd6"}},{"scope":"markup.italic","settings":{"fontStyle":"italic"}},{"scope":"markup.strikethrough","settings":{"fontStyle":"strikethrough"}},{"scope":"markup.inserted","settings":{"foreground":"#b5cea8"}},{"scope":"markup.deleted","settings":{"foreground":"#ce9178"}},{"scope":"markup.changed","settings":{"foreground":"#569cd6"}},{"scope":"punctuation.definition.quote.begin.markdown","settings":{"foreground":"#6A9955"}},{"scope":"punctuation.definition.list.begin.markdown","settings":{"foreground":"#6796e6"}},{"scope":"markup.inline.raw","settings":{"foreground":"#ce9178"}},{"scope":"punctuation.definition.tag","settings":{"foreground":"#808080"}},{"scope":["meta.preprocessor","entity.name.function.preprocessor"],"settings":{"foreground":"#569cd6"}},{"scope":"meta.preprocessor.string","settings":{"foreground":"#ce9178"}},{"scope":"meta.preprocessor.numeric","settings":{"foreground":"#b5cea8"}},{"scope":"meta.structure.dictionary.key.python","settings":{"foreground":"#9cdcfe"}},{"scope":"meta.diff.header","settings":{"foreground":"#569cd6"}},{"scope":"storage","settings":{"foreground":"#569cd6"}},{"scope":"storage.type","settings":{"foreground":"#569cd6"}},{"scope":["storage.modifier","keyword.operator.noexcept"],"settings":{"foreground":"#569cd6"}},{"scope":["string","meta.embedded.assembly"],"settings":{"foreground":"#ce9178"}},{"scope":"string.tag","settings":{"foreground":"#ce9178"}},{"scope":"string.value","settings":{"foreground":"#ce9178"}},{"scope":"string.regexp","settings":{"foreground":"#d16969"}},{"scope":["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],"settings":{"foreground":"#569cd6"}},{"scope":["meta.template.expression"],"settings":{"foreground":"#d4d4d4"}},{"scope":["support.type.vendored.property-name","support.type.property-name","source.css variable","source.coffee.embedded"],"settings":{"foreground":"#9cdcfe"}},{"scope":"keyword","settings":{"foreground":"#569cd6"}},{"scope":"keyword.control","settings":{"foreground":"#569cd6"}},{"scope":"keyword.operator","settings":{"foreground":"#d4d4d4"}},{"scope":["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.alignof","keyword.operator.typeid","keyword.operator.alignas","keyword.operator.instanceof","keyword.operator.logical.python","keyword.operator.wordlike"],"settings":{"foreground":"#569cd6"}},{"scope":"keyword.other.unit","settings":{"foreground":"#b5cea8"}},{"scope":["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],"settings":{"foreground":"#569cd6"}},{"scope":"support.function.git-rebase","settings":{"foreground":"#9cdcfe"}},{"scope":"constant.sha.git-rebase","settings":{"foreground":"#b5cea8"}},{"scope":["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],"settings":{"foreground":"#d4d4d4"}},{"scope":"variable.language","settings":{"foreground":"#569cd6"}},{"scope":["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],"settings":{"foreground":"#DCDCAA"}},{"scope":["support.class","support.type","entity.name.type","entity.name.namespace","entity.other.attribute","entity.name.scope-resolution","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],"settings":{"foreground":"#4EC9B0"}},{"scope":["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class","punctuation.separator.namespace.ruby"],"settings":{"foreground":"#4EC9B0"}},{"scope":["keyword.control","source.cpp keyword.operator.new","keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],"settings":{"foreground":"#C586C0"}},{"scope":["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],"settings":{"foreground":"#9CDCFE"}},{"scope":["variable.other.constant","variable.other.enummember"],"settings":{"foreground":"#4FC1FF"}},{"scope":["meta.object-literal.key"],"settings":{"foreground":"#9CDCFE"}},{"scope":["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],"settings":{"foreground":"#CE9178"}},{"scope":["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],"settings":{"foreground":"#CE9178"}},{"scope":["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],"settings":{"foreground":"#d16969"}},{"scope":["keyword.operator.or.regexp","keyword.control.anchor.regexp"],"settings":{"foreground":"#DCDCAA"}},{"scope":"keyword.operator.quantifier.regexp","settings":{"foreground":"#d7ba7d"}},{"scope":["constant.character","constant.other.option"],"settings":{"foreground":"#569cd6"}},{"scope":"constant.character.escape","settings":{"foreground":"#d7ba7d"}},{"scope":"entity.name.label","settings":{"foreground":"#C8C8C8"}}],"type":"dark"}'));var d3=Object.freeze(JSON.parse('{"colors":{"actionBar.toggledBackground":"#dddddd","activityBarBadge.background":"#007ACC","checkbox.border":"#919191","diffEditor.unchangedRegionBackground":"#f8f8f8","editor.background":"#FFFFFF","editor.foreground":"#000000","editor.inactiveSelectionBackground":"#E5EBF1","editor.selectionHighlightBackground":"#ADD6FF80","editorIndentGuide.activeBackground1":"#939393","editorIndentGuide.background1":"#D3D3D3","editorSuggestWidget.background":"#F3F3F3","input.placeholderForeground":"#767676","list.activeSelectionIconForeground":"#FFF","list.focusAndSelectionOutline":"#90C2F9","list.hoverBackground":"#E8E8E8","menu.border":"#D4D4D4","notebook.cellBorderColor":"#E8E8E8","notebook.selectedCellBackground":"#c8ddf150","ports.iconRunningProcessForeground":"#369432","searchEditor.textInputBorder":"#CECECE","settings.numberInputBorder":"#CECECE","settings.textInputBorder":"#CECECE","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#61616130","sideBarTitle.foreground":"#6F6F6F","statusBarItem.errorBackground":"#c72e0f","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#61616130","tab.selectedBackground":"#ffffffa5","tab.selectedForeground":"#333333b3","terminal.inactiveSelectionBackground":"#E5EBF1","widget.border":"#d4d4d4"},"displayName":"Light Plus","name":"light-plus","semanticHighlighting":true,"semanticTokenColors":{"customLiteral":"#795E26","newOperator":"#AF00DB","numberLiteral":"#098658","stringLiteral":"#a31515"},"tokenColors":[{"scope":["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],"settings":{"foreground":"#000000ff"}},{"scope":"emphasis","settings":{"fontStyle":"italic"}},{"scope":"strong","settings":{"fontStyle":"bold"}},{"scope":"meta.diff.header","settings":{"foreground":"#000080"}},{"scope":"comment","settings":{"foreground":"#008000"}},{"scope":"constant.language","settings":{"foreground":"#0000ff"}},{"scope":["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],"settings":{"foreground":"#098658"}},{"scope":"constant.regexp","settings":{"foreground":"#811f3f"}},{"scope":"entity.name.tag","settings":{"foreground":"#800000"}},{"scope":"entity.name.selector","settings":{"foreground":"#800000"}},{"scope":"entity.other.attribute-name","settings":{"foreground":"#e50000"}},{"scope":["entity.other.attribute-name.class.css","source.css entity.other.attribute-name.class","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.parent.less","source.css entity.other.attribute-name.pseudo-class","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.scss"],"settings":{"foreground":"#800000"}},{"scope":"invalid","settings":{"foreground":"#cd3131"}},{"scope":"markup.underline","settings":{"fontStyle":"underline"}},{"scope":"markup.bold","settings":{"fontStyle":"bold","foreground":"#000080"}},{"scope":"markup.heading","settings":{"fontStyle":"bold","foreground":"#800000"}},{"scope":"markup.italic","settings":{"fontStyle":"italic"}},{"scope":"markup.strikethrough","settings":{"fontStyle":"strikethrough"}},{"scope":"markup.inserted","settings":{"foreground":"#098658"}},{"scope":"markup.deleted","settings":{"foreground":"#a31515"}},{"scope":"markup.changed","settings":{"foreground":"#0451a5"}},{"scope":["punctuation.definition.quote.begin.markdown","punctuation.definition.list.begin.markdown"],"settings":{"foreground":"#0451a5"}},{"scope":"markup.inline.raw","settings":{"foreground":"#800000"}},{"scope":"punctuation.definition.tag","settings":{"foreground":"#800000"}},{"scope":["meta.preprocessor","entity.name.function.preprocessor"],"settings":{"foreground":"#0000ff"}},{"scope":"meta.preprocessor.string","settings":{"foreground":"#a31515"}},{"scope":"meta.preprocessor.numeric","settings":{"foreground":"#098658"}},{"scope":"meta.structure.dictionary.key.python","settings":{"foreground":"#0451a5"}},{"scope":"storage","settings":{"foreground":"#0000ff"}},{"scope":"storage.type","settings":{"foreground":"#0000ff"}},{"scope":["storage.modifier","keyword.operator.noexcept"],"settings":{"foreground":"#0000ff"}},{"scope":["string","meta.embedded.assembly"],"settings":{"foreground":"#a31515"}},{"scope":["string.comment.buffered.block.pug","string.quoted.pug","string.interpolated.pug","string.unquoted.plain.in.yaml","string.unquoted.plain.out.yaml","string.unquoted.block.yaml","string.quoted.single.yaml","string.quoted.double.xml","string.quoted.single.xml","string.unquoted.cdata.xml","string.quoted.double.html","string.quoted.single.html","string.unquoted.html","string.quoted.single.handlebars","string.quoted.double.handlebars"],"settings":{"foreground":"#0000ff"}},{"scope":"string.regexp","settings":{"foreground":"#811f3f"}},{"scope":["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],"settings":{"foreground":"#0000ff"}},{"scope":["meta.template.expression"],"settings":{"foreground":"#000000"}},{"scope":["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],"settings":{"foreground":"#0451a5"}},{"scope":["support.type.vendored.property-name","support.type.property-name","source.css variable","source.coffee.embedded"],"settings":{"foreground":"#e50000"}},{"scope":["support.type.property-name.json"],"settings":{"foreground":"#0451a5"}},{"scope":"keyword","settings":{"foreground":"#0000ff"}},{"scope":"keyword.control","settings":{"foreground":"#0000ff"}},{"scope":"keyword.operator","settings":{"foreground":"#000000"}},{"scope":["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.alignof","keyword.operator.typeid","keyword.operator.alignas","keyword.operator.instanceof","keyword.operator.logical.python","keyword.operator.wordlike"],"settings":{"foreground":"#0000ff"}},{"scope":"keyword.other.unit","settings":{"foreground":"#098658"}},{"scope":["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],"settings":{"foreground":"#800000"}},{"scope":"support.function.git-rebase","settings":{"foreground":"#0451a5"}},{"scope":"constant.sha.git-rebase","settings":{"foreground":"#098658"}},{"scope":["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],"settings":{"foreground":"#000000"}},{"scope":"variable.language","settings":{"foreground":"#0000ff"}},{"scope":["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],"settings":{"foreground":"#795E26"}},{"scope":["support.class","support.type","entity.name.type","entity.name.namespace","entity.other.attribute","entity.name.scope-resolution","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],"settings":{"foreground":"#267f99"}},{"scope":["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class","punctuation.separator.namespace.ruby"],"settings":{"foreground":"#267f99"}},{"scope":["keyword.control","source.cpp keyword.operator.new","source.cpp keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],"settings":{"foreground":"#AF00DB"}},{"scope":["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],"settings":{"foreground":"#001080"}},{"scope":["variable.other.constant","variable.other.enummember"],"settings":{"foreground":"#0070C1"}},{"scope":["meta.object-literal.key"],"settings":{"foreground":"#001080"}},{"scope":["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],"settings":{"foreground":"#0451a5"}},{"scope":["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],"settings":{"foreground":"#d16969"}},{"scope":["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],"settings":{"foreground":"#811f3f"}},{"scope":"keyword.operator.quantifier.regexp","settings":{"foreground":"#000000"}},{"scope":["keyword.operator.or.regexp","keyword.control.anchor.regexp"],"settings":{"foreground":"#EE0000"}},{"scope":["constant.character","constant.other.option"],"settings":{"foreground":"#0000ff"}},{"scope":"constant.character.escape","settings":{"foreground":"#EE0000"}},{"scope":"entity.name.label","settings":{"foreground":"#000000"}}],"type":"light"}'));var m3="light-plus",h3="dark-plus",gz={bash:"sh",golang:"go",javascript:"js",markdown:"md",plaintext:"text",py:"python",shell:"sh",text:"text",ts:"ts",typescript:"ts",xml:"html",yml:"yaml",zsh:"sh"},bz=new Set(["css","go","html","js","jsx","json","md","python","sh","sql","text","tsx","ts","yaml"]);function Ml(t){let e=(t||"text").trim().toLowerCase().split(/\s+/)[0]||"text",n=gz[e]||e;return bz.has(n)?n:"text"}var ib;async function f3(t,e){let n=Ml(e);try{let r=(await yz()).codeToHtml(t,{lang:n,themes:{light:m3,dark:h3},defaultColor:!1});return xz(r,t)}catch{return g3(t)}}function g3(t){return t.replace(/\r\n/g,` +\v\f\x85\u2028\u2029])`),e));else if(l==="posix")if(!r&&(u==="graph"||u==="print")){if(a==="strict")throw new Error(`POSIX class "${u}" requires min target ES2024 or non-strict accuracy`);let p={graph:"!-~",print:" -~"}[u];c&&(p=`\0-${lt(p.codePointAt(0)-1)}${lt(p.codePointAt(2)+1)}-\u{10FFFF}`),n(Ke(Ga(`[${p}]`),e))}else n(Ke(ub(Ga(uz.get(u)),c),e));else if(l==="property")mb.has(Xs(u))||(t.key="sc");else if(l==="space")n(_r(Ai("space",{negate:c}),e));else if(l==="word")n(Ke(ub(Ga(qa),c),e));else throw new Error(`Unexpected character set kind "${l}"`)},Directive({node:t,parent:e,root:n,remove:a,replaceWith:r,removeAllPrevSiblings:i,removeAllNextSiblings:s}){let{kind:o,flags:l}=t;if(o==="flags")if(!l.enable&&!l.disable)a();else{let c=mn({flags:l});c.body[0].body=s(),r(Ke(c,e),{traverse:!0})}else if(o==="keep"){let c=n.body[0],p=n.body.length===1&&Xp(c,{type:"Group"})&&c.body[0].body.length===1?c.body[0]:n;if(e.parent!==p||p.body.length>1)throw new Error(me`Uses "\K" in a way that's unsupported`);let d=wr({behind:!0});d.body[0].body=i(),r(Ke(d,e))}else throw new Error(`Unexpected directive kind "${o}"`)},Flags({node:t,parent:e}){if(t.posixIsAscii)throw new Error('Unsupported flag "P"');if(t.textSegmentMode==="word")throw new Error('Unsupported flag "y{w}"');["digitIsAscii","extended","posixIsAscii","spaceIsAscii","wordIsAscii","textSegmentMode"].forEach(n=>delete t[n]),Object.assign(t,{global:!1,hasIndices:!1,multiline:!1,sticky:t.sticky??!1}),e.options={disable:{x:!0,n:!0},force:{v:!0}}},Group({node:t}){if(!t.flags)return;let{enable:e,disable:n}=t.flags;e?.extended&&delete e.extended,n?.extended&&delete n.extended,e?.dotAll&&n?.dotAll&&delete e.dotAll,e?.ignoreCase&&n?.ignoreCase&&delete e.ignoreCase,e&&!Object.keys(e).length&&delete t.flags.enable,n&&!Object.keys(n).length&&delete t.flags.disable,!t.flags.enable&&!t.flags.disable&&delete t.flags},LookaroundAssertion({node:t},e){let{kind:n}=t;n==="lookbehind"&&(e.passedLookbehind=!0)},NamedCallout({node:t,parent:e,replaceWith:n}){let{kind:a}=t;if(a==="fail")n(Ke(wr({negate:!0}),e));else throw new Error(`Unsupported named callout "(*${a.toUpperCase()}"`)},Quantifier({node:t}){if(t.body.type==="Quantifier"){let e=mn();e.body[0].body.push(t.body),t.body=Ke(e,t)}},Regex:{enter({node:t},{supportedGNodes:e}){let n=[],a=!1,r=!1;for(let i of t.body)if(i.body.length===1&&i.body[0].kind==="search_start")i.body.pop();else{let s=w3(i.body);s?(a=!0,Array.isArray(s)?n.push(...s):n.push(s)):r=!0}a&&!r&&n.forEach(i=>e.add(i))},exit(t,{accuracy:e,passedLookbehind:n,strategy:a}){if(e==="strict"&&n&&a)throw new Error(me`Uses "\G" in a way that requires non-strict accuracy`)}},Subroutine({node:t},{jsGroupNameMap:e}){let{ref:n}=t;typeof n=="string"&&!cb(n)&&(n=lb(n,e),t.ref=n)}},hz={Backreference({node:t},{multiplexCapturesToLeftByRef:e,reffedNodesByReferencer:n}){let{orphan:a,ref:r}=t;a||n.set(t,[...e.get(r).map(({node:i})=>i)])},CapturingGroup:{enter({node:t,parent:e,replaceWith:n,skip:a},{groupOriginByCopy:r,groupsByName:i,multiplexCapturesToLeftByRef:s,openRefs:o,reffedNodesByReferencer:l}){let c=r.get(t);if(c&&o.has(t.number)){let p=_r(c3(t.number),e);l.set(p,o.get(t.number)),n(p);return}o.set(t.number,t),s.set(t.number,[]),t.name&&Fl(s,t.name,[]);let u=s.get(t.name??t.number);for(let p=0;p<u.length;p++){let d=u[p];if(c===d.node||c&&c===d.origin||t===d.origin){u.splice(p,1);break}}if(s.get(t.number).push({node:t,origin:c}),t.name&&s.get(t.name).push({node:t,origin:c}),t.name){let p=Fl(i,t.name,new Map),d=!1;if(c)d=!0;else for(let m of p.values())if(!m.hasDuplicateNameToRemove){d=!0;break}i.get(t.name).set(t,{node:t,hasDuplicateNameToRemove:d})}},exit({node:t},{openRefs:e}){e.get(t.number)===t&&e.delete(t.number)}},Group:{enter({node:t},e){e.prevFlags=e.currentFlags,t.flags&&(e.currentFlags=nd(e.currentFlags,t.flags))},exit(t,e){e.currentFlags=e.prevFlags}},Subroutine({node:t,parent:e,replaceWith:n},a){let{isRecursive:r,ref:i}=t;if(r){let u=e;for(;(u=u.parent)&&!(u.type==="CapturingGroup"&&(u.name===i||u.number===i)););a.reffedNodesByReferencer.set(t,u);return}let s=a.subroutineRefMap.get(i),o=i===0,l=o?c3(0):b3(s,a.groupOriginByCopy,null),c=l;if(!o){let u=y3(yz(s,d=>d.type==="Group"&&!!d.flags)),p=u?nd(a.globalFlags,u):a.globalFlags;gz(p,a.currentFlags)||(c=mn({flags:xz(p)}),c.body[0].body.push(l))}n(Ke(c,e),{traverse:!o})}},fz={Backreference({node:t,parent:e,replaceWith:n},a){if(t.orphan){a.highestOrphanBackref=Math.max(a.highestOrphanBackref,t.ref);return}let i=a.reffedNodesByReferencer.get(t).filter(s=>bz(s,t));if(!i.length)n(Ke(wr({negate:!0}),e));else if(i.length>1){let s=mn({atomic:!0,body:i.reverse().map(o=>Pa({body:[Zp(o.number)]}))});n(Ke(s,e))}else t.ref=i[0].number},CapturingGroup({node:t},e){t.number=++e.numCapturesToLeft,t.name&&e.groupsByName.get(t.name).get(t).hasDuplicateNameToRemove&&delete t.name},Regex:{exit({node:t},e){let n=Math.max(e.highestOrphanBackref-e.numCapturesToLeft,0);for(let a=0;a<n;a++){let r=Yg();t.body.at(-1).body.push(r)}}},Subroutine({node:t},e){!t.isRecursive||t.ref===0||(t.ref=e.reffedNodesByReferencer.get(t).number)}};function g3(t){Ti(t,{"*"({node:e,parent:n}){e.parent=n}})}function gz(t,e){return t.dotAll===e.dotAll&&t.ignoreCase===e.ignoreCase}function bz(t,e){let n=e;do{if(n.type==="Regex")return!1;if(n.type==="Alternative")continue;if(n===t)return!1;let a=x3(n.parent);for(let r of a){if(r===n)break;if(r===t||k3(r,t))return!0}}while(n=n.parent);throw new Error("Unexpected path")}function b3(t,e,n,a){let r=Array.isArray(t)?[]:{};for(let[i,s]of Object.entries(t))i==="parent"?r.parent=Array.isArray(n)?a:n:s&&typeof s=="object"?r[i]=b3(s,e,r,n):(i==="type"&&s==="CapturingGroup"&&e.set(r,e.get(t)??t),r[i]=s);return r}function c3(t){let e=eb(t);return e.isRecursive=!0,e}function yz(t,e){let n=[];for(;t=t.parent;)(!e||e(t))&&n.push(t);return n}function lb(t,e){if(e.has(t))return e.get(t);let n=`$${e.size}_${t.replace(/^[^$_\p{IDS}]|[^$\u200C\u200D\p{IDC}]/ug,"_")}`;return e.set(t,n),n}function y3(t){let e=["dotAll","ignoreCase"],n={enable:{},disable:{}};return t.forEach(({flags:a})=>{e.forEach(r=>{a.enable?.[r]&&(delete n.disable[r],n.enable[r]=!0),a.disable?.[r]&&(n.disable[r]=!0)})}),Object.keys(n.enable).length||delete n.enable,Object.keys(n.disable).length||delete n.disable,n.enable||n.disable?n:null}function xz({dotAll:t,ignoreCase:e}){let n={};return(t||e)&&(n.enable={},t&&(n.enable.dotAll=!0),e&&(n.enable.ignoreCase=!0)),(!t||!e)&&(n.disable={},!t&&(n.disable.dotAll=!0),!e&&(n.disable.ignoreCase=!0)),n}function x3(t){if(!t)throw new Error("Node expected");let{body:e}=t;return Array.isArray(e)?e:e?[e]:null}function w3(t){let e=t.find(n=>n.kind==="search_start"||_z(n,{negate:!1})||!wz(n));if(!e)return null;if(e.kind==="search_start")return e;if(e.type==="LookaroundAssertion")return e.body[0].body[0];if(e.type==="CapturingGroup"||e.type==="Group"){let n=[];for(let a of e.body){let r=w3(a.body);if(!r)return null;Array.isArray(r)?n.push(...r):n.push(r)}return n}return null}function k3(t,e){let n=x3(t)??[];for(let a of n)if(a===e||k3(a,e))return!0;return!1}function wz({type:t}){return t==="Assertion"||t==="Directive"||t==="LookaroundAssertion"}function kz(t){let e=["Character","CharacterClass","CharacterSet"];return e.includes(t.type)||t.type==="Quantifier"&&t.min&&e.includes(t.body.type)}function _z(t,e){let n={negate:null,...e};return t.type==="LookaroundAssertion"&&(n.negate===null||t.negate===n.negate)&&t.body.length===1&&Xp(t.body[0],{type:"Assertion",kind:"search_start"})}function cb(t){return/^[$_\p{IDS}][$\u200C\u200D\p{IDC}]*$/u.test(t)}function Ga(t,e){let a=Jp(t,{...e,unicodePropertyMap:mb}).body;return a.length>1||a[0].body.length>1?mn({body:a}):a[0].body[0]}function ub(t,e){return t.negate=e,t}function _r(t,e){return t.parent=e,t}function Ke(t,e){return g3(t),t.parent=e,t}function vz(t,e){let n=m3(e),a=pb(n.target,"ES2024"),r=pb(n.target,"ES2025"),i=n.rules.recursionLimit;if(!Number.isInteger(i)||i<2||i>20)throw new Error("Invalid recursionLimit; use 2-20");let s=null,o=null;if(!r){let m=[t.flags.ignoreCase];Ti(t,$z,{getCurrentModI:()=>m.at(-1),popModI(){m.pop()},pushModI(h){m.push(h)},setHasCasedChar(){m.at(-1)?s=!0:o=!0}})}let l={dotAll:t.flags.dotAll,ignoreCase:!!((t.flags.ignoreCase||s)&&!o)},c=t,u={accuracy:n.accuracy,appliedGlobalFlags:l,captureMap:new Map,currentFlags:{dotAll:t.flags.dotAll,ignoreCase:t.flags.ignoreCase},inCharClass:!1,lastNode:c,originMap:t._originMap,recursionLimit:i,useAppliedIgnoreCase:!!(!r&&s&&o),useFlagMods:r,useFlagV:a,verbose:n.verbose};function p(m){return u.lastNode=c,c=m,az(Cz[m.type],`Unexpected node type "${m.type}"`)(m,u,p)}let d={pattern:t.body.map(p).join("|"),flags:p(t.flags),options:{...t.options}};return a||(delete d.options.force.v,d.options.disable.v=!0,d.options.unicodeSetsPlugin=null),d._captureTransfers=new Map,d._hiddenCaptures=[],u.captureMap.forEach((m,h)=>{m.hidden&&d._hiddenCaptures.push(h),m.transferTo&&Fl(d._captureTransfers,m.transferTo,[]).push(h)}),d}var $z={"*":{enter({node:t},e){if(p3(t)){let n=e.getCurrentModI();e.pushModI(t.flags?nd({ignoreCase:n},t.flags).ignoreCase:n)}},exit({node:t},e){p3(t)&&e.popModI()}},Backreference(t,e){e.setHasCasedChar()},Character({node:t},e){hb(lt(t.value))&&e.setHasCasedChar()},CharacterClassRange({node:t,skip:e},n){e(),_3(t,{firstOnly:!0}).length&&n.setHasCasedChar()},CharacterSet({node:t},e){t.kind==="property"&&f3.has(t.value)&&e.setHasCasedChar()}},Cz={Alternative({body:t},e,n){return t.map(n).join("")},Assertion({kind:t,negate:e}){if(t==="string_end")return"$";if(t==="string_start")return"^";if(t==="word_boundary")return e?me`\B`:me`\b`;throw new Error(`Unexpected assertion kind "${t}"`)},Backreference({ref:t},e){if(typeof t!="number")throw new Error("Unexpected named backref in transformed AST");if(!e.useFlagMods&&e.accuracy==="strict"&&e.currentFlags.ignoreCase&&!e.captureMap.get(t).ignoreCase)throw new Error("Use of case-insensitive backref to case-sensitive group requires target ES2025 or non-strict accuracy");return"\\"+t},CapturingGroup(t,e,n){let{body:a,name:r,number:i}=t,s={ignoreCase:e.currentFlags.ignoreCase},o=e.originMap.get(t);return o&&(s.hidden=!0,i>o.number&&(s.transferTo=o.number)),e.captureMap.set(i,s),`(${r?`?<${r}>`:""}${a.map(n).join("|")})`},Character({value:t},e){let n=lt(t),a=Js(t,{escDigit:e.lastNode.type==="Backreference",inCharClass:e.inCharClass,useFlagV:e.useFlagV});if(a!==n)return a;if(e.useAppliedIgnoreCase&&e.currentFlags.ignoreCase&&hb(n)){let r=h3(n);return e.inCharClass?r.join(""):r.length>1?`[${r.join("")}]`:r[0]}return n},CharacterClass(t,e,n){let{kind:a,negate:r,parent:i}=t,{body:s}=t;if(a==="intersection"&&!e.useFlagV)throw new Error("Use of character class intersection requires min target ES2024");Fn.bugFlagVLiteralHyphenIsRange&&e.useFlagV&&s.some(d3)&&(s=[Ks(45),...s.filter(c=>!d3(c))]);let o=()=>`[${r?"^":""}${s.map(n).join(a==="intersection"?"&&":"")}]`;if(!e.inCharClass){if((!e.useFlagV||Fn.bugNestedClassIgnoresNegation)&&!r){let u=s.filter(p=>p.type==="CharacterClass"&&p.kind==="union"&&p.negate);if(u.length){let p=mn(),d=p.body[0];return p.parent=i,d.parent=p,s=s.filter(m=>!u.includes(m)),t.body=s,s.length?(t.parent=d,d.body.push(t)):p.body.pop(),u.forEach(m=>{let h=Pa({body:[m]});m.parent=h,h.parent=p,p.body.push(h)}),n(p)}}e.inCharClass=!0;let c=o();return e.inCharClass=!1,c}let l=s[0];if(a==="union"&&!r&&l&&((!e.useFlagV||!e.verbose)&&i.kind==="union"&&!(Fn.bugFlagVLiteralHyphenIsRange&&e.useFlagV)||!e.verbose&&i.kind==="intersection"&&s.length===1&&l.type!=="CharacterClassRange"))return s.map(n).join("");if(!e.useFlagV&&i.type==="CharacterClass")throw new Error("Uses nested character class in a way that requires min target ES2024");return o()},CharacterClassRange(t,e){let n=t.min.value,a=t.max.value,r={escDigit:!1,inCharClass:!0,useFlagV:e.useFlagV},i=Js(n,r),s=Js(a,r),o=new Set;if(e.useAppliedIgnoreCase&&e.currentFlags.ignoreCase){let l=_3(t);Tz(l).forEach(u=>{o.add(Array.isArray(u)?`${Js(u[0],r)}-${Js(u[1],r)}`:Js(u,r))})}return`${i}-${s}${[...o].join("")}`},CharacterSet({kind:t,negate:e,value:n,key:a},r){if(t==="dot")return r.currentFlags.dotAll?r.appliedGlobalFlags.dotAll||r.useFlagMods?".":"[^]":me`[^\n]`;if(t==="digit")return e?me`\D`:me`\d`;if(t==="property"){if(r.useAppliedIgnoreCase&&r.currentFlags.ignoreCase&&f3.has(n))throw new Error(`Unicode property "${n}" can't be case-insensitive when other chars have specific case`);return`${e?me`\P`:me`\p`}{${a?`${a}=`:""}${n}}`}if(t==="word")return e?me`\W`:me`\w`;throw new Error(`Unexpected character set kind "${t}"`)},Flags(t,e){return(e.appliedGlobalFlags.ignoreCase?"i":"")+(t.dotAll?"s":"")+(t.sticky?"y":"")},Group({atomic:t,body:e,flags:n,parent:a},r,i){let s=r.currentFlags;n&&(r.currentFlags=nd(s,n));let o=e.map(i).join("|"),l=!r.verbose&&e.length===1&&a.type!=="Quantifier"&&!t&&(!r.useFlagMods||!n)?o:`(?${Mz(t,n,r.useFlagMods)}${o})`;return r.currentFlags=s,l},LookaroundAssertion({body:t,kind:e,negate:n},a,r){return`(?${`${e==="lookahead"?"":"<"}${n?"!":"="}`}${t.map(r).join("|")})`},Quantifier(t,e,n){return n(t.body)+Nz(t)},Subroutine({isRecursive:t,ref:e},n){if(!t)throw new Error("Unexpected non-recursive subroutine in transformed AST");let a=n.recursionLimit;return e===0?`(?R=${a})`:me`\g<${e}&R=${a}>`}},jz=new Set(["$","(",")","*","+",".","?","[","\\","]","^","{","|","}"]),Sz=new Set(["-","\\","]","^","["]),Ez=new Set(["(",")","-","/","[","\\","]","^","{","|","}","!","#","$","%","&","*","+",",",".",":",";","<","=",">","?","@","`","~"]),u3=new Map([[9,me`\t`],[10,me`\n`],[11,me`\v`],[12,me`\f`],[13,me`\r`],[8232,me`\u2028`],[8233,me`\u2029`],[65279,me`\uFEFF`]]),Az=/^\p{Cased}$/u;function hb(t){return Az.test(t)}function _3(t,e){let n=!!e?.firstOnly,a=t.min.value,r=t.max.value,i=[];if(a<65&&(r===65535||r>=131071)||a===65536&&r>=131071)return i;for(let s=a;s<=r;s++){let o=lt(s);if(!hb(o))continue;let l=h3(o).filter(c=>{let u=c.codePointAt(0);return u<a||u>r});if(l.length&&(i.push(...l),n))break}return i}function Js(t,{escDigit:e,inCharClass:n,useFlagV:a}){if(u3.has(t))return u3.get(t);if(t<32||t>126&&t<160||t>262143||e&&Iz(t))return t>255?`\\u{${t.toString(16).toUpperCase()}}`:`\\x${t.toString(16).toUpperCase().padStart(2,"0")}`;let r=n?a?Ez:Sz:jz,i=lt(t);return(r.has(i)?"\\":"")+i}function Tz(t){let e=t.map(r=>r.codePointAt(0)).sort((r,i)=>r-i),n=[],a=null;for(let r=0;r<e.length;r++)e[r+1]===e[r]+1?a??=e[r]:a===null?n.push(e[r]):(n.push([a,e[r]]),a=null);return n}function Mz(t,e,n){if(t)return">";let a="";if(e&&n){let{enable:r,disable:i}=e;a=(r?.ignoreCase?"i":"")+(r?.dotAll?"s":"")+(i?"-":"")+(i?.ignoreCase?"i":"")+(i?.dotAll?"s":"")}return`${a}:`}function Nz({kind:t,max:e,min:n}){let a;return!n&&e===1?a="?":!n&&e===1/0?a="*":n===1&&e===1/0?a="+":n===e?a=`{${n}}`:a=`{${n},${e===1/0?"":e}}`,a+{greedy:"",lazy:"?",possessive:"+"}[t]}function p3({type:t}){return t==="CapturingGroup"||t==="Group"||t==="LookaroundAssertion"}function Iz(t){return t>47&&t<58}function d3({type:t,value:e}){return t==="Character"&&e===45}var Rz=class db extends RegExp{#t=new Map;#e=null;#a;#n=null;#i=null;rawOptions={};get source(){return this.#a||"(?:)"}constructor(e,n,a){let r=!!a?.lazyCompile;if(e instanceof RegExp){if(a)throw new Error("Cannot provide options when copying a regexp");let i=e;super(i,n),this.#a=i.source,i instanceof db&&(this.#t=i.#t,this.#n=i.#n,this.#i=i.#i,this.rawOptions=i.rawOptions)}else{let i={hiddenCaptures:[],strategy:null,transfers:[],...a};super(r?"":e,n),this.#a=e,this.#t=Oz(i.hiddenCaptures,i.transfers),this.#i=i.strategy,this.rawOptions=a??{}}r||(this.#e=this)}exec(e){if(!this.#e){let{lazyCompile:r,...i}=this.rawOptions;this.#e=new db(this.#a,this.flags,i)}let n=this.global||this.sticky,a=this.lastIndex;if(this.#i==="clip_search"&&n&&a){this.lastIndex=0;let r=this.#s(e.slice(a));return r&&(zz(r,a,e,this.hasIndices),this.lastIndex+=a),r}return this.#s(e)}#s(e){this.#e.lastIndex=this.lastIndex;let n=super.exec.call(this.#e,e);if(this.lastIndex=this.#e.lastIndex,!n||!this.#t.size)return n;let a=[...n];n.length=1;let r;this.hasIndices&&(r=[...n.indices],n.indices.length=1);let i=[0];for(let s=1;s<a.length;s++){let{hidden:o,transferTo:l}=this.#t.get(s)??{};if(o?i.push(null):(i.push(n.length),n.push(a[s]),this.hasIndices&&n.indices.push(r[s])),l&&a[s]!==void 0){let c=i[l];if(!c)throw new Error(`Invalid capture transfer to "${c}"`);if(n[c]=a[s],this.hasIndices&&(n.indices[c]=r[s]),n.groups){this.#n||(this.#n=Bz(this.source));let u=this.#n.get(l);u&&(n.groups[u]=a[s],this.hasIndices&&(n.indices.groups[u]=r[s]))}}}return n}};function zz(t,e,n,a){if(t.index+=e,t.input=n,a){let r=t.indices;for(let s=0;s<r.length;s++){let o=r[s];o&&(r[s]=[o[0]+e,o[1]+e])}let i=r.groups;i&&Object.keys(i).forEach(s=>{let o=i[s];o&&(i[s]=[o[0]+e,o[1]+e])})}}function Oz(t,e){let n=new Map;for(let a of t)n.set(a,{hidden:!0});for(let[a,r]of e)for(let i of r)Fl(n,i,{}).transferTo=a;return n}function Bz(t){let e=/(?<capture>\((?:\?<(?![=!])(?<name>[^>]+)>|(?!\?)))|\\?./gsu,n=new Map,a=0,r=0,i;for(;i=e.exec(t);){let{0:s,groups:{capture:o,name:l}}=i;s==="["?a++:a?s==="]"&&a--:o&&(r++,l&&n.set(r,l))}return n}function v3(t,e){let n=Lz(t,e);return n.options?new Rz(n.pattern,n.flags,n.options):new RegExp(n.pattern,n.flags)}function Lz(t,e){let n=m3(e),a=Jp(t,{flags:n.flags,normalizeUnknownPropertyNames:!0,rules:{captureGroup:n.rules.captureGroup,singleline:n.rules.singleline},skipBackrefValidation:n.rules.allowOrphanBackrefs,unicodePropertyMap:mb}),r=dz(a,{accuracy:n.accuracy,asciiWordBoundaries:n.rules.asciiWordBoundaries,avoidSubclass:n.avoidSubclass,bestEffortTarget:n.target}),i=vz(r,n),s=o3(i.pattern,{captureTransfers:i._captureTransfers,hiddenCaptures:i._hiddenCaptures,mode:"external"}),o=rb(s.pattern),l=ab(o.pattern,{captureTransfers:s.captureTransfers,hiddenCaptures:s.hiddenCaptures}),c={pattern:l.pattern,flags:`${n.hasIndices?"d":""}${n.global?"g":""}${i.flags}${i.options.disable.v?"u":"v"}`};if(n.avoidSubclass){if(n.lazyCompileLength!==1/0)throw new Error("Lazy compilation requires subclass")}else{let u=l.hiddenCaptures.sort((h,b)=>h-b),p=Array.from(l.captureTransfers),d=r._strategy,m=c.pattern.length>=n.lazyCompileLength;(u.length||p.length||d||m)&&(c.options={...u.length&&{hiddenCaptures:u},...p.length&&{transfers:p},...d&&{strategy:d},...m&&{lazyCompile:m}})}return c}function $3(t,e){return v3(t,{global:!0,hasIndices:!0,lazyCompileLength:3e3,rules:{allowOrphanBackrefs:!0,asciiWordBoundaries:!0,captureGroup:!0,recursionLimit:5,singleline:!0},...e})}function fb(t={}){let e=Object.assign({target:"auto",cache:new Map},t);return e.regexConstructor||=n=>$3(n,{target:e.target}),{createScanner(n){return new M$(n,e)},createString(n){return{content:n}}}}var Dz=Object.freeze(JSON.parse(`{"displayName":"CSS","name":"css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#combinators"},{"include":"#selector"},{"include":"#at-rules"},{"include":"#rule-list"}],"repository":{"at-rules":{"patterns":[{"begin":"\\\\A\\\\uFEFF?(?i:(?=\\\\s*@charset\\\\b))","end":";|(?=$)","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.charset.css","patterns":[{"captures":{"1":{"name":"invalid.illegal.not-lowercase.charset.css"},"2":{"name":"invalid.illegal.leading-whitespace.charset.css"},"3":{"name":"invalid.illegal.no-whitespace.charset.css"},"4":{"name":"invalid.illegal.whitespace.charset.css"},"5":{"name":"invalid.illegal.not-double-quoted.charset.css"},"6":{"name":"invalid.illegal.unclosed-string.charset.css"},"7":{"name":"invalid.illegal.unexpected-characters.charset.css"}},"match":"\\\\G((?!@charset)@\\\\w+)|\\\\G(\\\\s+)|(@charset\\\\S[^;]*)|(?<=@charset)( {2,}|\\\\t+)|(?<=@charset )([^\\";]+)|(\\"[^\\"]+)$|(?<=\\")([^;]+)"},{"captures":{"1":{"name":"keyword.control.at-rule.charset.css"},"2":{"name":"punctuation.definition.keyword.css"}},"match":"((@)charset)(?=\\\\s)"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"|$","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"begin":"(?:\\\\G|^)(?=[^\\"]+$)","end":"$","name":"invalid.illegal.unclosed.string.css"}]}]},{"begin":"(?i)((@)import)(?:\\\\s+|$|(?=[\\"']|/\\\\*))","beginCaptures":{"1":{"name":"keyword.control.at-rule.import.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":";","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.import.css","patterns":[{"begin":"\\\\G\\\\s*(?=/\\\\*)","end":"(?<=\\\\*/)\\\\s*","patterns":[{"include":"#comment-block"}]},{"include":"#string"},{"include":"#url"},{"include":"#media-query-list"}]},{"begin":"(?i)((@)font-face)(?=\\\\s*|\\\\{|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.font-face.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":"(?!\\\\G)","name":"meta.at-rule.font-face.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#rule-list"}]},{"begin":"(?i)(@)page(?=[:{\\\\s]|/\\\\*|$)","captures":{"0":{"name":"keyword.control.at-rule.page.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*($|[:;{]))","name":"meta.at-rule.page.css","patterns":[{"include":"#rule-list"}]},{"begin":"(?i)(?=@media([(\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)media","beginCaptures":{"0":{"name":"keyword.control.at-rule.media.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.media.header.css","patterns":[{"include":"#media-query-list"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.media.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.media.end.bracket.curly.css"}},"name":"meta.at-rule.media.body.css","patterns":[{"include":"$self"}]}]},{"begin":"(?i)(?=@counter-style([\\"';{\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)counter-style","beginCaptures":{"0":{"name":"keyword.control.at-rule.counter-style.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*\\\\{)","name":"meta.at-rule.counter-style.header.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"captures":{"0":{"patterns":[{"include":"#escapes"}]}},"match":"[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.parameter.style-name.css"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}},"name":"meta.at-rule.counter-style.body.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#rule-list-innards"}]}]},{"begin":"(?i)(?=@document([\\"';{\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)document","beginCaptures":{"0":{"name":"keyword.control.at-rule.document.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.document.header.css","patterns":[{"begin":"(?i)(?<![-\\\\w])(url-prefix|domain|regexp)(\\\\()","beginCaptures":{"1":{"name":"support.function.document-rule.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.document-rule.css","patterns":[{"include":"#string"},{"include":"#comment-block"},{"include":"#escapes"},{"match":"[^\\"')\\\\s]+","name":"variable.parameter.document-rule.css"}]},{"include":"#url"},{"include":"#commas"},{"include":"#comment-block"},{"include":"#escapes"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.document.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.document.end.bracket.curly.css"}},"name":"meta.at-rule.document.body.css","patterns":[{"include":"$self"}]}]},{"begin":"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\"';{\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes","beginCaptures":{"0":{"name":"keyword.control.at-rule.keyframes.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*\\\\{)","name":"meta.at-rule.keyframes.header.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"captures":{"0":{"patterns":[{"include":"#escapes"}]}},"match":"[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.parameter.keyframe-list.css"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.keyframes.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.keyframes.end.bracket.curly.css"}},"name":"meta.at-rule.keyframes.body.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"captures":{"1":{"name":"entity.other.keyframe-offset.css"},"2":{"name":"entity.other.keyframe-offset.percentage.css"}},"match":"(?i)(?<![-\\\\w])(from|to)(?![-\\\\w])|([-+]?(?:\\\\d+(?:\\\\.\\\\d+)?|\\\\.\\\\d+)%)"},{"include":"#rule-list"}]}]},{"begin":"(?i)(?=@supports([(\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)|(?=;)","patterns":[{"begin":"(?i)\\\\G(@)supports","beginCaptures":{"0":{"name":"keyword.control.at-rule.supports.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.supports.header.css","patterns":[{"include":"#feature-query-operators"},{"include":"#feature-query"},{"include":"#comment-block"},{"include":"#escapes"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.supports.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.supports.end.bracket.curly.css"}},"name":"meta.at-rule.supports.body.css","patterns":[{"include":"$self"}]}]},{"begin":"(?i)((@)(-(ms|o)-)?viewport)(?=[\\"';{\\\\s]|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.viewport.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;@{])","name":"meta.at-rule.viewport.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"}]},{"begin":"(?i)((@)font-feature-values)(?=[\\"';{\\\\s]|/\\\\*|$)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.at-rule.font-feature-values.css"},"2":{"name":"punctuation.definition.keyword.css"}},"contentName":"variable.parameter.font-name.css","end":"(?=\\\\s*[;@{])","name":"meta.at-rule.font-features.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"}]},{"include":"#font-features"},{"begin":"(?i)((@)namespace)(?=[\\"';\\\\s]|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.namespace.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":";|(?=[@{])","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.namespace.css","patterns":[{"include":"#url"},{"captures":{"1":{"patterns":[{"include":"#comment-block"}]},"2":{"name":"entity.name.function.namespace-prefix.css","patterns":[{"include":"#escapes"}]}},"match":"(?i)(?:\\\\G|^|(?<=\\\\s))(?=(?<=\\\\s|^)[-A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\s*/\\\\*(?:[^*]|\\\\*[^/])*\\\\*/)(.*?)([-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*)"},{"include":"#comment-block"},{"include":"#escapes"},{"include":"#string"}]},{"begin":"(?i)(?=@[-\\\\w]+[^;]+;s*$)","end":"(?<=;)(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)[-\\\\w]+","beginCaptures":{"0":{"name":"keyword.control.at-rule.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":";","endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}},"name":"meta.at-rule.header.css"}]},{"begin":"(?i)(?=@[-\\\\w]+([({\\\\s]|/\\\\*|$))","end":"(?<=})(?!\\\\G)","patterns":[{"begin":"(?i)\\\\G(@)[-\\\\w]+","beginCaptures":{"0":{"name":"keyword.control.at-rule.css"},"1":{"name":"punctuation.definition.keyword.css"}},"end":"(?=\\\\s*[;{])","name":"meta.at-rule.header.css"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.end.bracket.curly.css"}},"name":"meta.at-rule.body.css","patterns":[{"include":"$self"}]}]}]},"color-keywords":{"patterns":[{"match":"(?i)(?<![-\\\\w])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![-\\\\w])","name":"support.constant.color.w3c-standard-color-name.css"},{"match":"(?i)(?<![-\\\\w])(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)(?![-\\\\w])","name":"support.constant.color.w3c-extended-color-name.css"},{"match":"(?i)(?<![-\\\\w])currentColor(?![-\\\\w])","name":"support.constant.color.current.css"},{"match":"(?i)(?<![-\\\\w])(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)(?![-\\\\w])","name":"invalid.deprecated.color.system.css"}]},"combinators":{"patterns":[{"match":"/deep/|>>>","name":"invalid.deprecated.combinator.css"},{"match":">>|[+>~]","name":"keyword.operator.combinator.css"}]},"commas":{"match":",","name":"punctuation.separator.list.comma.css"},"comment-block":{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.css"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.css"}},"name":"comment.block.css"},"escapes":{"patterns":[{"match":"\\\\\\\\\\\\h{1,6}","name":"constant.character.escape.codepoint.css"},{"begin":"\\\\\\\\$\\\\s*","end":"^(?<!\\\\G)","name":"constant.character.escape.newline.css"},{"match":"\\\\\\\\.","name":"constant.character.escape.css"}]},"feature-query":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.condition.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.condition.end.bracket.round.css"}},"name":"meta.feature-query.css","patterns":[{"include":"#feature-query-operators"},{"include":"#feature-query"}]},"feature-query-operators":{"patterns":[{"match":"(?i)(?<=[()\\\\s]|^|\\\\*/)(and|not|or)(?=[()\\\\s]|/\\\\*|$)","name":"keyword.operator.logical.feature.$1.css"},{"include":"#rule-list-innards"}]},"font-features":{"begin":"(?i)((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))(?=[\\"';@{\\\\s]|/\\\\*|$)","beginCaptures":{"1":{"name":"keyword.control.at-rule.\${3:/downcase}.css"},"2":{"name":"punctuation.definition.keyword.css"}},"end":"(?<=})","name":"meta.at-rule.\${3:/downcase}.css","patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}},"name":"meta.property-list.font-feature.css","patterns":[{"captures":{"0":{"patterns":[{"include":"#escapes"}]}},"match":"[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.font-feature.css"},{"include":"#rule-list-innards"}]}]},"functional-pseudo-classes":{"patterns":[{"begin":"(?i)((:)dir)(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"match":"(?i)(?<![-\\\\w])(ltr|rtl)(?![-\\\\w])","name":"support.constant.text-direction.css"},{"include":"#property-values"}]},{"begin":"(?i)((:)lang)(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"match":"(?<=[(,\\\\s])[A-Za-z]+(-[0-9A-Za-z]*|\\\\\\\\(?:\\\\h{1,6}|.))*(?=[),\\\\s])","name":"support.constant.language-range.css"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"include":"#escapes"},{"match":"(?<=[\\"\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=[\\"\\\\s])","name":"support.constant.language-range.css"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.single.css","patterns":[{"include":"#escapes"},{"match":"(?<=['\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=['\\\\s])","name":"support.constant.language-range.css"}]},{"include":"#commas"}]},{"begin":"(?i)((:)(?:not|has|matches|where|is))(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#selector-innards"}]},{"begin":"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\\\()","beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"match":"(?i)[-+]?(\\\\d+n?|n)(\\\\s*[-+]\\\\s*\\\\d+)?","name":"constant.numeric.css"},{"match":"(?i)even|odd","name":"support.constant.parity.css"}]}]},"functions":{"patterns":[{"begin":"(?i)(?<![-\\\\w])(calc)(\\\\()","beginCaptures":{"1":{"name":"support.function.calc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.calc.css","patterns":[{"match":"[*/]|(?<=\\\\s|^)[-+](?=\\\\s|$)","name":"keyword.operator.arithmetic.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(rgba?|hsla?|hwb|lab|oklab|lch|oklch|color)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.color.css","patterns":[{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])((?:-(?:webkit-|moz-|o-))?(?:repeating-)?(?:linear|radial|conic)-gradient)(\\\\()","beginCaptures":{"1":{"name":"support.function.gradient.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.gradient.css","patterns":[{"match":"(?i)(?<![-\\\\w])(from|to|at|in|hue)(?![-\\\\w])","name":"keyword.operator.gradient.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(-webkit-gradient)(\\\\()","beginCaptures":{"1":{"name":"invalid.deprecated.gradient.function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.gradient.invalid.deprecated.gradient.css","patterns":[{"begin":"(?i)(?<![-\\\\w])(from|to|color-stop)(\\\\()","beginCaptures":{"1":{"name":"invalid.deprecated.function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#property-values"}]},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate|color-mix|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia|styleset|stylistic|swash|symbols|cos|sin|tan|acos|asin|atan2??|hypot|sqrt|pow|log|exp|abs|sign)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.misc.css","patterns":[{"match":"(?i)(?<=[\\",\\\\s]|\\\\*/|^)\\\\d+x(?=[\\"'),\\\\s]|/\\\\*|$)","name":"constant.numeric.other.density.css"},{"include":"#property-values"},{"match":"[^\\"'),\\\\s]+","name":"variable.parameter.misc.css"}]},{"begin":"(?i)(?<![-\\\\w])(circle|ellipse|inset|polygon|rect)(\\\\()","beginCaptures":{"1":{"name":"support.function.shape.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.shape.css","patterns":[{"match":"(?i)(?<=\\\\s|^|\\\\*/)(at|round)(?=\\\\s|/\\\\*|$)","name":"keyword.operator.shape.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])(cubic-bezier|steps)(\\\\()","beginCaptures":{"1":{"name":"support.function.timing-function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.timing-function.css","patterns":[{"match":"(?i)(?<![-\\\\w])(start|end)(?=\\\\s*\\\\)|$)","name":"support.constant.step-direction.css"},{"include":"#property-values"}]},{"begin":"(?i)(?<![-\\\\w])((?:translate|scale|rotate)(?:[XYZ]|3D)?|matrix(?:3D)?|skew[XY]?|perspective)(\\\\()","beginCaptures":{"1":{"name":"support.function.transform.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"patterns":[{"include":"#property-values"}]},{"include":"#url"},{"begin":"(?i)(?<![-\\\\w])(var)(\\\\()","beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.variable.css","patterns":[{"match":"--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.argument.css"},{"include":"#property-values"}]}]},"media-feature-keywords":{"match":"(?i)(?<=^|[:\\\\s]|\\\\*/)(?:portrait|landscape|progressive|interlace|fullscreen|standalone|minimal-ui|browser|hover)(?=[)\\\\s]|$)","name":"support.constant.property-value.css"},"media-features":{"captures":{"1":{"name":"support.type.property-name.media.css"},"2":{"name":"support.type.property-name.media.css"},"3":{"name":"support.type.vendored.property-name.media.css"}},"match":"(?i)(?<=^|[(\\\\s]|\\\\*/)(?:((?:m(?:in-|ax-))?(?:height|width|aspect-ratio|color|color-index|monochrome|resolution)|grid|scan|orientation|display-mode|hover)|((?:m(?:in-|ax-))?device-(?:height|width|aspect-ratio))|((?:[-_](?:webkit|apple|khtml|epub|moz|ms|o|xv|ah|rim|atsc|hp|tc|wap|ro)|(?:mso|prince))-[-\\\\w]+(?=\\\\s*(?:/\\\\*(?:[^*]|\\\\*[^/])*\\\\*/)?\\\\s*[):])))(?=\\\\s|$|[):<=>]|/\\\\*)"},"media-query":{"begin":"\\\\G","end":"(?=\\\\s*[;{])","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#media-types"},{"match":"(?i)(?<=\\\\s|^|,|\\\\*/)(only|not)(?=[{\\\\s]|/\\\\*|$)","name":"keyword.operator.logical.$1.media.css"},{"match":"(?i)(?<=\\\\s|^|\\\\*/|\\\\))and(?=\\\\s|/\\\\*|$)","name":"keyword.operator.logical.and.media.css"},{"match":",(?:(?:\\\\s*,)+|(?=\\\\s*[);{]))","name":"invalid.illegal.comma.css"},{"include":"#commas"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.css"}},"patterns":[{"include":"#media-features"},{"include":"#media-feature-keywords"},{"match":":","name":"punctuation.separator.key-value.css"},{"match":">=|<=|[<=>]","name":"keyword.operator.comparison.css"},{"captures":{"1":{"name":"constant.numeric.css"},"2":{"name":"keyword.operator.arithmetic.css"},"3":{"name":"constant.numeric.css"}},"match":"(\\\\d+)\\\\s*(/)\\\\s*(\\\\d+)","name":"meta.ratio.css"},{"include":"#numeric-values"},{"include":"#comment-block"}]}]},"media-query-list":{"begin":"(?=\\\\s*[^;{])","end":"(?=\\\\s*[;{])","patterns":[{"include":"#media-query"}]},"media-types":{"captures":{"1":{"name":"support.constant.media.css"},"2":{"name":"invalid.deprecated.constant.media.css"}},"match":"(?i)(?<=^|[,\\\\s]|\\\\*/)(?:(all|print|screen|speech)|(aural|braille|embossed|handheld|projection|tty|tv))(?=$|[,;{\\\\s]|/\\\\*)"},"numeric-values":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.constant.css"}},"match":"(#)(?:\\\\h{3,4}|\\\\h{6}|\\\\h{8})\\\\b","name":"constant.other.color.rgb-value.hex.css"},{"captures":{"1":{"name":"keyword.other.unit.percentage.css"},"2":{"name":"keyword.other.unit.\${2:/downcase}.css"}},"match":"(?i)(?<![-\\\\w])[-+]?(?:[0-9]+(?:\\\\.[0-9]+)?|\\\\.[0-9]+)(?:(?<=[0-9])E[-+]?[0-9]+)?(?:(%)|(deg|grad|rad|turn|Hz|kHz|ch|cm|em|ex|fr|in|mm|mozmm|pc|pt|px|q|rem|rch|rex|rlh|ic|ric|rcap|vh|vw|vb|vi|svh|svw|svb|svi|dvh|dvw|dvb|dvi|lvh|lvw|lvb|lvi|vmax|vmin|cqw|cqi|cqh|cqb|cqmin|cqmax|dpi|dpcm|dppx|s|ms)\\\\b)?","name":"constant.numeric.css"}]},"property-keywords":{"patterns":[{"match":"(?i)(?<![-\\\\w])(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse|always|antialiased|auto|auto-fill|auto-fit|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow|flow-root|forwards|freeze|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83|jis90|justify|justify-all|kannada|keep-all|landscape|larger??|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]|reset-size|reverse|revert|revert-layer|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)(?![-\\\\w])","name":"support.constant.property-value.css"},{"match":"(?i)(?<![-\\\\w])(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman|urdu)(?![-\\\\w])","name":"support.constant.property-value.list-style-type.css"},{"match":"(?<![-\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+","name":"support.constant.vendored.property-value.css"},{"match":"(?<![-\\\\w])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![-\\\\w])","name":"support.constant.font-name.css"}]},"property-names":{"patterns":[{"match":"(?i)(?<![-\\\\w])(?:accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|aspect-ratio|backdrop-filter|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border|border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color|border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end|border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius|border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|container|container-name|container-type|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align|inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation|justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset|mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position|offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline|overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]|pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin|place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align|ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start|scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right|scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom|scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right|scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type|scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size|speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright|text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style|text-decoration-thickness|text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation|text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform|transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom|alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile|color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity|glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid|marker-start|rx??|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|[xy]|adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break|balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length|bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction|box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column|column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break|delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position|flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust|initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count|justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group|orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range|play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim|radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness|right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color|rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral|speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch|string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height|text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style|top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range|voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap)(?![-\\\\w])","name":"support.type.property-name.css"},{"match":"(?<![-\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+","name":"support.type.vendored.property-name.css"}]},"property-values":{"patterns":[{"include":"#commas"},{"include":"#comment-block"},{"include":"#escapes"},{"include":"#functions"},{"include":"#property-keywords"},{"include":"#unicode-range"},{"include":"#numeric-values"},{"include":"#color-keywords"},{"include":"#string"},{"match":"!\\\\s*important(?![-\\\\w])","name":"keyword.other.important.css"}]},"pseudo-classes":{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"invalid.illegal.colon.css"}},"match":"(?i)(:)(:*)(?:active|any-link|checked|default|disabled|empty|enabled|first|(?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover|in-range|indeterminate|invalid|left|link|optional|out-of-range|read-only|read-write|required|right|root|scope|target|unresolved|valid|visited)(?![-\\\\w]|\\\\s*[;}])","name":"entity.other.attribute-name.pseudo-class.css"},"pseudo-elements":{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"punctuation.definition.entity.css"}},"match":"(?i)(?:(::?)(?:after|before|first-letter|first-line|(?:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-a-z]+)|(::)(?:backdrop|content|grammar-error|marker|placeholder|selection|shadow|spelling-error))(?![-\\\\w]|\\\\s*[;}])","name":"entity.other.attribute-name.pseudo-element.css"},"rule-list":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"end":"}","endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}},"name":"meta.property-list.css","patterns":[{"include":"#rule-list-innards"}]},"rule-list-innards":{"patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#font-features"},{"match":"(?<![-\\\\w])--[-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*","name":"variable.css"},{"begin":"(?<![-A-Za-z])(?=[-A-Za-z])","end":"$|(?![-A-Za-z])","name":"meta.property-name.css","patterns":[{"include":"#property-names"}]},{"begin":"(:)\\\\s*","beginCaptures":{"1":{"name":"punctuation.separator.key-value.css"}},"contentName":"meta.property-value.css","end":"\\\\s*(;)|\\\\s*(?=[)}])","endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}},"patterns":[{"include":"#comment-block"},{"include":"#property-values"}]},{"match":";","name":"punctuation.terminator.rule.css"}]},"selector":{"begin":"(?=\\\\|?(?:[-#*.:A-\\\\[_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)))","end":"(?=\\\\s*[)/@{])","name":"meta.selector.css","patterns":[{"include":"#selector-innards"}]},"selector-innards":{"patterns":[{"include":"#comment-block"},{"include":"#commas"},{"include":"#escapes"},{"include":"#combinators"},{"captures":{"1":{"name":"entity.other.namespace-prefix.css"},"2":{"name":"punctuation.separator.css"}},"match":"(?:^|(?<=[(,;}\\\\s]))(?![-*\\\\w]+\\\\|(?![-#*.:A-\\\\[_a-z[^\\\\x00-\\\\x7F]]))([-A-Z_a-z[^\\\\x00-\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*|\\\\*)?(\\\\|)"},{"include":"#tag-names"},{"match":"\\\\*","name":"entity.name.tag.wildcard.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}},"match":"(?<![-@\\\\w])([#.])((?:-?[0-9]|-(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)|(?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*(?:[]!\\"%-(*;<?@^\`|}]|/(?!\\\\*))+)(?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))*)","name":"invalid.illegal.bad-identifier.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}},"match":"(\\\\.)((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)","name":"entity.other.attribute-name.class.css"},{"captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}},"match":"(#)(-?(?![0-9])(?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)","name":"entity.other.attribute-name.id.css"},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.entity.begin.bracket.square.css"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.entity.end.bracket.square.css"}},"name":"meta.attribute-selector.css","patterns":[{"include":"#comment-block"},{"include":"#string"},{"captures":{"1":{"name":"storage.modifier.ignore-case.css"}},"match":"(?<=[\\"'\\\\s]|^|\\\\*/)\\\\s*([Ii])\\\\s*(?=[]\\\\s]|/\\\\*|$)"},{"captures":{"1":{"name":"string.unquoted.attribute-value.css","patterns":[{"include":"#escapes"}]}},"match":"(?<==)\\\\s*((?!/\\\\*)(?:[^]\\"'\\\\\\\\\\\\s]|\\\\\\\\.)+)"},{"include":"#escapes"},{"match":"[$*^|~]?=","name":"keyword.operator.pattern.css"},{"match":"\\\\|","name":"punctuation.separator.css"},{"captures":{"1":{"name":"entity.other.namespace-prefix.css","patterns":[{"include":"#escapes"}]}},"match":"(-?(?!\\\\d)(?:[-\\\\w[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+|\\\\*)(?=\\\\|(?![=\\\\s]|$|])(?:-?(?!\\\\d)|[-\\\\\\\\\\\\w[^\\\\x00-\\\\x7F]]))"},{"captures":{"1":{"name":"entity.other.attribute-name.css","patterns":[{"include":"#escapes"}]}},"match":"(-?(?!\\\\d)(?>[-\\\\w[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.))+)\\\\s*(?=[]$*=^|~]|/\\\\*)"}]},{"include":"#pseudo-classes"},{"include":"#pseudo-elements"},{"include":"#functional-pseudo-classes"},{"match":"(?<![-@\\\\w])(?=[a-z]\\\\w*-)(?:(?![A-Z])[-\\\\w])+(?![-(\\\\w])","name":"entity.name.tag.custom.css"}]},"string":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"\\"|(?<!\\\\\\\\)(?=$|\\\\n)","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.double.css","patterns":[{"begin":"(?:\\\\G|^)(?=(?:[^\\"\\\\\\\\]|\\\\\\\\.)+$)","end":"$","name":"invalid.illegal.unclosed.string.css","patterns":[{"include":"#escapes"}]},{"include":"#escapes"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"end":"'|(?<!\\\\\\\\)(?=$|\\\\n)","endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}},"name":"string.quoted.single.css","patterns":[{"begin":"(?:\\\\G|^)(?=(?:[^'\\\\\\\\]|\\\\\\\\.)+$)","end":"$","name":"invalid.illegal.unclosed.string.css","patterns":[{"include":"#escapes"}]},{"include":"#escapes"}]}]},"tag-names":{"match":"(?i)(?<![-:\\\\w])(?:a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound|big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i|iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark|marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rtc??|ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong|style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|ul??|var|video|wbr|xmp|altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern|annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced|mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot|mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup|msup|mtable|mtd|mtext|mtr|munder|munderover|semantics)(?=[#)+,.:>\\\\[{|~\\\\s]|/\\\\*|$)","name":"entity.name.tag.css"},"unicode-range":{"captures":{"0":{"name":"constant.other.unicode-range.css"},"1":{"name":"punctuation.separator.dash.unicode-range.css"}},"match":"(?<![-\\\\w])[Uu]\\\\+[?\\\\h]{1,6}(?:(-)\\\\h{1,6})?(?![-\\\\w])"},"url":{"begin":"(?i)(?<![-@\\\\w])(url)(\\\\()","beginCaptures":{"1":{"name":"support.function.url.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}},"name":"meta.function.url.css","patterns":[{"match":"[^\\"')\\\\s]+","name":"variable.parameter.url.css"},{"include":"#string"},{"include":"#comment-block"},{"include":"#escapes"}]}},"scopeName":"source.css"}`)),rd=[Dz];var Fz=Object.freeze(JSON.parse(`{"displayName":"Go","name":"go","patterns":[{"include":"#statements"}],"repository":{"after_control_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"variable.other.go"}]}},"match":"(?<=\\\\brange\\\\b|;|\\\\bif\\\\b|\\\\bfor\\\\b|[<>]|<=|>=|==|!=|\\\\w[-%*+/]|\\\\w[-%*+/]=|\\\\|\\\\||&&)\\\\s*((?![]\\\\[]+)[-\\\\]!%*+./:<=>\\\\[_[:alnum:]]+)\\\\s*(?=\\\\{)"},"brackets":{"patterns":[{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"$self"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"$self"}]},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"$self"}]}]},"built_in_functions":{"patterns":[{"match":"\\\\b(append|cap|close|complex|copy|delete|imag|len|panic|print|println|real|recover|min|max|clear)\\\\b(?=\\\\()","name":"entity.name.function.support.builtin.go"},{"begin":"\\\\b(new)\\\\b(\\\\()","beginCaptures":{"1":{"name":"entity.name.function.support.builtin.go"},"2":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#functions"},{"include":"#struct_variables_types"},{"include":"#support_functions"},{"include":"#type-declarations"},{"include":"#generic_types"},{"match":"\\\\w+","name":"entity.name.type.go"},{"include":"$self"}]},{"begin":"\\\\b(make)\\\\b(\\\\()((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?[]*\\\\[]+{0,1}(?:(?!\\\\bmap\\\\b)[.\\\\w]+)?(\\\\[(?:\\\\S+(?:,\\\\s*\\\\S+)*)?])?,?)?","beginCaptures":{"1":{"name":"entity.name.function.support.builtin.go"},"2":{"name":"punctuation.definition.begin.bracket.round.go"},"3":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"$self"}]}]},"comments":{"patterns":[{"begin":"(/\\\\*)","beginCaptures":{"1":{"name":"punctuation.definition.comment.go"}},"end":"(\\\\*/)","endCaptures":{"1":{"name":"punctuation.definition.comment.go"}},"name":"comment.block.go"},{"begin":"(//)","beginCaptures":{"1":{"name":"punctuation.definition.comment.go"}},"end":"\\\\n|$","name":"comment.line.double-slash.go"}]},"const_assignment":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.constant.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\bconst\\\\b)\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"begin":"(?<=\\\\bconst\\\\b)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.constant.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"include":"$self"}]}]},"delimiters":{"patterns":[{"match":",","name":"punctuation.other.comma.go"},{"match":"\\\\.(?!\\\\.\\\\.)","name":"punctuation.other.period.go"},{"match":":(?!=)","name":"punctuation.other.colon.go"}]},"double_parentheses_types":{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<!\\\\w)(\\\\([]*\\\\[]+{0,1}[.\\\\w]+(?:\\\\[(?:[]*.\\\\[{}\\\\w]+(?:,\\\\s*[]*.\\\\[{}\\\\w]+)*)?])?\\\\))(?=\\\\()"},"function_declaration":{"begin":"^\\\\b(func)\\\\b\\\\s*(\\\\([^)]+\\\\)\\\\s*)?(?:(\\\\w+)(?=[(\\\\[]))?","beginCaptures":{"1":{"name":"keyword.function.go"},"2":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"captures":{"1":{"name":"variable.parameter.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(\\\\w+\\\\s+)?([*.\\\\w]+(?:\\\\[(?:[*.\\\\w]+(?:,\\\\s+)?)+{0,1}])?)"},{"include":"$self"}]}]},"3":{"patterns":[{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"entity.name.function.go"}]}},"end":"(?<=\\\\))\\\\s*((?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?![]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b)[-\\\\]*.\\\\[\\\\w]+)?\\\\s*(?=\\\\{)","endCaptures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\))\\\\s*((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[-\\\\]*.<>\\\\[\\\\w]+\\\\s*(?:/[*/].*)?)$"},{"include":"$self"}]},"function_param_types":{"patterns":[{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#type-declarations-without-brackets"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+(?=(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b\\\\s*\\\\{)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"(?:(?<=\\\\()|^\\\\s*)((?:\\\\b\\\\w+,\\\\s*)+(?:/[*/].*)?)$"},{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.parameter.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?:[]*.\\\\[\\\\w]+{0,1}(?:\\\\bfunc\\\\b\\\\([^)]+{0,1}\\\\)(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*)+(?:[]*.\\\\[\\\\w]+|\\\\([^)]+{0,1}\\\\))?|(?:[]*\\\\[]+{0,1}[*.\\\\w]+(?:\\\\[[^]]+])?[*.\\\\w]+{0,1})+))"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"([.\\\\w]+)"},{"include":"$self"}]},"functions":{"begin":"\\\\b(func)\\\\b(?=\\\\()","beginCaptures":{"1":{"name":"keyword.function.go"}},"end":"(?<=\\\\))(\\\\s*(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+)?(\\\\s*(?:[]*\\\\[]+{0,1}[*.\\\\w]+)?(?:\\\\[(?:[*.\\\\w]+{0,1}(?:\\\\[[^]]+{0,1}])?(?:,\\\\s+)?)+]|\\\\([^)]+{0,1}\\\\))?[*.\\\\w]+{0,1}\\\\s*(?=\\\\{)|\\\\s*(?:[]*\\\\[]+{0,1}(?!\\\\bfunc\\\\b)[*.\\\\w]+(?:\\\\[(?:[*.\\\\w]+{0,1}(?:\\\\[[^]]+{0,1}])?(?:,\\\\s+)?)+])?[*.\\\\w]+{0,1}|\\\\([^)]+{0,1}\\\\)))?","endCaptures":{"1":{"patterns":[{"include":"#type-declarations"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"include":"#parameter-variable-types"}]},"functions_inline":{"captures":{"1":{"name":"keyword.function.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"},{"include":"$self"}]},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b(func)\\\\b(\\\\([^/]*?\\\\)\\\\s+\\\\([^/]*?\\\\))\\\\s+(?=\\\\{)"},"generic_param_types":{"patterns":[{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#type-declarations-without-brackets"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+(?=(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b\\\\s*\\\\{)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.parameter.go"}]}},"match":"(?:(?<=\\\\()|^\\\\s*)((?:\\\\b\\\\w+,\\\\s*)+(?:/[*/].*)?)$"},{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.parameter.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"3":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\b\\\\w+,\\\\s*)+{0,1}\\\\b\\\\w+)\\\\s+((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?:[]*.\\\\[\\\\w]+{0,1}(?:\\\\bfunc\\\\b\\\\([^)]+{0,1}\\\\)(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*)+(?:[*.\\\\w]+|\\\\([^)]+{0,1}\\\\))?|(?:(?:[*.~\\\\w]+|\\\\[(?:[*.\\\\w]+{0,1}(?:\\\\[[^]]+{0,1}])?(?:,\\\\s+)?)+])[*.\\\\w]+{0,1})+))"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b([.\\\\w]+)"},{"include":"$self"}]},"generic_types":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"patterns":[{"include":"#parameter-variable-types"}]}},"match":"([*.\\\\w]+)(\\\\[[^]]+{0,1}])"},"group-functions":{"patterns":[{"include":"#function_declaration"},{"include":"#functions_inline"},{"include":"#functions"},{"include":"#built_in_functions"},{"include":"#support_functions"}]},"group-types":{"patterns":[{"include":"#other_struct_interface_expressions"},{"include":"#type_assertion_inline"},{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#single_type"},{"include":"#multi_types"},{"include":"#struct_interface_declaration"},{"include":"#double_parentheses_types"},{"include":"#switch_types"},{"include":"#type-declarations"}]},"group-variables":{"patterns":[{"include":"#const_assignment"},{"include":"#var_assignment"},{"include":"#variable_assignment"},{"include":"#label_loop_variables"},{"include":"#slice_index_variables"},{"include":"#property_variables"},{"include":"#switch_variables"},{"include":"#other_variables"}]},"hover":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"match":"\\\\binvalid\\\\b\\\\s+\\\\btype\\\\b","name":"invalid.field.go"},{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=^\\\\bfield\\\\b)\\\\s+([*.\\\\w]+)\\\\s+([\\\\s\\\\S]+)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=^\\\\breturns\\\\b)\\\\s+([\\\\s\\\\S]+)"}]},"import":{"patterns":[{"begin":"\\\\b(import)\\\\s+","beginCaptures":{"1":{"name":"keyword.control.import.go"}},"end":"(?!\\\\G)","patterns":[{"include":"#imports"}]}]},"imports":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.import.go"}]},"2":{"name":"string.quoted.double.go"},"3":{"name":"punctuation.definition.string.begin.go"},"4":{"name":"entity.name.import.go"},"5":{"name":"punctuation.definition.string.end.go"}},"match":"(\\\\s*[.\\\\w]+)?\\\\s*((\\")([^\\"]*)(\\"))"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.imports.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.imports.end.bracket.round.go"}},"patterns":[{"include":"#comments"},{"include":"#imports"}]},{"include":"$self"}]},"interface_variables_types":{"begin":"\\\\b(interface)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.interface.go"},"2":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#interface_variables_types_field"},{"include":"$self"}]},"interface_variables_types_field":{"patterns":[{"include":"#support_functions"},{"include":"#type-declarations-without-brackets"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"([.\\\\w]+)"}]},"keywords":{"patterns":[{"match":"\\\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\\\b","name":"keyword.control.go"},{"match":"\\\\bchan\\\\b","name":"keyword.channel.go"},{"match":"\\\\bconst\\\\b","name":"keyword.const.go"},{"match":"\\\\bvar\\\\b","name":"keyword.var.go"},{"match":"\\\\bfunc\\\\b","name":"keyword.function.go"},{"match":"\\\\binterface\\\\b","name":"keyword.interface.go"},{"match":"\\\\bmap\\\\b","name":"keyword.map.go"},{"match":"\\\\bstruct\\\\b","name":"keyword.struct.go"},{"match":"\\\\bimport\\\\b","name":"keyword.control.import.go"},{"match":"\\\\btype\\\\b","name":"keyword.type.go"}]},"label_loop_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.label.go"}]}},"match":"^(\\\\s*\\\\w+:\\\\s*|\\\\s*\\\\b(?:break|goto|continue)\\\\b\\\\s+\\\\w+(?:\\\\s*/[*/]\\\\s*.*)?)$"},"language_constants":{"captures":{"1":{"name":"constant.language.boolean.go"},"2":{"name":"constant.language.null.go"},"3":{"name":"constant.language.iota.go"}},"match":"\\\\b(?:(true|false)|(nil)|(iota))\\\\b"},"map_types":{"begin":"\\\\b(map)\\\\b(\\\\[)","beginCaptures":{"1":{"name":"keyword.map.go"},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"(])((?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?![]*\\\\[]+{0,1}\\\\b(?:func|struct|map)\\\\b)[]*\\\\[]+{0,1}[.\\\\w]+(?:\\\\[(?:[]*.\\\\[{}\\\\w]+(?:,\\\\s*[]*.\\\\[{}\\\\w]+)*)?])?)?","endCaptures":{"1":{"name":"punctuation.definition.end.bracket.square.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"include":"#functions"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"multi_types":{"begin":"\\\\b(type)\\\\b\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.type.go"},"2":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#struct_variables_types"},{"include":"#interface_variables_types"},{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"numeric_literals":{"captures":{"0":{"patterns":[{"begin":"(?=.)","end":"\\\\n|$","patterns":[{"captures":{"1":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"2":{"name":"punctuation.separator.constant.numeric.go"},"3":{"name":"constant.numeric.decimal.point.go"},"4":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"5":{"name":"punctuation.separator.constant.numeric.go"},"6":{"name":"keyword.other.unit.exponent.decimal.go"},"7":{"name":"keyword.operator.plus.exponent.decimal.go"},"8":{"name":"keyword.operator.minus.exponent.decimal.go"},"9":{"name":"constant.numeric.exponent.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"10":{"name":"keyword.other.unit.imaginary.go"},"11":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"12":{"name":"punctuation.separator.constant.numeric.go"},"13":{"name":"keyword.other.unit.exponent.decimal.go"},"14":{"name":"keyword.operator.plus.exponent.decimal.go"},"15":{"name":"keyword.operator.minus.exponent.decimal.go"},"16":{"name":"constant.numeric.exponent.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"17":{"name":"keyword.other.unit.imaginary.go"},"18":{"name":"constant.numeric.decimal.point.go"},"19":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"20":{"name":"punctuation.separator.constant.numeric.go"},"21":{"name":"keyword.other.unit.exponent.decimal.go"},"22":{"name":"keyword.operator.plus.exponent.decimal.go"},"23":{"name":"keyword.operator.minus.exponent.decimal.go"},"24":{"name":"constant.numeric.exponent.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"25":{"name":"keyword.other.unit.imaginary.go"},"26":{"name":"keyword.other.unit.hexadecimal.go"},"27":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"28":{"name":"punctuation.separator.constant.numeric.go"},"29":{"name":"constant.numeric.hexadecimal.go"},"30":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"31":{"name":"punctuation.separator.constant.numeric.go"},"32":{"name":"keyword.other.unit.exponent.hexadecimal.go"},"33":{"name":"keyword.operator.plus.exponent.hexadecimal.go"},"34":{"name":"keyword.operator.minus.exponent.hexadecimal.go"},"35":{"name":"constant.numeric.exponent.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"36":{"name":"keyword.other.unit.imaginary.go"},"37":{"name":"keyword.other.unit.hexadecimal.go"},"38":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"39":{"name":"punctuation.separator.constant.numeric.go"},"40":{"name":"keyword.other.unit.exponent.hexadecimal.go"},"41":{"name":"keyword.operator.plus.exponent.hexadecimal.go"},"42":{"name":"keyword.operator.minus.exponent.hexadecimal.go"},"43":{"name":"constant.numeric.exponent.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"44":{"name":"keyword.other.unit.imaginary.go"},"45":{"name":"keyword.other.unit.hexadecimal.go"},"46":{"name":"constant.numeric.hexadecimal.go"},"47":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"48":{"name":"punctuation.separator.constant.numeric.go"},"49":{"name":"keyword.other.unit.exponent.hexadecimal.go"},"50":{"name":"keyword.operator.plus.exponent.hexadecimal.go"},"51":{"name":"keyword.operator.minus.exponent.hexadecimal.go"},"52":{"name":"constant.numeric.exponent.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"53":{"name":"keyword.other.unit.imaginary.go"}},"match":"\\\\G(?:(?:(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)((?<=[0-9])\\\\.|\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)?(?:(?<!_)([Ee])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*))?(i(?!\\\\w))?(?:\\\\n|$)|(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)(?<!_)([Ee])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))|((?<=[0-9])\\\\.|\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)(?:(?<!_)([Ee])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*))?(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])_?(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)((?<=\\\\h)\\\\.|\\\\.(?=\\\\h))(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)?(?<!_)([Pp])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])_?(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)(?<!_)([Pp])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])((?<=\\\\h)\\\\.|\\\\.(?=\\\\h))(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)(?<!_)([Pp])(\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\h)_(?=\\\\h))*)(i(?!\\\\w))?(?:\\\\n|$))"},{"captures":{"1":{"name":"constant.numeric.decimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"2":{"name":"punctuation.separator.constant.numeric.go"},"3":{"name":"keyword.other.unit.imaginary.go"},"4":{"name":"keyword.other.unit.binary.go"},"5":{"name":"constant.numeric.binary.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"6":{"name":"punctuation.separator.constant.numeric.go"},"7":{"name":"keyword.other.unit.imaginary.go"},"8":{"name":"keyword.other.unit.octal.go"},"9":{"name":"constant.numeric.octal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"10":{"name":"punctuation.separator.constant.numeric.go"},"11":{"name":"keyword.other.unit.imaginary.go"},"12":{"name":"keyword.other.unit.hexadecimal.go"},"13":{"name":"constant.numeric.hexadecimal.go","patterns":[{"match":"(?<=\\\\h)_(?=\\\\h)","name":"punctuation.separator.constant.numeric.go"}]},"14":{"name":"punctuation.separator.constant.numeric.go"},"15":{"name":"keyword.other.unit.imaginary.go"}},"match":"\\\\G(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\h)_(?=\\\\h)))*)(i(?!\\\\w))?(?:\\\\n|$)|(0[Bb])_?([01](?:[01]|((?<=\\\\h)_(?=\\\\h)))*)(i(?!\\\\w))?(?:\\\\n|$))|(0[Oo]?)_?((?:[0-7]|((?<=\\\\h)_(?=\\\\h)))+)(i(?!\\\\w))?(?:\\\\n|$))|(0[Xx])_?(\\\\h(?:\\\\h|((?<=\\\\h)_(?=\\\\h)))*)(i(?!\\\\w))?(?:\\\\n|$))"},{"match":"(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])+","name":"invalid.illegal.constant.numeric.go"}]}]}},"match":"(?<!\\\\w)\\\\.?\\\\d(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])*"},"operators":{"patterns":[{"match":"(?<!\\\\w)[\\\\&*]+(?!\\\\d)(?=[]\\\\[\\\\w]|<-)","name":"keyword.operator.address.go"},{"match":"<-","name":"keyword.operator.channel.go"},{"match":"--","name":"keyword.operator.decrement.go"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.go"},{"match":"(==|!=|<=|>=|<(?!<)|>(?!>))","name":"keyword.operator.comparison.go"},{"match":"(&&|\\\\|\\\\||!)","name":"keyword.operator.logical.go"},{"match":"((?:|[-%*+/:^|]|<<|>>|&\\\\^?)=)","name":"keyword.operator.assignment.go"},{"match":"([-%*+/])","name":"keyword.operator.arithmetic.go"},{"match":"(&(?!\\\\^)|[\\\\^|]|&\\\\^|<<|>>|~)","name":"keyword.operator.arithmetic.bitwise.go"},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.ellipsis.go"}]},"other_struct_interface_expressions":{"patterns":[{"include":"#after_control_variables"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b(?!(?:struct|interface)\\\\b)([.\\\\w]+)(?<brackets>\\\\[(?:[^]\\\\[]|\\\\g<brackets>)*])?(?=\\\\{)"}]},"other_variables":{"match":"\\\\w+","name":"variable.other.go"},"package_name":{"patterns":[{"begin":"\\\\b(package)\\\\s+","beginCaptures":{"1":{"name":"keyword.package.go"}},"end":"(?!\\\\G)","patterns":[{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"entity.name.type.package.go"}]}]},"parameter-variable-types":{"patterns":[{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"begin":"([*.\\\\w]+)?(\\\\[)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"2":{"name":"punctuation.definition.begin.bracket.square.go"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.square.go"}},"patterns":[{"include":"#generic_param_types"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"}]}]},"property_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]}},"match":"\\\\b([.\\\\w]+:(?!=))"},"raw_string_literals":{"begin":"\`","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.go"}},"end":"\`","endCaptures":{"0":{"name":"punctuation.definition.string.end.go"}},"name":"string.quoted.raw.go","patterns":[{"include":"#string_placeholder"}]},"runes":{"patterns":[{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.go"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.go"}},"name":"string.quoted.rune.go","patterns":[{"match":"\\\\G(\\\\\\\\([0-7]{3}|[\\"'\\\\\\\\abfnrtv]|x\\\\h{2}|u\\\\h{4}|U\\\\h{8})|.)(?=')","name":"constant.other.rune.go"},{"match":"[^']+","name":"invalid.illegal.unknown-rune.go"}]}]},"single_type":{"patterns":[{"captures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"3":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"},{"include":"$self"}]},{"include":"#type-declarations"},{"include":"#generic_types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b(type)\\\\b\\\\s*([*.\\\\w]+)\\\\s+(?!(?:=\\\\s*)?[]*\\\\[]+{0,1}\\\\b(?:struct|interface)\\\\b)([\\\\s\\\\S]+)"},{"begin":"(?:^|\\\\s+)\\\\b(type)\\\\b\\\\s*([*.\\\\w]+)(?=\\\\[)","beginCaptures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"end":"(?<=])(\\\\s+(?:=\\\\s*)?(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}(?![]*\\\\[]+{0,1}\\\\b(?:struct|interface|func)\\\\b)[-\\\\]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?","endCaptures":{"1":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"patterns":[{"include":"#struct_variables_types"},{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}]},"slice_index_variables":{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.go"}]}},"match":"(?<=\\\\w\\\\[)((?:\\\\b[-%\\\\&*+./<>|\\\\w]+:|:\\\\b[-%\\\\&*+./<>|\\\\w]+)(?:\\\\b[-%\\\\&*+./<>|\\\\w]+)?(?::\\\\b[-%\\\\&*+./<>|\\\\w]+)?)(?=])"},"statements":{"patterns":[{"include":"#package_name"},{"include":"#import"},{"include":"#syntax_errors"},{"include":"#group-functions"},{"include":"#group-types"},{"include":"#group-variables"},{"include":"#hover"}]},"storage_types":{"patterns":[{"match":"\\\\bbool\\\\b","name":"storage.type.boolean.go"},{"match":"\\\\bbyte\\\\b","name":"storage.type.byte.go"},{"match":"\\\\berror\\\\b","name":"storage.type.error.go"},{"match":"\\\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\\\b","name":"storage.type.numeric.go"},{"match":"\\\\brune\\\\b","name":"storage.type.rune.go"},{"match":"\\\\bstring\\\\b","name":"storage.type.string.go"},{"match":"\\\\buintptr\\\\b","name":"storage.type.uintptr.go"},{"match":"\\\\bany\\\\b","name":"entity.name.type.any.go"},{"match":"\\\\bcomparable\\\\b","name":"entity.name.type.comparable.go"}]},"string_escaped_char":{"patterns":[{"match":"\\\\\\\\([0-7]{3}|[\\"'\\\\\\\\abfnrtv]|x\\\\h{2}|u\\\\h{4}|U\\\\h{8})","name":"constant.character.escape.go"},{"match":"\\\\\\\\[^\\"'0-7Uabfnrtuvx]","name":"invalid.illegal.unknown-escape.go"}]},"string_literals":{"patterns":[{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.go"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.go"}},"name":"string.quoted.double.go","patterns":[{"include":"#string_escaped_char"},{"include":"#string_placeholder"}]}]},"string_placeholder":{"patterns":[{"match":"%(\\\\[\\\\d+])?([- #+0]{0,2}((\\\\d+|\\\\*)?(\\\\.?(\\\\d+|\\\\*|(\\\\[\\\\d+])\\\\*?)?(\\\\[\\\\d+])?)?))?[%EFGTUXb-gopqstvwx]","name":"constant.other.placeholder.go"}]},"struct_interface_declaration":{"captures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b(type)\\\\b\\\\s*([.\\\\w]+)"},"struct_variable_types_fields_multi":{"patterns":[{"begin":"\\\\b(\\\\w+(?:,\\\\s*\\\\b\\\\w+)*(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*[]*\\\\[]+{0,1})\\\\b(struct)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"name":"keyword.struct.go"},"3":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#struct_variables_types_fields"},{"include":"$self"}]},{"begin":"\\\\b(\\\\w+(?:,\\\\s*\\\\b\\\\w+)*(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*[]*\\\\[]+{0,1})\\\\b(interface)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"name":"keyword.interface.go"},"3":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#interface_variables_types_field"},{"include":"$self"}]},{"begin":"\\\\b(\\\\w+(?:,\\\\s*\\\\b\\\\w+)*(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}\\\\s*[]*\\\\[]+{0,1})\\\\b(func)\\\\b\\\\s*(\\\\()","beginCaptures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"name":"keyword.function.go"},"3":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"include":"#function_param_types"},{"include":"$self"}]},{"include":"#parameter-variable-types"}]},"struct_variables_types":{"begin":"\\\\b(struct)\\\\b\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.struct.go"},"2":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"include":"#struct_variables_types_fields"},{"include":"$self"}]},"struct_variables_types_fields":{"patterns":[{"include":"#struct_variable_types_fields_multi"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\{)\\\\s*((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*.\\\\[\\\\w]+)\\\\s*(?=})"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\{)\\\\s*((?:\\\\w+,\\\\s*)+{0,1}\\\\w+\\\\s+)((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*.\\\\[\\\\w]+)\\\\s*(?=})"},{"captures":{"1":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\w+,\\\\s*)+{0,1}\\\\w+\\\\s+)?((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[^\\"/\`\\\\s]+;?)"}]}},"match":"(?<=\\\\{)((?:\\\\s*(?:(?:\\\\w+,\\\\s*)+{0,1}\\\\w+\\\\s+)?(?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[^\\"/\`\\\\s]+;?)+)\\\\s*(?=})"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[*.\\\\w]+\\\\s*)(?:(?=[\\"/\`])|$)"},{"captures":{"1":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.property.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#parameter-variable-types"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"\\\\b(\\\\w+(?:\\\\s*,\\\\s*\\\\b\\\\w+)*)\\\\s*([^\\"/\`]+)"}]},"support_functions":{"captures":{"1":{"name":"entity.name.function.support.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"entity.name.function.support.go"}]},"3":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?:((?<=\\\\.)\\\\b\\\\w+)|\\\\b(\\\\w+))(?<brackets>\\\\[(?:[^]\\\\[]|\\\\g<brackets>)*])?(?=\\\\()"},"switch_types":{"begin":"(?<=\\\\bswitch\\\\b)\\\\s*(\\\\w+\\\\s*:=)?\\\\s*([-\\\\]%\\\\&(-+./<>\\\\[|\\\\w]+)(\\\\.\\\\(\\\\btype\\\\b\\\\)\\\\s*)(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#operators"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]},"2":{"patterns":[{"include":"#support_functions"},{"include":"#type-declarations"},{"match":"\\\\w+","name":"variable.other.go"}]},"3":{"patterns":[{"include":"#delimiters"},{"include":"#brackets"},{"match":"\\\\btype\\\\b","name":"keyword.type.go"}]},"4":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"captures":{"1":{"name":"keyword.control.go"},"2":{"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},"3":{"name":"punctuation.other.colon.go"},"4":{"patterns":[{"include":"#comments"}]}},"match":"^\\\\s*\\\\b(case)\\\\b\\\\s+([!*,.<=>\\\\w\\\\s]+)(:)(\\\\s*/[*/]\\\\s*.*)?$"},{"begin":"\\\\bcase\\\\b","beginCaptures":{"0":{"name":"keyword.control.go"}},"end":":","endCaptures":{"0":{"name":"punctuation.other.colon.go"}},"patterns":[{"include":"#type-declarations"},{"match":"\\\\w+","name":"entity.name.type.go"}]},{"include":"$self"}]},"switch_variables":{"patterns":[{"captures":{"1":{"name":"keyword.control.go"},"2":{"patterns":[{"include":"#type-declarations"},{"include":"#support_functions"},{"include":"#variable_assignment"},{"match":"\\\\w+","name":"variable.other.go"}]}},"match":"^\\\\s*\\\\b(case)\\\\b\\\\s+([\\\\s\\\\S]+:\\\\s*(?:/[*/].*)?)$"},{"begin":"(?<=\\\\bswitch\\\\b)\\\\s*((?:[.\\\\w]+(?:\\\\s*[-!%\\\\&+,/:<=>|]+\\\\s*[.\\\\w]+)*\\\\s*[-!%\\\\&+,/:<=>|]+)?\\\\s*[-\\\\]%\\\\&(-+./<>\\\\[|\\\\w]+{0,1}\\\\s*(?:;\\\\s*[-\\\\]%\\\\&(-+./<>\\\\[|\\\\w]+\\\\s*)?)(\\\\{)","beginCaptures":{"1":{"patterns":[{"include":"#support_functions"},{"include":"#type-declarations"},{"include":"#variable_assignment"},{"match":"\\\\w+","name":"variable.other.go"}]},"2":{"name":"punctuation.definition.begin.bracket.curly.go"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.curly.go"}},"patterns":[{"begin":"\\\\bcase\\\\b","beginCaptures":{"0":{"name":"keyword.control.go"}},"end":":","endCaptures":{"0":{"name":"punctuation.other.colon.go"}},"patterns":[{"include":"#support_functions"},{"include":"#type-declarations"},{"include":"#variable_assignment"},{"match":"\\\\w+","name":"variable.other.go"}]},{"include":"$self"}]}]},"syntax_errors":{"patterns":[{"captures":{"1":{"name":"invalid.illegal.slice.go"}},"match":"\\\\[](\\\\s+)"},{"match":"\\\\b0[0-7]*[89]\\\\d*\\\\b","name":"invalid.illegal.numeric.go"}]},"terminators":{"match":";","name":"punctuation.terminator.go"},"type-declarations":{"patterns":[{"include":"#language_constants"},{"include":"#comments"},{"include":"#map_types"},{"include":"#brackets"},{"include":"#delimiters"},{"include":"#keywords"},{"include":"#operators"},{"include":"#runes"},{"include":"#storage_types"},{"include":"#raw_string_literals"},{"include":"#string_literals"},{"include":"#numeric_literals"},{"include":"#terminators"}]},"type-declarations-without-brackets":{"patterns":[{"include":"#language_constants"},{"include":"#comments"},{"include":"#map_types"},{"include":"#delimiters"},{"include":"#keywords"},{"include":"#operators"},{"include":"#runes"},{"include":"#storage_types"},{"include":"#raw_string_literals"},{"include":"#string_literals"},{"include":"#numeric_literals"},{"include":"#terminators"}]},"type_assertion_inline":{"captures":{"1":{"name":"keyword.type.go"},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\{","name":"punctuation.definition.begin.bracket.curly.go"},{"match":"}","name":"punctuation.definition.end.bracket.curly.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\.\\\\()(?:\\\\b(type)\\\\b|((?:\\\\s*[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+{0,1}[]*\\\\[]+{0,1}[.\\\\w]+(?:\\\\[(?:[]*.\\\\[{}\\\\w]+(?:,\\\\s*[]*.\\\\[{}\\\\w]+)*)?])?))(?=\\\\))"},"var_assignment":{"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"(?<=\\\\bvar\\\\b)\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"begin":"(?<=\\\\bvar\\\\b)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.begin.bracket.round.go"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.end.bracket.round.go"}},"patterns":[{"captures":{"1":{"patterns":[{"include":"#delimiters"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]},"2":{"patterns":[{"include":"#type-declarations-without-brackets"},{"include":"#generic_types"},{"match":"\\\\(","name":"punctuation.definition.begin.bracket.round.go"},{"match":"\\\\)","name":"punctuation.definition.end.bracket.round.go"},{"match":"\\\\[","name":"punctuation.definition.begin.bracket.square.go"},{"match":"]","name":"punctuation.definition.end.bracket.square.go"},{"match":"\\\\w+","name":"entity.name.type.go"}]}},"match":"^\\\\s*\\\\b([.\\\\w]+(?:,\\\\s*[.\\\\w]+)*)\\\\s*((?:(?:[]*\\\\[]+{0,1}(?:<-\\\\s*)?\\\\bchan\\\\b(?:\\\\s*<-)?\\\\s*)+(?:\\\\([^)]+\\\\))?)?(?![]*\\\\[]+{0,1}\\\\b(?:struct|func|map)\\\\b)(?:[]*.\\\\[\\\\w]+(?:,\\\\s*[]*.\\\\[\\\\w]+)*)?\\\\s*=?)?"},{"include":"$self"}]}]},"variable_assignment":{"patterns":[{"captures":{"0":{"patterns":[{"include":"#delimiters"},{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]}},"match":"\\\\b\\\\w+(?:,\\\\s*\\\\w+)*(?=\\\\s*:=)"},{"captures":{"0":{"patterns":[{"include":"#delimiters"},{"include":"#operators"},{"match":"\\\\d\\\\w*","name":"invalid.illegal.identifier.go"},{"match":"\\\\w+","name":"variable.other.assignment.go"}]}},"match":"\\\\b[*.\\\\w]+(?:,\\\\s*[*.\\\\w]+)*(?=\\\\s*=(?!=))"}]}},"scopeName":"source.go"}`)),C3=[Fz];var Pz=Object.freeze(JSON.parse(`{"displayName":"JavaScript","name":"javascript","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.objectliteral.js","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.js"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js"}},"name":"meta.array.literal.js","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"variable.parameter.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.js"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.js","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.js","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.js","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.js"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.js"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"include":"#jsx"}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.type.class.js"}},"end":"(?<=})","name":"meta.class.js","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.js"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.type.class.js"}},"end":"(?<=})","name":"meta.class.js","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"name":"comment.block.documentation.js","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.js"},"2":{"name":"storage.type.internaldeclaration.js"},"3":{"name":"punctuation.decorator.internaldeclaration.js"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"name":"comment.block.js"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js"},"2":{"name":"comment.line.double-slash.js"},"3":{"name":"punctuation.definition.comment.js"},"4":{"name":"storage.type.internaldeclaration.js"},"5":{"name":"punctuation.decorator.internaldeclaration.js"}},"contentName":"comment.line.double-slash.js","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.js"},{"captures":{"1":{"name":"keyword.control.loop.js"},"2":{"name":"entity.name.label.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.js"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.js"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.js"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.js"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.block.js","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.js"}},"end":"(?=\\\\s)","name":"meta.decorator.js","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"name":"meta.parameter.object-binding-pattern.js","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"name":"meta.paramter.array-binding-pattern.js","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"variable.parameter.js"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"meta.definition.variable.js variable.other.readwrite.js"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"meta.definition.variable.js variable.other.constant.js"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.js"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.js","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.js"},"2":{"name":"entity.name.tag.directive.js"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.js"}},"name":"meta.tag.js","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.js"},{"match":"=","name":"keyword.operator.assignment.js"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.js"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.js"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|'(?:\\\\*(?!/)|\\\\\\\\(?!')|[^*\\\\\\\\])*?'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.type.enum.js"},"5":{"name":"entity.name.type.enum.js"}},"end":"(?<=})","name":"meta.enum.declaration.js","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.js"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"keyword.control.as.js"},"3":{"name":"storage.type.namespace.js"},"4":{"name":"entity.name.type.module.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"keyword.control.type.js"},"3":{"name":"keyword.operator.assignment.js"},"4":{"name":"keyword.control.default.js"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.js","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"keyword.control.type.js"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.js","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"entity.name.function.js variable.language.this.js"},"4":{"name":"entity.name.function.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"variable.parameter.js variable.language.this.js"},"4":{"name":"variable.parameter.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.js"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.js"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.js"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.js"},"2":{"name":"keyword.generator.asterisk.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.js"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.js"},{"captures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"keyword.control.satisfies.js"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.js"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.js"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.js"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.js"},{"match":"[!=]==?","name":"keyword.operator.comparison.js"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.js"},{"captures":{"1":{"name":"keyword.operator.logical.js"},"2":{"name":"keyword.operator.assignment.compound.js"},"3":{"name":"keyword.operator.arithmetic.js"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.js"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.js"},{"match":"=","name":"keyword.operator.assignment.js"},{"match":"--","name":"keyword.operator.decrement.js"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.js"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.js"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.js"},"2":{"name":"keyword.operator.arithmetic.js"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.js"},"2":{"name":"keyword.operator.arithmetic.js"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#jsx"},{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.js"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.js","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.js entity.name.function.js"},"2":{"name":"keyword.operator.optional.js"},"3":{"name":"keyword.operator.definiteassignment.js"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.js variable.object.property.js"},{"match":"\\\\?","name":"keyword.operator.optional.js"},{"match":"!","name":"keyword.operator.definiteassignment.js"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.js"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.js"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.js","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.js","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.js punctuation.accessor.optional.js"},{"match":"!","name":"meta.function-call.js keyword.operator.definiteassignment.js"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.js"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.async.js"},"4":{"name":"storage.type.function.js"},"5":{"name":"keyword.generator.asterisk.js"},"6":{"name":"meta.definition.function.js entity.name.function.js"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.js","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"storage.type.function.js"},"3":{"name":"keyword.generator.asterisk.js"},"4":{"name":"meta.definition.function.js entity.name.function.js"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.js","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.js entity.name.function.js"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.js"}},"name":"meta.parameters.js","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"entity.name.function.js"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"variable.other.constant.property.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"variable.other.property.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.js"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.js"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.js"},"2":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"keyword.other.js"}},"name":"string.regexp.js","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"keyword.control.import.js"},"4":{"name":"keyword.control.type.js"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.js","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.js"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"keyword.control.import.js"},"4":{"name":"keyword.control.type.js"},"5":{"name":"variable.other.readwrite.alias.js"},"6":{"name":"keyword.operator.assignment.js"},"7":{"name":"keyword.control.require.js"},"8":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"name":"meta.import-equals.external.js","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"keyword.control.import.js"},"4":{"name":"keyword.control.type.js"},"5":{"name":"variable.other.readwrite.alias.js"},"6":{"name":"keyword.operator.assignment.js"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.js","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.js"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.js"},"2":{"name":"keyword.control.assert.js"},"3":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.js"},{"match":":","name":"punctuation.separator.key-value.js"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.block.js","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.js"},"2":{"name":"keyword.control.default.js"},"3":{"name":"constant.language.import-export-all.js"},"4":{"name":"variable.other.readwrite.js"},"5":{"name":"string.quoted.alias.js"},"12":{"name":"keyword.control.as.js"},"13":{"name":"keyword.control.default.js"},"14":{"name":"variable.other.readwrite.alias.js"},"15":{"name":"string.quoted.alias.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.js"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.js"},{"captures":{"1":{"name":"keyword.control.type.js"},"2":{"name":"variable.other.readwrite.alias.js"},"3":{"name":"string.quoted.alias.js"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.js"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"meta.brace.square.js"},"3":{"name":"variable.parameter.js"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js"},"2":{"name":"keyword.operator.optional.js"}},"name":"meta.indexer.declaration.js","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"meta.brace.square.js"},"4":{"name":"entity.name.type.js"},"5":{"name":"keyword.operator.expression.in.js"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js"},"2":{"name":"keyword.operator.type.modifier.js"},"3":{"name":"keyword.operator.optional.js"}},"name":"meta.indexer.mappedtype.declaration.js","patterns":[{"captures":{"1":{"name":"keyword.control.as.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.js"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.type.interface.js"}},"end":"(?<=})","name":"meta.interface.js","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.js"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"jsx":{"patterns":[{"include":"#jsx-tag-without-attributes-in-expression"},{"include":"#jsx-tag-in-expression"}]},"jsx-children":{"patterns":[{"include":"#jsx-tag-without-attributes"},{"include":"#jsx-tag"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-entities"}]},"jsx-entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.js"},"3":{"name":"punctuation.definition.entity.js"}},"match":"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.js"}]},"jsx-evaluated-code":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.js"}},"contentName":"meta.embedded.expression.js","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.js"}},"patterns":[{"include":"#expression"}]},"jsx-string-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.js"}},"name":"string.quoted.double.js","patterns":[{"include":"#jsx-entities"}]},"jsx-string-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.js"}},"name":"string.quoted.single.js","patterns":[{"include":"#jsx-entities"}]},"jsx-tag":{"begin":"(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(/>)|(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.js"},"2":{"name":"punctuation.definition.tag.begin.js"},"3":{"name":"entity.name.tag.namespace.js"},"4":{"name":"punctuation.separator.namespace.js"},"5":{"name":"entity.name.tag.js"},"6":{"name":"support.class.component.js"},"7":{"name":"punctuation.definition.tag.end.js"}},"name":"meta.tag.js","patterns":[{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js"},"2":{"name":"entity.name.tag.namespace.js"},"3":{"name":"punctuation.separator.namespace.js"},"4":{"name":"entity.name.tag.js"},"5":{"name":"support.class.component.js"}},"end":"(?=/?>)","patterns":[{"include":"#comment"},{"include":"#type-arguments"},{"include":"#jsx-tag-attributes"}]},{"begin":"(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.end.js"}},"contentName":"meta.jsx.children.js","end":"(?=</)","patterns":[{"include":"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{"match":"=(?=\\\\s*(?:[\\"'{]|/\\\\*|//|\\\\n))","name":"keyword.operator.assignment.js"},"jsx-tag-attribute-name":{"captures":{"1":{"name":"entity.other.attribute-name.namespace.js"},"2":{"name":"punctuation.separator.namespace.js"},"3":{"name":"entity.other.attribute-name.js"}},"match":"\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\s]|/?>|/\\\\*|//)"},"jsx-tag-attributes":{"begin":"\\\\s+","end":"(?=/?>)","name":"meta.tag.attributes.js","patterns":[{"include":"#comment"},{"include":"#jsx-tag-attribute-name"},{"include":"#jsx-tag-attribute-assignment"},{"include":"#jsx-string-double-quoted"},{"include":"#jsx-string-single-quoted"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{"match":"\\\\S+","name":"invalid.illegal.attribute.js"},"jsx-tag-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?!<\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,))(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","patterns":[{"include":"#jsx-tag"}]},"jsx-tag-without-attributes":{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js"},"2":{"name":"entity.name.tag.namespace.js"},"3":{"name":"punctuation.separator.namespace.js"},"4":{"name":"entity.name.tag.js"},"5":{"name":"support.class.component.js"},"6":{"name":"punctuation.definition.tag.end.js"}},"contentName":"meta.jsx.children.js","end":"(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.js"},"2":{"name":"entity.name.tag.namespace.js"},"3":{"name":"punctuation.separator.namespace.js"},"4":{"name":"entity.name.tag.js"},"5":{"name":"support.class.component.js"},"6":{"name":"punctuation.definition.tag.end.js"}},"name":"meta.tag.without-attributes.js","patterns":[{"include":"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","patterns":[{"include":"#jsx-tag-without-attributes"}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.js"},"2":{"name":"punctuation.separator.label.js"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.js"},"2":{"name":"punctuation.separator.label.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.modifier.async.js"},"5":{"name":"storage.type.js"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.modifier.async.js"},"5":{"name":"keyword.operator.new.js"},"6":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.modifier.js"},"4":{"name":"storage.modifier.async.js"},"5":{"name":"storage.type.property.js"},"6":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.js entity.name.function.js"},{"match":"\\\\?","name":"keyword.operator.optional.js"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$'_\`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.namespace.js"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.js","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.js"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.js"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.js","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.js"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.js"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.js"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.js"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.js"},{"captures":{"0":{"name":"constant.numeric.decimal.js"},"1":{"name":"meta.delimiter.decimal.period.js"},"2":{"name":"storage.type.numeric.bigint.js"},"3":{"name":"meta.delimiter.decimal.period.js"},"4":{"name":"storage.type.numeric.bigint.js"},"5":{"name":"meta.delimiter.decimal.period.js"},"6":{"name":"storage.type.numeric.bigint.js"},"7":{"name":"storage.type.numeric.bigint.js"},"8":{"name":"meta.delimiter.decimal.period.js"},"9":{"name":"storage.type.numeric.bigint.js"},"10":{"name":"meta.delimiter.decimal.period.js"},"11":{"name":"storage.type.numeric.bigint.js"},"12":{"name":"meta.delimiter.decimal.period.js"},"13":{"name":"storage.type.numeric.bigint.js"},"14":{"name":"storage.type.numeric.bigint.js"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.js"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.js"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.js"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.js"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"variable.other.constant.object.property.js"},"4":{"name":"variable.other.object.property.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.js"},"2":{"name":"variable.other.object.js"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.objectliteral.js","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"storage.type.property.js"},"3":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"storage.type.property.js"},"3":{"name":"keyword.generator.asterisk.js"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.js meta.object-literal.key.js","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"'\`])","end":"(?=:)|((?<=[\\"'\`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.js meta.object-literal.key.js","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.js meta.object-literal.key.js","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"'\`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.js"},"1":{"name":"constant.numeric.decimal.js"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js"},{"captures":{"0":{"name":"meta.object-literal.key.js"},"1":{"name":"entity.name.function.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.js"},{"captures":{"0":{"name":"meta.object-literal.key.js"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js"}},"end":"(?=[,}])","name":"meta.object.member.js","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js"},{"captures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.js"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js"},"2":{"name":"keyword.control.satisfies.js"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.js","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.js punctuation.separator.key-value.js"}},"end":"(?=[,}])","name":"meta.object.member.js","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js"},"2":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.array.js"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"entity.name.function.js variable.language.this.js"},"4":{"name":"entity.name.function.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"variable.parameter.js variable.language.this.js"},"4":{"name":"variable.parameter.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js"},"2":{"name":"punctuation.definition.binding-pattern.object.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.js","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"}},"contentName":"meta.arrow.js meta.return.type.arrow.js","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.js"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.js"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.js"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"invalid.illegal.newline.js"}},"name":"string.quoted.double.js","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"invalid.illegal.newline.js"}},"name":"string.quoted.single.js","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.js"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"keyword.other.js"}},"name":"string.regexp.js","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js"},"2":{"name":"keyword.other.js"}},"name":"string.regexp.js","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.js","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.js","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.js"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.js"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js"},"2":{"name":"comment.line.double-slash.js"},"3":{"name":"punctuation.definition.comment.js"},"4":{"name":"storage.type.internaldeclaration.js"},"5":{"name":"punctuation.decorator.internaldeclaration.js"}},"contentName":"comment.line.double-slash.js","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.js"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.js"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"'\`])","name":"keyword.operator.expression.import.js"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.js"},{"captures":{"1":{"name":"keyword.control.import.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"},"4":{"name":"support.variable.property.importmeta.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"},"4":{"name":"support.variable.property.target.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.js"},"2":{"name":"punctuation.accessor.optional.js"},"3":{"name":"support.variable.property.js"},"4":{"name":"support.constant.js"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.js"},"2":{"name":"support.type.object.module.js"},"3":{"name":"punctuation.accessor.js"},"4":{"name":"punctuation.accessor.optional.js"},"5":{"name":"support.type.object.module.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"switch-statement.expr.js","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.js"},"2":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"name":"switch-expression.expr.js","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"(?=})","name":"switch-block.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.js"}},"end":"(?=:)","name":"case-clause.expr.js","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.js punctuation.definition.section.case-statement.js"},"2":{"name":"meta.block.js punctuation.definition.block.js"}},"contentName":"meta.block.js","end":"}","endCaptures":{"0":{"name":"meta.block.js punctuation.definition.block.js"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.js punctuation.definition.section.case-statement.js"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js"},"2":{"name":"string.template.js punctuation.definition.string.template.begin.js"}},"contentName":"string.template.js","end":"\`","endCaptures":{"0":{"name":"string.template.js punctuation.definition.string.template.end.js"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","end":"(?=\`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.js"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js"}},"end":"(?=\`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js"}},"contentName":"meta.embedded.line.js","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js"}},"name":"meta.template.expression.js","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js"},"2":{"name":"string.template.js punctuation.definition.string.template.begin.js"}},"contentName":"string.template.js","end":"\`","endCaptures":{"0":{"name":"string.template.js punctuation.definition.string.template.end.js"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js"}},"contentName":"meta.embedded.line.js","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js"}},"name":"meta.template.expression.js","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.js"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.js"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.js"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.type.js"},"4":{"name":"entity.name.type.alias.js"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.js","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"},"2":{"name":"keyword.control.intrinsic.js"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.js"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.js"}},"name":"meta.type.parameters.js","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.js"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.js"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.js"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.js"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.js storage.modifier.js"},"2":{"name":"meta.type.constructor.js keyword.control.new.js"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.control.new.js"}},"end":"(?<=\\\\))","name":"meta.type.constructor.js","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.js","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.js"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.js","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.js","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.js"},"2":{"name":"entity.name.type.js"},"3":{"name":"keyword.operator.expression.extends.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.js"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"},"4":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},"contentName":"meta.type.parameters.js","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.js"},"2":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.begin.js"}},"contentName":"meta.type.parameters.js","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js punctuation.definition.typeparameters.end.js"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.js"},"2":{"name":"punctuation.accessor.js"},"3":{"name":"punctuation.accessor.optional.js"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.js"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js"}},"name":"meta.object.type.js","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.js"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.js"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.js"},{"match":"([:?])","name":"keyword.operator.ternary.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.js"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.js"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.js"}},"name":"meta.type.parameters.js","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.js"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js"}},"name":"meta.type.paren.cover.js","patterns":[{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"entity.name.function.js variable.language.this.js"},"4":{"name":"entity.name.function.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.js"},"2":{"name":"keyword.operator.rest.js"},"3":{"name":"variable.parameter.js variable.language.this.js"},"4":{"name":"variable.parameter.js"},"5":{"name":"keyword.operator.optional.js"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.js"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.js"},"2":{"name":"variable.parameter.js variable.language.this.js"},"3":{"name":"variable.parameter.js"},"4":{"name":"keyword.operator.expression.is.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.js"},"2":{"name":"variable.parameter.js variable.language.this.js"},"3":{"name":"variable.parameter.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.js"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.js"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.js"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.js"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js"}},"name":"meta.type.tuple.js","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.js"},{"captures":{"1":{"name":"entity.name.label.js"},"2":{"name":"keyword.operator.optional.js"},"3":{"name":"punctuation.separator.label.js"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.js"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.js"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.js","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js"},"2":{"name":"storage.modifier.js"},"3":{"name":"storage.type.js"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.js"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.constant.js entity.name.function.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.constant.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js entity.name.function.js"},"2":{"name":"keyword.operator.definiteassignment.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.constant.js"},"2":{"name":"keyword.operator.definiteassignment.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js variable.other.readwrite.js"},"2":{"name":"keyword.operator.definiteassignment.js"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.js","aliases":["js","cjs","mjs"]}`)),id=[Pz];var qz=Object.freeze(JSON.parse(`{"displayName":"HTML","injections":{"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)":{"patterns":[{"match":"<","name":"invalid.illegal.bad-angle-bracket.html"}]}},"name":"html","patterns":[{"include":"#xml-processing"},{"include":"#comment"},{"include":"#doctype"},{"include":"#cdata"},{"include":"#tags-valid"},{"include":"#tags-invalid"},{"include":"#entities"}],"repository":{"attribute":{"patterns":[{"begin":"(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"style(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.style.html","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.html"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"begin":"(?=[^/<=>\`\\\\s]|/(?!>))","end":"(?!\\\\G)","name":"meta.embedded.line.css","patterns":[{"captures":{"0":{"name":"source.css"}},"match":"([^\\"'/<=>\`\\\\s]|/(?!>))+","name":"string.unquoted.html"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.css","end":"(\\")","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.css"}},"name":"string.quoted.double.html","patterns":[{"include":"#entities"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.css","end":"(')","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.css"}},"name":"string.quoted.single.html","patterns":[{"include":"#entities"}]}]},{"match":"=","name":"invalid.illegal.unexpected-equals-sign.html"}]}]},{"begin":"on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o((?:n|ff)line)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d((?:|meta)data)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.event-handler.$1.html","patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.html"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"begin":"(?=[^/<=>\`\\\\s]|/(?!>))","end":"(?!\\\\G)","name":"meta.embedded.line.js","patterns":[{"captures":{"0":{"name":"source.js"},"1":{"patterns":[{"include":"source.js"}]}},"match":"(([^\\"'/<=>\`\\\\s]|/(?!>))+)","name":"string.unquoted.html"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.js","end":"(\\")","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.js"}},"name":"string.quoted.double.html","patterns":[{"captures":{"0":{"patterns":[{"include":"source.js"}]}},"match":"([^\\\\n\\"/]|/(?![*/]))+"},{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"(?=\\")|\\\\n","name":"comment.line.double-slash.js"},{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.js"}},"end":"(?=\\")|\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.js"}},"name":"comment.block.js"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"contentName":"source.js","end":"(')","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"},"1":{"name":"source.js"}},"name":"string.quoted.single.html","patterns":[{"captures":{"0":{"patterns":[{"include":"source.js"}]}},"match":"([^\\\\n'/]|/(?![*/]))+"},{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"(?=')|\\\\n","name":"comment.line.double-slash.js"},{"begin":"/\\\\*","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.js"}},"end":"(?=')|\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.js"}},"name":"comment.block.js"}]}]},{"match":"=","name":"invalid.illegal.unexpected-equals-sign.html"}]}]},{"begin":"(data-[-a-z]+)(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.data-x.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"(align|bgcolor|border)(?![-:\\\\w])","beginCaptures":{"0":{"name":"invalid.deprecated.entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"([^\\\\x00- \\"'/<=>\\\\x7F-\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.unrecognized.$1.html","patterns":[{"include":"#attribute-interior"}]},{"match":"[^>\\\\s]+","name":"invalid.illegal.character-not-allowed-here.html"}]},"attribute-interior":{"patterns":[{"begin":"=","beginCaptures":{"0":{"name":"punctuation.separator.key-value.html"}},"end":"(?<=[^=\\\\s])(?!\\\\s*=)|(?=/?>)","patterns":[{"match":"([^\\"'/<=>\`\\\\s]|/(?!>))+","name":"string.unquoted.html"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}},"name":"string.quoted.double.html","patterns":[{"include":"#entities"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.html"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.html"}},"name":"string.quoted.single.html","patterns":[{"include":"#entities"}]},{"match":"=","name":"invalid.illegal.unexpected-equals-sign.html"}]}]},"cdata":{"begin":"<!\\\\[CDATA\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.tag.begin.html"}},"contentName":"string.other.inline-data.html","end":"]]>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.cdata.html"},"comment":{"begin":"<!--","captures":{"0":{"name":"punctuation.definition.comment.html"}},"end":"-->","name":"comment.block.html","patterns":[{"match":"\\\\G-?>","name":"invalid.illegal.characters-not-allowed-here.html"},{"match":"<!-(?:-(?!>)|(?=-->))","name":"invalid.illegal.characters-not-allowed-here.html"},{"match":"--!>","name":"invalid.illegal.characters-not-allowed-here.html"}]},"core-minus-invalid":{"patterns":[{"include":"#xml-processing"},{"include":"#comment"},{"include":"#doctype"},{"include":"#cdata"},{"include":"#tags-valid"},{"include":"#entities"}]},"doctype":{"begin":"<!(?=(?i:DOCTYPE\\\\s))","beginCaptures":{"0":{"name":"punctuation.definition.tag.begin.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.doctype.html","patterns":[{"match":"\\\\G(?i:DOCTYPE)","name":"entity.name.tag.html"},{"begin":"\\"","end":"\\"","name":"string.quoted.double.html"},{"match":"[^>\\\\s]+","name":"entity.other.attribute-name.html"}]},"entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.html"},"912":{"name":"punctuation.definition.entity.html"}},"match":"(&)(?=[A-Za-z])((a(s(ymp(eq)?|cr|t)|n(d(slope|[dv]|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a([a-h]))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|[Ee]|acir)?|elig|f(r)?|w((?:con|)int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))|(B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h([DUdu])?|times|H([DUdu])?|d([LRlr])|u([LRlr])|plus|D([LRlr])|v([HLRhlr])?|U([LRlr])|V([HLRhlr])?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1([24])|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))|(c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr([lr])|p(s|c([au]p)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w((?:con|)int)|lubs(uit)?|a(cute|p(s|c([au]p)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly((?:Double|)Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))|(d(s(c([ry])|trok|ol)|har([lr])|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up((?:Down|)Arrow)|VerticalBar|L(ong(RightArrow|Left((?:Right|)Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))|(e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t([ah])|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(D??ot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1([34]))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty((?:|Very)SmallSquare)|acr)))|(f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(l??ig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1([2-68])|78|2([35])|3([458])|45|5([68])))))|F(scr|cy|illed((?:|Very)SmallSquare)|o(uriertrf|pf|rAll)|fr))|(G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im([el])?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(q?less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l([Eaj])?|a(cute|p|mma(d)?)|rave|g(g)?|breve))|(h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok((?:lef|righ)tarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks([ew]arow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))|(i(s(cr|in(s(v)?|dot|[Ev])?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(i??nt)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f([fr])|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))|(j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))|(k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))|(l(s(h|cr|trok|im([eg])?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(d??il)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i([ef])?|Par))?|Har|o(ng(left((?:|right)arrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r((?:d|us)har))|ur((?:ds|u)har)|jcy|par(lt)?|e(s(s(sim|dot|eq(q?gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left((?:|right)arrow)|rightarrow|Left((?:Right|)Arrow))|pf|wer((?:Righ|Lef)tArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))|(M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u((?:lti|)map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))|(n(s(hort(parallel|mid)|c(cue|[er])?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|[Ee])?|b(set(eq(q)?)?|[Ee])?)|par|qsu([bp]e)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v([abc]))?|in(dot|v([abc])|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g([et]))|fr|w(near|ar(hk|r(ow)?)|Arr)|V([Dd]ash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft((?:|right)arrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr([cw])?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft((?:|right)arrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes((?:Slant|)Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi((?:n|ck)Space)|VeryThinSpace))|Jcy|fr|acute))|(o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|[fm])?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly((?:Double|)Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))|(p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d([ou])|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))|(q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))|(R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(d??il)|aron)|Barr|t(hree|imes|ri([ef]|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng([de]|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr)))|(s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma([fv])?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot([be])?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n([Ee])|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|n([Ee])|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar([ef]))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort((?:Right|Down|Up|Left)Arrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))|(t(s(hcy|c([ry])|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead((?:lef|righ)tarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i((?:n|ck)Space)|e(ta|refore))|c(y|edil|aron)|S(H??cy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a([bu])|ripleDot))|(u(scr|h(ar([lr])|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per((?:Righ|Lef)tArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))|(v(s(cr|u(pn([Ee])|bn([Ee])))|nsu([bp])|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))|(w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))|(X(scr|i|opf|fr)|x(s(cr|qcup)|h([Aa]rr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l([Aa]rr)|r([Aa]rr)|map))|(y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))|(z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(n?j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)))(;)","name":"constant.character.entity.named.$2.html"},{"captures":{"1":{"name":"punctuation.definition.entity.html"},"3":{"name":"punctuation.definition.entity.html"}},"match":"(&)#[0-9]+(;)","name":"constant.character.entity.numeric.decimal.html"},{"captures":{"1":{"name":"punctuation.definition.entity.html"},"3":{"name":"punctuation.definition.entity.html"}},"match":"(&)#[Xx]\\\\h+(;)","name":"constant.character.entity.numeric.hexadecimal.html"},{"match":"&(?=[0-9A-Za-z]+;)","name":"invalid.illegal.ambiguous-ampersand.html"}]},"math":{"patterns":[{"begin":"(?i)(<)(math)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)","endCaptures":{"0":{"name":"meta.tag.structure.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]}],"repository":{"attribute":{"patterns":[{"begin":"(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u([bp]scriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"([^\\\\x00- \\"'/<=>\\\\x7F-\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.unrecognized.$1.html","patterns":[{"include":"#attribute-interior"}]},{"match":"[^>\\\\s]+","name":"invalid.illegal.character-not-allowed-here.html"}]},"tags":{"patterns":[{"include":"#comment"},{"include":"#cdata"},{"captures":{"0":{"name":"meta.tag.structure.math.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.structure.math.$2.html"},{"begin":"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.math.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.structure.math.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.math.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.inline.math.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.inline.math.$2.html"},{"begin":"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.inline.math.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.inline.math.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.inline.math.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.object.math.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(mglyph)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.object.math.$2.html"},{"begin":"(?i)(<)(mglyph)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.object.math.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.object.math.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.object.math.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.other.invalid.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(([:\\\\w]+))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.other.invalid.html"},{"begin":"(?i)(<)((\\\\w[^>\\\\s]*))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.other.invalid.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.other.invalid.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"name":"punctuation.definition.tag.end.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.other.invalid.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.invalid.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"include":"#tags-invalid"}]}}},"svg":{"patterns":[{"begin":"(?i)(<)(svg)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)","endCaptures":{"0":{"name":"meta.tag.structure.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]}],"repository":{"attribute":{"patterns":[{"begin":"(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em([hv])|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y([12]|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS((?:cript|tyle)Type)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget([XY])?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At([XYZ]))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-([xy])|adv-y)))|alues)|k([123]|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f([XY]|errerPolicy)|l)|adius|x)?|g([12]|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x([12]|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk((?:Content|)Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![-:\\\\w])","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.$1.html","patterns":[{"include":"#attribute-interior"}]},{"begin":"([^\\\\x00- \\"'/<=>\\\\x7F-\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\\\\x{4FFFE}\\\\x{4FFFF}\\\\x{5FFFE}\\\\x{5FFFF}\\\\x{6FFFE}\\\\x{6FFFF}\\\\x{7FFFE}\\\\x{7FFFF}\\\\x{8FFFE}\\\\x{8FFFF}\\\\x{9FFFE}\\\\x{9FFFF}\\\\x{AFFFE}\\\\x{AFFFF}\\\\x{BFFFE}\\\\x{BFFFF}\\\\x{CFFFE}\\\\x{CFFFF}\\\\x{DFFFE}\\\\x{DFFFF}\\\\x{EFFFE}\\\\x{EFFFF}\\\\x{FFFFE}\\\\x{FFFFF}\\\\x{10FFFE}\\\\x{10FFFF}]+)","beginCaptures":{"0":{"name":"entity.other.attribute-name.html"}},"end":"(?=\\\\s*+[^=\\\\s])","name":"meta.attribute.unrecognized.$1.html","patterns":[{"include":"#attribute-interior"}]},{"match":"[^>\\\\s]+","name":"invalid.illegal.character-not-allowed-here.html"}]},"tags":{"patterns":[{"include":"#comment"},{"include":"#cdata"},{"captures":{"0":{"name":"meta.tag.metadata.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.metadata.svg.$2.html"},{"begin":"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.metadata.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.metadata.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.metadata.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.structure.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.structure.svg.$2.html"},{"begin":"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.structure.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.structure.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.structure.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.inline.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.inline.svg.$2.html"},{"begin":"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.inline.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.inline.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.inline.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.object.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.object.svg.$2.html"},{"begin":"(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.object.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"patterns":[{"include":"#attribute"}]},"5":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)(\\\\2)\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.object.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.object.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.other.svg.$2.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.other.svg.$2.html"},{"begin":"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.other.svg.$2.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.other.svg.$2.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"},"4":{"name":"punctuation.definition.tag.end.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.other.svg.$2.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"captures":{"0":{"name":"meta.tag.other.invalid.void.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"match":"(?i)(<)(([:\\\\w]+))(?=\\\\s|/?>)(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(/>)","name":"meta.element.other.invalid.html"},{"begin":"(?i)(<)((\\\\w[^>\\\\s]*))(?=\\\\s|/?>)(?:(([^\\"'>]|\\"[^\\"]*\\"|'[^']*')*)(>))?","beginCaptures":{"0":{"name":"meta.tag.other.invalid.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"patterns":[{"include":"#attribute"}]},"6":{"name":"punctuation.definition.tag.end.html"}},"end":"(?i)(</)((\\\\2))\\\\s*(>)|(/>)|(?=</\\\\w+)","endCaptures":{"0":{"name":"meta.tag.other.invalid.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"},"4":{"name":"punctuation.definition.tag.end.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.element.other.invalid.html","patterns":[{"begin":"(?<!>)\\\\G","end":"(?=/>)|>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.invalid.start.html","patterns":[{"include":"#attribute"}]},{"include":"#tags"}]},{"include":"#tags-invalid"}]}}},"tags-invalid":{"patterns":[{"begin":"(</?)((\\\\w[^>\\\\s]*))(?<!/)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.unrecognized-tag.html"}},"end":"((?: ?/)?>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.$2.html","patterns":[{"include":"#attribute"}]}]},"tags-valid":{"patterns":[{"begin":"(^[\\\\t ]+)?(?=<(?i:style)\\\\b(?!-))","beginCaptures":{"1":{"name":"punctuation.whitespace.embedded.leading.html"}},"end":"(?!\\\\G)([\\\\t ]*$\\\\n?)?","endCaptures":{"1":{"name":"punctuation.whitespace.embedded.trailing.html"}},"patterns":[{"begin":"(?i)(<)(style)(?=\\\\s|/?>)","beginCaptures":{"0":{"name":"meta.tag.metadata.style.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"(?i)((<)/)(style)\\\\s*(>)","endCaptures":{"0":{"name":"meta.tag.metadata.style.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"source.css-ignored-vscode"},"3":{"name":"entity.name.tag.html"},"4":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.embedded.block.html","patterns":[{"begin":"\\\\G","captures":{"1":{"name":"punctuation.definition.tag.end.html"}},"end":"(>)","name":"meta.tag.metadata.style.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?!\\\\G)","end":"(?=</(?i:style))","name":"source.css","patterns":[{"include":"source.css"}]}]}]},{"begin":"(^[\\\\t ]+)?(?=<(?i:script)\\\\b(?!-))","beginCaptures":{"1":{"name":"punctuation.whitespace.embedded.leading.html"}},"end":"(?!\\\\G)([\\\\t ]*$\\\\n?)?","endCaptures":{"1":{"name":"punctuation.whitespace.embedded.trailing.html"}},"patterns":[{"begin":"(<)((?i:script))\\\\b","beginCaptures":{"0":{"name":"meta.tag.metadata.script.start.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"(/)((?i:script))(>)","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.embedded.block.html","patterns":[{"begin":"\\\\G","end":"(?=/)","patterns":[{"begin":"(>)","beginCaptures":{"0":{"name":"meta.tag.metadata.script.start.html"},"1":{"name":"punctuation.definition.tag.end.html"}},"end":"((<))(?=/(?i:script))","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"source.js-ignored-vscode"}},"patterns":[{"begin":"\\\\G","end":"(?=</(?i:script))","name":"source.js","patterns":[{"begin":"(^[\\\\t ]+)?(?=//)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js"}},"end":"(?!\\\\G)","patterns":[{"begin":"//","beginCaptures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"(?=<\/script)|\\\\n","name":"comment.line.double-slash.js"}]},{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.js"}},"end":"\\\\*/|(?=<\/script)","name":"comment.block.js"},{"include":"source.js"}]}]},{"begin":"\\\\G","end":"(?i:(?=>|type(?=[=\\\\s])(?!\\\\s*=\\\\s*(''|\\"\\"|([\\"']?)(text/(javascript(1\\\\.[0-5])?|x-javascript|jscript|livescript|(x-)?ecmascript|babel)|application/((?:(x-)?jav|(x-)?ecm)ascript)|module)[\\"'>\\\\s]))))","name":"meta.tag.metadata.script.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i:(?=type\\\\s*=\\\\s*([\\"']?)text/(x-handlebars|(x-(handlebars-)?|ng-)?template|html)[\\"'>\\\\s]))","end":"((<))(?=/(?i:script))","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"text.html.basic"}},"patterns":[{"begin":"\\\\G","end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.script.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?!\\\\G)","end":"(?=</(?i:script))","name":"text.html.basic","patterns":[{"include":"text.html.basic"}]}]},{"begin":"(?=(?i:type))","end":"(<)(?=/(?i:script))","endCaptures":{"0":{"name":"meta.tag.metadata.script.end.html"},"1":{"name":"punctuation.definition.tag.begin.html"}},"patterns":[{"begin":"\\\\G","end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.script.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?!\\\\G)","end":"(?=</(?i:script))","name":"source.unknown"}]}]}]}]},{"begin":"(?i)(<)(base|link|meta)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(noscript|title)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(noscript|title)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(col|hr|input)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(area|br|wbr)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(embed|img|param|source|track)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((basefont|isindex))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.metadata.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((center|frameset|noembed|noframes))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((center|frameset|noembed|noframes))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.structure.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.inline.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((frame))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.void.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((applet))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((applet))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.deprecated.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.object.$2.end.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.no-longer-supported.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.$2.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"},"3":{"name":"invalid.illegal.no-longer-supported.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.other.$2.end.html","patterns":[{"include":"#attribute"}]},{"include":"#math"},{"include":"#svg"},{"begin":"(<)([A-Za-z][.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":"/?>","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.custom.start.html","patterns":[{"include":"#attribute"}]},{"begin":"(</)([A-Za-z][.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\xB7\xC0-\xD6\xD8-\xF6\xF8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\\\\x{EFFFF}]*)(?=\\\\s|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.html"},"2":{"name":"entity.name.tag.html"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.tag.end.html"}},"name":"meta.tag.custom.end.html","patterns":[{"include":"#attribute"}]}]},"xml-processing":{"begin":"(<\\\\?)(xml)","captures":{"1":{"name":"punctuation.definition.tag.html"},"2":{"name":"entity.name.tag.html"}},"end":"(\\\\?>)","name":"meta.tag.metadata.processing.xml.html","patterns":[{"include":"#attribute"}]}},"scopeName":"text.html.basic","embeddedLangs":["javascript","css"]}`)),j3=[...id,...rd,qz];var Gz=Object.freeze(JSON.parse('{"displayName":"JSON","name":"json","patterns":[{"include":"#value"}],"repository":{"array":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.array.begin.json"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.array.end.json"}},"name":"meta.structure.array.json","patterns":[{"include":"#value"},{"match":",","name":"punctuation.separator.array.json"},{"match":"[^]\\\\s]","name":"invalid.illegal.expected-array-separator.json"}]},"comments":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","captures":{"0":{"name":"punctuation.definition.comment.json"}},"end":"\\\\*/","name":"comment.block.documentation.json"},{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.json"}},"end":"\\\\*/","name":"comment.block.json"},{"captures":{"1":{"name":"punctuation.definition.comment.json"}},"match":"(//).*$\\\\n?","name":"comment.line.double-slash.js"}]},"constant":{"match":"\\\\b(?:true|false|null)\\\\b","name":"constant.language.json"},"number":{"match":"-?(?:0|[1-9]\\\\d*)(?:(?:\\\\.\\\\d+)?(?:[Ee][-+]?\\\\d+)?)?","name":"constant.numeric.json"},"object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.dictionary.begin.json"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.dictionary.end.json"}},"name":"meta.structure.dictionary.json","patterns":[{"include":"#objectkey"},{"include":"#comments"},{"begin":":","beginCaptures":{"0":{"name":"punctuation.separator.dictionary.key-value.json"}},"end":"(,)|(?=})","endCaptures":{"1":{"name":"punctuation.separator.dictionary.pair.json"}},"name":"meta.structure.dictionary.value.json","patterns":[{"include":"#value"},{"match":"[^,\\\\s]","name":"invalid.illegal.expected-dictionary-separator.json"}]},{"match":"[^}\\\\s]","name":"invalid.illegal.expected-dictionary-separator.json"}]},"objectkey":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.support.type.property-name.begin.json"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.support.type.property-name.end.json"}},"name":"string.json support.type.property-name.json","patterns":[{"include":"#stringcontent"}]},"string":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.json"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.json"}},"name":"string.quoted.double.json","patterns":[{"include":"#stringcontent"}]},"stringcontent":{"patterns":[{"match":"\\\\\\\\(?:[\\"/\\\\\\\\bfnrt]|u\\\\h{4})","name":"constant.character.escape.json"},{"match":"\\\\\\\\.","name":"invalid.illegal.unrecognized-string-escape.json"}]},"value":{"patterns":[{"include":"#constant"},{"include":"#number"},{"include":"#string"},{"include":"#array"},{"include":"#object"},{"include":"#comments"}]}},"scopeName":"source.json"}')),S3=[Gz];var Hz=Object.freeze(JSON.parse(`{"displayName":"JSX","name":"jsx","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js.jsx"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.objectliteral.js.jsx","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js.jsx"}},"name":"meta.array.literal.js.jsx","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"variable.parameter.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.js.jsx"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.js.jsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js.jsx"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.js.jsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.js.jsx","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.js.jsx"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.js.jsx"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"include":"#jsx"}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.type.class.js.jsx"}},"end":"(?<=})","name":"meta.class.js.jsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.js.jsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.type.class.js.jsx"}},"end":"(?<=})","name":"meta.class.js.jsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.js.jsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js.jsx"}},"name":"comment.block.documentation.js.jsx","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.js.jsx"},"2":{"name":"storage.type.internaldeclaration.js.jsx"},"3":{"name":"punctuation.decorator.internaldeclaration.js.jsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.js.jsx"}},"name":"comment.block.js.jsx"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js.jsx"},"2":{"name":"comment.line.double-slash.js.jsx"},"3":{"name":"punctuation.definition.comment.js.jsx"},"4":{"name":"storage.type.internaldeclaration.js.jsx"},"5":{"name":"punctuation.decorator.internaldeclaration.js.jsx"}},"contentName":"comment.line.double-slash.js.jsx","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.js.jsx"},{"captures":{"1":{"name":"keyword.control.loop.js.jsx"},"2":{"name":"entity.name.label.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.js.jsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.js.jsx"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.js.jsx"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.js.jsx"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.block.js.jsx","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js.jsx"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.js.jsx"}},"end":"(?=\\\\s)","name":"meta.decorator.js.jsx","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js.jsx","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js.jsx","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"name":"meta.parameter.object-binding-pattern.js.jsx","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"name":"meta.paramter.array-binding-pattern.js.jsx","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"variable.parameter.js.jsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.js.jsx","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.js.jsx","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.js.jsx"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.js.jsx","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.js.jsx"},"2":{"name":"entity.name.tag.directive.js.jsx"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.js.jsx"}},"name":"meta.tag.js.jsx","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.js.jsx"},{"match":"=","name":"keyword.operator.assignment.js.jsx"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.js.jsx"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.js.jsx"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|'(?:\\\\*(?!/)|\\\\\\\\(?!')|[^*\\\\\\\\])*?'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.type.enum.js.jsx"},"5":{"name":"entity.name.type.enum.js.jsx"}},"end":"(?<=})","name":"meta.enum.declaration.js.jsx","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.js.jsx"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"keyword.control.as.js.jsx"},"3":{"name":"storage.type.namespace.js.jsx"},"4":{"name":"entity.name.type.module.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"keyword.control.type.js.jsx"},"3":{"name":"keyword.operator.assignment.js.jsx"},"4":{"name":"keyword.control.default.js.jsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.js.jsx","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"keyword.control.type.js.jsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.js.jsx","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"entity.name.function.js.jsx variable.language.this.js.jsx"},"4":{"name":"entity.name.function.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"4":{"name":"variable.parameter.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js.jsx"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.js.jsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.js.jsx"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.js.jsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.js.jsx"},"2":{"name":"keyword.generator.asterisk.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.js.jsx"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.js.jsx"},{"captures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"keyword.control.satisfies.js.jsx"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.js.jsx"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.js.jsx"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.js.jsx"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.js.jsx"},{"match":"[!=]==?","name":"keyword.operator.comparison.js.jsx"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.js.jsx"},{"captures":{"1":{"name":"keyword.operator.logical.js.jsx"},"2":{"name":"keyword.operator.assignment.compound.js.jsx"},"3":{"name":"keyword.operator.arithmetic.js.jsx"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.js.jsx"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.js.jsx"},{"match":"=","name":"keyword.operator.assignment.js.jsx"},{"match":"--","name":"keyword.operator.decrement.js.jsx"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.js.jsx"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.js.jsx"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.js.jsx"},"2":{"name":"keyword.operator.arithmetic.js.jsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.js.jsx"},"2":{"name":"keyword.operator.arithmetic.js.jsx"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#jsx"},{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.js.jsx","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.js.jsx entity.name.function.js.jsx"},"2":{"name":"keyword.operator.optional.js.jsx"},"3":{"name":"keyword.operator.definiteassignment.js.jsx"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.js.jsx variable.object.property.js.jsx"},{"match":"\\\\?","name":"keyword.operator.optional.js.jsx"},{"match":"!","name":"keyword.operator.definiteassignment.js.jsx"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.js.jsx"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.js.jsx"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.js.jsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.js.jsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx"},{"match":"!","name":"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.js.jsx"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.async.js.jsx"},"4":{"name":"storage.type.function.js.jsx"},"5":{"name":"keyword.generator.asterisk.js.jsx"},"6":{"name":"meta.definition.function.js.jsx entity.name.function.js.jsx"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.js.jsx","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"storage.type.function.js.jsx"},"3":{"name":"keyword.generator.asterisk.js.jsx"},"4":{"name":"meta.definition.function.js.jsx entity.name.function.js.jsx"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.js.jsx","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.js.jsx entity.name.function.js.jsx"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.js.jsx"}},"name":"meta.parameters.js.jsx","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.js.jsx"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"entity.name.function.js.jsx"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"variable.other.constant.property.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"variable.other.property.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.js.jsx"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.js.jsx"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.js.jsx"},"2":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"keyword.other.js.jsx"}},"name":"string.regexp.js.jsx","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"keyword.control.import.js.jsx"},"4":{"name":"keyword.control.type.js.jsx"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.js.jsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.js.jsx"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"keyword.control.import.js.jsx"},"4":{"name":"keyword.control.type.js.jsx"},"5":{"name":"variable.other.readwrite.alias.js.jsx"},"6":{"name":"keyword.operator.assignment.js.jsx"},"7":{"name":"keyword.control.require.js.jsx"},"8":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"name":"meta.import-equals.external.js.jsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"keyword.control.import.js.jsx"},"4":{"name":"keyword.control.type.js.jsx"},"5":{"name":"variable.other.readwrite.alias.js.jsx"},"6":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.js.jsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.js.jsx"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.js.jsx"},"2":{"name":"keyword.control.assert.js.jsx"},"3":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.js.jsx"},{"match":":","name":"punctuation.separator.key-value.js.jsx"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.block.js.jsx","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.js.jsx"},"2":{"name":"keyword.control.default.js.jsx"},"3":{"name":"constant.language.import-export-all.js.jsx"},"4":{"name":"variable.other.readwrite.js.jsx"},"5":{"name":"string.quoted.alias.js.jsx"},"12":{"name":"keyword.control.as.js.jsx"},"13":{"name":"keyword.control.default.js.jsx"},"14":{"name":"variable.other.readwrite.alias.js.jsx"},"15":{"name":"string.quoted.alias.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.js.jsx"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.js.jsx"},{"captures":{"1":{"name":"keyword.control.type.js.jsx"},"2":{"name":"variable.other.readwrite.alias.js.jsx"},"3":{"name":"string.quoted.alias.js.jsx"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.js.jsx"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"meta.brace.square.js.jsx"},"3":{"name":"variable.parameter.js.jsx"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js.jsx"},"2":{"name":"keyword.operator.optional.js.jsx"}},"name":"meta.indexer.declaration.js.jsx","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"meta.brace.square.js.jsx"},"4":{"name":"entity.name.type.js.jsx"},"5":{"name":"keyword.operator.expression.in.js.jsx"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.js.jsx"},"2":{"name":"keyword.operator.type.modifier.js.jsx"},"3":{"name":"keyword.operator.optional.js.jsx"}},"name":"meta.indexer.mappedtype.declaration.js.jsx","patterns":[{"captures":{"1":{"name":"keyword.control.as.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.js.jsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.type.interface.js.jsx"}},"end":"(?<=})","name":"meta.interface.js.jsx","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.js.jsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"jsx":{"patterns":[{"include":"#jsx-tag-without-attributes-in-expression"},{"include":"#jsx-tag-in-expression"}]},"jsx-children":{"patterns":[{"include":"#jsx-tag-without-attributes"},{"include":"#jsx-tag"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-entities"}]},"jsx-entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.js.jsx"},"3":{"name":"punctuation.definition.entity.js.jsx"}},"match":"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.js.jsx"}]},"jsx-evaluated-code":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.js.jsx"}},"contentName":"meta.embedded.expression.js.jsx","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.js.jsx"}},"patterns":[{"include":"#expression"}]},"jsx-string-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.js.jsx"}},"name":"string.quoted.double.js.jsx","patterns":[{"include":"#jsx-entities"}]},"jsx-string-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.js.jsx"}},"name":"string.quoted.single.js.jsx","patterns":[{"include":"#jsx-entities"}]},"jsx-tag":{"begin":"(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(/>)|(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.js.jsx"},"2":{"name":"punctuation.definition.tag.begin.js.jsx"},"3":{"name":"entity.name.tag.namespace.js.jsx"},"4":{"name":"punctuation.separator.namespace.js.jsx"},"5":{"name":"entity.name.tag.js.jsx"},"6":{"name":"support.class.component.js.jsx"},"7":{"name":"punctuation.definition.tag.end.js.jsx"}},"name":"meta.tag.js.jsx","patterns":[{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js.jsx"},"2":{"name":"entity.name.tag.namespace.js.jsx"},"3":{"name":"punctuation.separator.namespace.js.jsx"},"4":{"name":"entity.name.tag.js.jsx"},"5":{"name":"support.class.component.js.jsx"}},"end":"(?=/?>)","patterns":[{"include":"#comment"},{"include":"#type-arguments"},{"include":"#jsx-tag-attributes"}]},{"begin":"(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.end.js.jsx"}},"contentName":"meta.jsx.children.js.jsx","end":"(?=</)","patterns":[{"include":"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{"match":"=(?=\\\\s*(?:[\\"'{]|/\\\\*|//|\\\\n))","name":"keyword.operator.assignment.js.jsx"},"jsx-tag-attribute-name":{"captures":{"1":{"name":"entity.other.attribute-name.namespace.js.jsx"},"2":{"name":"punctuation.separator.namespace.js.jsx"},"3":{"name":"entity.other.attribute-name.js.jsx"}},"match":"\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\s]|/?>|/\\\\*|//)"},"jsx-tag-attributes":{"begin":"\\\\s+","end":"(?=/?>)","name":"meta.tag.attributes.js.jsx","patterns":[{"include":"#comment"},{"include":"#jsx-tag-attribute-name"},{"include":"#jsx-tag-attribute-assignment"},{"include":"#jsx-string-double-quoted"},{"include":"#jsx-string-single-quoted"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{"match":"\\\\S+","name":"invalid.illegal.attribute.js.jsx"},"jsx-tag-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?!<\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,))(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","patterns":[{"include":"#jsx-tag"}]},"jsx-tag-without-attributes":{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.js.jsx"},"2":{"name":"entity.name.tag.namespace.js.jsx"},"3":{"name":"punctuation.separator.namespace.js.jsx"},"4":{"name":"entity.name.tag.js.jsx"},"5":{"name":"support.class.component.js.jsx"},"6":{"name":"punctuation.definition.tag.end.js.jsx"}},"contentName":"meta.jsx.children.js.jsx","end":"(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.js.jsx"},"2":{"name":"entity.name.tag.namespace.js.jsx"},"3":{"name":"punctuation.separator.namespace.js.jsx"},"4":{"name":"entity.name.tag.js.jsx"},"5":{"name":"support.class.component.js.jsx"},"6":{"name":"punctuation.definition.tag.end.js.jsx"}},"name":"meta.tag.without-attributes.js.jsx","patterns":[{"include":"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","patterns":[{"include":"#jsx-tag-without-attributes"}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.js.jsx"},"2":{"name":"punctuation.separator.label.js.jsx"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.js.jsx"},"2":{"name":"punctuation.separator.label.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.modifier.async.js.jsx"},"5":{"name":"storage.type.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.modifier.async.js.jsx"},"5":{"name":"keyword.operator.new.js.jsx"},"6":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.modifier.js.jsx"},"4":{"name":"storage.modifier.async.js.jsx"},"5":{"name":"storage.type.property.js.jsx"},"6":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.js.jsx entity.name.function.js.jsx"},{"match":"\\\\?","name":"keyword.operator.optional.js.jsx"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$'_\`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.namespace.js.jsx"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.js.jsx","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.js.jsx"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.js.jsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.js.jsx","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.js.jsx"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.js.jsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.js.jsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.js.jsx"},{"captures":{"0":{"name":"constant.numeric.decimal.js.jsx"},"1":{"name":"meta.delimiter.decimal.period.js.jsx"},"2":{"name":"storage.type.numeric.bigint.js.jsx"},"3":{"name":"meta.delimiter.decimal.period.js.jsx"},"4":{"name":"storage.type.numeric.bigint.js.jsx"},"5":{"name":"meta.delimiter.decimal.period.js.jsx"},"6":{"name":"storage.type.numeric.bigint.js.jsx"},"7":{"name":"storage.type.numeric.bigint.js.jsx"},"8":{"name":"meta.delimiter.decimal.period.js.jsx"},"9":{"name":"storage.type.numeric.bigint.js.jsx"},"10":{"name":"meta.delimiter.decimal.period.js.jsx"},"11":{"name":"storage.type.numeric.bigint.js.jsx"},"12":{"name":"meta.delimiter.decimal.period.js.jsx"},"13":{"name":"storage.type.numeric.bigint.js.jsx"},"14":{"name":"storage.type.numeric.bigint.js.jsx"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.js.jsx"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.js.jsx"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.js.jsx"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.js.jsx"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"variable.other.constant.object.property.js.jsx"},"4":{"name":"variable.other.object.property.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.js.jsx"},"2":{"name":"variable.other.object.js.jsx"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.objectliteral.js.jsx","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"storage.type.property.js.jsx"},"3":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"storage.type.property.js.jsx"},"3":{"name":"keyword.generator.asterisk.js.jsx"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.js.jsx meta.object-literal.key.js.jsx","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"'\`])","end":"(?=:)|((?<=[\\"'\`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.js.jsx meta.object-literal.key.js.jsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.js.jsx meta.object-literal.key.js.jsx","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"'\`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.js.jsx","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.js.jsx"},"1":{"name":"constant.numeric.decimal.js.jsx"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js.jsx"},{"captures":{"0":{"name":"meta.object-literal.key.js.jsx"},"1":{"name":"entity.name.function.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.js.jsx"},{"captures":{"0":{"name":"meta.object-literal.key.js.jsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.js.jsx"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js.jsx"}},"end":"(?=[,}])","name":"meta.object.member.js.jsx","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js.jsx"},{"captures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.js.jsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.js.jsx"},"2":{"name":"keyword.control.satisfies.js.jsx"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.js.jsx","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.js.jsx","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx"}},"end":"(?=[,}])","name":"meta.object.member.js.jsx","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"},"2":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.js.jsx"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"entity.name.function.js.jsx variable.language.this.js.jsx"},"4":{"name":"entity.name.function.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"4":{"name":"variable.parameter.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.js.jsx"},"2":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.js.jsx"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.js.jsx","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.js.jsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx"}},"contentName":"meta.arrow.js.jsx meta.return.type.arrow.js.jsx","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.js.jsx"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.js.jsx"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.js.jsx"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"invalid.illegal.newline.js.jsx"}},"name":"string.quoted.double.js.jsx","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"invalid.illegal.newline.js.jsx"}},"name":"string.quoted.single.js.jsx","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"keyword.other.js.jsx"}},"name":"string.regexp.js.jsx","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.js.jsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.js.jsx"},"2":{"name":"keyword.other.js.jsx"}},"name":"string.regexp.js.jsx","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.js.jsx","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.js.jsx","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.js.jsx"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.js.jsx"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.js.jsx"},"2":{"name":"comment.line.double-slash.js.jsx"},"3":{"name":"punctuation.definition.comment.js.jsx"},"4":{"name":"storage.type.internaldeclaration.js.jsx"},"5":{"name":"punctuation.decorator.internaldeclaration.js.jsx"}},"contentName":"comment.line.double-slash.js.jsx","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.js.jsx"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.js.jsx"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"'\`])","name":"keyword.operator.expression.import.js.jsx"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.js.jsx"},{"captures":{"1":{"name":"keyword.control.import.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"},"4":{"name":"support.variable.property.importmeta.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"},"4":{"name":"support.variable.property.target.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.js.jsx"},"2":{"name":"punctuation.accessor.optional.js.jsx"},"3":{"name":"support.variable.property.js.jsx"},"4":{"name":"support.constant.js.jsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.js.jsx"},"2":{"name":"support.type.object.module.js.jsx"},"3":{"name":"punctuation.accessor.js.jsx"},"4":{"name":"punctuation.accessor.optional.js.jsx"},"5":{"name":"support.type.object.module.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"switch-statement.expr.js.jsx","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.js.jsx"},"2":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"name":"switch-expression.expr.js.jsx","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"(?=})","name":"switch-block.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.js.jsx"}},"end":"(?=:)","name":"case-clause.expr.js.jsx","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"},"2":{"name":"meta.block.js.jsx punctuation.definition.block.js.jsx"}},"contentName":"meta.block.js.jsx","end":"}","endCaptures":{"0":{"name":"meta.block.js.jsx punctuation.definition.block.js.jsx"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js.jsx"},"2":{"name":"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},"contentName":"string.template.js.jsx","end":"\`","endCaptures":{"0":{"name":"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","end":"(?=\`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.js.jsx"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js.jsx"}},"end":"(?=\`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js.jsx"}},"contentName":"meta.embedded.line.js.jsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js.jsx"}},"name":"meta.template.expression.js.jsx","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.js.jsx"},"2":{"name":"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"}},"contentName":"string.template.js.jsx","end":"\`","endCaptures":{"0":{"name":"string.template.js.jsx punctuation.definition.string.template.end.js.jsx"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.js.jsx"}},"contentName":"meta.embedded.line.js.jsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.js.jsx"}},"name":"meta.template.expression.js.jsx","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.js.jsx"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.js.jsx"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.js.jsx"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.type.js.jsx"},"4":{"name":"entity.name.type.alias.js.jsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.js.jsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"},"2":{"name":"keyword.control.intrinsic.js.jsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js.jsx","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.js.jsx"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.js.jsx","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.js.jsx"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.js.jsx"}},"name":"meta.type.parameters.js.jsx","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.js.jsx"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.js.jsx"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.js.jsx"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.js.jsx storage.modifier.js.jsx"},"2":{"name":"meta.type.constructor.js.jsx keyword.control.new.js.jsx"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.control.new.js.jsx"}},"end":"(?<=\\\\))","name":"meta.type.constructor.js.jsx","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.js.jsx","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.js.jsx"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.js.jsx","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.js.jsx"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.js.jsx","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.js.jsx"},"2":{"name":"entity.name.type.js.jsx"},"3":{"name":"keyword.operator.expression.extends.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.js.jsx"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"},"4":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"}},"contentName":"meta.type.parameters.js.jsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.js.jsx"},"2":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"}},"contentName":"meta.type.parameters.js.jsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.js.jsx"},"2":{"name":"punctuation.accessor.js.jsx"},"3":{"name":"punctuation.accessor.optional.js.jsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.js.jsx"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.js.jsx"}},"name":"meta.object.type.js.jsx","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.js.jsx"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.js.jsx"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.js.jsx"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.js.jsx"},{"match":"([:?])","name":"keyword.operator.ternary.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.js.jsx"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.js.jsx"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.js.jsx"}},"name":"meta.type.parameters.js.jsx","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.js.jsx"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.js.jsx"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.js.jsx"}},"name":"meta.type.paren.cover.js.jsx","patterns":[{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"entity.name.function.js.jsx variable.language.this.js.jsx"},"4":{"name":"entity.name.function.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.js.jsx"},"2":{"name":"keyword.operator.rest.js.jsx"},"3":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"4":{"name":"variable.parameter.js.jsx"},"5":{"name":"keyword.operator.optional.js.jsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.js.jsx"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.js.jsx"},"2":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"3":{"name":"variable.parameter.js.jsx"},"4":{"name":"keyword.operator.expression.is.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.js.jsx"},"2":{"name":"variable.parameter.js.jsx variable.language.this.js.jsx"},"3":{"name":"variable.parameter.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.js.jsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.js.jsx"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.js.jsx"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.js.jsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.js.jsx"}},"name":"meta.type.tuple.js.jsx","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.js.jsx"},{"captures":{"1":{"name":"entity.name.label.js.jsx"},"2":{"name":"keyword.operator.optional.js.jsx"},"3":{"name":"punctuation.separator.label.js.jsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.js.jsx"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.js.jsx"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js.jsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.js.jsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.js.jsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.js.jsx"},"2":{"name":"storage.modifier.js.jsx"},"3":{"name":"storage.type.js.jsx"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.js.jsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx entity.name.function.js.jsx"},"2":{"name":"keyword.operator.definiteassignment.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.constant.js.jsx"},"2":{"name":"keyword.operator.definiteassignment.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"},"2":{"name":"keyword.operator.definiteassignment.js.jsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.js.jsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.js.jsx"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.js.jsx"}`)),E3=[Hz];var Vz=Object.freeze(JSON.parse('{"displayName":"Markdown","name":"markdown","patterns":[{"include":"#frontMatter"},{"include":"#block"}],"repository":{"ampersand":{"match":"&(?!([0-9A-Za-z]+|#[0-9]+|#x\\\\h+);)","name":"meta.other.valid-ampersand.markdown"},"block":{"patterns":[{"include":"#separator"},{"include":"#heading"},{"include":"#blockquote"},{"include":"#lists"},{"include":"#fenced_code_block"},{"include":"#raw_block"},{"include":"#link-def"},{"include":"#html"},{"include":"#table"},{"include":"#paragraph"}]},"blockquote":{"begin":"(^|\\\\G) {0,3}(>) ?","captures":{"2":{"name":"punctuation.definition.quote.begin.markdown"}},"name":"markup.quote.markdown","patterns":[{"include":"#block"}],"while":"(^|\\\\G)\\\\s*(>) ?"},"bold":{"begin":"(?<open>(\\\\*\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*\\\\*|(?<!\\\\w)\\\\b__))(?=\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>|\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]?+|\\\\[((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+](( ?\\\\[[^]]*+])|(\\\\([\\\\t ]*+<?(.*?)>?[\\\\t ]*+((?<title>[\\"\'])(.*?)\\\\k<title>)?\\\\))))|(?!(?<=\\\\S)\\\\k<open>).)++(?<=\\\\S)(?=__\\\\b|\\\\*\\\\*)\\\\k<open>)","captures":{"1":{"name":"punctuation.definition.bold.markdown"}},"end":"(?<=\\\\S)(\\\\1)","name":"markup.bold.markdown","patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"},{"include":"#strikethrough"}]},"bracket":{"match":"<(?![!$/?A-Za-z])","name":"meta.other.valid-bracket.markdown"},"escape":{"match":"\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]","name":"constant.character.escape.markdown"},"fenced_code_block":{"patterns":[{"include":"#fenced_code_block_css"},{"include":"#fenced_code_block_basic"},{"include":"#fenced_code_block_ini"},{"include":"#fenced_code_block_java"},{"include":"#fenced_code_block_lua"},{"include":"#fenced_code_block_makefile"},{"include":"#fenced_code_block_perl"},{"include":"#fenced_code_block_r"},{"include":"#fenced_code_block_ruby"},{"include":"#fenced_code_block_php"},{"include":"#fenced_code_block_sql"},{"include":"#fenced_code_block_vs_net"},{"include":"#fenced_code_block_xml"},{"include":"#fenced_code_block_xsl"},{"include":"#fenced_code_block_yaml"},{"include":"#fenced_code_block_dosbatch"},{"include":"#fenced_code_block_clojure"},{"include":"#fenced_code_block_coffee"},{"include":"#fenced_code_block_c"},{"include":"#fenced_code_block_cpp"},{"include":"#fenced_code_block_diff"},{"include":"#fenced_code_block_dockerfile"},{"include":"#fenced_code_block_git_commit"},{"include":"#fenced_code_block_git_rebase"},{"include":"#fenced_code_block_go"},{"include":"#fenced_code_block_groovy"},{"include":"#fenced_code_block_pug"},{"include":"#fenced_code_block_ignore"},{"include":"#fenced_code_block_js"},{"include":"#fenced_code_block_js_regexp"},{"include":"#fenced_code_block_json"},{"include":"#fenced_code_block_jsonc"},{"include":"#fenced_code_block_jsonl"},{"include":"#fenced_code_block_less"},{"include":"#fenced_code_block_objc"},{"include":"#fenced_code_block_swift"},{"include":"#fenced_code_block_scss"},{"include":"#fenced_code_block_perl6"},{"include":"#fenced_code_block_powershell"},{"include":"#fenced_code_block_python"},{"include":"#fenced_code_block_julia"},{"include":"#fenced_code_block_regexp_python"},{"include":"#fenced_code_block_rust"},{"include":"#fenced_code_block_scala"},{"include":"#fenced_code_block_shell"},{"include":"#fenced_code_block_ts"},{"include":"#fenced_code_block_tsx"},{"include":"#fenced_code_block_csharp"},{"include":"#fenced_code_block_fsharp"},{"include":"#fenced_code_block_dart"},{"include":"#fenced_code_block_handlebars"},{"include":"#fenced_code_block_markdown"},{"include":"#fenced_code_block_log"},{"include":"#fenced_code_block_erlang"},{"include":"#fenced_code_block_elixir"},{"include":"#fenced_code_block_latex"},{"include":"#fenced_code_block_bibtex"},{"include":"#fenced_code_block_twig"},{"include":"#fenced_code_block_yang"},{"include":"#fenced_code_block_abap"},{"include":"#fenced_code_block_restructuredtext"},{"include":"#fenced_code_block_unknown"}]},"fenced_code_block_abap":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(abap)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.abap","patterns":[{"include":"source.abap"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_basic":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(html?|shtml|xhtml|inc|tmpl|tpl)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.html","patterns":[{"include":"text.html.basic"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_bibtex":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bibtex)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.bibtex","patterns":[{"include":"text.bibtex"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_c":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([ch])((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.c","patterns":[{"include":"source.c"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_clojure":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(cl(?:js??|ojure))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.clojure","patterns":[{"include":"source.clojure"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_coffee":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.coffee","patterns":[{"include":"source.coffee"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_cpp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c(?:pp|\\\\+\\\\+|xx))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.cpp source.cpp","patterns":[{"include":"source.cpp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_csharp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(c(?:s|sharp|#))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.csharp","patterns":[{"include":"source.cs"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_css":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(css(?:|.erb))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.css","patterns":[{"include":"source.css"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dart":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(dart)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dart","patterns":[{"include":"source.dart"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_diff":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(patch|diff|rej)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.diff","patterns":[{"include":"source.diff"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dockerfile":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([Dd]ockerfile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dockerfile","patterns":[{"include":"source.dockerfile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_dosbatch":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(bat(?:|ch))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.dosbatch","patterns":[{"include":"source.batchfile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_elixir":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(elixir)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.elixir","patterns":[{"include":"source.elixir"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_erlang":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(erlang)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.erlang","patterns":[{"include":"source.erlang"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_fsharp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(f(?:s|sharp|#))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.fsharp","patterns":[{"include":"source.fsharp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_git_commit":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:COMMIT_EDIT|MERGE_)MSG)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.git_commit","patterns":[{"include":"text.git-commit"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_git_rebase":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(git-rebase-todo)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.git_rebase","patterns":[{"include":"text.git-rebase"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_go":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(go(?:|lang))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.go","patterns":[{"include":"source.go"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_groovy":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(g(?:roovy|vy))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.groovy","patterns":[{"include":"source.groovy"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_handlebars":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(h(?:andlebars|bs))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.handlebars","patterns":[{"include":"text.html.handlebars"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ignore":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:git|)ignore)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ignore","patterns":[{"include":"source.ignore"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ini":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ini|conf)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ini","patterns":[{"include":"source.ini"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_java":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(java|bsh)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.java","patterns":[{"include":"source.java"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_js":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsx??|javascript|es6|mjs|cjs|dataviewjs|\\\\{\\\\.js.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.javascript","patterns":[{"include":"source.js"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_js_regexp":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(regexp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.js_regexp","patterns":[{"include":"source.js.regexp"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_json":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(json5??|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.json","patterns":[{"include":"source.json"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_jsonc":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonc)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.jsonc","patterns":[{"include":"source.json.comments"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_jsonl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jsonl(?:|ines))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.jsonl","patterns":[{"include":"source.json.lines"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_julia":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(julia|\\\\{\\\\.julia.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.julia","patterns":[{"include":"source.julia"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_latex":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:la|)tex)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.latex","patterns":[{"include":"text.tex.latex"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_less":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(less)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.less","patterns":[{"include":"source.css.less"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_log":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(log)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.log","patterns":[{"include":"text.log"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_lua":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(lua)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.lua","patterns":[{"include":"source.lua"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_makefile":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:((?:[Mm]|GNUm|OCamlM)akefile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.makefile","patterns":[{"include":"source.makefile"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_markdown":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(m(?:arkdown|d))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.markdown","patterns":[{"include":"text.html.markdown"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_objc":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|[hm])((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.objc","patterns":[{"include":"source.objc"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_perl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.perl","patterns":[{"include":"source.perl"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_perl6":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.perl6","patterns":[{"include":"source.perl.6"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_php":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(php3??|php4|php5|phpt|phtml|aw|ctp)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.php","patterns":[{"include":"text.html.basic"},{"include":"source.php"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_powershell":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(p(?:owershell|s1|sm1|sd1|wsh))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.powershell","patterns":[{"include":"source.powershell"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_pug":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(jade|pug)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.pug","patterns":[{"include":"text.pug"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_python":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(python|py3??|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gypi??|\\\\{\\\\.python.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.python","patterns":[{"include":"source.python"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_r":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:([RSrs]|Rprofile|\\\\{\\\\.r.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.r","patterns":[{"include":"source.r"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_regexp_python":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(re)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.regexp_python","patterns":[{"include":"source.regexp.python"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_restructuredtext":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(r(?:estructuredtext|st))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.restructuredtext","patterns":[{"include":"source.rst"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ruby":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ruby|rbx??|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.ruby","patterns":[{"include":"source.ruby"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_rust":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(rust|rs|\\\\{\\\\.rust.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.rust","patterns":[{"include":"source.rust"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_scala":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(s(?:cala|bt))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.scala","patterns":[{"include":"source.scala"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_scss":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(scss)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.scss","patterns":[{"include":"source.css.scss"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_shell":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\{\\\\.bash.+?})((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.shellscript","patterns":[{"include":"source.shell"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_sql":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(sql|ddl|dml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.sql","patterns":[{"include":"source.sql"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_swift":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(swift)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.swift","patterns":[{"include":"source.swift"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_ts":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(t(?:ypescript|s))((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.typescript","patterns":[{"include":"source.ts"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_tsx":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(tsx)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.typescriptreact","patterns":[{"include":"source.tsx"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_twig":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(twig)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.twig","patterns":[{"include":"source.twig"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_unknown":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?=([^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown"},"fenced_code_block_vs_net":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(vb)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.vs_net","patterns":[{"include":"source.asp.vb.net"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_xml":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.xml","patterns":[{"include":"text.xml"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_xsl":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(xslt??)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.xsl","patterns":[{"include":"text.xml.xsl"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_yaml":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(ya?ml)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.yaml","patterns":[{"include":"source.yaml"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"fenced_code_block_yang":{"begin":"(^|\\\\G)(\\\\s*)(`{3,}|~{3,})\\\\s*(?i:(yang)((\\\\s+|[,:?{])[^`]*)?$)","beginCaptures":{"3":{"name":"punctuation.definition.markdown"},"4":{"name":"fenced_code.block.language.markdown"},"5":{"name":"fenced_code.block.language.attributes.markdown"}},"end":"(^|\\\\G)(\\\\2|\\\\s{0,3})(\\\\3)\\\\s*$","endCaptures":{"3":{"name":"punctuation.definition.markdown"}},"name":"markup.fenced_code.block.markdown","patterns":[{"begin":"(^|\\\\G)(\\\\s*)(.*)","contentName":"meta.embedded.block.yang","patterns":[{"include":"source.yang"}],"while":"(^|\\\\G)(?!\\\\s*([`~]{3,})\\\\s*$)"}]},"frontMatter":{"applyEndPatternLast":1,"begin":"\\\\A(?=(-{3,}))","end":"^(?: {0,3}\\\\1-*[\\\\t ]*|[\\\\t ]*\\\\.{3})$","endCaptures":{"0":{"name":"punctuation.definition.end.frontmatter"}},"patterns":[{"begin":"\\\\A(-{3,})(.*)$","beginCaptures":{"1":{"name":"punctuation.definition.begin.frontmatter"},"2":{"name":"comment.frontmatter"}},"contentName":"meta.embedded.block.frontmatter","patterns":[{"include":"source.yaml"}],"while":"^(?!(?: {0,3}\\\\1-*[\\\\t ]*|[\\\\t ]*\\\\.{3})$)"}]},"heading":{"captures":{"1":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{6})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.6.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{5})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.5.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{4})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.4.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{3})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.3.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{2})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.2.markdown"},{"captures":{"1":{"name":"punctuation.definition.heading.markdown"},"2":{"name":"entity.name.section.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"}]},"3":{"name":"punctuation.definition.heading.markdown"}},"match":"(#{1})\\\\s+(.*?)(?:\\\\s+(#+))?\\\\s*$","name":"heading.1.markdown"}]}},"match":"(?:^|\\\\G) {0,3}(#{1,6}\\\\s+(.*?)(\\\\s+#{1,6})?\\\\s*)$","name":"markup.heading.markdown"},"heading-setext":{"patterns":[{"match":"^(={3,})(?=[\\\\t ]*$\\\\n?)","name":"markup.heading.setext.1.markdown"},{"match":"^(-{3,})(?=[\\\\t ]*$\\\\n?)","name":"markup.heading.setext.2.markdown"}]},"html":{"patterns":[{"begin":"(^|\\\\G)\\\\s*(<!--)","captures":{"1":{"name":"punctuation.definition.comment.html"},"2":{"name":"punctuation.definition.comment.html"}},"end":"(-->)","name":"comment.block.html"},{"begin":"(?i)(^|\\\\G)\\\\s*(?=<(script|style|pre)(\\\\s|$|>)(?!.*?</(script|style|pre)>))","end":"(?i)(.*)((</)(script|style|pre)(>))","endCaptures":{"1":{"patterns":[{"include":"text.html.derivative"}]},"2":{"name":"meta.tag.structure.$4.end.html"},"3":{"name":"punctuation.definition.tag.begin.html"},"4":{"name":"entity.name.tag.html"},"5":{"name":"punctuation.definition.tag.end.html"}},"patterns":[{"begin":"(\\\\s*|$)","patterns":[{"include":"text.html.derivative"}],"while":"(?i)^(?!.*</(script|style|pre)>)"}]},{"begin":"(?i)(^|\\\\G)\\\\s*(?=</?[A-Za-z]+[^\\\\&/;gt\\\\s]*(\\\\s|$|/?>))","patterns":[{"include":"text.html.derivative"}],"while":"^(?!\\\\s*$)"},{"begin":"(^|\\\\G)\\\\s*(?=(<(?:[-0-9A-Za-z](/?>|\\\\s.*?>)|/[-0-9A-Za-z]>))\\\\s*$)","patterns":[{"include":"text.html.derivative"}],"while":"^(?!\\\\s*$)"}]},"image-inline":{"captures":{"1":{"name":"punctuation.definition.link.description.begin.markdown"},"2":{"name":"string.other.link.description.markdown"},"4":{"name":"punctuation.definition.link.description.end.markdown"},"5":{"name":"punctuation.definition.metadata.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.image.markdown"},"9":{"name":"punctuation.definition.link.markdown"},"10":{"name":"markup.underline.link.image.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"},"18":{"name":"string.other.link.description.title.markdown"},"19":{"name":"punctuation.definition.string.begin.markdown"},"20":{"name":"punctuation.definition.string.end.markdown"},"21":{"name":"punctuation.definition.metadata.markdown"}},"match":"(!\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\()[\\\\t ]*((<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|((?<url>(?>[^()\\\\s]+)|\\\\(\\\\g<url>*\\\\))*))[\\\\t ]*(?:((\\\\().+?(\\\\)))|((\\").+?(\\"))|((\').+?(\')))?\\\\s*(\\\\))","name":"meta.image.inline.markdown"},"image-ref":{"captures":{"1":{"name":"punctuation.definition.link.description.begin.markdown"},"2":{"name":"string.other.link.description.markdown"},"4":{"name":"punctuation.definition.link.description.end.markdown"},"5":{"name":"punctuation.definition.constant.markdown"},"6":{"name":"constant.other.reference.link.markdown"},"7":{"name":"punctuation.definition.constant.markdown"}},"match":"(!\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(]) ?(\\\\[)(.*?)(])","name":"meta.image.reference.markdown"},"inline":{"patterns":[{"include":"#ampersand"},{"include":"#bracket"},{"include":"#bold"},{"include":"#italic"},{"include":"#raw"},{"include":"#strikethrough"},{"include":"#escape"},{"include":"#image-inline"},{"include":"#image-ref"},{"include":"#link-email"},{"include":"#link-inet"},{"include":"#link-inline"},{"include":"#link-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref-shortcut"}]},"italic":{"begin":"(?<open>(\\\\*(?=\\\\w)|(?<!\\\\w)\\\\*|(?<!\\\\w)\\\\b_))(?=\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\k<raw>(?!`))`)*+\\\\k<raw>|\\\\\\\\[-\\\\]!#(-+.>\\\\[\\\\\\\\_`{}]?+|\\\\[((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+](( ?\\\\[[^]]*+])|(\\\\([\\\\t ]*+<?(.*?)>?[\\\\t ]*+((?<title>[\\"\'])(.*?)\\\\k<title>)?\\\\))))|\\\\k<open>\\\\k<open>|(?!(?<=\\\\S)\\\\k<open>).)++(?<=\\\\S)(?=_\\\\b|\\\\*)\\\\k<open>)","captures":{"1":{"name":"punctuation.definition.italic.markdown"}},"end":"(?<=\\\\S)(\\\\1)((?!\\\\1)|(?=\\\\1\\\\1))","name":"markup.italic.markdown","patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"},{"include":"#strikethrough"}]},"link-def":{"captures":{"1":{"name":"punctuation.definition.constant.markdown"},"2":{"name":"constant.other.reference.link.markdown"},"3":{"name":"punctuation.definition.constant.markdown"},"4":{"name":"punctuation.separator.key-value.markdown"},"5":{"name":"punctuation.definition.link.markdown"},"6":{"name":"markup.underline.link.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.markdown"},"9":{"name":"string.other.link.description.title.markdown"},"10":{"name":"punctuation.definition.string.begin.markdown"},"11":{"name":"punctuation.definition.string.end.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"}},"match":"\\\\s*(\\\\[)([^]]+?)(])(:)[\\\\t ]*(?:(<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|(\\\\S+?))[\\\\t ]*(?:((\\\\().+?(\\\\)))|((\\").+?(\\"))|((\').+?(\')))?\\\\s*$","name":"meta.link.reference.def.markdown"},"link-email":{"captures":{"1":{"name":"punctuation.definition.link.markdown"},"2":{"name":"markup.underline.link.markdown"},"4":{"name":"punctuation.definition.link.markdown"}},"match":"(<)((?:mailto:)?[!#-\'*+\\\\--9=?A-Z^-~]+@[-0-9A-Za-z]+(?:\\\\.[-0-9A-Za-z]+)*)(>)","name":"meta.link.email.lt-gt.markdown"},"link-inet":{"captures":{"1":{"name":"punctuation.definition.link.markdown"},"2":{"name":"markup.underline.link.markdown"},"3":{"name":"punctuation.definition.link.markdown"}},"match":"(<)((?:https?|ftp)://.*?)(>)","name":"meta.link.inet.markdown"},"link-inline":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown","patterns":[{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#strikethrough"},{"include":"#image-inline"}]},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.metadata.markdown"},"7":{"name":"punctuation.definition.link.markdown"},"8":{"name":"markup.underline.link.markdown"},"9":{"name":"punctuation.definition.link.markdown"},"10":{"name":"markup.underline.link.markdown"},"12":{"name":"string.other.link.description.title.markdown"},"13":{"name":"punctuation.definition.string.begin.markdown"},"14":{"name":"punctuation.definition.string.end.markdown"},"15":{"name":"string.other.link.description.title.markdown"},"16":{"name":"punctuation.definition.string.begin.markdown"},"17":{"name":"punctuation.definition.string.end.markdown"},"18":{"name":"string.other.link.description.title.markdown"},"19":{"name":"punctuation.definition.string.begin.markdown"},"20":{"name":"punctuation.definition.string.end.markdown"},"21":{"name":"punctuation.definition.metadata.markdown"}},"match":"(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\()[\\\\t ]*((<)((?:\\\\\\\\[<>]|[^\\\\n<>])*)(>)|((?<url>(?>[^()\\\\s]+)|\\\\(\\\\g<url>*\\\\))*))[\\\\t ]*(?:((\\\\()[^()]*(\\\\)))|((\\")[^\\"]*(\\"))|((\')[^\']*(\')))?\\\\s*(\\\\))","name":"meta.link.inline.markdown"},"link-ref":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown","patterns":[{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#strikethrough"},{"include":"#image-inline"}]},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.constant.begin.markdown"},"6":{"name":"constant.other.reference.link.markdown"},"7":{"name":"punctuation.definition.constant.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(])(\\\\[)([^]]*+)(])","name":"meta.link.reference.markdown"},"link-ref-literal":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown"},"4":{"name":"punctuation.definition.link.title.end.markdown"},"5":{"name":"punctuation.definition.constant.begin.markdown"},"6":{"name":"punctuation.definition.constant.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?<square>[^]\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[\\\\g<square>*+])*+)(]) ?(\\\\[)(])","name":"meta.link.reference.literal.markdown"},"link-ref-shortcut":{"captures":{"1":{"name":"punctuation.definition.link.title.begin.markdown"},"2":{"name":"string.other.link.title.markdown"},"3":{"name":"punctuation.definition.link.title.end.markdown"}},"match":"(?<![]\\\\\\\\])(\\\\[)((?:[^]\\\\[\\\\\\\\\\\\s]|\\\\\\\\[]\\\\[])+?)((?<!\\\\\\\\)])","name":"meta.link.reference.markdown"},"list_paragraph":{"begin":"(^|\\\\G)(?=\\\\S)(?![*->]\\\\s|[0-9]+\\\\.\\\\s)","name":"meta.paragraph.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"},{"include":"#heading-setext"}],"while":"(^|\\\\G)(?!\\\\s*$|#| {0,3}([-*>_] {2,}){3,}[\\\\t ]*$\\\\n?| {0,3}[*->]| {0,3}[0-9]+\\\\.)"},"lists":{"patterns":[{"begin":"(^|\\\\G)( {0,3})([-*+])([\\\\t ])","beginCaptures":{"3":{"name":"punctuation.definition.list.begin.markdown"}},"name":"markup.list.unnumbered.markdown","patterns":[{"include":"#block"},{"include":"#list_paragraph"}],"while":"((^|\\\\G)( {2,4}|\\\\t))|^([\\\\t ]*)$"},{"begin":"(^|\\\\G)( {0,3})([0-9]+[).])([\\\\t ])","beginCaptures":{"3":{"name":"punctuation.definition.list.begin.markdown"}},"name":"markup.list.numbered.markdown","patterns":[{"include":"#block"},{"include":"#list_paragraph"}],"while":"((^|\\\\G)( {2,4}|\\\\t))|^([\\\\t ]*)$"}]},"paragraph":{"begin":"(^|\\\\G) {0,3}(?=[^\\\\t\\\\n ])","name":"meta.paragraph.markdown","patterns":[{"include":"#inline"},{"include":"text.html.derivative"},{"include":"#heading-setext"}],"while":"(^|\\\\G)((?=\\\\s*[-=]{3,}\\\\s*$)| {4,}(?=[^\\\\t\\\\n ]))"},"raw":{"captures":{"1":{"name":"punctuation.definition.raw.markdown"},"3":{"name":"punctuation.definition.raw.markdown"}},"match":"(`+)((?:[^`]|(?!(?<!`)\\\\1(?!`))`)*+)(\\\\1)","name":"markup.inline.raw.string.markdown"},"raw_block":{"begin":"(^|\\\\G)( {4}|\\\\t)","name":"markup.raw.block.markdown","while":"(^|\\\\G)( {4}|\\\\t)"},"separator":{"match":"(^|\\\\G) {0,3}([-*_])( {0,2}\\\\2){2,}[\\\\t ]*$\\\\n?","name":"meta.separator.markdown"},"strikethrough":{"captures":{"1":{"name":"punctuation.definition.strikethrough.markdown"},"2":{"patterns":[{"applyEndPatternLast":1,"begin":"(?=<[^>]*?>)","end":"(?<=>)","patterns":[{"include":"text.html.derivative"}]},{"include":"#escape"},{"include":"#ampersand"},{"include":"#bracket"},{"include":"#raw"},{"include":"#bold"},{"include":"#italic"},{"include":"#image-inline"},{"include":"#link-inline"},{"include":"#link-inet"},{"include":"#link-email"},{"include":"#image-ref"},{"include":"#link-ref-literal"},{"include":"#link-ref"},{"include":"#link-ref-shortcut"}]},"3":{"name":"punctuation.definition.strikethrough.markdown"}},"match":"(?<!\\\\\\\\)(~{2,})(?!(?<=\\\\w~~)_)((?:[^~]|(?!(?<![\\\\\\\\~])\\\\1(?!~))~)*+)(\\\\1)(?!(?<=_\\\\1)\\\\w)","name":"markup.strikethrough.markdown"},"table":{"begin":"(^|\\\\G)(\\\\|)(?=[^|].+\\\\|\\\\s*$)","beginCaptures":{"2":{"name":"punctuation.definition.table.markdown"}},"name":"markup.table.markdown","patterns":[{"match":"\\\\|","name":"punctuation.definition.table.markdown"},{"captures":{"1":{"name":"punctuation.separator.table.markdown"}},"match":"(?<=\\\\|)\\\\s*(:?-+:?)\\\\s*(?=\\\\|)"},{"captures":{"1":{"patterns":[{"include":"#inline"}]}},"match":"(?<=\\\\|)\\\\s*(?=\\\\S)((\\\\\\\\\\\\||[^|])+)(?<=\\\\S)\\\\s*(?=\\\\|)"}],"while":"(^|\\\\G)(?=\\\\|)"}},"scopeName":"text.html.markdown","embeddedLangs":[],"aliases":["md"],"embeddedLangsLazy":["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","jsonl","less","objective-c","swift","scss","raku","powershell","python","julia","regexp","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","log","erlang","elixir","latex","bibtex","abap","rst","html-derivative"]}')),gb=[Vz];var Wz=Object.freeze(JSON.parse(`{"displayName":"Python","name":"python","patterns":[{"include":"#statement"},{"include":"#expression"}],"repository":{"annotated-parameter":{"begin":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(:)","beginCaptures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"punctuation.separator.annotation.python"}},"end":"(,)|(?=\\\\))","endCaptures":{"1":{"name":"punctuation.separator.parameters.python"}},"patterns":[{"include":"#expression"},{"match":"=(?!=)","name":"keyword.operator.assignment.python"}]},"assignment-operator":{"match":"<<=|>>=|//=|\\\\*\\\\*=|\\\\+=|-=|/=|@=|\\\\*=|%=|~=|\\\\^=|&=|\\\\|=|=(?!=)","name":"keyword.operator.assignment.python"},"backticks":{"begin":"\`","end":"\`|(?<!\\\\\\\\)(\\\\n)","name":"invalid.deprecated.backtick.python","patterns":[{"include":"#expression"}]},"builtin-callables":{"patterns":[{"include":"#illegal-names"},{"include":"#illegal-object-name"},{"include":"#builtin-exceptions"},{"include":"#builtin-functions"},{"include":"#builtin-types"}]},"builtin-exceptions":{"match":"(?<!\\\\.)\\\\b((Arithmetic|Assertion|Attribute|Buffer|BlockingIO|BrokenPipe|ChildProcess|(Connection(Aborted|Refused|Reset)?)|EOF|Environment|FileExists|FileNotFound|FloatingPoint|IO|Import|Indentation|Index|Interrupted|IsADirectory|NotADirectory|Permission|ProcessLookup|Timeout|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow|Reference|Runtime|Recursion|Syntax|System|Tab|Type|UnboundLocal|Unicode(Encode|Decode|Translate)?|Value|Windows|ZeroDivision|ModuleNotFound)Error|((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes|Resource)?Warning|SystemExit|Stop(Async)?Iteration|KeyboardInterrupt|GeneratorExit|(Base)?Exception)\\\\b","name":"support.type.exception.python"},"builtin-functions":{"patterns":[{"match":"(?<!\\\\.)\\\\b(__import__|abs|aiter|all|any|anext|ascii|bin|breakpoint|callable|chr|compile|copyright|credits|delattr|dir|divmod|enumerate|eval|exec|exit|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|license|locals|map|max|memoryview|min|next|oct|open|ord|pow|print|quit|range|reload|repr|reversed|round|setattr|sorted|sum|vars|zip)\\\\b","name":"support.function.builtin.python"},{"match":"(?<!\\\\.)\\\\b(file|reduce|intern|raw_input|unicode|cmp|basestring|execfile|long|xrange)\\\\b","name":"variable.legacy.builtin.python"}]},"builtin-possible-callables":{"patterns":[{"include":"#builtin-callables"},{"include":"#magic-names"}]},"builtin-types":{"match":"(?<!\\\\.)\\\\b(bool|bytearray|bytes|classmethod|complex|dict|float|frozenset|int|list|object|property|set|slice|staticmethod|str|tuple|type|super)\\\\b","name":"support.type.python"},"call-wrapper-inheritance":{"begin":"\\\\b(?=([_[:alpha:]]\\\\w*)\\\\s*(\\\\())","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"name":"meta.function-call.python","patterns":[{"include":"#inheritance-name"},{"include":"#function-arguments"}]},"class-declaration":{"patterns":[{"begin":"\\\\s*(class)\\\\s+(?=[_[:alpha:]]\\\\w*\\\\s*([(:]))","beginCaptures":{"1":{"name":"storage.type.class.python"}},"end":"(:)","endCaptures":{"1":{"name":"punctuation.section.class.begin.python"}},"name":"meta.class.python","patterns":[{"include":"#class-name"},{"include":"#class-inheritance"}]}]},"class-inheritance":{"begin":"(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.inheritance.begin.python"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.inheritance.end.python"}},"name":"meta.class.inheritance.python","patterns":[{"match":"(\\\\*\\\\*?)","name":"keyword.operator.unpacking.arguments.python"},{"match":",","name":"punctuation.separator.inheritance.python"},{"match":"=(?!=)","name":"keyword.operator.assignment.python"},{"match":"\\\\bmetaclass\\\\b","name":"support.type.metaclass.python"},{"include":"#illegal-names"},{"include":"#class-kwarg"},{"include":"#call-wrapper-inheritance"},{"include":"#expression-base"},{"include":"#member-access-class"},{"include":"#inheritance-identifier"}]},"class-kwarg":{"captures":{"1":{"name":"entity.other.inherited-class.python variable.parameter.class.python"},"2":{"name":"keyword.operator.assignment.python"}},"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(=)(?!=)"},"class-name":{"patterns":[{"include":"#illegal-object-name"},{"include":"#builtin-possible-callables"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"entity.name.type.class.python"}]},"codetags":{"captures":{"1":{"name":"keyword.codetag.notation.python"}},"match":"\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\b"},"comments":{"patterns":[{"begin":"#\\\\s*(type:)\\\\s*+(?!$|#)","beginCaptures":{"0":{"name":"meta.typehint.comment.python"},"1":{"name":"comment.typehint.directive.notation.python"}},"contentName":"meta.typehint.comment.python","end":"$|(?=#)","name":"comment.line.number-sign.python","patterns":[{"match":"\\\\Gignore(?=\\\\s*(?:$|#))","name":"comment.typehint.ignore.notation.python"},{"match":"(?<!\\\\.)\\\\b(bool|bytes|float|int|object|str|List|Dict|Iterable|Sequence|Set|FrozenSet|Callable|Union|Tuple|Any|None)\\\\b","name":"comment.typehint.type.notation.python"},{"match":"([]()*,.=\\\\[]|(->))","name":"comment.typehint.punctuation.notation.python"},{"match":"([_[:alpha:]]\\\\w*)","name":"comment.typehint.variable.notation.python"}]},{"include":"#comments-base"}]},"comments-base":{"begin":"(#)","beginCaptures":{"1":{"name":"punctuation.definition.comment.python"}},"end":"$()","name":"comment.line.number-sign.python","patterns":[{"include":"#codetags"}]},"comments-string-double-three":{"begin":"(#)","beginCaptures":{"1":{"name":"punctuation.definition.comment.python"}},"end":"($|(?=\\"\\"\\"))","name":"comment.line.number-sign.python","patterns":[{"include":"#codetags"}]},"comments-string-single-three":{"begin":"(#)","beginCaptures":{"1":{"name":"punctuation.definition.comment.python"}},"end":"($|(?='''))","name":"comment.line.number-sign.python","patterns":[{"include":"#codetags"}]},"curly-braces":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.dict.begin.python"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.dict.end.python"}},"patterns":[{"match":":","name":"punctuation.separator.dict.python"},{"include":"#expression"}]},"decorator":{"begin":"^\\\\s*((@))\\\\s*(?=[_[:alpha:]]\\\\w*)","beginCaptures":{"1":{"name":"entity.name.function.decorator.python"},"2":{"name":"punctuation.definition.decorator.python"}},"end":"(\\\\))(.*?)(?=\\\\s*(?:#|$))|(?=[\\\\n#])","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"},"2":{"name":"invalid.illegal.decorator.python"}},"name":"meta.function.decorator.python","patterns":[{"include":"#decorator-name"},{"include":"#function-arguments"}]},"decorator-name":{"patterns":[{"include":"#builtin-callables"},{"include":"#illegal-object-name"},{"captures":{"2":{"name":"punctuation.separator.period.python"}},"match":"([_[:alpha:]]\\\\w*)|(\\\\.)","name":"entity.name.function.decorator.python"},{"include":"#line-continuation"},{"captures":{"1":{"name":"invalid.illegal.decorator.python"}},"match":"\\\\s*([^#(.\\\\\\\\_[:alpha:]\\\\s].*?)(?=#|$)","name":"invalid.illegal.decorator.python"}]},"docstring":{"patterns":[{"begin":"('''|\\"\\"\\")","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\1)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"}},"name":"string.quoted.docstring.multi.python","patterns":[{"include":"#docstring-prompt"},{"include":"#codetags"},{"include":"#docstring-guts-unicode"}]},{"begin":"([Rr])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"}},"name":"string.quoted.docstring.raw.multi.python","patterns":[{"include":"#string-consume-escape"},{"include":"#docstring-prompt"},{"include":"#codetags"}]},{"begin":"([\\"'])","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\1)|(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.docstring.single.python","patterns":[{"include":"#codetags"},{"include":"#docstring-guts-unicode"}]},{"begin":"([Rr])([\\"'])","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)|(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.docstring.raw.single.python","patterns":[{"include":"#string-consume-escape"},{"include":"#codetags"}]}]},"docstring-guts-unicode":{"patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"}]},"docstring-prompt":{"captures":{"1":{"name":"keyword.control.flow.python"}},"match":"(?:^|\\\\G)\\\\s*((?:>>>|\\\\.\\\\.\\\\.)\\\\s)(?=\\\\s*\\\\S)"},"docstring-statement":{"begin":"^(?=\\\\s*[Rr]?('''|\\"\\"\\"|[\\"']))","end":"((?<=\\\\1)|^)(?!\\\\s*[Rr]?('''|\\"\\"\\"|[\\"']))","patterns":[{"include":"#docstring"}]},"double-one-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"double-one-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"double-one-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#double-one-regexp-character-set"},{"include":"#double-one-regexp-comments"},{"include":"#regexp-flags"},{"include":"#double-one-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#double-one-regexp-lookahead"},{"include":"#double-one-regexp-lookahead-negative"},{"include":"#double-one-regexp-lookbehind"},{"include":"#double-one-regexp-lookbehind-negative"},{"include":"#double-one-regexp-conditional"},{"include":"#double-one-regexp-parentheses-non-capturing"},{"include":"#double-one-regexp-parentheses"}]},"double-one-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-one-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?=\\"))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-one-regexp-expression"}]},"double-three-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"double-three-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"double-three-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#double-three-regexp-character-set"},{"include":"#double-three-regexp-comments"},{"include":"#regexp-flags"},{"include":"#double-three-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#double-three-regexp-lookahead"},{"include":"#double-three-regexp-lookahead-negative"},{"include":"#double-three-regexp-lookbehind"},{"include":"#double-three-regexp-lookbehind-negative"},{"include":"#double-three-regexp-conditional"},{"include":"#double-three-regexp-parentheses-non-capturing"},{"include":"#double-three-regexp-parentheses"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"double-three-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?=\\"\\"\\"))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#double-three-regexp-expression"},{"include":"#comments-string-double-three"}]},"ellipsis":{"match":"\\\\.\\\\.\\\\.","name":"constant.other.ellipsis.python"},"escape-sequence":{"match":"\\\\\\\\(x\\\\h{2}|[0-7]{1,3}|[\\"'\\\\\\\\abfnrtv])","name":"constant.character.escape.python"},"escape-sequence-unicode":{"patterns":[{"match":"\\\\\\\\(u\\\\h{4}|U\\\\h{8}|N\\\\{[\\\\w\\\\s]+?})","name":"constant.character.escape.python"}]},"expression":{"patterns":[{"include":"#expression-base"},{"include":"#member-access"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b"}]},"expression-bare":{"patterns":[{"include":"#backticks"},{"include":"#illegal-anno"},{"include":"#literal"},{"include":"#regexp"},{"include":"#string"},{"include":"#lambda"},{"include":"#generator"},{"include":"#illegal-operator"},{"include":"#operator"},{"include":"#curly-braces"},{"include":"#item-access"},{"include":"#list"},{"include":"#odd-function-call"},{"include":"#round-braces"},{"include":"#function-call"},{"include":"#builtin-functions"},{"include":"#builtin-types"},{"include":"#builtin-exceptions"},{"include":"#magic-names"},{"include":"#special-names"},{"include":"#illegal-names"},{"include":"#special-variables"},{"include":"#ellipsis"},{"include":"#punctuation"},{"include":"#line-continuation"}]},"expression-base":{"patterns":[{"include":"#comments"},{"include":"#expression-bare"},{"include":"#line-continuation"}]},"f-expression":{"patterns":[{"include":"#expression-bare"},{"include":"#member-access"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b"}]},"fregexp-base-expression":{"patterns":[{"include":"#fregexp-quantifier"},{"include":"#fstring-formatting-braces"},{"match":"\\\\{.*?}"},{"include":"#regexp-base-common"}]},"fregexp-quantifier":{"match":"\\\\{\\\\{(\\\\d+|\\\\d+,(\\\\d+)?|,\\\\d+)}}","name":"keyword.operator.quantifier.regexp"},"fstring-fnorm-quoted-multi-line":{"begin":"\\\\b([Ff])([BUbu])?('''|\\"\\"\\")","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.multi.python storage.type.string.python"},"2":{"name":"invalid.illegal.prefix.python"},"3":{"name":"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"}},"end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"include":"#fstring-multi-core"}]},"fstring-fnorm-quoted-single-line":{"begin":"\\\\b([Ff])([BUbu])?(([\\"']))","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.single.python storage.type.string.python"},"2":{"name":"invalid.illegal.prefix.python"},"3":{"name":"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"}},"end":"(\\\\3)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"include":"#fstring-single-core"}]},"fstring-formatting":{"patterns":[{"include":"#fstring-formatting-braces"},{"include":"#fstring-formatting-singe-brace"}]},"fstring-formatting-braces":{"patterns":[{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"},"2":{"name":"invalid.illegal.brace.python"},"3":{"name":"constant.character.format.placeholder.other.python"}},"match":"(\\\\{)(\\\\s*?)(})"},{"match":"(\\\\{\\\\{|}})","name":"constant.character.escape.python"}]},"fstring-formatting-singe-brace":{"match":"(}(?!}))","name":"invalid.illegal.brace.python"},"fstring-guts":{"patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"},{"include":"#fstring-formatting"}]},"fstring-illegal-multi-brace":{"patterns":[{"include":"#impossible"}]},"fstring-illegal-single-brace":{"begin":"(\\\\{)(?=[^\\\\n}]*$\\\\n?)","beginCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"end":"(})|(?=\\\\n)","endCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"patterns":[{"include":"#fstring-terminator-single"},{"include":"#f-expression"}]},"fstring-multi-brace":{"begin":"(\\\\{)","beginCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"end":"(})","endCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"patterns":[{"include":"#fstring-terminator-multi"},{"include":"#f-expression"}]},"fstring-multi-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|'''|\\"\\"\\"))|\\\\n","name":"string.interpolated.python string.quoted.multi.python"},"fstring-normf-quoted-multi-line":{"begin":"\\\\b([BUbu])([Ff])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"string.interpolated.python string.quoted.multi.python storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python string.quoted.multi.python"}},"end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"include":"#fstring-multi-core"}]},"fstring-normf-quoted-single-line":{"begin":"\\\\b([BUbu])([Ff])(([\\"']))","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"string.interpolated.python string.quoted.single.python storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python string.quoted.single.python"}},"end":"(\\\\3)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-guts"},{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"include":"#fstring-single-core"}]},"fstring-raw-guts":{"patterns":[{"include":"#string-consume-escape"},{"include":"#fstring-formatting"}]},"fstring-raw-multi-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|'''|\\"\\"\\"))|\\\\n","name":"string.interpolated.python string.quoted.raw.multi.python"},"fstring-raw-quoted-multi-line":{"begin":"\\\\b([Rr][Ff]|[Ff][Rr])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python string.quoted.raw.multi.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-raw-guts"},{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"include":"#fstring-raw-multi-core"}]},"fstring-raw-quoted-single-line":{"begin":"\\\\b([Rr][Ff]|[Ff][Rr])(([\\"']))","beginCaptures":{"1":{"name":"string.interpolated.python string.quoted.raw.single.python storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python string.quoted.raw.single.python"}},"end":"(\\\\2)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.fstring.python","patterns":[{"include":"#fstring-raw-guts"},{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"include":"#fstring-raw-single-core"}]},"fstring-raw-single-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|([\\"'])|((?<!\\\\\\\\)\\\\n)))|\\\\n","name":"string.interpolated.python string.quoted.raw.single.python"},"fstring-single-brace":{"begin":"(\\\\{)","beginCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"end":"(})|(?=\\\\n)","endCaptures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"patterns":[{"include":"#fstring-terminator-single"},{"include":"#f-expression"}]},"fstring-single-core":{"match":"(.+?)($(\\\\n?)|(?=[\\\\\\\\{}]|([\\"'])|((?<!\\\\\\\\)\\\\n)))|\\\\n","name":"string.interpolated.python string.quoted.single.python"},"fstring-terminator-multi":{"patterns":[{"match":"(=(![ars])?)(?=})","name":"storage.type.format.python"},{"match":"(=?![ars])(?=})","name":"storage.type.format.python"},{"captures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"match":"(=?(?:![ars])?)(:\\\\w?[<=>^]?[- +]?#?\\\\d*,?(\\\\.\\\\d+)?[%EFGXb-gnosx]?)(?=})"},{"include":"#fstring-terminator-multi-tail"}]},"fstring-terminator-multi-tail":{"begin":"(=?(?:![ars])?)(:)(?=.*?\\\\{)","beginCaptures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"end":"(?=})","patterns":[{"include":"#fstring-illegal-multi-brace"},{"include":"#fstring-multi-brace"},{"match":"([%EFGXb-gnosx])(?=})","name":"storage.type.format.python"},{"match":"(\\\\.\\\\d+)","name":"storage.type.format.python"},{"match":"(,)","name":"storage.type.format.python"},{"match":"(\\\\d+)","name":"storage.type.format.python"},{"match":"(#)","name":"storage.type.format.python"},{"match":"([- +])","name":"storage.type.format.python"},{"match":"([<=>^])","name":"storage.type.format.python"},{"match":"(\\\\w)","name":"storage.type.format.python"}]},"fstring-terminator-single":{"patterns":[{"match":"(=(![ars])?)(?=})","name":"storage.type.format.python"},{"match":"(=?![ars])(?=})","name":"storage.type.format.python"},{"captures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"match":"(=?(?:![ars])?)(:\\\\w?[<=>^]?[- +]?#?\\\\d*,?(\\\\.\\\\d+)?[%EFGXb-gnosx]?)(?=})"},{"include":"#fstring-terminator-single-tail"}]},"fstring-terminator-single-tail":{"begin":"(=?(?:![ars])?)(:)(?=.*?\\\\{)","beginCaptures":{"1":{"name":"storage.type.format.python"},"2":{"name":"storage.type.format.python"}},"end":"(?=})|(?=\\\\n)","patterns":[{"include":"#fstring-illegal-single-brace"},{"include":"#fstring-single-brace"},{"match":"([%EFGXb-gnosx])(?=})","name":"storage.type.format.python"},{"match":"(\\\\.\\\\d+)","name":"storage.type.format.python"},{"match":"(,)","name":"storage.type.format.python"},{"match":"(\\\\d+)","name":"storage.type.format.python"},{"match":"(#)","name":"storage.type.format.python"},{"match":"([- +])","name":"storage.type.format.python"},{"match":"([<=>^])","name":"storage.type.format.python"},{"match":"(\\\\w)","name":"storage.type.format.python"}]},"function-arguments":{"begin":"(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.arguments.begin.python"}},"contentName":"meta.function-call.arguments.python","end":"(?=\\\\))(?!\\\\)\\\\s*\\\\()","patterns":[{"match":"(,)","name":"punctuation.separator.arguments.python"},{"captures":{"1":{"name":"keyword.operator.unpacking.arguments.python"}},"match":"(?:(?<=[(,])|^)\\\\s*(\\\\*{1,2})"},{"include":"#lambda-incomplete"},{"include":"#illegal-names"},{"captures":{"1":{"name":"variable.parameter.function-call.python"},"2":{"name":"keyword.operator.assignment.python"}},"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(=)(?!=)"},{"match":"=(?!=)","name":"keyword.operator.assignment.python"},{"include":"#expression"},{"captures":{"1":{"name":"punctuation.definition.arguments.end.python"},"2":{"name":"punctuation.definition.arguments.begin.python"}},"match":"\\\\s*(\\\\))\\\\s*(\\\\()"}]},"function-call":{"begin":"\\\\b(?=([_[:alpha:]]\\\\w*)\\\\s*(\\\\())","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"name":"meta.function-call.python","patterns":[{"include":"#special-variables"},{"include":"#function-name"},{"include":"#function-arguments"}]},"function-declaration":{"begin":"\\\\s*(?:\\\\b(async)\\\\s+)?\\\\b(def)\\\\s+(?=[_[:alpha:]]\\\\p{word}*\\\\s*\\\\()","beginCaptures":{"1":{"name":"storage.type.function.async.python"},"2":{"name":"storage.type.function.python"}},"end":"(:|(?=[\\\\n\\"#']))","endCaptures":{"1":{"name":"punctuation.section.function.begin.python"}},"name":"meta.function.python","patterns":[{"include":"#function-def-name"},{"include":"#parameters"},{"include":"#line-continuation"},{"include":"#return-annotation"}]},"function-def-name":{"patterns":[{"include":"#illegal-object-name"},{"include":"#builtin-possible-callables"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"entity.name.function.python"}]},"function-name":{"patterns":[{"include":"#builtin-possible-callables"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"meta.function-call.generic.python"}]},"generator":{"begin":"\\\\bfor\\\\b","beginCaptures":{"0":{"name":"keyword.control.flow.python"}},"end":"\\\\bin\\\\b","endCaptures":{"0":{"name":"keyword.control.flow.python"}},"patterns":[{"include":"#expression"}]},"illegal-anno":{"match":"->","name":"invalid.illegal.annotation.python"},"illegal-names":{"captures":{"1":{"name":"keyword.control.flow.python"},"2":{"name":"keyword.control.import.python"}},"match":"\\\\b(?:(and|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|in|is|(?<=\\\\.)lambda|lambda(?=\\\\s*[.=])|nonlocal|not|or|pass|raise|return|try|while|with|yield)|(as|import))\\\\b"},"illegal-object-name":{"match":"\\\\b(True|False|None)\\\\b","name":"keyword.illegal.name.python"},"illegal-operator":{"patterns":[{"match":"&&|\\\\|\\\\||--|\\\\+\\\\+","name":"invalid.illegal.operator.python"},{"match":"[$?]","name":"invalid.illegal.operator.python"},{"match":"!\\\\b","name":"invalid.illegal.operator.python"}]},"import":{"patterns":[{"begin":"\\\\b(?<!\\\\.)(from)\\\\b(?=.+import)","beginCaptures":{"1":{"name":"keyword.control.import.python"}},"end":"$|(?=import)","patterns":[{"match":"\\\\.+","name":"punctuation.separator.period.python"},{"include":"#expression"}]},{"begin":"\\\\b(?<!\\\\.)(import)\\\\b","beginCaptures":{"1":{"name":"keyword.control.import.python"}},"end":"$","patterns":[{"match":"\\\\b(?<!\\\\.)as\\\\b","name":"keyword.control.import.python"},{"include":"#expression"}]}]},"impossible":{"match":"$.^"},"inheritance-identifier":{"captures":{"1":{"name":"entity.other.inherited-class.python"}},"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b"},"inheritance-name":{"patterns":[{"include":"#lambda-incomplete"},{"include":"#builtin-possible-callables"},{"include":"#inheritance-identifier"}]},"item-access":{"patterns":[{"begin":"\\\\b(?=[_[:alpha:]]\\\\w*\\\\s*\\\\[)","end":"(])","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"name":"meta.item-access.python","patterns":[{"include":"#item-name"},{"include":"#item-index"},{"include":"#expression"}]}]},"item-index":{"begin":"(\\\\[)","beginCaptures":{"1":{"name":"punctuation.definition.arguments.begin.python"}},"contentName":"meta.item-access.arguments.python","end":"(?=])","patterns":[{"match":":","name":"punctuation.separator.slice.python"},{"include":"#expression"}]},"item-name":{"patterns":[{"include":"#special-variables"},{"include":"#builtin-functions"},{"include":"#special-names"},{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"meta.indexed-name.python"}]},"lambda":{"patterns":[{"captures":{"1":{"name":"keyword.control.flow.python"}},"match":"((?<=\\\\.)lambda|lambda(?=\\\\s*[.=]))"},{"captures":{"1":{"name":"storage.type.function.lambda.python"}},"match":"\\\\b(lambda)\\\\s*?(?=[\\\\n,]|$)"},{"begin":"\\\\b(lambda)\\\\b","beginCaptures":{"1":{"name":"storage.type.function.lambda.python"}},"contentName":"meta.function.lambda.parameters.python","end":"(:)|(\\\\n)","endCaptures":{"1":{"name":"punctuation.section.function.lambda.begin.python"}},"name":"meta.lambda-function.python","patterns":[{"match":"/","name":"keyword.operator.positional.parameter.python"},{"match":"(\\\\*\\\\*?)","name":"keyword.operator.unpacking.parameter.python"},{"include":"#lambda-nested-incomplete"},{"include":"#illegal-names"},{"captures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"punctuation.separator.parameters.python"}},"match":"([_[:alpha:]]\\\\w*)\\\\s*(?:(,)|(?=:|$))"},{"include":"#comments"},{"include":"#backticks"},{"include":"#illegal-anno"},{"include":"#lambda-parameter-with-default"},{"include":"#line-continuation"},{"include":"#illegal-operator"}]}]},"lambda-incomplete":{"match":"\\\\blambda(?=\\\\s*[),])","name":"storage.type.function.lambda.python"},"lambda-nested-incomplete":{"match":"\\\\blambda(?=\\\\s*[),:])","name":"storage.type.function.lambda.python"},"lambda-parameter-with-default":{"begin":"\\\\b([_[:alpha:]]\\\\w*)\\\\s*(=)","beginCaptures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"keyword.operator.python"}},"end":"(,)|(?=:|$)","endCaptures":{"1":{"name":"punctuation.separator.parameters.python"}},"patterns":[{"include":"#expression"}]},"line-continuation":{"patterns":[{"captures":{"1":{"name":"punctuation.separator.continuation.line.python"},"2":{"name":"invalid.illegal.line.continuation.python"}},"match":"(\\\\\\\\)\\\\s*(\\\\S.*$\\\\n?)"},{"begin":"(\\\\\\\\)\\\\s*$\\\\n?","beginCaptures":{"1":{"name":"punctuation.separator.continuation.line.python"}},"end":"(?=^\\\\s*$)|(?!(\\\\s*[Rr]?('''|\\"\\"\\"|[\\"']))|\\\\G()$)","patterns":[{"include":"#regexp"},{"include":"#string"}]}]},"list":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.list.begin.python"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.list.end.python"}},"patterns":[{"include":"#expression"}]},"literal":{"patterns":[{"match":"\\\\b(True|False|None|NotImplemented|Ellipsis)\\\\b","name":"constant.language.python"},{"include":"#number"}]},"loose-default":{"begin":"(=)","beginCaptures":{"1":{"name":"keyword.operator.python"}},"end":"(,)|(?=\\\\))","endCaptures":{"1":{"name":"punctuation.separator.parameters.python"}},"patterns":[{"include":"#expression"}]},"magic-function-names":{"captures":{"1":{"name":"support.function.magic.python"}},"match":"\\\\b(__(?:abs|add|aenter|aexit|aiter|and|anext|await|bool|call|ceil|class_getitem|cmp|coerce|complex|contains|copy|deepcopy|del|delattr|delete|delitem|delslice|dir|div|divmod|enter|eq|exit|float|floor|floordiv|format|get??|getattr|getattribute|getinitargs|getitem|getnewargs|getslice|getstate|gt|hash|hex|iadd|iand|idiv|ifloordiv||ilshift|imod|imul|index|init|instancecheck|int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|len??|long|lshift|lt|missing|mod|mul|neg??|new|next|nonzero|oct|or|pos|pow|radd|rand|rdiv|rdivmod|reduce|reduce_ex|repr|reversed|rfloordiv||rlshift|rmod|rmul|ror|round|rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|set_name|setslice|setstate|sizeof|str|sub|subclasscheck|truediv|trunc|unicode|xor|matmul|rmatmul|imatmul|init_subclass|set_name|fspath|bytes|prepare|length_hint)__)\\\\b"},"magic-names":{"patterns":[{"include":"#magic-function-names"},{"include":"#magic-variable-names"}]},"magic-variable-names":{"captures":{"1":{"name":"support.variable.magic.python"}},"match":"\\\\b(__(?:all|annotations|bases|builtins|class|closure|code|debug|defaults|dict|doc|file|func|globals|kwdefaults|match_args|members|metaclass|methods|module|mro|mro_entries|name|qualname|post_init|self|signature|slots|subclasses|version|weakref|wrapped|classcell|spec|path|package|future|traceback)__)\\\\b"},"member-access":{"begin":"(\\\\.)\\\\s*(?!\\\\.)","beginCaptures":{"1":{"name":"punctuation.separator.period.python"}},"end":"(?<=\\\\S)(?=\\\\W)|(^|(?<=\\\\s))(?=[^\\\\\\\\\\\\w\\\\s])|$","name":"meta.member.access.python","patterns":[{"include":"#function-call"},{"include":"#member-access-base"},{"include":"#member-access-attribute"}]},"member-access-attribute":{"match":"\\\\b([_[:alpha:]]\\\\w*)\\\\b","name":"meta.attribute.python"},"member-access-base":{"patterns":[{"include":"#magic-names"},{"include":"#illegal-names"},{"include":"#illegal-object-name"},{"include":"#special-names"},{"include":"#line-continuation"},{"include":"#item-access"}]},"member-access-class":{"begin":"(\\\\.)\\\\s*(?!\\\\.)","beginCaptures":{"1":{"name":"punctuation.separator.period.python"}},"end":"(?<=\\\\S)(?=\\\\W)|$","name":"meta.member.access.python","patterns":[{"include":"#call-wrapper-inheritance"},{"include":"#member-access-base"},{"include":"#inheritance-identifier"}]},"number":{"name":"constant.numeric.python","patterns":[{"include":"#number-float"},{"include":"#number-dec"},{"include":"#number-hex"},{"include":"#number-oct"},{"include":"#number-bin"},{"include":"#number-long"},{"match":"\\\\b[0-9]+\\\\w+","name":"invalid.illegal.name.python"}]},"number-bin":{"captures":{"1":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])(0[Bb])(_?[01])+\\\\b","name":"constant.numeric.bin.python"},"number-dec":{"captures":{"1":{"name":"storage.type.imaginary.number.python"},"2":{"name":"invalid.illegal.dec.python"}},"match":"(?<![.\\\\w])(?:[1-9](?:_?[0-9])*|0+|[0-9](?:_?[0-9])*([Jj])|0([0-9]+)(?![.Ee]))\\\\b","name":"constant.numeric.dec.python"},"number-float":{"captures":{"1":{"name":"storage.type.imaginary.number.python"}},"match":"(?<!\\\\w)(?:(?:\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\.)(?:[Ee][-+]?[0-9](?:_?[0-9])*)?|[0-9](?:_?[0-9])*[Ee][-+]?[0-9](?:_?[0-9])*)([Jj])?\\\\b","name":"constant.numeric.float.python"},"number-hex":{"captures":{"1":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])(0[Xx])(_?\\\\h)+\\\\b","name":"constant.numeric.hex.python"},"number-long":{"captures":{"2":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])([1-9][0-9]*|0)([Ll])\\\\b","name":"constant.numeric.bin.python"},"number-oct":{"captures":{"1":{"name":"storage.type.number.python"}},"match":"(?<![.\\\\w])(0[Oo])(_?[0-7])+\\\\b","name":"constant.numeric.oct.python"},"odd-function-call":{"begin":"(?<=[])])\\\\s*(?=\\\\()","end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.arguments.end.python"}},"patterns":[{"include":"#function-arguments"}]},"operator":{"captures":{"1":{"name":"keyword.operator.logical.python"},"2":{"name":"keyword.control.flow.python"},"3":{"name":"keyword.operator.bitwise.python"},"4":{"name":"keyword.operator.arithmetic.python"},"5":{"name":"keyword.operator.comparison.python"},"6":{"name":"keyword.operator.assignment.python"}},"match":"\\\\b(?<!\\\\.)(?:(and|or|not|in|is)|(for|if|else|await|yield(?:\\\\s+from)?))(?!\\\\s*:)\\\\b|(<<|>>|[\\\\&^|~])|(\\\\*\\\\*|[-%*+]|//|[/@])|(!=|==|>=|<=|[<>])|(:=)"},"parameter-special":{"captures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"variable.parameter.function.language.special.self.python"},"3":{"name":"variable.parameter.function.language.special.cls.python"},"4":{"name":"punctuation.separator.parameters.python"}},"match":"\\\\b((self)|(cls))\\\\b\\\\s*(?:(,)|(?=\\\\)))"},"parameters":{"begin":"(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.parameters.begin.python"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.parameters.end.python"}},"name":"meta.function.parameters.python","patterns":[{"match":"/","name":"keyword.operator.positional.parameter.python"},{"match":"(\\\\*\\\\*?)","name":"keyword.operator.unpacking.parameter.python"},{"include":"#lambda-incomplete"},{"include":"#illegal-names"},{"include":"#illegal-object-name"},{"include":"#parameter-special"},{"captures":{"1":{"name":"variable.parameter.function.language.python"},"2":{"name":"punctuation.separator.parameters.python"}},"match":"([_[:alpha:]]\\\\w*)\\\\s*(?:(,)|(?=[\\\\n#)=]))"},{"include":"#comments"},{"include":"#loose-default"},{"include":"#annotated-parameter"}]},"punctuation":{"patterns":[{"match":":","name":"punctuation.separator.colon.python"},{"match":",","name":"punctuation.separator.element.python"}]},"regexp":{"patterns":[{"include":"#regexp-single-three-line"},{"include":"#regexp-double-three-line"},{"include":"#regexp-single-one-line"},{"include":"#regexp-double-one-line"}]},"regexp-backreference":{"captures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"},"2":{"name":"entity.name.tag.named.backreference.regexp"},"3":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"}},"match":"(\\\\()(\\\\?P=\\\\w+(?:\\\\s+\\\\p{alnum}+)?)(\\\\))","name":"meta.backreference.named.regexp"},"regexp-backreference-number":{"captures":{"1":{"name":"entity.name.tag.backreference.regexp"}},"match":"(\\\\\\\\[1-9]\\\\d?)","name":"meta.backreference.regexp"},"regexp-base-common":{"patterns":[{"match":"\\\\.","name":"support.other.match.any.regexp"},{"match":"\\\\^","name":"support.other.match.begin.regexp"},{"match":"\\\\$","name":"support.other.match.end.regexp"},{"match":"[*+?]\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.disjunction.regexp"},{"include":"#regexp-escape-sequence"}]},"regexp-base-expression":{"patterns":[{"include":"#regexp-quantifier"},{"include":"#regexp-base-common"}]},"regexp-charecter-set-escapes":{"patterns":[{"match":"\\\\\\\\[\\\\\\\\abfnrtv]","name":"constant.character.escape.regexp"},{"include":"#regexp-escape-special"},{"match":"\\\\\\\\([0-7]{1,3})","name":"constant.character.escape.regexp"},{"include":"#regexp-escape-character"},{"include":"#regexp-escape-unicode"},{"include":"#regexp-escape-catchall"}]},"regexp-double-one-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\")","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\")|(?<!\\\\\\\\)(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.single.python","patterns":[{"include":"#double-one-regexp-expression"}]},"regexp-double-three-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\"\\"\\")","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\"\\"\\")","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.multi.python","patterns":[{"include":"#double-three-regexp-expression"}]},"regexp-escape-catchall":{"match":"\\\\\\\\(.|\\\\n)","name":"constant.character.escape.regexp"},"regexp-escape-character":{"match":"\\\\\\\\(x\\\\h{2}|0[0-7]{1,2}|[0-7]{3})","name":"constant.character.escape.regexp"},"regexp-escape-sequence":{"patterns":[{"include":"#regexp-escape-special"},{"include":"#regexp-escape-character"},{"include":"#regexp-escape-unicode"},{"include":"#regexp-backreference-number"},{"include":"#regexp-escape-catchall"}]},"regexp-escape-special":{"match":"\\\\\\\\([ABDSWZbdsw])","name":"support.other.escape.special.regexp"},"regexp-escape-unicode":{"match":"\\\\\\\\(u\\\\h{4}|U\\\\h{8})","name":"constant.character.unicode.regexp"},"regexp-flags":{"match":"\\\\(\\\\?[Laimsux]+\\\\)","name":"storage.modifier.flag.regexp"},"regexp-quantifier":{"match":"\\\\{(\\\\d+|\\\\d+,(\\\\d+)?|,\\\\d+)}","name":"keyword.operator.quantifier.regexp"},"regexp-single-one-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(')","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(')|(?<!\\\\\\\\)(\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.single.python","patterns":[{"include":"#single-one-regexp-expression"}]},"regexp-single-three-line":{"begin":"\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(''')","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"storage.type.string.python"},"5":{"name":"punctuation.definition.string.begin.python"}},"end":"(''')","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.regexp.quoted.multi.python","patterns":[{"include":"#single-three-regexp-expression"}]},"return-annotation":{"begin":"(->)","beginCaptures":{"1":{"name":"punctuation.separator.annotation.result.python"}},"end":"(?=:)","patterns":[{"include":"#expression"}]},"round-braces":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.parenthesis.begin.python"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.parenthesis.end.python"}},"patterns":[{"include":"#expression"}]},"semicolon":{"patterns":[{"match":";$","name":"invalid.deprecated.semicolon.python"}]},"single-one-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"single-one-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"single-one-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#single-one-regexp-character-set"},{"include":"#single-one-regexp-comments"},{"include":"#regexp-flags"},{"include":"#single-one-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#single-one-regexp-lookahead"},{"include":"#single-one-regexp-lookahead-negative"},{"include":"#single-one-regexp-lookbehind"},{"include":"#single-one-regexp-lookbehind-negative"},{"include":"#single-one-regexp-conditional"},{"include":"#single-one-regexp-parentheses-non-capturing"},{"include":"#single-one-regexp-parentheses"}]},"single-one-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-one-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?='))|((?=(?<!\\\\\\\\)\\\\n))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-one-regexp-expression"}]},"single-three-regexp-character-set":{"patterns":[{"match":"\\\\[\\\\^?](?!.*?])"},{"begin":"(\\\\[)(\\\\^)?(])?","beginCaptures":{"1":{"name":"punctuation.character.set.begin.regexp constant.other.set.regexp"},"2":{"name":"keyword.operator.negation.regexp"},"3":{"name":"constant.character.set.regexp"}},"end":"(]|(?='''))","endCaptures":{"1":{"name":"punctuation.character.set.end.regexp constant.other.set.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.character.set.regexp","patterns":[{"include":"#regexp-charecter-set-escapes"},{"match":"\\\\N","name":"constant.character.set.regexp"}]}]},"single-three-regexp-comments":{"begin":"\\\\(\\\\?#","beginCaptures":{"0":{"name":"punctuation.comment.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"punctuation.comment.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"comment.regexp","patterns":[{"include":"#codetags"}]},"single-three-regexp-conditional":{"begin":"(\\\\()\\\\?\\\\((\\\\w+(?:\\\\s+\\\\p{alnum}+)?|\\\\d+)\\\\)","beginCaptures":{"0":{"name":"keyword.operator.conditional.regexp"},"1":{"name":"punctuation.parenthesis.conditional.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-expression":{"patterns":[{"include":"#regexp-base-expression"},{"include":"#single-three-regexp-character-set"},{"include":"#single-three-regexp-comments"},{"include":"#regexp-flags"},{"include":"#single-three-regexp-named-group"},{"include":"#regexp-backreference"},{"include":"#single-three-regexp-lookahead"},{"include":"#single-three-regexp-lookahead-negative"},{"include":"#single-three-regexp-lookbehind"},{"include":"#single-three-regexp-lookbehind-negative"},{"include":"#single-three-regexp-conditional"},{"include":"#single-three-regexp-parentheses-non-capturing"},{"include":"#single-three-regexp-parentheses"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookahead":{"begin":"(\\\\()\\\\?=","beginCaptures":{"0":{"name":"keyword.operator.lookahead.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookahead-negative":{"begin":"(\\\\()\\\\?!","beginCaptures":{"0":{"name":"keyword.operator.lookahead.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookahead.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookbehind":{"begin":"(\\\\()\\\\?<=","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-lookbehind-negative":{"begin":"(\\\\()\\\\?<!","beginCaptures":{"0":{"name":"keyword.operator.lookbehind.negative.regexp"},"1":{"name":"punctuation.parenthesis.lookbehind.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-named-group":{"begin":"(\\\\()(\\\\?P<\\\\w+(?:\\\\s+\\\\p{alnum}+)?>)","beginCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"},"2":{"name":"entity.name.tag.named.group.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"name":"meta.named.regexp","patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-parentheses":{"begin":"\\\\(","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"single-three-regexp-parentheses-non-capturing":{"begin":"\\\\(\\\\?:","beginCaptures":{"0":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"}},"end":"(\\\\)|(?='''))","endCaptures":{"1":{"name":"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"},"2":{"name":"invalid.illegal.newline.python"}},"patterns":[{"include":"#single-three-regexp-expression"},{"include":"#comments-string-single-three"}]},"special-names":{"match":"\\\\b(_*\\\\p{upper}[_\\\\d]*\\\\p{upper})[[:upper:]\\\\d]*(_\\\\w*)?\\\\b","name":"constant.other.caps.python"},"special-variables":{"captures":{"1":{"name":"variable.language.special.self.python"},"2":{"name":"variable.language.special.cls.python"}},"match":"\\\\b(?<!\\\\.)(?:(self)|(cls))\\\\b"},"statement":{"patterns":[{"include":"#import"},{"include":"#class-declaration"},{"include":"#function-declaration"},{"include":"#generator"},{"include":"#statement-keyword"},{"include":"#assignment-operator"},{"include":"#decorator"},{"include":"#docstring-statement"},{"include":"#semicolon"}]},"statement-keyword":{"patterns":[{"match":"\\\\b((async\\\\s+)?\\\\s*def)\\\\b","name":"storage.type.function.python"},{"match":"\\\\b(?<!\\\\.)as\\\\b(?=.*[:\\\\\\\\])","name":"keyword.control.flow.python"},{"match":"\\\\b(?<!\\\\.)as\\\\b","name":"keyword.control.import.python"},{"match":"\\\\b(?<!\\\\.)(async|continue|del|assert|break|finally|for|from|elif|else|if|except|pass|raise|return|try|while|with)\\\\b","name":"keyword.control.flow.python"},{"match":"\\\\b(?<!\\\\.)(global|nonlocal)\\\\b","name":"storage.modifier.declaration.python"},{"match":"\\\\b(?<!\\\\.)(class)\\\\b","name":"storage.type.class.python"},{"captures":{"1":{"name":"keyword.control.flow.python"}},"match":"^\\\\s*(case|match)(?=\\\\s*([-\\"#'(+:\\\\[{\\\\w\\\\d]|$))\\\\b"}]},"string":{"patterns":[{"include":"#string-quoted-multi-line"},{"include":"#string-quoted-single-line"},{"include":"#string-bin-quoted-multi-line"},{"include":"#string-bin-quoted-single-line"},{"include":"#string-raw-quoted-multi-line"},{"include":"#string-raw-quoted-single-line"},{"include":"#string-raw-bin-quoted-multi-line"},{"include":"#string-raw-bin-quoted-single-line"},{"include":"#fstring-fnorm-quoted-multi-line"},{"include":"#fstring-fnorm-quoted-single-line"},{"include":"#fstring-normf-quoted-multi-line"},{"include":"#fstring-normf-quoted-single-line"},{"include":"#fstring-raw-quoted-multi-line"},{"include":"#fstring-raw-quoted-single-line"}]},"string-bin-quoted-multi-line":{"begin":"\\\\b([Bb])('''|\\"\\"\\")","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.binary.multi.python","patterns":[{"include":"#string-entity"}]},"string-bin-quoted-single-line":{"begin":"\\\\b([Bb])(([\\"']))","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.binary.single.python","patterns":[{"include":"#string-entity"}]},"string-brace-formatting":{"patterns":[{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"},"3":{"name":"storage.type.format.python"},"4":{"name":"storage.type.format.python"}},"match":"(\\\\{\\\\{|}}|\\\\{\\\\w*(\\\\.[_[:alpha:]]\\\\w*|\\\\[[^]\\"']+])*(![ars])?(:\\\\w?[<=>^]?[- +]?#?\\\\d*,?(\\\\.\\\\d+)?[%EFGXb-gnosx]?)?})","name":"meta.format.brace.python"},{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"},"3":{"name":"storage.type.format.python"},"4":{"name":"storage.type.format.python"}},"match":"(\\\\{\\\\w*(\\\\.[_[:alpha:]]\\\\w*|\\\\[[^]\\"']+])*(![ars])?(:)[^\\\\n\\"'{}]*(?:\\\\{[^\\\\n\\"'}]*?}[^\\\\n\\"'{}]*)*})","name":"meta.format.brace.python"}]},"string-consume-escape":{"match":"\\\\\\\\[\\\\n\\"'\\\\\\\\]"},"string-entity":{"patterns":[{"include":"#escape-sequence"},{"include":"#string-line-continuation"},{"include":"#string-formatting"}]},"string-formatting":{"captures":{"1":{"name":"constant.character.format.placeholder.other.python"}},"match":"(%(\\\\([\\\\w\\\\s]*\\\\))?[- #+0]*(\\\\d+|\\\\*)?(\\\\.(\\\\d+|\\\\*))?([Lhl])?[%EFGXa-giorsux])","name":"meta.format.percent.python"},"string-line-continuation":{"match":"\\\\\\\\$","name":"constant.language.python"},"string-multi-bad-brace1-formatting-raw":{"begin":"(?=\\\\{%(.*?(?!'''|\\"\\"\\"))%})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#string-consume-escape"}]},"string-multi-bad-brace1-formatting-unicode":{"begin":"(?=\\\\{%(.*?(?!'''|\\"\\"\\"))%})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"}]},"string-multi-bad-brace2-formatting-raw":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!'''|\\"\\"\\")[^!.:\\\\[}\\\\w]).*?(?!'''|\\"\\"\\")})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"}]},"string-multi-bad-brace2-formatting-unicode":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!'''|\\"\\"\\")[^!.:\\\\[}\\\\w]).*?(?!'''|\\"\\"\\")})","end":"(?='''|\\"\\"\\")","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#string-entity"}]},"string-quoted-multi-line":{"begin":"(?:\\\\b([Rr])(?=[Uu]))?([Uu])?('''|\\"\\"\\")","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\3)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.multi.python","patterns":[{"include":"#string-multi-bad-brace1-formatting-unicode"},{"include":"#string-multi-bad-brace2-formatting-unicode"},{"include":"#string-unicode-guts"}]},"string-quoted-single-line":{"begin":"(?:\\\\b([Rr])(?=[Uu]))?([Uu])?(([\\"']))","beginCaptures":{"1":{"name":"invalid.illegal.prefix.python"},"2":{"name":"storage.type.string.python"},"3":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\3)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.single.python","patterns":[{"include":"#string-single-bad-brace1-formatting-unicode"},{"include":"#string-single-bad-brace2-formatting-unicode"},{"include":"#string-unicode-guts"}]},"string-raw-bin-guts":{"patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"}]},"string-raw-bin-quoted-multi-line":{"begin":"\\\\b(R[Bb]|[Bb]R)('''|\\"\\"\\")","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.binary.multi.python","patterns":[{"include":"#string-raw-bin-guts"}]},"string-raw-bin-quoted-single-line":{"begin":"\\\\b(R[Bb]|[Bb]R)(([\\"']))","beginCaptures":{"1":{"name":"storage.type.string.python"},"2":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\2)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.binary.single.python","patterns":[{"include":"#string-raw-bin-guts"}]},"string-raw-guts":{"patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"},{"include":"#string-brace-formatting"}]},"string-raw-quoted-multi-line":{"begin":"\\\\b(([Uu]R)|(R))('''|\\"\\"\\")","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\4)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.multi.python","patterns":[{"include":"#string-multi-bad-brace1-formatting-raw"},{"include":"#string-multi-bad-brace2-formatting-raw"},{"include":"#string-raw-guts"}]},"string-raw-quoted-single-line":{"begin":"\\\\b(([Uu]R)|(R))(([\\"']))","beginCaptures":{"2":{"name":"invalid.deprecated.prefix.python"},"3":{"name":"storage.type.string.python"},"4":{"name":"punctuation.definition.string.begin.python"}},"end":"(\\\\4)|((?<!\\\\\\\\)\\\\n)","endCaptures":{"1":{"name":"punctuation.definition.string.end.python"},"2":{"name":"invalid.illegal.newline.python"}},"name":"string.quoted.raw.single.python","patterns":[{"include":"#string-single-bad-brace1-formatting-raw"},{"include":"#string-single-bad-brace2-formatting-raw"},{"include":"#string-raw-guts"}]},"string-single-bad-brace1-formatting-raw":{"begin":"(?=\\\\{%(.*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n)))%})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#string-consume-escape"}]},"string-single-bad-brace1-formatting-unicode":{"begin":"(?=\\\\{%(.*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n)))%})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#escape-sequence"},{"include":"#string-line-continuation"}]},"string-single-bad-brace2-formatting-raw":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))[^!.:\\\\[}\\\\w]).*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#string-consume-escape"},{"include":"#string-formatting"}]},"string-single-bad-brace2-formatting-unicode":{"begin":"(?!\\\\{\\\\{)(?=\\\\{(\\\\w*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))[^!.:\\\\[}\\\\w]).*?(?!([\\"'])|((?<!\\\\\\\\)\\\\n))})","end":"(?=([\\"'])|((?<!\\\\\\\\)\\\\n))","patterns":[{"include":"#escape-sequence-unicode"},{"include":"#string-entity"}]},"string-unicode-guts":{"patterns":[{"include":"#escape-sequence-unicode"},{"include":"#string-entity"},{"include":"#string-brace-formatting"}]}},"scopeName":"source.python","aliases":["py"]}`)),A3=[Wz];var Uz=Object.freeze(JSON.parse(`{"displayName":"Shell","name":"shellscript","patterns":[{"include":"#initial_context"}],"repository":{"alias_statement":{"begin":"[\\\\t ]*+(alias)[\\\\t ]*+((?:((?<!\\\\w)-\\\\w+)\\\\b[\\\\t ]*+)*)[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))","beginCaptures":{"1":{"name":"storage.type.alias.shell"},"2":{"patterns":[{"match":"(?<!\\\\w)-\\\\w+\\\\b","name":"string.unquoted.argument.shell constant.other.option.shell"}]},"3":{"name":"string.unquoted.argument.shell constant.other.option.shell"},"4":{"name":"variable.other.assignment.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"variable.other.assignment.shell"},"7":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"8":{"name":"punctuation.definition.array.access.shell"},"9":{"name":"keyword.operator.assignment.shell"},"10":{"name":"keyword.operator.assignment.compound.shell"},"11":{"name":"keyword.operator.assignment.compound.shell"}},"end":"(?=[\\\\t ]|$)|(?:(?:(?:(;)|(&&))|(\\\\|\\\\|))|(&))","endCaptures":{"1":{"name":"punctuation.terminator.statement.semicolon.shell"},"2":{"name":"punctuation.separator.statement.and.shell"},"3":{"name":"punctuation.separator.statement.or.shell"},"4":{"name":"punctuation.separator.statement.background.shell"}},"name":"meta.expression.assignment.alias.shell","patterns":[{"include":"#normal_context"}]},"argument":{"begin":"[\\\\t ]++(?![\\\\n#\\\\&(\\\\[|]|$|;)","beginCaptures":{},"end":"(?=[\\\\t \\\\&;|]|$|[\\\\n)\`])","endCaptures":{},"name":"meta.argument.shell","patterns":[{"include":"#argument_context"},{"include":"#line_continuation"}]},"argument_context":{"patterns":[{"captures":{"1":{"name":"string.unquoted.argument.shell","patterns":[{"match":"\\\\*","name":"variable.language.special.wildcard.shell"},{"include":"#variable"},{"include":"#numeric_literal"},{"captures":{"1":{"name":"constant.language.$1.shell"}},"match":"(?<!\\\\w)\\\\b(true|false)\\\\b(?!\\\\w)"}]}},"match":"[\\\\t ]*+([^\\\\t\\\\n \\"$\\\\&-);<>\\\\\\\\\`|]+(?!>))"},{"include":"#normal_context"}]},"arithmetic_double":{"patterns":[{"begin":"\\\\(\\\\(","beginCaptures":{"0":{"name":"punctuation.section.arithmetic.double.shell"}},"end":"\\\\)\\\\s*\\\\)","endCaptures":{"0":{"name":"punctuation.section.arithmetic.double.shell"}},"name":"meta.arithmetic.shell","patterns":[{"include":"#math"},{"include":"#string"}]}]},"arithmetic_no_dollar":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.section.arithmetic.single.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.arithmetic.single.shell"}},"name":"meta.arithmetic.shell","patterns":[{"include":"#math"},{"include":"#string"}]}]},"array_access_inline":{"captures":{"1":{"name":"punctuation.section.array.shell"},"2":{"patterns":[{"include":"#special_expansion"},{"include":"#string"},{"include":"#variable"}]},"3":{"name":"punctuation.section.array.shell"}},"match":"(\\\\[)([^]\\\\[]+)(])"},"array_value":{"begin":"[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))[\\\\t ]*+(\\\\()","beginCaptures":{"1":{"name":"variable.other.assignment.shell"},"2":{"name":"punctuation.definition.array.access.shell"},"3":{"name":"variable.other.assignment.shell"},"4":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"keyword.operator.assignment.shell"},"7":{"name":"keyword.operator.assignment.compound.shell"},"8":{"name":"keyword.operator.assignment.compound.shell"},"9":{"name":"punctuation.definition.array.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.array.shell"}},"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"variable.other.assignment.array.shell entity.other.attribute-name.shell"},"2":{"name":"keyword.operator.assignment.shell punctuation.definition.assignment.shell"}},"match":"((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(=)"},{"captures":{"1":{"name":"punctuation.definition.bracket.named-array.shell"},"2":{"name":"string.unquoted.shell entity.other.attribute-name.bracket.shell"},"3":{"name":"punctuation.definition.bracket.named-array.shell"},"4":{"name":"punctuation.definition.assignment.shell"}},"match":"(\\\\[)(.+?)(])(=)"},{"include":"#normal_context"},{"include":"#simple_unquoted"}]},"assignment_statement":{"patterns":[{"include":"#array_value"},{"include":"#modified_assignment_statement"},{"include":"#normal_assignment_statement"}]},"basic_command_name":{"captures":{"1":{"name":"storage.modifier.$1.shell"},"2":{"name":"entity.name.function.call.shell entity.name.command.shell","patterns":[{"match":"(?<!\\\\w)(?:continue|return|break)(?!\\\\w)","name":"keyword.control.$0.shell"},{"match":"(?<!\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\w)(?!-)","name":"support.function.builtin.shell"},{"include":"#variable"}]}},"match":"(?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;])(?!nocorrect |nocorrect\\\\t|nocorrect$|readonly |readonly\\\\t|readonly$|function |function\\\\t|function$|foreach |foreach\\\\t|foreach$|coproc |coproc\\\\t|coproc$|logout |logout\\\\t|logout$|export |export\\\\t|export$|select |select\\\\t|select$|repeat |repeat\\\\t|repeat$|pushd |pushd\\\\t|pushd$|until |until\\\\t|until$|while |while\\\\t|while$|local |local\\\\t|local$|case |case\\\\t|case$|done |done\\\\t|done$|elif |elif\\\\t|elif$|else |else\\\\t|else$|esac |esac\\\\t|esac$|popd |popd\\\\t|popd$|then |then\\\\t|then$|time |time\\\\t|time$|for |for\\\\t|for$|end |end\\\\t|end$|fi |fi\\\\t|fi$|do |do\\\\t|do$|in |in\\\\t|in$|if |if\\\\t|if$)(?:((?<=^|[\\\\t \\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\t \\\\&;]|$))|((?![\\"']|\\\\\\\\\\\\n?$)[^\\\\t\\\\n\\\\r !\\"'<>]+?))(?:(?=[\\\\t ])|(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\))","name":"meta.statement.command.name.basic.shell"},"block_comment":{"begin":"\\\\s*+(/\\\\*)","beginCaptures":{"1":{"name":"punctuation.definition.comment.begin.shell"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.end.shell"}},"name":"comment.block.shell"},"boolean":{"match":"\\\\b(?:true|false)\\\\b","name":"constant.language.$0.shell"},"case_statement":{"begin":"\\\\b(case)\\\\b[\\\\t ]*+(.+?)[\\\\t ]*+\\\\b(in)\\\\b","beginCaptures":{"1":{"name":"keyword.control.case.shell"},"2":{"patterns":[{"include":"#initial_context"}]},"3":{"name":"keyword.control.in.shell"}},"end":"\\\\besac\\\\b","endCaptures":{"0":{"name":"keyword.control.esac.shell"}},"name":"meta.case.shell","patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.operator.pattern.case.default.shell"}},"match":"[\\\\t ]*+(\\\\* *\\\\))"},{"begin":"(?<!\\\\))(?![\\\\t ]*+(?:esac\\\\b|$))","beginCaptures":{},"end":"(?=\\\\besac\\\\b)|(\\\\))","endCaptures":{"1":{"name":"keyword.operator.pattern.case.shell"}},"name":"meta.case.entry.pattern.shell","patterns":[{"include":"#case_statement_context"}]},{"begin":"(?<=\\\\))","beginCaptures":{},"end":"(;;)|(?=\\\\besac\\\\b)","endCaptures":{"1":{"name":"punctuation.terminator.statement.case.shell"}},"name":"meta.case.entry.body.shell","patterns":[{"include":"#typical_statements"},{"include":"#initial_context"}]}]},"case_statement_context":{"patterns":[{"match":"\\\\*","name":"variable.language.special.quantifier.star.shell keyword.operator.quantifier.star.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{"match":"\\\\+","name":"variable.language.special.quantifier.plus.shell keyword.operator.quantifier.plus.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{"match":"\\\\?","name":"variable.language.special.quantifier.question.shell keyword.operator.quantifier.question.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell"},{"match":"@","name":"variable.language.special.at.shell keyword.operator.at.shell punctuation.definition.regex.at.shell"},{"match":"\\\\|","name":"keyword.operator.orvariable.language.special.or.shell keyword.operator.alternation.ruby.shell punctuation.definition.regex.alternation.shell punctuation.separator.regex.alternation.shell"},{"match":"\\\\\\\\.","name":"constant.character.escape.shell"},{"match":"(?<=\\\\tin| in|[\\\\t ]|;;)\\\\(","name":"keyword.operator.pattern.case.shell"},{"begin":"(?<=\\\\S)(\\\\()","beginCaptures":{"1":{"name":"punctuation.definition.group.shell punctuation.definition.regex.group.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.definition.regex.group.shell"}},"name":"meta.parenthese.shell","patterns":[{"include":"#case_statement_context"}]},{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.character-class.shell"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.character-class.shell"}},"name":"string.regexp.character-class.shell","patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.shell"}]},{"include":"#string"},{"match":"[^\\\\t\\\\n )*?@\\\\[|]","name":"string.unquoted.pattern.shell string.regexp.unquoted.shell"}]},"command_name_range":{"begin":"\\\\G","beginCaptures":{},"end":"(?=[\\\\t \\\\&;|]|$|[\\\\n)\`])|(?=<)","endCaptures":{},"name":"meta.statement.command.name.shell","patterns":[{"match":"(?<!\\\\w)(?:continue|return|break)(?!\\\\w)","name":"entity.name.function.call.shell entity.name.command.shell keyword.control.$0.shell"},{"match":"(?<!\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\w)(?!-)","name":"entity.name.function.call.shell entity.name.command.shell support.function.builtin.shell"},{"include":"#variable"},{"captures":{"1":{"name":"entity.name.function.call.shell entity.name.command.shell"}},"match":"(?<!\\\\w)(?<=\\\\G|[\\"')}])([^\\\\t\\\\n\\\\r \\"\\\\&');->\`{|]+)"},{"begin":"(?:\\\\G|(?<![\\\\t\\\\n #\\\\&;{|]))(\\\\$?)((\\")|('))","beginCaptures":{"1":{"name":"meta.statement.command.name.quoted.shell punctuation.definition.string.shell entity.name.function.call.shell entity.name.command.shell"},"2":{},"3":{"name":"meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"},"4":{"name":"meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"}},"end":"(?<!\\\\G)(?<=\\\\2)","endCaptures":{},"patterns":[{"include":"#continuation_of_single_quoted_command_name"},{"include":"#continuation_of_double_quoted_command_name"}]},{"include":"#line_continuation"},{"include":"#simple_unquoted"}]},"command_statement":{"begin":"[\\\\t ]*+(?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;])(?!nocorrect |nocorrect\\\\t|nocorrect$|readonly |readonly\\\\t|readonly$|function |function\\\\t|function$|foreach |foreach\\\\t|foreach$|coproc |coproc\\\\t|coproc$|logout |logout\\\\t|logout$|export |export\\\\t|export$|select |select\\\\t|select$|repeat |repeat\\\\t|repeat$|pushd |pushd\\\\t|pushd$|until |until\\\\t|until$|while |while\\\\t|while$|local |local\\\\t|local$|case |case\\\\t|case$|done |done\\\\t|done$|elif |elif\\\\t|elif$|else |else\\\\t|else$|esac |esac\\\\t|esac$|popd |popd\\\\t|popd$|then |then\\\\t|then$|time |time\\\\t|time$|for |for\\\\t|for$|end |end\\\\t|end$|fi |fi\\\\t|fi$|do |do\\\\t|do$|in |in\\\\t|in$|if |if\\\\t|if$)(?!\\\\\\\\\\\\n?$)","beginCaptures":{},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.command.shell","patterns":[{"include":"#command_name_range"},{"include":"#line_continuation"},{"include":"#option"},{"include":"#argument"},{"include":"#string"},{"include":"#heredoc"}]},"comment":{"captures":{"1":{"name":"comment.line.number-sign.shell meta.shebang.shell"},"2":{"name":"punctuation.definition.comment.shebang.shell"},"3":{"name":"comment.line.number-sign.shell"},"4":{"name":"punctuation.definition.comment.shell"}},"match":"(?:^|[\\\\t ]++)(?:((#!).*)|((#).*))"},"comments":{"patterns":[{"include":"#block_comment"},{"include":"#line_comment"}]},"compound-command":{"patterns":[{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"name":"meta.scope.logical-expression.shell","patterns":[{"include":"#logical-expression"},{"include":"#initial_context"}]},{"begin":"(?<=\\\\s|^)\\\\{(?=\\\\s|$)","beginCaptures":{"0":{"name":"punctuation.definition.group.shell"}},"end":"(?<=^|;)\\\\s*(})","endCaptures":{"1":{"name":"punctuation.definition.group.shell"}},"name":"meta.scope.group.shell","patterns":[{"include":"#initial_context"}]}]},"continuation_of_double_quoted_command_name":{"begin":"\\\\G(?<=\\")","beginCaptures":{},"contentName":"meta.statement.command.name.continuation string.quoted.double entity.name.function.call entity.name.command","end":"\\"","endCaptures":{"0":{"name":"string.quoted.double.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"}},"patterns":[{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"include":"#variable"},{"include":"#interpolation"}]},"continuation_of_single_quoted_command_name":{"begin":"\\\\G(?<=')","beginCaptures":{},"contentName":"meta.statement.command.name.continuation string.quoted.single entity.name.function.call entity.name.command","end":"'","endCaptures":{"0":{"name":"string.quoted.single.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"}}},"custom_command_names":{"patterns":[]},"custom_commands":{"patterns":[]},"double_quote_context":{"patterns":[{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"include":"#variable"},{"include":"#interpolation"}]},"double_quote_escape_char":{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},"floating_keyword":{"patterns":[{"match":"(?<=^|[\\\\t \\\\&;])(?:then|elif|else|done|end|do|if|fi)(?=[\\\\t \\\\&;]|$)","name":"keyword.control.$0.shell"}]},"for_statement":{"patterns":[{"begin":"\\\\b(for)\\\\b[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))[\\\\t ]*+\\\\b(in)\\\\b","beginCaptures":{"1":{"name":"keyword.control.for.shell"},"2":{"name":"variable.other.for.shell"},"3":{"name":"keyword.control.in.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.for.in.shell","patterns":[{"include":"#string"},{"include":"#simple_unquoted"},{"include":"#normal_context"}]},{"begin":"\\\\b(for)\\\\b","beginCaptures":{"1":{"name":"keyword.control.for.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.for.shell","patterns":[{"include":"#arithmetic_double"},{"include":"#normal_context"}]}]},"function_definition":{"applyEndPatternLast":1,"begin":"[\\\\t ]*+(?:\\\\b(function)\\\\b[\\\\t ]*+([^\\\\t\\\\n\\\\r \\"'()=]+)(?:(\\\\()[\\\\t ]*+(\\\\)))?|([^\\\\t\\\\n\\\\r \\"'()=]+)[\\\\t ]*+(\\\\()[\\\\t ]*+(\\\\)))","beginCaptures":{"1":{"name":"storage.type.function.shell"},"2":{"name":"entity.name.function.shell"},"3":{"name":"punctuation.definition.arguments.shell"},"4":{"name":"punctuation.definition.arguments.shell"},"5":{"name":"entity.name.function.shell"},"6":{"name":"punctuation.definition.arguments.shell"},"7":{"name":"punctuation.definition.arguments.shell"}},"end":"(?<=[)}])","endCaptures":{},"name":"meta.function.shell","patterns":[{"match":"\\\\G[\\\\t\\\\n ]"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"name":"meta.function.body.shell","patterns":[{"include":"#initial_context"}]},{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.shell punctuation.section.function.definition.shell"}},"name":"meta.function.body.shell","patterns":[{"include":"#initial_context"}]},{"include":"#initial_context"}]},"heredoc":{"patterns":[{"begin":"((?<!<)<<-)[\\\\t ]*+([\\"'])[\\\\t ]*+([^\\"']+?)(?=[\\"\\\\&';<\\\\s])(\\\\2)(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.quote.shell"},"3":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"4":{"name":"punctuation.definition.string.heredoc.quote.shell"},"5":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.quoted.heredoc.indent.$3","end":"^\\\\t*\\\\3(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.$0.shell"}},"patterns":[]},{"begin":"((?<!<)<<(?!<))[\\\\t ]*+([\\"'])[\\\\t ]*+([^\\"']+?)(?=[\\"\\\\&';<\\\\s])(\\\\2)(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.quote.shell"},"3":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"4":{"name":"punctuation.definition.string.heredoc.quote.shell"},"5":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.quoted.heredoc.no-indent.$3","end":"^\\\\3(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.delimiter.shell"}},"patterns":[]},{"begin":"((?<!<)<<-)[\\\\t ]*+([^\\\\t \\"']+)(?=[\\"\\\\&';<\\\\s])(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"3":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.unquoted.heredoc.indent.$2","end":"^\\\\t*\\\\2(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.delimiter.shell"}},"patterns":[{"include":"#double_quote_escape_char"},{"include":"#variable"},{"include":"#interpolation"}]},{"begin":"((?<!<)<<(?!<))[\\\\t ]*+([^\\\\t \\"']+)(?=[\\"\\\\&';<\\\\s])(.*)","beginCaptures":{"1":{"name":"keyword.operator.heredoc.shell"},"2":{"name":"punctuation.definition.string.heredoc.delimiter.shell"},"3":{"patterns":[{"include":"#redirect_fix"},{"include":"#typical_statements"}]}},"contentName":"string.unquoted.heredoc.no-indent.$2","end":"^\\\\2(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"punctuation.definition.string.heredoc.delimiter.shell"}},"patterns":[{"include":"#double_quote_escape_char"},{"include":"#variable"},{"include":"#interpolation"}]}]},"herestring":{"patterns":[{"begin":"(<<<)\\\\s*(('))","beginCaptures":{"1":{"name":"keyword.operator.herestring.shell"},"2":{"name":"string.quoted.single.shell"},"3":{"name":"punctuation.definition.string.begin.shell"}},"contentName":"string.quoted.single.shell","end":"(')","endCaptures":{"0":{"name":"string.quoted.single.shell"},"1":{"name":"punctuation.definition.string.end.shell"}},"name":"meta.herestring.shell"},{"begin":"(<<<)\\\\s*((\\"))","beginCaptures":{"1":{"name":"keyword.operator.herestring.shell"},"2":{"name":"string.quoted.double.shell"},"3":{"name":"punctuation.definition.string.begin.shell"}},"contentName":"string.quoted.double.shell","end":"(\\")","endCaptures":{"0":{"name":"string.quoted.double.shell"},"1":{"name":"punctuation.definition.string.end.shell"}},"name":"meta.herestring.shell","patterns":[{"include":"#double_quote_context"}]},{"captures":{"1":{"name":"keyword.operator.herestring.shell"},"2":{"name":"string.unquoted.herestring.shell","patterns":[{"include":"#initial_context"}]}},"match":"(<<<)\\\\s*(([^)\\\\\\\\\\\\s]|\\\\\\\\.)+)","name":"meta.herestring.shell"}]},"initial_context":{"patterns":[{"include":"#comment"},{"include":"#pipeline"},{"include":"#normal_statement_seperator"},{"include":"#logical_expression_double"},{"include":"#logical_expression_single"},{"include":"#assignment_statement"},{"include":"#case_statement"},{"include":"#for_statement"},{"include":"#loop"},{"include":"#function_definition"},{"include":"#line_continuation"},{"include":"#arithmetic_double"},{"include":"#misc_ranges"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#redirection"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#alias_statement"},{"include":"#normal_statement"},{"include":"#string"},{"include":"#support"}]},"inline_comment":{"captures":{"1":{"name":"comment.block.shell punctuation.definition.comment.begin.shell"},"2":{"name":"comment.block.shell"},"3":{"patterns":[{"match":"\\\\*/","name":"comment.block.shell punctuation.definition.comment.end.shell"},{"match":"\\\\*","name":"comment.block.shell"}]}},"match":"(/\\\\*)((?:[^*]|\\\\*++[^/])*+(\\\\*++/))"},"interpolation":{"patterns":[{"include":"#arithmetic_dollar"},{"include":"#subshell_dollar"},{"begin":"\`","beginCaptures":{"0":{"name":"punctuation.definition.evaluation.backticks.shell"}},"end":"\`","endCaptures":{"0":{"name":"punctuation.definition.evaluation.backticks.shell"}},"name":"string.interpolated.backtick.shell","patterns":[{"match":"\\\\\\\\[$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"begin":"(?<=\\\\W)(?=#)(?!#\\\\{)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.shell"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.shell"}},"end":"(?=\`)","name":"comment.line.number-sign.shell"}]},{"include":"#initial_context"}]}]},"keyword":{"patterns":[{"match":"(?<=^|[\\\\&;\\\\s])(then|else|elif|fi|for|in|do|done|select|continue|esac|while|until|return)(?=[\\\\&;\\\\s]|$)","name":"keyword.control.shell"},{"match":"(?<=^|[\\\\&;\\\\s])(?:export|declare|typeset|local|readonly)(?=[\\\\&;\\\\s]|$)","name":"storage.modifier.shell"}]},"line_comment":{"begin":"\\\\s*+(//)","beginCaptures":{"1":{"name":"punctuation.definition.comment.shell"}},"end":"(?<=\\\\n)(?<!\\\\\\\\\\\\n)","endCaptures":{},"name":"comment.line.double-slash.shell","patterns":[{"include":"#line_continuation_character"}]},"line_continuation":{"match":"\\\\\\\\(?=\\\\n)","name":"constant.character.escape.line-continuation.shell"},"logical-expression":{"patterns":[{"include":"#arithmetic_no_dollar"},{"match":"=[=~]?|!=?|[<>]|&&|\\\\|\\\\|","name":"keyword.operator.logical.shell"},{"match":"(?<!\\\\S)-(nt|ot|ef|eq|ne|l[et]|g[et]|[GLNOSa-hknopr-uwxz])\\\\b","name":"keyword.operator.logical.shell"}]},"logical_expression_context":{"patterns":[{"include":"#regex_comparison"},{"include":"#arithmetic_no_dollar"},{"include":"#logical-expression"},{"include":"#logical_expression_single"},{"include":"#logical_expression_double"},{"include":"#comment"},{"include":"#boolean"},{"include":"#redirect_number"},{"include":"#numeric_literal"},{"include":"#pipeline"},{"include":"#normal_statement_seperator"},{"include":"#string"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#support"}]},"logical_expression_double":{"begin":"\\\\[\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"end":"]]","endCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"name":"meta.scope.logical-expression.shell","patterns":[{"include":"#logical_expression_context"}]},"logical_expression_single":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.logical-expression.shell"}},"name":"meta.scope.logical-expression.shell","patterns":[{"include":"#logical_expression_context"}]},"loop":{"patterns":[{"begin":"(?<=^|[\\\\&;\\\\s])(for)\\\\s+(.+?)\\\\s+(in)(?=[\\\\&;\\\\s]|$)","beginCaptures":{"1":{"name":"keyword.control.shell"},"2":{"name":"variable.other.loop.shell","patterns":[{"include":"#string"}]},"3":{"name":"keyword.control.shell"}},"end":"(?<=^|[\\\\&;\\\\s])done(?=[\\\\&;\\\\s]|$|\\\\))","endCaptures":{"0":{"name":"keyword.control.shell"}},"name":"meta.scope.for-in-loop.shell","patterns":[{"include":"#initial_context"}]},{"begin":"(?<=^|[\\\\&;\\\\s])(while|until)(?=[\\\\&;\\\\s]|$)","beginCaptures":{"1":{"name":"keyword.control.shell"}},"end":"(?<=^|[\\\\&;\\\\s])done(?=[\\\\&;\\\\s]|$|\\\\))","endCaptures":{"0":{"name":"keyword.control.shell"}},"name":"meta.scope.while-loop.shell","patterns":[{"include":"#initial_context"}]},{"begin":"(?<=^|[\\\\&;\\\\s])(select)\\\\s+((?:[^\\\\\\\\\\\\s]|\\\\\\\\.)+)(?=[\\\\&;\\\\s]|$)","beginCaptures":{"1":{"name":"keyword.control.shell"},"2":{"name":"variable.other.loop.shell"}},"end":"(?<=^|[\\\\&;\\\\s])(done)(?=[\\\\&;\\\\s]|$|\\\\))","endCaptures":{"1":{"name":"keyword.control.shell"}},"name":"meta.scope.select-block.shell","patterns":[{"include":"#initial_context"}]},{"begin":"(?<=^|[\\\\&;\\\\s])if(?=[\\\\&;\\\\s]|$)","beginCaptures":{"0":{"name":"keyword.control.if.shell"}},"end":"(?<=^|[\\\\&;\\\\s])fi(?=[\\\\&;\\\\s]|$)","endCaptures":{"0":{"name":"keyword.control.fi.shell"}},"name":"meta.scope.if-block.shell","patterns":[{"include":"#initial_context"}]}]},"math":{"patterns":[{"include":"#variable"},{"match":"\\\\+{1,2}|-{1,2}|[!~]|\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\&*+/^|]=|<<=|>>=","name":"keyword.operator.arithmetic.shell"},{"match":"0[Xx]\\\\h+","name":"constant.numeric.hex.shell"},{"match":";","name":"punctuation.separator.semicolon.range"},{"match":"0\\\\d+","name":"constant.numeric.octal.shell"},{"match":"\\\\d{1,2}#[0-9@-Z_a-z]+","name":"constant.numeric.other.shell"},{"match":"\\\\d+","name":"constant.numeric.integer.shell"},{"match":"(?<!\\\\w)[0-9A-Z_a-z]+(?!\\\\w)","name":"variable.other.normal.shell"}]},"math_operators":{"patterns":[{"match":"\\\\+{1,2}|-{1,2}|[!~]|\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\&*+/^|]=|<<=|>>=","name":"keyword.operator.arithmetic.shell"},{"match":"0[Xx]\\\\h+","name":"constant.numeric.hex.shell"},{"match":"0\\\\d+","name":"constant.numeric.octal.shell"},{"match":"\\\\d{1,2}#[0-9@-Z_a-z]+","name":"constant.numeric.other.shell"},{"match":"\\\\d+","name":"constant.numeric.integer.shell"}]},"misc_ranges":{"patterns":[{"include":"#logical_expression_single"},{"include":"#logical_expression_double"},{"include":"#subshell_dollar"},{"begin":"(?<![^\\\\t ])(\\\\{)(?![$\\\\w])","beginCaptures":{"1":{"name":"punctuation.definition.group.shell"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.group.shell"}},"name":"meta.scope.group.shell","patterns":[{"include":"#initial_context"}]}]},"modified_assignment_statement":{"begin":"(?<=^|[\\\\t \\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\t \\\\&;]|$)","beginCaptures":{"0":{"name":"storage.modifier.$0.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.shell meta.expression.assignment.modified.shell","patterns":[{"match":"(?<!\\\\w)-\\\\w+\\\\b","name":"string.unquoted.argument.shell constant.other.option.shell"},{"include":"#array_value"},{"captures":{"1":{"name":"variable.other.assignment.shell"},"2":{"name":"punctuation.definition.array.access.shell"},"3":{"name":"variable.other.assignment.shell"},"4":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"keyword.operator.assignment.shell"},"7":{"name":"keyword.operator.assignment.compound.shell"},"8":{"name":"keyword.operator.assignment.compound.shell"},"9":{"name":"constant.numeric.shell constant.numeric.hex.shell"},"10":{"name":"constant.numeric.shell constant.numeric.octal.shell"},"11":{"name":"constant.numeric.shell constant.numeric.other.shell"},"12":{"name":"constant.numeric.shell constant.numeric.decimal.shell"},"13":{"name":"constant.numeric.shell constant.numeric.version.shell"},"14":{"name":"constant.numeric.shell constant.numeric.integer.shell"}},"match":"((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))?(?:(?<=[\\\\t =]|^|[(\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\h+)|(0\\\\d+))|(\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\d+\\\\.\\\\d+))|(-?\\\\d+(?:\\\\.\\\\d+)+))|(-?\\\\d+))(?=[\\\\t ]|$|[);}]))?"},{"include":"#normal_context"}]},"modifiers":{"match":"(?<=^|[\\\\t \\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\t \\\\&;]|$)","name":"storage.modifier.$0.shell"},"normal_assignment_statement":{"begin":"[\\\\t ]*+((?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w))(?:(\\\\[)((?:(?:\\\\$?(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)|@)|\\\\*)|(-?\\\\d+))(]))?(?:(?:(=)|(\\\\+=))|(-=))","beginCaptures":{"1":{"name":"variable.other.assignment.shell"},"2":{"name":"punctuation.definition.array.access.shell"},"3":{"name":"variable.other.assignment.shell"},"4":{"name":"constant.numeric.shell constant.numeric.integer.shell"},"5":{"name":"punctuation.definition.array.access.shell"},"6":{"name":"keyword.operator.assignment.shell"},"7":{"name":"keyword.operator.assignment.compound.shell"},"8":{"name":"keyword.operator.assignment.compound.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.expression.assignment.shell","patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#normal_assignment_statement"},{"begin":"(?<=[\\\\t ])(?![\\\\t ]|\\\\w+=)","beginCaptures":{},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.command.env.shell","patterns":[{"include":"#command_name_range"},{"include":"#line_continuation"},{"include":"#option"},{"include":"#argument"},{"include":"#string"}]},{"include":"#simple_unquoted"},{"include":"#normal_context"}]},"normal_context":{"patterns":[{"include":"#comment"},{"include":"#pipeline"},{"include":"#normal_statement_seperator"},{"include":"#misc_ranges"},{"include":"#boolean"},{"include":"#redirect_number"},{"include":"#numeric_literal"},{"include":"#string"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#redirection"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#support"},{"include":"#parenthese"}]},"normal_statement":{"begin":"(?!^[\\\\t ]*+$)(?:(?<=(?:^until| until|\\\\tuntil|^while| while|\\\\twhile|^elif| elif|\\\\telif|^else| else|\\\\telse|^then| then|\\\\tthen|^do| do|\\\\tdo|^if| if|\\\\tif) )|(?<=^|[!\\\\&(;\`{|]))[\\\\t ]*+(?!nocorrect\\\\W|nocorrect\\\\$|function\\\\W|function\\\\$|foreach\\\\W|foreach\\\\$|repeat\\\\W|repeat\\\\$|logout\\\\W|logout\\\\$|coproc\\\\W|coproc\\\\$|select\\\\W|select\\\\$|while\\\\W|while\\\\$|pushd\\\\W|pushd\\\\$|until\\\\W|until\\\\$|case\\\\W|case\\\\$|done\\\\W|done\\\\$|elif\\\\W|elif\\\\$|else\\\\W|else\\\\$|esac\\\\W|esac\\\\$|popd\\\\W|popd\\\\$|then\\\\W|then\\\\$|time\\\\W|time\\\\$|for\\\\W|for\\\\$|end\\\\W|end\\\\$|fi\\\\W|fi\\\\$|do\\\\W|do\\\\$|in\\\\W|in\\\\$|if\\\\W|if\\\\$)","beginCaptures":{},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.statement.shell","patterns":[{"include":"#typical_statements"}]},"normal_statement_seperator":{"captures":{"1":{"name":"punctuation.terminator.statement.semicolon.shell"},"2":{"name":"punctuation.separator.statement.and.shell"},"3":{"name":"punctuation.separator.statement.or.shell"},"4":{"name":"punctuation.separator.statement.background.shell"}},"match":"(?:(?:(;)|(&&))|(\\\\|\\\\|))|(&)"},"numeric_literal":{"captures":{"1":{"name":"constant.numeric.shell constant.numeric.hex.shell"},"2":{"name":"constant.numeric.shell constant.numeric.octal.shell"},"3":{"name":"constant.numeric.shell constant.numeric.other.shell"},"4":{"name":"constant.numeric.shell constant.numeric.decimal.shell"},"5":{"name":"constant.numeric.shell constant.numeric.version.shell"},"6":{"name":"constant.numeric.shell constant.numeric.integer.shell"}},"match":"(?<=[\\\\t =]|^|[(\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\h+)|(0\\\\d+))|(\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\d+\\\\.\\\\d+))|(-?\\\\d+(?:\\\\.\\\\d+)+))|(-?\\\\d+))(?=[\\\\t ]|$|[);}])"},"option":{"begin":"[\\\\t ]++(-)((?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;]))","beginCaptures":{"1":{"name":"string.unquoted.argument.shell constant.other.option.dash.shell"},"2":{"name":"string.unquoted.argument.shell constant.other.option.shell"}},"contentName":"string.unquoted.argument constant.other.option","end":"(?=[\\\\t ])|(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"patterns":[{"include":"#option_context"}]},"option_context":{"patterns":[{"include":"#misc_ranges"},{"include":"#string"},{"include":"#variable"},{"include":"#interpolation"},{"include":"#heredoc"},{"include":"#herestring"},{"include":"#redirection"},{"include":"#pathname"},{"include":"#floating_keyword"},{"include":"#support"}]},"parenthese":{"patterns":[{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.section.parenthese.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.section.parenthese.shell"}},"name":"meta.parenthese.group.shell","patterns":[{"include":"#initial_context"}]}]},"pathname":{"patterns":[{"match":"(?<=[:=\\\\s]|^)~","name":"keyword.operator.tilde.shell"},{"match":"[*?]","name":"keyword.operator.glob.shell"},{"begin":"([!*+?@])(\\\\()","beginCaptures":{"1":{"name":"keyword.operator.extglob.shell"},"2":{"name":"punctuation.definition.extglob.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.extglob.shell"}},"name":"meta.structure.extglob.shell","patterns":[{"include":"#initial_context"}]}]},"pipeline":{"patterns":[{"match":"(?<=^|[\\\\&;\\\\s])(time)(?=[\\\\&;\\\\s]|$)","name":"keyword.other.shell"},{"match":"[!|]","name":"keyword.operator.pipe.shell"}]},"redirect_fix":{"captures":{"1":{"name":"keyword.operator.redirect.shell"},"2":{"name":"string.unquoted.argument.shell"}},"match":"(>>?)[\\\\t ]*+([^\\\\t\\\\n \\"$\\\\&-);<>\\\\\\\\\`|]+)"},"redirect_number":{"captures":{"1":{"name":"keyword.operator.redirect.stdout.shell"},"2":{"name":"keyword.operator.redirect.stderr.shell"},"3":{"name":"keyword.operator.redirect.$3.shell"}},"match":"(?<=[\\\\t ])(?:(1)|(2)|(\\\\d+))(?=>)"},"redirection":{"patterns":[{"begin":"[<>]\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.interpolated.process-substitution.shell","patterns":[{"include":"#initial_context"}]},{"match":"(?<![<>])(&>|\\\\d*>&\\\\d*|\\\\d*(>>|[<>])|\\\\d*<&|\\\\d*<>)(?![<>])","name":"keyword.operator.redirect.shell"}]},"regex_comparison":{"match":"=~","name":"keyword.operator.logical.regex.shell"},"regexp":{"patterns":[{"match":".+"}]},"simple_options":{"captures":{"0":{"patterns":[{"captures":{"1":{"name":"string.unquoted.argument.shell constant.other.option.dash.shell"},"2":{"name":"string.unquoted.argument.shell constant.other.option.shell"}},"match":"[\\\\t ]++(-)(\\\\w+)"}]}},"match":"(?:[\\\\t ]++-\\\\w+)*"},"simple_unquoted":{"match":"[^\\\\t\\\\n \\"$\\\\&-);<>\\\\\\\\\`|]","name":"string.unquoted.shell"},"special_expansion":{"match":"!|:[-=?]?|[*@]|##?|%%|[%/]","name":"keyword.operator.expansion.shell"},"start_of_command":{"match":"[\\\\t ]*+(?![\\\\n!#\\\\&()<>\\\\[{|]|$|[\\\\t ;])(?!nocorrect |nocorrect\\\\t|nocorrect$|readonly |readonly\\\\t|readonly$|function |function\\\\t|function$|foreach |foreach\\\\t|foreach$|coproc |coproc\\\\t|coproc$|logout |logout\\\\t|logout$|export |export\\\\t|export$|select |select\\\\t|select$|repeat |repeat\\\\t|repeat$|pushd |pushd\\\\t|pushd$|until |until\\\\t|until$|while |while\\\\t|while$|local |local\\\\t|local$|case |case\\\\t|case$|done |done\\\\t|done$|elif |elif\\\\t|elif$|else |else\\\\t|else$|esac |esac\\\\t|esac$|popd |popd\\\\t|popd$|then |then\\\\t|then$|time |time\\\\t|time$|for |for\\\\t|for$|end |end\\\\t|end$|fi |fi\\\\t|fi$|do |do\\\\t|do$|in |in\\\\t|in$|if |if\\\\t|if$)(?!\\\\\\\\\\\\n?$)"},"string":{"patterns":[{"match":"\\\\\\\\.","name":"constant.character.escape.shell"},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.quoted.single.shell"},{"begin":"\\\\$?\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.quoted.double.shell","patterns":[{"match":"\\\\\\\\[\\\\n\\"$\\\\\\\\\`]","name":"constant.character.escape.shell"},{"include":"#variable"},{"include":"#interpolation"}]},{"begin":"\\\\$'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.shell"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.shell"}},"name":"string.quoted.single.dollar.shell","patterns":[{"match":"\\\\\\\\['\\\\\\\\abefnrtv]","name":"constant.character.escape.ansi-c.shell"},{"match":"\\\\\\\\[0-9]{3}\\"","name":"constant.character.escape.octal.shell"},{"match":"\\\\\\\\x\\\\h{2}\\"","name":"constant.character.escape.hex.shell"},{"match":"\\\\\\\\c.\\"","name":"constant.character.escape.control-char.shell"}]}]},"subshell_dollar":{"patterns":[{"begin":"\\\\$\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.subshell.single.shell"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.subshell.single.shell"}},"name":"meta.scope.subshell","patterns":[{"include":"#parenthese"},{"include":"#initial_context"}]}]},"support":{"patterns":[{"match":"(?<=^|[\\\\&;\\\\s])[.:](?=[\\\\&;\\\\s]|$)","name":"support.function.builtin.shell"}]},"typical_statements":{"patterns":[{"include":"#assignment_statement"},{"include":"#case_statement"},{"include":"#for_statement"},{"include":"#while_statement"},{"include":"#function_definition"},{"include":"#command_statement"},{"include":"#line_continuation"},{"include":"#arithmetic_double"},{"include":"#normal_context"}]},"variable":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.parameter.positional.all.shell"},"2":{"name":"variable.parameter.positional.all.shell"}},"match":"(\\\\$)(@(?!\\\\w))"},{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.parameter.positional.shell"},"2":{"name":"variable.parameter.positional.shell"}},"match":"(\\\\$)([0-9](?!\\\\w))"},{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.language.special.shell"},"2":{"name":"variable.language.special.shell"}},"match":"(\\\\$)([-!#$*0?_](?!\\\\w))"},{"begin":"(\\\\$)(\\\\{)[\\\\t ]*+(?=\\\\d)","beginCaptures":{"1":{"name":"punctuation.definition.variable.shell variable.parameter.positional.shell"},"2":{"name":"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell variable.parameter.positional.shell"}},"contentName":"meta.parameter-expansion","end":"}","endCaptures":{"0":{"name":"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell variable.parameter.positional.shell"}},"patterns":[{"include":"#special_expansion"},{"include":"#array_access_inline"},{"match":"[0-9]+","name":"variable.parameter.positional.shell"},{"match":"(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)","name":"variable.other.normal.shell"},{"include":"#variable"},{"include":"#string"}]},{"begin":"(\\\\$)(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.variable.shell"},"2":{"name":"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell"}},"contentName":"meta.parameter-expansion","end":"}","endCaptures":{"0":{"name":"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell"}},"patterns":[{"include":"#special_expansion"},{"include":"#array_access_inline"},{"match":"(?<!\\\\w)[-0-9A-Z_a-z]+(?!\\\\w)","name":"variable.other.normal.shell"},{"include":"#variable"},{"include":"#string"}]},{"captures":{"1":{"name":"punctuation.definition.variable.shell variable.other.normal.shell"},"2":{"name":"variable.other.normal.shell"}},"match":"(\\\\$)(\\\\w+(?!\\\\w))"}]},"while_statement":{"patterns":[{"begin":"\\\\b(while)\\\\b","beginCaptures":{"1":{"name":"keyword.control.while.shell"}},"end":"(?=[\\\\n\\\\&);\`{|}]|[\\\\t ]*#|])(?<!\\\\\\\\)","endCaptures":{},"name":"meta.while.shell","patterns":[{"include":"#line_continuation"},{"include":"#math_operators"},{"include":"#option"},{"include":"#simple_unquoted"},{"include":"#normal_context"},{"include":"#string"}]}]}},"scopeName":"source.shell","aliases":["bash","sh","shell","zsh"]}`)),bb=[Uz];var Kz=Object.freeze(JSON.parse('{"displayName":"SQL","name":"sql","patterns":[{"match":"((?<!@)@)\\\\b(\\\\w+)\\\\b","name":"text.variable"},{"match":"(\\\\[)[^]]*(])","name":"text.bracketed"},{"include":"#comments"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.sql"},"5":{"name":"entity.name.function.sql"}},"match":"(?i:^\\\\s*(create(?:\\\\s+or\\\\s+replace)?)\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)([\\"\'`]?)(\\\\w+)\\\\4","name":"meta.create.sql"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.sql"}},"match":"(?i:^\\\\s*(drop)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))","name":"meta.drop.sql"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.table.sql"},"3":{"name":"entity.name.function.sql"},"4":{"name":"keyword.other.cascade.sql"}},"match":"(?i:\\\\s*(drop)\\\\s+(table)\\\\s+(\\\\w+)(\\\\s+cascade)?\\\\b)","name":"meta.drop.sql"},{"captures":{"1":{"name":"keyword.other.create.sql"},"2":{"name":"keyword.other.table.sql"}},"match":"(?i:^\\\\s*(alter)\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\s+)","name":"meta.alter.sql"},{"captures":{"1":{"name":"storage.type.sql"},"2":{"name":"storage.type.sql"},"3":{"name":"constant.numeric.sql"},"4":{"name":"storage.type.sql"},"5":{"name":"constant.numeric.sql"},"6":{"name":"storage.type.sql"},"7":{"name":"constant.numeric.sql"},"8":{"name":"constant.numeric.sql"},"9":{"name":"storage.type.sql"},"10":{"name":"constant.numeric.sql"},"11":{"name":"storage.type.sql"},"12":{"name":"storage.type.sql"},"13":{"name":"storage.type.sql"},"14":{"name":"constant.numeric.sql"},"15":{"name":"storage.type.sql"}},"match":"(?i)\\\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\\\b|\\\\b(bit\\\\svarying|character\\\\s(?:varying)?|tinyint|var\\\\schar|float|interval)\\\\((\\\\d+)\\\\)|\\\\b(char|number|varchar\\\\d?)\\\\b(?:\\\\((\\\\d+)\\\\))?|\\\\b(numeric|decimal)\\\\b(?:\\\\((\\\\d+),(\\\\d+)\\\\))?|\\\\b(times?)\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\swith(?:out)?\\\\stime\\\\szone\\\\b)?|\\\\b(timestamp)(s|tz)?\\\\b(?:\\\\((\\\\d+)\\\\))?(\\\\s(with(?:|out))\\\\stime\\\\szone\\\\b)?"},{"match":"(?i:\\\\b((?:primary|foreign)\\\\s+key|references|on\\\\s+(delete|update)(\\\\s+cascade)?|nocheck|check|constraint|collate|default)\\\\b)","name":"storage.modifier.sql"},{"match":"\\\\b\\\\d+\\\\b","name":"constant.numeric.sql"},{"match":"(?i:\\\\b(select(\\\\s+(all|distinct))?|insert\\\\s+(ignore\\\\s+)?into|update|delete|from|set|where|group\\\\s+by|or|like|and|union(\\\\s+all)?|having|order\\\\s+by|limit|cross\\\\s+join|join|straight_join|(inner|(left|right|full)(\\\\s+outer)?)\\\\s+join|natural(\\\\s+(inner|(left|right|full)(\\\\s+outer)?))?\\\\s+join)\\\\b)","name":"keyword.other.DML.sql"},{"match":"(?i:\\\\b(on|off|((is\\\\s+)?not\\\\s+)?null)\\\\b)","name":"keyword.other.DDL.create.II.sql"},{"match":"(?i:\\\\bvalues\\\\b)","name":"keyword.other.DML.II.sql"},{"match":"(?i:\\\\b(begin(\\\\s+work)?|start\\\\s+transaction|commit(\\\\s+work)?|rollback(\\\\s+work)?)\\\\b)","name":"keyword.other.LUW.sql"},{"match":"(?i:\\\\b(grant(\\\\swith\\\\sgrant\\\\soption)?|revoke)\\\\b)","name":"keyword.other.authorization.sql"},{"match":"(?i:\\\\bin\\\\b)","name":"keyword.other.data-integrity.sql"},{"match":"(?i:^\\\\s*(comment\\\\s+on\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\s+)","name":"keyword.other.object-comments.sql"},{"match":"(?i)\\\\bAS\\\\b","name":"keyword.other.alias.sql"},{"match":"(?i)\\\\b(DESC|ASC)\\\\b","name":"keyword.other.order.sql"},{"match":"\\\\*","name":"keyword.operator.star.sql"},{"match":"[!<>]?=|<>|[<>]","name":"keyword.operator.comparison.sql"},{"match":"[-+/]","name":"keyword.operator.math.sql"},{"match":"\\\\|\\\\|","name":"keyword.operator.concatenator.sql"},{"captures":{"1":{"name":"support.function.aggregate.sql"}},"match":"(?i)\\\\b(approx_count_distinct|approx_percentile_cont|approx_percentile_disc|avg|checksum_agg|count|count_big|group|grouping|grouping_id|max|min|sum|stdevp??|varp??)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.analytic.sql"}},"match":"(?i)\\\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.bitmanipulation.sql"}},"match":"(?i)\\\\b((?:bit_coun|get_bi|left_shif|right_shif|set_bi)t)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.conversion.sql"}},"match":"(?i)\\\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.collation.sql"}},"match":"(?i)\\\\b(collationproperty|tertiary_weights)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.cryptographic.sql"}},"match":"(?i)\\\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.cursor.sql"}},"match":"(?i)\\\\b(cursor_status)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.datetime.sql"}},"match":"(?i)\\\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|datetrunc|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.datatype.sql"}},"match":"(?i)\\\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.expression.sql"}},"match":"(?i)\\\\b(coalesce|nullif)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.globalvar.sql"}},"match":"(?<!@)@@(?i)\\\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.json.sql"}},"match":"(?i)\\\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.logical.sql"}},"match":"(?i)\\\\b(choose|iif|greatest|least)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.mathematical.sql"}},"match":"(?i)\\\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.metadata.sql"}},"match":"(?i)\\\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.ranking.sql"}},"match":"(?i)\\\\b(rank|dense_rank|ntile|row_number)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.rowset.sql"}},"match":"(?i)\\\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.security.sql"}},"match":"(?i)\\\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.string.sql"}},"match":"(?i)\\\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.system.sql"}},"match":"(?i)\\\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.textimage.sql"}},"match":"(?i)\\\\b(patindex|textptr|textvalid)\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"support.function.vector.sql"}},"match":"(?i)\\\\b(vector_(?:distance|norm|normalize))\\\\b\\\\s*\\\\("},{"captures":{"1":{"name":"constant.other.database-name.sql"},"2":{"name":"constant.other.table-name.sql"}},"match":"(\\\\w+?)\\\\.(\\\\w+)"},{"include":"#strings"},{"include":"#regexps"},{"match":"\\\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_drop|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blockers|blocksize|bmk|both|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|checksum|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|connection|containment|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\\\\\s+or\\\\\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime2??|datetimeoffset|day(s)?|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_fulltext_language|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filegrowth|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|for|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hour(s)?|http|identity|identity_value|if|ifnull|ignore|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|incremental|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|leading|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|log|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|match|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minute(s)?|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|month|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|nested_triggers|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|nulls|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|quarter|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replace|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|respect|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|scalar|schema|schemabinding|scoped|scroll|scroll_locks|sddl|second|secexpr|seconds|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|sessions??|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|shortest_path|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablockx??|take|tape|target|target_index|target_partition|target_recovery_time|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|top??|torn_page_detection|track_columns_updated|trailing|tran|transaction|transfer|transform_noise_words|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|two_digit_year_cutoff|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|values??|varbinary|varchar|vector|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|wait_at_low_priority|waitfor|webmethod|week|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|windows??|with|within|within group|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|year|zone)\\\\b","name":"keyword.other.sql"},{"captures":{"1":{"name":"punctuation.section.scope.begin.sql"},"2":{"name":"punctuation.section.scope.end.sql"}},"match":"(\\\\()(\\\\))","name":"meta.block.sql"}],"repository":{"comment-block":{"begin":"/\\\\*","captures":{"0":{"name":"punctuation.definition.comment.sql"}},"end":"\\\\*/","name":"comment.block","patterns":[{"include":"#comment-block"}]},"comments":{"patterns":[{"begin":"(^[\\\\t ]+)?(?=--)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.sql"}},"end":"(?!\\\\G)","patterns":[{"begin":"--","beginCaptures":{"0":{"name":"punctuation.definition.comment.sql"}},"end":"\\\\n","name":"comment.line.double-dash.sql"}]},{"begin":"(^[\\\\t ]+)?(?=#)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.sql"}},"end":"(?!\\\\G)","patterns":[]},{"include":"#comment-block"}]},"regexps":{"patterns":[{"begin":"/(?=\\\\S.*/)","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"/","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.regexp.sql","patterns":[{"include":"#string_interpolation"},{"match":"\\\\\\\\/","name":"constant.character.escape.slash.sql"}]},{"begin":"%r\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.regexp.modr.sql","patterns":[{"include":"#string_interpolation"}]}]},"string_escape":{"match":"\\\\\\\\.","name":"constant.character.escape.sql"},"string_interpolation":{"captures":{"1":{"name":"punctuation.definition.string.begin.sql"},"3":{"name":"punctuation.definition.string.end.sql"}},"match":"(#\\\\{)([^}]*)(})","name":"string.interpolated.sql"},"strings":{"patterns":[{"captures":{"2":{"name":"punctuation.definition.string.begin.sql"},"3":{"name":"punctuation.definition.string.end.sql"}},"match":"(N)?(\')[^\']*(\')","name":"string.quoted.single.sql"},{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"\'","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.quoted.single.sql","patterns":[{"include":"#string_escape"}]},{"captures":{"1":{"name":"punctuation.definition.string.begin.sql"},"2":{"name":"punctuation.definition.string.end.sql"}},"match":"(`)[^\\\\\\\\`]*(`)","name":"string.quoted.other.backtick.sql"},{"begin":"`","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"`","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.quoted.other.backtick.sql","patterns":[{"include":"#string_escape"}]},{"captures":{"1":{"name":"punctuation.definition.string.begin.sql"},"2":{"name":"punctuation.definition.string.end.sql"}},"match":"(\\")[^\\"#]*(\\")","name":"string.quoted.double.sql"},{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.quoted.double.sql","patterns":[{"include":"#string_interpolation"}]},{"begin":"%\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.sql"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.string.end.sql"}},"name":"string.other.quoted.brackets.sql","patterns":[{"include":"#string_interpolation"}]}]}},"scopeName":"source.sql"}')),T3=[Kz];var Xz=Object.freeze(JSON.parse(`{"displayName":"TSX","name":"tsx","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.tsx"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.objectliteral.tsx","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.tsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.tsx"}},"name":"meta.array.literal.tsx","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"variable.parameter.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.tsx"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.tsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.tsx"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.tsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.tsx","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.tsx"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.tsx"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"include":"#jsx"}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.type.class.tsx"}},"end":"(?<=})","name":"meta.class.tsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.tsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.type.class.tsx"}},"end":"(?<=})","name":"meta.class.tsx","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.tsx"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.tsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.tsx"}},"name":"comment.block.documentation.tsx","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.tsx"},"2":{"name":"storage.type.internaldeclaration.tsx"},"3":{"name":"punctuation.decorator.internaldeclaration.tsx"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.tsx"}},"name":"comment.block.tsx"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.tsx"},"2":{"name":"comment.line.double-slash.tsx"},"3":{"name":"punctuation.definition.comment.tsx"},"4":{"name":"storage.type.internaldeclaration.tsx"},"5":{"name":"punctuation.decorator.internaldeclaration.tsx"}},"contentName":"comment.line.double-slash.tsx","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.tsx"},{"captures":{"1":{"name":"keyword.control.loop.tsx"},"2":{"name":"entity.name.label.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.tsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.tsx"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.tsx"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.tsx"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.block.tsx","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.tsx"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.tsx"}},"end":"(?=\\\\s)","name":"meta.decorator.tsx","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.tsx","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.tsx","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"name":"meta.parameter.object-binding-pattern.tsx","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"name":"meta.paramter.array-binding-pattern.tsx","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"variable.parameter.tsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.tsx","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.tsx","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"meta.definition.variable.tsx variable.other.readwrite.tsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"meta.definition.variable.tsx variable.other.constant.tsx"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.tsx"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.tsx","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.tsx"},"2":{"name":"entity.name.tag.directive.tsx"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.tsx"}},"name":"meta.tag.tsx","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.tsx"},{"match":"=","name":"keyword.operator.assignment.tsx"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.tsx"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.tsx"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|'(?:\\\\*(?!/)|\\\\\\\\(?!')|[^*\\\\\\\\])*?'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.type.enum.tsx"},"5":{"name":"entity.name.type.enum.tsx"}},"end":"(?<=})","name":"meta.enum.declaration.tsx","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.tsx"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"keyword.control.as.tsx"},"3":{"name":"storage.type.namespace.tsx"},"4":{"name":"entity.name.type.module.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"keyword.control.type.tsx"},"3":{"name":"keyword.operator.assignment.tsx"},"4":{"name":"keyword.control.default.tsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.tsx","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"keyword.control.type.tsx"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.tsx","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"entity.name.function.tsx variable.language.this.tsx"},"4":{"name":"entity.name.function.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"variable.parameter.tsx variable.language.this.tsx"},"4":{"name":"variable.parameter.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.tsx"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.tsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.tsx"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.tsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.tsx"},"2":{"name":"keyword.generator.asterisk.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.tsx"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.tsx"},{"captures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"keyword.control.satisfies.tsx"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.tsx"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.tsx"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.tsx"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.tsx"},{"match":"[!=]==?","name":"keyword.operator.comparison.tsx"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.tsx"},{"captures":{"1":{"name":"keyword.operator.logical.tsx"},"2":{"name":"keyword.operator.assignment.compound.tsx"},"3":{"name":"keyword.operator.arithmetic.tsx"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.tsx"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.tsx"},{"match":"=","name":"keyword.operator.assignment.tsx"},{"match":"--","name":"keyword.operator.decrement.tsx"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.tsx"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.tsx"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.tsx"},"2":{"name":"keyword.operator.arithmetic.tsx"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.tsx"},"2":{"name":"keyword.operator.arithmetic.tsx"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#jsx"},{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.tsx"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.tsx","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.tsx entity.name.function.tsx"},"2":{"name":"keyword.operator.optional.tsx"},"3":{"name":"keyword.operator.definiteassignment.tsx"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.tsx variable.object.property.tsx"},{"match":"\\\\?","name":"keyword.operator.optional.tsx"},{"match":"!","name":"keyword.operator.definiteassignment.tsx"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.tsx"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.tsx"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.tsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.tsx","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.tsx punctuation.accessor.optional.tsx"},{"match":"!","name":"meta.function-call.tsx keyword.operator.definiteassignment.tsx"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tsx"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.async.tsx"},"4":{"name":"storage.type.function.tsx"},"5":{"name":"keyword.generator.asterisk.tsx"},"6":{"name":"meta.definition.function.tsx entity.name.function.tsx"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.tsx","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"storage.type.function.tsx"},"3":{"name":"keyword.generator.asterisk.tsx"},"4":{"name":"meta.definition.function.tsx entity.name.function.tsx"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.tsx","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.tsx entity.name.function.tsx"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.tsx"}},"name":"meta.parameters.tsx","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.tsx"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"entity.name.function.tsx"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"variable.other.constant.property.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"variable.other.property.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.tsx"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.tsx"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.tsx"},"2":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"keyword.other.tsx"}},"name":"string.regexp.tsx","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"keyword.control.import.tsx"},"4":{"name":"keyword.control.type.tsx"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.tsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.tsx"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"keyword.control.import.tsx"},"4":{"name":"keyword.control.type.tsx"},"5":{"name":"variable.other.readwrite.alias.tsx"},"6":{"name":"keyword.operator.assignment.tsx"},"7":{"name":"keyword.control.require.tsx"},"8":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"name":"meta.import-equals.external.tsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"keyword.control.import.tsx"},"4":{"name":"keyword.control.type.tsx"},"5":{"name":"variable.other.readwrite.alias.tsx"},"6":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.tsx","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.tsx"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.tsx"},"2":{"name":"keyword.control.assert.tsx"},"3":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.tsx"},{"match":":","name":"punctuation.separator.key-value.tsx"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.block.tsx","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.tsx"},"2":{"name":"keyword.control.default.tsx"},"3":{"name":"constant.language.import-export-all.tsx"},"4":{"name":"variable.other.readwrite.tsx"},"5":{"name":"string.quoted.alias.tsx"},"12":{"name":"keyword.control.as.tsx"},"13":{"name":"keyword.control.default.tsx"},"14":{"name":"variable.other.readwrite.alias.tsx"},"15":{"name":"string.quoted.alias.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.tsx"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.tsx"},{"captures":{"1":{"name":"keyword.control.type.tsx"},"2":{"name":"variable.other.readwrite.alias.tsx"},"3":{"name":"string.quoted.alias.tsx"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.tsx"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"meta.brace.square.tsx"},"3":{"name":"variable.parameter.tsx"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.tsx"},"2":{"name":"keyword.operator.optional.tsx"}},"name":"meta.indexer.declaration.tsx","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"meta.brace.square.tsx"},"4":{"name":"entity.name.type.tsx"},"5":{"name":"keyword.operator.expression.in.tsx"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.tsx"},"2":{"name":"keyword.operator.type.modifier.tsx"},"3":{"name":"keyword.operator.optional.tsx"}},"name":"meta.indexer.mappedtype.declaration.tsx","patterns":[{"captures":{"1":{"name":"keyword.control.as.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.tsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.type.interface.tsx"}},"end":"(?<=})","name":"meta.interface.tsx","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.tsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"jsx":{"patterns":[{"include":"#jsx-tag-without-attributes-in-expression"},{"include":"#jsx-tag-in-expression"}]},"jsx-children":{"patterns":[{"include":"#jsx-tag-without-attributes"},{"include":"#jsx-tag"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-entities"}]},"jsx-entities":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.entity.tsx"},"3":{"name":"punctuation.definition.entity.tsx"}},"match":"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\h+)(;)","name":"constant.character.entity.tsx"}]},"jsx-evaluated-code":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.section.embedded.begin.tsx"}},"contentName":"meta.embedded.expression.tsx","end":"}","endCaptures":{"0":{"name":"punctuation.section.embedded.end.tsx"}},"patterns":[{"include":"#expression"}]},"jsx-string-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.tsx"}},"name":"string.quoted.double.tsx","patterns":[{"include":"#jsx-entities"}]},"jsx-string-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.tsx"}},"name":"string.quoted.single.tsx","patterns":[{"include":"#jsx-entities"}]},"jsx-tag":{"begin":"(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(/>)|(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.end.tsx"},"2":{"name":"punctuation.definition.tag.begin.tsx"},"3":{"name":"entity.name.tag.namespace.tsx"},"4":{"name":"punctuation.separator.namespace.tsx"},"5":{"name":"entity.name.tag.tsx"},"6":{"name":"support.class.component.tsx"},"7":{"name":"punctuation.definition.tag.end.tsx"}},"name":"meta.tag.tsx","patterns":[{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.tsx"},"2":{"name":"entity.name.tag.namespace.tsx"},"3":{"name":"punctuation.separator.namespace.tsx"},"4":{"name":"entity.name.tag.tsx"},"5":{"name":"support.class.component.tsx"}},"end":"(?=/?>)","patterns":[{"include":"#comment"},{"include":"#type-arguments"},{"include":"#jsx-tag-attributes"}]},{"begin":"(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.end.tsx"}},"contentName":"meta.jsx.children.tsx","end":"(?=</)","patterns":[{"include":"#jsx-children"}]}]},"jsx-tag-attribute-assignment":{"match":"=(?=\\\\s*(?:[\\"'{]|/\\\\*|//|\\\\n))","name":"keyword.operator.assignment.tsx"},"jsx-tag-attribute-name":{"captures":{"1":{"name":"entity.other.attribute-name.namespace.tsx"},"2":{"name":"punctuation.separator.namespace.tsx"},"3":{"name":"entity.other.attribute-name.tsx"}},"match":"\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\s]|/?>|/\\\\*|//)"},"jsx-tag-attributes":{"begin":"\\\\s+","end":"(?=/?>)","name":"meta.tag.attributes.tsx","patterns":[{"include":"#comment"},{"include":"#jsx-tag-attribute-name"},{"include":"#jsx-tag-attribute-assignment"},{"include":"#jsx-string-double-quoted"},{"include":"#jsx-string-single-quoted"},{"include":"#jsx-evaluated-code"},{"include":"#jsx-tag-attributes-illegal"}]},"jsx-tag-attributes-illegal":{"match":"\\\\S+","name":"invalid.illegal.attribute.tsx"},"jsx-tag-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?!<\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,))(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|/?>))","patterns":[{"include":"#jsx-tag"}]},"jsx-tag-without-attributes":{"begin":"(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","beginCaptures":{"1":{"name":"punctuation.definition.tag.begin.tsx"},"2":{"name":"entity.name.tag.namespace.tsx"},"3":{"name":"punctuation.separator.namespace.tsx"},"4":{"name":"entity.name.tag.tsx"},"5":{"name":"support.class.component.tsx"},"6":{"name":"punctuation.definition.tag.end.tsx"}},"contentName":"meta.jsx.children.tsx","end":"(</)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>)","endCaptures":{"1":{"name":"punctuation.definition.tag.begin.tsx"},"2":{"name":"entity.name.tag.namespace.tsx"},"3":{"name":"punctuation.separator.namespace.tsx"},"4":{"name":"entity.name.tag.tsx"},"5":{"name":"support.class.component.tsx"},"6":{"name":"punctuation.definition.tag.end.tsx"}},"name":"meta.tag.without-attributes.tsx","patterns":[{"include":"#jsx-children"}]},"jsx-tag-without-attributes-in-expression":{"begin":"(?<!\\\\+\\\\+|--)(?<=[(*,:=>?\\\\[{]|&&|\\\\|\\\\||\\\\?|\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","end":"(?!(<)\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\s*(>))","patterns":[{"include":"#jsx-tag-without-attributes"}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.tsx"},"2":{"name":"punctuation.separator.label.tsx"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.tsx"},"2":{"name":"punctuation.separator.label.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.modifier.async.tsx"},"5":{"name":"storage.type.tsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.modifier.async.tsx"},"5":{"name":"keyword.operator.new.tsx"},"6":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.modifier.tsx"},"4":{"name":"storage.modifier.async.tsx"},"5":{"name":"storage.type.property.tsx"},"6":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.tsx entity.name.function.tsx"},{"match":"\\\\?","name":"keyword.operator.optional.tsx"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$'_\`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.namespace.tsx"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.tsx","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.tsx"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.tsx"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.tsx","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.tsx"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.tsx"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.tsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.tsx"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.tsx"},{"captures":{"1":{"name":"storage.type.numeric.bigint.tsx"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.tsx"},{"captures":{"0":{"name":"constant.numeric.decimal.tsx"},"1":{"name":"meta.delimiter.decimal.period.tsx"},"2":{"name":"storage.type.numeric.bigint.tsx"},"3":{"name":"meta.delimiter.decimal.period.tsx"},"4":{"name":"storage.type.numeric.bigint.tsx"},"5":{"name":"meta.delimiter.decimal.period.tsx"},"6":{"name":"storage.type.numeric.bigint.tsx"},"7":{"name":"storage.type.numeric.bigint.tsx"},"8":{"name":"meta.delimiter.decimal.period.tsx"},"9":{"name":"storage.type.numeric.bigint.tsx"},"10":{"name":"meta.delimiter.decimal.period.tsx"},"11":{"name":"storage.type.numeric.bigint.tsx"},"12":{"name":"meta.delimiter.decimal.period.tsx"},"13":{"name":"storage.type.numeric.bigint.tsx"},"14":{"name":"storage.type.numeric.bigint.tsx"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.tsx"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.tsx"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.tsx"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.tsx"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"variable.other.constant.object.property.tsx"},"4":{"name":"variable.other.object.property.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.tsx"},"2":{"name":"variable.other.object.tsx"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.objectliteral.tsx","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"storage.type.property.tsx"},"3":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"storage.type.property.tsx"},"3":{"name":"keyword.generator.asterisk.tsx"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.tsx meta.object-literal.key.tsx","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"'\`])","end":"(?=:)|((?<=[\\"'\`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.tsx meta.object-literal.key.tsx","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.tsx meta.object-literal.key.tsx","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"'\`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.tsx","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.tsx"},"1":{"name":"constant.numeric.decimal.tsx"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.tsx"},{"captures":{"0":{"name":"meta.object-literal.key.tsx"},"1":{"name":"entity.name.function.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.tsx"},{"captures":{"0":{"name":"meta.object-literal.key.tsx"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.tsx"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.tsx"}},"end":"(?=[,}])","name":"meta.object.member.tsx","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.tsx"},{"captures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.tsx"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.tsx"},"2":{"name":"keyword.control.satisfies.tsx"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.tsx","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.tsx","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.tsx punctuation.separator.key-value.tsx"}},"end":"(?=[,}])","name":"meta.object.member.tsx","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"},"2":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.tsx"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"entity.name.function.tsx variable.language.this.tsx"},"4":{"name":"entity.name.function.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"variable.parameter.tsx variable.language.this.tsx"},"4":{"name":"variable.parameter.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.tsx"},"2":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.tsx"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.tsx","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.tsx"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"}},"contentName":"meta.arrow.tsx meta.return.type.arrow.tsx","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.tsx"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.tsx"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.tsx"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"invalid.illegal.newline.tsx"}},"name":"string.quoted.double.tsx","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"invalid.illegal.newline.tsx"}},"name":"string.quoted.single.tsx","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"keyword.other.tsx"}},"name":"string.regexp.tsx","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.tsx"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.tsx"},"2":{"name":"keyword.other.tsx"}},"name":"string.regexp.tsx","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.tsx","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.tsx","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.tsx"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.tsx"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.tsx"},"2":{"name":"comment.line.double-slash.tsx"},"3":{"name":"punctuation.definition.comment.tsx"},"4":{"name":"storage.type.internaldeclaration.tsx"},"5":{"name":"punctuation.decorator.internaldeclaration.tsx"}},"contentName":"comment.line.double-slash.tsx","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.tsx"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.tsx"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"'\`])","name":"keyword.operator.expression.import.tsx"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.tsx"},{"captures":{"1":{"name":"keyword.control.import.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"},"4":{"name":"support.variable.property.importmeta.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"},"4":{"name":"support.variable.property.target.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.tsx"},"2":{"name":"punctuation.accessor.optional.tsx"},"3":{"name":"support.variable.property.tsx"},"4":{"name":"support.constant.tsx"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.tsx"},"2":{"name":"support.type.object.module.tsx"},"3":{"name":"punctuation.accessor.tsx"},"4":{"name":"punctuation.accessor.optional.tsx"},"5":{"name":"support.type.object.module.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"switch-statement.expr.tsx","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.tsx"},"2":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"name":"switch-expression.expr.tsx","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"(?=})","name":"switch-block.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.tsx"}},"end":"(?=:)","name":"case-clause.expr.tsx","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"},"2":{"name":"meta.block.tsx punctuation.definition.block.tsx"}},"contentName":"meta.block.tsx","end":"}","endCaptures":{"0":{"name":"meta.block.tsx punctuation.definition.block.tsx"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.tsx"},"2":{"name":"string.template.tsx punctuation.definition.string.template.begin.tsx"}},"contentName":"string.template.tsx","end":"\`","endCaptures":{"0":{"name":"string.template.tsx punctuation.definition.string.template.end.tsx"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","end":"(?=\`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.tsx"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.tsx"}},"end":"(?=\`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.tsx"}},"contentName":"meta.embedded.line.tsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.tsx"}},"name":"meta.template.expression.tsx","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(\`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.tsx"},"2":{"name":"string.template.tsx punctuation.definition.string.template.begin.tsx"}},"contentName":"string.template.tsx","end":"\`","endCaptures":{"0":{"name":"string.template.tsx punctuation.definition.string.template.end.tsx"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.tsx"}},"contentName":"meta.embedded.line.tsx","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.tsx"}},"name":"meta.template.expression.tsx","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.tsx"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.tsx"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.tsx"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.type.tsx"},"4":{"name":"entity.name.type.alias.tsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.tsx","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"},"2":{"name":"keyword.control.intrinsic.tsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.tsx","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.tsx"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.tsx","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.tsx"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.tsx"}},"name":"meta.type.parameters.tsx","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.tsx"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.tsx"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.tsx"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.tsx"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.tsx storage.modifier.tsx"},"2":{"name":"meta.type.constructor.tsx keyword.control.new.tsx"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.control.new.tsx"}},"end":"(?<=\\\\))","name":"meta.type.constructor.tsx","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.tsx","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.tsx"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.tsx","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.tsx"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.tsx","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.tsx"},"2":{"name":"entity.name.type.tsx"},"3":{"name":"keyword.operator.expression.extends.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.tsx"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"},"4":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"}},"contentName":"meta.type.parameters.tsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.tsx"},"2":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"}},"contentName":"meta.type.parameters.tsx","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.tsx"},"2":{"name":"punctuation.accessor.tsx"},"3":{"name":"punctuation.accessor.optional.tsx"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.tsx"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.tsx"}},"name":"meta.object.type.tsx","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.tsx"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.tsx"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.tsx"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.tsx"},{"match":"([:?])","name":"keyword.operator.ternary.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.tsx"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.tsx"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.tsx"}},"name":"meta.type.parameters.tsx","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.tsx"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.tsx"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.tsx"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.tsx"}},"name":"meta.type.paren.cover.tsx","patterns":[{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"entity.name.function.tsx variable.language.this.tsx"},"4":{"name":"entity.name.function.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.tsx"},"2":{"name":"keyword.operator.rest.tsx"},"3":{"name":"variable.parameter.tsx variable.language.this.tsx"},"4":{"name":"variable.parameter.tsx"},"5":{"name":"keyword.operator.optional.tsx"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.tsx"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.tsx"},"2":{"name":"variable.parameter.tsx variable.language.this.tsx"},"3":{"name":"variable.parameter.tsx"},"4":{"name":"keyword.operator.expression.is.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.tsx"},"2":{"name":"variable.parameter.tsx variable.language.this.tsx"},"3":{"name":"variable.parameter.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.tsx"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.tsx"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.tsx"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.tsx"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.tsx"}},"name":"meta.type.tuple.tsx","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.tsx"},{"captures":{"1":{"name":"entity.name.label.tsx"},"2":{"name":"keyword.operator.optional.tsx"},"3":{"name":"punctuation.separator.label.tsx"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.tsx"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.tsx"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.tsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.tsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.tsx","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.tsx"},"2":{"name":"storage.modifier.tsx"},"3":{"name":"storage.type.tsx"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.tsx"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.constant.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|(\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|(<\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\s+extends\\\\s*[^=>])|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"'()\`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|('([^'\\\\\\\\]|\\\\\\\\.)*')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(\`([^\\\\\\\\\`]|\\\\\\\\.)*\`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.tsx entity.name.function.tsx"},"2":{"name":"keyword.operator.definiteassignment.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.constant.tsx"},"2":{"name":"keyword.operator.definiteassignment.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.tsx variable.other.readwrite.tsx"},"2":{"name":"keyword.operator.definiteassignment.tsx"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.tsx","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.tsx"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.tsx"}`)),M3=[Xz];var Zz=Object.freeze(JSON.parse('{"displayName":"TypeScript","name":"typescript","patterns":[{"include":"#directives"},{"include":"#statements"},{"include":"#shebang"}],"repository":{"access-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"},"after-operator-block-as-object-literal":{"begin":"(?<!\\\\+\\\\+|--)(?<=[!(+,:=>?\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.objectliteral.ts","patterns":[{"include":"#object-member"}]},"array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"patterns":[{"include":"#binding-element"},{"include":"#punctuation-comma"}]},"array-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"patterns":[{"include":"#binding-element-const"},{"include":"#punctuation-comma"}]},"array-literal":{"begin":"\\\\s*(\\\\[)","beginCaptures":{"1":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.array.literal.ts","patterns":[{"include":"#expression"},{"include":"#punctuation-comma"}]},"arrow-function":{"patterns":[{"captures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"variable.parameter.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async)\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?==>)","name":"meta.arrow.ts"},{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(async))?((?<![]!)}])\\\\s*(?=((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.arrow.ts","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#arrow-return-type"},{"include":"#possibly-arrow-return-type"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.ts"}},"end":"((?<=[}\\\\S])(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!/[*/])","name":"meta.arrow.ts","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#decl-block"},{"include":"#expression"}]}]},"arrow-return-type":{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","name":"meta.return.type.arrow.ts","patterns":[{"include":"#arrow-return-type-body"}]},"arrow-return-type-body":{"patterns":[{"begin":"(?<=:)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"async-modifier":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.async.ts"},"binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern"},{"include":"#array-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"}]},"binding-element-const":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#object-binding-pattern-const"},{"include":"#array-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"}]},"boolean-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.true.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.boolean.false.ts"}]},"brackets":{"patterns":[{"begin":"\\\\{","end":"}|(?=\\\\*/)","patterns":[{"include":"#brackets"}]},{"begin":"\\\\[","end":"]|(?=\\\\*/)","patterns":[{"include":"#brackets"}]}]},"cast":{"patterns":[{"captures":{"1":{"name":"meta.brace.angle.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"meta.brace.angle.ts"}},"match":"\\\\s*(<)\\\\s*(const)\\\\s*(>)","name":"cast.expr.ts"},{"begin":"(?<!\\\\+\\\\+|--)(?<=^return|[^$._[:alnum:]]return|^throw|[^$._[:alnum:]]throw|^yield|[^$._[:alnum:]]yield|^await|[^$._[:alnum:]]await|^default|[^$._[:alnum:]]default|[\\\\&(*,:=>?^|]|[^$_[:alnum:]](?:\\\\+\\\\+|--)|[^+]\\\\+|[^-]-)\\\\s*(<)(?!<?=)(?!\\\\s*$)","beginCaptures":{"1":{"name":"meta.brace.angle.ts"}},"end":"(>)","endCaptures":{"1":{"name":"meta.brace.angle.ts"}},"name":"cast.expr.ts","patterns":[{"include":"#type"}]},{"begin":"(?<=^)\\\\s*(<)(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*>)","beginCaptures":{"1":{"name":"meta.brace.angle.ts"}},"end":"(>)","endCaptures":{"1":{"name":"meta.brace.angle.ts"}},"name":"cast.expr.ts","patterns":[{"include":"#type"}]}]},"class-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.type.class.ts"}},"end":"(?<=})","name":"meta.class.ts","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-declaration-or-expression-patterns":{"patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.class.ts"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"class-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|/[*/])","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.type.class.ts"}},"end":"(?<=})","name":"meta.class.ts","patterns":[{"include":"#class-declaration-or-expression-patterns"}]},"class-or-interface-body":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"#comment"},{"include":"#decorator"},{"begin":"(?<=:)\\\\s*","end":"(?=[-\\\\])+,:;}\\\\s]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#field-declaration"},{"include":"#string"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"include":"#access-modifier"},{"include":"#property-accessor"},{"include":"#async-modifier"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#expression"},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"}]},"class-or-interface-heritage":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\b(extends|implements)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.ts"}},"end":"(?=\\\\{)","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"include":"#type-parameters"},{"include":"#expressionWithoutIdentifiers"},{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\s*)"},{"captures":{"1":{"name":"entity.other.inherited-class.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)"},{"include":"#expressionPunctuations"}]},"comment":{"patterns":[{"begin":"/\\\\*\\\\*(?!/)","beginCaptures":{"0":{"name":"punctuation.definition.comment.ts"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.ts"}},"name":"comment.block.documentation.ts","patterns":[{"include":"#docblock"}]},{"begin":"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?","beginCaptures":{"1":{"name":"punctuation.definition.comment.ts"},"2":{"name":"storage.type.internaldeclaration.ts"},"3":{"name":"punctuation.decorator.internaldeclaration.ts"}},"end":"\\\\*/","endCaptures":{"0":{"name":"punctuation.definition.comment.ts"}},"name":"comment.block.ts"},{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.ts"},"2":{"name":"comment.line.double-slash.ts"},"3":{"name":"punctuation.definition.comment.ts"},"4":{"name":"storage.type.internaldeclaration.ts"},"5":{"name":"punctuation.decorator.internaldeclaration.ts"}},"contentName":"comment.line.double-slash.ts","end":"(?=$)"}]},"control-statement":{"patterns":[{"include":"#switch-statement"},{"include":"#for-loop"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.trycatch.ts"},{"captures":{"1":{"name":"keyword.control.loop.ts"},"2":{"name":"entity.name.label.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.loop.ts"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.control.flow.ts"}},"end":"(?=[;}]|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#expression"}]},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.switch.ts"},{"include":"#if-statement"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.conditional.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.with.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.other.debugger.ts"}]},"decl-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.block.ts","patterns":[{"include":"#statements"}]},"declaration":{"patterns":[{"include":"#decorator"},{"include":"#var-expr"},{"include":"#function-declaration"},{"include":"#class-declaration"},{"include":"#interface-declaration"},{"include":"#enum-declaration"},{"include":"#namespace-declaration"},{"include":"#type-alias-declaration"},{"include":"#import-equals-declaration"},{"include":"#import-declaration"},{"include":"#export-declaration"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"}]},"decorator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))@","beginCaptures":{"0":{"name":"punctuation.decorator.ts"}},"end":"(?=\\\\s)","name":"meta.decorator.ts","patterns":[{"include":"#expression"}]},"destructuring-const":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.ts","patterns":[{"include":"#object-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.ts","patterns":[{"include":"#array-binding-pattern-const"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-parameter":{"patterns":[{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"name":"meta.parameter.object-binding-pattern.ts","patterns":[{"include":"#parameter-object-binding-element"}]},{"begin":"(?<![:=])\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"name":"meta.paramter.array-binding-pattern.ts","patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]}]},"destructuring-parameter-rest":{"captures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"variable.parameter.ts"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable":{"patterns":[{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\{)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.object-binding-pattern-variable.ts","patterns":[{"include":"#object-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]},{"begin":"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\s*(?=\\\\[)","end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","name":"meta.array-binding-pattern-variable.ts","patterns":[{"include":"#array-binding-pattern"},{"include":"#type-annotation"},{"include":"#comment"}]}]},"destructuring-variable-rest":{"captures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"meta.definition.variable.ts variable.other.readwrite.ts"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"destructuring-variable-rest-const":{"captures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"meta.definition.variable.ts variable.other.constant.ts"}},"match":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)"},"directives":{"begin":"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))+\\\\s*/>\\\\s*$)","beginCaptures":{"1":{"name":"punctuation.definition.comment.ts"}},"end":"(?=$)","name":"comment.line.triple-slash.directive.ts","patterns":[{"begin":"(<)(reference|amd-dependency|amd-module)","beginCaptures":{"1":{"name":"punctuation.definition.tag.directive.ts"},"2":{"name":"entity.name.tag.directive.ts"}},"end":"/>","endCaptures":{"0":{"name":"punctuation.definition.tag.directive.ts"}},"name":"meta.tag.ts","patterns":[{"match":"path|types|no-default-lib|lib|name|resolution-mode","name":"entity.other.attribute-name.directive.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"include":"#string"}]}]},"docblock":{"patterns":[{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.access-type.jsdoc"}},"match":"((@)a(?:ccess|pi))\\\\s+(p(?:rivate|rotected|ublic))\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"5":{"name":"constant.other.email.link.underline.jsdoc"},"6":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"match":"((@)author)\\\\s+([^*/<>@\\\\s](?:[^*/<>@]|\\\\*[^/])*)(?:\\\\s*(<)([^>\\\\s]+)(>))?"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"},"4":{"name":"keyword.operator.control.jsdoc"},"5":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)borrows)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)\\\\s+(as)\\\\s+((?:[^*/@\\\\s]|\\\\*[^/])+)"},{"begin":"((@)example)\\\\s+","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=@|\\\\*/)","name":"meta.example.jsdoc","patterns":[{"match":"^\\\\s\\\\*\\\\s+"},{"begin":"\\\\G(<)caption(>)","beginCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}},"contentName":"constant.other.description.jsdoc","end":"(</)caption(>)|(?=\\\\*/)","endCaptures":{"0":{"name":"entity.name.tag.inline.jsdoc"},"1":{"name":"punctuation.definition.bracket.angle.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.angle.end.jsdoc"}}},{"captures":{"0":{"name":"source.embedded.ts"}},"match":"[^*@\\\\s](?:[^*]|\\\\*[^/])*"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"constant.language.symbol-type.jsdoc"}},"match":"((@)kind)\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\b"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.link.underline.jsdoc"},"4":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)see)\\\\s+(?:((?=https?://)(?:[^*\\\\s]|\\\\*[^/])+)|((?!https?://|(?:\\\\[[^]\\\\[]*])?\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\b)(?:[^*/@\\\\s]|\\\\*[^/])+))"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)template)\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*(?:\\\\s*,\\\\s*[$A-Z_a-z][]$.\\\\[\\\\w]*)*)"},{"begin":"((@)template)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\s+([$A-Z_a-z][]$.\\\\[\\\\w]*)"},{"begin":"((@)typedef)\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"(?:[^*/@\\\\s]|\\\\*[^/])+","name":"entity.name.type.instance.jsdoc"}]},{"begin":"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"},{"match":"([$A-Z_a-z][]$.\\\\[\\\\w]*)","name":"variable.other.jsdoc"},{"captures":{"1":{"name":"punctuation.definition.optional-value.begin.bracket.square.jsdoc"},"2":{"name":"keyword.operator.assignment.jsdoc"},"3":{"name":"source.embedded.ts"},"4":{"name":"punctuation.definition.optional-value.end.bracket.square.jsdoc"},"5":{"name":"invalid.illegal.syntax.jsdoc"}},"match":"(\\\\[)\\\\s*[$\\\\w]+(?:(?:\\\\[])?\\\\.[$\\\\w]+)*(?:\\\\s*(=)\\\\s*((?>\\"(?:\\\\*(?!/)|\\\\\\\\(?!\\")|[^*\\\\\\\\])*?\\"|\'(?:\\\\*(?!/)|\\\\\\\\(?!\')|[^*\\\\\\\\])*?\'|\\\\[(?:\\\\*(?!/)|[^*])*?]|(?:\\\\*(?!/)|\\\\s(?!\\\\s*])|\\\\[.*?(?:]|(?=\\\\*/))|[^]*\\\\[\\\\s])*)*))?\\\\s*(?:(])((?:[^*\\\\s]|\\\\*[^/\\\\s])+)?|(?=\\\\*/))","name":"variable.other.jsdoc"}]},{"begin":"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\s+(?=\\\\{)","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"end":"(?=\\\\s|\\\\*/|[^]$A-\\\\[_a-{}])","patterns":[{"include":"#jsdoctype"}]},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"entity.name.type.instance.jsdoc"}},"match":"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\s+((?:[^*@{}\\\\s]|\\\\*[^/])+)"},{"begin":"((@)(?:default(?:value)?|license|version))\\\\s+(([\\"\']))","beginCaptures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"},"4":{"name":"punctuation.definition.string.begin.jsdoc"}},"contentName":"variable.other.jsdoc","end":"(\\\\3)|(?=$|\\\\*/)","endCaptures":{"0":{"name":"variable.other.jsdoc"},"1":{"name":"punctuation.definition.string.end.jsdoc"}}},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"},"3":{"name":"variable.other.jsdoc"}},"match":"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^*\\\\s]+)"},{"captures":{"1":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\b","name":"storage.type.class.jsdoc"},{"include":"#inline-tags"},{"captures":{"1":{"name":"storage.type.class.jsdoc"},"2":{"name":"punctuation.definition.block.tag.jsdoc"}},"match":"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s+)"}]},"enum-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.type.enum.ts"},"5":{"name":"entity.name.type.enum.ts"}},"end":"(?<=})","name":"meta.enum.declaration.ts","patterns":[{"include":"#comment"},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"#comment"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"0":{"name":"variable.other.enummember.ts"}},"end":"(?=[,}]|$)","patterns":[{"include":"#comment"},{"include":"#variable-initializer"}]},{"begin":"(?=((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+])))","end":"(?=[,}]|$)","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#comment"},{"include":"#variable-initializer"}]},{"include":"#punctuation-comma"}]}]},"export-declaration":{"patterns":[{"captures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"keyword.control.as.ts"},"3":{"name":"storage.type.namespace.ts"},"4":{"name":"entity.name.type.module.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:\\\\s*(=)|\\\\s+(default)(?=\\\\s+))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"keyword.control.type.ts"},"3":{"name":"keyword.operator.assignment.ts"},"4":{"name":"keyword.control.default.ts"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.default.ts","patterns":[{"include":"#interface-declaration"},{"include":"#expression"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[*{])|((?=\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\s]))(?!\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"keyword.control.type.ts"}},"end":"(?=$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.export.ts","patterns":[{"include":"#import-export-declaration"}]}]},"expression":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-inside-possibly-arrow-parens":{"patterns":[{"include":"#expressionWithoutIdentifiers"},{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"captures":{"1":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"entity.name.function.ts variable.language.this.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"variable.parameter.ts variable.language.this.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[,:]|$)"},{"include":"#type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.ts"},{"include":"#identifiers"},{"include":"#expressionPunctuations"}]},"expression-operators":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.control.flow.ts"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*\\\\*)","beginCaptures":{"1":{"name":"keyword.control.flow.ts"}},"end":"\\\\*","endCaptures":{"0":{"name":"keyword.generator.asterisk.ts"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.control.flow.ts"},"2":{"name":"keyword.generator.asterisk.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.delete.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.in.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()","name":"keyword.operator.expression.of.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.instanceof.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.new.ts"},{"include":"#typeof-operator"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.void.ts"},{"captures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[]),:;}]))"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"keyword.control.satisfies.ts"}},"end":"(?=^|[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+<))","patterns":[{"include":"#type"}]},{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.spread.ts"},{"match":"(?:\\\\*|(?<!\\\\()/|[-%+])=","name":"keyword.operator.assignment.compound.ts"},{"match":"(?:[\\\\&^]|<<|>>>??|\\\\|)=","name":"keyword.operator.assignment.compound.bitwise.ts"},{"match":"<<|>>>?","name":"keyword.operator.bitwise.shift.ts"},{"match":"[!=]==?","name":"keyword.operator.comparison.ts"},{"match":"<=|>=|<>|[<>]","name":"keyword.operator.relational.ts"},{"captures":{"1":{"name":"keyword.operator.logical.ts"},"2":{"name":"keyword.operator.assignment.compound.ts"},"3":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[$_[:alnum:]])(!)\\\\s*(?:(/=)|(/)(?![*/]))"},{"match":"!|&&|\\\\|\\\\||\\\\?\\\\?","name":"keyword.operator.logical.ts"},{"match":"[\\\\&^|~]","name":"keyword.operator.bitwise.ts"},{"match":"=","name":"keyword.operator.assignment.ts"},{"match":"--","name":"keyword.operator.decrement.ts"},{"match":"\\\\+\\\\+","name":"keyword.operator.increment.ts"},{"match":"[-%*+/]","name":"keyword.operator.arithmetic.ts"},{"begin":"(?<=[]$)_[:alnum:]])\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)+(?:(/=)|(/)(?![*/])))","end":"(/=)|(/)(?!\\\\*([^*]|(\\\\*[^/]))*\\\\*/)","endCaptures":{"1":{"name":"keyword.operator.assignment.compound.ts"},"2":{"name":"keyword.operator.arithmetic.ts"}},"patterns":[{"include":"#comment"}]},{"captures":{"1":{"name":"keyword.operator.assignment.compound.ts"},"2":{"name":"keyword.operator.arithmetic.ts"}},"match":"(?<=[]$)_[:alnum:]])\\\\s*(?:(/=)|(/)(?![*/]))"}]},"expressionPunctuations":{"patterns":[{"include":"#punctuation-comma"},{"include":"#punctuation-accessor"}]},"expressionWithoutIdentifiers":{"patterns":[{"include":"#string"},{"include":"#regex"},{"include":"#comment"},{"include":"#function-expression"},{"include":"#class-expression"},{"include":"#arrow-function"},{"include":"#paren-expression-possibly-arrow"},{"include":"#cast"},{"include":"#ternary-expression"},{"include":"#new-expr"},{"include":"#instanceof-expr"},{"include":"#object-literal"},{"include":"#expression-operators"},{"include":"#function-call"},{"include":"#literal"},{"include":"#support-objects"},{"include":"#paren-expression"}]},"field-declaration":{"begin":"(?<!\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=}]|$))","beginCaptures":{"1":{"name":"storage.modifier.ts"}},"end":"(?=[,;}]|$|^((?!\\\\s*(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(?:(?:(\\\\?)|(!))\\\\s*)?([,:;=]|$))))|(?<=})","name":"meta.field.declaration.ts","patterns":[{"include":"#variable-initializer"},{"include":"#type-annotation"},{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"include":"#comment"},{"captures":{"1":{"name":"meta.definition.property.ts entity.name.function.ts"},"2":{"name":"keyword.operator.optional.ts"},"3":{"name":"keyword.operator.definiteassignment.ts"}},"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\?)|(!))?(?=\\\\s*\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"match":"#?[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.property.ts variable.object.property.ts"},{"match":"\\\\?","name":"keyword.operator.optional.ts"},{"match":"!","name":"keyword.operator.definiteassignment.ts"}]},"for-loop":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*))await)?\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)?(\\\\())","beginCaptures":{"0":{"name":"keyword.control.loop.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#comment"},{"match":"await","name":"keyword.control.loop.ts"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#var-expr"},{"include":"#expression"},{"include":"#punctuation-semicolon"}]}]},"function-body":{"patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"include":"#function-parameters"},{"include":"#return-type"},{"include":"#type-function-return-type"},{"include":"#decl-block"},{"match":"\\\\*","name":"keyword.generator.asterisk.ts"}]},"function-call":{"patterns":[{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","end":"(?<=\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?\\\\())","name":"meta.function-call.ts","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"},{"include":"#paren-expression"}]},{"begin":"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","end":"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\)))(<\\\\s*[(\\\\[{]\\\\s*)$)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*[(\\\\[{]\\\\s*)$)","name":"meta.function-call.ts","patterns":[{"include":"#function-call-target"}]},{"include":"#comment"},{"include":"#function-call-optionals"},{"include":"#type-arguments"}]}]},"function-call-optionals":{"patterns":[{"match":"\\\\?\\\\.","name":"meta.function-call.ts punctuation.accessor.optional.ts"},{"match":"!","name":"meta.function-call.ts keyword.operator.definiteassignment.ts"}]},"function-call-target":{"patterns":[{"include":"#support-function-call-identifiers"},{"match":"(#?[$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.ts"}]},"function-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.async.ts"},"4":{"name":"storage.type.function.ts"},"5":{"name":"keyword.generator.asterisk.ts"},"6":{"name":"meta.definition.function.ts entity.name.function.ts"}},"end":"(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|(?<=})","name":"meta.function.ts","patterns":[{"include":"#function-name"},{"include":"#function-body"}]},"function-expression":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function)\\\\b(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\s*","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"storage.type.function.ts"},"3":{"name":"keyword.generator.asterisk.ts"},"4":{"name":"meta.definition.function.ts entity.name.function.ts"}},"end":"(?=;)|(?<=})","name":"meta.function.expression.ts","patterns":[{"include":"#function-name"},{"include":"#single-line-comment-consuming-line-ending"},{"include":"#function-body"}]},"function-name":{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.function.ts entity.name.function.ts"},"function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.parameters.end.ts"}},"name":"meta.parameters.ts","patterns":[{"include":"#function-parameters-body"}]},"function-parameters-body":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#decorator"},{"include":"#destructuring-parameter"},{"include":"#parameter-name"},{"include":"#parameter-type-annotation"},{"include":"#variable-initializer"},{"match":",","name":"punctuation.separator.parameter.ts"}]},"identifiers":{"patterns":[{"include":"#object-identifiers"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"entity.name.function.ts"}},"match":"(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"variable.other.constant.property.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"variable.other.property.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)"},{"match":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])","name":"variable.other.constant.ts"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"variable.other.readwrite.ts"}]},"if-statement":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))","end":"(?=;|$|})","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.conditional.ts"},"2":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression"}]},{"begin":"(?<=\\\\))\\\\s*/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"keyword.other.ts"}},"name":"string.regexp.ts","patterns":[{"include":"#regexp"}]},{"include":"#statements"}]}]},"import-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.control.import.ts"},"4":{"name":"keyword.control.type.ts"}},"end":"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)","name":"meta.import.ts","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#string"},{"begin":"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\s*[\\"\'])","end":"\\\\bfrom\\\\b","endCaptures":{"0":{"name":"keyword.control.from.ts"}},"patterns":[{"include":"#import-export-declaration"}]},{"include":"#import-export-declaration"}]},"import-equals-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.control.import.ts"},"4":{"name":"keyword.control.type.ts"},"5":{"name":"variable.other.readwrite.alias.ts"},"6":{"name":"keyword.operator.assignment.ts"},"7":{"name":"keyword.control.require.ts"},"8":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.import-equals.external.ts","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"keyword.control.import.ts"},"4":{"name":"keyword.control.type.ts"},"5":{"name":"variable.other.readwrite.alias.ts"},"6":{"name":"keyword.operator.assignment.ts"}},"end":"(?=;|$|^)","name":"meta.import-equals.internal.ts","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.other.readwrite.ts"}]}]},"import-export-assert-clause":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"keyword.control.with.ts"},"2":{"name":"keyword.control.assert.ts"},"3":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"patterns":[{"include":"#comment"},{"include":"#string"},{"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object-literal.key.ts"},{"match":":","name":"punctuation.separator.key-value.ts"}]},"import-export-block":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.block.ts","patterns":[{"include":"#import-export-clause"}]},"import-export-clause":{"patterns":[{"include":"#comment"},{"captures":{"1":{"name":"keyword.control.type.ts"},"2":{"name":"keyword.control.default.ts"},"3":{"name":"constant.language.import-export-all.ts"},"4":{"name":"variable.other.readwrite.ts"},"5":{"name":"string.quoted.alias.ts"},"12":{"name":"keyword.control.as.ts"},"13":{"name":"keyword.control.default.ts"},"14":{"name":"variable.other.readwrite.alias.ts"},"15":{"name":"string.quoted.alias.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(type)\\\\s+)?(?:\\\\b(default)|(\\\\*)|\\\\b([$_[:alpha:]][$_[:alnum:]]*)|((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))\\\\s+(as)\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))"},{"include":"#punctuation-comma"},{"match":"\\\\*","name":"constant.language.import-export-all.ts"},{"match":"\\\\b(default)\\\\b","name":"keyword.control.default.ts"},{"captures":{"1":{"name":"keyword.control.type.ts"},"2":{"name":"variable.other.readwrite.alias.ts"},"3":{"name":"string.quoted.alias.ts"}},"match":"(?:\\\\b(type)\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|((\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)))"}]},"import-export-declaration":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#import-export-block"},{"match":"\\\\bfrom\\\\b","name":"keyword.control.from.ts"},{"include":"#import-export-assert-clause"},{"include":"#import-export-clause"}]},"indexer-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=:)","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"meta.brace.square.ts"},"3":{"name":"variable.parameter.ts"}},"end":"(])\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.ts"},"2":{"name":"keyword.operator.optional.ts"}},"name":"meta.indexer.declaration.ts","patterns":[{"include":"#type-annotation"}]},"indexer-mapped-type-declaration":{"begin":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([-+])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\s+(in)\\\\s+","beginCaptures":{"1":{"name":"keyword.operator.type.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"meta.brace.square.ts"},"4":{"name":"entity.name.type.ts"},"5":{"name":"keyword.operator.expression.in.ts"}},"end":"(])([-+])?\\\\s*(\\\\?\\\\s*)?|$","endCaptures":{"1":{"name":"meta.brace.square.ts"},"2":{"name":"keyword.operator.type.modifier.ts"},"3":{"name":"keyword.operator.optional.ts"}},"name":"meta.indexer.mappedtype.declaration.ts","patterns":[{"captures":{"1":{"name":"keyword.control.as.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+"},{"include":"#type"}]},"inline-tags":{"patterns":[{"captures":{"1":{"name":"punctuation.definition.bracket.square.begin.jsdoc"},"2":{"name":"punctuation.definition.bracket.square.end.jsdoc"}},"match":"(\\\\[)[^]]+(])(?=\\\\{@(?:link|linkcode|linkplain|tutorial))","name":"constant.other.description.jsdoc"},{"begin":"(\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\s*","beginCaptures":{"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"},"2":{"name":"storage.type.class.jsdoc"},"3":{"name":"punctuation.definition.inline.tag.jsdoc"}},"end":"}|(?=\\\\*/)","endCaptures":{"0":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"name":"entity.name.type.instance.jsdoc","patterns":[{"captures":{"1":{"name":"variable.other.link.underline.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?=https?://)(?:[^*|}\\\\s]|\\\\*/)+)(\\\\|)?"},{"captures":{"1":{"name":"variable.other.description.jsdoc"},"2":{"name":"punctuation.separator.pipe.jsdoc"}},"match":"\\\\G((?:[^*@{|}\\\\s]|\\\\*[^/])+)(\\\\|)?"}]}]},"instanceof-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.expression.instanceof.ts"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|([!=]==?)|(([\\\\&^|~]\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","patterns":[{"include":"#type"}]},"interface-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[*/])","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.type.interface.ts"}},"end":"(?<=})","name":"meta.interface.ts","patterns":[{"include":"#comment"},{"include":"#class-or-interface-heritage"},{"captures":{"0":{"name":"entity.name.type.interface.ts"}},"match":"[$_[:alpha:]][$_[:alnum:]]*"},{"include":"#type-parameters"},{"include":"#class-or-interface-body"}]},"jsdoctype":{"patterns":[{"begin":"\\\\G(\\\\{)","beginCaptures":{"0":{"name":"entity.name.type.instance.jsdoc"},"1":{"name":"punctuation.definition.bracket.curly.begin.jsdoc"}},"contentName":"entity.name.type.instance.jsdoc","end":"((}))\\\\s*|(?=\\\\*/)","endCaptures":{"1":{"name":"entity.name.type.instance.jsdoc"},"2":{"name":"punctuation.definition.bracket.curly.end.jsdoc"}},"patterns":[{"include":"#brackets"}]}]},"label":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)","beginCaptures":{"1":{"name":"entity.name.label.ts"},"2":{"name":"punctuation.separator.label.ts"}},"end":"(?<=})","patterns":[{"include":"#decl-block"}]},{"captures":{"1":{"name":"entity.name.label.ts"},"2":{"name":"punctuation.separator.label.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(:)"}]},"literal":{"patterns":[{"include":"#numeric-literal"},{"include":"#boolean-literal"},{"include":"#null-literal"},{"include":"#undefined-literal"},{"include":"#numericConstant-literal"},{"include":"#array-literal"},{"include":"#this-literal"},{"include":"#super-literal"}]},"method-declaration":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.modifier.async.ts"},"5":{"name":"storage.type.ts"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.modifier.async.ts"},"5":{"name":"keyword.operator.new.ts"},"6":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(p(?:ublic|rivate|rotected))\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.modifier.ts"},"4":{"name":"storage.modifier.async.ts"},"5":{"name":"storage.type.property.ts"},"6":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[,;}]|$)|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"}]}]},"method-declaration-name":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??)\\\\s*[(<])","end":"(?=[(<])","patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"meta.definition.method.ts entity.name.function.ts"},{"match":"\\\\?","name":"keyword.operator.optional.ts"}]},"namespace-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[\\"$\'_`[:alpha:]])","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.namespace.ts"}},"end":"(?<=})|(?=;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.namespace.declaration.ts","patterns":[{"include":"#comment"},{"include":"#string"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.type.module.ts"},{"include":"#punctuation-accessor"},{"include":"#decl-block"}]},"new-expr":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.new.ts"}},"end":"(?<=\\\\))|(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\s*\\\\())))","name":"new.expr.ts","patterns":[{"include":"#expression"}]},"null-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.null.ts"},"numeric-literal":{"patterns":[{"captures":{"1":{"name":"storage.type.numeric.bigint.ts"}},"match":"\\\\b(?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.hex.ts"},{"captures":{"1":{"name":"storage.type.numeric.bigint.ts"}},"match":"\\\\b(?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.binary.ts"},{"captures":{"1":{"name":"storage.type.numeric.bigint.ts"}},"match":"\\\\b(?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)","name":"constant.numeric.octal.ts"},{"captures":{"0":{"name":"constant.numeric.decimal.ts"},"1":{"name":"meta.delimiter.decimal.period.ts"},"2":{"name":"storage.type.numeric.bigint.ts"},"3":{"name":"meta.delimiter.decimal.period.ts"},"4":{"name":"storage.type.numeric.bigint.ts"},"5":{"name":"meta.delimiter.decimal.period.ts"},"6":{"name":"storage.type.numeric.bigint.ts"},"7":{"name":"storage.type.numeric.bigint.ts"},"8":{"name":"meta.delimiter.decimal.period.ts"},"9":{"name":"storage.type.numeric.bigint.ts"},"10":{"name":"meta.delimiter.decimal.period.ts"},"11":{"name":"storage.type.numeric.bigint.ts"},"12":{"name":"meta.delimiter.decimal.period.ts"},"13":{"name":"storage.type.numeric.bigint.ts"},"14":{"name":"storage.type.numeric.bigint.ts"}},"match":"(?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)"}]},"numericConstant-literal":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.nan.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.infinity.ts"}]},"object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element"}]},{"include":"#object-binding-pattern"},{"include":"#destructuring-variable-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-const":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#binding-element-const"}]},{"include":"#object-binding-pattern-const"},{"include":"#destructuring-variable-rest-const"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"object-binding-element-propertyName":{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(:)","endCaptures":{"0":{"name":"punctuation.destructuring.ts"}},"patterns":[{"include":"#string"},{"include":"#array-literal"},{"include":"#numeric-literal"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"variable.object.property.ts"}]},"object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"patterns":[{"include":"#object-binding-element"}]},"object-binding-pattern-const":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"patterns":[{"include":"#object-binding-element-const"}]},"object-identifiers":{"patterns":[{"match":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))","name":"support.class.ts"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"variable.other.constant.object.property.ts"},"4":{"name":"variable.other.object.property.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(#?\\\\p{upper}[$_\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"},{"captures":{"1":{"name":"variable.other.constant.object.ts"},"2":{"name":"variable.other.object.ts"}},"match":"(?:(\\\\p{upper}[$_\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\s*\\\\??\\\\.\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)"}]},"object-literal":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.objectliteral.ts","patterns":[{"include":"#object-member"}]},"object-literal-method-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"storage.type.property.ts"},"3":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#method-declaration-name"},{"include":"#function-body"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b([gs]et)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*((\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"storage.type.property.ts"},"3":{"name":"keyword.generator.asterisk.ts"}},"end":"(?=[(<])","patterns":[{"include":"#method-declaration-name"}]}]},"object-member":{"patterns":[{"include":"#comment"},{"include":"#object-literal-method-declaration"},{"begin":"(?=\\\\[)","end":"(?=:)|((?<=])(?=\\\\s*[(<]))","name":"meta.object.member.ts meta.object-literal.key.ts","patterns":[{"include":"#comment"},{"include":"#array-literal"}]},{"begin":"(?=[\\"\'`])","end":"(?=:)|((?<=[\\"\'`])(?=((\\\\s*[(,<}])|(\\\\s+(as|satisifies)\\\\s+))))","name":"meta.object.member.ts meta.object-literal.key.ts","patterns":[{"include":"#comment"},{"include":"#string"}]},{"begin":"(?=\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$)))","end":"(?=:)|(?=\\\\s*([(,<}])|(\\\\s+as|satisifies\\\\s+))","name":"meta.object.member.ts meta.object-literal.key.ts","patterns":[{"include":"#comment"},{"include":"#numeric-literal"}]},{"begin":"(?<=[]\\"\'`])(?=\\\\s*[(<])","end":"(?=[,;}])|(?<=})","name":"meta.method.declaration.ts","patterns":[{"include":"#function-body"}]},{"captures":{"0":{"name":"meta.object-literal.key.ts"},"1":{"name":"constant.numeric.decimal.ts"}},"match":"(?![$_[:alpha:]])(\\\\d+)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.ts"},{"captures":{"0":{"name":"meta.object-literal.key.ts"},"1":{"name":"entity.name.function.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:(\\\\s*/\\\\*([^*]|(\\\\*[^/]))*\\\\*/)*\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))","name":"meta.object.member.ts"},{"captures":{"0":{"name":"meta.object-literal.key.ts"}},"match":"[$_[:alpha:]][$_[:alnum:]]*\\\\s*(?=(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*:)","name":"meta.object.member.ts"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.ts"}},"end":"(?=[,}])","name":"meta.object.member.ts","patterns":[{"include":"#expression"}]},{"captures":{"1":{"name":"variable.other.readwrite.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.ts"},{"captures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))","name":"meta.object.member.ts"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+","beginCaptures":{"1":{"name":"keyword.control.as.ts"},"2":{"name":"keyword.control.satisfies.ts"}},"end":"(?=[-\\\\])+,:;>?}]|\\\\|\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))","name":"meta.object.member.ts","patterns":[{"include":"#type"}]},{"begin":"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\s*=)","end":"(?=[,}]|$|//|/\\\\*)","name":"meta.object.member.ts","patterns":[{"include":"#expression"}]},{"begin":":","beginCaptures":{"0":{"name":"meta.object-literal.key.ts punctuation.separator.key-value.ts"}},"end":"(?=[,}])","name":"meta.object.member.ts","patterns":[{"begin":"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"},"2":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"begin":"(?<=:)\\\\s*(async)?\\\\s*(?=<\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=>)","patterns":[{"include":"#type-parameters"}]},{"begin":"(?<=>)\\\\s*(\\\\()(?=\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]},{"include":"#possibly-arrow-return-type"},{"include":"#expression"}]},{"include":"#punctuation-comma"},{"include":"#decl-block"}]},"parameter-array-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.array.ts"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.array.ts"}},"patterns":[{"include":"#parameter-binding-element"},{"include":"#punctuation-comma"}]},"parameter-binding-element":{"patterns":[{"include":"#comment"},{"include":"#string"},{"include":"#numeric-literal"},{"include":"#regex"},{"include":"#parameter-object-binding-pattern"},{"include":"#parameter-array-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"}]},"parameter-name":{"patterns":[{"captures":{"1":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"entity.name.function.ts variable.language.this.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"variable.parameter.ts variable.language.this.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)"}]},"parameter-object-binding-element":{"patterns":[{"include":"#comment"},{"begin":"(?=(\\\\b((?<!\\\\$)0[Xx]\\\\h[_\\\\h]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Bb][01][01_]*(n)?\\\\b(?!\\\\$))|\\\\b((?<!\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\B(\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B|\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b|\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))(?!\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`)|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])+]))\\\\s*(:))","end":"(?=[,}])","patterns":[{"include":"#object-binding-element-propertyName"},{"include":"#parameter-binding-element"},{"include":"#paren-expression"}]},{"include":"#parameter-object-binding-pattern"},{"include":"#destructuring-parameter-rest"},{"include":"#variable-initializer"},{"include":"#punctuation-comma"}]},"parameter-object-binding-pattern":{"begin":"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)","beginCaptures":{"1":{"name":"keyword.operator.rest.ts"},"2":{"name":"punctuation.definition.binding-pattern.object.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.binding-pattern.object.ts"}},"patterns":[{"include":"#parameter-object-binding-element"}]},"parameter-type-annotation":{"patterns":[{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?=[),])|(?==[^>])","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]}]},"paren-expression":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression"}]},"paren-expression-possibly-arrow":{"patterns":[{"begin":"(?<=[(,=])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"begin":"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)))\\\\s*$)","beginCaptures":{"1":{"name":"storage.modifier.async.ts"}},"end":"(?<=\\\\))","patterns":[{"include":"#paren-expression-possibly-arrow-with-typeparameters"}]},{"include":"#possibly-arrow-return-type"}]},"paren-expression-possibly-arrow-with-typeparameters":{"patterns":[{"include":"#type-parameters"},{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"patterns":[{"include":"#expression-inside-possibly-arrow-parens"}]}]},"possibly-arrow-return-type":{"begin":"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*=>)","beginCaptures":{"1":{"name":"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"}},"contentName":"meta.arrow.ts meta.return.type.arrow.ts","end":"(?==>|\\\\{|^(\\\\s*(export|function|class|interface|let|var|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))","patterns":[{"include":"#arrow-return-type-body"}]},"property-accessor":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.type.property.ts"},"punctuation-accessor":{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"}},"match":"(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d))"},"punctuation-comma":{"match":",","name":"punctuation.separator.comma.ts"},"punctuation-semicolon":{"match":";","name":"punctuation.terminator.statement.ts"},"qstring-double":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\\")|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.double.ts","patterns":[{"include":"#string-character-escape"}]},"qstring-single":{"begin":"\'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(\')|([^\\\\n\\\\\\\\])$","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"invalid.illegal.newline.ts"}},"name":"string.quoted.single.ts","patterns":[{"include":"#string-character-escape"}]},"regex":{"patterns":[{"begin":"(?<!\\\\+\\\\+|--|})(?<=[!(+,:=?\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*/)\\\\s*(/)(?![*/])(?=(?:[^()/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)+]|\\\\(([^)\\\\\\\\]|\\\\\\\\.)+\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.ts"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"keyword.other.ts"}},"name":"string.regexp.ts","patterns":[{"include":"#regexp"}]},{"begin":"((?<![]$)_[:alnum:]]|\\\\+\\\\+|--|}|\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\s*)/(?![*/])(?=(?:[^/\\\\[\\\\\\\\]|\\\\\\\\.|\\\\[([^]\\\\\\\\]|\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\*))(?!\\\\s*[$0-9A-Z_a-z]))","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.ts"}},"end":"(/)([dgimsuvy]*)","endCaptures":{"1":{"name":"punctuation.definition.string.end.ts"},"2":{"name":"keyword.other.ts"}},"name":"string.regexp.ts","patterns":[{"include":"#regexp"}]}]},"regex-character-class":{"patterns":[{"match":"\\\\\\\\[DSWdfnrstvw]|\\\\.","name":"constant.other.character-class.regexp"},{"match":"\\\\\\\\([0-7]{3}|x\\\\h{2}|u\\\\h{4})","name":"constant.character.numeric.regexp"},{"match":"\\\\\\\\c[A-Z]","name":"constant.character.control.regexp"},{"match":"\\\\\\\\.","name":"constant.character.escape.backslash.regexp"}]},"regexp":{"patterns":[{"match":"\\\\\\\\[Bb]|[$^]","name":"keyword.control.anchor.regexp"},{"captures":{"0":{"name":"keyword.other.back-reference.regexp"},"1":{"name":"variable.other.regexp"}},"match":"\\\\\\\\(?:[1-9]\\\\d*|k<([$A-Z_a-z][$\\\\w]*)>)"},{"match":"[*+?]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)}\\\\??","name":"keyword.operator.quantifier.regexp"},{"match":"\\\\|","name":"keyword.operator.or.regexp"},{"begin":"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))","beginCaptures":{"1":{"name":"punctuation.definition.group.regexp"},"2":{"name":"punctuation.definition.group.assertion.regexp"},"3":{"name":"meta.assertion.look-ahead.regexp"},"4":{"name":"meta.assertion.negative-look-ahead.regexp"},"5":{"name":"meta.assertion.look-behind.regexp"},"6":{"name":"meta.assertion.negative-look-behind.regexp"}},"end":"(\\\\))","endCaptures":{"1":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.assertion.regexp","patterns":[{"include":"#regexp"}]},{"begin":"\\\\((?:(\\\\?:)|\\\\?<([$A-Z_a-z][$\\\\w]*)>)?","beginCaptures":{"0":{"name":"punctuation.definition.group.regexp"},"1":{"name":"punctuation.definition.group.no-capture.regexp"},"2":{"name":"variable.other.regexp"}},"end":"\\\\)","endCaptures":{"0":{"name":"punctuation.definition.group.regexp"}},"name":"meta.group.regexp","patterns":[{"include":"#regexp"}]},{"begin":"(\\\\[)(\\\\^)?","beginCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"},"2":{"name":"keyword.operator.negation.regexp"}},"end":"(])","endCaptures":{"1":{"name":"punctuation.definition.character-class.regexp"}},"name":"constant.other.character-class.set.regexp","patterns":[{"captures":{"1":{"name":"constant.character.numeric.regexp"},"2":{"name":"constant.character.control.regexp"},"3":{"name":"constant.character.escape.backslash.regexp"},"4":{"name":"constant.character.numeric.regexp"},"5":{"name":"constant.character.control.regexp"},"6":{"name":"constant.character.escape.backslash.regexp"}},"match":"(?:.|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))-(?:[^]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x\\\\h{2}|u\\\\h{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))","name":"constant.other.character-class.range.regexp"},{"include":"#regex-character-class"}]},{"include":"#regex-character-class"}]},"return-type":{"patterns":[{"begin":"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])(?=$|^|[,;{}]|//)","name":"meta.return.type.ts","patterns":[{"include":"#return-type-core"}]},{"begin":"(?<=\\\\))\\\\s*(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])((?=[,;{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.return.type.ts","patterns":[{"include":"#return-type-core"}]}]},"return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<=[\\\\&:|])(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"shebang":{"captures":{"1":{"name":"punctuation.definition.comment.ts"}},"match":"\\\\A(#!).*(?=$)","name":"comment.line.shebang.ts"},"single-line-comment-consuming-line-ending":{"begin":"(^[\\\\t ]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.ts"},"2":{"name":"comment.line.double-slash.ts"},"3":{"name":"punctuation.definition.comment.ts"},"4":{"name":"storage.type.internaldeclaration.ts"},"5":{"name":"punctuation.decorator.internaldeclaration.ts"}},"contentName":"comment.line.double-slash.ts","end":"(?=^)"},"statements":{"patterns":[{"include":"#declaration"},{"include":"#control-statement"},{"include":"#after-operator-block-as-object-literal"},{"include":"#decl-block"},{"include":"#label"},{"include":"#expression"},{"include":"#punctuation-semicolon"},{"include":"#string"},{"include":"#comment"}]},"string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template"}]},"string-character-escape":{"match":"\\\\\\\\(x\\\\h{2}|u\\\\h{4}|u\\\\{\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)","name":"constant.character.escape.ts"},"super-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)","name":"variable.language.super.ts"},"support-function-call-identifiers":{"patterns":[{"include":"#literal"},{"include":"#support-objects"},{"include":"#object-identifiers"},{"include":"#punctuation-accessor"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\(\\\\s*[\\"\'`])","name":"keyword.operator.expression.import.ts"}]},"support-objects":{"patterns":[{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)","name":"variable.language.arguments.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)","name":"support.class.promise.ts"},{"captures":{"1":{"name":"keyword.control.import.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"},"4":{"name":"support.variable.property.importmeta.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(meta)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"keyword.operator.new.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"},"4":{"name":"support.variable.property.target.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(target)\\\\b(?!\\\\$)"},{"captures":{"1":{"name":"punctuation.accessor.ts"},"2":{"name":"punctuation.accessor.optional.ts"},"3":{"name":"support.variable.property.ts"},"4":{"name":"support.constant.ts"}},"match":"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$))"},{"captures":{"1":{"name":"support.type.object.module.ts"},"2":{"name":"support.type.object.module.ts"},"3":{"name":"punctuation.accessor.ts"},"4":{"name":"punctuation.accessor.optional.ts"},"5":{"name":"support.type.object.module.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)"}]},"switch-statement":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()","end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"switch-statement.expr.ts","patterns":[{"include":"#comment"},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()","beginCaptures":{"1":{"name":"keyword.control.switch.ts"},"2":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"switch-expression.expr.ts","patterns":[{"include":"#expression"}]},{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"(?=})","name":"switch-block.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.control.switch.ts"}},"end":"(?=:)","name":"case-clause.expr.ts","patterns":[{"include":"#expression"}]},{"begin":"(:)\\\\s*(\\\\{)","beginCaptures":{"1":{"name":"case-clause.expr.ts punctuation.definition.section.case-statement.ts"},"2":{"name":"meta.block.ts punctuation.definition.block.ts"}},"contentName":"meta.block.ts","end":"}","endCaptures":{"0":{"name":"meta.block.ts punctuation.definition.block.ts"}},"patterns":[{"include":"#statements"}]},{"captures":{"0":{"name":"case-clause.expr.ts punctuation.definition.section.case-statement.ts"}},"match":"(:)"},{"include":"#statements"}]}]},"template":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#template-substitution-element"},{"include":"#string-character-escape"}]}]},"template-call":{"patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","end":"(?=`)","patterns":[{"begin":"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))","end":"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)?`)","patterns":[{"include":"#support-function-call-identifiers"},{"match":"([$_[:alpha:]][$_[:alnum:]]*)","name":"entity.name.function.tagged-template.ts"}]},{"include":"#type-arguments"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>|<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))(?=\\\\s*([,.<>\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^(<>]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\s*)`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"}},"end":"(?=`)","patterns":[{"include":"#type-arguments"}]}]},"template-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#expression"}]},"template-type":{"patterns":[{"include":"#template-call"},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)?(`)","beginCaptures":{"1":{"name":"entity.name.function.tagged-template.ts"},"2":{"name":"string.template.ts punctuation.definition.string.template.begin.ts"}},"contentName":"string.template.ts","end":"`","endCaptures":{"0":{"name":"string.template.ts punctuation.definition.string.template.end.ts"}},"patterns":[{"include":"#template-type-substitution-element"},{"include":"#string-character-escape"}]}]},"template-type-substitution-element":{"begin":"\\\\$\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.template-expression.begin.ts"}},"contentName":"meta.embedded.line.ts","end":"}","endCaptures":{"0":{"name":"punctuation.definition.template-expression.end.ts"}},"name":"meta.template.expression.ts","patterns":[{"include":"#type"}]},"ternary-expression":{"begin":"(?!\\\\?\\\\.\\\\s*\\\\D)(\\\\?)(?!\\\\?)","beginCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"end":"\\\\s*(:)","endCaptures":{"1":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#expression"}]},"this-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)","name":"variable.language.this.ts"},"type":{"patterns":[{"include":"#comment"},{"include":"#type-string"},{"include":"#numeric-literal"},{"include":"#type-primitive"},{"include":"#type-builtin-literals"},{"include":"#type-parameters"},{"include":"#type-tuple"},{"include":"#type-object"},{"include":"#type-operators"},{"include":"#type-conditional"},{"include":"#type-fn-type-parameters"},{"include":"#type-paren-or-function-parameters"},{"include":"#type-function-return-type"},{"captures":{"1":{"name":"storage.modifier.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*"},{"include":"#type-name"}]},"type-alias-declaration":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.type.ts"},"4":{"name":"entity.name.type.alias.ts"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","name":"meta.type.declaration.ts","patterns":[{"include":"#comment"},{"include":"#type-parameters"},{"begin":"(=)\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"},"2":{"name":"keyword.control.intrinsic.ts"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]},{"begin":"(=)\\\\s*","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=[;}]|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type"}]}]},"type-annotation":{"patterns":[{"begin":"(:)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])(?!\\\\s*[\\\\&|]\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]},{"begin":"(:)","beginCaptures":{"1":{"name":"keyword.operator.type.annotation.ts"}},"end":"(?<![\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\s*(?=\\\\{)))","name":"meta.type.annotation.ts","patterns":[{"include":"#type"}]}]},"type-arguments":{"begin":"<","beginCaptures":{"0":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":">","endCaptures":{"0":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#type-arguments-body"}]},"type-arguments-body":{"patterns":[{"captures":{"0":{"name":"keyword.operator.type.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"include":"#type"},{"include":"#punctuation-comma"}]},"type-builtin-literals":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.builtin.ts"},"type-conditional":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+","beginCaptures":{"1":{"name":"storage.modifier.ts"}},"end":"(?<=:)","patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"keyword.operator.ternary.ts"}},"end":":","endCaptures":{"0":{"name":"keyword.operator.ternary.ts"}},"patterns":[{"include":"#type"}]},{"include":"#type"}]}]},"type-fn-type-parameters":{"patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*<)","beginCaptures":{"1":{"name":"meta.type.constructor.ts storage.modifier.ts"},"2":{"name":"meta.type.constructor.ts keyword.control.new.ts"}},"end":"(?<=>)","patterns":[{"include":"#comment"},{"include":"#type-parameters"}]},{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()","beginCaptures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.control.new.ts"}},"end":"(?<=\\\\))","name":"meta.type.constructor.ts","patterns":[{"include":"#function-parameters"}]},{"begin":"((?=\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>))))))","end":"(?<=\\\\))","name":"meta.type.function.ts","patterns":[{"include":"#function-parameters"}]}]},"type-function-return-type":{"patterns":[{"begin":"(=>)(?=\\\\s*\\\\S)","beginCaptures":{"1":{"name":"storage.type.function.arrow.ts"}},"end":"(?<!=>)(?<![\\\\&|])(?=[]),:;=>?{}]|//|$)","name":"meta.type.function.return.ts","patterns":[{"include":"#type-function-return-type-core"}]},{"begin":"=>","beginCaptures":{"0":{"name":"storage.type.function.arrow.ts"}},"end":"(?<!=>)(?<![\\\\&|])((?=[]),:;=>?{}]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))","name":"meta.type.function.return.ts","patterns":[{"include":"#type-function-return-type-core"}]}]},"type-function-return-type-core":{"patterns":[{"include":"#comment"},{"begin":"(?<==>)(?=\\\\s*\\\\{)","end":"(?<=})","patterns":[{"include":"#type-object"}]},{"include":"#type-predicate-operator"},{"include":"#type"}]},"type-infer":{"patterns":[{"captures":{"1":{"name":"keyword.operator.expression.infer.ts"},"2":{"name":"entity.name.type.ts"},"3":{"name":"keyword.operator.expression.extends.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?","name":"meta.type.infer.ts"}]},"type-name":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))\\\\s*(<)","captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"},"4":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},"contentName":"meta.type.parameters.ts","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},"patterns":[{"include":"#type-arguments-body"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(<)","beginCaptures":{"1":{"name":"entity.name.type.ts"},"2":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"}},"contentName":"meta.type.parameters.ts","end":"(>)","endCaptures":{"1":{"name":"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"}},"patterns":[{"include":"#type-arguments-body"}]},{"captures":{"1":{"name":"entity.name.type.module.ts"},"2":{"name":"punctuation.accessor.ts"},"3":{"name":"punctuation.accessor.optional.ts"}},"match":"([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*\\\\d)))"},{"match":"[$_[:alpha:]][$_[:alnum:]]*","name":"entity.name.type.ts"}]},"type-object":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.block.ts"}},"name":"meta.object.type.ts","patterns":[{"include":"#comment"},{"include":"#method-declaration"},{"include":"#indexer-declaration"},{"include":"#indexer-mapped-type-declaration"},{"include":"#field-declaration"},{"include":"#type-annotation"},{"begin":"\\\\.\\\\.\\\\.","beginCaptures":{"0":{"name":"keyword.operator.spread.ts"}},"end":"(?=[,;}]|$)|(?<=})","patterns":[{"include":"#type"}]},{"include":"#punctuation-comma"},{"include":"#punctuation-semicolon"},{"include":"#type"}]},"type-operators":{"patterns":[{"include":"#typeof-operator"},{"include":"#type-infer"},{"begin":"([\\\\&|])(?=\\\\s*\\\\{)","beginCaptures":{"0":{"name":"keyword.operator.type.ts"}},"end":"(?<=})","patterns":[{"include":"#type-object"}]},{"begin":"[\\\\&|]","beginCaptures":{"0":{"name":"keyword.operator.type.ts"}},"end":"(?=\\\\S)"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.keyof.ts"},{"match":"([:?])","name":"keyword.operator.ternary.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()","name":"keyword.operator.expression.import.ts"}]},"type-parameters":{"begin":"(<)","beginCaptures":{"1":{"name":"punctuation.definition.typeparameters.begin.ts"}},"end":"(>)","endCaptures":{"1":{"name":"punctuation.definition.typeparameters.end.ts"}},"name":"meta.type.parameters.ts","patterns":[{"include":"#comment"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"storage.modifier.ts"},{"include":"#type"},{"include":"#punctuation-comma"},{"match":"(=)(?!>)","name":"keyword.operator.assignment.ts"}]},"type-paren-or-function-parameters":{"begin":"\\\\(","beginCaptures":{"0":{"name":"meta.brace.round.ts"}},"end":"\\\\)","endCaptures":{"0":{"name":"meta.brace.round.ts"}},"name":"meta.type.paren.cover.ts","patterns":[{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"entity.name.function.ts variable.language.this.ts"},"4":{"name":"entity.name.function.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))))"},{"captures":{"1":{"name":"storage.modifier.ts"},"2":{"name":"keyword.operator.rest.ts"},"3":{"name":"variable.parameter.ts variable.language.this.ts"},"4":{"name":"variable.parameter.ts"},"5":{"name":"keyword.operator.optional.ts"}},"match":"(?:(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s*(\\\\??)(?=:)"},{"include":"#type-annotation"},{"match":",","name":"punctuation.separator.parameter.ts"},{"include":"#type"}]},"type-predicate-operator":{"patterns":[{"captures":{"1":{"name":"keyword.operator.type.asserts.ts"},"2":{"name":"variable.parameter.ts variable.language.this.ts"},"3":{"name":"variable.parameter.ts"},"4":{"name":"keyword.operator.expression.is.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"captures":{"1":{"name":"keyword.operator.type.asserts.ts"},"2":{"name":"variable.parameter.ts variable.language.this.ts"},"3":{"name":"variable.parameter.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.type.asserts.ts"},{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"keyword.operator.expression.is.ts"}]},"type-primitive":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"support.type.primitive.ts"},"type-string":{"patterns":[{"include":"#qstring-single"},{"include":"#qstring-double"},{"include":"#template-type"}]},"type-tuple":{"begin":"\\\\[","beginCaptures":{"0":{"name":"meta.brace.square.ts"}},"end":"]","endCaptures":{"0":{"name":"meta.brace.square.ts"}},"name":"meta.type.tuple.ts","patterns":[{"match":"\\\\.\\\\.\\\\.","name":"keyword.operator.rest.ts"},{"captures":{"1":{"name":"entity.name.label.ts"},"2":{"name":"keyword.operator.optional.ts"},"3":{"name":"punctuation.separator.label.ts"}},"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)"},{"include":"#type"},{"include":"#punctuation-comma"}]},"typeof-operator":{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","beginCaptures":{"0":{"name":"keyword.operator.expression.typeof.ts"}},"end":"(?=[]\\\\&),:;=>?{|}]|(extends\\\\s+)|$|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)","patterns":[{"include":"#type-arguments"},{"include":"#expression"}]},"undefined-literal":{"match":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))","name":"constant.language.undefined.ts"},"var-expr":{"patterns":[{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\s*$)))","name":"meta.var.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?=\\\\S)"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.ts"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-variable"},{"include":"#var-single-variable"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\s*$)))","name":"meta.var.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?=\\\\S)"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*(?=$|//)","beginCaptures":{"1":{"name":"punctuation.separator.comma.ts"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#destructuring-const"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]},{"begin":"(?=(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?!(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\s+|[^$._[:alnum:]]await\\\\s+)using)(?=\\\\s*$)))","name":"meta.var.expr.ts","patterns":[{"begin":"(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(export)\\\\s+)?(?:\\\\b(declare)\\\\s+)?\\\\b\\\\b(using(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])|await\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b)\\\\b(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*","beginCaptures":{"1":{"name":"keyword.control.export.ts"},"2":{"name":"storage.modifier.ts"},"3":{"name":"storage.type.ts"}},"end":"(?=\\\\S)"},{"include":"#var-single-const"},{"include":"#variable-initializer"},{"include":"#comment"},{"begin":"(,)\\\\s*((?!\\\\S)|(?=//))","beginCaptures":{"1":{"name":"punctuation.separator.comma.ts"}},"end":"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))","patterns":[{"include":"#single-line-comment-consuming-line-ending"},{"include":"#comment"},{"include":"#var-single-const"},{"include":"#punctuation-comma"}]},{"include":"#punctuation-comma"}]}]},"var-single-const":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.constant.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable":{"patterns":[{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\s*(=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>)))))|(:\\\\s*((<)|(\\\\(\\\\s*((\\\\))|(\\\\.\\\\.\\\\.)|([$_[:alnum:]]+\\\\s*(([,:=?])|(\\\\)\\\\s*=>)))))))|(:\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(:\\\\s*((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))))))|(:\\\\s*(=>|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\s*(((async\\\\s+)?((function\\\\s*[(*<])|(function\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\s*=>)))|((async\\\\s*)?(((<\\\\s*)$|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*((([\\\\[{]\\\\s*)?)$|((\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})\\\\s*((:\\\\s*\\\\{?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*)))|((\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])\\\\s*((:\\\\s*\\\\[?)$|((\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+\\\\s*)?=\\\\s*))))))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*((\\\\)\\\\s*:)|((\\\\.\\\\.\\\\.\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\s*:)))|((<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\s*(((const\\\\s+)?[$_[:alpha:]])|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\s*)?\\\\(\\\\s*(/\\\\*([^*]|(\\\\*[^/]))*\\\\*/\\\\s*)*(([$_[:alpha:]]|(\\\\{([^{}]|(\\\\{([^{}]|\\\\{[^{}]*})*}))*})|(\\\\[([^]\\\\[]|(\\\\[([^]\\\\[]|\\\\[[^]\\\\[]*])*]))*])|(\\\\.\\\\.\\\\.\\\\s*[$_[:alpha:]]))([^\\"\'()`]|(\\\\(([^()]|(\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)))*\\\\))|(\'([^\'\\\\\\\\]|\\\\\\\\.)*\')|(\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\")|(`([^\\\\\\\\`]|\\\\\\\\.)*`))*)?\\\\)(\\\\s*:\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\([^()]+\\\\)|\\\\{[^{}]+})+)?\\\\s*=>))))))","beginCaptures":{"1":{"name":"meta.definition.variable.ts entity.name.function.ts"},"2":{"name":"keyword.operator.definiteassignment.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"(\\\\p{upper}[$_\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.constant.ts"},"2":{"name":"keyword.operator.definiteassignment.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]},{"begin":"([$_[:alpha:]][$_[:alnum:]]*)(!)?","beginCaptures":{"1":{"name":"meta.definition.variable.ts variable.other.readwrite.ts"},"2":{"name":"keyword.operator.definiteassignment.ts"}},"end":"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|^\\\\s*(?:abstract|async|\\\\bawait\\\\s+\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[$_[:alpha:]])\\\\b|var|while)\\\\b))","name":"meta.var-single-variable.expr.ts","patterns":[{"include":"#var-single-variable-type-annotation"}]}]},"var-single-variable-type-annotation":{"patterns":[{"include":"#type-annotation"},{"include":"#string"},{"include":"#comment"}]},"variable-initializer":{"patterns":[{"begin":"(?<![!=])(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))","patterns":[{"include":"#expression"}]},{"begin":"(?<![!=])(=)(?!=)","beginCaptures":{"1":{"name":"keyword.operator.assignment.ts"}},"end":"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![-\\\\&*+/|])(?<=\\\\S)(?<!=)(?=\\\\s*$)","patterns":[{"include":"#expression"}]}]}},"scopeName":"source.ts","aliases":["ts","cts","mts"]}')),N3=[Zz];var Jz=Object.freeze(JSON.parse(`{"displayName":"YAML","fileTypes":["yaml","yml","rviz","reek","clang-format","yaml-tmlanguage","syntax","sublime-syntax"],"firstLineMatch":"^%YAML( ?1.\\\\d+)?","name":"yaml","patterns":[{"include":"#comment"},{"include":"#property"},{"include":"#directive"},{"match":"^---","name":"entity.other.document.begin.yaml"},{"match":"^\\\\.{3}","name":"entity.other.document.end.yaml"},{"include":"#node"}],"repository":{"block-collection":{"patterns":[{"include":"#block-sequence"},{"include":"#block-mapping"}]},"block-mapping":{"patterns":[{"include":"#block-pair"}]},"block-node":{"patterns":[{"include":"#prototype"},{"include":"#block-scalar"},{"include":"#block-collection"},{"include":"#flow-scalar-plain-out"},{"include":"#flow-node"}]},"block-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"1":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=\\\\?)|^ *(:)|(:)","endCaptures":{"1":{"name":"punctuation.separator.key-value.mapping.yaml"},"2":{"name":"invalid.illegal.expected-newline.yaml"}},"name":"meta.block-mapping.yaml","patterns":[{"include":"#block-node"}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S)([^:\\\\s]|:\\\\S|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},{"match":":(?=\\\\s|$)","name":"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{"begin":"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)","beginCaptures":{"1":{"name":"keyword.control.flow.block-scalar.literal.yaml"},"2":{"name":"keyword.control.flow.block-scalar.folded.yaml"},"3":{"name":"constant.numeric.indentation-indicator.yaml"},"4":{"name":"storage.modifier.chomping-indicator.yaml"},"5":{"patterns":[{"include":"#comment"},{"match":".+","name":"invalid.illegal.expected-comment-or-newline.yaml"}]}},"end":"^(?=\\\\S)|(?!\\\\G)","patterns":[{"begin":"^( +)(?! )","end":"^(?!\\\\1|\\\\s*$)","name":"string.unquoted.block.yaml"}]},"block-sequence":{"match":"(-)(?!\\\\S)","name":"punctuation.definition.block.sequence.item.yaml"},"comment":{"begin":"(?:^([\\\\t ]*)|[\\\\t ]+)(?=#\\\\p{print}*$)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.yaml"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.yaml"}},"end":"\\\\n","name":"comment.line.number-sign.yaml"}]},"directive":{"begin":"^%","beginCaptures":{"0":{"name":"punctuation.definition.directive.begin.yaml"}},"end":"(?=$|[\\\\t ]+($|#))","name":"meta.directive.yaml","patterns":[{"captures":{"1":{"name":"keyword.other.directive.yaml.yaml"},"2":{"name":"constant.numeric.yaml-version.yaml"}},"match":"\\\\G(YAML)[\\\\t ]+(\\\\d+\\\\.\\\\d+)"},{"captures":{"1":{"name":"keyword.other.directive.tag.yaml"},"2":{"name":"storage.type.tag-handle.yaml"},"3":{"name":"support.type.tag-prefix.yaml"}},"match":"\\\\G(TAG)(?:[\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\t ]+(!(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])*|(?![]!,\\\\[{}])(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+))?)?"},{"captures":{"1":{"name":"support.other.directive.reserved.yaml"},"2":{"name":"string.unquoted.directive-name.yaml"},"3":{"name":"string.unquoted.directive-parameter.yaml"}},"match":"\\\\G(\\\\w+)(?:[\\\\t ]+(\\\\w+)(?:[\\\\t ]+(\\\\w+))?)?"},{"match":"\\\\S+","name":"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{"captures":{"1":{"name":"keyword.control.flow.alias.yaml"},"2":{"name":"punctuation.definition.alias.yaml"},"3":{"name":"variable.other.alias.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"((\\\\*))([^],/\\\\[{}\\\\s]+)([^],}\\\\s]\\\\S*)?"},"flow-collection":{"patterns":[{"include":"#flow-sequence"},{"include":"#flow-mapping"}]},"flow-mapping":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.mapping.begin.yaml"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.mapping.end.yaml"}},"name":"meta.flow-mapping.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.mapping.yaml"},{"include":"#flow-pair"}]},"flow-node":{"patterns":[{"include":"#prototype"},{"include":"#flow-alias"},{"include":"#flow-collection"},{"include":"#flow-scalar"}]},"flow-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.explicit.yaml","patterns":[{"include":"#prototype"},{"include":"#flow-pair"},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","beginCaptures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","patterns":[{"include":"#flow-value"}]}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s])([^],:\\\\[{}\\\\s]|:[^],\\\\[{}\\\\s]|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"meta.flow-pair.key.yaml","patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","captures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.yaml","patterns":[{"include":"#flow-value"}]}]},"flow-scalar":{"patterns":[{"include":"#flow-scalar-double-quoted"},{"include":"#flow-scalar-single-quoted"},{"include":"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.double.yaml","patterns":[{"match":"\\\\\\\\([ \\"/0LN\\\\\\\\_abefnprtv]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})","name":"constant.character.escape.yaml"},{"match":"\\\\\\\\\\\\n","name":"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{"patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])"}]},"flow-scalar-plain-out":{"patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))"}]},"flow-scalar-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"'(?!')","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.single.yaml","patterns":[{"match":"''","name":"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.sequence.begin.yaml"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.sequence.end.yaml"}},"name":"meta.flow-sequence.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.sequence.yaml"},{"include":"#flow-pair"},{"include":"#flow-node"}]},"flow-value":{"patterns":[{"begin":"\\\\G(?![],}])","end":"(?=[],}])","name":"meta.flow-pair.value.yaml","patterns":[{"include":"#flow-node"}]}]},"node":{"patterns":[{"include":"#block-node"}]},"property":{"begin":"(?=[!\\\\&])","end":"(?!\\\\G)","name":"meta.property.yaml","patterns":[{"captures":{"1":{"name":"keyword.control.property.anchor.yaml"},"2":{"name":"punctuation.definition.anchor.yaml"},"3":{"name":"entity.name.type.anchor.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"\\\\G((&))([^],/\\\\[{}\\\\s]+)(\\\\S+)?"},{"match":"\\\\G!(?:<(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\h{2}|[#$\\\\&-+\\\\--;=?-Z_a-z~])+|)(?=[\\\\t ]|$)","name":"storage.type.tag-handle.yaml"},{"match":"\\\\S+","name":"invalid.illegal.tag-handle.yaml"}]},"prototype":{"patterns":[{"include":"#comment"},{"include":"#property"}]}},"scopeName":"source.yaml","aliases":["yml"]}`)),I3=[Jz];var R3=Object.freeze(JSON.parse('{"colors":{"actionBar.toggledBackground":"#383a49","activityBarBadge.background":"#007ACC","checkbox.border":"#6B6B6B","editor.background":"#1E1E1E","editor.foreground":"#D4D4D4","editor.inactiveSelectionBackground":"#3A3D41","editor.selectionHighlightBackground":"#ADD6FF26","editorIndentGuide.activeBackground1":"#707070","editorIndentGuide.background1":"#404040","input.placeholderForeground":"#A6A6A6","list.activeSelectionIconForeground":"#FFF","list.dropBackground":"#383B3D","menu.background":"#252526","menu.border":"#454545","menu.foreground":"#CCCCCC","menu.selectionBackground":"#0078d4","menu.separatorBackground":"#454545","ports.iconRunningProcessForeground":"#369432","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#ccc3","sideBarTitle.foreground":"#BBBBBB","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#ccc3","tab.selectedBackground":"#222222","tab.selectedForeground":"#ffffffa0","terminal.inactiveSelectionBackground":"#3A3D41","widget.border":"#303031"},"displayName":"Dark Plus","name":"dark-plus","semanticHighlighting":true,"semanticTokenColors":{"customLiteral":"#DCDCAA","newOperator":"#C586C0","numberLiteral":"#b5cea8","stringLiteral":"#ce9178"},"tokenColors":[{"scope":["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],"settings":{"foreground":"#D4D4D4"}},{"scope":"emphasis","settings":{"fontStyle":"italic"}},{"scope":"strong","settings":{"fontStyle":"bold"}},{"scope":"header","settings":{"foreground":"#000080"}},{"scope":"comment","settings":{"foreground":"#6A9955"}},{"scope":"constant.language","settings":{"foreground":"#569cd6"}},{"scope":["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],"settings":{"foreground":"#b5cea8"}},{"scope":"constant.regexp","settings":{"foreground":"#646695"}},{"scope":"entity.name.tag","settings":{"foreground":"#569cd6"}},{"scope":["entity.name.tag.css","entity.name.tag.less"],"settings":{"foreground":"#d7ba7d"}},{"scope":"entity.other.attribute-name","settings":{"foreground":"#9cdcfe"}},{"scope":["entity.other.attribute-name.class.css","source.css entity.other.attribute-name.class","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.parent.less","source.css entity.other.attribute-name.pseudo-class","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.scss"],"settings":{"foreground":"#d7ba7d"}},{"scope":"invalid","settings":{"foreground":"#f44747"}},{"scope":"markup.underline","settings":{"fontStyle":"underline"}},{"scope":"markup.bold","settings":{"fontStyle":"bold","foreground":"#569cd6"}},{"scope":"markup.heading","settings":{"fontStyle":"bold","foreground":"#569cd6"}},{"scope":"markup.italic","settings":{"fontStyle":"italic"}},{"scope":"markup.strikethrough","settings":{"fontStyle":"strikethrough"}},{"scope":"markup.inserted","settings":{"foreground":"#b5cea8"}},{"scope":"markup.deleted","settings":{"foreground":"#ce9178"}},{"scope":"markup.changed","settings":{"foreground":"#569cd6"}},{"scope":"punctuation.definition.quote.begin.markdown","settings":{"foreground":"#6A9955"}},{"scope":"punctuation.definition.list.begin.markdown","settings":{"foreground":"#6796e6"}},{"scope":"markup.inline.raw","settings":{"foreground":"#ce9178"}},{"scope":"punctuation.definition.tag","settings":{"foreground":"#808080"}},{"scope":["meta.preprocessor","entity.name.function.preprocessor"],"settings":{"foreground":"#569cd6"}},{"scope":"meta.preprocessor.string","settings":{"foreground":"#ce9178"}},{"scope":"meta.preprocessor.numeric","settings":{"foreground":"#b5cea8"}},{"scope":"meta.structure.dictionary.key.python","settings":{"foreground":"#9cdcfe"}},{"scope":"meta.diff.header","settings":{"foreground":"#569cd6"}},{"scope":"storage","settings":{"foreground":"#569cd6"}},{"scope":"storage.type","settings":{"foreground":"#569cd6"}},{"scope":["storage.modifier","keyword.operator.noexcept"],"settings":{"foreground":"#569cd6"}},{"scope":["string","meta.embedded.assembly"],"settings":{"foreground":"#ce9178"}},{"scope":"string.tag","settings":{"foreground":"#ce9178"}},{"scope":"string.value","settings":{"foreground":"#ce9178"}},{"scope":"string.regexp","settings":{"foreground":"#d16969"}},{"scope":["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],"settings":{"foreground":"#569cd6"}},{"scope":["meta.template.expression"],"settings":{"foreground":"#d4d4d4"}},{"scope":["support.type.vendored.property-name","support.type.property-name","source.css variable","source.coffee.embedded"],"settings":{"foreground":"#9cdcfe"}},{"scope":"keyword","settings":{"foreground":"#569cd6"}},{"scope":"keyword.control","settings":{"foreground":"#569cd6"}},{"scope":"keyword.operator","settings":{"foreground":"#d4d4d4"}},{"scope":["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.alignof","keyword.operator.typeid","keyword.operator.alignas","keyword.operator.instanceof","keyword.operator.logical.python","keyword.operator.wordlike"],"settings":{"foreground":"#569cd6"}},{"scope":"keyword.other.unit","settings":{"foreground":"#b5cea8"}},{"scope":["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],"settings":{"foreground":"#569cd6"}},{"scope":"support.function.git-rebase","settings":{"foreground":"#9cdcfe"}},{"scope":"constant.sha.git-rebase","settings":{"foreground":"#b5cea8"}},{"scope":["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],"settings":{"foreground":"#d4d4d4"}},{"scope":"variable.language","settings":{"foreground":"#569cd6"}},{"scope":["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],"settings":{"foreground":"#DCDCAA"}},{"scope":["support.class","support.type","entity.name.type","entity.name.namespace","entity.other.attribute","entity.name.scope-resolution","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],"settings":{"foreground":"#4EC9B0"}},{"scope":["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class","punctuation.separator.namespace.ruby"],"settings":{"foreground":"#4EC9B0"}},{"scope":["keyword.control","source.cpp keyword.operator.new","keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],"settings":{"foreground":"#C586C0"}},{"scope":["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],"settings":{"foreground":"#9CDCFE"}},{"scope":["variable.other.constant","variable.other.enummember"],"settings":{"foreground":"#4FC1FF"}},{"scope":["meta.object-literal.key"],"settings":{"foreground":"#9CDCFE"}},{"scope":["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],"settings":{"foreground":"#CE9178"}},{"scope":["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],"settings":{"foreground":"#CE9178"}},{"scope":["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],"settings":{"foreground":"#d16969"}},{"scope":["keyword.operator.or.regexp","keyword.control.anchor.regexp"],"settings":{"foreground":"#DCDCAA"}},{"scope":"keyword.operator.quantifier.regexp","settings":{"foreground":"#d7ba7d"}},{"scope":["constant.character","constant.other.option"],"settings":{"foreground":"#569cd6"}},{"scope":"constant.character.escape","settings":{"foreground":"#d7ba7d"}},{"scope":"entity.name.label","settings":{"foreground":"#C8C8C8"}}],"type":"dark"}'));var z3=Object.freeze(JSON.parse('{"colors":{"actionBar.toggledBackground":"#dddddd","activityBarBadge.background":"#007ACC","checkbox.border":"#919191","diffEditor.unchangedRegionBackground":"#f8f8f8","editor.background":"#FFFFFF","editor.foreground":"#000000","editor.inactiveSelectionBackground":"#E5EBF1","editor.selectionHighlightBackground":"#ADD6FF80","editorIndentGuide.activeBackground1":"#939393","editorIndentGuide.background1":"#D3D3D3","editorSuggestWidget.background":"#F3F3F3","input.placeholderForeground":"#767676","list.activeSelectionIconForeground":"#FFF","list.focusAndSelectionOutline":"#90C2F9","list.hoverBackground":"#E8E8E8","menu.border":"#D4D4D4","notebook.cellBorderColor":"#E8E8E8","notebook.selectedCellBackground":"#c8ddf150","ports.iconRunningProcessForeground":"#369432","searchEditor.textInputBorder":"#CECECE","settings.numberInputBorder":"#CECECE","settings.textInputBorder":"#CECECE","sideBarSectionHeader.background":"#0000","sideBarSectionHeader.border":"#61616130","sideBarTitle.foreground":"#6F6F6F","statusBarItem.errorBackground":"#c72e0f","statusBarItem.remoteBackground":"#16825D","statusBarItem.remoteForeground":"#FFF","tab.lastPinnedBorder":"#61616130","tab.selectedBackground":"#ffffffa5","tab.selectedForeground":"#333333b3","terminal.inactiveSelectionBackground":"#E5EBF1","widget.border":"#d4d4d4"},"displayName":"Light Plus","name":"light-plus","semanticHighlighting":true,"semanticTokenColors":{"customLiteral":"#795E26","newOperator":"#AF00DB","numberLiteral":"#098658","stringLiteral":"#a31515"},"tokenColors":[{"scope":["meta.embedded","source.groovy.embedded","string meta.image.inline.markdown","variable.legacy.builtin.python"],"settings":{"foreground":"#000000ff"}},{"scope":"emphasis","settings":{"fontStyle":"italic"}},{"scope":"strong","settings":{"fontStyle":"bold"}},{"scope":"meta.diff.header","settings":{"foreground":"#000080"}},{"scope":"comment","settings":{"foreground":"#008000"}},{"scope":"constant.language","settings":{"foreground":"#0000ff"}},{"scope":["constant.numeric","variable.other.enummember","keyword.operator.plus.exponent","keyword.operator.minus.exponent"],"settings":{"foreground":"#098658"}},{"scope":"constant.regexp","settings":{"foreground":"#811f3f"}},{"scope":"entity.name.tag","settings":{"foreground":"#800000"}},{"scope":"entity.name.selector","settings":{"foreground":"#800000"}},{"scope":"entity.other.attribute-name","settings":{"foreground":"#e50000"}},{"scope":["entity.other.attribute-name.class.css","source.css entity.other.attribute-name.class","entity.other.attribute-name.id.css","entity.other.attribute-name.parent-selector.css","entity.other.attribute-name.parent.less","source.css entity.other.attribute-name.pseudo-class","entity.other.attribute-name.pseudo-element.css","source.css.less entity.other.attribute-name.id","entity.other.attribute-name.scss"],"settings":{"foreground":"#800000"}},{"scope":"invalid","settings":{"foreground":"#cd3131"}},{"scope":"markup.underline","settings":{"fontStyle":"underline"}},{"scope":"markup.bold","settings":{"fontStyle":"bold","foreground":"#000080"}},{"scope":"markup.heading","settings":{"fontStyle":"bold","foreground":"#800000"}},{"scope":"markup.italic","settings":{"fontStyle":"italic"}},{"scope":"markup.strikethrough","settings":{"fontStyle":"strikethrough"}},{"scope":"markup.inserted","settings":{"foreground":"#098658"}},{"scope":"markup.deleted","settings":{"foreground":"#a31515"}},{"scope":"markup.changed","settings":{"foreground":"#0451a5"}},{"scope":["punctuation.definition.quote.begin.markdown","punctuation.definition.list.begin.markdown"],"settings":{"foreground":"#0451a5"}},{"scope":"markup.inline.raw","settings":{"foreground":"#800000"}},{"scope":"punctuation.definition.tag","settings":{"foreground":"#800000"}},{"scope":["meta.preprocessor","entity.name.function.preprocessor"],"settings":{"foreground":"#0000ff"}},{"scope":"meta.preprocessor.string","settings":{"foreground":"#a31515"}},{"scope":"meta.preprocessor.numeric","settings":{"foreground":"#098658"}},{"scope":"meta.structure.dictionary.key.python","settings":{"foreground":"#0451a5"}},{"scope":"storage","settings":{"foreground":"#0000ff"}},{"scope":"storage.type","settings":{"foreground":"#0000ff"}},{"scope":["storage.modifier","keyword.operator.noexcept"],"settings":{"foreground":"#0000ff"}},{"scope":["string","meta.embedded.assembly"],"settings":{"foreground":"#a31515"}},{"scope":["string.comment.buffered.block.pug","string.quoted.pug","string.interpolated.pug","string.unquoted.plain.in.yaml","string.unquoted.plain.out.yaml","string.unquoted.block.yaml","string.quoted.single.yaml","string.quoted.double.xml","string.quoted.single.xml","string.unquoted.cdata.xml","string.quoted.double.html","string.quoted.single.html","string.unquoted.html","string.quoted.single.handlebars","string.quoted.double.handlebars"],"settings":{"foreground":"#0000ff"}},{"scope":"string.regexp","settings":{"foreground":"#811f3f"}},{"scope":["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","punctuation.section.embedded"],"settings":{"foreground":"#0000ff"}},{"scope":["meta.template.expression"],"settings":{"foreground":"#000000"}},{"scope":["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],"settings":{"foreground":"#0451a5"}},{"scope":["support.type.vendored.property-name","support.type.property-name","source.css variable","source.coffee.embedded"],"settings":{"foreground":"#e50000"}},{"scope":["support.type.property-name.json"],"settings":{"foreground":"#0451a5"}},{"scope":"keyword","settings":{"foreground":"#0000ff"}},{"scope":"keyword.control","settings":{"foreground":"#0000ff"}},{"scope":"keyword.operator","settings":{"foreground":"#000000"}},{"scope":["keyword.operator.new","keyword.operator.expression","keyword.operator.cast","keyword.operator.sizeof","keyword.operator.alignof","keyword.operator.typeid","keyword.operator.alignas","keyword.operator.instanceof","keyword.operator.logical.python","keyword.operator.wordlike"],"settings":{"foreground":"#0000ff"}},{"scope":"keyword.other.unit","settings":{"foreground":"#098658"}},{"scope":["punctuation.section.embedded.begin.php","punctuation.section.embedded.end.php"],"settings":{"foreground":"#800000"}},{"scope":"support.function.git-rebase","settings":{"foreground":"#0451a5"}},{"scope":"constant.sha.git-rebase","settings":{"foreground":"#098658"}},{"scope":["storage.modifier.import.java","variable.language.wildcard.java","storage.modifier.package.java"],"settings":{"foreground":"#000000"}},{"scope":"variable.language","settings":{"foreground":"#0000ff"}},{"scope":["entity.name.function","support.function","support.constant.handlebars","source.powershell variable.other.member","entity.name.operator.custom-literal"],"settings":{"foreground":"#795E26"}},{"scope":["support.class","support.type","entity.name.type","entity.name.namespace","entity.other.attribute","entity.name.scope-resolution","entity.name.class","storage.type.numeric.go","storage.type.byte.go","storage.type.boolean.go","storage.type.string.go","storage.type.uintptr.go","storage.type.error.go","storage.type.rune.go","storage.type.cs","storage.type.generic.cs","storage.type.modifier.cs","storage.type.variable.cs","storage.type.annotation.java","storage.type.generic.java","storage.type.java","storage.type.object.array.java","storage.type.primitive.array.java","storage.type.primitive.java","storage.type.token.java","storage.type.groovy","storage.type.annotation.groovy","storage.type.parameters.groovy","storage.type.generic.groovy","storage.type.object.array.groovy","storage.type.primitive.array.groovy","storage.type.primitive.groovy"],"settings":{"foreground":"#267f99"}},{"scope":["meta.type.cast.expr","meta.type.new.expr","support.constant.math","support.constant.dom","support.constant.json","entity.other.inherited-class","punctuation.separator.namespace.ruby"],"settings":{"foreground":"#267f99"}},{"scope":["keyword.control","source.cpp keyword.operator.new","source.cpp keyword.operator.delete","keyword.other.using","keyword.other.directive.using","keyword.other.operator","entity.name.operator"],"settings":{"foreground":"#AF00DB"}},{"scope":["variable","meta.definition.variable.name","support.variable","entity.name.variable","constant.other.placeholder"],"settings":{"foreground":"#001080"}},{"scope":["variable.other.constant","variable.other.enummember"],"settings":{"foreground":"#0070C1"}},{"scope":["meta.object-literal.key"],"settings":{"foreground":"#001080"}},{"scope":["support.constant.property-value","support.constant.font-name","support.constant.media-type","support.constant.media","constant.other.color.rgb-value","constant.other.rgb-value","support.constant.color"],"settings":{"foreground":"#0451a5"}},{"scope":["punctuation.definition.group.regexp","punctuation.definition.group.assertion.regexp","punctuation.definition.character-class.regexp","punctuation.character.set.begin.regexp","punctuation.character.set.end.regexp","keyword.operator.negation.regexp","support.other.parenthesis.regexp"],"settings":{"foreground":"#d16969"}},{"scope":["constant.character.character-class.regexp","constant.other.character-class.set.regexp","constant.other.character-class.regexp","constant.character.set.regexp"],"settings":{"foreground":"#811f3f"}},{"scope":"keyword.operator.quantifier.regexp","settings":{"foreground":"#000000"}},{"scope":["keyword.operator.or.regexp","keyword.control.anchor.regexp"],"settings":{"foreground":"#EE0000"}},{"scope":["constant.character","constant.other.option"],"settings":{"foreground":"#0000ff"}},{"scope":"constant.character.escape","settings":{"foreground":"#EE0000"}},{"scope":"entity.name.label","settings":{"foreground":"#000000"}}],"type":"light"}'));var O3="light-plus",B3="dark-plus",Yz={bash:"sh",golang:"go",javascript:"js",markdown:"md",plaintext:"text",py:"python",shell:"sh",text:"text",ts:"ts",typescript:"ts",xml:"html",yml:"yaml",zsh:"sh"},Qz=new Set(["css","go","html","js","jsx","json","md","python","sh","sql","text","tsx","ts","yaml"]);function Pl(t){let e=(t||"text").trim().toLowerCase().split(/\s+/)[0]||"text",n=Yz[e]||e;return Qz.has(n)?n:"text"}var yb;async function L3(t,e){let n=Pl(e);try{let r=(await eO()).codeToHtml(t,{lang:n,themes:{light:O3,dark:B3},defaultColor:!1});return tO(r,t)}catch{return D3(t)}}function D3(t){return t.replace(/\r\n/g,` `).replace(/\r/g,` `).split(` -`).map(n=>`<span class="line">${zs(n)}</span>`).join(` -`)}function yz(){return ib||(ib=o$({themes:[d3,p3],langs:[Xp,n3,a3,Zp,r3,i3,ab,s3,rb,o3,l3,c3,u3],engine:nb()})),ib}function xz(t,e){let n=t.match(/<code>([\s\S]*)<\/code>\s*<\/pre>$/);return n?n[1]:g3(e)}var b3=[{name:"text",actions:["bold","italic","underline","strike","highlight"]},{name:"structure",actions:["heading","hr","quote","list","ordered-list","task","task-checked"]},{name:"insert",actions:["link","image","inline-code","code","table"]},{name:"advanced",actions:["math","mermaid","toc","organizeMarkdown","more"]},{name:"help",actions:["switchBackgroundTheme","help"]}],y3=["heading-1","heading-2","heading-3","heading-4","heading-5","heading-6"],x3=["export-html","export-pdf","export-all"];var k3="https://github.com/SivanCola/super-markdown/issues",kz={bold:"bold",italic:"italic",strike:"strikethrough",heading:"text-size","heading-1":"text-size","heading-2":"text-size","heading-3":"text-size","heading-4":"text-size","heading-5":"text-size","heading-6":"text-size",hr:"horizontal-rule",quote:"quote",list:"list-unordered","ordered-list":"list-ordered",task:"tasklist","task-checked":"check-all",link:"link",image:"file-media","inline-code":"code",code:"file-code",table:"table",toc:"list-tree",organizeMarkdown:"tools",switchBackgroundTheme:"color-mode",help:"question",more:"more","export-html":"export","export-pdf":"export","export-all":"export"},wz={underline:Jp('<path d="M7 4v5a5 5 0 0 0 10 0V4"/><path d="M5 20h14"/>'),highlight:Jp('<path d="m5 15 8.8-8.8 2 2L7 17H5v-2Z"/><path d="m12.5 7.5 2 2"/><path d="M4 20h16"/>'),math:Jp('<path d="M17 5H7l5 7-5 7h10"/>'),mermaid:Jp('<path d="M12 4v5"/><path d="M6 15v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"/><rect x="9" y="3" width="6" height="4" rx="1"/><rect x="3" y="11" width="6" height="4" rx="1"/><rect x="15" y="11" width="6" height="4" rx="1"/><path d="M12 9H6v2"/><path d="M12 9h6v2"/>')};function w3(t){let e=wz[t];return e||`<span class="codicon codicon-${kz[t]||"question"}"></span>`}function Jp(t){return`<svg class="toolbar-custom-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false">${t}</svg>`}var _z=acquireVsCodeApi(),td=document.getElementById("payload"),vz=td instanceof HTMLTemplateElement?td.content.textContent:void 0,$z=td&&(vz||td.textContent)||"{}",vr=JSON.parse($z),En=vr.translations||{},_3=En.toolbar||{},Ol={copyLabel:En.copyCode||"Copy code",copiedLabel:En.copiedCode||"Copied"},kr={toneLabel:En.codeTheme||"Block colors",autoLabel:En.codeThemeAuto||"Auto",lightLabel:En.codeThemeLight||"Light",darkLabel:En.codeThemeDark||"Dark"},ia={editLanguage:En.editLanguage||"Edit language",mathEdit:En.mathEdit||"Edit",mathDone:En.mathDone||"Done",rawHtmlEscaped:En.rawHtmlEscaped||"Raw HTML escaped"},cb={katexEnabled:vr.katexEnabled!==!1},_e=$r("source-editor"),An=$r("visual-editor"),Xt=$r("preview"),wr=$r("editor-toolbar-slot"),Cz=$r("side-panel"),N3=$r("side-panel-toggle"),jz=document.getElementById("side-panel-collapse"),Sz=document.getElementById("outline-current"),rd=$r("outline"),I3=$r("outline-search"),we=vr.text||"",pt=gb(vr.mode||"source"),qa=z3(vr.layout||"workbench"),Fa=O3(vr.preview),ql=B3(vr.imageResources),Oe=null,Bl=!1,Nl=null,sb=null,Il=null,v3=Promise.resolve(),ub=!1,nd=!1,Ll="",pb=0,$3=0,db={start:0,end:0},R3=!1,Ci=[],ad="";async function Ez(){try{Tz(),_e.value=we,F3(),_r(we),Rz(),H3(),L3("runtime-ready","ready"),pn("ready")}catch(t){D3(t),pn("error",{message:Hl(t)})}}function $r(t){let e=document.getElementById(t);if(!e)throw new Error(`Missing webview element: ${t}`);return e}function pn(t,e){_z.postMessage(Object.assign({type:t},e||{}))}function Az(t,e){let n;return function(...a){window.clearTimeout(n),n=window.setTimeout(()=>t.apply(this,a),e)}}var Si=Az(function(){ub||(Fa=null,pn("edit",{text:we}))},180);function gb(t){return t==="wysiwyg"||t==="ir"?"wysiwyg":t==="preview"?"preview":t==="split"?"split":"source"}function z3(t){return["workbench","editorOnly","splitEdit","previewOnly"].includes(t)?t:"workbench"}function O3(t){if(!t||typeof t!="object")return null;let e=t;return{markdown:typeof e.markdown=="string"?e.markdown:we,html:typeof e.html=="string"?e.html:"",headings:Array.isArray(e.headings)?e.headings:[]}}function B3(t){return Array.isArray(t)?t.filter(e=>{let n=e;return typeof n.source=="string"&&typeof n.resolved=="string"}).map(e=>({source:e.source,resolved:e.resolved})):[]}function L3(t,e){document.body.dataset.scriptState=t,document.body.dataset.scriptDiag=e,wr.dataset.scriptDiag=e}function D3(t){let e=Hl(t);document.body.dataset.scriptState="error",document.body.dataset.scriptError=e,wr.dataset.scriptError=e}function Hl(t){if(t instanceof Error)return t.name&&t.name!=="Error"?`${t.name}: ${t.message}`:t.message;if(typeof t=="string")return t;if(t&&typeof t=="object"){let e=t,n=[typeof e.name=="string"?e.name:"",typeof e.message=="string"?e.message:"",typeof e.error=="string"?e.error:"",typeof e.stack=="string"?e.stack.split(/\r?\n/)[0]:""].filter(Boolean);if(n.length>0)return Array.from(new Set(n)).join(": ");try{return JSON.stringify(t)}catch{return Object.prototype.toString.call(t)}}return String(t||"Unknown error")}function Ae(t,e){return typeof _3[t]=="string"?_3[t]:e}function Pl(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Pa(t){return Pl(t).replace(/'/g,"'")}function ji(t,e){return(t&&t instanceof Element?t:t?.parentElement)?.closest?.(e)}function Tz(){wr.innerHTML=b3.map(t=>`<div class="toolbar-group toolbar-group-${t.name}">${t.actions.map(Mz).join("")}</div>`).join("")}function Mz(t){return t==="heading"?C3(t,Qp(t),Yp(t),y3,"toolbar-heading-menu"):t==="more"?C3(t,Qp(t),Yp(t),x3,"toolbar-more-menu"):Nz(t,Qp(t),Yp(t))}function Nz(t,e,n){return`<button type="button" class="toolbar-button" data-action="${t}" title="${Pa(e)}" aria-label="${Pa(e)}"><span class="toolbar-icon" aria-hidden="true">${n}</span></button>`}function C3(t,e,n,a,r){return`<div class="toolbar-menu-wrapper ${r}"> - <button type="button" class="toolbar-button toolbar-menu-toggle" data-menu-toggle="${t}" title="${Pa(e)}" aria-label="${Pa(e)}" aria-expanded="false"> +`).map(n=>`<span class="line">${Hs(n)}</span>`).join(` +`)}function eO(){return yb||(yb=T$({themes:[z3,R3],langs:[rd,C3,j3,id,S3,E3,gb,A3,bb,T3,M3,N3,I3],engine:fb()})),yb}function tO(t,e){let n=t.match(/<code>([\s\S]*)<\/code>\s*<\/pre>$/);return n?n[1]:D3(e)}var F3=[{name:"text",actions:["bold","italic","underline","strike","highlight"]},{name:"structure",actions:["heading","hr","quote","list","ordered-list","task","task-checked"]},{name:"insert",actions:["link","image","inline-code","code","table"]},{name:"advanced",actions:["math","mermaid","toc","organizeMarkdown","more"]},{name:"help",actions:["switchBackgroundTheme","switchDisplayLanguage","help"]}],P3=["heading-1","heading-2","heading-3","heading-4","heading-5","heading-6"],q3=["export-html","export-pdf","export-all"];var G3="https://github.com/SivanCola/super-markdown/issues",nO={bold:"bold",italic:"italic",strike:"strikethrough",heading:"text-size","heading-1":"text-size","heading-2":"text-size","heading-3":"text-size","heading-4":"text-size","heading-5":"text-size","heading-6":"text-size",hr:"horizontal-rule",quote:"quote",list:"list-unordered","ordered-list":"list-ordered",task:"tasklist","task-checked":"check-all",link:"link",image:"file-media","inline-code":"code",code:"file-code",table:"table",toc:"list-tree",organizeMarkdown:"tools",switchBackgroundTheme:"color-mode",switchDisplayLanguage:"globe",help:"question",more:"more","export-html":"export","export-pdf":"export","export-all":"export"},aO={underline:sd('<path d="M7 4v5a5 5 0 0 0 10 0V4"/><path d="M5 20h14"/>'),highlight:sd('<path d="m5 15 8.8-8.8 2 2L7 17H5v-2Z"/><path d="m12.5 7.5 2 2"/><path d="M4 20h16"/>'),math:sd('<path d="M17 5H7l5 7-5 7h10"/>'),mermaid:sd('<path d="M12 4v5"/><path d="M6 15v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2"/><rect x="9" y="3" width="6" height="4" rx="1"/><rect x="3" y="11" width="6" height="4" rx="1"/><rect x="15" y="11" width="6" height="4" rx="1"/><path d="M12 9H6v2"/><path d="M12 9h6v2"/>')};function H3(t){let e=aO[t];return e||`<span class="codicon codicon-${nO[t]||"question"}"></span>`}function sd(t){return`<svg class="toolbar-custom-icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false">${t}</svg>`}var Rb=acquireVsCodeApi(),pd=document.getElementById("payload"),rO=pd instanceof HTMLTemplateElement?pd.content.textContent:void 0,iO=pd&&(rO||pd.textContent)||"{}",Ar=JSON.parse(iO),hn=Ar.translations||{},V3=hn.toolbar||{},Ni={copyLabel:hn.copyCode||"Copy code",copiedLabel:hn.copiedCode||"Copied"},vr={toneLabel:hn.codeTheme||"Block colors",autoLabel:hn.codeThemeAuto||"Auto",lightLabel:hn.codeThemeLight||"Light",darkLabel:hn.codeThemeDark||"Dark"},qn={editLanguage:hn.editLanguage||"Edit language",mathEdit:hn.mathEdit||"Edit",mathDone:hn.mathDone||"Done",rawHtmlEscaped:hn.rawHtmlEscaped||"Raw HTML escaped",footnote:hn.footnote||"Footnote"},vb={katexEnabled:Ar.katexEnabled!==!1},he=Tr("source-editor"),Wt=Tr("visual-editor"),Qt=Tr("preview"),jr=Tr("editor-toolbar-slot"),sO=Tr("side-panel"),s5=Tr("side-panel-toggle"),oO=document.getElementById("side-panel-collapse"),lO=document.getElementById("outline-current"),hd=Tr("outline"),o5=Tr("outline-search"),W3=document.querySelector(".editor-panel"),U3=document.querySelector(".preview-panel"),$t=document.getElementById("split-resizer"),cO=u5(),zb=.5,K3=.03,uO=240,ke=Ar.text||"",tt=Ob(Ar.mode||"source"),ua=c5(Ar.layout||"workbench"),$r=fO(cO.splitRatio),Ha=p5(Ar.preview),Jl=d5(Ar.imageResources),ze=null,Wl=!1,ql=null,xb=null,Gl=null,X3=Promise.resolve(),$b=!1,dd=!1,Ul="",Cb=0,Z3=0,jb={start:0,end:0},l5=!1,zi=[],md="",Sb,Pn=null,Eb=null,Kl=null,pO=["[data-hover-tooltip]",".toolbar-button",".toolbar-menu-button",".side-panel-toggle",".outline-tool",".outline-item",".visual-math-inline",".visual-footnote-reference",".visual-html-source",".mermaid-render-error",`.${Qe.language}`,`.${Qe.toneButton}`,`.${Qe.copyButton}`].join(","),Ab=new Map;async function dO(){try{gO(),he.value=ke,w5(),Er(ke),wO(),fd(!1),$5(),m5("runtime-ready","ready"),ft("ready")}catch(t){h5(t),ft("error",{message:Va(t)})}}function Tr(t){let e=document.getElementById(t);if(!e)throw new Error(`Missing webview element: ${t}`);return e}function ft(t,e){Rb.postMessage(Object.assign({type:t},e||{}))}function mO(t,e){let n;return function(...a){window.clearTimeout(n),n=window.setTimeout(()=>t.apply(this,a),e)}}var Mr=mO(function(){$b||(Ha=null,ft("edit",{text:ke}))},180);function Ob(t){return t==="wysiwyg"||t==="ir"?"wysiwyg":t==="preview"?"preview":t==="split"?"split":"source"}function c5(t){return["workbench","editorOnly","splitEdit","previewOnly"].includes(t)?t:"workbench"}function u5(){let t=Rb.getState();return t&&typeof t=="object"?t:{}}function hO(t){Rb.setState({...u5(),...t})}function fO(t){return typeof t=="number"&&Number.isFinite(t)?Tb(t,.2,.8):zb}function Tb(t,e,n){return Math.min(Math.max(t,e),n)}function p5(t){if(!t||typeof t!="object")return null;let e=t;return{markdown:typeof e.markdown=="string"?e.markdown:ke,html:typeof e.html=="string"?e.html:"",headings:Array.isArray(e.headings)?e.headings:[]}}function d5(t){return Array.isArray(t)?t.filter(e=>{let n=e;return typeof n.source=="string"&&typeof n.resolved=="string"}).map(e=>({source:e.source,resolved:e.resolved})):[]}function m5(t,e){document.body.dataset.scriptState=t,document.body.dataset.scriptDiag=e,jr.dataset.scriptDiag=e}function h5(t){let e=Va(t);document.body.dataset.scriptState="error",document.body.dataset.scriptError=e,jr.dataset.scriptError=e}function Va(t){if(t instanceof Error)return t.name&&t.name!=="Error"?`${t.name}: ${t.message}`:t.message;if(typeof t=="string")return t;if(t&&typeof t=="object"){let e=t,n=[typeof e.name=="string"?e.name:"",typeof e.message=="string"?e.message:"",typeof e.error=="string"?e.error:"",typeof e.stack=="string"?e.stack.split(/\r?\n/)[0]:""].filter(Boolean);if(n.length>0)return Array.from(new Set(n)).join(": ");try{return JSON.stringify(t)}catch{return Object.prototype.toString.call(t)}}return String(t||"Unknown error")}function Ee(t,e){return typeof V3[t]=="string"?V3[t]:e}function Yl(t){return String(t).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function la(t){return Yl(t).replace(/'/g,"'")}function Sr(t,e){return(t&&t instanceof Element?t:t?.parentElement)?.closest?.(e)}function gO(){jr.innerHTML=F3.map(t=>`<div class="toolbar-group toolbar-group-${t.name}">${t.actions.map(bO).join("")}</div>`).join("")}function bO(t){return t==="heading"?J3(t,cd(t),ld(t),P3,"toolbar-heading-menu"):t==="more"?J3(t,cd(t),ld(t),q3,"toolbar-more-menu"):yO(t,cd(t),ld(t))}function yO(t,e,n){return`<button type="button" class="toolbar-button" data-action="${t}" data-hover-tooltip="${la(e)}" aria-label="${la(e)}"><span class="toolbar-icon" aria-hidden="true">${n}</span></button>`}function J3(t,e,n,a,r){return`<div class="toolbar-menu-wrapper ${r}"> + <button type="button" class="toolbar-button toolbar-menu-toggle" data-menu-toggle="${t}" data-hover-tooltip="${la(e)}" aria-label="${la(e)}" aria-expanded="false"> <span class="toolbar-icon" aria-hidden="true">${n}</span> <span class="toolbar-caret codicon codicon-arrow-small-down" aria-hidden="true"></span> </button> <div class="toolbar-menu" data-menu="${t}" hidden> - ${a.map(Iz).join("")} + ${a.map(xO).join("")} </div> - </div>`}function Iz(t){let e=Qp(t);return`<button type="button" class="toolbar-menu-button" data-action="${t}" title="${Pa(e)}" aria-label="${Pa(e)}"> - <span class="toolbar-menu-icon" aria-hidden="true">${Yp(t)}</span> - <span class="toolbar-menu-label">${Pl(e)}</span> - </button>`}function Yp(t){return w3(t)}function Qp(t){let e=t.match(/^heading-([1-6])$/);return e?`${Ae("heading","Heading")} ${e[1]}`:{bold:Ae("bold","Bold"),italic:Ae("italic","Italic"),underline:Ae("underline","Underline"),highlight:Ae("highlight","Highlight"),strike:Ae("strike","Strike"),heading:Ae("heading","Heading"),hr:Ae("hr","Rule"),quote:Ae("quote","Quote"),list:Ae("list","List"),"ordered-list":Ae("orderedList","Ordered list"),task:Ae("task","Task"),"task-checked":Ae("taskChecked","Checked task"),link:Ae("link","Link"),image:Ae("image","Image"),"inline-code":Ae("inlineCode","Inline code"),code:Ae("code","Code block"),table:Ae("table","Table"),math:Ae("math","Math"),mermaid:Ae("mermaid","Mermaid"),toc:Ae("toc","Table of contents"),more:Ae("more","More"),organizeMarkdown:Ae("organizeMarkdown","Organize Markdown"),switchBackgroundTheme:Ae("switchBackgroundTheme","Switch Reading Theme"),help:Ae("help","Help"),"export-html":`${Ae("export","Export")} HTML`,"export-pdf":`${Ae("export","Export")} PDF`,"export-all":`${Ae("export","Export")} ${Ae("all","All")}`}[t]||t}function Rz(){_e.addEventListener("input",()=>{Gl(),we=_e.value,_r(we),Hs(we),Si()});for(let t of["focus","select","click","keyup","mouseup"])_e.addEventListener(t,Gl);wr.addEventListener("mousedown",t=>{ji(t.target,".toolbar-button, .toolbar-menu-button")&&t.preventDefault()}),wr.addEventListener("click",t=>{let e=ji(t.target,"[data-menu-toggle]");if(e){t.preventDefault(),yO(e.dataset.menuToggle||"");return}let n=ji(t.target,"[data-action]");n&&(t.preventDefault(),ed(),uO(n.dataset.action||""))}),Xt.addEventListener("click",M3),An.addEventListener("click",M3),N3.addEventListener("click",jO),jz?.addEventListener("click",()=>X3(!1)),Sz?.addEventListener("click",$O),I3.addEventListener("input",()=>_r(we)),rd.addEventListener("click",vO),document.addEventListener("click",t=>{wr.contains(t.target)||ed()}),document.addEventListener("keydown",t=>{t.key==="Escape"&&ed()}),window.addEventListener("message",zz)}function zz(t){let e=t.data||{};e.type==="setMarkdown"&&typeof e.text=="string"?(ub=!0,Oz(e.text,e.preview,e.imageResources),ub=!1):e.type==="setEditorState"?(typeof e.layout=="string"&&(qa=z3(e.layout)),typeof e.mode=="string"&&(pt=gb(e.mode)),H3()):e.type==="uploadImagesResult"&&(Array.isArray(e.images)?$i(e.images.map(n=>n.markdown).filter(Boolean).join(` -`)):e.error!==void 0&&($i("![alt](image.png)"),pn("error",{message:Hl(e.error)})))}function Oz(t,e,n){we=t,Fa=O3(e),ql=B3(n),_e.value!==t&&(_e.value=t),F3(),_r(t),Hs(t),id()}function F3(){Fa&&Fa.markdown===we&&Fa.html?Xt.innerHTML=`<article class="markdown-body">${Fa.html}</article>`:Xt.innerHTML=`<article class="markdown-body"><pre class="static-preview-source">${Pl(we)}</pre></article>`,oO(),Z3()}function id(){ql.length&&(window.requestAnimationFrame(ob),window.setTimeout(ob,50),window.setTimeout(ob,250))}function ob(){if(!ql.length)return;let t=new Map;for(let e of ql)for(let n of q3(e.source))t.set(n,e.resolved);An.querySelectorAll("img").forEach(e=>{let n=e.getAttribute("src")||"",a=Bz(n,t);a&&e.src!==a&&(e.dataset.superMarkdownSource=n,e.setAttribute("src",a),e.src=a)})}function Bz(t,e){let n=q3(t);for(let a of n){let r=e.get(a);if(r)return r}}function q3(t){let e=Fz(String(t||"").trim()),n=Lz(e),a=Dz(e),r=encodeURI(n),i=n.replace(/^\.\//,"");return Array.from(new Set([t,e,n,a,r,`./${n}`,`./${a}`,`./${r}`,i,a.replace(/^\.\//,""),encodeURI(i)].filter(Boolean)))}function Lz(t){try{return decodeURI(t)}catch{return t}}function Dz(t){try{return decodeURIComponent(t)}catch{return t}}function Fz(t){return t.split("#")[0].split("?")[0]}function qz(){sb||(sb=new MutationObserver(t=>{if(!ql.length)return;t.some(n=>n.type==="attributes"?n.target instanceof HTMLImageElement&&n.attributeName==="src":Array.from(n.addedNodes).some(a=>a instanceof HTMLImageElement?!0:a instanceof Element&&!!a.querySelector("img")))&&id()}),sb.observe(An,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src"]}))}function Pz(){let t=document.createElement("button");return t.type="button",t.className=wt.copyButton,t.dataset.copyLabel=Ol.copyLabel,t.dataset.copiedLabel=Ol.copiedLabel,t.textContent=Ol.copyLabel,t}function Gz(t){let e=dp(t),n=document.createElement("button");return n.type="button",n.className=wt.toneButton,n.dataset.blockTone=e,n.dataset.toneLabel=kr.toneLabel,n.dataset.toneAutoLabel=kr.autoLabel,n.dataset.toneLightLabel=kr.lightLabel,n.dataset.toneDarkLabel=kr.darkLabel,n.textContent=mp(e,kr),o5(n,e),n}function Hz(t,e,n){let a=t,r=0,i=0,s=document.createElement("figure");s.className=`${wt.block} visual-code-node-view`,s.dataset.renderBlockTone="auto";let o=document.createElement("figcaption");o.contentEditable="false";let l=document.createElement("span");l.className="visual-code-language-field",l.contentEditable="false";let c=document.createElement("button");c.type="button",c.className=`${wt.language} visual-code-language-button`,c.title=ia.editLanguage,c.setAttribute("aria-label",ia.editLanguage);let u=document.createElement("input");u.className="visual-code-language-input",u.hidden=!0,u.spellcheck=!1,u.setAttribute("aria-label",ia.editLanguage),l.append(c,u);let p=document.createElement("span");p.className=wt.actionGroup,p.contentEditable="false";let d=Pz(),m=Gz(s.dataset.renderBlockTone);S3(d,l5),S3(m,s5),p.append(d,m);let h=document.createElement("pre");h.className="visual-code-editor";let b=document.createElement("code");b.spellcheck=!1,h.append(b);let y=document.createElement("pre");y.className="visual-code-highlight",y.setAttribute("aria-hidden","true"),y.contentEditable="false";let k=document.createElement("code");y.append(k);let _=document.createElement("div");_.className="visual-code-frame",_.append(y,h);let $=document.createElement("div");$.className="visual-mermaid-preview",$.contentEditable="false",$.tabIndex=0;let M=document.createElement("pre");M.className="mermaid",M.contentEditable="false",$.append(M),o.append(l,p),s.append(o,$,_);let N=T=>{let ce=zl(T),Y=Rl(T),K=Y?"mermaid":Ml(ce),J=ce||K;c.textContent=J,u.value=ce||K,h.dataset.language=K,s.classList.toggle("visual-mermaid-node-view",Y),s.classList.toggle(wt.diagramBlock,Y),b.className=`language-${j3(K)}`,k.className=`shiki shiki-themes light-plus dark-plus language-${j3(K)}`},E=()=>{if(Rl(a)){r+=1,k.textContent="",s.classList.remove("is-highlight-ready");return}let T=++r,ce=a.textContent,Y=Ml(zl(a));f3(ce,Y).then(K=>{T===r&&(k.innerHTML=K||'<span class="line"></span>',s.classList.add("is-highlight-ready"))})},I=()=>{let T=++i;if(!Rl(a)){M.textContent="";return}hb(M,a.textContent),mb(M).then(()=>{T!==i&&(hb(M,a.textContent),mb(M))})},F=()=>{Rl(a)&&s.classList.add("is-editing")},L=T=>{u.hidden=!0,c.hidden=!1,T?(bb(e,n,{language:u.value.trim()||"text"}),xb()):u.value=zl(a),c.focus()};return c.addEventListener("pointerdown",sa),c.addEventListener("mousedown",sa),c.addEventListener("click",T=>{T.preventDefault(),T.stopPropagation(),c.hidden=!0,u.hidden=!1,u.value=zl(a),u.focus(),u.select()}),u.addEventListener("pointerdown",sa),u.addEventListener("mousedown",sa),u.addEventListener("keydown",T=>{T.key==="Enter"?(T.preventDefault(),L(!0)):T.key==="Escape"&&(T.preventDefault(),L(!1))}),u.addEventListener("blur",()=>{u.hidden||L(!0)}),$.addEventListener("dblclick",T=>{T.preventDefault(),T.stopPropagation(),F()}),$.addEventListener("keydown",T=>{T.key==="Enter"&&(T.preventDefault(),F())}),_.addEventListener("keydown",T=>{T.key==="Escape"&&Rl(a)&&(s.classList.remove("is-editing"),$.focus())}),N(a),E(),I(),{dom:s,contentDOM:b,update(T){return T.type!==a.type?!1:(a=T,N(T),E(),I(),!0)},stopEvent(T){return!!(ji(T.target,`.${wt.actionGroup}`)||l.contains(T.target)||$.contains(T.target))},ignoreMutation(T){return T.target instanceof Node&&(T.target===s||o.contains(T.target)||$.contains(T.target)||y.contains(T.target))}}}function Rl(t){return zl(t).toLowerCase()==="mermaid"}function zl(t){return String(t.attrs.language||t.attrs.lang||"").trim().split(/\s+/)[0]||""}function j3(t){return t.replace(/[^\w+-]/g,"-")}function S3(t,e){t.addEventListener("pointerdown",sa),t.addEventListener("mousedown",sa),t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),e(t)})}function sa(t){t.stopPropagation()}var Vz=vn("superMarkdownMath",()=>Fu),Wz=vn("superMarkdownSafeInlineHtml",()=>()=>t=>{P3(t)}),Uz=ze("math_inline",()=>({group:"inline",inline:!0,atom:!0,attrs:{value:{default:"",validate:"string"}},parseDOM:[{tag:'span[data-type="math_inline"]',getAttrs:t=>({value:t.dataset.value||t.textContent||""})}],toDOM:t=>["span",{"data-type":"math_inline","data-value":t.attrs.value},t.attrs.value],parseMarkdown:{match:t=>t.type==="inlineMath",runner:(t,e,n)=>{t.addNode(n,{value:String(e.value||"")})}},toMarkdown:{match:t=>t.type.name==="math_inline",runner:(t,e)=>{t.addNode("inlineMath",void 0,String(e.attrs.value||""))}}})),Kz=ze("math_block",()=>({group:"block",atom:!0,attrs:{value:{default:"",validate:"string"}},parseDOM:[{tag:'figure[data-type="math_block"]',getAttrs:t=>({value:t.dataset.value||t.textContent||""})}],toDOM:t=>["figure",{"data-type":"math_block","data-value":t.attrs.value},t.attrs.value],parseMarkdown:{match:t=>t.type==="math",runner:(t,e,n)=>{t.addNode(n,{value:String(e.value||"")})}},toMarkdown:{match:t=>t.type.name==="math_block",runner:(t,e)=>{t.addNode("math",void 0,String(e.attrs.value||""))}}})),Xz=ze("safe_html_inline",()=>({group:"inline",inline:!0,content:"inline*",attrs:{tag:{default:"kbd",validate:"string"}},parseDOM:["u","mark","kbd"].map(t=>({tag:t,getAttrs:()=>({tag:t})})),toDOM:t=>{let e=Dl(t.attrs.tag);return[e,{"data-type":"safe_html_inline","data-tag":e},0]},parseMarkdown:{match:t=>t.type==="safeHtmlInline",runner:(t,e,n)=>{t.openNode(n,{tag:Dl(e.tag)}).next(e.children).closeNode()}},toMarkdown:{match:t=>t.type.name==="safe_html_inline",runner:(t,e)=>{let n=Dl(e.attrs.tag);t.addNode("html",void 0,`<${n}>`),t.next(e.content),t.addNode("html",void 0,`</${n}>`)}}}));function P3(t){Array.isArray(t.children)&&(t.children=Zz(t.children),t.children.forEach(P3))}function Zz(t){let e=[];for(let n=0;n<t.length;n+=1){let a=t[n],r=Jz(a);if(!r){e.push(a);continue}let i=Yz(t,n+1,r);if(i<0){e.push(a);continue}e.push({type:"safeHtmlInline",tag:r,children:t.slice(n+1,i)}),n=i}return e}function Jz(t){if(t.type!=="html"||typeof t.value!="string")return null;let e=t.value.trim().match(/^<([a-z][a-z0-9-]*)>$/i);if(!e)return null;let n=e[1].toLowerCase();return sg(n)?n:null}function Yz(t,e,n){let a=0,r=new RegExp(`^<${n}>$`,"i"),i=new RegExp(`^</${n}>$`,"i");for(let s=e;s<t.length;s+=1){let o=t[s];if(o.type!=="html"||typeof o.value!="string")continue;let l=o.value.trim();if(r.test(l))a+=1;else if(i.test(l)){if(a===0)return s;a-=1}}return-1}function Dl(t){let e=String(t||"").toLowerCase();return sg(e)?e:"kbd"}function Qz(t,e,n){let a=t,r=document.createElement("span");r.className="visual-math-inline-node",r.contentEditable="false",r.tabIndex=0;let i=document.createElement("span");i.className="visual-math-inline-preview";let s=document.createElement("input");s.className="visual-math-inline-input",s.hidden=!0,s.spellcheck=!1,s.setAttribute("aria-label",ia.mathEdit),r.append(i,s);let o=p=>{r.classList.toggle("is-editing",p),i.hidden=p,s.hidden=!p,p&&(s.value=Gs(a,"value"),window.setTimeout(()=>{s.focus(),s.select()},0))},l=()=>{let p=s.value;o(!1),bb(e,n,{value:p}),xb(),r.focus()};r.addEventListener("dblclick",p=>{p.preventDefault(),p.stopPropagation(),o(!0)}),r.addEventListener("keydown",p=>{p.key==="Enter"&&(p.preventDefault(),o(!0))});let c=p=>{s.hidden||(p.key==="Enter"?(p.preventDefault(),p.stopPropagation(),l()):p.key==="Escape"&&(p.preventDefault(),p.stopPropagation(),o(!1),r.focus()))};s.addEventListener("keydown",c),s.addEventListener("keyup",c),s.addEventListener("blur",()=>{s.hidden||l()});let u=p=>{a=p;let d=Gs(p,"value");r.dataset.value=d,r.title=d,i.innerHTML=hp(d,!1,cb),r.classList.contains("is-editing")||(s.value=d)};return u(a),{dom:r,update(p){return p.type!==a.type?!1:(u(p),!0)},stopEvent(){return!0},ignoreMutation(){return!0}}}function eO(t,e,n){let a=t,r,i=document.createElement("figure");i.className="visual-math-node-view",i.contentEditable="false",i.tabIndex=0;let s=document.createElement("div");s.className="visual-math-preview";let o=document.createElement("div");o.className="visual-math-controls",o.contentEditable="false";let l=document.createElement("button");l.type="button",l.className="visual-math-edit",l.textContent=ia.mathEdit,l.setAttribute("aria-label",ia.mathEdit);let c=document.createElement("button");c.type="button",c.className="visual-math-done",c.textContent=ia.mathDone,c.setAttribute("aria-label",ia.mathDone),o.append(l,c);let u=document.createElement("textarea");u.className="visual-math-source",u.spellcheck=!1,u.rows=3,u.addEventListener("input",()=>{window.clearTimeout(r),r=window.setTimeout(()=>{bb(e,n,{value:u.value})},160),s.innerHTML=hp(u.value,!0,cb)});let p=b=>{i.classList.toggle("is-editing",b),u.hidden=!b,l.hidden=b,c.hidden=!b,b&&window.setTimeout(()=>u.focus(),0)},d=b=>{b.preventDefault(),b.stopPropagation(),p(!0)},m=b=>{b.preventDefault(),b.stopPropagation(),p(!1),i.focus()};s.addEventListener("dblclick",d),i.addEventListener("keydown",b=>{b.key==="Enter"&&!i.classList.contains("is-editing")?(b.preventDefault(),p(!0)):b.key==="Escape"&&i.classList.contains("is-editing")&&(b.preventDefault(),p(!1),i.focus())}),u.addEventListener("keydown",b=>{b.key==="Escape"&&(b.preventDefault(),p(!1),i.focus())}),l.addEventListener("pointerdown",sa),l.addEventListener("mousedown",sa),l.addEventListener("click",d),c.addEventListener("pointerdown",sa),c.addEventListener("mousedown",sa),c.addEventListener("click",m),i.append(o,s,u),p(!1);let h=b=>{a=b;let y=Gs(b,"value");i.dataset.value=y,u.value!==y&&(u.value=y),s.innerHTML=hp(y,!0,cb)};return h(a),{dom:i,update(b){return b.type!==a.type?!1:(h(b),!0)},stopEvent(b){return u.contains(b.target)||o.contains(b.target)},ignoreMutation(){return!0},destroy(){window.clearTimeout(r)}}}function tO(t){let e=t,n=document.createElement("sup");n.className="visual-footnote-reference",n.contentEditable="false";let a=r=>{e=r;let i=ig(Gs(r,"label"));n.id=i.referenceId,n.dataset.label=i.label,n.textContent=i.label,n.title=`Footnote ${i.label}`};return a(e),{dom:n,update(r){return r.type!==e.type?!1:(a(r),!0)},stopEvent(){return!0},ignoreMutation(){return!0}}}function nO(t){let e=t,n=document.createElement("dl");n.className="visual-footnote-definition";let a=document.createElement("dt");a.contentEditable="false";let r=document.createElement("dd");n.append(a,r);let i=s=>{e=s;let o=ig(Gs(s,"label"));n.id=o.definitionId,n.dataset.label=o.label,a.textContent=o.label};return i(e),{dom:n,contentDOM:r,update(s){return s.type!==e.type?!1:(i(s),!0)},ignoreMutation(s){return s.target instanceof Node&&a.contains(s.target)}}}function aO(t){let e=t,n=document.createElement("span");n.className="visual-html-source",n.contentEditable="false";let a=document.createElement("span");a.className="visual-html-label",a.textContent=ia.rawHtmlEscaped;let r=document.createElement("span");r.className="visual-html-code",n.append(a,r);let i=s=>{e=s;let o=Gs(s,"value");n.dataset.value=o,n.title=`${ia.rawHtmlEscaped}: ${o}`,r.innerHTML=q4(o)};return i(e),{dom:n,update(s){return s.type!==e.type?!1:(i(s),!0)},stopEvent(){return!0},ignoreMutation(){return!0}}}function rO(t){let e=t,n=Dl(t.attrs.tag),a=document.createElement(n);return a.className=`visual-safe-html-inline visual-safe-html-${n}`,a.dataset.tag=n,{dom:a,contentDOM:a,update(r){let i=Dl(r.attrs.tag);return r.type!==e.type||i!==n?!1:(e=r,n=i,a.dataset.tag=n,!0)}}}function iO(t){let e=t,n=document.createElement("blockquote");n.className="visual-blockquote-node-view";let a=document.createElement("p");a.className="visual-admonition-title",a.contentEditable="false",a.hidden=!0;let r=document.createElement("div");r.className="visual-admonition-body",r.contentEditable="false",r.hidden=!0;let i=document.createElement("div");i.className="visual-blockquote-content",n.append(a,r,i);let s=l=>{r.replaceChildren();let c=document.createElement("p");c.textContent=l||"",r.append(c)},o=l=>{e=l;let c=P4(l.textContent||"");n.className="visual-blockquote-node-view",a.hidden=!0,a.textContent="",r.hidden=!0,r.replaceChildren(),i.classList.remove("visual-admonition-source"),delete n.dataset.admonition,c&&(n.classList.add("admonition",`admonition-${c.type}`),n.dataset.admonition=c.type,a.hidden=!1,a.textContent=c.label,r.hidden=!1,s(c.body),i.classList.add("visual-admonition-source"))};return o(e),{dom:n,contentDOM:i,update(l){return l.type!==e.type?!1:(o(l),!0)}}}function Gs(t,e){return String(t.attrs[e]||"")}function bb(t,e,n){if(typeof e!="function")return;let a=t,r=0;try{r=e()}catch{return}let i=a.state?.doc?.nodeAt(r),s=i&&a.state?.tr?.setNodeMarkup(r,void 0,{...i.attrs,...n});s&&a.dispatch?.(s)}function sO(t){let e=[["code_block",Hz],["math_inline",Qz],["math_block",eO],["footnote_reference",tO],["footnote_definition",nO],["html",aO],["safe_html_inline",rO],["blockquote",iO]],n=new Set(e.map(([a])=>a));return[...t.filter(([a])=>!n.has(a)),...e]}L3("runtime-loading","bundle-started");Ez();async function oO(){let t=Array.from(Xt.querySelectorAll(".mermaid"));if(t.length)for(let e of t)hb(e,e.textContent||""),await mb(e)}function mb(t){let e=v3.catch(()=>{}).then(async()=>{let n;try{n=await cO(),n.initialize({startOnLoad:!1,securityLevel:"strict"})}catch(a){G3(t,a);return}await lO(n,t)});return v3=e,e}async function lO(t,e){if(e.dataset.superMarkdownMermaidError)return;let n=e.dataset.superMarkdownMermaidSource||e.textContent||"";e.dataset.superMarkdownMermaidSource=n;try{await t.run({nodes:[e]})}catch(a){G3(e,a,n)}}function G3(t,e,n=t.dataset.superMarkdownMermaidSource||t.textContent||""){let a=Hl(e);t.dataset.superMarkdownMermaidError=a,t.classList.add("mermaid-render-error"),t.title=a,t.textContent=n?`${a} + </div>`}function xO(t){let e=cd(t);return`<button type="button" class="toolbar-menu-button" data-action="${t}" data-hover-tooltip="${la(e)}" aria-label="${la(e)}"> + <span class="toolbar-menu-icon" aria-hidden="true">${ld(t)}</span> + <span class="toolbar-menu-label">${Yl(e)}</span> + </button>`}function ld(t){return H3(t)}function cd(t){let e=t.match(/^heading-([1-6])$/);return e?`${Ee("heading","Heading")} ${e[1]}`:{bold:Ee("bold","Bold"),italic:Ee("italic","Italic"),underline:Ee("underline","Underline"),highlight:Ee("highlight","Highlight"),strike:Ee("strike","Strike"),heading:Ee("heading","Heading"),hr:Ee("hr","Rule"),quote:Ee("quote","Quote"),list:Ee("list","List"),"ordered-list":Ee("orderedList","Ordered list"),task:Ee("task","Task"),"task-checked":Ee("taskChecked","Checked task"),link:Ee("link","Link"),image:Ee("image","Image"),"inline-code":Ee("inlineCode","Inline code"),code:Ee("code","Code block"),table:Ee("table","Table"),math:Ee("math","Math"),mermaid:Ee("mermaid","Mermaid"),toc:Ee("toc","Table of contents"),more:Ee("more","More"),organizeMarkdown:Ee("organizeMarkdown","Organize Markdown"),switchBackgroundTheme:Ee("switchBackgroundTheme","Switch Reading Theme"),switchDisplayLanguage:Ee("switchDisplayLanguage","Switch display language"),help:Ee("help","Help"),"export-html":`${Ee("export","Export")} HTML`,"export-pdf":`${Ee("export","Export")} PDF`,"export-all":`${Ee("export","Export")} ${Ee("all","All")}`}[t]||t}function wO(){he.addEventListener("input",()=>{Qs(),ke=he.value,Er(ke),Oi(ke),Mr()}),he.addEventListener("paste",t=>{RO(t)}),he.addEventListener("dragover",zO),he.addEventListener("drop",t=>{OO(t)});for(let t of["focus","select","click","keyup","mouseup"])he.addEventListener(t,Qs);jr.addEventListener("mousedown",t=>{Sr(t.target,".toolbar-button, .toolbar-menu-button")&&t.preventDefault()}),jr.addEventListener("click",t=>{let e=Sr(t.target,"[data-menu-toggle]");if(e){t.preventDefault(),vB(e.dataset.menuToggle||"");return}let n=Sr(t.target,"[data-action]");n&&(t.preventDefault(),ud(),hB(n.dataset.action||""))}),Qt.addEventListener("click",i5),Wt.addEventListener("click",i5),Wt.addEventListener("paste",t=>{BO(t)}),Wt.addEventListener("dragover",LO),Wt.addEventListener("drop",t=>{DO(t)}),s5.addEventListener("click",MB),oO?.addEventListener("click",()=>A5(!1)),lO?.addEventListener("click",AB),o5.addEventListener("input",()=>Er(ke)),hd.addEventListener("click",EB),kO(),$O(),document.addEventListener("click",t=>{jr.contains(t.target)||ud()}),document.addEventListener("keydown",t=>{t.key==="Escape"&&ud()}),window.addEventListener("message",AO)}function kO(){document.addEventListener("mouseover",t=>{let e=od(t.target);!e||e.contains(t.relatedTarget)||Y3(e)}),document.addEventListener("mouseout",t=>{let e=od(t.target);!e||e.contains(t.relatedTarget)||Ii()}),document.addEventListener("focusin",t=>{let e=od(t.target);e&&Y3(e)}),document.addEventListener("focusout",Ii),document.addEventListener("click",t=>{od(t.target)&&Ii()}),window.addEventListener("scroll",Ii,!0),window.addEventListener("resize",Ii)}function od(t){return Sr(t,pO)}function Y3(t){let e=t.getAttribute("title")||"",n=t.dataset.hoverTooltip||e||t.getAttribute("aria-label")||"";n.trim()&&(t.dataset.hoverTooltip||(t.dataset.hoverTooltip=n),e&&t.removeAttribute("title"),Ii(),Eb=t,Sb=window.setTimeout(()=>_O(t,n),500))}function _O(t,e){let n=vO();n.textContent=e,n.style.visibility="hidden",n.classList.add("is-visible"),t.setAttribute("aria-describedby",n.id);let a=t.getBoundingClientRect(),r=n.getBoundingClientRect(),i=8,s=8,o=Math.max(s,window.innerWidth-r.width-s),l=Math.min(Math.max(s,a.left+a.width/2-r.width/2),o),c=a.bottom+i,u=c+r.height<=window.innerHeight-s?c:Math.max(s,a.top-r.height-i);n.style.left=`${Math.round(l)}px`,n.style.top=`${Math.round(u)}px`,n.style.visibility=""}function vO(){return Pn||(Pn=document.createElement("div"),Pn.id="hover-tooltip",Pn.className="hover-tooltip",Pn.setAttribute("role","tooltip"),document.body.appendChild(Pn),Pn)}function Ii(){window.clearTimeout(Sb),Sb=void 0,Eb?.removeAttribute("aria-describedby"),Eb=null,Pn&&(Pn.classList.remove("is-visible"),Pn.removeAttribute("style"))}function $O(){$t&&($t.addEventListener("pointerdown",CO),$t.addEventListener("pointermove",jO),$t.addEventListener("pointerup",wb),$t.addEventListener("pointercancel",wb),$t.addEventListener("lostpointercapture",wb),$t.addEventListener("dblclick",()=>Ri(zb,!0)),$t.addEventListener("keydown",SO),window.addEventListener("resize",()=>fd(!1)))}function CO(t){!Bb()||t.button!==0||!$t||(t.preventDefault(),Ii(),Kl=t.pointerId,$t.setPointerCapture(t.pointerId),document.body.classList.add("is-resizing-split"),f5(t.clientX))}function jO(t){Kl===t.pointerId&&(t.preventDefault(),f5(t.clientX))}function wb(t){Kl!==null&&(t&&t.pointerId!==Kl||(t&&$t?.hasPointerCapture(t.pointerId)&&$t.releasePointerCapture(t.pointerId),Kl=null,document.body.classList.remove("is-resizing-split")))}function SO(t){Bb()&&(t.key==="ArrowLeft"?(t.preventDefault(),Ri($r-K3,!0)):t.key==="ArrowRight"?(t.preventDefault(),Ri($r+K3,!0)):t.key==="Home"?(t.preventDefault(),Ri(.2,!0)):t.key==="End"?(t.preventDefault(),Ri(.8,!0)):(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),Ri(zb,!0)))}function f5(t){let e=g5();e&&Ri((t-e.left)/e.width,!0,e.width)}function g5(){if(!W3||!U3)return null;let t=W3.getBoundingClientRect(),e=U3.getBoundingClientRect(),n=t.left,r=e.right-n;return r>0?{left:n,width:r}:null}function Ri(t,e,n){let a=n===void 0?g5():{width:n};$r=EO(t,a?.width),fd(e)}function fd(t){let e=Math.round($r*1e3)/1e3,n=Math.round((1-$r)*1e3)/1e3;if(document.body.style.setProperty("--sm-split-editor-size",`${e}fr`),document.body.style.setProperty("--sm-split-preview-size",`${n}fr`),$t){let a=Math.round($r*100);$t.setAttribute("aria-valuenow",String(a)),$t.setAttribute("aria-valuetext",`${a}%`),$t.setAttribute("aria-hidden",Bb()?"false":"true")}t&&hO({splitRatio:$r})}function EO(t,e){if(!Number.isFinite(t))return $r;if(!e||e<=0)return Tb(t,.2,.8);let n=Math.min(.45,uO/e);return Tb(t,n,1-n)}function Bb(){return!!($t&&(tt==="split"||ua==="splitEdit")&&window.innerWidth>820)}function AO(t){let e=t.data||{};e.type==="setMarkdown"&&typeof e.text=="string"?($b=!0,FO(e.text,e.preview,e.imageResources),$b=!1):e.type==="setEditorState"?(typeof e.layout=="string"&&(ua=c5(e.layout)),typeof e.mode=="string"&&(tt=Ob(e.mode)),$5()):e.type==="uploadImagesResult"&&TO(e)}function TO(t){let e=typeof t.requestId=="string"?t.requestId:"",n=e?Ab.get(e):void 0;if(n){Ab.delete(e),Array.isArray(t.images)?n.resolve(Q3(t.images)):n.reject(t.error===void 0?new Error("Image upload failed"):t.error);return}Array.isArray(t.images)?Cr(gd(Q3(t.images))):t.error!==void 0&&ft("error",{message:Va(t.error)})}function Q3(t){return t.map(e=>{let n=e;return typeof n.markdown!="string"||!n.markdown.trim()?null:{id:typeof n.id=="string"?n.id:void 0,name:typeof n.name=="string"?n.name:void 0,markdown:n.markdown}}).filter(e=>!!e)}function gd(t){return t.map(e=>e.markdown).filter(Boolean).join(` +`)}function MO(t,e){let n=NO(t);return n?e.createAndFill({src:n.src,alt:n.alt}):null}function NO(t){let e=t.match(/^!\[((?:\\.|[^\]])*)\]\(([^)]+)\)$/);return e?{alt:e[1].replace(/\\([[\\\]])/g,"$1"),src:e[2].trim()}:null}async function bd(t){let e=t.filter(b5);if(!e.length)return[];let n=IO(),a=await Promise.all(e.map(_B)),r=new Promise((i,s)=>{Ab.set(n,{resolve:i,reject:s})});return ft("uploadImages",{requestId:n,images:a}),r}function IO(){return`${Date.now()}-${Math.random().toString(16).slice(2)}`}function b5(t){return t.type.startsWith("image/")}function eo(t){if(!t)return[];let e=[],n=new Set,a=r=>{if(!r||!b5(r))return;let i=`${r.name}:${r.size}:${r.lastModified}`;n.has(i)||(n.add(i),e.push(r))};return Array.from(t.files||[]).forEach(a),Array.from(t.items||[]).forEach(r=>{r.kind==="file"&&r.type.startsWith("image/")&&a(r.getAsFile())}),e}async function RO(t){let e=eo(t.clipboardData);e.length&&(t.preventDefault(),await y5(e))}function zO(t){eo(t.dataTransfer).length&&(t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect="copy"))}async function OO(t){let e=eo(t.dataTransfer);e.length&&(t.preventDefault(),he.focus(),await y5(e))}async function y5(t){try{let e=await bd(t),n=gd(e);n&&S5(n)}catch(e){ft("error",{message:Va(e)})}}async function BO(t){if(t.defaultPrevented)return;let e=eo(t.clipboardData);e.length&&(t.preventDefault(),await x5(e))}function LO(t){eo(t.dataTransfer).length&&(t.preventDefault(),t.dataTransfer&&(t.dataTransfer.dropEffect="copy"))}async function DO(t){if(t.defaultPrevented)return;let e=eo(t.dataTransfer);e.length&&(t.preventDefault(),await x5(e))}async function x5(t){try{let e=await bd(t);Cr(gd(e))}catch(e){ft("error",{message:Va(e)})}}function FO(t,e,n){ke=t,Ha=p5(e),Jl=d5(n),he.value!==t&&(he.value=t),w5(),Er(t),Oi(t),yd()}function w5(){Ha&&Ha.markdown===ke&&Ha.html?Qt.innerHTML=`<article class="markdown-body">${Ha.html}</article>`:Qt.innerHTML=`<article class="markdown-body"><pre class="static-preview-source">${Yl(ke)}</pre></article>`,pB(),T5()}function yd(){Jl.length&&(window.requestAnimationFrame(kb),window.setTimeout(kb,50),window.setTimeout(kb,250))}function kb(){if(!Jl.length)return;let t=new Map;for(let e of Jl)for(let n of k5(e.source))t.set(n,e.resolved);Wt.querySelectorAll("img").forEach(e=>{let n=e.getAttribute("src")||"",a=PO(n,t);a&&e.src!==a&&(e.dataset.superMarkdownSource=n,e.setAttribute("src",a),e.src=a)})}function PO(t,e){let n=k5(t);for(let a of n){let r=e.get(a);if(r)return r}}function k5(t){let e=HO(String(t||"").trim()),n=qO(e),a=GO(e),r=encodeURI(n),i=n.replace(/^\.\//,"");return Array.from(new Set([t,e,n,a,r,`./${n}`,`./${a}`,`./${r}`,i,a.replace(/^\.\//,""),encodeURI(i)].filter(Boolean)))}function qO(t){try{return decodeURI(t)}catch{return t}}function GO(t){try{return decodeURIComponent(t)}catch{return t}}function HO(t){return t.split("#")[0].split("?")[0]}function VO(){xb||(xb=new MutationObserver(t=>{if(!Jl.length)return;t.some(n=>n.type==="attributes"?n.target instanceof HTMLImageElement&&n.attributeName==="src":Array.from(n.addedNodes).some(a=>a instanceof HTMLImageElement?!0:a instanceof Element&&!!a.querySelector("img")))&&yd()}),xb.observe(Wt,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src"]}))}function WO(){let t=document.createElement("button");return t.type="button",t.className=Qe.copyButton,t.dataset.copyLabel=Ni.copyLabel,t.dataset.copiedLabel=Ni.copiedLabel,t.dataset.hoverTooltip=Ni.copyLabel,t.setAttribute("aria-label",Ni.copyLabel),t.textContent=Ni.copyLabel,t}function UO(t){let e=kp(t),n=document.createElement("button");return n.type="button",n.className=Qe.toneButton,n.dataset.blockTone=e,n.dataset.toneLabel=vr.toneLabel,n.dataset.toneAutoLabel=vr.autoLabel,n.dataset.toneLightLabel=vr.lightLabel,n.dataset.toneDarkLabel=vr.darkLabel,n.textContent=_p(e,vr),P5(n,e),n}function KO(t,e,n){let a=t,r=0,i=0,s=document.createElement("figure");s.className=`${Qe.block} visual-code-node-view`,s.dataset.renderBlockTone="auto";let o=document.createElement("figcaption");o.contentEditable="false";let l=document.createElement("span");l.className="visual-code-language-field",l.contentEditable="false";let c=document.createElement("button");c.type="button",c.className=`${Qe.language} visual-code-language-button`,c.dataset.hoverTooltip=qn.editLanguage,c.setAttribute("aria-label",qn.editLanguage);let u=document.createElement("input");u.className="visual-code-language-input",u.hidden=!0,u.spellcheck=!1,u.setAttribute("aria-label",qn.editLanguage),l.append(c,u);let p=document.createElement("span");p.className=Qe.actionGroup,p.contentEditable="false";let d=WO(),m=UO(s.dataset.renderBlockTone);t5(d,q5),t5(m,F5),p.append(d,m);let h=document.createElement("pre");h.className="visual-code-editor";let b=document.createElement("code");b.spellcheck=!1,h.append(b);let y=document.createElement("pre");y.className="visual-code-highlight",y.setAttribute("aria-hidden","true"),y.contentEditable="false";let w=document.createElement("code");y.append(w);let _=document.createElement("div");_.className="visual-code-frame",_.append(y,h);let $=document.createElement("div");$.className="visual-mermaid-preview",$.contentEditable="false",$.tabIndex=0;let M=document.createElement("pre");M.className="mermaid",M.contentEditable="false",$.append(M),o.append(l,p),s.append(o,$,_);let N=T=>{let ce=Vl(T),Y=Hl(T),K=Y?"mermaid":Pl(ce),J=ce||K;c.textContent=J,u.value=ce||K,h.dataset.language=K,s.classList.toggle("visual-mermaid-node-view",Y),s.classList.toggle(Qe.diagramBlock,Y),b.className=`language-${e5(K)}`,w.className=`shiki shiki-themes light-plus dark-plus language-${e5(K)}`},E=()=>{if(Hl(a)){r+=1,w.textContent="",s.classList.remove("is-highlight-ready");return}let T=++r,ce=a.textContent,Y=Pl(Vl(a));L3(ce,Y).then(K=>{T===r&&(w.innerHTML=K||'<span class="line"></span>',s.classList.add("is-highlight-ready"))})},I=()=>{let T=++i;if(!Hl(a)){M.textContent="";return}Nb(M,a.textContent),Mb(M).then(()=>{T!==i&&(Nb(M,a.textContent),Mb(M))})},F=()=>{Hl(a)&&s.classList.add("is-editing")},L=T=>{u.hidden=!0,c.hidden=!1,T?(Lb(e,n,{language:u.value.trim()||"text"}),Fb()):u.value=Vl(a),c.focus()};return c.addEventListener("pointerdown",ca),c.addEventListener("mousedown",ca),c.addEventListener("click",T=>{T.preventDefault(),T.stopPropagation(),c.hidden=!0,u.hidden=!1,u.value=Vl(a),u.focus(),u.select()}),u.addEventListener("pointerdown",ca),u.addEventListener("mousedown",ca),u.addEventListener("keydown",T=>{T.key==="Enter"?(T.preventDefault(),L(!0)):T.key==="Escape"&&(T.preventDefault(),L(!1))}),u.addEventListener("blur",()=>{u.hidden||L(!0)}),$.addEventListener("dblclick",T=>{T.preventDefault(),T.stopPropagation(),F()}),$.addEventListener("keydown",T=>{T.key==="Enter"&&(T.preventDefault(),F())}),_.addEventListener("keydown",T=>{T.key==="Escape"&&Hl(a)&&(s.classList.remove("is-editing"),$.focus())}),N(a),E(),I(),{dom:s,contentDOM:b,update(T){return T.type!==a.type?!1:(a=T,N(T),E(),I(),!0)},stopEvent(T){return!!(Sr(T.target,`.${Qe.actionGroup}`)||l.contains(T.target)||$.contains(T.target))},ignoreMutation(T){return T.target instanceof Node&&(T.target===s||o.contains(T.target)||$.contains(T.target)||y.contains(T.target))}}}function Hl(t){return Vl(t).toLowerCase()==="mermaid"}function Vl(t){return String(t.attrs.language||t.attrs.lang||"").trim().split(/\s+/)[0]||""}function e5(t){return t.replace(/[^\w+-]/g,"-")}function t5(t,e){t.addEventListener("pointerdown",ca),t.addEventListener("mousedown",ca),t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),e(t)})}function ca(t){t.stopPropagation()}var XO=jn("superMarkdownMath",()=>Xu),ZO=jn("superMarkdownSafeInlineHtml",()=>()=>t=>{_5(t)}),JO=Oe("math_inline",()=>({group:"inline",inline:!0,atom:!0,attrs:{value:{default:"",validate:"string"}},parseDOM:[{tag:'span[data-type="math_inline"]',getAttrs:t=>({value:t.dataset.value||t.textContent||""})}],toDOM:t=>["span",{"data-type":"math_inline","data-value":t.attrs.value},t.attrs.value],parseMarkdown:{match:t=>t.type==="inlineMath",runner:(t,e,n)=>{t.addNode(n,{value:String(e.value||"")})}},toMarkdown:{match:t=>t.type.name==="math_inline",runner:(t,e)=>{t.addNode("inlineMath",void 0,String(e.attrs.value||""))}}})),YO=Oe("math_block",()=>({group:"block",atom:!0,attrs:{value:{default:"",validate:"string"}},parseDOM:[{tag:'figure[data-type="math_block"]',getAttrs:t=>({value:t.dataset.value||t.textContent||""})}],toDOM:t=>["figure",{"data-type":"math_block","data-value":t.attrs.value},t.attrs.value],parseMarkdown:{match:t=>t.type==="math",runner:(t,e,n)=>{t.addNode(n,{value:String(e.value||"")})}},toMarkdown:{match:t=>t.type.name==="math_block",runner:(t,e)=>{t.addNode("math",void 0,String(e.attrs.value||""))}}})),QO=Oe("safe_html_inline",()=>({group:"inline",inline:!0,content:"inline*",attrs:{tag:{default:"kbd",validate:"string"}},parseDOM:["u","mark","kbd"].map(t=>({tag:t,getAttrs:()=>({tag:t})})),toDOM:t=>{let e=Xl(t.attrs.tag);return[e,{"data-type":"safe_html_inline","data-tag":e},0]},parseMarkdown:{match:t=>t.type==="safeHtmlInline",runner:(t,e,n)=>{t.openNode(n,{tag:Xl(e.tag)}).next(e.children).closeNode()}},toMarkdown:{match:t=>t.type.name==="safe_html_inline",runner:(t,e)=>{let n=Xl(e.attrs.tag);t.addNode("html",void 0,`<${n}>`),t.next(e.content),t.addNode("html",void 0,`</${n}>`)}}}));function _5(t){Array.isArray(t.children)&&(t.children=eB(t.children),t.children.forEach(_5))}function eB(t){let e=[];for(let n=0;n<t.length;n+=1){let a=t[n],r=tB(a);if(!r){e.push(a);continue}let i=nB(t,n+1,r);if(i<0){e.push(a);continue}e.push({type:"safeHtmlInline",tag:r,children:t.slice(n+1,i)}),n=i}return e}function tB(t){if(t.type!=="html"||typeof t.value!="string")return null;let e=t.value.trim().match(/^<([a-z][a-z0-9-]*)>$/i);if(!e)return null;let n=e[1].toLowerCase();return xg(n)?n:null}function nB(t,e,n){let a=0,r=new RegExp(`^<${n}>$`,"i"),i=new RegExp(`^</${n}>$`,"i");for(let s=e;s<t.length;s+=1){let o=t[s];if(o.type!=="html"||typeof o.value!="string")continue;let l=o.value.trim();if(r.test(l))a+=1;else if(i.test(l)){if(a===0)return s;a-=1}}return-1}function Xl(t){let e=String(t||"").toLowerCase();return xg(e)?e:"kbd"}function aB(t,e,n){let a=t,r=document.createElement("span");r.className="visual-math-inline-node",r.contentEditable="false",r.tabIndex=0;let i=document.createElement("span");i.className="visual-math-inline-preview";let s=document.createElement("input");s.className="visual-math-inline-input",s.hidden=!0,s.spellcheck=!1,s.setAttribute("aria-label",qn.mathEdit),r.append(i,s);let o=p=>{r.classList.toggle("is-editing",p),i.hidden=p,s.hidden=!p,p&&(s.value=Ys(a,"value"),window.setTimeout(()=>{s.focus(),s.select()},0))},l=()=>{let p=s.value;o(!1),Lb(e,n,{value:p}),Fb(),r.focus()};r.addEventListener("dblclick",p=>{p.preventDefault(),p.stopPropagation(),o(!0)}),r.addEventListener("keydown",p=>{p.key==="Enter"&&(p.preventDefault(),o(!0))});let c=p=>{s.hidden||(p.key==="Enter"?(p.preventDefault(),p.stopPropagation(),l()):p.key==="Escape"&&(p.preventDefault(),p.stopPropagation(),o(!1),r.focus()))};s.addEventListener("keydown",c),s.addEventListener("keyup",c),s.addEventListener("blur",()=>{s.hidden||l()});let u=p=>{a=p;let d=Ys(p,"value");r.dataset.value=d,r.dataset.hoverTooltip=d,i.innerHTML=vp(d,!1,vb),r.classList.contains("is-editing")||(s.value=d)};return u(a),{dom:r,update(p){return p.type!==a.type?!1:(u(p),!0)},stopEvent(){return!0},ignoreMutation(){return!0}}}function rB(t,e,n){let a=t,r,i=document.createElement("figure");i.className="visual-math-node-view",i.contentEditable="false",i.tabIndex=0;let s=document.createElement("div");s.className="visual-math-preview";let o=document.createElement("div");o.className="visual-math-controls",o.contentEditable="false";let l=document.createElement("button");l.type="button",l.className="visual-math-edit",l.textContent=qn.mathEdit,l.setAttribute("aria-label",qn.mathEdit);let c=document.createElement("button");c.type="button",c.className="visual-math-done",c.textContent=qn.mathDone,c.setAttribute("aria-label",qn.mathDone),o.append(l,c);let u=document.createElement("textarea");u.className="visual-math-source",u.spellcheck=!1,u.rows=3,u.addEventListener("input",()=>{window.clearTimeout(r),r=window.setTimeout(()=>{Lb(e,n,{value:u.value})},160),s.innerHTML=vp(u.value,!0,vb)});let p=b=>{i.classList.toggle("is-editing",b),u.hidden=!b,l.hidden=b,c.hidden=!b,b&&window.setTimeout(()=>u.focus(),0)},d=b=>{b.preventDefault(),b.stopPropagation(),p(!0)},m=b=>{b.preventDefault(),b.stopPropagation(),p(!1),i.focus()};s.addEventListener("dblclick",d),i.addEventListener("keydown",b=>{b.key==="Enter"&&!i.classList.contains("is-editing")?(b.preventDefault(),p(!0)):b.key==="Escape"&&i.classList.contains("is-editing")&&(b.preventDefault(),p(!1),i.focus())}),u.addEventListener("keydown",b=>{b.key==="Escape"&&(b.preventDefault(),p(!1),i.focus())}),l.addEventListener("pointerdown",ca),l.addEventListener("mousedown",ca),l.addEventListener("click",d),c.addEventListener("pointerdown",ca),c.addEventListener("mousedown",ca),c.addEventListener("click",m),i.append(o,s,u),p(!1);let h=b=>{a=b;let y=Ys(b,"value");i.dataset.value=y,u.value!==y&&(u.value=y),s.innerHTML=vp(y,!0,vb)};return h(a),{dom:i,update(b){return b.type!==a.type?!1:(h(b),!0)},stopEvent(b){return u.contains(b.target)||o.contains(b.target)},ignoreMutation(){return!0},destroy(){window.clearTimeout(r)}}}function iB(t){let e=t,n=document.createElement("sup");n.className="visual-footnote-reference",n.contentEditable="false";let a=r=>{e=r;let i=yg(Ys(r,"label"));n.id=i.referenceId,n.dataset.label=i.label,n.textContent=i.label,n.dataset.hoverTooltip=`${qn.footnote} ${i.label}`};return a(e),{dom:n,update(r){return r.type!==e.type?!1:(a(r),!0)},stopEvent(){return!0},ignoreMutation(){return!0}}}function sB(t){let e=t,n=document.createElement("dl");n.className="visual-footnote-definition";let a=document.createElement("dt");a.contentEditable="false";let r=document.createElement("dd");n.append(a,r);let i=s=>{e=s;let o=yg(Ys(s,"label"));n.id=o.definitionId,n.dataset.label=o.label,a.textContent=o.label};return i(e),{dom:n,contentDOM:r,update(s){return s.type!==e.type?!1:(i(s),!0)},ignoreMutation(s){return s.target instanceof Node&&a.contains(s.target)}}}function oB(t){let e=t,n=document.createElement("span");n.className="visual-html-source",n.contentEditable="false";let a=document.createElement("span");a.className="visual-html-label",a.textContent=qn.rawHtmlEscaped;let r=document.createElement("span");r.className="visual-html-code",n.append(a,r);let i=s=>{e=s;let o=Ys(s,"value");n.dataset.value=o,n.dataset.hoverTooltip=`${qn.rawHtmlEscaped}: ${o}`,r.innerHTML=uv(o)};return i(e),{dom:n,update(s){return s.type!==e.type?!1:(i(s),!0)},stopEvent(){return!0},ignoreMutation(){return!0}}}function lB(t){let e=t,n=Xl(t.attrs.tag),a=document.createElement(n);return a.className=`visual-safe-html-inline visual-safe-html-${n}`,a.dataset.tag=n,{dom:a,contentDOM:a,update(r){let i=Xl(r.attrs.tag);return r.type!==e.type||i!==n?!1:(e=r,n=i,a.dataset.tag=n,!0)}}}function cB(t){let e=t,n=document.createElement("blockquote");n.className="visual-blockquote-node-view";let a=document.createElement("p");a.className="visual-admonition-title",a.contentEditable="false",a.hidden=!0;let r=document.createElement("div");r.className="visual-admonition-body",r.contentEditable="false",r.hidden=!0;let i=document.createElement("div");i.className="visual-blockquote-content",n.append(a,r,i);let s=l=>{r.replaceChildren();let c=document.createElement("p");c.textContent=l||"",r.append(c)},o=l=>{e=l;let c=pv(l.textContent||"");n.className="visual-blockquote-node-view",a.hidden=!0,a.textContent="",r.hidden=!0,r.replaceChildren(),i.classList.remove("visual-admonition-source"),delete n.dataset.admonition,c&&(n.classList.add("admonition",`admonition-${c.type}`),n.dataset.admonition=c.type,a.hidden=!1,a.textContent=c.label,r.hidden=!1,s(c.body),i.classList.add("visual-admonition-source"))};return o(e),{dom:n,contentDOM:i,update(l){return l.type!==e.type?!1:(o(l),!0)}}}function Ys(t,e){return String(t.attrs[e]||"")}function Lb(t,e,n){if(typeof e!="function")return;let a=t,r=0;try{r=e()}catch{return}let i=a.state?.doc?.nodeAt(r),s=i&&a.state?.tr?.setNodeMarkup(r,void 0,{...i.attrs,...n});s&&a.dispatch?.(s)}function uB(t){let e=[["code_block",KO],["math_inline",aB],["math_block",rB],["footnote_reference",iB],["footnote_definition",sB],["html",oB],["safe_html_inline",lB],["blockquote",cB]],n=new Set(e.map(([a])=>a));return[...t.filter(([a])=>!n.has(a)),...e]}m5("runtime-loading","bundle-started");dO();async function pB(){let t=Array.from(Qt.querySelectorAll(".mermaid"));if(t.length)for(let e of t)Nb(e,e.textContent||""),await Mb(e)}function Mb(t){let e=X3.catch(()=>{}).then(async()=>{let n;try{n=await mB(),n.initialize({startOnLoad:!1,securityLevel:"strict"})}catch(a){v5(t,a);return}await dB(n,t)});return X3=e,e}async function dB(t,e){if(e.dataset.superMarkdownMermaidError)return;let n=e.dataset.superMarkdownMermaidSource||e.textContent||"";e.dataset.superMarkdownMermaidSource=n;try{await t.run({nodes:[e]})}catch(a){v5(e,a,n)}}function v5(t,e,n=t.dataset.superMarkdownMermaidSource||t.textContent||""){let a=Va(e);t.dataset.superMarkdownMermaidError=a,t.dataset.hoverTooltip=a,t.classList.add("mermaid-render-error"),t.textContent=n?`${a} -${n}`:a}function hb(t,e){t.classList.remove("mermaid-render-error"),t.removeAttribute("data-processed"),delete t.dataset.superMarkdownMermaidError,delete t.dataset.superMarkdownMermaidSource,t.title="",t.textContent=e}async function cO(){if(window.mermaid)return window.mermaid;if(Il)return Il;let t=vr.mermaidScript;if(!t)throw new Error("Missing Mermaid runtime URI");return Il=new Promise((e,n)=>{let a=document.createElement("script");a.src=t,a.async=!0,a.dataset.superMarkdownMermaid="true",a.addEventListener("load",()=>{window.mermaid?e(window.mermaid):n(new Error("Mermaid runtime did not initialize"))},{once:!0}),a.addEventListener("error",()=>{n(new Error("Failed to load Mermaid runtime"))},{once:!0}),document.head.append(a)}).catch(e=>{throw Il=null,e}),Il}function H3(){document.body.classList.remove("layout-workbench","layout-editorOnly","layout-splitEdit","layout-previewOnly"),document.body.classList.add(`layout-${qa}`),qa==="previewOnly"?lb("preview",!1):qa==="splitEdit"?lb("split",!1):pt==="preview"||pt==="split"?lb("source",!1):V3()}function lb(t,e){pt=gb(t),pt==="split"&&(qa="splitEdit"),pt==="preview"&&(qa="previewOnly"),V3(),e&&pn("setMode",{mode:pt})}function V3(){document.body.classList.remove("mode-source","mode-wysiwyg","mode-preview","mode-split"),document.body.classList.add(`mode-${pt}`),pt==="wysiwyg"&&yb().catch(()=>{}),Z3()}async function yb(){if(!Bl)return Nl||(An.innerHTML="",Nl=(async()=>{Oe=Gk.make().config(t=>{t.set(Ro,An),t.set(To,we),t.get(op).markdownUpdated((e,n)=>{nd||(we=n,_e.value=n,_r(n),Si())}),t.update(us,sO)}).use(K_).use(b4).use(Vz).use(Wz).use(Uz).use(Kz).use(Xz).use(W0).use(K0).use(O4).use(L4),await Oe.create(),Bl=!0,qz(),id()})().catch(t=>{throw Oe=null,Bl=!1,Nl=null,D3(t),pn("error",{message:Hl(t)}),t}),Nl)}function Hs(t){if(!(!Oe||!Bl)){nd=!0;try{Oe.action(w_(t,!0))}finally{window.setTimeout(()=>{nd=!1,id()},0)}}}async function uO(t){if(t==="organizeMarkdown"){pn("runHostCommand",{command:"organizeMarkdown"});return}if(t==="help"){pn("openLink",{href:k3});return}if(t==="toc"){pn("toolbarCommand",{action:t});return}if(t==="switchBackgroundTheme"){pn("toolbarCommand",{action:t});return}if(t.startsWith("export-")){pn("export",{format:t.replace("export-","")});return}if(t==="image"){await gO();return}if(pt!=="wysiwyg"){hO(t);return}await yb(),pO(t)}function pO(t){if(!Oe)return;let e=t.match(/^heading-([1-6])$/);if(e){Oe.action(on(Qn.key,Number(e[1])));return}let n={bold:()=>Oe?.action(on(Ko.key)),italic:()=>Oe?.action(on(Wo.key)),strike:()=>Oe?.action(on(rl.key)),"inline-code":()=>Oe?.action(on(Xo.key)),link:()=>Oe?.action(on(Hu.key,{href:"https://example.com"})),hr:()=>Oe?.action(on(Uu.key)),quote:()=>Oe?.action(on(Jo.key)),list:()=>Oe?.action(on(tl.key)),"ordered-list":()=>Oe?.action(on(nl.key)),code:()=>Oe?.action(on(Qo.key)),table:()=>Oe?.action(on(rp.key,{row:3,col:3}))};if(n[t]){n[t]();return}t==="underline"?E3("<u>","</u>","text"):t==="highlight"?E3("==","==","text"):t==="task"?$i("* [ ] Task"):t==="task-checked"?$i("* [x] Task"):t==="math"?$i(`$$ +${n}`:a}function Nb(t,e){t.classList.remove("mermaid-render-error"),t.removeAttribute("data-processed"),delete t.dataset.superMarkdownMermaidError,delete t.dataset.superMarkdownMermaidSource,delete t.dataset.hoverTooltip,t.textContent=e}async function mB(){if(window.mermaid)return window.mermaid;if(Gl)return Gl;let t=Ar.mermaidScript;if(!t)throw new Error("Missing Mermaid runtime URI");return Gl=new Promise((e,n)=>{let a=document.createElement("script");a.src=t,a.async=!0,a.dataset.superMarkdownMermaid="true",a.addEventListener("load",()=>{window.mermaid?e(window.mermaid):n(new Error("Mermaid runtime did not initialize"))},{once:!0}),a.addEventListener("error",()=>{n(new Error("Failed to load Mermaid runtime"))},{once:!0}),document.head.append(a)}).catch(e=>{throw Gl=null,e}),Gl}function $5(){document.body.classList.remove("layout-workbench","layout-editorOnly","layout-splitEdit","layout-previewOnly"),document.body.classList.add(`layout-${ua}`),ua==="previewOnly"?_b("preview",!1):ua==="splitEdit"?_b("split",!1):tt==="preview"||tt==="split"?_b("source",!1):C5()}function _b(t,e){tt=Ob(t),tt==="split"&&(ua="splitEdit"),tt==="preview"&&(ua="previewOnly"),C5(),e&&ft("setMode",{mode:tt})}function C5(){document.body.classList.remove("mode-source","mode-wysiwyg","mode-preview","mode-split"),document.body.classList.add(`mode-${tt}`),fd(!1),tt==="wysiwyg"&&Db().catch(()=>{}),T5()}async function Db(){if(!Wl)return ql||(Wt.innerHTML="",ql=(async()=>{ze=uk.make().config(t=>{t.set(Ho,Wt),t.set(Fo,ke),t.get(gp).markdownUpdated((e,n)=>{dd||(ke=n,he.value=n,Er(n),Mr())}),t.update(xs,uB),t.update(ki.key,e=>({...e,enableHtmlFileUploader:!1,uploader:async(n,a)=>{let r;try{r=await bd(Array.from(n||[]))}catch(s){throw ft("error",{message:Va(s)}),s}let i=a.nodes.image;if(!i)throw new Error("Missing image node schema");return r.map(s=>MO(s.markdown,i)).filter(s=>!!s)}}))}).use(f2).use(L4).use(XO).use(ZO).use(JO).use(YO).use(QO).use(ig).use(og).use(ov).use(av).use(iv),await ze.create(),Wl=!0,VO(),yd()})().catch(t=>{throw ze=null,Wl=!1,ql=null,h5(t),ft("error",{message:Va(t)}),t}),ql)}function Oi(t){if(!(!ze||!Wl)){dd=!0;try{ze.action(q_(t,!0))}finally{window.setTimeout(()=>{dd=!1,yd()},0)}}}async function hB(t){if(t==="organizeMarkdown"){ft("runHostCommand",{command:"organizeMarkdown"});return}if(t==="help"){ft("openLink",{href:G3});return}if(t==="toc"){ft("toolbarCommand",{action:t});return}if(t==="switchBackgroundTheme"){ft("toolbarCommand",{action:t});return}if(t==="switchDisplayLanguage"){ft("toolbarCommand",{action:t});return}if(t.startsWith("export-")){ft("export",{format:t.replace("export-","")});return}if(t==="image"){await kB();return}if(tt!=="wysiwyg"){yB(t);return}await Db(),fB(t)}function fB(t){if(!ze)return;let e=t.match(/^heading-([1-6])$/);if(e){ze.action(un(na.key,Number(e[1])));return}let n={bold:()=>ze?.action(un(rl.key)),italic:()=>ze?.action(un(nl.key)),strike:()=>ze?.action(un(hl.key)),"inline-code":()=>ze?.action(un(il.key)),link:()=>ze?.action(un(Qu.key,{href:"https://example.com"})),hr:()=>ze?.action(un(np.key)),quote:()=>ze?.action(un(ol.key)),list:()=>ze?.action(un(pl.key)),"ordered-list":()=>ze?.action(un(dl.key)),code:()=>ze?.action(un(cl.key)),table:()=>ze?.action(un(mp.key,{row:3,col:3}))};if(n[t]){n[t]();return}t==="underline"?n5("<u>","</u>","text"):t==="highlight"?n5("==","==","text"):t==="task"?Cr("* [ ] Task"):t==="task-checked"?Cr("* [x] Task"):t==="math"?Cr(`$$ x = y -$$`):t==="mermaid"&&$i("```mermaid\ngraph TD\n A --> B\n```")}function E3(t,e,n){if(!Oe)return;let a=window.getSelection()?.toString().trim()||"";if(!(a&&dO(a,t,e)))try{Oe.action(r=>{let i=r.get(Ot),{from:s,to:o,empty:l}=i.state.selection,c=l?n:Oe.action(cf({from:s,to:o})).trim()||n;Oe.action(__(`${t}${c}${e}`,{from:s,to:o})),xb()})}catch{$i(`${t}${n}${e}`)}}function $i(t){t&&(pt==="wysiwyg"&&Oe?mO(t):W3(t))}function dO(t,e,n){let a=we.indexOf(t);return a<0?!1:(we=`${we.slice(0,a)}${e}${t}${n}${we.slice(a+t.length)}`,_e.value=we,Hs(we),_r(we),Si(),!0)}function mO(t){let e=window.getSelection()?.toString().trim()||"",n=e?we.indexOf(e):-1;if(n>=0)we=`${we.slice(0,n)}${t}${we.slice(n+e.length)}`;else{let a=we.replace(/\s+$/u,"");we=`${a}${a?` +$$`):t==="mermaid"&&Cr("```mermaid\ngraph TD\n A --> B\n```")}function n5(t,e,n){if(!ze)return;let a=window.getSelection()?.toString().trim()||"";if(!(a&&gB(a,t,e)))try{ze.action(r=>{let i=r.get(Dt),{from:s,to:o,empty:l}=i.state.selection,c=l?n:ze.action(_f({from:s,to:o})).trim()||n;ze.action(G_(`${t}${c}${e}`,{from:s,to:o})),Fb()})}catch{Cr(`${t}${n}${e}`)}}function Cr(t){t&&(tt==="wysiwyg"&&ze?bB(t):j5(t))}function gB(t,e,n){let a=ke.indexOf(t);return a<0?!1:(ke=`${ke.slice(0,a)}${e}${t}${n}${ke.slice(a+t.length)}`,he.value=ke,Oi(ke),Er(ke),Mr(),!0)}function bB(t){let e=window.getSelection()?.toString().trim()||"",n=e?ke.indexOf(e):-1;if(n>=0)ke=`${ke.slice(0,n)}${t}${ke.slice(n+e.length)}`;else{let a=ke.replace(/\s+$/u,"");ke=`${a}${a?` -`:""}${t}`}_e.value=we,Hs(we),_r(we),Si()}function xb(){window.setTimeout(()=>{if(!(!Oe||nd))try{let t=Oe.action(cf());we=t,_e.value=t,_r(t),Si()}catch{}},0)}function hO(t){let e=t.match(/^heading-([1-6])$/);if(e){A3(`${"#".repeat(Number(e[1]))} `,"","Heading");return}let n={bold:["**","**","text"],italic:["*","*","text"],underline:["<u>","</u>","text"],strike:["~~","~~","text"],highlight:["==","==","text"],"inline-code":["`","`","code"],link:["[","](https://example.com)","link text"]};if(n[t]){A3(...n[t]);return}let a={hr:"---",quote:"> Quote",list:"- List item","ordered-list":"1. List item",task:"- [ ] Task","task-checked":"- [x] Task",code:"```text\ncode\n```",table:`| Column | Value | +`:""}${t}`}he.value=ke,Oi(ke),Er(ke),Mr()}function Fb(){window.setTimeout(()=>{if(!(!ze||dd))try{let t=ze.action(_f());ke=t,he.value=t,Er(t),Mr()}catch{}},0)}function yB(t){let e=t.match(/^heading-([1-6])$/);if(e){a5(`${"#".repeat(Number(e[1]))} `,"","Heading");return}let n={bold:["**","**","text"],italic:["*","*","text"],underline:["<u>","</u>","text"],strike:["~~","~~","text"],highlight:["==","==","text"],"inline-code":["`","`","code"],link:["[","](https://example.com)","link text"]};if(n[t]){a5(...n[t]);return}let a={hr:"---",quote:"> Quote",list:"- List item","ordered-list":"1. List item",task:"- [ ] Task","task-checked":"- [x] Task",code:"```text\ncode\n```",table:`| Column | Value | | --- | --- | | Item | Value |`,math:`$$ x = y -$$`,mermaid:"```mermaid\ngraph TD\n A --> B\n```"};a[t]&&W3(a[t])}function A3(t,e,n){let a=U3(),r=_e.value.slice(a.start,a.end)||n,i=`${t}${r}${e}`;_e.setRangeText(i,a.start,a.end,"end"),we=_e.value,Gl(),Hs(we),Si()}function W3(t){let e=U3(),n=_e.value.slice(e.start,e.end),a=n?t.replace(/text|code|Task|Quote|List item/,n):t,r=fO(e.start)?` +$$`,mermaid:"```mermaid\ngraph TD\n A --> B\n```"};a[t]&&j5(a[t])}function a5(t,e,n){let a=Pb(),r=he.value.slice(a.start,a.end)||n,i=`${t}${r}${e}`;he.setRangeText(i,a.start,a.end,"end"),ke=he.value,Qs(),Oi(ke),Mr()}function j5(t){let e=Pb(),n=he.value.slice(e.start,e.end),a=n?t.replace(/text|code|Task|Quote|List item/,n):t,r=wB(e.start)?` -`:"";_e.setRangeText(`${r}${a}`,e.start,e.end,"end"),we=_e.value,Gl(),Hs(we),Si()}function fO(t){return t>0&&!_e.value.slice(0,t).endsWith(` +`:"";he.setRangeText(`${r}${a}`,e.start,e.end,"end"),ke=he.value,Qs(),Oi(ke),Mr()}function S5(t){if(!t)return;let e=Pb(),n=xB(e.start),a=e.end<he.value.length&&!he.value.slice(e.end).startsWith(` +`)?` -`)}function Gl(){db={start:_e.selectionStart||0,end:_e.selectionEnd||_e.selectionStart||0}}function U3(){document.activeElement===_e&&Gl();let t=_e.value.length;return{start:Math.max(0,Math.min(db.start,t)),end:Math.max(0,Math.min(db.end,t))}}async function gO(){let t=document.createElement("input");t.type="file",t.accept="image/*",t.multiple=!0,t.style.position="fixed",t.style.left="-9999px",t.style.top="0",t.onchange=async()=>{try{let e=Array.from(t.files||[]);if(!e.length)return;let n=await Promise.all(e.map(bO));pn("uploadImages",{requestId:Date.now(),images:n})}finally{t.remove()}},document.body.append(t),t.click()}function bO(t){return new Promise((e,n)=>{let a=new FileReader;a.onerror=()=>n(a.error||new Error("Failed to read image")),a.onload=()=>e({id:`${Date.now()}-${Math.random().toString(16).slice(2)}`,name:t.name,dataUrl:String(a.result||"")}),a.readAsDataURL(t)})}function yO(t){let e=wr.querySelector(`[data-menu-toggle="${t}"]`)?.closest(".toolbar-menu-wrapper");if(!e)return;let n=!e.classList.contains("is-open");ed(),e.classList.toggle("is-open",n);let a=e.querySelector(".toolbar-menu"),r=e.querySelector(".toolbar-menu-toggle");a&&(a.hidden=!n),r?.setAttribute("aria-expanded",String(n)),n&&xO(e)}function xO(t){let e=t.querySelector(".toolbar-menu-toggle"),n=t.querySelector(".toolbar-menu");if(!e||!n)return;let a=e.getBoundingClientRect(),r=n.offsetWidth||170,i=t.classList.contains("toolbar-more-menu")?a.right-r:a.left,s=Math.min(Math.max(8,i),Math.max(8,window.innerWidth-r-8));n.style.top=`${Math.round(a.bottom+6)}px`,n.style.left=`${Math.round(s)}px`}function ed(){wr.querySelectorAll(".toolbar-menu-wrapper.is-open").forEach(t=>{let e=t.querySelector(".toolbar-menu");t.classList.remove("is-open"),e&&(e.hidden=!0,e.removeAttribute("style")),t.querySelector(".toolbar-menu-toggle")?.setAttribute("aria-expanded","false")})}function _r(t){let e=Fa&&Fa.markdown===t?Fa.headings:kO(t);Ci=e,_O(e)}function kO(t){let e=[],n=!1;return t.split(/\r?\n/).forEach((a,r)=>{if(/^```/.test(a.trim())){n=!n;return}if(n)return;let i=a.match(/^(#{1,6})\s+(.+?)\s*#*$/);if(!i)return;let s=i[2].replace(/[`*_~[\]()]/g,"").trim();e.push({level:i[1].length,text:s,slug:wO(s),line:r})}),e}function wO(t){return t.toLowerCase().trim().replace(/[^\p{L}\p{N}\s-]/gu,"").replace(/\s+/g,"-")||"heading"}function _O(t){let e=(I3.value||"").trim().toLowerCase(),n=t.filter(a=>!e||a.text.toLowerCase().includes(e));rd.innerHTML=n.length?n.map(a=>{let r=K3(a);return`<div class="outline-node level-${a.level}"> +`:"";he.setRangeText(`${n}${t}${a}`,e.start,e.end,"end"),ke=he.value,Qs(),Oi(ke),Mr()}function xB(t){let e=he.value.slice(0,t);return!e||e.endsWith(` + +`)?"":e.endsWith(` +`)?` +`:` + +`}function wB(t){return t>0&&!he.value.slice(0,t).endsWith(` + +`)}function Qs(){jb={start:he.selectionStart||0,end:he.selectionEnd||he.selectionStart||0}}function Pb(){document.activeElement===he&&Qs();let t=he.value.length;return{start:Math.max(0,Math.min(jb.start,t)),end:Math.max(0,Math.min(jb.end,t))}}async function kB(){let t=document.createElement("input");t.type="file",t.accept="image/*",t.multiple=!0,t.style.position="fixed",t.style.left="-9999px",t.style.top="0",t.onchange=async()=>{try{let e=Array.from(t.files||[]);if(!e.length)return;let n=await bd(e),a=gd(n);tt==="wysiwyg"&&ze?Cr(a):S5(a)}catch(e){ft("error",{message:Va(e)})}finally{t.remove()}},document.body.append(t),t.click()}function _B(t){return new Promise((e,n)=>{let a=new FileReader;a.onerror=()=>n(a.error||new Error("Failed to read image")),a.onload=()=>e({id:`${Date.now()}-${Math.random().toString(16).slice(2)}`,name:t.name,dataUrl:String(a.result||"")}),a.readAsDataURL(t)})}function vB(t){let e=jr.querySelector(`[data-menu-toggle="${t}"]`)?.closest(".toolbar-menu-wrapper");if(!e)return;let n=!e.classList.contains("is-open");ud(),e.classList.toggle("is-open",n);let a=e.querySelector(".toolbar-menu"),r=e.querySelector(".toolbar-menu-toggle");a&&(a.hidden=!n),r?.setAttribute("aria-expanded",String(n)),n&&$B(e)}function $B(t){let e=t.querySelector(".toolbar-menu-toggle"),n=t.querySelector(".toolbar-menu");if(!e||!n)return;let a=e.getBoundingClientRect(),r=n.offsetWidth||170,i=t.classList.contains("toolbar-more-menu")?a.right-r:a.left,s=Math.min(Math.max(8,i),Math.max(8,window.innerWidth-r-8));n.style.top=`${Math.round(a.bottom+6)}px`,n.style.left=`${Math.round(s)}px`}function ud(){jr.querySelectorAll(".toolbar-menu-wrapper.is-open").forEach(t=>{let e=t.querySelector(".toolbar-menu");t.classList.remove("is-open"),e&&(e.hidden=!0,e.removeAttribute("style")),t.querySelector(".toolbar-menu-toggle")?.setAttribute("aria-expanded","false")})}function Er(t){let e=Ha&&Ha.markdown===t?Ha.headings:CB(t);zi=e,SB(e)}function CB(t){let e=[],n=!1;return t.split(/\r?\n/).forEach((a,r)=>{if(/^```/.test(a.trim())){n=!n;return}if(n)return;let i=a.match(/^(#{1,6})\s+(.+?)\s*#*$/);if(!i)return;let s=i[2].replace(/[`*_~[\]()]/g,"").trim();e.push({level:i[1].length,text:s,slug:jB(s),line:r})}),e}function jB(t){return t.toLowerCase().trim().replace(/[^\p{L}\p{N}\s-]/gu,"").replace(/\s+/g,"-")||"heading"}function SB(t){let e=(o5.value||"").trim().toLowerCase(),n=t.filter(a=>!e||a.text.toLowerCase().includes(e));hd.innerHTML=n.length?n.map(a=>{let r=E5(a);return`<div class="outline-node level-${a.level}"> <div class="outline-row"> <span class="outline-disclosure-placeholder" aria-hidden="true"></span> - <button type="button" class="outline-item${r===ad?" is-active":""}" data-outline-id="${Pa(r)}" data-line="${a.line}" data-slug="${Pa(a.slug||"")}" title="${Pa(a.text)}">${Pl(a.text)}</button> + <button type="button" class="outline-item${r===md?" is-active":""}" data-outline-id="${la(r)}" data-line="${a.line}" data-slug="${la(a.slug||"")}" data-hover-tooltip="${la(a.text)}" aria-label="${la(a.text)}">${Yl(a.text)}</button> </div> - </div>`}).join(""):`<div class="outline-empty">${Pl(En.noHeadings||"No headings")}</div>`,Fl()}function K3(t){return`${t.slug||"heading"}:${t.line}`}function vO(t){let e=ji(t.target,"[data-line]");if(!e)return;let n=Number(e.dataset.line||0);if(pt==="wysiwyg")Y3(n);else if(pt==="preview"||qa==="previewOnly"){let a=e5(n);a&&Q3(Xt,a)}else SO(n);fb(e.dataset.outlineId||"")}function Fl(t){if(!Ci.length){fb("");return}let e=typeof t=="string"?t:t?.currentTarget===Xt?"preview":t?.currentTarget===An?"visual":"source",n=e==="preview"?t5():e==="visual"?NO():a5();if(n===null)return;let a=Ci[0];for(let r of Ci)if(r.line<=n)a=r;else break;fb(K3(a))}function fb(t){ad=t,rd.querySelectorAll(".outline-item").forEach(e=>{e.classList.toggle("is-active",e.dataset.outlineId===t)})}function $O(){Fl(pt==="wysiwyg"?"visual":pt==="preview"?"preview":"source"),(ad?rd.querySelector(`.outline-item[data-outline-id="${CO(ad)}"]`):null)?.scrollIntoView({block:"nearest"})}function CO(t){return typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/["\\]/g,"\\$&")}function jO(t){t.preventDefault(),X3(!R3)}function X3(t){R3=t,document.body.classList.toggle("side-panel-open",t),N3.setAttribute("aria-expanded",String(t)),Cz.setAttribute("aria-hidden",String(!t))}function SO(t){let e=sd(t),a=_e.value.split(/\r?\n/).slice(0,e).join(` -`).length+(e>0?1:0);_e.focus(),_e.setSelectionRange(a,a),r5(e)}function EO(){return pt==="split"||qa==="splitEdit"||pt==="source"&&qa==="workbench"}function Z3(){if(_e.onscroll=null,Xt.onscroll=null,An.onscroll=null,cancelAnimationFrame(pb),pt==="wysiwyg"){An.onscroll=()=>Fl("visual");return}EO()&&(_e.onscroll=()=>{Ll!=="source"&&(Fl("source"),T3(()=>AO(a5())))},Xt.onscroll=()=>{Ll!=="preview"&&(Fl("preview"),T3(()=>{let t=t5();t!==null&&TO(t)}))})}function T3(t){cancelAnimationFrame(pb),pb=requestAnimationFrame(t)}function J3(t,e){Ll=t,e(),clearTimeout($3),$3=window.setTimeout(()=>{Ll===t&&(Ll="")},80)}function AO(t){let e=e5(t);if(!e)return;let n=Xt.getBoundingClientRect(),a=e.getBoundingClientRect(),r=Xt.scrollTop+a.top-n.top;J3("preview",()=>{Xt.scrollTop=Math.max(0,Math.round(r))})}function TO(t){J3("source",()=>r5(t))}function Y3(t){if(!Bl){yb().then(()=>Y3(t));return}let e=MO(t);e&&Q3(An,e)}function MO(t){let e=Ci.findIndex(i=>i.line===t),n=Array.from(An.querySelectorAll(".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6"));if(e>=0&&e<n.length)return n[e];let a=Ci.find(i=>i.line===t);if(!a)return null;let r=`H${a.level}`;return n.find(i=>i.tagName===r&&i.textContent?.trim()===a.text)||null}function Q3(t,e){let n=t.getBoundingClientRect(),a=e.getBoundingClientRect();t.scrollTop=Math.max(0,Math.round(t.scrollTop+a.top-n.top))}function e5(t){let e=sd(t),n=Array.from(Xt.querySelectorAll("[data-source-line]")),a=null;for(let r of n){let i=n5(r);if(i!==null&&(a=r,i>=e))return r}return a}function t5(){let t=Xt.getBoundingClientRect(),e=Array.from(Xt.querySelectorAll("[data-source-line]")),n=null,a=Number.POSITIVE_INFINITY;for(let r of e){let i=n5(r);if(i===null)continue;let s=r.getBoundingClientRect();if(s.bottom<t.top||s.top>t.bottom)continue;let o=Math.abs(Math.max(s.top,t.top)-t.top);o<a&&(a=o,n=i)}return n}function NO(){let t=An.getBoundingClientRect(),e=Array.from(An.querySelectorAll(".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6")),n=-1,a=Number.POSITIVE_INFINITY;return e.forEach((r,i)=>{let s=r.getBoundingClientRect();if(s.bottom<t.top||s.top>t.bottom)return;let o=Math.abs(Math.max(s.top,t.top)-t.top);o<a&&(a=o,n=i)}),n>=0?Ci[n]?.line??null:null}function n5(t){let e=Number(t.dataset.sourceLine);return Number.isFinite(e)?e:null}function a5(){let t=i5();return sd(Math.floor(_e.scrollTop/Math.max(1,t)))}function r5(t){let e=Math.max(0,_e.scrollHeight-_e.clientHeight);_e.scrollTop=Math.min(e,Math.max(0,Math.round(sd(t)*i5())))}function i5(){let t=getComputedStyle(_e),e=Number.parseFloat(t.fontSize)||14,n=Number.parseFloat(t.lineHeight);return Number.isFinite(n)?n:e*1.65}function sd(t){let e=_e.value.split(/\r?\n/);return Math.max(0,Math.min(Math.floor(Number(t)||0),Math.max(0,e.length-1)))}function M3(t){let e=ji(t.target,`.${wt.toneButton}`);if(e){t.preventDefault(),s5(e);return}let n=ji(t.target,`.${wt.copyButton}`);n&&(t.preventDefault(),l5(n))}function s5(t){let e=t.closest(`.${wt.block}, .${wt.diagramBlock}, .${wt.mathBlock}`);if(!e)return;let n=D4(t.dataset.blockTone||e.dataset.renderBlockTone);e.classList.toggle("render-block-tone-light",n==="light"),e.classList.toggle("render-block-tone-dark",n==="dark"),e.dataset.renderBlockTone=n,t.dataset.blockTone=n,t.textContent=mp(n,kr),o5(t,n)}function o5(t,e){let n=`${kr.toneLabel}: ${mp(dp(e),kr)}`;t.setAttribute("title",n),t.setAttribute("aria-label",n)}function l5(t){let e=t.closest(`.${wt.block}, .${wt.diagramBlock}`),n=IO(e,t);pn("copyCode",{text:n}),t.textContent=t.dataset.copiedLabel||Ol.copiedLabel,window.setTimeout(()=>{t.textContent=t.dataset.copyLabel||Ol.copyLabel},1200)}function IO(t,e){if(!t)return e.dataset.copyText||"";let n=t.querySelector(`.${wt.copySource}`);if(n)return"content"in n?n.content.textContent||"":n.textContent||"";let a=t.querySelector("pre.visual-code-editor code, pre code, code");if(a)return a.textContent||"";let r=t.cloneNode(!0);return r.querySelector("figcaption")?.remove(),r.querySelector(`.${wt.actionGroup}`)?.remove(),r.textContent||""}})(); + </div>`}).join(""):`<div class="outline-empty">${Yl(hn.noHeadings||"No headings")}</div>`,Zl()}function E5(t){return`${t.slug||"heading"}:${t.line}`}function EB(t){let e=Sr(t.target,"[data-line]");if(!e)return;let n=Number(e.dataset.line||0);if(tt==="wysiwyg")N5(n);else if(tt==="preview"||ua==="previewOnly"){let a=R5(n);a&&I5(Qt,a)}else NB(n);Ib(e.dataset.outlineId||"")}function Zl(t){if(!zi.length){Ib("");return}let e=typeof t=="string"?t:t?.currentTarget===Qt?"preview":t?.currentTarget===Wt?"visual":"source",n=e==="preview"?z5():e==="visual"?BB():B5();if(n===null)return;let a=zi[0];for(let r of zi)if(r.line<=n)a=r;else break;Ib(E5(a))}function Ib(t){md=t,hd.querySelectorAll(".outline-item").forEach(e=>{e.classList.toggle("is-active",e.dataset.outlineId===t)})}function AB(){Zl(tt==="wysiwyg"?"visual":tt==="preview"?"preview":"source"),(md?hd.querySelector(`.outline-item[data-outline-id="${TB(md)}"]`):null)?.scrollIntoView({block:"nearest"})}function TB(t){return typeof CSS<"u"&&CSS.escape?CSS.escape(t):t.replace(/["\\]/g,"\\$&")}function MB(t){t.preventDefault(),A5(!l5)}function A5(t){l5=t,document.body.classList.toggle("side-panel-open",t),s5.setAttribute("aria-expanded",String(t)),sO.setAttribute("aria-hidden",String(!t))}function NB(t){let e=xd(t),a=he.value.split(/\r?\n/).slice(0,e).join(` +`).length+(e>0?1:0);he.focus(),he.setSelectionRange(a,a),L5(e)}function IB(){return tt==="split"||ua==="splitEdit"||tt==="source"&&ua==="workbench"}function T5(){if(he.onscroll=null,Qt.onscroll=null,Wt.onscroll=null,cancelAnimationFrame(Cb),tt==="wysiwyg"){Wt.onscroll=()=>Zl("visual");return}IB()&&(he.onscroll=()=>{Ul!=="source"&&(Zl("source"),r5(()=>RB(B5())))},Qt.onscroll=()=>{Ul!=="preview"&&(Zl("preview"),r5(()=>{let t=z5();t!==null&&zB(t)}))})}function r5(t){cancelAnimationFrame(Cb),Cb=requestAnimationFrame(t)}function M5(t,e){Ul=t,e(),clearTimeout(Z3),Z3=window.setTimeout(()=>{Ul===t&&(Ul="")},80)}function RB(t){let e=R5(t);if(!e)return;let n=Qt.getBoundingClientRect(),a=e.getBoundingClientRect(),r=Qt.scrollTop+a.top-n.top;M5("preview",()=>{Qt.scrollTop=Math.max(0,Math.round(r))})}function zB(t){M5("source",()=>L5(t))}function N5(t){if(!Wl){Db().then(()=>N5(t));return}let e=OB(t);e&&I5(Wt,e)}function OB(t){let e=zi.findIndex(i=>i.line===t),n=Array.from(Wt.querySelectorAll(".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6"));if(e>=0&&e<n.length)return n[e];let a=zi.find(i=>i.line===t);if(!a)return null;let r=`H${a.level}`;return n.find(i=>i.tagName===r&&i.textContent?.trim()===a.text)||null}function I5(t,e){let n=t.getBoundingClientRect(),a=e.getBoundingClientRect();t.scrollTop=Math.max(0,Math.round(t.scrollTop+a.top-n.top))}function R5(t){let e=xd(t),n=Array.from(Qt.querySelectorAll("[data-source-line]")),a=null;for(let r of n){let i=O5(r);if(i!==null&&(a=r,i>=e))return r}return a}function z5(){let t=Qt.getBoundingClientRect(),e=Array.from(Qt.querySelectorAll("[data-source-line]")),n=null,a=Number.POSITIVE_INFINITY;for(let r of e){let i=O5(r);if(i===null)continue;let s=r.getBoundingClientRect();if(s.bottom<t.top||s.top>t.bottom)continue;let o=Math.abs(Math.max(s.top,t.top)-t.top);o<a&&(a=o,n=i)}return n}function BB(){let t=Wt.getBoundingClientRect(),e=Array.from(Wt.querySelectorAll(".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6")),n=-1,a=Number.POSITIVE_INFINITY;return e.forEach((r,i)=>{let s=r.getBoundingClientRect();if(s.bottom<t.top||s.top>t.bottom)return;let o=Math.abs(Math.max(s.top,t.top)-t.top);o<a&&(a=o,n=i)}),n>=0?zi[n]?.line??null:null}function O5(t){let e=Number(t.dataset.sourceLine);return Number.isFinite(e)?e:null}function B5(){let t=D5();return xd(Math.floor(he.scrollTop/Math.max(1,t)))}function L5(t){let e=Math.max(0,he.scrollHeight-he.clientHeight);he.scrollTop=Math.min(e,Math.max(0,Math.round(xd(t)*D5())))}function D5(){let t=getComputedStyle(he),e=Number.parseFloat(t.fontSize)||14,n=Number.parseFloat(t.lineHeight);return Number.isFinite(n)?n:e*1.65}function xd(t){let e=he.value.split(/\r?\n/);return Math.max(0,Math.min(Math.floor(Number(t)||0),Math.max(0,e.length-1)))}function i5(t){let e=Sr(t.target,`.${Qe.toneButton}`);if(e){t.preventDefault(),F5(e);return}let n=Sr(t.target,`.${Qe.copyButton}`);n&&(t.preventDefault(),q5(n))}function F5(t){let e=t.closest(`.${Qe.block}, .${Qe.diagramBlock}, .${Qe.mathBlock}`);if(!e)return;let n=lv(t.dataset.blockTone||e.dataset.renderBlockTone);e.classList.toggle("render-block-tone-light",n==="light"),e.classList.toggle("render-block-tone-dark",n==="dark"),e.dataset.renderBlockTone=n,t.dataset.blockTone=n,t.textContent=_p(n,vr),P5(t,n)}function P5(t,e){let n=`${vr.toneLabel}: ${_p(kp(e),vr)}`;t.dataset.hoverTooltip=n,t.setAttribute("aria-label",n)}function q5(t){let e=t.closest(`.${Qe.block}, .${Qe.diagramBlock}`),n=LB(e,t);ft("copyCode",{text:n}),t.textContent=t.dataset.copiedLabel||Ni.copiedLabel,window.setTimeout(()=>{t.textContent=t.dataset.copyLabel||Ni.copyLabel},1200)}function LB(t,e){if(!t)return e.dataset.copyText||"";let n=t.querySelector(`.${Qe.copySource}`);if(n)return"content"in n?n.content.textContent||"":n.textContent||"";let a=t.querySelector("pre.visual-code-editor code, pre code, code");if(a)return a.textContent||"";let r=t.cloneNode(!0);return r.querySelector("figcaption")?.remove(),r.querySelector(`.${Qe.actionGroup}`)?.remove(),r.textContent||""}})(); /*! Bundled license information: lodash-es/lodash.js: diff --git a/media/wysiwyg/editor.js.map b/media/wysiwyg/editor.js.map index 73999bd..376d623 100644 --- a/media/wysiwyg/editor.js.map +++ b/media/wysiwyg/editor.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../node_modules/extend/index.js", "../../node_modules/@milkdown/exception/src/code.ts", "../../node_modules/@milkdown/exception/src/error.ts", "../../node_modules/@milkdown/exception/src/index.ts", "../../node_modules/@milkdown/ctx/src/context/container.ts", "../../node_modules/@milkdown/ctx/src/context/slice.ts", "../../node_modules/@milkdown/ctx/src/inspector/inspector.ts", "../../node_modules/@milkdown/ctx/src/plugin/ctx.ts", "../../node_modules/@milkdown/ctx/src/timer/clock.ts", "../../node_modules/@milkdown/ctx/src/timer/timer.ts", "../../node_modules/mdast-util-to-string/lib/index.js", "../../node_modules/decode-named-character-reference/index.dom.js", "../../node_modules/micromark-util-chunked/index.js", "../../node_modules/micromark-util-combine-extensions/index.js", "../../node_modules/micromark-util-decode-numeric-character-reference/index.js", "../../node_modules/micromark-util-normalize-identifier/index.js", "../../node_modules/micromark-util-character/index.js", "../../node_modules/micromark-factory-space/index.js", "../../node_modules/micromark/lib/initialize/content.js", "../../node_modules/micromark/lib/initialize/document.js", "../../node_modules/micromark-util-classify-character/index.js", "../../node_modules/micromark-util-resolve-all/index.js", "../../node_modules/micromark-core-commonmark/lib/attention.js", "../../node_modules/micromark-core-commonmark/lib/autolink.js", "../../node_modules/micromark-core-commonmark/lib/blank-line.js", "../../node_modules/micromark-core-commonmark/lib/block-quote.js", "../../node_modules/micromark-core-commonmark/lib/character-escape.js", "../../node_modules/micromark-core-commonmark/lib/character-reference.js", "../../node_modules/micromark-core-commonmark/lib/code-fenced.js", "../../node_modules/micromark-core-commonmark/lib/code-indented.js", "../../node_modules/micromark-core-commonmark/lib/code-text.js", "../../node_modules/micromark-util-subtokenize/lib/splice-buffer.js", "../../node_modules/micromark-util-subtokenize/index.js", "../../node_modules/micromark-core-commonmark/lib/content.js", "../../node_modules/micromark-factory-destination/index.js", "../../node_modules/micromark-factory-label/index.js", "../../node_modules/micromark-factory-title/index.js", "../../node_modules/micromark-factory-whitespace/index.js", "../../node_modules/micromark-core-commonmark/lib/definition.js", "../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js", "../../node_modules/micromark-core-commonmark/lib/heading-atx.js", "../../node_modules/micromark-util-html-tag-name/index.js", "../../node_modules/micromark-core-commonmark/lib/html-flow.js", "../../node_modules/micromark-core-commonmark/lib/html-text.js", "../../node_modules/micromark-core-commonmark/lib/label-end.js", "../../node_modules/micromark-core-commonmark/lib/label-start-image.js", "../../node_modules/micromark-core-commonmark/lib/label-start-link.js", "../../node_modules/micromark-core-commonmark/lib/line-ending.js", "../../node_modules/micromark-core-commonmark/lib/thematic-break.js", "../../node_modules/micromark-core-commonmark/lib/list.js", "../../node_modules/micromark-core-commonmark/lib/setext-underline.js", "../../node_modules/micromark/lib/initialize/flow.js", "../../node_modules/micromark/lib/initialize/text.js", "../../node_modules/micromark/lib/constructs.js", "../../node_modules/micromark/lib/create-tokenizer.js", "../../node_modules/micromark/lib/parse.js", "../../node_modules/micromark/lib/postprocess.js", "../../node_modules/micromark/lib/preprocess.js", "../../node_modules/micromark-util-decode-string/index.js", "../../node_modules/unist-util-stringify-position/lib/index.js", "../../node_modules/mdast-util-from-markdown/lib/index.js", "../../node_modules/remark-parse/lib/index.js", "../../node_modules/zwitch/index.js", "../../node_modules/mdast-util-to-markdown/lib/configure.js", "../../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js", "../../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js", "../../node_modules/mdast-util-to-markdown/lib/handle/break.js", "../../node_modules/longest-streak/index.js", "../../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-fence.js", "../../node_modules/mdast-util-to-markdown/lib/handle/code.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-quote.js", "../../node_modules/mdast-util-to-markdown/lib/handle/definition.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js", "../../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js", "../../node_modules/mdast-util-to-markdown/lib/util/encode-info.js", "../../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js", "../../node_modules/unist-util-is/lib/index.js", "../../node_modules/unist-util-visit-parents/lib/index.js", "../../node_modules/unist-util-visit/lib/index.js", "../../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js", "../../node_modules/mdast-util-to-markdown/lib/handle/heading.js", "../../node_modules/mdast-util-to-markdown/lib/handle/html.js", "../../node_modules/mdast-util-to-markdown/lib/handle/image.js", "../../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js", "../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js", "../../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js", "../../node_modules/mdast-util-to-markdown/lib/handle/link.js", "../../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-rule.js", "../../node_modules/mdast-util-to-markdown/lib/handle/list.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js", "../../node_modules/mdast-util-to-markdown/lib/handle/list-item.js", "../../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js", "../../node_modules/mdast-util-phrasing/lib/index.js", "../../node_modules/mdast-util-to-markdown/lib/handle/root.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-strong.js", "../../node_modules/mdast-util-to-markdown/lib/handle/strong.js", "../../node_modules/mdast-util-to-markdown/lib/handle/text.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js", "../../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js", "../../node_modules/mdast-util-to-markdown/lib/handle/index.js", "../../node_modules/mdast-util-to-markdown/lib/join.js", "../../node_modules/mdast-util-to-markdown/lib/unsafe.js", "../../node_modules/mdast-util-to-markdown/lib/util/association.js", "../../node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js", "../../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js", "../../node_modules/mdast-util-to-markdown/lib/util/container-flow.js", "../../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js", "../../node_modules/mdast-util-to-markdown/lib/util/safe.js", "../../node_modules/mdast-util-to-markdown/lib/util/track.js", "../../node_modules/mdast-util-to-markdown/lib/index.js", "../../node_modules/remark-stringify/lib/index.js", "../../node_modules/bail/index.js", "../../node_modules/unified/lib/index.js", "../../node_modules/unified/node_modules/is-plain-obj/index.js", "../../node_modules/trough/lib/index.js", "../../node_modules/vfile-message/lib/index.js", "../../node_modules/vfile/lib/minpath.browser.js", "../../node_modules/vfile/lib/minproc.browser.js", "../../node_modules/vfile/lib/minurl.shared.js", "../../node_modules/vfile/lib/minurl.browser.js", "../../node_modules/vfile/lib/index.js", "../../node_modules/unified/lib/callable-instance.js", "../../node_modules/orderedmap/dist/index.js", "../../node_modules/prosemirror-model/dist/index.js", "../../node_modules/prosemirror-transform/dist/index.js", "../../node_modules/prosemirror-state/dist/index.js", "../../node_modules/prosemirror-commands/dist/index.js", "../../node_modules/prosemirror-inputrules/dist/index.js", "../../node_modules/@milkdown/prose/src/toolkit/browser.ts", "../../node_modules/@milkdown/prose/src/toolkit/input-rules/custom-input-rules.ts", "../../node_modules/@milkdown/prose/src/toolkit/input-rules/mark-rule.ts", "../../node_modules/@milkdown/prose/src/toolkit/input-rules/node-rule.ts", "../../node_modules/@milkdown/prose/src/toolkit/position/index.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/helper.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/node.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/schema.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/selection.ts", "../../node_modules/w3c-keyname/index.js", "../../node_modules/prosemirror-keymap/dist/index.js", "../../node_modules/@milkdown/transformer/src/utility/stack.ts", "../../node_modules/@milkdown/transformer/src/parser/stack-element.ts", "../../node_modules/@milkdown/transformer/src/parser/state.ts", "../../node_modules/@milkdown/transformer/src/serializer/stack-element.ts", "../../node_modules/@milkdown/transformer/src/serializer/state.ts", "../../node_modules/prosemirror-view/dist/index.js", "../../node_modules/@milkdown/core/src/__internal__/utils.ts", "../../node_modules/@milkdown/core/src/__internal__/remark-handlers.ts", "../../node_modules/@milkdown/core/src/internal-plugin/atoms.ts", "../../node_modules/@milkdown/core/src/internal-plugin/config.ts", "../../node_modules/@milkdown/core/src/internal-plugin/init.ts", "../../node_modules/@milkdown/core/src/internal-plugin/schema.ts", "../../node_modules/@milkdown/core/src/internal-plugin/commands.ts", "../../node_modules/@milkdown/core/src/internal-plugin/keymap.ts", "../../node_modules/@milkdown/core/src/internal-plugin/parser.ts", "../../node_modules/@milkdown/core/src/internal-plugin/serializer.ts", "../../node_modules/@milkdown/core/src/internal-plugin/editor-state.ts", "../../node_modules/@milkdown/core/src/internal-plugin/paste-rule.ts", "../../node_modules/@milkdown/core/src/internal-plugin/editor-view.ts", "../../node_modules/@milkdown/core/src/editor/editor.ts", "../../node_modules/mdast-util-math/lib/index.js", "../../node_modules/micromark-extension-math/lib/math-flow.js", "../../node_modules/micromark-extension-math/lib/math-text.js", "../../node_modules/micromark-extension-math/lib/syntax.js", "../../node_modules/katex/dist/katex.mjs", "../../node_modules/remark-math/lib/index.js", "../../node_modules/nanoid/index.browser.js", "../../node_modules/@milkdown/utils/src/composable/utils.ts", "../../node_modules/@milkdown/utils/src/composable/$command.ts", "../../node_modules/@milkdown/utils/src/composable/$input-rule.ts", "../../node_modules/@milkdown/utils/src/composable/$paste-rule.ts", "../../node_modules/@milkdown/utils/src/composable/$mark.ts", "../../node_modules/@milkdown/utils/src/composable/$node.ts", "../../node_modules/@milkdown/utils/src/composable/$prose.ts", "../../node_modules/@milkdown/utils/src/composable/$shortcut.ts", "../../node_modules/@milkdown/utils/src/composable/$view.ts", "../../node_modules/@milkdown/utils/src/composable/$ctx.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$node-schema.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$mark-schema.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$use-keymap.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$attr.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$remark.ts", "../../node_modules/@milkdown/utils/src/macro/call-command.ts", "../../node_modules/@milkdown/utils/src/macro/force-update.ts", "../../node_modules/@milkdown/utils/src/macro/get-html.ts", "../../node_modules/@milkdown/utils/src/macro/get-markdown.ts", "../../node_modules/@milkdown/utils/src/macro/insert.ts", "../../node_modules/@milkdown/utils/src/macro/outline.ts", "../../node_modules/@milkdown/utils/src/macro/replace-all.ts", "../../node_modules/@milkdown/utils/src/macro/set-attr.ts", "../../node_modules/@milkdown/utils/src/macro/markdown-to-slice.ts", "../../node_modules/@milkdown/utils/src/macro/insert-pos.ts", "../../node_modules/@milkdown/utils/src/macro/replace-range.ts", "../../node_modules/@milkdown/utils/src/pipe.ts", "../../node_modules/prosemirror-schema-list/dist/index.js", "../../node_modules/mdast-util-definitions/lib/index.js", "../../node_modules/remark-inline-links/lib/index.js", "../../node_modules/@milkdown/preset-commonmark/src/__internal__/serialize-text.ts", "../../node_modules/@milkdown/preset-commonmark/src/__internal__/with-meta.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/emphasis.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/strong.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/inline-code.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/link.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/doc.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-preserve-empty-line.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/paragraph.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/heading.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/blockquote.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/code-block.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/image.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/hardbreak.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/hr.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/bullet-list.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/ordered-list.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/list-item.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/text.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/html.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/schema.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/inputrules.ts", "../../node_modules/@milkdown/preset-commonmark/src/commands/index.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/commands.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/keymap.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-add-order-in-list-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-line-break.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-inline-link-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-html-transformer.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-marker-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/inline-nodes-cursor-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/hardbreak-clear-mark-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/hardbreak-filter-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/sync-heading-id-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/sync-list-order-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/plugins.ts", "../../node_modules/@milkdown/preset-commonmark/src/index.ts", "../../node_modules/prosemirror-tables/src/tablemap.ts", "../../node_modules/prosemirror-tables/src/schema.ts", "../../node_modules/prosemirror-tables/src/util.ts", "../../node_modules/prosemirror-tables/src/cellselection.ts", "../../node_modules/prosemirror-tables/src/fixtables.ts", "../../node_modules/prosemirror-tables/src/utils/convert.ts", "../../node_modules/prosemirror-tables/src/utils/move-row-in-array-of-rows.ts", "../../node_modules/prosemirror-tables/src/utils/query.ts", "../../node_modules/prosemirror-tables/src/utils/get-cells.ts", "../../node_modules/prosemirror-tables/src/utils/selection-range.ts", "../../node_modules/prosemirror-tables/src/utils/transpose.ts", "../../node_modules/prosemirror-tables/src/utils/move-column.ts", "../../node_modules/prosemirror-tables/src/utils/move-row.ts", "../../node_modules/prosemirror-tables/src/commands.ts", "../../node_modules/prosemirror-tables/src/copypaste.ts", "../../node_modules/prosemirror-tables/src/input.ts", "../../node_modules/prosemirror-tables/src/tableview.ts", "../../node_modules/prosemirror-tables/src/columnresizing.ts", "../../node_modules/prosemirror-tables/src/index.ts", "../../node_modules/prosemirror-safari-ime-span/dist/index.js", "../../node_modules/ccount/index.js", "../../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js", "../../node_modules/mdast-util-find-and-replace/lib/index.js", "../../node_modules/mdast-util-gfm-autolink-literal/lib/index.js", "../../node_modules/mdast-util-gfm-footnote/lib/index.js", "../../node_modules/mdast-util-gfm-strikethrough/lib/index.js", "../../node_modules/markdown-table/index.js", "../../node_modules/mdast-util-gfm-table/lib/index.js", "../../node_modules/mdast-util-gfm-task-list-item/lib/index.js", "../../node_modules/mdast-util-gfm/lib/index.js", "../../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js", "../../node_modules/micromark-extension-gfm-footnote/lib/syntax.js", "../../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js", "../../node_modules/micromark-extension-gfm-table/lib/edit-map.js", "../../node_modules/micromark-extension-gfm-table/lib/infer.js", "../../node_modules/micromark-extension-gfm-table/lib/syntax.js", "../../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js", "../../node_modules/micromark-extension-gfm/index.js", "../../node_modules/remark-gfm/lib/index.js", "../../node_modules/@milkdown/preset-gfm/src/__internal__/with-meta.ts", "../../node_modules/@milkdown/preset-gfm/src/mark/strike-through.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/schema.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/create-table.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/get-cells-in-col.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/get-cells-in-row.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/select-line.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/add-row-with-alignment.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/get-all-cells-in-table.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/select-table.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/command.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/input.ts", "../../node_modules/@milkdown/preset-gfm/src/node/footnote/definition.ts", "../../node_modules/@milkdown/preset-gfm/src/node/footnote/reference.ts", "../../node_modules/@milkdown/preset-gfm/src/node/task-list-item.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/keymap.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/inputrules.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/pasterules.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/auto-insert-span-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/column-resizing-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/table-editing-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/remark-gfm-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/keep-table-align-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/plugins.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/schema.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/commands.ts", "../../node_modules/@milkdown/preset-gfm/src/index.ts", "../../node_modules/lodash-es/_freeGlobal.js", "../../node_modules/lodash-es/_root.js", "../../node_modules/lodash-es/_Symbol.js", "../../node_modules/lodash-es/_getRawTag.js", "../../node_modules/lodash-es/_objectToString.js", "../../node_modules/lodash-es/_baseGetTag.js", "../../node_modules/lodash-es/isObjectLike.js", "../../node_modules/lodash-es/isSymbol.js", "../../node_modules/lodash-es/_trimmedEndIndex.js", "../../node_modules/lodash-es/_baseTrim.js", "../../node_modules/lodash-es/isObject.js", "../../node_modules/lodash-es/toNumber.js", "../../node_modules/lodash-es/now.js", "../../node_modules/lodash-es/debounce.js", "../../node_modules/@milkdown/plugin-listener/src/index.ts", "../../node_modules/@milkdown/plugin-clipboard/src/__internal__/is-pure-text.ts", "../../node_modules/@milkdown/plugin-clipboard/src/__internal__/with-meta.ts", "../../node_modules/@milkdown/plugin-clipboard/src/index.ts", "../../node_modules/rope-sequence/dist/index.js", "../../node_modules/prosemirror-history/dist/index.js", "../../node_modules/@milkdown/plugin-history/src/index.ts", "../../node_modules/@milkdown/plugin-trailing/src/index.ts", "../../src/markdown/codeBlockActions.ts", "../../src/utils/html.ts", "../../src/markdown/features.ts", "../../node_modules/@shikijs/types/dist/index.mjs", "../../node_modules/@shikijs/vscode-textmate/dist/index.js", "../../node_modules/@shikijs/primitive/dist/index.mjs", "../../node_modules/html-void-elements/index.js", "../../node_modules/property-information/lib/util/schema.js", "../../node_modules/property-information/lib/util/merge.js", "../../node_modules/property-information/lib/normalize.js", "../../node_modules/property-information/lib/util/info.js", "../../node_modules/property-information/lib/util/types.js", "../../node_modules/property-information/lib/util/defined-info.js", "../../node_modules/property-information/lib/util/create.js", "../../node_modules/property-information/lib/aria.js", "../../node_modules/property-information/lib/util/case-sensitive-transform.js", "../../node_modules/property-information/lib/util/case-insensitive-transform.js", "../../node_modules/property-information/lib/html.js", "../../node_modules/property-information/lib/svg.js", "../../node_modules/property-information/lib/xlink.js", "../../node_modules/property-information/lib/xmlns.js", "../../node_modules/property-information/lib/xml.js", "../../node_modules/property-information/lib/find.js", "../../node_modules/property-information/index.js", "../../node_modules/stringify-entities/lib/core.js", "../../node_modules/stringify-entities/lib/util/to-hexadecimal.js", "../../node_modules/stringify-entities/lib/util/to-decimal.js", "../../node_modules/character-entities-legacy/index.js", "../../node_modules/character-entities-html4/index.js", "../../node_modules/stringify-entities/lib/constant/dangerous.js", "../../node_modules/stringify-entities/lib/util/to-named.js", "../../node_modules/stringify-entities/lib/util/format-smart.js", "../../node_modules/stringify-entities/lib/index.js", "../../node_modules/hast-util-to-html/lib/handle/comment.js", "../../node_modules/hast-util-to-html/lib/handle/doctype.js", "../../node_modules/comma-separated-tokens/index.js", "../../node_modules/space-separated-tokens/index.js", "../../node_modules/hast-util-whitespace/lib/index.js", "../../node_modules/hast-util-to-html/lib/omission/util/siblings.js", "../../node_modules/hast-util-to-html/lib/omission/omission.js", "../../node_modules/hast-util-to-html/lib/omission/closing.js", "../../node_modules/hast-util-to-html/lib/omission/opening.js", "../../node_modules/hast-util-to-html/lib/handle/element.js", "../../node_modules/hast-util-to-html/lib/handle/text.js", "../../node_modules/hast-util-to-html/lib/handle/raw.js", "../../node_modules/hast-util-to-html/lib/handle/root.js", "../../node_modules/hast-util-to-html/lib/handle/index.js", "../../node_modules/hast-util-to-html/lib/index.js", "../../node_modules/@shikijs/core/dist/index.mjs", "../../node_modules/@shikijs/engine-javascript/dist/scanner-BFcBmQR1.mjs", "../../node_modules/oniguruma-parser/src/utils.ts", "../../node_modules/oniguruma-parser/src/tokenizer/tokenize.ts", "../../node_modules/oniguruma-parser/src/parser/node-utils.ts", "../../node_modules/oniguruma-parser/src/parser/parse.ts", "../../node_modules/oniguruma-parser/src/traverser/traverse.ts", "../../node_modules/regex/src/utils-internals.js", "../../node_modules/regex-utilities/src/index.js", "../../node_modules/regex/src/atomic.js", "../../node_modules/regex-recursion/src/index.js", "../../node_modules/oniguruma-to-es/src/utils.js", "../../node_modules/oniguruma-to-es/src/options.js", "../../node_modules/oniguruma-to-es/src/unicode.js", "../../node_modules/oniguruma-to-es/src/transform.js", "../../node_modules/oniguruma-to-es/src/generate.js", "../../node_modules/oniguruma-to-es/src/subclass.js", "../../node_modules/oniguruma-to-es/src/index.js", "../../node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs", "../../node_modules/@shikijs/langs/dist/css.mjs", "../../node_modules/@shikijs/langs/dist/go.mjs", "../../node_modules/@shikijs/langs/dist/javascript.mjs", "../../node_modules/@shikijs/langs/dist/html.mjs", "../../node_modules/@shikijs/langs/dist/json.mjs", "../../node_modules/@shikijs/langs/dist/jsx.mjs", "../../node_modules/@shikijs/langs/dist/markdown.mjs", "../../node_modules/@shikijs/langs/dist/python.mjs", "../../node_modules/@shikijs/langs/dist/shellscript.mjs", "../../node_modules/@shikijs/langs/dist/sql.mjs", "../../node_modules/@shikijs/langs/dist/tsx.mjs", "../../node_modules/@shikijs/langs/dist/typescript.mjs", "../../node_modules/@shikijs/langs/dist/yaml.mjs", "../../node_modules/@shikijs/themes/dist/dark-plus.mjs", "../../node_modules/@shikijs/themes/dist/light-plus.mjs", "../../src/markdown/highlightLanguage.ts", "highlight-runtime.ts", "../../src/wysiwyg/toolbar.ts", "editor-runtime.ts"], - "sourcesContent": ["'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "export enum ErrorCode {\n docTypeError = 'docTypeError',\n contextNotFound = 'contextNotFound',\n timerNotFound = 'timerNotFound',\n ctxCallOutOfScope = 'ctxCallOutOfScope',\n createNodeInParserFail = 'createNodeInParserFail',\n stackOverFlow = 'stackOverFlow',\n parserMatchError = 'parserMatchError',\n serializerMatchError = 'serializerMatchError',\n getAtomFromSchemaFail = 'getAtomFromSchemaFail',\n expectDomTypeError = 'expectDomTypeError',\n callCommandBeforeEditorView = 'callCommandBeforeEditorView',\n missingRootElement = 'missingRootElement',\n missingNodeInSchema = 'missingNodeInSchema',\n missingMarkInSchema = 'missingMarkInSchema',\n\n // collab plugin\n ctxNotBind = 'ctxNotBind',\n missingYjsDoc = 'missingYjsDoc',\n}\n", "import type { ErrorCode } from './code'\n\nexport class MilkdownError extends Error {\n public code: string\n constructor(code: ErrorCode, message: string) {\n super(message)\n this.name = 'MilkdownError'\n this.code = code\n }\n}\n", "import { ErrorCode } from './code'\nimport { MilkdownError } from './error'\n\nconst functionReplacer = (_: string, value: unknown) =>\n typeof value === 'function' ? '[Function]' : value\n\nconst stringify = (x: unknown): string => JSON.stringify(x, functionReplacer)\n\nexport function docTypeError(type: unknown) {\n return new MilkdownError(\n ErrorCode.docTypeError,\n `Doc type error, unsupported type: ${stringify(type)}`\n )\n}\n\nexport function contextNotFound(name: string) {\n return new MilkdownError(\n ErrorCode.contextNotFound,\n `Context \"${name}\" not found, do you forget to inject it?`\n )\n}\n\nexport function timerNotFound(name: string) {\n return new MilkdownError(\n ErrorCode.timerNotFound,\n `Timer \"${name}\" not found, do you forget to record it?`\n )\n}\n\nexport function ctxCallOutOfScope() {\n return new MilkdownError(\n ErrorCode.ctxCallOutOfScope,\n 'Should not call a context out of the plugin.'\n )\n}\n\nexport function createNodeInParserFail(\n nodeType: object,\n attrs?: unknown,\n content?: unknown[]\n) {\n const nodeTypeName = 'name' in nodeType ? nodeType.name : nodeType\n const heading = `Cannot create node for ${nodeTypeName}`\n const serialize = (x: unknown): string => {\n if (x == null) return 'null'\n\n if (Array.isArray(x)) {\n return `[${x.map(serialize).join(', ')}]`\n }\n\n if (typeof x === 'object') {\n if ('toJSON' in x && typeof (x as any).toJSON === 'function') {\n return JSON.stringify((x as any).toJSON())\n }\n\n if ('spec' in x) {\n return JSON.stringify((x as any).spec)\n }\n\n return JSON.stringify(x)\n }\n\n if (\n typeof x === 'string' ||\n typeof x === 'number' ||\n typeof x === 'boolean'\n ) {\n return JSON.stringify(x)\n }\n\n if (typeof x === 'function') {\n return `[Function: ${(x as Function).name || 'anonymous'}]`\n }\n\n try {\n return String(x)\n } catch {\n return '[Unserializable]'\n }\n }\n\n const headingMessage = ['[Description]', heading] as const\n const attrsMessage = ['[Attributes]', attrs] as const\n const contentMessage = [\n '[Content]',\n (content ?? []).map((node) => {\n if (!node) return 'null'\n\n if (typeof node === 'object' && 'type' in node) {\n return `${node}`\n }\n\n return serialize(node)\n }),\n ] as const\n\n const messages = [headingMessage, attrsMessage, contentMessage].reduce(\n (acc, [title, value]) => {\n const message = `${title}: ${serialize(value)}.`\n return acc.concat(message)\n },\n [] as string[]\n )\n\n return new MilkdownError(\n ErrorCode.createNodeInParserFail,\n messages.join('\\n')\n )\n}\n\nexport function stackOverFlow() {\n return new MilkdownError(\n ErrorCode.stackOverFlow,\n 'Stack over flow, cannot pop on an empty stack.'\n )\n}\n\nexport function parserMatchError(node: unknown) {\n return new MilkdownError(\n ErrorCode.parserMatchError,\n `Cannot match target parser for node: ${stringify(node)}.`\n )\n}\n\nexport function serializerMatchError(node: unknown) {\n return new MilkdownError(\n ErrorCode.serializerMatchError,\n `Cannot match target serializer for node: ${stringify(node)}.`\n )\n}\n\nexport function getAtomFromSchemaFail(type: 'mark' | 'node', name: string) {\n return new MilkdownError(\n ErrorCode.getAtomFromSchemaFail,\n `Cannot get ${type}: ${name} from schema.`\n )\n}\n\nexport function expectDomTypeError(node: unknown) {\n return new MilkdownError(\n ErrorCode.expectDomTypeError,\n `Expect to be a dom, but get: ${stringify(node)}.`\n )\n}\n\nexport function callCommandBeforeEditorView() {\n return new MilkdownError(\n ErrorCode.callCommandBeforeEditorView,\n \"You're trying to call a command before editor view initialized, make sure to get commandManager from ctx after editor view has been initialized\"\n )\n}\n\nexport function missingRootElement() {\n return new MilkdownError(\n ErrorCode.missingRootElement,\n 'Missing root element, milkdown cannot find root element of the editor.'\n )\n}\n\nexport function missingNodeInSchema(name: string) {\n return new MilkdownError(\n ErrorCode.missingNodeInSchema,\n `Missing node in schema, milkdown cannot find \"${name}\" in schema.`\n )\n}\n\nexport function missingMarkInSchema(name: string) {\n return new MilkdownError(\n ErrorCode.missingMarkInSchema,\n `Missing mark in schema, milkdown cannot find \"${name}\" in schema.`\n )\n}\n\nexport function ctxNotBind() {\n return new MilkdownError(\n ErrorCode.ctxNotBind,\n 'Context not bind, please make sure the plugin has been initialized.'\n )\n}\n\nexport function missingYjsDoc() {\n return new MilkdownError(\n ErrorCode.missingYjsDoc,\n 'Missing yjs doc, please make sure you have bind one.'\n )\n}\n", "import { contextNotFound } from '@milkdown/exception'\n\nimport type { Slice, SliceType } from './slice'\n\n/// @internal\nexport type SliceMap = Map<symbol, Slice>\n\n/// Container is a map of slices.\nexport class Container {\n /// @internal\n sliceMap: SliceMap = new Map()\n\n /// Get a slice from the container by slice type or slice name.\n get = <T, N extends string = string>(\n slice: SliceType<T, N> | N\n ): Slice<T, N> => {\n const context =\n typeof slice === 'string'\n ? [...this.sliceMap.values()].find((x) => x.type.name === slice)\n : this.sliceMap.get(slice.id)\n\n if (!context) {\n const name = typeof slice === 'string' ? slice : slice.name\n throw contextNotFound(name)\n }\n return context as Slice<T, N>\n }\n\n /// Remove a slice from the container by slice type or slice name.\n remove = <T, N extends string = string>(slice: SliceType<T, N> | N): void => {\n const context =\n typeof slice === 'string'\n ? [...this.sliceMap.values()].find((x) => x.type.name === slice)\n : this.sliceMap.get(slice.id)\n\n if (!context) return\n\n this.sliceMap.delete(context.type.id)\n }\n\n /// Check if the container has a slice by slice type or slice name.\n has = <T, N extends string = string>(slice: SliceType<T, N> | N): boolean => {\n if (typeof slice === 'string')\n return [...this.sliceMap.values()].some((x) => x.type.name === slice)\n\n return this.sliceMap.has(slice.id)\n }\n}\n", "import { ctxCallOutOfScope } from '@milkdown/exception'\n\nimport type { SliceMap } from './container'\n\n/// Slice is a value of slice type.\nexport class Slice<T = any, N extends string = string> {\n /// The type of the slice.\n readonly type: SliceType<T, N>\n\n /// @internal\n #watchers: Array<(value: T) => unknown> = []\n\n /// @internal\n #value: T\n\n /// @internal\n #emit = () => {\n this.#watchers.forEach((watcher) => watcher(this.#value))\n }\n\n /// @internal\n constructor(container: SliceMap, value: T, type: SliceType<T, N>) {\n this.type = type\n this.#value = value\n container.set(type.id, this)\n }\n\n /// Add a watcher for changes in the slice.\n /// Returns a function to remove the watcher.\n on(watcher: (value: T) => unknown) {\n this.#watchers.push(watcher)\n return () => {\n this.#watchers = this.#watchers.filter((w) => w !== watcher)\n }\n }\n\n /// Add a one-time watcher for changes in the slice.\n /// The watcher will be removed after it is called.\n /// Returns a function to remove the watcher.\n once(watcher: (value: T) => unknown) {\n const off = this.on((value) => {\n watcher(value)\n off()\n })\n return off\n }\n\n /// Remove a watcher.\n off(watcher: (value: T) => unknown) {\n this.#watchers = this.#watchers.filter((w) => w !== watcher)\n }\n\n /// Remove all watchers.\n offAll() {\n this.#watchers = []\n }\n\n /// Set the value of the slice.\n set = (value: T) => {\n this.#value = value\n this.#emit()\n }\n\n /// Get the value of the slice.\n get = () => this.#value\n\n /// Update the value of the slice with a callback.\n update = (updater: (prev: T) => T) => {\n this.#value = updater(this.#value)\n this.#emit()\n }\n}\n\n/// Slice type can be used to create slices in different containers.\nexport class SliceType<T = any, N extends string = string> {\n /// The unique id of the slice type.\n readonly id: symbol\n /// The name of the slice type.\n readonly name: N\n /// @internal\n readonly _typeInfo: () => T\n /// @internal\n readonly _defaultValue: T\n\n /// Create a slice type with a default value and a name.\n /// The name should be unique in the container.\n constructor(value: T, name: N) {\n this.id = Symbol(`Context-${name}`)\n this.name = name\n this._defaultValue = value\n this._typeInfo = (): T => {\n throw ctxCallOutOfScope()\n }\n }\n\n /// Create a slice with a container.\n /// You can also pass a value to override the default value.\n create(container: SliceMap, value: T = this._defaultValue): Slice<T, N> {\n return new Slice(container, value, this)\n }\n}\n\n/// Create a slice type with a default value and a name.\n/// This is equivalent to `new SliceType(value, name)`.\nexport const createSlice = <T = any, N extends string = string>(\n value: T,\n name: N\n) => new SliceType(value, name)\n", "import type { Container, SliceType } from '../context'\nimport type { Clock, TimerStatus, TimerType } from '../timer'\nimport type { Meta } from './meta'\n\nexport interface Telemetry {\n metadata: Meta\n injectedSlices: { name: string; value: unknown }[]\n consumedSlices: { name: string; value: unknown }[]\n recordedTimers: { name: string; duration: number; status: TimerStatus }[]\n waitTimers: { name: string; duration: number; status: TimerStatus }[]\n}\n\n/// The inspector object that is used to inspect the runtime environment of a ctx.\nexport class Inspector {\n /// @internal\n readonly #meta: Meta\n\n /// @internal\n readonly #container: Container\n\n /// @internal\n readonly #clock: Clock\n\n /// @internal\n readonly #injectedSlices: Set<SliceType | string> = new Set()\n\n /// @internal\n readonly #consumedSlices: Set<SliceType | string> = new Set()\n\n /// @internal\n readonly #recordedTimers: Map<\n TimerType,\n { duration: number; start: number }\n > = new Map()\n\n /// @internal\n readonly #waitTimers: Map<TimerType, { duration: number }> = new Map()\n\n /// Create an inspector with container, clock and metadata.\n constructor(container: Container, clock: Clock, meta: Meta) {\n this.#container = container\n this.#clock = clock\n this.#meta = meta\n }\n\n /// Read the runtime telemetry as an object of the ctx.\n read = (): Telemetry => {\n return {\n metadata: this.#meta,\n injectedSlices: [...this.#injectedSlices].map((slice) => ({\n name: typeof slice === 'string' ? slice : slice.name,\n value: this.#getSlice(slice),\n })),\n consumedSlices: [...this.#consumedSlices].map((slice) => ({\n name: typeof slice === 'string' ? slice : slice.name,\n value: this.#getSlice(slice),\n })),\n recordedTimers: [...this.#recordedTimers].map(\n ([timer, { duration }]) => ({\n name: timer.name,\n duration,\n status: this.#getTimer(timer),\n })\n ),\n waitTimers: [...this.#waitTimers].map(([timer, { duration }]) => ({\n name: timer.name,\n duration,\n status: this.#getTimer(timer),\n })),\n }\n }\n\n /// @internal\n readonly onRecord = (timerType: TimerType) => {\n this.#recordedTimers.set(timerType, { start: Date.now(), duration: 0 })\n }\n\n /// @internal\n readonly onClear = (timerType: TimerType) => {\n this.#recordedTimers.delete(timerType)\n }\n\n /// @internal\n readonly onDone = (timerType: TimerType) => {\n const timer = this.#recordedTimers.get(timerType)\n if (!timer) return\n timer.duration = Date.now() - timer.start\n }\n\n /// @internal\n readonly onWait = (timerType: TimerType, promise: Promise<void>) => {\n const start = Date.now()\n promise\n .finally(() => {\n this.#waitTimers.set(timerType, { duration: Date.now() - start })\n })\n .catch(console.error)\n }\n\n /// @internal\n readonly onInject = (sliceType: SliceType | string) => {\n this.#injectedSlices.add(sliceType)\n }\n\n /// @internal\n readonly onRemove = (sliceType: SliceType | string) => {\n this.#injectedSlices.delete(sliceType)\n }\n\n /// @internal\n readonly onUse = (sliceType: SliceType | string) => {\n this.#consumedSlices.add(sliceType)\n }\n\n /// @internal\n #getSlice = (sliceType: SliceType | string) => {\n return this.#container.get(sliceType).get()\n }\n\n /// @internal\n #getTimer = (timerType: TimerType) => {\n return this.#clock.get(timerType).status\n }\n}\n", "import type { Container, Slice, SliceType } from '../context'\nimport type { Meta } from '../inspector'\nimport type { Clock, TimerType } from '../timer'\n\nimport { Inspector } from '../inspector'\n\n/// The ctx object that can be accessed in plugin and action.\nexport class Ctx {\n /// @internal\n readonly #container: Container\n /// @internal\n readonly #clock: Clock\n /// @internal\n readonly #meta?: Meta\n /// @internal\n readonly #inspector?: Inspector\n\n /// Create a ctx object with container and clock.\n constructor(container: Container, clock: Clock, meta?: Meta) {\n this.#container = container\n this.#clock = clock\n this.#meta = meta\n if (meta) this.#inspector = new Inspector(container, clock, meta)\n }\n\n /// Get metadata of the ctx.\n get meta() {\n return this.#meta\n }\n\n /// Get the inspector of the ctx.\n get inspector() {\n return this.#inspector\n }\n\n /// Produce a new ctx with metadata.\n /// The new ctx will link to the same container and clock with the current ctx.\n /// If the metadata is empty, it will return the current ctx.\n readonly produce = (meta?: Meta) => {\n if (meta && Object.keys(meta).length)\n return new Ctx(this.#container, this.#clock, { ...meta })\n\n return this\n }\n\n /// Add a slice into the ctx.\n readonly inject = <T>(sliceType: SliceType<T>, value?: T) => {\n const slice = sliceType.create(this.#container.sliceMap)\n if (value != null) slice.set(value)\n\n this.#inspector?.onInject(sliceType)\n\n return this\n }\n\n /// Remove a slice from the ctx.\n readonly remove = <T, N extends string = string>(\n sliceType: SliceType<T, N> | N\n ) => {\n this.#container.remove(sliceType)\n this.#inspector?.onRemove(sliceType)\n return this\n }\n\n /// Add a timer into the ctx.\n readonly record = (timerType: TimerType) => {\n timerType.create(this.#clock.store)\n this.#inspector?.onRecord(timerType)\n return this\n }\n\n /// Remove a timer from the ctx.\n readonly clearTimer = (timerType: TimerType) => {\n this.#clock.remove(timerType)\n this.#inspector?.onClear(timerType)\n return this\n }\n\n /// Check if the ctx has a slice.\n readonly isInjected = <T, N extends string = string>(\n sliceType: SliceType<T, N> | N\n ) => this.#container.has(sliceType)\n\n /// Check if the ctx has a timer.\n readonly isRecorded = (timerType: TimerType) => this.#clock.has(timerType)\n\n /// Get a slice from the ctx.\n readonly use = <T, N extends string = string>(\n sliceType: SliceType<T, N> | N\n ): Slice<T, N> => {\n this.#inspector?.onUse(sliceType)\n return this.#container.get(sliceType)\n }\n\n /// Get a slice value from the ctx.\n readonly get = <T, N extends string>(sliceType: SliceType<T, N> | N) =>\n this.use(sliceType).get()\n\n /// Get a slice value from the ctx.\n readonly set = <T, N extends string>(\n sliceType: SliceType<T, N> | N,\n value: T\n ) => this.use(sliceType).set(value)\n\n /// Update a slice value from the ctx by a callback.\n readonly update = <T, N extends string>(\n sliceType: SliceType<T, N> | N,\n updater: (prev: T) => T\n ) => this.use(sliceType).update(updater)\n\n /// Get a timer from the ctx.\n readonly timer = (timer: TimerType) => this.#clock.get(timer)\n\n /// Resolve a timer from the ctx.\n readonly done = (timer: TimerType) => {\n this.timer(timer).done()\n this.#inspector?.onDone(timer)\n }\n\n /// Start a timer from the ctx.\n readonly wait = (timer: TimerType) => {\n const promise = this.timer(timer).start()\n this.#inspector?.onWait(timer, promise)\n return promise\n }\n\n /// Start a list of timers from the ctx, the list is stored in a slice in the ctx.\n /// This is equivalent to\n ///\n /// ```typescript\n /// Promise.all(ctx.get(slice).map(x => ctx.wait(x))).\n /// ```\n readonly waitTimers = async (slice: SliceType<TimerType[]>) => {\n await Promise.all(this.get(slice).map((x) => this.wait(x)))\n }\n}\n", "import { timerNotFound } from '@milkdown/exception'\n\nimport type { Timer, TimerType } from './timer'\n\n/// @internal\nexport type TimerMap = Map<symbol, Timer>\n\n/// Container is a map of timers.\nexport class Clock {\n /// @internal\n readonly store: TimerMap = new Map()\n\n /// Get a timer from the clock by timer type.\n get = (timer: TimerType) => {\n const meta = this.store.get(timer.id)\n if (!meta) throw timerNotFound(timer.name)\n return meta\n }\n\n /// Remove a timer from the clock by timer type.\n remove = (timer: TimerType) => {\n this.store.delete(timer.id)\n }\n\n // Check if the clock has a timer by timer type.\n has = (timer: TimerType) => {\n return this.store.has(timer.id)\n }\n}\n", "import type { TimerMap } from './clock'\n\nexport type TimerStatus = 'pending' | 'resolved' | 'rejected'\n\n/// Timer is a promise that can be resolved by calling done.\nexport class Timer {\n /// The type of the timer.\n readonly type: TimerType\n\n /// @internal\n #promise: Promise<void> | null = null\n /// @internal\n #listener: EventListener | null = null\n /// @internal\n readonly #eventUniqId: symbol\n /// @internal\n #status: TimerStatus = 'pending'\n\n /// @internal\n constructor(clock: TimerMap, type: TimerType) {\n this.#eventUniqId = Symbol(type.name)\n this.type = type\n clock.set(type.id, this)\n }\n\n /// The status of the timer.\n /// Can be `pending`, `resolved` or `rejected`.\n get status() {\n return this.#status\n }\n\n /// Start the timer, which will return a promise.\n /// If the timer is already started, it will return the same promise.\n /// If the timer is not resolved in the timeout, it will reject the promise.\n start = () => {\n this.#promise ??= new Promise((resolve, reject) => {\n this.#listener = (e: Event) => {\n if (!(e instanceof CustomEvent)) return\n\n if (e.detail.id === this.#eventUniqId) {\n this.#status = 'resolved'\n this.#removeListener()\n e.stopImmediatePropagation()\n resolve()\n }\n }\n\n this.#waitTimeout(() => {\n if (this.#status === 'pending') this.#status = 'rejected'\n\n this.#removeListener()\n reject(new Error(`Timing ${this.type.name} timeout.`))\n })\n\n this.#status = 'pending'\n addEventListener(this.type.name, this.#listener)\n })\n\n return this.#promise\n }\n\n /// Resolve the timer.\n done = () => {\n const event = new CustomEvent(this.type.name, {\n detail: { id: this.#eventUniqId },\n })\n dispatchEvent(event)\n }\n\n /// @internal\n #removeListener = () => {\n if (this.#listener) removeEventListener(this.type.name, this.#listener)\n }\n\n /// @internal\n #waitTimeout = (ifTimeout: () => void) => {\n setTimeout(() => {\n ifTimeout()\n }, this.type.timeout)\n }\n}\n\n/// Timer type can be used to create timers in different clocks.\nexport class TimerType {\n /// The unique id of the timer type.\n readonly id: symbol\n /// The name of the timer type.\n readonly name: string\n /// The timeout of the timer type.\n readonly timeout: number\n\n /// Create a timer type with a name and a timeout.\n /// The name should be unique in the clock.\n constructor(name: string, timeout = 3000) {\n this.id = Symbol(`Timer-${name}`)\n this.name = name\n this.timeout = timeout\n }\n\n /// Create a timer with a clock.\n create = (clock: TimerMap): Timer => {\n return new Timer(clock, this)\n }\n}\n\n/// Create a timer type with a name and a timeout.\n/// This is equivalent to `new TimerType(name, timeout)`.\nexport const createTimer = (name: string, timeout = 3000) =>\n new TimerType(name, timeout)\n", "/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n", "/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const character = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `\u00ACit;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n if (\n character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n value !== 'semi'\n ) {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n return character === characterReference ? false : character\n}\n", "/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {undefined}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array<unknown>} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there\u2019s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it\u2019s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it\u2019s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}", "/**\n * @import {\n * Extension,\n * Handles,\n * HtmlExtension,\n * NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * List of constructs to merge into.\n * @param {Array<unknown>} list\n * List of constructs to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n", "/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}", "/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered \u201Cuppercase\u201D, such as U+03F4 (`\u03F4`), but if their\n * lowercase counterpart (U+03B8 (`\u03B8`)) is uppercased will result in a different\n * uppercase character (U+0398 (`\u0398`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, \" \")\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered \u201Cuppercase\u201D, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `\u2409` represents a tab (plus how much it expands) and `\u2420` represents a\n * single space.\n *\n * ```markdown\n * \u2409\n * \u2420\u2420\u2420\u2420\n * \u2409\u2420\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns {State}\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}", "/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n * Content.\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, contentStart, \"linePrefix\");\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter(\"paragraph\");\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(\"chunkText\", {\n contentType: \"text\",\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit(\"chunkText\");\n effects.exit(\"paragraph\");\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit(\"chunkText\");\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}", "/**\n * @import {\n * Construct,\n * ContainerState,\n * InitialConstruct,\n * Initializer,\n * Point,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n * Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array<StackItem>} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it\u2019s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they\u2019re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there\u2019s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can\u2019t have containers \u201Cpierce\u201D into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we\u2019d be interrupting it w/ a new container if there\u2019s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter(\"chunkFlow\", {\n _tokenizer: childFlow,\n contentType: \"flow\",\n previous: childToken\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit(\"chunkFlow\"), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit(\"chunkFlow\"));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * Token.\n * @param {boolean | undefined} [endOfFile]\n * Whether the token is at the end of the file (default: `false`).\n * @returns {undefined}\n * Nothing.\n */\n function writeToChild(token, endOfFile) {\n const stream = self.sliceStream(token);\n if (endOfFile) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can\u2019t \u201Cunmake\u201D it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which \u201Cunmakes\u201D the first line\n // and turns the whole into one content block.\n //\n // We\u2019ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending\u2026\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // \u2026and either is not ended yet\u2026\n !childFlow.events[index][1].end ||\n // \u2026or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there\u2019s still something open, which means it\u2019s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they\u2019re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * Size.\n * @returns {undefined}\n * Nothing.\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n * Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > \uD83D\uDC49 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}", "/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n", "/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array<Event>} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it\u2019s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don\u2019t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n partial: true,\n tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n *\n * ```markdown\n * > | \u2420\u2420\u240A\n * ^\n * > | \u240A\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n *\n * ```markdown\n * > | \u2420\u2420\u240A\n * ^\n * > | \u240A\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit,\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter(\"blockQuote\", {\n _container: true\n });\n state.open = true;\n }\n effects.enter(\"blockQuotePrefix\");\n effects.enter(\"blockQuoteMarker\");\n effects.consume(code);\n effects.exit(\"blockQuoteMarker\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter(\"blockQuotePrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"blockQuotePrefixWhitespace\");\n effects.exit(\"blockQuotePrefix\");\n return ok;\n }\n effects.exit(\"blockQuotePrefix\");\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(\"blockQuote\");\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n partial: true,\n tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter(\"codeIndented\");\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(\"codeIndented\");\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can\u2019t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can\u2019t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don\u2019t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don\u2019t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}", "/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n * - Array-length modifications at the high end of an array (push/pop) are\n * expected to be common and are implemented in (amortized) time\n * proportional to the number of elements added or removed, whereas\n * other operations (shift/unshift and splice) are much less efficient.\n * - Function arguments are passed on the stack, so adding tens of thousands\n * of elements to an array with `arr.push(...newElements)` will frequently\n * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n * Item type.\n */\nexport class SpliceBuffer {\n /**\n * @param {ReadonlyArray<T> | null | undefined} [initial]\n * Initial items (optional).\n * @returns\n * Splice buffer.\n */\n constructor(initial) {\n /** @type {Array<T>} */\n this.left = initial ? [...initial] : [];\n /** @type {Array<T>} */\n this.right = [];\n }\n\n /**\n * Array access;\n * does not move the cursor.\n *\n * @param {number} index\n * Index.\n * @return {T}\n * Item.\n */\n get(index) {\n if (index < 0 || index >= this.left.length + this.right.length) {\n throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n }\n if (index < this.left.length) return this.left[index];\n return this.right[this.right.length - index + this.left.length - 1];\n }\n\n /**\n * The length of the splice buffer, one greater than the largest index in the\n * array.\n */\n get length() {\n return this.left.length + this.right.length;\n }\n\n /**\n * Remove and return `list[0]`;\n * moves the cursor to `0`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n shift() {\n this.setCursor(0);\n return this.right.pop();\n }\n\n /**\n * Slice the buffer to get an array;\n * does not move the cursor.\n *\n * @param {number} start\n * Start.\n * @param {number | null | undefined} [end]\n * End (optional).\n * @returns {Array<T>}\n * Array of items.\n */\n slice(start, end) {\n /** @type {number} */\n const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n if (stop < this.left.length) {\n return this.left.slice(start, stop);\n }\n if (start > this.left.length) {\n return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n }\n return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n }\n\n /**\n * Mimics the behavior of Array.prototype.splice() except for the change of\n * interface necessary to avoid segfaults when patching in very large arrays.\n *\n * This operation moves cursor is moved to `start` and results in the cursor\n * placed after any inserted items.\n *\n * @param {number} start\n * Start;\n * zero-based index at which to start changing the array;\n * negative numbers count backwards from the end of the array and values\n * that are out-of bounds are clamped to the appropriate end of the array.\n * @param {number | null | undefined} [deleteCount=0]\n * Delete count (default: `0`);\n * maximum number of elements to delete, starting from start.\n * @param {Array<T> | null | undefined} [items=[]]\n * Items to include in place of the deleted items (default: `[]`).\n * @return {Array<T>}\n * Any removed items.\n */\n splice(start, deleteCount, items) {\n /** @type {number} */\n const count = deleteCount || 0;\n this.setCursor(Math.trunc(start));\n const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n if (items) chunkedPush(this.left, items);\n return removed.reverse();\n }\n\n /**\n * Remove and return the highest-numbered item in the array, so\n * `list[list.length - 1]`;\n * Moves the cursor to `length`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n pop() {\n this.setCursor(Number.POSITIVE_INFINITY);\n return this.left.pop();\n }\n\n /**\n * Inserts a single item to the high-numbered side of the array;\n * moves the cursor to `length`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n push(item) {\n this.setCursor(Number.POSITIVE_INFINITY);\n this.left.push(item);\n }\n\n /**\n * Inserts many items to the high-numbered side of the array.\n * Moves the cursor to `length`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n pushMany(items) {\n this.setCursor(Number.POSITIVE_INFINITY);\n chunkedPush(this.left, items);\n }\n\n /**\n * Inserts a single item to the low-numbered side of the array;\n * Moves the cursor to `0`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n unshift(item) {\n this.setCursor(0);\n this.right.push(item);\n }\n\n /**\n * Inserts many items to the low-numbered side of the array;\n * moves the cursor to `0`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n unshiftMany(items) {\n this.setCursor(0);\n chunkedPush(this.right, items.reverse());\n }\n\n /**\n * Move the cursor to a specific position in the array. Requires\n * time proportional to the distance moved.\n *\n * If `n < 0`, the cursor will end up at the beginning.\n * If `n > length`, the cursor will end up at the end.\n *\n * @param {number} n\n * Position.\n * @return {undefined}\n * Nothing.\n */\n setCursor(n) {\n if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n if (n < this.left.length) {\n // Move cursor to the this.left\n const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n chunkedPush(this.right, removed.reverse());\n } else {\n // Move cursor to the this.right\n const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n chunkedPush(this.left, removed.reverse());\n }\n }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n * Item type.\n * @param {Array<T>} list\n * List to inject into.\n * @param {ReadonlyArray<T>} right\n * Items to inject.\n * @return {undefined}\n * Nothing.\n */\nfunction chunkedPush(list, right) {\n /** @type {number} */\n let chunkStart = 0;\n if (right.length < 10000) {\n list.push(...right);\n } else {\n while (chunkStart < right.length) {\n list.push(...right.slice(chunkStart, chunkStart + 10000));\n chunkStart += 10000;\n }\n }\n}", "/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n /** @type {Record<string, number>} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array<Event>} */\n let parameters;\n /** @type {Array<Event>} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n const events = new SpliceBuffer(eventsArray);\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events.get(index);\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === \"content\") {\n break;\n }\n if (subevents[otherIndex][1].type === \"chunkText\") {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events.get(otherIndex);\n if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events.get(lineIndex)[1].type = \"lineEndingBlank\";\n }\n otherEvent[1].type = \"lineEnding\";\n lineIndex = otherIndex;\n }\n } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n // Move past.\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = {\n ...events.get(lineIndex)[1].start\n };\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n events.splice(lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n\n // The changes to the `events` buffer must be copied back into the eventsArray\n splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n * Events.\n * @param {number} eventIndex\n * Index.\n * @returns {Record<string, number>}\n * Gaps.\n */\nfunction subcontent(events, eventIndex) {\n const token = events.get(eventIndex)[1];\n const context = events.get(eventIndex)[2];\n let startPosition = eventIndex - 1;\n /** @type {Array<number>} */\n const startPositions = [];\n let tokenizer = token._tokenizer;\n if (!tokenizer) {\n tokenizer = context.parser[token.contentType](token.start);\n if (token._contentTypeTextTrailing) {\n tokenizer._contentTypeTextTrailing = true;\n }\n }\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record<string, number>} */\n const gaps = {};\n /** @type {Array<Chunk>} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events.get(++startPosition)[1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there\u2019s one more token (which is the cases for lines that end in an\n // EOF), that\u2019s perfect: the last point we found starts it.\n // If there isn\u2019t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren\u2019t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.push([start, start + slice.length - 1]);\n events.splice(start, 2, slice);\n }\n jumps.reverse();\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}", "/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n resolve: resolveContent,\n tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n partial: true,\n tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it\u2019s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter(\"content\");\n previous = effects.enter(\"chunkContent\", {\n contentType: \"content\"\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(\"chunkContent\");\n effects.exit(\"content\");\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit(\"chunkContent\");\n previous.next = effects.enter(\"chunkContent\", {\n contentType: \"content\",\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit(\"chunkContent\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, prefixed, \"linePrefix\");\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn\u2019t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}", "/**\n * @import {\n * Effects,\n * State,\n * TokenizeContext,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > \uD83D\uDC49 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we\u2019ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn\u2019t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return atBreak;\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}", "/**\n * @import {\n * Code,\n * Effects,\n * State,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can\u2019t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, atBreak, \"linePrefix\");\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}", "/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns {State}\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n }\n return ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n partial: true,\n tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(\"definition\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don\u2019t need to reset the way `markdown-rs` does.\n nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code);\n effects.exit(\"definitionMarker\");\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don\u2019t need to reset the way `markdown-rs` does.\n nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"definition\");\n\n // Note: we don\u2019t care about uniqueness.\n // It\u2019s likely that that doesn\u2019t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You\u2019d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n resolve: resolveHeadingAtx,\n tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === \"whitespace\") {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: \"atxHeadingText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: \"chunkText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: \"text\"\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(\"atxHeading\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"atxHeading\");\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, \"whitespace\")(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(\"atxHeadingText\");\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal \u201Cvisible\u201D hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingText\");\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}", "/**\n * List of lowercase HTML \u201Cblock\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn\u2019t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML \u201Craw\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n", "/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n concrete: true,\n name: 'htmlFlow',\n resolveTo: resolveToHtmlFlow,\n tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n partial: true,\n tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n partial: true,\n tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"htmlFlow\");\n effects.enter(\"htmlFlowData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we\u2019re in an instruction instead of a declaration, we\u2019re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit(\"htmlFlowData\");\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter(\"htmlFlowData\");\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code> | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array<Event>} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array<Event>} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we\u2019ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can\u2019t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we\u2019d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can\u2019t have that, so it\u2019s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it\u2019s nothing.\n *\n * There was an okay opening, but we didn\u2019t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there\u2019s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn\u2019t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn\u2019t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can\u2019t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we\u2019re closing flow, we\u2019re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we\u2019ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we\u2019ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}", "/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don\u2019t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can\u2019t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}", "/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};", "/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn\u2019t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record<string, number>} */\n const columnStart = {};\n /** @type {Array<Construct>} */\n const resolveAllConstructs = [];\n /** @type {Array<Chunk>} */\n let chunks = [];\n /** @type {Array<Token>} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we\u2019re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we\u2019re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray<Construct>} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray<Construct>} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn\u2019t work because `inspect` in document does a check\n // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a \u201Clive binding\u201D, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it\u2019s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n * Token.\n * @returns {Array<Chunk>}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array<Chunk>} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array<string>} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}", "/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n * Events.\n * @returns {Array<Event>}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}", "/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}", "import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n", "/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (encoding && typeof encoding === 'object') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array<number>} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we\u2019ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it\u2019s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we\u2019ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we\u2019re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array<PhrasingContent>} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n", "/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it\u2019s value is this function\u2019s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it\u2019s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn\u2019t have a `key` property, the special\n * \u201Cinvalid\u201D handler will be called.\n * If `value` has an unknown `key`, the special \u201Cunknown\u201D handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it\u2019s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it\u2019s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n", "/**\n * @import {Options, State} from './types.js'\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {State} base\n * @param {Options} extension\n * @returns {State}\n */\nexport function configure(base, extension) {\n let index = -1\n /** @type {keyof Options} */\n let key\n\n // First do subextensions.\n if (extension.extensions) {\n while (++index < extension.extensions.length) {\n configure(base, extension.extensions[index])\n }\n }\n\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'extensions': {\n // Empty.\n break\n }\n\n /* c8 ignore next 4 */\n case 'unsafe': {\n list(base[key], extension[key])\n break\n }\n\n case 'join': {\n list(base[key], extension[key])\n break\n }\n\n case 'handlers': {\n map(base[key], extension[key])\n break\n }\n\n default: {\n // @ts-expect-error: matches.\n base.options[key] = extension[key]\n }\n }\n }\n }\n\n return base\n}\n\n/**\n * @template T\n * @param {Array<T>} left\n * @param {Array<T> | null | undefined} right\n */\nfunction list(left, right) {\n if (right) {\n left.push(...right)\n }\n}\n\n/**\n * @template T\n * @param {Record<string, T>} left\n * @param {Record<string, T> | null | undefined} right\n */\nfunction map(left, right) {\n if (right) {\n Object.assign(left, right)\n }\n}\n", "/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n const exit = state.enter('blockquote')\n const tracker = state.createTracker(info)\n tracker.move('> ')\n tracker.shift(2)\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return '>' + (blank ? '' : ' ') + line\n}\n", "/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n", "/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n let index = -1\n\n while (++index < state.unsafe.length) {\n // If we can\u2019t put eols in this construct (setext headings, tables), use a\n // space instead.\n if (\n state.unsafe[index].character === '\\n' &&\n patternInScope(state.stack, state.unsafe[index])\n ) {\n return /[ \\t]/.test(info.before) ? '' : ' '\n }\n }\n\n return '\\\\\\n'\n}\n", "/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false &&\n node.value &&\n // If there\u2019s no info\u2026\n !node.lang &&\n // And there\u2019s a non-whitespace character\u2026\n /[^ \\r\\n]/.test(node.value) &&\n // And the value doesn\u2019t start or end in a blank\u2026\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n )\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['fence'], null | undefined>}\n */\nexport function checkFence(state) {\n const marker = state.options.fence || '`'\n\n if (marker !== '`' && marker !== '~') {\n throw new Error(\n 'Cannot serialize code with `' +\n marker +\n '` for `options.fence`, expected `` ` `` or `~`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n const marker = checkFence(state)\n const raw = node.value || ''\n const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n if (formatCodeAsIndented(node, state)) {\n const exit = state.enter('codeIndented')\n const value = state.indentLines(raw, map)\n exit()\n return value\n }\n\n const tracker = state.createTracker(info)\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n const exit = state.enter('codeFenced')\n let value = tracker.move(sequence)\n\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`)\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: ' ',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`)\n value += tracker.move(' ')\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: '\\n',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return (blank ? '' : ' ') + line\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('definition')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n )\n value += tracker.move(']: ')\n\n subexit()\n\n if (\n // If there\u2019s no url, or\u2026\n !node.url ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : '\\n',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n exit()\n\n return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n */\nexport function checkEmphasis(state) {\n const marker = state.options.emphasis || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize emphasis with `' +\n marker +\n '` for `options.emphasis`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n", "/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n * Code point to encode.\n * @returns {string}\n * Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n", "/**\n * @import {EncodeSides} from '../types.js'\n */\n\nimport {classifyCharacter} from 'micromark-util-classify-character'\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z |\n * | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. |\n * | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z |\n * | 4 (nothing outside) | *x* | *.* | * * | ** |\n * ```\n *\n * @param {number} outside\n * Code point on the outer side of the run.\n * @param {number} inside\n * Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n * Marker of the run.\n * Underscores are handled more strictly (they form less often) than\n * asterisks.\n * @returns {EncodeSides}\n * Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nexport function encodeInfo(outside, inside, marker) {\n const outsideKind = classifyCharacter(outside)\n const insideKind = classifyCharacter(inside)\n\n // Letter outside:\n if (outsideKind === undefined) {\n return insideKind === undefined\n ? // Letter inside:\n // we have to encode *both* letters for `_` as it is looser.\n // it already forms for `*` (and GFMs `~`).\n marker === '_'\n ? {inside: true, outside: true}\n : {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode both (letter, whitespace).\n {inside: true, outside: true}\n : // Punctuation inside: encode outer (letter)\n {inside: false, outside: true}\n }\n\n // Whitespace outside:\n if (outsideKind === 1) {\n return insideKind === undefined\n ? // Letter inside: already forms.\n {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode both (whitespace).\n {inside: true, outside: true}\n : // Punctuation inside: already forms.\n {inside: false, outside: false}\n }\n\n // Punctuation outside:\n return insideKind === undefined\n ? // Letter inside: already forms.\n {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode inner (whitespace).\n {inside: true, outside: false}\n : // Punctuation inside: already forms.\n {inside: false, outside: false}\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n const marker = checkEmphasis(state)\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n const before = tracker.move(marker)\n\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n )\n const betweenHead = between.charCodeAt(0)\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n )\n\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1)\n }\n\n const betweenTail = between.charCodeAt(between.length - 1)\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n }\n\n const after = tracker.move(marker)\n\n exit()\n\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n }\n return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || '*'\n}\n", "/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node\u2019s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node\u2019s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node\u2019s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node\u2019s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node\u2019s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node\u2019s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you\u2019re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn\u2019t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn\u2019t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node\u2019s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn\u2019t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn\u2019t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it\u2019s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn\u2019t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n let literalWithBreak = false\n\n // Look for literals with a line break.\n // Note that this also\n visit(node, function (node) {\n if (\n ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n node.type === 'break'\n ) {\n literalWithBreak = true\n return EXIT\n }\n })\n\n return Boolean(\n (!node.depth || node.depth < 3) &&\n toString(node) &&\n (state.options.setext || literalWithBreak)\n )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1)\n const tracker = state.createTracker(info)\n\n if (formatHeadingAsSetext(node, state)) {\n const exit = state.enter('headingSetext')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...tracker.current(),\n before: '\\n',\n after: '\\n'\n })\n subexit()\n exit()\n\n return (\n value +\n '\\n' +\n (rank === 1 ? '=' : '-').repeat(\n // The whole size\u2026\n value.length -\n // Minus the position of the character after the last EOL (or\n // 0 if there is none)\u2026\n (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n )\n )\n }\n\n const sequence = '#'.repeat(rank)\n const exit = state.enter('headingAtx')\n const subexit = state.enter('phrasing')\n\n // Note: for proper tracking, we should reset the output positions when there\n // is no content returned, because then the space is not output.\n // Practically, in that case, there is no content, so it doesn\u2019t matter that\n // we\u2019ve tracked one too many characters.\n tracker.move(sequence + ' ')\n\n let value = state.containerPhrasing(node, {\n before: '# ',\n after: '\\n',\n ...tracker.current()\n })\n\n if (/^[\\t ]/.test(value)) {\n // To do: what effect has the character reference on tracking?\n value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n }\n\n value = value ? sequence + ' ' + value : sequence\n\n if (state.options.closeAtx) {\n value += ' ' + sequence\n }\n\n subexit()\n exit()\n\n return value\n}\n", "/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n return '<'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('image')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n value += tracker.move(\n state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n )\n value += tracker.move('](')\n\n subexit()\n\n if (\n // If there\u2019s no url but there is a title\u2026\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n exit()\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n return '!'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('imageReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n const alt = state.safe(node.alt, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(alt + '][')\n\n subexit()\n // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn\u2019t matter that\n // we\u2019ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !alt || alt !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n return '!'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don\u2019t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can\u2019t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n const raw = toString(node)\n\n return Boolean(\n !state.options.resourceLink &&\n // If there\u2019s a url\u2026\n node.url &&\n // And there\u2019s a no title\u2026\n !node.title &&\n // And the content of `node` is a single text node\u2026\n node.children &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n // And if the url is the same as the content\u2026\n (raw === node.url || 'mailto:' + raw === node.url) &&\n // And that starts w/ a protocol\u2026\n /^[a-z][a-z+.-]+:/i.test(node.url) &&\n // And that doesn\u2019t contain ASCII control codes (character escapes and\n // references don\u2019t work), space, or angle brackets\u2026\n !/[\\0- <>\\u007F]/.test(node.url)\n )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const tracker = state.createTracker(info)\n /** @type {Exit} */\n let exit\n /** @type {Exit} */\n let subexit\n\n if (formatLinkAsAutolink(node, state)) {\n // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n const stack = state.stack\n state.stack = []\n exit = state.enter('autolink')\n let value = tracker.move('<')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '>',\n ...tracker.current()\n })\n )\n value += tracker.move('>')\n exit()\n state.stack = stack\n return value\n }\n\n exit = state.enter('link')\n subexit = state.enter('label')\n let value = tracker.move('[')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '](',\n ...tracker.current()\n })\n )\n value += tracker.move('](')\n subexit()\n\n if (\n // If there\u2019s no url but there is a title\u2026\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n\n exit()\n return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('linkReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n const text = state.containerPhrasing(node, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(text + '][')\n\n subexit()\n // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn\u2019t matter that\n // we\u2019ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !text || text !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n return '['\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBulletOther(state) {\n const bullet = checkBullet(state)\n const bulletOther = state.options.bulletOther\n\n if (!bulletOther) {\n return bullet === '*' ? '-' : '*'\n }\n\n if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n bulletOther +\n '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n )\n }\n\n if (bulletOther === bullet) {\n throw new Error(\n 'Expected `bullet` (`' +\n bullet +\n '`) and `bulletOther` (`' +\n bulletOther +\n '`) to be different'\n )\n }\n\n return bulletOther\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n */\nexport function checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || '.'\n\n if (marker !== '.' && marker !== ')') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bulletOrdered`, expected `.` or `)`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['rule'], null | undefined>}\n */\nexport function checkRule(state) {\n const marker = state.options.rule || '*'\n\n if (marker !== '*' && marker !== '-' && marker !== '_') {\n throw new Error(\n 'Cannot serialize rules with `' +\n marker +\n '` for `options.rule`, expected `*`, `-`, or `_`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n const exit = state.enter('list')\n const bulletCurrent = state.bulletCurrent\n /** @type {string} */\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n /** @type {string} */\n const bulletOther = node.ordered\n ? bullet === '.'\n ? ')'\n : '.'\n : checkBulletOther(state)\n let useDifferentMarker =\n parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : undefined\n\n // If there\u2019s an empty first list item directly in two list items,\n // we have to use a different bullet:\n //\n // ```markdown\n // * - *\n // ```\n //\n // \u2026because otherwise it would become one big thematic break.\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === '*' || bullet === '-') &&\n // Empty first list item:\n firstListItem &&\n (!firstListItem.children || !firstListItem.children[0]) &&\n // Directly in two other list items:\n state.stack[state.stack.length - 1] === 'list' &&\n state.stack[state.stack.length - 2] === 'listItem' &&\n state.stack[state.stack.length - 3] === 'list' &&\n state.stack[state.stack.length - 4] === 'listItem' &&\n // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 &&\n state.indexStack[state.indexStack.length - 2] === 0 &&\n state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true\n }\n\n // If there\u2019s a thematic break at the start of the first list item,\n // we have to use a different bullet:\n //\n // ```markdown\n // * ---\n // ```\n //\n // \u2026because otherwise it would become one big thematic break.\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1\n\n while (++index < node.children.length) {\n const item = node.children[index]\n\n if (\n item &&\n item.type === 'listItem' &&\n item.children &&\n item.children[0] &&\n item.children[0].type === 'thematicBreak'\n ) {\n useDifferentMarker = true\n break\n }\n }\n }\n }\n\n if (useDifferentMarker) {\n bullet = bulletOther\n }\n\n state.bulletCurrent = bullet\n const value = state.containerFlow(node, info)\n state.bulletLastUsed = bullet\n state.bulletCurrent = bulletCurrent\n exit()\n return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'one'\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n const exit = state.enter('paragraph')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, info)\n subexit()\n exit()\n return value\n}\n", "/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > \uD83D\uDC49 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @returns\n * Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n (\n convert([\n 'break',\n 'delete',\n 'emphasis',\n // To do: next major: removed since footnotes were added to GFM.\n 'footnote',\n 'footnoteReference',\n 'image',\n 'imageReference',\n 'inlineCode',\n // Enabled by `mdast-util-math`:\n 'inlineMath',\n 'link',\n 'linkReference',\n // Enabled by `mdast-util-mdx`:\n 'mdxJsxTextElement',\n // Enabled by `mdast-util-mdx`:\n 'mdxTextExpression',\n 'strong',\n 'text',\n // Enabled by `mdast-util-directive`:\n 'textDirective'\n ])\n )\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n // Note: `html` nodes are ambiguous.\n const hasPhrasing = node.children.some(function (d) {\n return phrasing(d)\n })\n\n const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n return container.call(state, node, info)\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['strong'], null | undefined>}\n */\nexport function checkStrong(state) {\n const marker = state.options.strong || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize strong with `' +\n marker +\n '` for `options.strong`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n const marker = checkStrong(state)\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n const before = tracker.move(marker + marker)\n\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n )\n const betweenHead = between.charCodeAt(0)\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n )\n\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1)\n }\n\n const betweenTail = between.charCodeAt(between.length - 1)\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n }\n\n const after = tracker.move(marker + marker)\n\n exit()\n\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n }\n return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n return state.options.strong || '*'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n return state.safe(node.value, info)\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n */\nexport function checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3\n\n if (repetition < 3) {\n throw new Error(\n 'Cannot serialize rules with repetition `' +\n repetition +\n '` for `options.ruleRepetition`, expected `3` or more'\n )\n }\n\n return repetition\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n const value = (\n checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n ).repeat(checkRuleRepetition(state))\n\n return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n", "import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n blockquote,\n break: hardBreak,\n code,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text,\n thematicBreak\n}\n", "/**\n * @import {Join} from 'mdast-util-to-markdown'\n */\n\nimport {formatCodeAsIndented} from './util/format-code-as-indented.js'\nimport {formatHeadingAsSetext} from './util/format-heading-as-setext.js'\n\n/** @type {Array<Join>} */\nexport const join = [joinDefaults]\n\n/** @type {Join} */\nfunction joinDefaults(left, right, parent, state) {\n // Indented code after list or another indented code.\n if (\n right.type === 'code' &&\n formatCodeAsIndented(right, state) &&\n (left.type === 'list' ||\n (left.type === right.type && formatCodeAsIndented(left, state)))\n ) {\n return false\n }\n\n // Join children of a list or an item.\n // In which case, `parent` has a `spread` field.\n if ('spread' in parent && typeof parent.spread === 'boolean') {\n if (\n left.type === 'paragraph' &&\n // Two paragraphs.\n (left.type === right.type ||\n right.type === 'definition' ||\n // Paragraph followed by a setext heading.\n (right.type === 'heading' && formatHeadingAsSetext(right, state)))\n ) {\n return\n }\n\n return parent.spread ? 1 : 0\n }\n}\n", "/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain things like attention (emphasis, strong), images, or links.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * @type {Array<ConstructName>}\n */\nconst fullPhrasingSpans = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\n/** @type {Array<Unsafe>} */\nexport const unsafe = [\n {character: '\\t', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {character: '\\t', before: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {\n character: '\\t',\n inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde']\n },\n {\n character: '\\r',\n inConstruct: [\n 'codeFencedLangGraveAccent',\n 'codeFencedLangTilde',\n 'codeFencedMetaGraveAccent',\n 'codeFencedMetaTilde',\n 'destinationLiteral',\n 'headingAtx'\n ]\n },\n {\n character: '\\n',\n inConstruct: [\n 'codeFencedLangGraveAccent',\n 'codeFencedLangTilde',\n 'codeFencedMetaGraveAccent',\n 'codeFencedMetaTilde',\n 'destinationLiteral',\n 'headingAtx'\n ]\n },\n {character: ' ', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {character: ' ', before: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {\n character: ' ',\n inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde']\n },\n // An exclamation mark can start an image, if it is followed by a link or\n // a link reference.\n {\n character: '!',\n after: '\\\\[',\n inConstruct: 'phrasing',\n notInConstruct: fullPhrasingSpans\n },\n // A quote can break out of a title.\n {character: '\"', inConstruct: 'titleQuote'},\n // A number sign could start an ATX heading if it starts a line.\n {atBreak: true, character: '#'},\n {character: '#', inConstruct: 'headingAtx', after: '(?:[\\r\\n]|$)'},\n // Dollar sign and percentage are not used in markdown.\n // An ampersand could start a character reference.\n {character: '&', after: '[#A-Za-z]', inConstruct: 'phrasing'},\n // An apostrophe can break out of a title.\n {character: \"'\", inConstruct: 'titleApostrophe'},\n // A left paren could break out of a destination raw.\n {character: '(', inConstruct: 'destinationRaw'},\n // A left paren followed by `]` could make something into a link or image.\n {\n before: '\\\\]',\n character: '(',\n inConstruct: 'phrasing',\n notInConstruct: fullPhrasingSpans\n },\n // A right paren could start a list item or break out of a destination\n // raw.\n {atBreak: true, before: '\\\\d+', character: ')'},\n {character: ')', inConstruct: 'destinationRaw'},\n // An asterisk can start thematic breaks, list items, emphasis, strong.\n {atBreak: true, character: '*', after: '(?:[ \\t\\r\\n*])'},\n {character: '*', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n // A plus sign could start a list item.\n {atBreak: true, character: '+', after: '(?:[ \\t\\r\\n])'},\n // A dash can start thematic breaks, list items, and setext heading\n // underlines.\n {atBreak: true, character: '-', after: '(?:[ \\t\\r\\n-])'},\n // A dot could start a list item.\n {atBreak: true, before: '\\\\d+', character: '.', after: '(?:[ \\t\\r\\n]|$)'},\n // Slash, colon, and semicolon are not used in markdown for constructs.\n // A less than can start html (flow or text) or an autolink.\n // HTML could start with an exclamation mark (declaration, cdata, comment),\n // slash (closing tag), question mark (instruction), or a letter (tag).\n // An autolink also starts with a letter.\n // Finally, it could break out of a destination literal.\n {atBreak: true, character: '<', after: '[!/?A-Za-z]'},\n {\n character: '<',\n after: '[!/?A-Za-z]',\n inConstruct: 'phrasing',\n notInConstruct: fullPhrasingSpans\n },\n {character: '<', inConstruct: 'destinationLiteral'},\n // An equals to can start setext heading underlines.\n {atBreak: true, character: '='},\n // A greater than can start block quotes and it can break out of a\n // destination literal.\n {atBreak: true, character: '>'},\n {character: '>', inConstruct: 'destinationLiteral'},\n // Question mark and at sign are not used in markdown for constructs.\n // A left bracket can start definitions, references, labels,\n {atBreak: true, character: '['},\n {character: '[', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n {character: '[', inConstruct: ['label', 'reference']},\n // A backslash can start an escape (when followed by punctuation) or a\n // hard break (when followed by an eol).\n // Note: typical escapes are handled in `safe`!\n {character: '\\\\', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n // A right bracket can exit labels.\n {character: ']', inConstruct: ['label', 'reference']},\n // Caret is not used in markdown for constructs.\n // An underscore can start emphasis, strong, or a thematic break.\n {atBreak: true, character: '_'},\n {character: '_', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n // A grave accent can start code (fenced or text), or it can break out of\n // a grave accent code fence.\n {atBreak: true, character: '`'},\n {\n character: '`',\n inConstruct: ['codeFencedLangGraveAccent', 'codeFencedMetaGraveAccent']\n },\n {character: '`', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n // Left brace, vertical bar, right brace are not used in markdown for\n // constructs.\n // A tilde can start code (fenced).\n {atBreak: true, character: '~'}\n]\n", "/**\n * @import {AssociationId} from '../types.js'\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * <https://github.com/syntax-tree/mdast#association>.\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don\u2019t work in this\n * matching: `©` does not match `\u00A9`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we\u2019re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n", "/**\n * @import {CompilePattern} from '../types.js'\n */\n\n/**\n * @type {CompilePattern}\n */\nexport function compilePattern(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n", "/**\n * @import {Handle, Info, State} from 'mdast-util-to-markdown'\n * @import {PhrasingParents} from '../types.js'\n */\n\nimport {encodeCharacterReference} from './encode-character-reference.js'\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {PhrasingParents} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nexport function containerPhrasing(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n /** @type {Array<string>} */\n const results = []\n let index = -1\n let before = info.before\n /** @type {string | undefined} */\n let encodeAfter\n\n indexStack.push(-1)\n let tracker = state.createTracker(info)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n /** @type {Handle} */\n // @ts-expect-error: hush, it\u2019s actually a `zwitch`.\n let handle = state.handle.handlers[children[index + 1].type]\n /** @type {Handle} */\n // @ts-expect-error: hush, it\u2019s actually a `zwitch`.\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, state, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = info.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we\u2019d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can\u2019t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = state.createTracker(info)\n tracker.move(results.join(''))\n }\n\n let value = state.handle(child, parent, state, {\n ...tracker.current(),\n after,\n before\n })\n\n // If we had to encode the first character after the previous node and it\u2019s\n // still the same character,\n // encode it.\n if (encodeAfter && encodeAfter === value.slice(0, 1)) {\n value =\n encodeCharacterReference(encodeAfter.charCodeAt(0)) + value.slice(1)\n }\n\n const encodingInfo = state.attentionEncodeSurroundingInfo\n state.attentionEncodeSurroundingInfo = undefined\n encodeAfter = undefined\n\n // If we have to encode the first character before the current node and\n // it\u2019s still the same character,\n // encode it.\n if (encodingInfo) {\n if (\n results.length > 0 &&\n encodingInfo.before &&\n before === results[results.length - 1].slice(-1)\n ) {\n results[results.length - 1] =\n results[results.length - 1].slice(0, -1) +\n encodeCharacterReference(before.charCodeAt(0))\n }\n\n if (encodingInfo.after) encodeAfter = after\n }\n\n tracker.move(value)\n results.push(value)\n before = value.slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {FlowChildren, FlowParents, TrackFields} from '../types.js'\n */\n\n/**\n * @param {FlowParents} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nexport function containerFlow(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n const tracker = state.createTracker(info)\n /** @type {Array<string>} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n state.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(\n tracker.move(between(child, children[index + 1], parent, state))\n )\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n\n/**\n * @param {FlowChildren} left\n * @param {FlowChildren} right\n * @param {FlowParents} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n let index = state.join.length\n\n while (index--) {\n const result = state.join[index](left, right, parent, state)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n}\n", "/**\n * @import {IndentLines} from '../types.js'\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nexport function indentLines(value, map) {\n /** @type {Array<string>} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n", "/**\n * @import {SafeConfig, State} from 'mdast-util-to-markdown'\n */\n\nimport {encodeCharacterReference} from './encode-character-reference.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What \u201Cconstructs\u201D we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {string | null | undefined} input\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nexport function safe(state, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const result = []\n /** @type {Record<number, {before: boolean, after: boolean}>} */\n const infos = {}\n let index = -1\n\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n if (!patternInScope(state.stack, pattern)) {\n continue\n }\n\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(encodeCharacterReference(value.charCodeAt(position)))\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n", "/**\n * @import {CreateTracker, TrackCurrent, TrackMove, TrackShift} from '../types.js'\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nexport function track(config) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = config || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @type {TrackCurrent}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @type {TrackShift}\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past some generated markdown.\n *\n * @type {TrackMove}\n */\n function move(input) {\n // eslint-disable-next-line unicorn/prefer-default-parameters\n const value = input || ''\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n", "/**\n * @import {Info, Join, Options, SafeConfig, State} from 'mdast-util-to-markdown'\n * @import {Nodes} from 'mdast'\n * @import {Enter, FlowParents, PhrasingParents, TrackFields} from './types.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {configure} from './configure.js'\nimport {handle as handlers} from './handle/index.js'\nimport {join} from './join.js'\nimport {unsafe} from './unsafe.js'\nimport {association} from './util/association.js'\nimport {compilePattern} from './util/compile-pattern.js'\nimport {containerPhrasing} from './util/container-phrasing.js'\nimport {containerFlow} from './util/container-flow.js'\nimport {indentLines} from './util/indent-lines.js'\nimport {safe} from './util/safe.js'\nimport {track} from './util/track.js'\n\n/**\n * Turn an mdast syntax tree into markdown.\n *\n * @param {Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized markdown representing `tree`.\n */\nexport function toMarkdown(tree, options) {\n const settings = options || {}\n /** @type {State} */\n const state = {\n associationId: association,\n containerPhrasing: containerPhrasingBound,\n containerFlow: containerFlowBound,\n createTracker: track,\n compilePattern,\n enter,\n // @ts-expect-error: GFM / frontmatter are typed in `mdast` but not defined\n // here.\n handlers: {...handlers},\n // @ts-expect-error: add `handle` in a second.\n handle: undefined,\n indentLines,\n indexStack: [],\n join: [...join],\n options: {},\n safe: safeBound,\n stack: [],\n unsafe: [...unsafe]\n }\n\n configure(state, settings)\n\n if (state.options.tightDefinitions) {\n state.join.push(joinDefinition)\n }\n\n state.handle = zwitch('type', {\n invalid,\n unknown,\n handlers: state.handlers\n })\n\n let result = state.handle(tree, undefined, state, {\n before: '\\n',\n after: '\\n',\n now: {line: 1, column: 1},\n lineShift: 0\n })\n\n if (\n result &&\n result.charCodeAt(result.length - 1) !== 10 &&\n result.charCodeAt(result.length - 1) !== 13\n ) {\n result += '\\n'\n }\n\n return result\n\n /** @type {Enter} */\n function enter(name) {\n state.stack.push(name)\n return exit\n\n /**\n * @returns {undefined}\n */\n function exit() {\n state.stack.pop()\n }\n }\n}\n\n/**\n * @param {unknown} value\n * @returns {never}\n */\nfunction invalid(value) {\n throw new Error('Cannot handle value `' + value + '`, expected node')\n}\n\n/**\n * @param {unknown} value\n * @returns {never}\n */\nfunction unknown(value) {\n // Always a node.\n const node = /** @type {Nodes} */ (value)\n throw new Error('Cannot handle unknown node `' + node.type + '`')\n}\n\n/** @type {Join} */\nfunction joinDefinition(left, right) {\n // No blank line between adjacent definitions.\n if (left.type === 'definition' && left.type === right.type) {\n return 0\n }\n}\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {PhrasingParents} parent\n * Parent of flow nodes.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nfunction containerPhrasingBound(parent, info) {\n return containerPhrasing(parent, this, info)\n}\n\n/**\n * Serialize the children of a parent that contains flow children.\n *\n * These children will typically be joined by blank lines.\n * What they are joined by exactly is defined by `Join` functions.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {FlowParents} parent\n * Parent of flow nodes.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nfunction containerFlowBound(parent, info) {\n return containerFlow(parent, this, info)\n}\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What \u201Cconstructs\u201D we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {string | null | undefined} value\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nfunction safeBound(value, config) {\n return safe(this, value, config)\n}\n", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownOptions\n * @typedef {import('unified').Compiler<Root, string>} Compiler\n * @typedef {import('unified').Processor<undefined, undefined, undefined, Root, string>} Processor\n */\n\n/**\n * @typedef {Omit<ToMarkdownOptions, 'extensions'>} Options\n */\n\nimport {toMarkdown} from 'mdast-util-to-markdown'\n\n/**\n * Add support for serializing to markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkStringify(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.compiler = compiler\n\n /**\n * @type {Compiler}\n */\n function compiler(tree) {\n return toMarkdown(tree, {\n ...self.data('settings'),\n ...options,\n // Note: this option is not in the readme.\n // The goal is for it to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('toMarkdownExtensions') || []\n })\n }\n}\n", "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n", "/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can\u2019t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it\u2019s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don\u2019t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` \u2014 fatal error to stop the process\n * * `Promise<undefined>` or `undefined` \u2014 the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` \u2014 new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn\u2019t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we\u2019re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It\u2019s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can\u2019t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we\u2019d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That\u2019s why it\u2019s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > \uD83D\uDC49 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it\u2019s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we\u2019re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` \u2014 error, file not usable\n * * `false` \u2014 warning, change may be needed\n * * `undefined` \u2014 change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are \u201Cwell known\u201D.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that\u2019s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > \uD83D\uDC49 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n", "// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node\u2019s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n", "// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don\u2019t think one tiny line of code can be copyrighted. \uD83D\uDE05\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n", "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it\u2019s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n", "import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` \u2014 `{value: options}`\n * * `URL` \u2014 `{path: options}`\n * * `VFile` \u2014 shallow copies its data over to the new file\n * * `object` \u2014 all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it\u2019s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It\u2019s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are \u201Cwell-known\u201D.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn\u2019t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there\u2019s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there\u2019s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it\u2019s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n", "export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n", "// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) \u2192 ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) \u2192 OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) \u2192 OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) \u2192 OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) \u2192 OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) \u2192 OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union<Object, OrderedMap>) \u2192 OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union<Object, OrderedMap>) \u2192 OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union<Object, OrderedMap>) \u2192 OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () \u2192 Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union<Object, OrderedMap>) \u2192 OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n", "import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n The child nodes in this fragment.\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. @internal\n */\n findIndex(pos) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n let mark = type.create(json.attrs);\n type.checkAttrs(mark.attrs);\n return mark;\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are \u2018open\u2019 (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment\u2014i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert, child);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent\u2014text nodes are \u2018flat\u2019 in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n let cache = resolveCache.get(doc);\n if (cache) {\n for (let i = 0; i < cache.elts.length; i++) {\n let elt = cache.elts[i];\n if (elt.pos == pos)\n return elt;\n }\n }\n else {\n resolveCache.set(doc, cache = new ResolveCache);\n }\n let result = cache.elts[cache.i] = ResolvedPos.resolve(doc, pos);\n cache.i = (cache.i + 1) % resolveCacheSize;\n return result;\n }\n}\nclass ResolveCache {\n constructor() {\n this.elts = [];\n this.i = 0;\n }\n}\nconst resolveCacheSize = 12, resolveCache = new WeakMap();\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](https://prosemirror.net/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The array of this node's child nodes.\n */\n get children() { return this.content.content; }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](https://prosemirror.net/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise an exception when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n this.type.checkAttrs(this.attrs);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++) {\n let mark = this.marks[i];\n mark.type.checkAttrs(mark.attrs);\n copy = mark.addToSet(copy);\n }\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = undefined;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n node.type.checkAttrs(node.attrs);\n return node;\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_\u200Bth outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.isInGroup(name))\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction checkAttrs(attrs, values, type, name) {\n for (let name in values)\n if (!(name in attrs))\n throw new RangeError(`Unsupported attribute ${name} for ${type} of type ${name}`);\n for (let name in attrs) {\n let attr = attrs[name];\n if (attr.validate)\n attr.validate(values[name]);\n }\n}\nfunction initAttrs(typeName, attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(typeName, name, attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(name, spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n Return true when this node type is part of the given\n [group](https://prosemirror.net/docs/ref/#model.NodeSpec.group).\n */\n isInGroup(group) {\n return this.groups.indexOf(group) > -1;\n }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"node\", this.name);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\nfunction validateType(typeName, attrName, type) {\n let types = type.split(\"|\");\n return (value) => {\n let name = value === null ? \"null\" : typeof value;\n if (types.indexOf(name) < 0)\n throw new RangeError(`Expected value of type ${types} for attribute ${attrName} on type ${typeName}, got ${name}`);\n };\n}\n// Attribute descriptors\nclass Attribute {\n constructor(typeName, attrName, options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n this.validate = typeof options.validate == \"string\" ? validateType(typeName, attrName, options.validate) : options.validate;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(name, spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"mark\", this.name);\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n The [linebreak\n replacement](https://prosemirror.net/docs/ref/#model.NodeSpec.linebreakReplacement) node defined\n in this schema, if any.\n */\n this.linebreakReplacement = null;\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n if (type.spec.linebreakReplacement) {\n if (this.linebreakReplacement)\n throw new RangeError(\"Multiple linebreak nodes defined\");\n if (!type.isInline || !type.isLeaf)\n throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");\n this.linebreakReplacement = type;\n }\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = json => Node.fromJSON(this, json);\n this.markFromJSON = json => Mark.fromJSON(this, json);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\nfunction isTagRule(rule) { return rule.tag != null; }\nfunction isStyleRule(rule) { return rule.style != null; }\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n let matchedStyles = this.matchedStyles = [];\n rules.forEach(rule => {\n if (isTagRule(rule)) {\n this.tags.push(rule);\n }\n else if (isStyleRule(rule)) {\n let prop = /[^=]*/.exec(rule.style)[0];\n if (matchedStyles.indexOf(prop) < 0)\n matchedStyles.push(prop);\n this.styles.push(rule);\n }\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, Mark.none, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, Mark.none, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, marks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n this.localPreserveWS = false;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom, marks) {\n if (dom.nodeType == 3)\n this.addTextNode(dom, marks);\n else if (dom.nodeType == 1)\n this.addElement(dom, marks);\n }\n addTextNode(dom, marks) {\n let value = dom.nodeValue;\n let top = this.top, preserveWS = (top.options & OPT_PRESERVE_WS_FULL) ? \"full\"\n : this.localPreserveWS || (top.options & OPT_PRESERVE_WS) > 0;\n let { schema } = this.parser;\n if (preserveWS === \"full\" ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!preserveWS) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (preserveWS === \"full\") {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n else if (schema.linebreakReplacement && /[\\r\\n]/.test(value) && this.top.findWrapping(schema.linebreakReplacement.create())) {\n let lines = value.split(/\\r?\\n|\\r/);\n for (let i = 0; i < lines.length; i++) {\n if (i)\n this.insertNode(schema.linebreakReplacement.create(), marks, true);\n if (lines[i])\n this.insertNode(schema.text(lines[i]), marks, !/\\S/.test(lines[i]));\n }\n value = \"\";\n }\n else {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n if (value)\n this.insertNode(schema.text(value), marks, !/\\S/.test(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, marks, matchAfter) {\n let outerWS = this.localPreserveWS, top = this.top;\n if (dom.tagName == \"PRE\" || /pre/.test(dom.style && dom.style.whiteSpace))\n this.localPreserveWS = true;\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n out: if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom, marks);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom, marks);\n break out;\n }\n let innerMarks = rule && rule.skip ? marks : this.readStyles(dom, marks);\n if (innerMarks)\n this.addAll(dom, innerMarks);\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n let innerMarks = this.readStyles(dom, marks);\n if (innerMarks)\n this.addElementByRule(dom, rule, innerMarks, rule.consuming === false ? ruleID : undefined);\n }\n this.localPreserveWS = outerWS;\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom, marks) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"), marks);\n }\n // Called for ignored nodes\n ignoreFallback(dom, marks) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"), marks, true);\n }\n // Run any style parser associated with the node's styles. Either\n // return an updated array of marks, or null to indicate some of the\n // styles had a rule with `ignore` set.\n readStyles(dom, marks) {\n let styles = dom.style;\n // Because many properties will only show up in 'normalized' form\n // in `style.item` (i.e. text-decoration becomes\n // text-decoration-line, text-decoration-color, etc), we directly\n // query the styles mentioned in our rules instead of iterating\n // over the items.\n if (styles && styles.length)\n for (let i = 0; i < this.parser.matchedStyles.length; i++) {\n let name = this.parser.matchedStyles[i], value = styles.getPropertyValue(name);\n if (value)\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(name, value, this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark)\n marks = marks.filter(m => !rule.clearMark(m));\n else\n marks = marks.concat(this.parser.schema.marks[rule.mark].create(rule.attrs));\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return marks;\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, marks, continueAfter) {\n let sync, nodeType;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n let inner = this.enter(nodeType, rule.attrs || null, marks, rule.preserveWhitespace);\n if (inner) {\n sync = true;\n marks = inner;\n }\n }\n else if (!this.insertNode(nodeType.create(rule.attrs), marks, dom.nodeName == \"BR\")) {\n this.leafFallback(dom, marks);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n marks = marks.concat(markType.create(rule.attrs));\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, marks, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node, marks, false));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, marks);\n this.findAround(dom, contentDOM, false);\n }\n if (sync && this.sync(startIn))\n this.open--;\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, marks, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom, marks);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node, marks, cautious) {\n let route, sync;\n for (let depth = this.open, penalty = 0; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length + penalty)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid) {\n if (cautious)\n break;\n penalty += 2;\n }\n }\n if (!route)\n return null;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n marks = this.enterInner(route[i], null, marks, false);\n return marks;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node, marks, cautious) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n marks = this.enterInner(block, null, marks);\n }\n let innerMarks = this.findPlace(node, marks, cautious);\n if (innerMarks) {\n this.closeExtra();\n let top = this.top;\n if (top.match)\n top.match = top.match.matchType(node.type);\n let nodeMarks = Mark.none;\n for (let m of innerMarks.concat(node.marks))\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, node.type))\n nodeMarks = m.addToSet(nodeMarks);\n top.content.push(node.mark(nodeMarks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, marks, preserveWS) {\n let innerMarks = this.findPlace(type.create(attrs), marks, false);\n if (innerMarks)\n innerMarks = this.enterInner(type, attrs, marks, true, preserveWS);\n return innerMarks;\n }\n // Open a node of the given type\n enterInner(type, attrs, marks, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n let applyMarks = Mark.none;\n marks = marks.filter(m => {\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, type)) {\n applyMarks = m.addToSet(applyMarks);\n return false;\n }\n return true;\n });\n this.nodes.push(new NodeContext(type, attrs, applyMarks, solid, null, options));\n this.open++;\n return marks;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(!!(this.isOpen || this.options.topOpen));\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--) {\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n else if (this.localPreserveWS) {\n this.nodes[i].options |= OPT_PRESERVE_WS;\n }\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && !next.isInGroup(part)))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = renderSpec(doc(options), this.nodes[node.type.name](node), null, node.attrs);\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && renderSpec(doc(options), toDOM(mark, inline), null, mark.attrs);\n }\n static renderSpec(doc, structure, xmlNS = null, blockArraysIn) {\n return renderSpec(doc, structure, xmlNS, blockArraysIn);\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\nconst suspiciousAttributeCache = new WeakMap();\nfunction suspiciousAttributes(attrs) {\n let value = suspiciousAttributeCache.get(attrs);\n if (value === undefined)\n suspiciousAttributeCache.set(attrs, value = suspiciousAttributesInner(attrs));\n return value;\n}\nfunction suspiciousAttributesInner(attrs) {\n let result = null;\n function scan(value) {\n if (value && typeof value == \"object\") {\n if (Array.isArray(value)) {\n if (typeof value[0] == \"string\") {\n if (!result)\n result = [];\n result.push(value);\n }\n else {\n for (let i = 0; i < value.length; i++)\n scan(value[i]);\n }\n }\n else {\n for (let prop in value)\n scan(value[prop]);\n }\n }\n }\n scan(attrs);\n return result;\n}\nfunction renderSpec(doc, structure, xmlNS, blockArraysIn) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], suspicious;\n if (typeof tagName != \"string\")\n throw new RangeError(\"Invalid array passed to renderSpec\");\n if (blockArraysIn && (suspicious = suspiciousAttributes(blockArraysIn)) &&\n suspicious.indexOf(structure) > -1)\n throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");\n let space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else if (name == \"style\" && dom.style)\n dom.style.cssText = attrs[name];\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = renderSpec(doc, child, xmlNS, blockArraysIn);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n", "import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n\u2018[rebasing](https://prosemirror.net/docs/guide/#transform.rebasing)\u2019 steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(maps, \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps ? maps.length : 0) {\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n this._maps = maps || [];\n this.ownData = !(maps || mirror);\n }\n /**\n The step maps in this mapping.\n */\n get maps() { return this._maps; }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this._maps, this.mirror, from, to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n if (!this.ownData) {\n this._maps = this._maps.slice();\n this.mirror = this.mirror && this.mirror.slice();\n this.ownData = true;\n }\n this.to = this._maps.push(map);\n if (mirrors != null)\n this.setMirror(this._maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this._maps.length; i < mapping._maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this._maps.length + mapping._maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this._maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this._maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this._maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`\u2014the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let to = mapping.mapResult(this.to, -1);\n let from = this.from == this.to && ReplaceStep.MAP_BIAS < 0 ? to : mapping.mapResult(this.from, 1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice, this.structure);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\n/**\nBy default, for backwards compatibility, an inserting step\nmapped over an insertion at that same position fill move after\nthe inserted content. In a collaborative editing situation, that\ncan make redone insertions appear in unexpected places. You can\nset this to -1 to make such mapping keep the step before the\ninsertion instead.\n*/\nReplaceStep.MAP_BIAS = 1;\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth, contentBefore = 0, contentAfter = 0;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth) + contentBefore, endIndex = range.$to.indexAfter(depth) - contentAfter;\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n if (index)\n contentBefore = 1;\n if (endIndex < node.childCount)\n contentAfter = 1;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n let attrsHere = typeof attrs == \"function\" ? attrs(node) : attrs;\n if (node.isTextblock && !node.hasMarkup(type, attrsHere) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n let convertNewlines = null;\n if (type.schema.linebreakReplacement) {\n let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n // Ensure all markup that isn't allowed in the new node type is cleared\n if (convertNewlines === false)\n replaceLinebreaks(tr, node, pos, mapFrom);\n clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));\n if (convertNewlines === true)\n replaceNewlines(tr, node, pos, mapFrom);\n return false;\n }\n });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.isText) {\n let m, newline = /\\r?\\n|\\r/g;\n while (m = newline.exec(child.text)) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n }\n }\n });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.type == child.type.schema.linebreakReplacement) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction canAppendWithSubstitutedLinebreaks(a, b) {\n if (!b.content.size)\n a.type.compatibleContent(b.type);\n let match = a.contentMatchAt(a.childCount);\n let { linebreakReplacement } = a.type.schema;\n for (let i = 0; i < b.childCount; i++) {\n let child = b.child(i);\n let type = child.type == linebreakReplacement ? a.type.schema.nodes.text : child.type;\n match = match.matchType(type);\n if (!match)\n return false;\n if (!a.type.allowsMarks(child.marks))\n return false;\n }\n return match.validEnd;\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && canAppendWithSubstitutedLinebreaks(a, b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let convertNewlines = null;\n let { linebreakReplacement } = tr.doc.type.schema;\n let $before = tr.doc.resolve(pos - depth), beforeType = $before.node().type;\n if (linebreakReplacement && beforeType.inlineContent) {\n let pre = beforeType.whitespace == \"pre\";\n let supportLinebreak = !!beforeType.contentMatch.matchType(linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n let mapFrom = tr.steps.length;\n if (convertNewlines === false) {\n let $after = tr.doc.resolve(pos + depth);\n replaceLinebreaks(tr, $after.node(), $after.before(), mapFrom);\n }\n if (beforeType.inlineContent)\n clearIncompatible(tr, pos + depth - 1, beforeType, $before.node().contentMatchAt($before.index()), convertNewlines == null);\n let mapping = tr.mapping.slice(mapFrom), start = mapping.map(pos - depth);\n tr.step(new ReplaceStep(start, mapping.map(pos + depth, -1), Slice.empty, true));\n if (convertNewlines === true) {\n let $full = tr.doc.resolve(start);\n replaceNewlines(tr, $full.node(), $full.before(), tr.steps.length);\n }\n return tr;\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n\u2018Fit\u2019 a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in <p(\"foo\"), p(\"bar\")>, when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, $to);\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n // When the deleted range spans from the start of one textblock to\n // the start of another one, move out of the start of both blocks.\n if ($from.parent.isTextblock && $to.parent.isTextblock && $from.start() != $to.start() &&\n $from.parentOffset == 0 && $to.parentOffset == 0) {\n let shared = $from.sharedDepth(to), isolated = false;\n for (let d = $from.depth; d > shared; d--)\n if ($from.node(d).type.spec.isolating)\n isolated = true;\n for (let d = $to.depth; d > shared; d--)\n if ($to.node(d).type.spec.isolating)\n isolated = true;\n if (!isolated) {\n for (let d = $from.depth; d > 0 && from == $from.start(d); d--)\n from = $from.before(d);\n for (let d = $to.depth; d > 0 && to == $to.start(d); d--)\n to = $to.before(d);\n $from = tr.doc.resolve(from);\n $to = tr.doc.resolve(to);\n }\n }\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d &&\n $from.start(d - 1) == $to.start(d - 1) && $from.node(d - 1).canReplace($from.index(d - 1), $to.index(d - 1)))\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n Return a single range, in post-transform document positions,\n that covers all content changed by this transform. Returns null\n if no replacements are made. Note that this will ignore changes\n that add/remove marks without replacing the underlying content.\n */\n changedRange() {\n let from = 1e9, to = -1e9;\n for (let i = 0; i < this.mapping.maps.length; i++) {\n let map = this.mapping.maps[i];\n if (i) {\n from = map.map(from, 1);\n to = map.map(to, -1);\n }\n map.forEach((_f, _t, fromB, toB) => {\n from = Math.min(from, fromB);\n to = Math.max(to, toB);\n });\n }\n return from == 1e9 ? null : { from, to };\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or all marks of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n if (mark instanceof Mark) {\n if (mark.isInSet(node.marks))\n this.step(new RemoveNodeMarkStep(pos, mark));\n }\n else {\n let set = node.marks, found, steps = [];\n while (found = mark.isInSet(set)) {\n steps.push(new RemoveNodeMarkStep(pos, found));\n set = found.removeFromSet(set);\n }\n for (let i = steps.length - 1; i >= 0; i--)\n this.step(steps[i]);\n }\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split (with the outermost nodes coming first).\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n", "import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty && this.selection.to == from + text.length)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure\u2014it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Accessor that constructs and returns a new [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n", "import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection, SelectionRange } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it\u2014if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, -1))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n for (let depth = $cursor.depth;; depth--) {\n let delStep = replaceStep(state.doc, $cursor.before(depth), $cursor.after(depth), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\")\n ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n if (depth == 1 || $cursor.node(depth - 1).childCount > 1)\n break;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, 1))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.depth)\n return false;\n let types = [];\n let splitDepth, deflt, atEnd = false, atStart = false;\n for (let d = $from.depth;; d--) {\n let node = $from.node(d);\n if (node.isBlock) {\n atEnd = $from.end(d) == $from.pos + ($from.depth - d);\n atStart = $from.start(d) == $from.pos - ($from.depth - d);\n deflt = defaultBlockAt($from.node(d - 1).contentMatchAt($from.indexAfter(d - 1)));\n let splitType = splitNode && splitNode($to.parent, atEnd, $from);\n types.unshift(splitType || (atEnd && deflt ? { type: deflt } : null));\n splitDepth = d;\n break;\n }\n else {\n if (d == 1)\n return false;\n types.unshift(null);\n }\n }\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let splitPos = tr.mapping.map($from.pos);\n let can = canSplit(tr.doc, splitPos, types.length, types);\n if (!can) {\n types[0] = deflt ? { type: deflt } : null;\n can = canSplit(tr.doc, splitPos, types.length, types);\n }\n if (!can)\n return false;\n tr.split(splitPos, types.length, types);\n if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {\n let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);\n if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);\n }\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr.join($pos.pos).scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch, dir) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n let isolated = before.type.spec.isolating || after.type.spec.isolating;\n if (!isolated && joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let $joinAt = tr.doc.resolve(end + 2 * conn.length);\n if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type &&\n canJoin(tr.doc, $joinAt.pos))\n tr.join($joinAt.pos);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = after.type.spec.isolating || (dir > 0 && isolated) ? null : Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type, enterAtoms) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (can || !enterAtoms && node.isAtom && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\nfunction removeInlineAtoms(ranges) {\n let result = [];\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n $from.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.isAtom && node.content.size && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos) {\n if (pos + 1 > $from.pos)\n result.push(new SelectionRange($from, $from.doc.resolve(pos + 1)));\n $from = $from.doc.resolve(pos + 1 + node.content.size);\n return false;\n }\n });\n if ($from.pos < $to.pos)\n result.push(new SelectionRange($from, $to));\n }\n return result;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null, options) {\n let removeWhenPresent = (options && options.removeWhenPresent) !== false;\n let enterAtoms = (options && options.enterInlineAtoms) !== false;\n let dropSpace = !(options && options.includeWhitespace);\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType, enterAtoms))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let add, tr = state.tr;\n if (!enterAtoms)\n ranges = removeInlineAtoms(ranges);\n if (removeWhenPresent) {\n add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));\n }\n else {\n add = !ranges.every(r => {\n let missing = false;\n tr.doc.nodesBetween(r.$from.pos, r.$to.pos, (node, pos, parent) => {\n if (missing)\n return false;\n missing = !markType.isInSet(node.marks) && !!parent && parent.type.allowsMarkType(markType) &&\n !(node.isText && /^\\s*$/.test(node.textBetween(Math.max(0, r.$from.pos - pos), Math.min(node.nodeSize, r.$to.pos - pos))));\n });\n return !missing;\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (!add) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = dropSpace && start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = dropSpace && end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n", "import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n/**\nInput rules are regular expressions describing a piece of text\nthat, when typed, causes something to happen. This might be\nchanging two dashes into an emdash, wrapping a paragraph starting\nwith `\"> \"` into a blockquote, or something entirely different.\n*/\nclass InputRule {\n /**\n Create an input rule. The rule applies when the user typed\n something and the text directly in front of the cursor matches\n `match`, which should end with `$`.\n \n The `handler` can be a string, in which case the matched text, or\n the first matched group in the regexp, is replaced by that\n string.\n \n Or a it can be a function, which will be called with the match\n array produced by\n [`RegExp.exec`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec),\n as well as the start and end of the matched range, and which can\n return a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) that describes the\n rule's effect, or null to indicate the input was not handled.\n */\n constructor(\n /**\n @internal\n */\n match, handler, options = {}) {\n this.match = match;\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n this.undoable = options.undoable !== false;\n this.inCode = options.inCode || false;\n this.inCodeMark = options.inCodeMark !== false;\n }\n}\nfunction stringHandler(string) {\n return function (state, match, start, end) {\n let insert = string;\n if (match[1]) {\n let offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n let cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end);\n };\n}\nconst MAX_MATCH = 500;\n/**\nCreate an input rules plugin. When enabled, it will cause text\ninput that matches any of the given rules to trigger the rule's\naction.\n*/\nfunction inputRules({ rules }) {\n let plugin = new Plugin({\n state: {\n init() { return null; },\n apply(tr, prev) {\n let stored = tr.getMeta(this);\n if (stored)\n return stored;\n return tr.selectionSet || tr.docChanged ? null : prev;\n }\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin);\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n let { $cursor } = view.state.selection;\n if ($cursor)\n run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin);\n });\n }\n }\n },\n isInputRules: true\n });\n return plugin;\n}\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing)\n return false;\n let state = view.state, $from = state.doc.resolve(from);\n let textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset, null, \"\\ufffc\") + text;\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i];\n if (!rule.inCodeMark && $from.marks().some(m => m.type.spec.code))\n continue;\n if ($from.parent.type.spec.code) {\n if (!rule.inCode)\n continue;\n }\n else if (rule.inCode === \"only\") {\n continue;\n }\n let match = rule.match.exec(textBefore);\n if (!match || match[0].length < text.length)\n continue;\n let startPos = from - (match[0].length - text.length);\n if (!rule.inCodeMark) {\n let hasMark = false;\n state.doc.nodesBetween(startPos, $from.pos, node => {\n if (node.isInline && node.marks.some(m => m.type.spec.code))\n hasMark = true;\n });\n if (hasMark)\n continue;\n }\n let tr = rule.handler(state, match, startPos, to);\n if (!tr)\n continue;\n if (rule.undoable)\n tr.setMeta(plugin, { transform: tr, from, to, text });\n view.dispatch(tr);\n return true;\n }\n return false;\n}\n/**\nThis is a command that will undo an input rule, if applying such a\nrule was the last thing that the user did.\n*/\nconst undoInputRule = (state, dispatch) => {\n let plugins = state.plugins;\n for (let i = 0; i < plugins.length; i++) {\n let plugin = plugins[i], undoable;\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n let tr = state.tr, toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j--)\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n if (undoable.text) {\n let marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n dispatch(tr);\n }\n return true;\n }\n }\n return false;\n};\n\n/**\nConverts double dashes to an emdash.\n*/\nconst emDash = new InputRule(/--$/, \"\u2014\", { inCodeMark: false });\n/**\nConverts three dots to an ellipsis character.\n*/\nconst ellipsis = new InputRule(/\\.\\.\\.$/, \"\u2026\", { inCodeMark: false });\n/**\n\u201CSmart\u201D opening double quotes.\n*/\nconst openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"\u201C\", { inCodeMark: false });\n/**\n\u201CSmart\u201D closing double quotes.\n*/\nconst closeDoubleQuote = new InputRule(/\"$/, \"\u201D\", { inCodeMark: false });\n/**\n\u201CSmart\u201D opening single quotes.\n*/\nconst openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"\u2018\", { inCodeMark: false });\n/**\n\u201CSmart\u201D closing single quotes.\n*/\nconst closeSingleQuote = new InputRule(/'$/, \"\u2019\", { inCodeMark: false });\n/**\nSmart-quote related input rules.\n*/\nconst smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n/**\nBuild an input rule for automatically wrapping a textblock when a\ngiven string is typed. The `regexp` argument is\ndirectly passed through to the `InputRule` constructor. You'll\nprobably want the regexp to start with `^`, so that the pattern can\nonly occur at the start of a textblock.\n\n`nodeType` is the type of node to wrap in. If it needs attributes,\nyou can either pass them directly, or pass a function that will\ncompute them from the regular expression match.\n\nBy default, if there's a node with the same type above the newly\nwrapped node, the rule will try to [join](https://prosemirror.net/docs/ref/#transform.Transform.join) those\ntwo nodes. You can pass a join predicate, which takes a regular\nexpression match and the node before the wrapped node, and can\nreturn a boolean to indicate whether a join should happen.\n*/\nfunction wrappingInputRule(regexp, nodeType, getAttrs = null, joinPredicate) {\n return new InputRule(regexp, (state, match, start, end) => {\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n let tr = state.tr.delete(start, end);\n let $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return null;\n tr.wrap(range, wrapping);\n let before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n tr.join(start - 1);\n return tr;\n });\n}\n/**\nBuild an input rule that changes the type of a textblock when the\nmatched text is typed into it. You'll usually want to start your\nregexp with `^` to that it is only matched at the start of a\ntextblock. The optional `getAttrs` parameter can be used to compute\nthe new node's attributes, and works the same as in the\n`wrappingInputRule` function.\n*/\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs = null) {\n return new InputRule(regexp, (state, match, start, end) => {\n let $start = state.doc.resolve(start);\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType))\n return null;\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs);\n });\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n", "/**\n * Copy paste from:\n * https://github.com/ProseMirror/prosemirror-view/blob/master/src/browser.ts\n */\n\nconst nav = typeof navigator != 'undefined' ? navigator : null\nconst doc = typeof document != 'undefined' ? document : null\nconst agent = (nav && nav.userAgent) || ''\n\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent)\nconst ie_upto10 = /MSIE \\d/.exec(agent)\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent)\n\nexport const ie = !!(ie_upto10 || ie_11up || ie_edge)\nexport const ie_version = ie_upto10\n ? (document as typeof document & { documentMode: unknown }).documentMode\n : ie_11up\n ? +ie_11up[1]!\n : ie_edge\n ? +ie_edge[1]!\n : 0\nexport const gecko = !ie && /gecko\\/(\\d+)/i.test(agent)\nexport const gecko_version =\n gecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1]\n\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent)\nexport const chrome = !!_chrome\nexport const chrome_version = _chrome ? +_chrome[1]! : 0\nexport const safari = !ie && !!nav && /Apple Computer/.test(nav.vendor)\n// Is true for both iOS and iPadOS for convenience\nexport const ios =\n safari && (/Mobile\\/\\w+/.test(agent) || (!!nav && nav.maxTouchPoints > 2))\nexport const mac = ios || (nav ? /Mac/.test(nav.platform) : false)\nexport const android = /Android \\d/.test(agent)\nexport const webkit =\n !!doc && 'webkitFontSmoothing' in doc.documentElement.style\nexport const webkit_version = webkit\n ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1]\n : 0\n", "import type { InputRule } from '../../inputrules'\nimport type { EditorState, TextSelection, Transaction } from '../../state'\nimport type { EditorView } from '../../view'\n\nimport { Plugin, PluginKey } from '../../state'\nimport { android, chrome } from '../browser'\n\nfunction run(\n view: EditorView,\n from: number,\n to: number,\n text: string,\n rules: InputRule[],\n plugin: Plugin\n) {\n if (view.composing) return false\n const state = view.state\n const $from = state.doc.resolve(from)\n if ($from.parent.type.spec.code) return false\n const textBefore =\n $from.parent.textBetween(\n Math.max(0, $from.parentOffset - 500),\n $from.parentOffset,\n undefined,\n '\\uFFFC'\n ) + text\n for (let _matcher of rules) {\n const matcher = _matcher as unknown as {\n match: RegExp\n handler: (\n state: EditorState,\n match: string[],\n from: number,\n to: number\n ) => Transaction\n undoable?: boolean\n }\n const match = matcher.match.exec(textBefore)\n const tr =\n match &&\n match[0] &&\n matcher.handler(state, match, from - (match[0].length - text.length), to)\n if (!tr) continue\n if (matcher.undoable !== false)\n tr.setMeta(plugin, { transform: tr, from, to, text })\n view.dispatch(tr)\n return true\n }\n return false\n}\n\nexport const customInputRulesKey = new PluginKey('MILKDOWN_CUSTOM_INPUTRULES')\nexport function customInputRules({ rules }: { rules: InputRule[] }): Plugin {\n const plugin: Plugin = new Plugin({\n key: customInputRulesKey,\n isInputRules: true,\n\n state: {\n init() {\n return null\n },\n apply(this: typeof plugin, tr, prev) {\n const stored = tr.getMeta(this)\n if (stored) return stored\n return tr.selectionSet || tr.docChanged ? null : prev\n },\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin)\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n const { $cursor } = view.state.selection as TextSelection\n if ($cursor) run(view, $cursor.pos, $cursor.pos, '', rules, plugin)\n })\n return false\n },\n keydown: (view, event) => {\n // On Chrome Android, prosemirror-view suppresses Enter keydown events\n // to avoid input corruption during composition. It then relies on DOM\n // mutation detection to retroactively handle Enter. However, this\n // fallback fails with custom node views (e.g. list-item-block) whose\n // wrapper DOM structure prevents the Enter detection heuristics from\n // recognizing the mutation. We intercept Enter here — before\n // prosemirror-view's suppression — and manually route it through\n // handleKeyDown so that keymaps (splitListItem, etc.) work correctly.\n if (!(android && chrome && (event as KeyboardEvent).key === 'Enter'))\n return false\n if (view.composing) return false\n if (\n view.someProp('handleKeyDown', (f) =>\n f(view, event as KeyboardEvent)\n )\n ) {\n event.preventDefault()\n return true\n }\n return false\n },\n },\n handleKeyDown(view, event) {\n if (event.key !== 'Enter') return false\n const { $cursor } = view.state.selection as TextSelection\n if ($cursor)\n return run(view, $cursor.pos, $cursor.pos, '\\n', rules, plugin)\n return false\n },\n },\n })\n return plugin\n}\n", "import type { Mark, MarkType } from '../../model'\nimport type { Captured, Options } from './common'\n\nimport { InputRule } from '../../inputrules'\n\n/// Create an input rule for a mark.\nexport function markRule(\n regexp: RegExp,\n markType: MarkType,\n options: Options = {}\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const { tr } = state\n const matchLength = match.length\n\n let group = match[matchLength - 1]\n let fullMatch = match[0]\n let initialStoredMarks: readonly Mark[] = []\n\n let markEnd: number\n\n const captured: Captured = {\n group,\n fullMatch,\n start,\n end,\n }\n\n const result = options.updateCaptured?.(captured)\n Object.assign(captured, result)\n ;({ group, fullMatch, start, end } = captured)\n\n if (fullMatch === null) return null\n\n if (group?.trim() === '') return null\n\n if (group) {\n const startSpaces = fullMatch.search(/\\S/)\n const textStart = start + fullMatch.indexOf(group)\n const textEnd = textStart + group.length\n\n initialStoredMarks = tr.storedMarks ?? []\n\n if (textEnd < end) tr.delete(textEnd, end)\n\n if (textStart > start) tr.delete(start + startSpaces, textStart)\n\n markEnd = start + startSpaces + group.length\n\n const attrs = options.getAttr?.(match)\n\n tr.addMark(start, markEnd, markType.create(attrs))\n tr.setStoredMarks(initialStoredMarks)\n\n options.beforeDispatch?.({ match, start, end, tr })\n }\n\n return tr\n })\n}\n", "import type { NodeType } from '../../model'\nimport type { Captured, Options } from './common'\n\nimport { InputRule } from '../../inputrules'\n\n/// Create an input rule for a node.\nexport function nodeRule(\n regexp: RegExp,\n nodeType: NodeType,\n options: Options = {}\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const { tr } = state\n let group: string | undefined = match[1]\n let fullMatch = match[0]\n\n const captured: Captured = {\n group,\n fullMatch,\n start,\n end,\n }\n\n const result = options.updateCaptured?.(captured)\n Object.assign(captured, result)\n ;({ group, fullMatch, start, end } = captured)\n\n if (fullMatch === null) return null\n\n if (!group || group.trim() === '') return null\n\n const attrs = options.getAttr?.(match)\n const node = nodeType.createAndFill(attrs)\n\n if (node) {\n tr.replaceRangeWith(\n nodeType.isBlock ? tr.doc.resolve(start).before() : start,\n end,\n node\n )\n options.beforeDispatch?.({\n match: [fullMatch, group],\n start,\n end,\n tr,\n })\n }\n\n return tr\n })\n}\n", "import { expectDomTypeError, missingRootElement } from '@milkdown/exception'\n\nimport type { EditorView } from '../../view'\n\ntype Point = [top: number, left: number]\n\nexport function calculateNodePosition(\n view: EditorView,\n target: HTMLElement,\n handler: (\n selectedRect: DOMRect,\n targetRect: DOMRect,\n parentRect: DOMRect\n ) => Point\n) {\n const state = view.state\n const { from } = state.selection\n\n const { node } = view.domAtPos(from)\n const element = node instanceof Text ? node.parentElement : node\n if (!(element instanceof HTMLElement)) throw expectDomTypeError(element)\n\n const selectedNodeRect = element.getBoundingClientRect()\n const targetNodeRect = target.getBoundingClientRect()\n const parent = target.parentElement\n if (!parent) throw expectDomTypeError(parent)\n\n const parentNodeRect = parent.getBoundingClientRect()\n\n const [top, left] = handler(selectedNodeRect, targetNodeRect, parentNodeRect)\n\n target.style.top = `${top}px`\n target.style.left = `${left}px`\n}\n\ninterface Rect {\n left: number\n right: number\n top: number\n bottom: number\n}\n\nexport function calculateTextPosition(\n view: EditorView,\n target: HTMLElement,\n handler: (\n start: Rect,\n end: Rect,\n targetRect: DOMRect,\n parentRect: DOMRect\n ) => Point\n) {\n const state = view.state\n const { from, to } = state.selection\n const start = view.coordsAtPos(from)\n const end = view.coordsAtPos(to)\n\n const targetNodeRect = target.getBoundingClientRect()\n const parent = target.parentElement\n if (!parent) throw missingRootElement()\n\n const parentNodeRect = parent.getBoundingClientRect()\n\n const [top, left] = handler(start, end, targetNodeRect, parentNodeRect)\n\n target.style.top = `${top}px`\n target.style.left = `${left}px`\n}\n\nfunction minMax(value = 0, min = 0, max = 0): number {\n return Math.min(Math.max(value, min), max)\n}\n\nexport function posToDOMRect(\n view: EditorView,\n from: number,\n to: number\n): DOMRect {\n const minPos = 0\n const maxPos = view.state.doc.content.size\n const resolvedFrom = minMax(from, minPos, maxPos)\n const resolvedEnd = minMax(to, minPos, maxPos)\n const start = view.coordsAtPos(resolvedFrom)\n const end = view.coordsAtPos(resolvedEnd, -1)\n const top = Math.min(start.top, end.top)\n const bottom = Math.max(start.bottom, end.bottom)\n const left = Math.min(start.left, end.left)\n const right = Math.max(start.right, end.right)\n const width = right - left\n const height = bottom - top\n const x = left\n const y = top\n const data = {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x,\n y,\n }\n\n return {\n ...data,\n toJSON: () => data,\n }\n}\n", "import type { Slice, NodeType, Node as ProseNode } from '../../model'\nimport type { Transaction } from '../../state'\n\nexport function cloneTr(tr: Transaction): Transaction {\n return Object.assign(Object.create(tr), tr).setTime(Date.now())\n}\n\nexport function equalNodeType(\n nodeType: NodeType | NodeType[],\n node: ProseNode\n) {\n return (\n (Array.isArray(nodeType) && nodeType.includes(node.type)) ||\n node.type === nodeType\n )\n}\n\nexport function isTextOnlySlice(slice: Slice): ProseNode | false {\n if (slice.content.childCount === 1) {\n const node = slice.content.firstChild\n if (node?.type.name === 'text' && node.marks.length === 0) return node\n\n if (node?.type.name === 'paragraph' && node.childCount === 1) {\n const _node = node.firstChild\n if (_node?.type.name === 'text' && _node.marks.length === 0) return _node\n }\n }\n\n return false\n}\n", "import type { MarkType, Node, NodeType, ResolvedPos } from '../../model'\nimport type { Predicate } from './types'\n\nexport interface NodeWithPos {\n pos: number\n node: Node\n}\nexport interface NodeWithFromTo {\n from: number\n to: number\n node: Node\n}\n\nexport function flatten(node: Node, descend = true): NodeWithPos[] {\n const result: NodeWithPos[] = []\n node.descendants((child, pos) => {\n result.push({ node: child, pos })\n if (!descend) return false\n\n return undefined\n })\n return result\n}\n\nexport function findChildren(predicate: Predicate) {\n return (node: Node, descend?: boolean): NodeWithPos[] =>\n flatten(node, descend).filter((child) => predicate(child.node))\n}\n\nexport function findChildrenByMark(\n node: Node,\n markType: MarkType,\n descend?: boolean\n): NodeWithPos[] {\n return findChildren((child) => Boolean(markType.isInSet(child.marks)))(\n node,\n descend\n )\n}\n\nexport function findParent(predicate: Predicate) {\n return ($pos: ResolvedPos): NodeWithFromTo | undefined => {\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth)\n\n if (predicate(node)) {\n const from = $pos.before(depth)\n const to = $pos.after(depth)\n return {\n from,\n to,\n node,\n }\n }\n }\n\n return undefined\n }\n}\n\nexport function findParentNodeType($pos: ResolvedPos, nodeType: NodeType) {\n return findParent((node) => node.type === nodeType)($pos)\n}\n", "import { getAtomFromSchemaFail } from '@milkdown/exception'\n\nimport type { MarkType, NodeType, Schema } from '../../model'\n\nexport function getNodeFromSchema(type: string, schema: Schema): NodeType {\n const target = schema.nodes[type]\n\n if (!target) throw getAtomFromSchemaFail('node', type)\n\n return target\n}\n\nexport function getMarkFromSchema(type: string, schema: Schema): MarkType {\n const target = schema.marks[type]\n\n if (!target) throw getAtomFromSchemaFail('mark', type)\n\n return target\n}\n", "import type { NodeType, Node as ProseNode, ResolvedPos } from '../../model'\nimport type { EditorState, Selection } from '../../state'\nimport type { Predicate } from './types'\n\nimport { NodeSelection } from '../../state'\nimport { equalNodeType } from './helper'\n\nexport interface ContentNodeWithPos {\n pos: number\n start: number\n depth: number\n node: ProseNode\n}\n\nexport function findParentNodeClosestToPos(predicate: Predicate) {\n return ($pos: ResolvedPos): ContentNodeWithPos | undefined => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i)\n if (predicate(node)) {\n return {\n pos: $pos.before(i),\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n\n return undefined\n }\n}\n\nexport function findParentNode(predicate: Predicate) {\n return (selection: Selection): ContentNodeWithPos | undefined => {\n return findParentNodeClosestToPos(predicate)(selection.$from)\n }\n}\n\nexport function findSelectedNodeOfType(\n selection: Selection,\n nodeType: NodeType\n): ContentNodeWithPos | undefined {\n if (!(selection instanceof NodeSelection)) return\n\n const { node, $from } = selection\n if (equalNodeType(nodeType, node))\n return {\n node,\n pos: $from.pos,\n start: $from.start($from.depth),\n depth: $from.depth,\n }\n\n return undefined\n}\n\nexport type FindNodeInSelectionResult = {\n hasNode: boolean\n pos: number\n target: ProseNode | null\n}\n\nexport const findNodeInSelection = (\n state: EditorState,\n node: NodeType\n): FindNodeInSelectionResult => {\n const { selection, doc } = state\n if (selection instanceof NodeSelection) {\n return {\n hasNode: selection.node.type === node,\n pos: selection.from,\n target: selection.node,\n }\n }\n\n const { from, to } = selection\n\n let hasNode = false\n let pos = -1\n let target: ProseNode | null = null\n doc.nodesBetween(from, to, (n, p) => {\n if (target) return false\n if (n.type === node) {\n hasNode = true\n pos = p\n target = n\n return false\n }\n return true\n })\n\n return {\n hasNode,\n pos,\n target,\n }\n}\n", "export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n", "import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" && /Mac|iP(hone|[oa]d)/.test(navigator.platform);\nconst windows = typeof navigator != \"undefined\" && /Win/.test(navigator.platform);\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`\u2014a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.altKey || event.metaKey || event.ctrlKey) &&\n // Ctrl-Alt may be used for AltGr on Windows\n !(windows && event.ctrlKey && event.altKey) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060, #1529.\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n", "import { stackOverFlow } from '@milkdown/exception'\n\n/// The element of the stack, which holds an array of nodes.\nexport abstract class StackElement<Node> {\n /// A method that can `push` a node into the element.\n abstract push(node: Node, ...rest: Node[]): void\n}\n\n/// The stack that is used to store the elements.\n///\n/// > Generally, you don't need to use this class directly.\n///\n/// When using the stack, users can call `stack.open` to push a new element into the stack.\n/// And use `stack.push` to push a node into the top element.\n/// Then use `stack.close` to close the top element and pop it.\n///\n/// For example: `stack.open(A).push(B).push(C).close()` will generate a structure like `A(B, C)`.\nexport class Stack<Node, Element extends StackElement<Node>> {\n protected elements: Element[] = []\n\n /// Get the size of the stack.\n size = (): number => {\n return this.elements.length\n }\n\n /// Get the top element of the stack.\n top = (): Element | undefined => {\n return this.elements.at(-1)\n }\n\n /// Push a node into the top element.\n push = (node: Node): void => {\n this.top()?.push(node)\n }\n\n /// Push a new element.\n open = (node: Element): void => {\n this.elements.push(node)\n }\n\n /// Close the top element and pop it.\n close = (): Element => {\n const el = this.elements.pop()\n if (!el) throw stackOverFlow()\n\n return el\n }\n}\n", "import type { Attrs, Node, NodeType } from '@milkdown/prose/model'\n\nimport { StackElement } from '../utility'\n\nexport class ParserStackElement extends StackElement<Node> {\n constructor(\n public type: NodeType,\n public content: Node[],\n public attrs?: Attrs\n ) {\n super()\n }\n\n push(node: Node, ...rest: Node[]) {\n this.content.push(node, ...rest)\n }\n\n pop(): Node | undefined {\n return this.content.pop()\n }\n\n static create(type: NodeType, content: Node[], attrs?: Attrs) {\n return new ParserStackElement(type, content, attrs)\n }\n}\n", "import type {\n Attrs,\n MarkType,\n Node,\n NodeType,\n Schema,\n} from '@milkdown/prose/model'\n\nimport {\n createNodeInParserFail,\n parserMatchError,\n stackOverFlow,\n} from '@milkdown/exception'\nimport { Mark } from '@milkdown/prose/model'\n\nimport type {\n MarkSchema,\n MarkdownNode,\n NodeSchema,\n RemarkParser,\n} from '../utility'\nimport type { Parser } from './types'\n\nimport { Stack } from '../utility'\nimport { ParserStackElement } from './stack-element'\n\n/// A state machine for parser. Transform remark AST into prosemirror state.\nexport class ParserState extends Stack<Node, ParserStackElement> {\n /// The schema in current editor.\n readonly schema: Schema\n\n /// @internal\n #marks: readonly Mark[] = Mark.none\n\n /// Create a parser from schema and remark instance.\n ///\n /// ```typescript\n /// const parser = ParserState.create(schema, remark)\n /// const prosemirrorNode = parser(SomeMarkdownText)\n /// ```\n static create = (schema: Schema, remark: RemarkParser): Parser => {\n const state = new this(schema)\n return (text) => {\n state.run(remark, text)\n return state.toDoc()\n }\n }\n\n /// @internal\n constructor(schema: Schema) {\n super()\n this.schema = schema\n }\n\n /// @internal\n #hasText = (node: Node): node is Node & { text: string } => node.isText\n\n /// @internal\n #maybeMerge = (a: Node, b: Node): Node | undefined => {\n if (this.#hasText(a) && this.#hasText(b) && Mark.sameSet(a.marks, b.marks))\n return this.schema.text(a.text + b.text, a.marks)\n\n return undefined\n }\n\n /// @internal\n #matchTarget = (node: MarkdownNode): NodeType | MarkType => {\n const result = Object.values({\n ...this.schema.nodes,\n ...this.schema.marks,\n }).find((x): x is NodeType | MarkType => {\n const spec = x.spec as NodeSchema | MarkSchema\n return spec.parseMarkdown.match(node)\n })\n\n if (!result) throw parserMatchError(node)\n\n return result\n }\n\n /// @internal\n #runNode = (node: MarkdownNode) => {\n const type = this.#matchTarget(node)\n const spec = type.spec as NodeSchema | MarkSchema\n\n spec.parseMarkdown.runner(this, node, type as NodeType & MarkType)\n }\n\n /// Inject root node for prosemirror state.\n injectRoot = (node: MarkdownNode, nodeType: NodeType, attrs?: Attrs) => {\n this.openNode(nodeType, attrs)\n this.next(node.children)\n\n return this\n }\n\n /// Open a new node, the next operations will\n /// add nodes into that new node until `closeNode` is called.\n openNode = (nodeType: NodeType, attrs?: Attrs) => {\n this.open(ParserStackElement.create(nodeType, [], attrs))\n return this\n }\n\n /// @internal\n #closeNodeAndPush = (): Node => {\n this.#marks = Mark.none\n const element = this.close()\n\n return this.#addNodeAndPush(element.type, element.attrs, element.content)\n }\n\n /// Close the current node and push it into the parent node.\n closeNode = () => {\n try {\n this.#closeNodeAndPush()\n } catch (e) {\n console.error(e)\n }\n return this\n }\n\n /// @internal\n #addNodeAndPush = (\n nodeType: NodeType,\n attrs?: Attrs,\n content?: Node[]\n ): Node => {\n const node = nodeType.createAndFill(attrs, content, this.#marks)\n if (!node) throw createNodeInParserFail(nodeType, attrs, content)\n\n this.push(node)\n\n return node\n }\n\n /// Add a node into current node.\n addNode = (nodeType: NodeType, attrs?: Attrs, content?: Node[]) => {\n try {\n this.#addNodeAndPush(nodeType, attrs, content)\n } catch (e) {\n console.error(e)\n }\n return this\n }\n\n /// Open a new mark, the next nodes added will have that mark.\n openMark = (markType: MarkType, attrs?: Attrs) => {\n const mark = markType.create(attrs)\n\n this.#marks = mark.addToSet(this.#marks)\n return this\n }\n\n /// Close a opened mark.\n closeMark = (markType: MarkType) => {\n this.#marks = markType.removeFromSet(this.#marks)\n return this\n }\n\n /// Add a text node into current node.\n addText = (text: string) => {\n try {\n const topElement = this.top()\n if (!topElement) throw stackOverFlow()\n\n const prevNode = topElement.pop()\n const currNode = this.schema.text(text, this.#marks)\n\n if (!prevNode) {\n topElement.push(currNode)\n return this\n }\n\n const merged = this.#maybeMerge(prevNode, currNode)\n if (merged) {\n topElement.push(merged)\n return this\n }\n topElement.push(prevNode, currNode)\n return this\n } catch (e) {\n console.error(e)\n return this\n }\n }\n\n /// @internal\n build = (): Node => {\n let doc: Node | undefined\n\n do doc = this.#closeNodeAndPush()\n while (this.size())\n\n return doc\n }\n\n /// Give the node or node list back to the state and\n /// the state will find a proper runner (by `match` method in parser spec) to handle it.\n next = (nodes: MarkdownNode | MarkdownNode[] = []) => {\n ;[nodes].flat().forEach((node) => this.#runNode(node))\n return this\n }\n\n /// Build the current state into a [prosemirror document](https://prosemirror.net/docs/ref/#model.Document_Structure).\n toDoc = () => this.build()\n\n /// Transform a markdown string into prosemirror state.\n run = (remark: RemarkParser, markdown: string) => {\n const tree = remark.runSync(\n remark.parse(markdown),\n markdown\n ) as MarkdownNode\n this.next(tree)\n\n return this\n }\n}\n", "import type { MarkdownNode } from '..'\nimport type { JSONRecord } from '../utility'\n\nimport { StackElement } from '../utility'\n\nexport class SerializerStackElement extends StackElement<MarkdownNode> {\n constructor(\n public type: string,\n public children?: MarkdownNode[],\n public value?: string,\n public props: JSONRecord = {}\n ) {\n super()\n }\n\n static create = (\n type: string,\n children?: MarkdownNode[],\n value?: string,\n props: JSONRecord = {}\n ) => new SerializerStackElement(type, children, value, props)\n\n push = (node: MarkdownNode, ...rest: MarkdownNode[]) => {\n if (!this.children) this.children = []\n\n this.children.push(node, ...rest)\n }\n\n pop = (): MarkdownNode | undefined => this.children?.pop()\n}\n", "import type {\n Fragment,\n MarkType,\n Node,\n NodeType,\n Schema,\n} from '@milkdown/prose/model'\n\nimport { serializerMatchError } from '@milkdown/exception'\nimport { Mark } from '@milkdown/prose/model'\n\nimport type {\n JSONRecord,\n MarkSchema,\n MarkdownNode,\n NodeSchema,\n RemarkParser,\n Root,\n} from '../utility'\nimport type { Serializer } from './types'\n\nimport { Stack } from '../utility'\nimport { SerializerStackElement } from './stack-element'\n\nconst isFragment = (x: Node | Fragment): x is Fragment =>\n Object.prototype.hasOwnProperty.call(x, 'size')\n\n/// State for serializer.\n/// Transform prosemirror state into remark AST.\nexport class SerializerState extends Stack<\n MarkdownNode,\n SerializerStackElement\n> {\n /// @internal\n #marks: readonly Mark[] = Mark.none\n /// Get the schema of state.\n readonly schema: Schema\n\n /// Create a serializer from schema and remark instance.\n ///\n /// ```typescript\n /// const serializer = SerializerState.create(schema, remark)\n /// const markdown = parser(prosemirrorDoc)\n /// ```\n static create = (schema: Schema, remark: RemarkParser): Serializer => {\n const state = new this(schema)\n return (content: Node) => {\n state.run(content)\n return state.toString(remark)\n }\n }\n\n /// @internal\n constructor(schema: Schema) {\n super()\n this.schema = schema\n }\n\n /// @internal\n #matchTarget = (node: Node | Mark): NodeType | MarkType => {\n const result = Object.values({\n ...this.schema.nodes,\n ...this.schema.marks,\n }).find((x): x is NodeType | MarkType => {\n const spec = x.spec as NodeSchema | MarkSchema\n return spec.toMarkdown.match(node as Node & Mark)\n })\n\n if (!result) throw serializerMatchError(node.type)\n\n return result\n }\n\n /// @internal\n #runProseNode = (node: Node) => {\n const type = this.#matchTarget(node)\n const spec = type.spec as NodeSchema\n return spec.toMarkdown.runner(this, node)\n }\n\n /// @internal\n #runProseMark = (mark: Mark, node: Node) => {\n const type = this.#matchTarget(mark)\n const spec = type.spec as MarkSchema\n return spec.toMarkdown.runner(this, mark, node)\n }\n\n /// @internal\n #runNode = (node: Node) => {\n const { marks } = node\n const getPriority = (x: Mark) => x.type.spec.priority ?? 50\n const tmp = [...marks].sort((a, b) => getPriority(a) - getPriority(b))\n const unPreventNext = tmp.every((mark) => !this.#runProseMark(mark, node))\n if (unPreventNext) this.#runProseNode(node)\n\n marks.forEach((mark) => this.#closeMark(mark))\n }\n\n /// @internal\n #searchType = (child: MarkdownNode, type: string): MarkdownNode => {\n if (child.type === type) return child\n\n if (child.children?.length !== 1) return child\n\n const searchNode = (node: MarkdownNode): MarkdownNode | null => {\n if (node.type === type) return node.value != null ? null : node\n\n if (node.children?.length !== 1) return null\n\n const [firstChild] = node.children\n if (!firstChild) return null\n\n return searchNode(firstChild)\n }\n\n const target = searchNode(child)\n\n if (!target) return child\n\n const tmp = target.children ? [...target.children] : undefined\n const node = { ...child, children: tmp }\n node.children = tmp\n target.children = [node]\n\n return target\n }\n\n /// @internal\n #maybeMergeChildren = (node: MarkdownNode): MarkdownNode => {\n const { children } = node\n if (!children) return node\n\n node.children = children.reduce((nextChildren, child, index) => {\n if (index === 0) return [child]\n\n const last = nextChildren.at(-1)\n if (last && last.isMark && child.isMark) {\n child = this.#searchType(child, last.type)\n const { children: currChildren, ...currRest } = child\n const { children: prevChildren, ...prevRest } = last\n if (\n child.type === last.type &&\n currChildren &&\n prevChildren &&\n JSON.stringify(currRest) === JSON.stringify(prevRest)\n ) {\n const next = {\n ...prevRest,\n children: [...prevChildren, ...currChildren],\n }\n return nextChildren\n .slice(0, -1)\n .concat(this.#maybeMergeChildren(next))\n }\n }\n return nextChildren.concat(child)\n }, [] as MarkdownNode[])\n\n return node\n }\n\n /// @internal\n #createMarkdownNode = (element: SerializerStackElement) => {\n const node: MarkdownNode = {\n ...element.props,\n type: element.type,\n }\n\n if (element.children) node.children = element.children\n\n if (element.value) node.value = element.value\n\n return node\n }\n\n /// Open a new node, the next operations will\n /// add nodes into that new node until `closeNode` is called.\n openNode = (type: string, value?: string, props?: JSONRecord) => {\n this.open(SerializerStackElement.create(type, undefined, value, props))\n return this\n }\n\n #moveSpaces = (\n element: SerializerStackElement,\n onPush: () => MarkdownNode\n ) => {\n let startSpaces = ''\n let endSpaces = ''\n const children = element.children\n let first = -1\n let last = -1\n const findIndex = (node: MarkdownNode[]) => {\n if (!node) return\n node.forEach((child, index) => {\n if (child.type === 'text' && child.value) {\n if (first < 0) first = index\n\n last = index\n }\n })\n }\n\n if (children) {\n findIndex(children)\n const lastChild = children?.[last] as\n | (MarkdownNode & { value: string })\n | undefined\n const firstChild = children?.[first] as\n | (MarkdownNode & { value: string })\n | undefined\n if (lastChild && lastChild.value.endsWith(' ')) {\n const text = lastChild.value\n const trimmed = text.trimEnd()\n endSpaces = text.slice(trimmed.length)\n lastChild.value = trimmed\n }\n if (firstChild && firstChild.value.startsWith(' ')) {\n const text = firstChild.value\n const trimmed = text.trimStart()\n startSpaces = text.slice(0, text.length - trimmed.length)\n firstChild.value = trimmed\n }\n }\n\n if (startSpaces.length) this.#addNodeAndPush('text', undefined, startSpaces)\n\n const result = onPush()\n\n if (endSpaces.length) this.#addNodeAndPush('text', undefined, endSpaces)\n\n return result\n }\n\n /// @internal\n #closeNodeAndPush = (trim: boolean = false): MarkdownNode => {\n const element = this.close()\n\n const onPush = () =>\n this.#addNodeAndPush(\n element.type,\n element.children,\n element.value,\n element.props\n )\n\n if (trim) return this.#moveSpaces(element, onPush)\n\n return onPush()\n }\n\n /// Close the current node and push it into the parent node.\n closeNode = () => {\n this.#closeNodeAndPush()\n return this\n }\n\n /// @internal\n #addNodeAndPush = (\n type: string,\n children?: MarkdownNode[],\n value?: string,\n props?: JSONRecord\n ): MarkdownNode => {\n const element = SerializerStackElement.create(type, children, value, props)\n const node: MarkdownNode = this.#maybeMergeChildren(\n this.#createMarkdownNode(element)\n )\n this.push(node)\n return node\n }\n\n /// Add a node into current node.\n addNode = (\n type: string,\n children?: MarkdownNode[],\n value?: string,\n props?: JSONRecord\n ) => {\n this.#addNodeAndPush(type, children, value, props)\n return this\n }\n\n /// @internal\n #openMark = (\n mark: Mark,\n type: string,\n value?: string,\n props?: JSONRecord\n ) => {\n const isIn = mark.isInSet(this.#marks)\n\n if (isIn) return this\n\n this.#marks = mark.addToSet(this.#marks)\n return this.openNode(type, value, { ...props, isMark: true })\n }\n\n /// @internal\n #closeMark = (mark: Mark): void => {\n const isIn = mark.isInSet(this.#marks)\n\n if (!isIn) return\n\n this.#marks = mark.type.removeFromSet(this.#marks)\n this.#closeNodeAndPush(true)\n }\n\n /// Open a new mark, the next nodes added will have that mark.\n /// The mark will be closed automatically.\n withMark = (mark: Mark, type: string, value?: string, props?: JSONRecord) => {\n this.#openMark(mark, type, value, props)\n return this\n }\n\n /// Close a opened mark.\n /// In most cases you don't need this because\n /// marks will be closed automatically.\n closeMark = (mark: Mark) => {\n this.#closeMark(mark)\n return this\n }\n\n /// @internal\n build = (): MarkdownNode => {\n let doc: MarkdownNode | null = null\n do doc = this.#closeNodeAndPush()\n while (this.size())\n\n return doc\n }\n\n /// Give the node or node list back to the state and\n /// the state will find a proper runner (by `match` method in serializer spec) to handle it.\n next = (nodes: Node | Fragment) => {\n if (isFragment(nodes)) {\n nodes.forEach((node) => {\n this.#runNode(node)\n })\n return this\n }\n this.#runNode(nodes)\n return this\n }\n\n /// Use a remark parser to serialize current AST stored.\n override toString = (remark: RemarkParser): string =>\n remark.stringify(this.build() as Root)\n\n /// Transform a prosemirror node tree into remark AST.\n run = (tree: Node) => {\n this.next(tree)\n\n return this\n }\n}\n", "import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n var _a;\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n let child = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (child.nodeType == 1 && child.contentEditable == \"false\") {\n if ((_a = child.pmViewDesc) === null || _a === void 0 ? void 0 : _a.ignoreForSelection)\n off += dir;\n else\n return false;\n }\n else {\n node = child;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n // Clip the offset, because Chrome will return a text offset\n // into <input> nodes, which can't be treated as a regular DOM\n // offset\n if (pos)\n return { node: pos.offsetNode, offset: Math.min(nodeSize(pos.offsetNode), pos.offset) };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: Math.min(nodeSize(range.startContainer), range.startOffset) };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;;) {\n if (!parent)\n break;\n if (parent.nodeType != 1) {\n parent = parentNode(parent);\n continue;\n }\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n let pos = atTop ? \"fixed\" : getComputedStyle(parent).position;\n if (/^(fixed|sticky)$/.test(pos))\n break;\n parent = pos == \"absolute\" ? parent.offsetParent : parentNode(parent);\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange(), result;\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect)) {\n result = { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n break;\n }\n }\n range.detach();\n return result || { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true), rect;\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&\n // Ignore elements with zero-size bounding rectangles\n ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {\n if (desc.node.isBlock && desc.parent && !/^T(R|BODY|HEAD|FOOT)$/.test(desc.dom.nodeName)) {\n // Only apply the horizontal test to the innermost block. Vertical for any parent.\n if (!sawBlock && rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (!sawBlock && rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n sawBlock = true;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into <input> nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n if (!sel)\n return $head.pos == $head.start() || $head.pos == $head.end();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) {\n for (let i = 0; i < child.children.length; i++) {\n let inner = child.children[i];\n if (inner.size) {\n child = inner;\n break;\n }\n }\n }\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, view, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, view, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = view.root.getSelection();\n let selRange = view.domSelectionRange();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && selRange.focusNode && selRange.focusNode != headDOM.node && selRange.focusNode.nodeType == 1) {\n let after = selRange.focusNode.childNodes[selRange.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !(brKludge && gecko)) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n get ignoreForSelection() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get ignoreForSelection() { return !!this.widget.type.spec.relaxedSide; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM, spec) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n this.spec = spec;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom, spec);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n let spec = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);\n ({ dom, contentDOM } = spec);\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by <br contenteditable=false>\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view, i);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view, i);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view, i);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view, 0);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.draggable = true;\n }\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.removeAttribute(\"draggable\");\n }\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update && (this.node.type == node.type || this.spec.multiType)) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, view, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, view.root)\n : super.setSelection(anchor, head, view, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view, parentIndex) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1, scanTo = this.top.children.length;\n if (parentIndex < this.preMatch.index)\n scanTo = Math.min(this.index + 3, scanTo);\n for (let i = this.index; i < scanTo; i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.destroyBetween(this.index, i);\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content) ||\n !sameOuterDeco(outerDeco, next.outerDeco) || !innerDeco.eq(next.innerDeco))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), anchor, selection;\n if (selectionCollapsed(domSel)) {\n anchor = head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n if (domSel instanceof view.dom.ownerDocument.defaultView.Selection && domSel.rangeCount > 1) {\n let min = head, max = head;\n for (let i = 0; i < domSel.rangeCount; i++) {\n let range = domSel.getRangeAt(i);\n min = Math.min(min, view.docView.posFromDOM(range.startContainer, range.startOffset, 1));\n max = Math.max(max, view.docView.posFromDOM(range.endContainer, range.endOffset, -1));\n }\n if (min < 0)\n return null;\n [anchor, head] = max == view.state.selection.anchor ? [max, min] : [min, max];\n $head = doc.resolve(head);\n }\n else {\n anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n }\n if (anchor < 0)\n return null;\n }\n let $anchor = doc.resolve(anchor);\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection();\n if (!domSel)\n return;\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n domSel.collapse(node.parentNode, domIndex(node) + 1);\n else\n domSel.collapse(node, 0);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (!sel)\n return;\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text, slice };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = !!text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode) {\n slice = new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0);\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, true); });\n return slice;\n }\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, asText); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"<td>..</td>\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nlet _policy = null;\nfunction maybeWrapTrusted(html) {\n let trustedTypes = window.trustedTypes;\n if (!trustedTypes)\n return html;\n // With the require-trusted-types-for CSP, Chrome will block\n // innerHTML, even on a detached document. This wraps the string in\n // a way that makes the browser allow us to use its parser again.\n if (!_policy)\n _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy(\"ProseMirrorClipboard\", { createHTML: (s) => s });\n return _policy.createHTML(html);\n}\nfunction readHTML(html) {\n let metas = /^(\\s*<meta [^>]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"</\" + n + \">\").reverse().join(\"\");\n elt.innerHTML = maybeWrapTrusted(html);\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\", button: 0 };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastChromeDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n this.badSafariComposition = false;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n let deflt = () => view.state.tr.insertText(text).scrollIntoView();\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text, deflt)))\n view.dispatch(deflt());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n if (view.state.selection.eq(selection))\n return;\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier] &&\n view.input.lastClick.button == event.button) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type, button: event.button };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc && targetDesc.nodeDOM.nodeType == 1 ? targetDesc.nodeDOM : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n (targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos))\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$to;\n if (state.selection instanceof TextSelection &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)) ||\n chrome && windows && selectionBeforeUneditable(view))) { // Issue #1500\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view, !state.selection.empty);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n let sel = view.domSelection();\n if (sel)\n sel.collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\nfunction selectionBeforeUneditable(view) {\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (!focusNode || focusNode.nodeType != 1 || focusOffset >= focusNode.childNodes.length)\n return false;\n let next = focusNode.childNodes[focusOffset];\n return next.nodeType == 1 && next.contentEditable == \"false\";\n}\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.badSafariComposition)\n view.domObserver.forceFlush();\n else if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc, lastChanged = view.domObserver.lastChangedTextNode;\n if (textBefore == lastChanged || textAfter == lastChanged)\n return lastChanged;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore || textAfter;\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, restarting = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (restarting || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view), cur = view.state.selection;\n if (sel && !sel.eq(cur))\n view.dispatch(view.state.tr.setSelection(sel));\n else if ((view.markCursor || restarting) && !cur.$from.node(cur.$from.sharedDepth(cur.to)).inlineContent)\n view.dispatch(view.state.tr.deleteSelection());\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API\u2014all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nfunction dragMoves(view, event) {\n let copy;\n view.someProp(\"dragCopies\", test => { copy = copy || test(event); });\n return copy != null ? !copy : !event[dragCopyModifier];\n}\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let draggedSlice = (node || view.state.selection).content();\n let { dom, text, slice } = serializeForClipboard(view, draggedSlice);\n // Pre-120 Chrome versions clear files when calling `clearData` (#1472)\n if (!event.dataTransfer.files.length || !chrome || chrome_version > 120)\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://code.haverbeke.berlin/prosemirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, dragMoves(view, event), node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, event) => {\n try {\n handleDrop(view, event, view.dragging);\n }\n finally {\n view.dragging = null;\n }\n};\nfunction handleDrop(view, event, dragging) {\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, false); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && dragMoves(view, event));\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n}\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants\u2014see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure\u2014it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n forEachSet(f) { f(this); }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n forEachSet(f) {\n for (let i = 0; i < this.members.length; i++)\n this.members[i].forEachSet(f);\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.lastChangedTextNode = null;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length)) {\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n this.flushSoon();\n }\n else if (safari && view.composing && mutations.some(m => m.type == \"childList\" && m.target.nodeName == \"TR\")) {\n // Safari does weird stuff when finishing a composition in a\n // table cell, which tends to involve inserting inappropriate\n // nodes in the table row.\n view.input.badSafariComposition = true;\n this.flushSoon();\n }\n else {\n this.flush();\n }\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (added.some(n => n.nodeName == \"BR\") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {\n // Browsers sometimes insert a bogus break node if you\n // backspace out the last bit of text before an inline-flex node (#1552)\n for (let node of added)\n if (node.nodeName == \"BR\" && node.parentNode) {\n let after = node.nextSibling;\n while (after && after.nodeType == 1) {\n if (after.contentEditable == \"false\") {\n node.parentNode.removeChild(node);\n break;\n }\n after = after.firstChild;\n }\n }\n }\n else if (gecko && added.length) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let [a, b] = brs;\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n else {\n let { focusNode } = this.currentSelection;\n for (let br of brs) {\n let parent = br.parentNode;\n if (parent && parent.nodeName == \"LI\" && (!focusNode || blockParent(view, focusNode) != parent))\n br.remove();\n }\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n if (view.input.badSafariComposition) {\n view.input.badSafariComposition = false;\n fixUpBadSafariComposition(view, added);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let node = mut.addedNodes[i];\n added.push(node);\n if (node.nodeType == 3)\n this.lastChangedTextNode = node;\n }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n this.lastChangedTextNode = mut.target;\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it\u2014using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\nfunction blockParent(view, node) {\n for (let p = node.parentNode; p && p != view.dom; p = p.parentNode) {\n let desc = view.docView.nearestDesc(p, true);\n if (desc && desc.node.isBlock)\n return p;\n }\n return null;\n}\n// Kludge for a Safari bug where, on ending a composition in an\n// otherwise empty table cell, it randomly moves the composed text\n// into the table row around that cell, greatly confusing everything\n// (#188).\nfunction fixUpBadSafariComposition(view, addedNodes) {\n var _a;\n let { focusNode, focusOffset } = view.domSelectionRange();\n for (let node of addedNodes) {\n if (((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName) == \"TR\") {\n let nextCell = node.nextSibling;\n while (nextCell && (nextCell.nodeName != \"TD\" && nextCell.nodeName != \"TH\"))\n nextCell = nextCell.nextSibling;\n if (nextCell) {\n let parent = nextCell;\n for (;;) {\n let first = parent.firstChild;\n if (!first || first.nodeType != 1 || first.contentEditable == \"false\" ||\n /^(BR|IMG)$/.test(first.nodeName))\n break;\n parent = first;\n }\n parent.insertBefore(node, parent.firstChild);\n if (focusNode == node)\n view.domSelection().collapse(node, focusOffset);\n }\n else {\n node.parentNode.removeChild(node);\n }\n }\n }\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (change)\n view.input.domChangeCount++;\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (!$from.sameParent($to) || !$from.parent.inlineContent) &&\n $from.pos < $to.pos && !/\\S/.test(parse.doc.textBetween($from.pos, $to.pos, \"\", \"\")))) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && change.endB == change.start)\n view.input.lastChromeDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let mkTr = (base) => {\n let tr = base || view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastChromeDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n return tr.scrollIntoView();\n };\n let markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n let tr = mkTr(view.state.tr.delete(chFrom, chTo));\n let marks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n if (marks)\n tr.ensureMarks(marks);\n view.dispatch(tr);\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n let tr = mkTr(view.state.tr);\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n view.dispatch(tr);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n let deflt = () => mkTr(view.state.tr.insertText(text, chFrom, chTo));\n if (!view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text, deflt)))\n view.dispatch(deflt());\n }\n else {\n view.dispatch(mkTr());\n }\n }\n else {\n view.dispatch(mkTr());\n }\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://code.haverbeke.berlin/prosemirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && (!this.trackWrites || !this.dom.contains(this.trackWrites)))\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (!startDOM || !this.dom.contains(startDOM.nodeType == 1 ? startDOM : startDOM.parentNode)) ;\n else if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (sel.from < this.state.doc.content.size && this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && movedPos < this.state.doc.content.size && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes\u2014for example when interpreting an event\n target\u2014you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Serialize the given slice as it would be if it was copied from\n this editor. Returns a DOM element that contains a\n representation of the slice as its children, a textual\n representation, and the transformed slice (which can be\n different from the given input due to hooks like\n [`transformCopied`](https://prosemirror.net/docs/ref/#view.EditorProps.transformCopied)).\n */\n serializeForClipboard(slice) {\n return serializeForClipboard(this, slice);\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n if (!sel)\n return { focusNode: null, focusOffset: 0, anchorNode: null, anchorOffset: 0 };\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nEditorView.prototype.dispatch = function (tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n};\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.from, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard };\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n plugin.meta = {\n package: '@milkdown/core',\n group: 'System',\n ...meta,\n }\n\n return plugin\n}\n", "import type { Options } from 'remark-stringify'\n\nexport const remarkHandlers: Required<Options>['handlers'] = {\n text: (node, _, state, info) => {\n // This config is to remove the `` entity when have trailing spaces\n const value = node.value\n // Check if the text contains only trailing spaces that might be encoded\n if (/^[^*_\\\\]*\\s+$/.test(value)) {\n // For text that ends with spaces but has no markdown special characters that need escaping,\n // return the value directly to preserve trailing spaces\n return value\n }\n // For other text, use safe to handle markdown escaping but prevent space encoding\n return state.safe(value, { ...info, encode: [] })\n },\n strong: (node, _, state, info) => {\n const marker = node.marker || state.options.strong || '*'\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker + marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current(),\n })\n )\n value += tracker.move(marker + marker)\n exit()\n return value\n },\n emphasis: (node, _, state, info) => {\n const marker = node.marker || state.options.emphasis || '*'\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current(),\n })\n )\n value += tracker.move(marker)\n exit()\n return value\n },\n}\n", "import type { SliceType, TimerType } from '@milkdown/ctx'\nimport type { InputRule } from '@milkdown/prose/inputrules'\nimport type { EditorState, Plugin } from '@milkdown/prose/state'\nimport type {\n EditorView,\n MarkViewConstructor,\n NodeViewConstructor,\n} from '@milkdown/prose/view'\nimport type { RemarkParser, RemarkPlugin } from '@milkdown/transformer'\nimport type { Options } from 'remark-stringify'\n\nimport { createSlice } from '@milkdown/ctx'\nimport remarkParse from 'remark-parse'\nimport remarkStringify from 'remark-stringify'\nimport { unified } from 'unified'\n\nimport type { Editor } from '../editor'\n\nimport { remarkHandlers } from '../__internal__'\n\n/// A slice which contains the editor view instance.\nexport const editorViewCtx = createSlice({} as EditorView, 'editorView')\n\n/// A slice which contains the editor state.\nexport const editorStateCtx = createSlice({} as EditorState, 'editorState')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[ConfigReady]`.\nexport const initTimerCtx = createSlice([] as TimerType[], 'initTimer')\n\n/// A slice which stores the editor instance.\nexport const editorCtx = createSlice({} as Editor, 'editor')\n\n/// A slice which stores the input rules.\nexport const inputRulesCtx = createSlice([] as InputRule[], 'inputRules')\n\n/// A slice which stores the prosemirror plugins.\nexport const prosePluginsCtx = createSlice([] as Plugin[], 'prosePlugins')\n\n/// A slice which stores the remark plugins.\nexport const remarkPluginsCtx = createSlice(\n [] as RemarkPlugin[],\n 'remarkPlugins'\n)\n\ntype NodeView = [nodeId: string, view: NodeViewConstructor]\n\n/// A slice which stores the prosemirror node views.\nexport const nodeViewCtx = createSlice([] as NodeView[], 'nodeView')\n\ntype MarkView = [nodeId: string, view: MarkViewConstructor]\n\n/// A slice which stores the prosemirror mark views.\nexport const markViewCtx = createSlice([] as MarkView[], 'markView')\n\n/// A slice which stores the remark instance.\nexport const remarkCtx: SliceType<RemarkParser, 'remark'> = createSlice(\n unified().use(remarkParse).use(remarkStringify),\n 'remark'\n)\n\n/// A slice which stores the remark stringify options.\nexport const remarkStringifyOptionsCtx = createSlice(\n {\n handlers: remarkHandlers,\n encode: [],\n } as Options,\n 'remarkStringifyOptions'\n)\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\n\nimport { createTimer } from '@milkdown/ctx'\n\nimport { withMeta } from '../__internal__'\n\n/// @internal\nexport type Config = (ctx: Ctx) => void | Promise<void>\n\n/// The timer which will be resolved when the config plugin is ready.\nexport const ConfigReady = createTimer('ConfigReady')\n\n/// The config plugin.\n/// This plugin will load all user configs.\nexport function config(configure: Config): MilkdownPlugin {\n const plugin: MilkdownPlugin = (ctx) => {\n ctx.record(ConfigReady)\n\n return async () => {\n await configure(ctx)\n ctx.done(ConfigReady)\n\n return () => {\n ctx.clearTimer(ConfigReady)\n }\n }\n }\n\n withMeta(plugin, {\n displayName: 'Config',\n })\n\n return plugin\n}\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { createTimer } from '@milkdown/ctx'\nimport remarkParse from 'remark-parse'\nimport remarkStringify, { type Options } from 'remark-stringify'\nimport { unified } from 'unified'\n\nimport type { Editor } from '../editor'\n\nimport { remarkHandlers, withMeta } from '../__internal__'\nimport {\n editorCtx,\n initTimerCtx,\n inputRulesCtx,\n markViewCtx,\n nodeViewCtx,\n prosePluginsCtx,\n remarkCtx,\n remarkPluginsCtx,\n remarkStringifyOptionsCtx,\n} from './atoms'\nimport { ConfigReady } from './config'\n\n/// The timer which will be resolved when the init plugin is ready.\nexport const InitReady = createTimer('InitReady')\n\n/// The init plugin.\n/// This plugin prepare slices that needed by other plugins. And create a remark instance.\n///\n/// This plugin will wait for the config plugin.\nexport function init(editor: Editor): MilkdownPlugin {\n const plugin: MilkdownPlugin = (ctx) => {\n ctx\n .inject(editorCtx, editor)\n .inject(prosePluginsCtx, [])\n .inject(remarkPluginsCtx, [])\n .inject(inputRulesCtx, [])\n .inject(nodeViewCtx, [])\n .inject(markViewCtx, [])\n .inject(remarkStringifyOptionsCtx, {\n handlers: remarkHandlers,\n encode: [],\n } as Options)\n .inject(remarkCtx, unified().use(remarkParse).use(remarkStringify))\n .inject(initTimerCtx, [ConfigReady])\n .record(InitReady)\n\n return async () => {\n await ctx.waitTimers(initTimerCtx)\n const options = ctx.get(remarkStringifyOptionsCtx)\n ctx.set(\n remarkCtx,\n unified().use(remarkParse).use(remarkStringify, options)\n )\n\n ctx.done(InitReady)\n\n return () => {\n ctx\n .remove(editorCtx)\n .remove(prosePluginsCtx)\n .remove(remarkPluginsCtx)\n .remove(inputRulesCtx)\n .remove(nodeViewCtx)\n .remove(markViewCtx)\n .remove(remarkStringifyOptionsCtx)\n .remove(remarkCtx)\n .remove(initTimerCtx)\n .clearTimer(InitReady)\n }\n }\n }\n withMeta(plugin, {\n displayName: 'Init',\n })\n\n return plugin\n}\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type {\n MarkSchema,\n NodeSchema,\n RemarkParser,\n} from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { Schema } from '@milkdown/prose/model'\n\nimport { withMeta } from '../__internal__'\nimport { remarkCtx, remarkPluginsCtx } from './atoms'\nimport { InitReady } from './init'\n\n/// The timer which will be resolved when the schema plugin is ready.\nexport const SchemaReady = createTimer('SchemaReady')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[InitReady]`.\nexport const schemaTimerCtx = createSlice([] as TimerType[], 'schemaTimer')\n\n/// A slice which contains the schema.\nexport const schemaCtx = createSlice({} as Schema, 'schema')\n\n/// A slice which stores the nodes spec.\nexport const nodesCtx = createSlice([] as Array<[string, NodeSchema]>, 'nodes')\n\n/// A slice which stores the marks spec.\nexport const marksCtx = createSlice([] as Array<[string, MarkSchema]>, 'marks')\n\nfunction extendPriority<T extends NodeSchema | MarkSchema>(x: T): T {\n return {\n ...x,\n parseDOM: x.parseDOM?.map((rule) => ({ priority: x.priority, ...rule })),\n }\n}\n\n/// The schema plugin.\n/// This plugin will load all nodes spec and marks spec and create a schema.\n///\n/// This plugin will wait for the init plugin.\nexport const schema: MilkdownPlugin = (ctx) => {\n ctx\n .inject(schemaCtx, {} as Schema)\n .inject(nodesCtx, [])\n .inject(marksCtx, [])\n .inject(schemaTimerCtx, [InitReady])\n .record(SchemaReady)\n\n return async () => {\n await ctx.waitTimers(schemaTimerCtx)\n\n const remark = ctx.get(remarkCtx)\n const remarkPlugins = ctx.get(remarkPluginsCtx)\n\n const processor = remarkPlugins.reduce(\n (acc: RemarkParser, plug) =>\n acc.use(plug.plugin, plug.options) as unknown as RemarkParser,\n remark\n )\n ctx.set(remarkCtx, processor)\n\n const nodes = Object.fromEntries(\n ctx.get(nodesCtx).map(([key, x]) => [key, extendPriority(x)])\n )\n const marks = Object.fromEntries(\n ctx.get(marksCtx).map(([key, x]) => [key, extendPriority(x)])\n )\n const schema = new Schema({ nodes, marks })\n\n ctx.set(schemaCtx, schema)\n\n ctx.done(SchemaReady)\n\n return () => {\n ctx\n .remove(schemaCtx)\n .remove(nodesCtx)\n .remove(marksCtx)\n .remove(schemaTimerCtx)\n .clearTimer(SchemaReady)\n }\n }\n}\n\nwithMeta(schema, {\n displayName: 'Schema',\n})\n", "import type { Ctx, MilkdownPlugin, SliceType } from '@milkdown/ctx'\nimport type { Command } from '@milkdown/prose/state'\n\nimport { Container, createSlice, createTimer } from '@milkdown/ctx'\nimport { callCommandBeforeEditorView } from '@milkdown/exception'\nimport { chainCommands } from '@milkdown/prose/commands'\n\nimport { withMeta } from '../__internal__'\nimport { editorViewCtx } from './atoms'\nimport { SchemaReady } from './schema'\n\n/// @internal\nexport type Cmd<T = undefined> = (payload?: T) => Command\n\n/// @internal\nexport type CmdKey<T = undefined> = SliceType<Cmd<T>>\n\ntype InferParams<T> = T extends CmdKey<infer U> ? U : never\n\n/// A chainable command helper.\nexport interface CommandChain {\n /// Run the command chain.\n run: () => boolean\n /// Add an inline command to the chain.\n inline: (command: Command) => CommandChain\n /// Add a registered command to the chain.\n pipe: {\n <T extends CmdKey<any>>(\n slice: string,\n payload?: InferParams<T>\n ): CommandChain\n <T>(slice: CmdKey<T>, payload?: T): CommandChain\n (slice: string | CmdKey<any>, payload?: any): CommandChain\n }\n}\n\n/// The command manager.\n/// This manager will manage all commands in editor.\n/// Generally, you don't need to use this manager directly.\n/// You can use the `$command` and `$commandAsync` in `@milkdown/utils` to create and call a command.\nexport class CommandManager {\n /// @internal\n #container = new Container()\n\n /// @internal\n #ctx: Ctx | null = null\n\n /// @internal\n setCtx = (ctx: Ctx) => {\n this.#ctx = ctx\n }\n\n get ctx() {\n return this.#ctx\n }\n\n /// Register a command into the manager.\n create<T>(meta: CmdKey<T>, value: Cmd<T>) {\n const slice = meta.create(this.#container.sliceMap)\n slice.set(value)\n return slice\n }\n\n /// Get a command from the manager.\n get<T extends CmdKey<any>>(slice: string): Cmd<InferParams<T>>\n get<T>(slice: CmdKey<T>): Cmd<T>\n get(slice: string | CmdKey<any>): Cmd<any>\n get(slice: string | CmdKey<any>): Cmd<any> {\n return this.#container.get(slice).get()\n }\n\n /// Remove a command from the manager.\n remove<T extends CmdKey<any>>(slice: string): void\n remove<T>(slice: CmdKey<T>): void\n remove(slice: string | CmdKey<any>): void\n remove(slice: string | CmdKey<any>): void {\n return this.#container.remove(slice)\n }\n\n /// Call a registered command.\n call<T extends CmdKey<any>>(slice: string, payload?: InferParams<T>): boolean\n call<T>(slice: CmdKey<T>, payload?: T): boolean\n call(slice: string | CmdKey<any>, payload?: any): boolean\n call(slice: string | CmdKey<any>, payload?: any): boolean {\n if (this.#ctx == null) throw callCommandBeforeEditorView()\n\n const cmd = this.get(slice)\n const command = cmd(payload)\n const view = this.#ctx.get(editorViewCtx)\n return command(view.state, view.dispatch, view)\n }\n\n /// Call an inline command.\n inline(command: Command) {\n if (this.#ctx == null) throw callCommandBeforeEditorView()\n const view = this.#ctx.get(editorViewCtx)\n return command(view.state, view.dispatch, view)\n }\n\n /// Create a command chain.\n /// All commands added by `pipe` will be run in order until one of them returns `true`.\n chain = (): CommandChain => {\n if (this.#ctx == null) throw callCommandBeforeEditorView()\n const ctx = this.#ctx\n const commands: Command[] = []\n const get = this.get.bind(this)\n\n const chains: CommandChain = {\n run: () => {\n const chained = chainCommands(...commands)\n const view = ctx.get(editorViewCtx)\n return chained(view.state, view.dispatch, view)\n },\n inline: (command: Command) => {\n commands.push(command)\n return chains\n },\n pipe: pipe.bind(this),\n }\n\n function pipe<T extends CmdKey<any>>(\n slice: string,\n payload?: InferParams<T>\n ): typeof chains\n function pipe<T>(slice: CmdKey<T>, payload?: T): typeof chains\n function pipe(slice: string | CmdKey<any>, payload?: any): typeof chains\n function pipe(slice: string | CmdKey<any>, payload?: any) {\n const cmd = get(slice)\n commands.push(cmd(payload))\n return chains\n }\n\n return chains\n }\n}\n\n/// Create a command key, which is a slice type that contains a command.\nexport function createCmdKey<T = undefined>(key = 'cmdKey'): CmdKey<T> {\n return createSlice((() => () => false) as Cmd<T>, key)\n}\n\n/// A slice which contains the command manager.\nexport const commandsCtx = createSlice(new CommandManager(), 'commands')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const commandsTimerCtx = createSlice([SchemaReady], 'commandsTimer')\n\n/// The timer which will be resolved when the commands plugin is ready.\nexport const CommandsReady = createTimer('CommandsReady')\n\n/// The commands plugin.\n/// This plugin will create a command manager.\n///\n/// This plugin will wait for the schema plugin.\nexport const commands: MilkdownPlugin = (ctx) => {\n const cmd = new CommandManager()\n cmd.setCtx(ctx)\n ctx\n .inject(commandsCtx, cmd)\n .inject(commandsTimerCtx, [SchemaReady])\n .record(CommandsReady)\n return async () => {\n await ctx.waitTimers(commandsTimerCtx)\n\n ctx.done(CommandsReady)\n\n return () => {\n ctx.remove(commandsCtx).remove(commandsTimerCtx).clearTimer(CommandsReady)\n }\n }\n}\n\nwithMeta(commands, {\n displayName: 'Commands',\n})\n", "import type { Command } from '@milkdown/prose/state'\n\nimport {\n createSlice,\n createTimer,\n type Ctx,\n type MilkdownPlugin,\n type SliceType,\n} from '@milkdown/ctx'\nimport { ctxCallOutOfScope } from '@milkdown/exception'\nimport {\n baseKeymap,\n chainCommands,\n deleteSelection,\n joinTextblockBackward,\n selectNodeBackward,\n} from '@milkdown/prose/commands'\nimport { undoInputRule } from '@milkdown/prose/inputrules'\n\nimport { SchemaReady } from './schema'\n\n/// @internal\nexport type KeymapItem = {\n key: string\n onRun: (ctx: Ctx) => Command\n priority?: number\n}\n\n/// @internal\nexport type KeymapKey = SliceType<KeymapItem>\n\nfunction overrideBaseKeymap(keymap: Record<string, Command>) {\n const handleBackspace = chainCommands(\n undoInputRule,\n deleteSelection,\n joinTextblockBackward,\n selectNodeBackward\n )\n keymap.Backspace = handleBackspace\n return keymap\n}\n\n/// The keymap manager.\n/// This class is used to manage the keymap.\nexport class KeymapManager {\n /// @internal\n #ctx: Ctx | null = null\n\n #keymap: KeymapItem[] = []\n\n /// @internal\n setCtx = (ctx: Ctx) => {\n this.#ctx = ctx\n }\n\n get ctx() {\n return this.#ctx\n }\n\n /// Add a keymap item.\n /// When not passing a priority, the priority will be 50.\n /// For the same key, the keymap with higher priority will be executed first.\n /// If the priority is the same, the keymap will be executed in the order of addition.\n add = (keymap: KeymapItem) => {\n this.#keymap.push(keymap)\n\n return () => {\n this.#keymap = this.#keymap.filter((item) => item !== keymap)\n }\n }\n\n /// Add an object of keymap items.\n addObjectKeymap = (keymaps: Record<string, Command | KeymapItem>) => {\n const remove: (() => void)[] = []\n Object.entries(keymaps).forEach(([key, command]) => {\n if (typeof command === 'function') {\n const keymapItem = {\n key,\n onRun: () => command,\n }\n\n this.#keymap.push(keymapItem)\n remove.push(() => {\n this.#keymap = this.#keymap.filter((item) => item !== keymapItem)\n })\n } else {\n this.#keymap.push(command)\n remove.push(() => {\n this.#keymap = this.#keymap.filter((item) => item !== command)\n })\n }\n })\n\n return () => {\n remove.forEach((fn) => fn())\n }\n }\n\n /// Add the prosemirror base keymap.\n addBaseKeymap = () => {\n const base = overrideBaseKeymap(baseKeymap)\n return this.addObjectKeymap(base)\n }\n\n /// @internal\n build = () => {\n const keymap: Record<string, KeymapItem[]> = {}\n this.#keymap.forEach((item) => {\n keymap[item.key] = [...(keymap[item.key] || []), item]\n })\n\n const output: Record<string, Command> = Object.fromEntries(\n Object.entries(keymap).map(([key, items]) => {\n const sortedItems = items.sort(\n (a, b) => (b.priority ?? 50) - (a.priority ?? 50)\n )\n\n const command: Command = (state, dispatch, view) => {\n const ctx = this.#ctx\n if (ctx == null) throw ctxCallOutOfScope()\n\n const commands = sortedItems.map((item) => item.onRun(ctx))\n const chained = chainCommands(...commands)\n\n return chained(state, dispatch, view)\n }\n\n return [key, command] as const\n })\n )\n\n return output\n }\n}\n\n/// A slice which stores the keymap manager.\nexport const keymapCtx = createSlice(new KeymapManager(), 'keymap')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const keymapTimerCtx = createSlice([SchemaReady], 'keymapTimer')\n\n/// The timer which will be resolved when the keymap plugin is ready.\nexport const KeymapReady = createTimer('KeymapReady')\n\n/// The keymap plugin.\n/// This plugin will create a keymap manager.\n///\n/// This plugin will wait for the schema plugin.\nexport const keymap: MilkdownPlugin = (ctx) => {\n const km = new KeymapManager()\n km.setCtx(ctx)\n ctx\n .inject(keymapCtx, km)\n .inject(keymapTimerCtx, [SchemaReady])\n .record(KeymapReady)\n\n return async () => {\n await ctx.waitTimers(keymapTimerCtx)\n\n ctx.done(KeymapReady)\n\n return () => {\n ctx.remove(keymapCtx).remove(keymapTimerCtx).clearTimer(KeymapReady)\n }\n }\n}\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { Parser } from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { ctxCallOutOfScope } from '@milkdown/exception'\nimport { ParserState } from '@milkdown/transformer'\n\nimport { withMeta } from '../__internal__'\nimport { remarkCtx } from './atoms'\nimport { SchemaReady, schemaCtx } from './schema'\n\n/// The timer which will be resolved when the parser plugin is ready.\nexport const ParserReady = createTimer('ParserReady')\n\nconst outOfScope = (() => {\n throw ctxCallOutOfScope()\n}) as Parser\n\n/// A slice which contains the parser.\nexport const parserCtx = createSlice(outOfScope, 'parser')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const parserTimerCtx = createSlice([] as TimerType[], 'parserTimer')\n\n/// The parser plugin.\n/// This plugin will create a parser.\n///\n/// This plugin will wait for the schema plugin.\nexport const parser: MilkdownPlugin = (ctx) => {\n ctx\n .inject(parserCtx, outOfScope)\n .inject(parserTimerCtx, [SchemaReady])\n .record(ParserReady)\n\n return async () => {\n await ctx.waitTimers(parserTimerCtx)\n const remark = ctx.get(remarkCtx)\n const schema = ctx.get(schemaCtx)\n\n ctx.set(parserCtx, ParserState.create(schema, remark))\n ctx.done(ParserReady)\n return () => {\n ctx.remove(parserCtx).remove(parserTimerCtx).clearTimer(ParserReady)\n }\n }\n}\n\nwithMeta(parser, {\n displayName: 'Parser',\n})\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { Serializer } from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { ctxCallOutOfScope } from '@milkdown/exception'\nimport { SerializerState } from '@milkdown/transformer'\n\nimport { withMeta } from '../__internal__'\nimport { remarkCtx } from './atoms'\nimport { SchemaReady, schemaCtx } from './schema'\n\n/// The timer which will be resolved when the serializer plugin is ready.\nexport const SerializerReady = createTimer('SerializerReady')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const serializerTimerCtx = createSlice(\n [] as TimerType[],\n 'serializerTimer'\n)\n\nconst outOfScope = (() => {\n throw ctxCallOutOfScope()\n}) as Serializer\n\n/// A slice which contains the serializer.\nexport const serializerCtx = createSlice<Serializer, 'serializer'>(\n outOfScope,\n 'serializer'\n)\n\n/// The serializer plugin.\n/// This plugin will create a serializer.\n///\n/// This plugin will wait for the schema plugin.\nexport const serializer: MilkdownPlugin = (ctx) => {\n ctx\n .inject(serializerCtx, outOfScope)\n .inject(serializerTimerCtx, [SchemaReady])\n .record(SerializerReady)\n\n return async () => {\n await ctx.waitTimers(serializerTimerCtx)\n const remark = ctx.get(remarkCtx)\n const schema = ctx.get(schemaCtx)\n\n ctx.set(serializerCtx, SerializerState.create(schema, remark))\n ctx.done(SerializerReady)\n\n return () => {\n ctx\n .remove(serializerCtx)\n .remove(serializerTimerCtx)\n .clearTimer(SerializerReady)\n }\n }\n}\n\nwithMeta(serializer, {\n displayName: 'Serializer',\n})\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { Schema } from '@milkdown/prose/model'\nimport type { JSONRecord, Parser } from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { docTypeError } from '@milkdown/exception'\nimport { customInputRules as createInputRules } from '@milkdown/prose'\nimport { keymap as createKeymap } from '@milkdown/prose/keymap'\nimport { DOMParser, Node } from '@milkdown/prose/model'\nimport { EditorState, Plugin, PluginKey } from '@milkdown/prose/state'\n\nimport { withMeta } from '../__internal__'\nimport { editorStateCtx, inputRulesCtx, prosePluginsCtx } from './atoms'\nimport { CommandsReady } from './commands'\nimport { keymapCtx, KeymapReady } from './keymap'\nimport { ParserReady, parserCtx } from './parser'\nimport { schemaCtx } from './schema'\nimport { SerializerReady } from './serializer'\n\n/// @internal\nexport type DefaultValue =\n | string\n | { type: 'html'; dom: HTMLElement }\n | { type: 'json'; value: JSONRecord }\ntype StateOptions = Parameters<typeof EditorState.create>[0]\ntype StateOptionsOverride = (prev: StateOptions) => StateOptions\n\n/// A slice which contains the default value of the editor.\n/// Can be markdown string, html string or json.\nexport const defaultValueCtx = createSlice('' as DefaultValue, 'defaultValue')\n\n/// A slice which contains the options which is used to create the editor state.\nexport const editorStateOptionsCtx = createSlice<StateOptionsOverride>(\n (x) => x,\n 'stateOptions'\n)\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[ParserReady, SerializerReady, CommandsReady]`.\nexport const editorStateTimerCtx = createSlice(\n [] as TimerType[],\n 'editorStateTimer'\n)\n\n/// The timer which will be resolved when the editor state plugin is ready.\nexport const EditorStateReady = createTimer('EditorStateReady')\n\n/// @internal\nexport function getDoc(\n defaultValue: DefaultValue,\n parser: Parser,\n schema: Schema\n) {\n if (typeof defaultValue === 'string') return parser(defaultValue)\n\n if (defaultValue.type === 'html')\n return DOMParser.fromSchema(schema).parse(defaultValue.dom)\n\n if (defaultValue.type === 'json')\n return Node.fromJSON(schema, defaultValue.value)\n\n throw docTypeError(defaultValue)\n}\n\nconst key = new PluginKey('MILKDOWN_STATE_TRACKER')\n\n/// The editor state plugin.\n/// This plugin will create a prosemirror editor state.\n///\n/// This plugin will wait for the parser plugin, serializer plugin and commands plugin.\nexport const editorState: MilkdownPlugin = (ctx) => {\n ctx\n .inject(defaultValueCtx, '')\n .inject(editorStateCtx, {} as EditorState)\n .inject(editorStateOptionsCtx, (x) => x)\n .inject(editorStateTimerCtx, [\n ParserReady,\n SerializerReady,\n CommandsReady,\n KeymapReady,\n ])\n .record(EditorStateReady)\n\n return async () => {\n await ctx.waitTimers(editorStateTimerCtx)\n\n const schema = ctx.get(schemaCtx)\n const parser = ctx.get(parserCtx)\n const rules = ctx.get(inputRulesCtx)\n const optionsOverride = ctx.get(editorStateOptionsCtx)\n const prosePlugins = ctx.get(prosePluginsCtx)\n const defaultValue = ctx.get(defaultValueCtx)\n const doc = getDoc(defaultValue, parser, schema)\n const km = ctx.get(keymapCtx)\n const disposeBaseKeymap = km.addBaseKeymap()\n\n const plugins = [\n ...prosePlugins,\n new Plugin({\n key,\n state: {\n init: () => {\n // do nothing\n },\n apply: (_tr, _value, _oldState, newState) => {\n ctx.set(editorStateCtx, newState)\n },\n },\n }),\n createInputRules({ rules }),\n createKeymap(km.build()),\n ]\n\n ctx.set(prosePluginsCtx, plugins)\n\n const options = optionsOverride({\n schema,\n doc,\n plugins,\n })\n\n const state = EditorState.create(options)\n ctx.set(editorStateCtx, state)\n ctx.done(EditorStateReady)\n\n return () => {\n disposeBaseKeymap()\n ctx\n .remove(defaultValueCtx)\n .remove(editorStateCtx)\n .remove(editorStateOptionsCtx)\n .remove(editorStateTimerCtx)\n .clearTimer(EditorStateReady)\n }\n }\n}\n\nwithMeta(editorState, {\n displayName: 'EditorState',\n})\n", "import type { Slice } from '@milkdown/prose/model'\nimport type { EditorView } from '@milkdown/prose/view'\n\nimport { createSlice, createTimer, type MilkdownPlugin } from '@milkdown/ctx'\n\nimport { withMeta } from '../__internal__'\nimport { SchemaReady } from './schema'\n\n/// A paste rule function which takes a slice and returns a new slice.\nexport type PasteRule = {\n /// The function to run the paste rule.\n run: (slice: Slice, view: EditorView, isPlainText: boolean) => Slice\n /// The priority of the paste rule. Higher priority rules will be run first. Default is 50.\n priority?: number\n}\n\n/// A slice which contains the paste rules.\nexport const pasteRulesCtx = createSlice([] as PasteRule[], 'pasteRule')\n\n/// A slice which stores timers that need to be waited for before starting to run the paste rule plugin.\n/// By default, it's `[SchemaReady]`.\nexport const pasteRulesTimerCtx = createSlice([SchemaReady], 'pasteRuleTimer')\n\n/// The timer which will be resolved when the paste rule plugin is ready.\nexport const PasteRulesReady = createTimer('PasteRuleReady')\n\n/// The paste rule plugin.\n/// This plugin will collect the paste rules to the editor view.\n///\n/// This plugin will wait for the schema plugin.\nexport const pasteRule: MilkdownPlugin = (ctx) => {\n ctx\n .inject(pasteRulesCtx, [])\n .inject(pasteRulesTimerCtx, [SchemaReady])\n .record(PasteRulesReady)\n\n return async () => {\n await ctx.waitTimers(pasteRulesTimerCtx)\n\n ctx.done(PasteRulesReady)\n\n return () => {\n ctx\n .remove(pasteRulesCtx)\n .remove(pasteRulesTimerCtx)\n .clearTimer(PasteRulesReady)\n }\n }\n}\n\nwithMeta(pasteRule, {\n displayName: 'PasteRule',\n})\n", "import type { Ctx, MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { DirectEditorProps } from '@milkdown/prose/view'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { EditorView } from '@milkdown/prose/view'\n\nimport { withMeta } from '../__internal__'\nimport {\n editorStateCtx,\n editorViewCtx,\n markViewCtx,\n nodeViewCtx,\n prosePluginsCtx,\n} from './atoms'\nimport { EditorStateReady } from './editor-state'\nimport { InitReady } from './init'\nimport { pasteRulesCtx, PasteRulesReady } from './paste-rule'\n\ntype EditorOptions = Omit<DirectEditorProps, 'state'>\n\ntype RootType = Node | undefined | null | string\n\n/// The timer which will be resolved when the editor view plugin is ready.\nexport const EditorViewReady = createTimer('EditorViewReady')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[EditorStateReady]`.\nexport const editorViewTimerCtx = createSlice(\n [] as TimerType[],\n 'editorViewTimer'\n)\n\n/// A slice which contains the editor view options which will be passed to the editor view.\nexport const editorViewOptionsCtx = createSlice(\n {} as Partial<EditorOptions>,\n 'editorViewOptions'\n)\n\n/// A slice which contains the value to get the root element.\n/// Can be a selector string, a node or null.\n/// If it's null, the editor will be created in the body.\nexport const rootCtx = createSlice(null as RootType, 'root')\n\n/// A slice which contains the actually root element.\nexport const rootDOMCtx = createSlice(null as unknown as HTMLElement, 'rootDOM')\n\n/// A slice which contains the root element attributes.\n/// You can add attributes to the root element by this slice.\nexport const rootAttrsCtx = createSlice(\n {} as Record<string, string>,\n 'rootAttrs'\n)\n\nfunction createViewContainer(root: Node, ctx: Ctx) {\n const container = document.createElement('div')\n container.className = 'milkdown'\n root.appendChild(container)\n ctx.set(rootDOMCtx, container)\n\n const attrs = ctx.get(rootAttrsCtx)\n Object.entries(attrs).forEach(([key, value]) =>\n container.setAttribute(key, value)\n )\n\n return container\n}\n\nfunction prepareViewDom(dom: Element) {\n dom.classList.add('editor')\n dom.setAttribute('role', 'textbox')\n}\n\nconst key = new PluginKey('MILKDOWN_VIEW_CLEAR')\n\n/// The editor view plugin.\n/// This plugin will create an editor view.\n///\n/// This plugin will wait for the editor state plugin.\nexport const editorView: MilkdownPlugin = (ctx) => {\n ctx\n .inject(rootCtx, document.body)\n .inject(editorViewCtx, {} as EditorView)\n .inject(editorViewOptionsCtx, {})\n .inject(rootDOMCtx, null as unknown as HTMLElement)\n .inject(rootAttrsCtx, {})\n .inject(editorViewTimerCtx, [EditorStateReady, PasteRulesReady])\n .record(EditorViewReady)\n\n return async () => {\n await ctx.wait(InitReady)\n\n const root = ctx.get(rootCtx) || document.body\n const el = typeof root === 'string' ? document.querySelector(root) : root\n\n ctx.update(prosePluginsCtx, (xs) => [\n new Plugin({\n key,\n view: (editorView) => {\n const container = el ? createViewContainer(el, ctx) : undefined\n\n const handleDOM = () => {\n if (container && el) {\n const editor = editorView.dom\n el.replaceChild(container, editor)\n container.appendChild(editor)\n }\n }\n handleDOM()\n return {\n destroy: () => {\n if (container?.parentNode)\n container?.parentNode.replaceChild(editorView.dom, container)\n\n container?.remove()\n },\n }\n },\n }),\n ...xs,\n ])\n\n await ctx.waitTimers(editorViewTimerCtx)\n\n const state = ctx.get(editorStateCtx)\n const options = ctx.get(editorViewOptionsCtx)\n const nodeViews = Object.fromEntries(ctx.get(nodeViewCtx))\n const markViews = Object.fromEntries(ctx.get(markViewCtx))\n const view = new EditorView(el as Node, {\n state,\n nodeViews,\n markViews,\n transformPasted: (slice, view, isPlainText) => {\n ctx\n .get(pasteRulesCtx)\n .sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50))\n .map((rule) => rule.run)\n .forEach((runner) => {\n slice = runner(slice, view, isPlainText)\n })\n\n return slice\n },\n ...options,\n })\n prepareViewDom(view.dom)\n ctx.set(editorViewCtx, view)\n ctx.done(EditorViewReady)\n\n return () => {\n view?.destroy()\n ctx\n .remove(rootCtx)\n .remove(editorViewCtx)\n .remove(editorViewOptionsCtx)\n .remove(rootDOMCtx)\n .remove(rootAttrsCtx)\n .remove(editorViewTimerCtx)\n .clearTimer(EditorViewReady)\n }\n }\n}\n\nwithMeta(editorView, {\n displayName: 'EditorView',\n})\n", "import type { CtxRunner, MilkdownPlugin, Telemetry } from '@milkdown/ctx'\n\nimport { Clock, Container, Ctx } from '@milkdown/ctx'\n\nimport type { Config } from '../internal-plugin'\n\nimport {\n commands,\n config,\n editorState,\n editorView,\n init,\n keymap,\n parser,\n pasteRule,\n schema,\n serializer,\n} from '../internal-plugin'\n\n/// The status of the editor.\nexport enum EditorStatus {\n /// The editor is not initialized.\n Idle = 'Idle',\n /// The editor is creating.\n OnCreate = 'OnCreate',\n /// The editor has been created and ready to use.\n Created = 'Created',\n /// The editor is destroying.\n OnDestroy = 'OnDestroy',\n /// The editor has been destroyed.\n Destroyed = 'Destroyed',\n}\n\n/// Type for the callback called when editor status changed.\nexport type OnStatusChange = (status: EditorStatus) => void\n\ntype EditorPluginStore = Map<\n MilkdownPlugin,\n {\n ctx: Ctx | undefined\n handler: CtxRunner | undefined\n cleanup: ReturnType<CtxRunner>\n }\n>\n\n/// The milkdown editor class.\nexport class Editor {\n /// Create a new editor instance.\n static make() {\n return new Editor()\n }\n\n /// @internal\n #enableInspector = false\n /// @internal\n #status = EditorStatus.Idle\n /// @internal\n #configureList: Config[] = []\n /// @internal\n #onStatusChange: OnStatusChange = () => undefined\n\n /// @internal\n readonly #container = new Container()\n /// @internal\n readonly #clock = new Clock()\n\n /// @internal\n readonly #usrPluginStore: EditorPluginStore = new Map()\n\n /// @internal\n readonly #sysPluginStore: EditorPluginStore = new Map()\n\n /// @internal\n readonly #ctx = new Ctx(this.#container, this.#clock)\n\n /// @internal\n readonly #loadInternal = () => {\n const configPlugin = config(async (ctx) => {\n await Promise.all(\n this.#configureList.map((fn) => Promise.resolve(fn(ctx)))\n )\n })\n const internalPlugins = [\n schema,\n parser,\n serializer,\n commands,\n keymap,\n pasteRule,\n editorState,\n editorView,\n init(this),\n configPlugin,\n ]\n this.#prepare(internalPlugins, this.#sysPluginStore)\n }\n\n /// @internal\n readonly #prepare = (plugins: MilkdownPlugin[], store: EditorPluginStore) => {\n plugins.forEach((plugin) => {\n const ctx = this.#ctx.produce(\n this.#enableInspector ? plugin.meta : undefined\n )\n const handler = plugin(ctx)\n store.set(plugin, { ctx, handler, cleanup: undefined })\n })\n }\n\n /// @internal\n readonly #cleanup = (plugins: MilkdownPlugin[], remove = false) => {\n return Promise.all(\n [plugins].flat().map(async (plugin) => {\n const loader = this.#usrPluginStore.get(plugin)\n const cleanup = loader?.cleanup\n if (remove) this.#usrPluginStore.delete(plugin)\n else\n this.#usrPluginStore.set(plugin, {\n ctx: undefined,\n handler: undefined,\n cleanup: undefined,\n })\n\n if (typeof cleanup === 'function') return cleanup()\n\n return cleanup\n })\n )\n }\n\n /// @internal\n readonly #cleanupInternal = async () => {\n await Promise.all(\n [...this.#sysPluginStore.entries()].map(async ([_, { cleanup }]) => {\n if (typeof cleanup === 'function') return cleanup()\n\n return cleanup\n })\n )\n this.#sysPluginStore.clear()\n }\n\n /// @internal\n readonly #setStatus = (status: EditorStatus) => {\n this.#status = status\n this.#onStatusChange(status)\n }\n\n /// @internal\n readonly #loadPluginInStore = (store: EditorPluginStore) => {\n return [...store.entries()].map(async ([key, loader]) => {\n const { ctx, handler } = loader\n if (!handler) return\n\n const cleanup = await handler()\n\n store.set(key, { ctx, handler, cleanup })\n })\n }\n\n /// Get the ctx of the editor.\n get ctx() {\n return this.#ctx\n }\n\n /// Get the status of the editor.\n get status() {\n return this.#status\n }\n\n /// Enable the inspector for the editor.\n /// You can also pass `false` to disable the inspector.\n readonly enableInspector = (enable = true) => {\n this.#enableInspector = enable\n\n return this\n }\n\n /// Subscribe to the status change event for the editor.\n /// The new subscription will replace the old one.\n readonly onStatusChange = (onChange: OnStatusChange) => {\n this.#onStatusChange = onChange\n return this\n }\n\n /// Add a config for the editor.\n readonly config = (configure: Config) => {\n this.#configureList.push(configure)\n return this\n }\n\n /// Remove a config for the editor.\n readonly removeConfig = (configure: Config) => {\n this.#configureList = this.#configureList.filter((x) => x !== configure)\n return this\n }\n\n /// Use a plugin or a list of plugins for the editor.\n readonly use = (plugins: MilkdownPlugin | MilkdownPlugin[]) => {\n const _plugins = [plugins].flat()\n _plugins.flat().forEach((plugin) => {\n this.#usrPluginStore.set(plugin, {\n ctx: undefined,\n handler: undefined,\n cleanup: undefined,\n })\n })\n\n if (this.#status === EditorStatus.Created)\n this.#prepare(_plugins, this.#usrPluginStore)\n\n return this\n }\n\n /// Remove a plugin or a list of plugins from the editor.\n readonly remove = async (\n plugins: MilkdownPlugin | MilkdownPlugin[]\n ): Promise<Editor> => {\n if (this.#status === EditorStatus.OnCreate) {\n console.warn(\n '[Milkdown]: You are trying to remove plugins when the editor is creating, this is not recommended, please check your code.'\n )\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(this.remove(plugins))\n }, 50)\n })\n }\n\n await this.#cleanup([plugins].flat(), true)\n return this\n }\n\n /// Create the editor with current config and plugins.\n /// If the editor is already created, it will be recreated.\n readonly create = async (): Promise<Editor> => {\n if (this.#status === EditorStatus.OnCreate) return this\n\n if (this.#status === EditorStatus.Created) await this.destroy()\n\n this.#setStatus(EditorStatus.OnCreate)\n\n this.#loadInternal()\n this.#prepare([...this.#usrPluginStore.keys()], this.#usrPluginStore)\n\n await Promise.all(\n [\n this.#loadPluginInStore(this.#sysPluginStore),\n this.#loadPluginInStore(this.#usrPluginStore),\n ].flat()\n )\n\n this.#setStatus(EditorStatus.Created)\n return this\n }\n\n /// Destroy the editor.\n /// If you want to clear all plugins, set `clearPlugins` to `true`.\n readonly destroy = async (clearPlugins = false): Promise<Editor> => {\n if (\n this.#status === EditorStatus.Destroyed ||\n this.#status === EditorStatus.OnDestroy\n )\n return this\n\n if (this.#status === EditorStatus.OnCreate) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(this.destroy(clearPlugins))\n }, 50)\n })\n }\n\n if (clearPlugins) this.#configureList = []\n\n this.#setStatus(EditorStatus.OnDestroy)\n await this.#cleanup([...this.#usrPluginStore.keys()], clearPlugins)\n await this.#cleanupInternal()\n\n this.#setStatus(EditorStatus.Destroyed)\n return this\n }\n\n /// Call an action with the ctx of the editor.\n /// This method should be used after the editor is created.\n readonly action = <T>(action: (ctx: Ctx) => T) => action(this.#ctx)\n\n /// Get inspections of plugins in editor.\n /// Make sure you have enabled inspector by `editor.enableInspector()` before calling this method.\n readonly inspect = (): Telemetry[] => {\n if (!this.#enableInspector) {\n console.warn(\n '[Milkdown]: You are trying to collect inspection when inspector is disabled, please enable inspector by `editor.enableInspector()` first.'\n )\n return []\n }\n return [...this.#sysPluginStore.values(), ...this.#usrPluginStore.values()]\n .map(({ ctx }) => ctx?.inspector?.read())\n .filter((x): x is Telemetry => Boolean(x))\n }\n}\n", "/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('../index.js').InlineMath} InlineMath\n * @typedef {import('../index.js').Math} Math\n *\n * @typedef ToOptions\n * Configuration.\n * @property {boolean | null | undefined} [singleDollarTextMath=true]\n * Whether to support math (text) with a single dollar (default: `true`).\n *\n * Single dollars work in Pandoc and many other places, but often interfere\n * with \u201Cnormal\u201D dollars in text.\n * If you turn this off, you can still use two or more dollars for text math.\n */\n\nimport {ok as assert} from 'devlop'\nimport {longestStreak} from 'longest-streak'\n\n/**\n * Create an extension for `mdast-util-from-markdown`.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function mathFromMarkdown() {\n return {\n enter: {\n mathFlow: enterMathFlow,\n mathFlowFenceMeta: enterMathFlowMeta,\n mathText: enterMathText\n },\n exit: {\n mathFlow: exitMathFlow,\n mathFlowFence: exitMathFlowFence,\n mathFlowFenceMeta: exitMathFlowMeta,\n mathFlowValue: exitMathData,\n mathText: exitMathText,\n mathTextData: exitMathData\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathFlow(token) {\n /** @type {HastElement} */\n const code = {\n type: 'element',\n tagName: 'code',\n properties: {className: ['language-math', 'math-display']},\n children: []\n }\n this.enter(\n {\n type: 'math',\n meta: null,\n value: '',\n data: {hName: 'pre', hChildren: [code]}\n },\n token\n )\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathFlowMeta() {\n this.buffer()\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlowMeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'math')\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlowFence() {\n // Exit if this is the closing fence.\n if (this.data.mathFlowInside) return\n this.buffer()\n this.data.mathFlowInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlow(token) {\n const data = this.resume().replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'math')\n this.exit(token)\n node.value = data\n // @ts-expect-error: we defined it in `enterMathFlow`.\n const code = /** @type {HastElement} */ (node.data.hChildren[0])\n assert(code.type === 'element')\n assert(code.tagName === 'code')\n code.children.push({type: 'text', value: data})\n this.data.mathFlowInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathText(token) {\n this.enter(\n {\n type: 'inlineMath',\n value: '',\n data: {\n hName: 'code',\n hProperties: {className: ['language-math', 'math-inline']},\n hChildren: []\n }\n },\n token\n )\n this.buffer()\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathText(token) {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineMath')\n this.exit(token)\n node.value = data\n const children = /** @type {Array<HastElementContent>} */ (\n // @ts-expect-error: we defined it in `enterMathFlow`.\n node.data.hChildren\n )\n children.push({type: 'text', value: data})\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathData(token) {\n this.config.enter.data.call(this, token)\n this.config.exit.data.call(this, token)\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown`.\n *\n * @param {ToOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function mathToMarkdown(options) {\n let single = (options || {}).singleDollarTextMath\n\n if (single === null || single === undefined) {\n single = true\n }\n\n inlineMath.peek = inlineMathPeek\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'mathFlowMeta'},\n {character: '\\n', inConstruct: 'mathFlowMeta'},\n {\n character: '$',\n after: single ? undefined : '\\\\$',\n inConstruct: 'phrasing'\n },\n {character: '$', inConstruct: 'mathFlowMeta'},\n {atBreak: true, character: '$', after: '\\\\$'}\n ],\n handlers: {math, inlineMath}\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Math} node\n */\n // Note: fixing this code? Please also fix the similar code for code:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/main/lib/handle/code.js>\n function math(node, _, state, info) {\n const raw = node.value || ''\n const tracker = state.createTracker(info)\n const sequence = '$'.repeat(Math.max(longestStreak(raw, '$') + 1, 2))\n const exit = state.enter('mathFlow')\n let value = tracker.move(sequence)\n\n if (node.meta) {\n const subexit = state.enter('mathFlowMeta')\n value += tracker.move(\n state.safe(node.meta, {\n after: '\\n',\n before: value,\n encode: ['$'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineMath} node\n */\n // Note: fixing this code? Please also fix the similar code for inline code:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/main/lib/handle/inline-code.js>\n function inlineMath(node, _, state) {\n let value = node.value || ''\n let size = 1\n\n if (!single) size++\n\n // If there is a single dollar sign on its own in the math, use a fence of\n // two.\n // If there are two in a row, use one.\n while (\n new RegExp('(^|[^$])' + '\\\\$'.repeat(size) + '([^$]|$)').test(value)\n ) {\n size++\n }\n\n const sequence = '$'.repeat(size)\n\n // If this is not just spaces or eols (tabs don\u2019t count), and either the\n // first and last character are a space or eol, or the first or last\n // character are dollar signs, then pad with spaces.\n if (\n // Contains non-space.\n /[^ \\r\\n]/.test(value) &&\n // Starts with space and ends with space.\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) ||\n // Starts or ends with dollar.\n /^\\$|\\$$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n let index = -1\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can\u2019t escape characters in `inlineMath`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.codePointAt(position) === 10 /* `\\n` */ &&\n value.codePointAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n }\n\n /**\n * @returns {string}\n */\n function inlineMathPeek() {\n return '$'\n }\n}\n", "/**\n * @import {Construct, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const mathFlow = {\n tokenize: tokenizeMathFenced,\n concrete: true,\n name: 'mathFlow'\n};\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeMathFenced(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n const initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let sizeOpen = 0;\n return start;\n\n /**\n * Start of math.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('mathFlow');\n effects.enter('mathFlowFence');\n effects.enter('mathFlowFenceSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 36) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n if (sizeOpen < 2) {\n return nok(code);\n }\n effects.exit('mathFlowFenceSequence');\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n\n /**\n * In opening fence, before meta.\n *\n * ```markdown\n * > | $$asciimath\n * ^\n * | x < y\n * | $$\n * ```\n *\n * @type {State}\n */\n\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return metaAfter(code);\n }\n effects.enter('mathFlowFenceMeta');\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | $$asciimath\n * ^\n * | x < y\n * | $$\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit('mathFlowFenceMeta');\n return metaAfter(code);\n }\n if (code === 36) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * After meta.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function metaAfter(code) {\n // Guaranteed to be eol/eof.\n effects.exit('mathFlowFence');\n if (self.interrupt) {\n return ok(code);\n }\n return effects.attempt(nonLazyContinuation, beforeNonLazyContinuation, after)(code);\n }\n\n /**\n * After eol/eof in math, at a non-lazy closing fence or content.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeNonLazyContinuation(code) {\n return effects.attempt({\n tokenize: tokenizeClosingFence,\n partial: true\n }, after, contentStart)(code);\n }\n\n /**\n * Before math content, definitely not before a closing fence.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return (initialSize ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialSize + 1) : beforeContentChunk)(code);\n }\n\n /**\n * Before math content, after optional prefix.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(nonLazyContinuation, beforeNonLazyContinuation, after)(code);\n }\n effects.enter('mathFlowValue');\n return contentChunk(code);\n }\n\n /**\n * In math content.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('mathFlowValue');\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After math (ha!).\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('mathFlow');\n return ok(code);\n }\n\n /** @type {Tokenizer} */\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0;\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n */\n return factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n effects.enter('mathFlowFence');\n effects.enter('mathFlowFenceSequence');\n return sequenceClose(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === 36) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size < sizeOpen) {\n return nok(code);\n }\n effects.exit('mathFlowFenceSequence');\n return factorySpace(effects, afterSequenceClose, \"whitespace\")(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function afterSequenceClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('mathFlowFence');\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (code === null) {\n return ok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /** @type {State} */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}", "/**\n * @import {Options} from 'micromark-extension-math'\n * @import {Construct, Previous, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n// To do: next major: clean spaces in HTML compiler.\n// This has to be coordinated together with `mdast-util-math`.\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * @param {Options | null | undefined} [options={}]\n * Configuration (default: `{}`).\n * @returns {Construct}\n * Construct.\n */\nexport function mathText(options) {\n const options_ = options || {};\n let single = options_.singleDollarTextMath;\n if (single === null || single === undefined) {\n single = true;\n }\n return {\n tokenize: tokenizeMathText,\n resolve: resolveMathText,\n previous,\n name: 'mathText'\n };\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeMathText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of math (text).\n *\n * ```markdown\n * > | $a$\n * ^\n * > | \\$a$\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('mathText');\n effects.enter('mathTextSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | $a$\n * ^\n * ```\n *\n * @type {State}\n */\n\n function sequenceOpen(code) {\n if (code === 36) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n\n // Not enough markers in the sequence.\n if (sizeOpen < 2 && !single) {\n return nok(code);\n }\n effects.exit('mathTextSequence');\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | $a$\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 36) {\n token = effects.enter('mathTextSequence');\n size = 0;\n return sequenceClose(code);\n }\n\n // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter('mathTextData');\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | $a$\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 36 || markdownLineEnding(code)) {\n effects.exit('mathTextData');\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n\n function sequenceClose(code) {\n // More.\n if (code === 36) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('mathTextSequence');\n effects.exit('mathText');\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = 'mathTextData';\n return data(code);\n }\n }\n}\n\n/** @type {Resolver} */\nfunction resolveMathText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'mathTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = 'mathTextPadding';\n events[headEnterIndex][1].type = 'mathTextPadding';\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = 'mathTextData';\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 36 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}", "/**\n * @import {Options} from 'micromark-extension-math'\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { mathFlow } from './math-flow.js';\nimport { mathText } from './math-text.js';\n\n/**\n * Create an extension for `micromark` to enable math syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration (default: `{}`).\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable math syntax.\n */\nexport function math(options) {\n return {\n flow: {\n [36]: mathFlow\n },\n text: {\n [36]: mathText(options)\n }\n };\n}", "/**\n * This is the ParseError class, which is the main error thrown by KaTeX\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n *\n * If possible, a caller should provide a Token or ParseNode with information\n * about where in the source string the problem occurred.\n */\nclass ParseError extends Error {\n // Error start position based on passed-in Token or ParseNode.\n\n // Length of affected text based on passed-in Token or ParseNode.\n\n // The underlying error message without any context added.\n constructor(message,\n // The error message\n token) {\n var error = \"KaTeX parse error: \" + message;\n var start;\n var end;\n var loc = token && token.loc;\n if (loc && loc.start <= loc.end) {\n // If we have the input and a position, make the error a bit fancier\n // Get the input\n var input = loc.lexer.input;\n // Prepend some information\n start = loc.start;\n end = loc.end;\n if (start === input.length) {\n error += \" at end of input: \";\n } else {\n error += \" at position \" + (start + 1) + \": \";\n }\n // Underline token in question using combining underscores\n var underlined = input.slice(start, end).replace(/[^]/g, \"$&\\u0332\");\n // Extract some context from the input and add it to the error\n var left;\n if (start > 15) {\n left = \"\u2026\" + input.slice(start - 15, start);\n } else {\n left = input.slice(0, start);\n }\n var right;\n if (end + 15 < input.length) {\n right = input.slice(end, end + 15) + \"\u2026\";\n } else {\n right = input.slice(end);\n }\n error += left + underlined + right;\n }\n super(error);\n this.name = \"ParseError\";\n Object.setPrototypeOf(this, ParseError.prototype);\n this.position = start;\n if (start != null && end != null) {\n this.length = end - start;\n }\n this.rawMessage = message;\n }\n}\n\n/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\nvar uppercase = /([A-Z])/g;\nvar hyphenate = str => str.replace(uppercase, \"-$1\").toLowerCase();\nvar ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\"\n};\nvar ESCAPE_REGEX = /[&><\"']/g;\n/**\n * Escapes text to prevent scripting attacks.\n */\nvar escape = text => String(text).replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nvar getBaseElem = group => {\n if (group.type === \"ordgroup\") {\n if (group.body.length === 1) {\n return getBaseElem(group.body[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.body.length === 1) {\n return getBaseElem(group.body[0]);\n } else {\n return group;\n }\n } else if (group.type === \"font\") {\n return getBaseElem(group.body);\n } else {\n return group;\n }\n};\nvar characterNodesTypes = new Set([\"mathord\", \"textord\", \"atom\"]);\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nvar isCharacterBox = group => characterNodesTypes.has(getBaseElem(group).type);\n/**\n * Return the protocol of a URL, or \"_relative\" if the URL does not specify a\n * protocol (and thus is relative), or `null` if URL has invalid protocol\n * (so should be outright rejected).\n */\nvar protocolFromUrl = url => {\n // Check for possible leading protocol.\n // https://url.spec.whatwg.org/#url-parsing strips leading whitespace\n // (U+20) or C0 control (U+00-U+1F) characters.\n // eslint-disable-next-line no-control-regex\n var protocol = /^[\\x00-\\x20]*([^\\\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(url);\n if (!protocol) {\n return \"_relative\";\n }\n // Reject weird colons\n if (protocol[2] !== \":\") {\n return null;\n }\n // Reject invalid characters in scheme according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.1\n if (!/^[a-zA-Z][a-zA-Z0-9+\\-.]*$/.test(protocol[1])) {\n return null;\n }\n // Lowercase the protocol\n return protocol[1].toLowerCase();\n};\n\n/* eslint no-console:0 */\n// TODO: automatically generate documentation\n// TODO: check all properties on Settings exist\n// TODO: check the type of a property on Settings matches\nvar SETTINGS_SCHEMA = {\n displayMode: {\n type: \"boolean\",\n 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.\",\n cli: \"-d, --display-mode\"\n },\n output: {\n type: {\n enum: [\"htmlAndMathml\", \"html\", \"mathml\"]\n },\n description: \"Determines the markup language of the output.\",\n cli: \"-F, --format <type>\"\n },\n leqno: {\n type: \"boolean\",\n description: \"Render display math in leqno style (left-justified tags).\"\n },\n fleqn: {\n type: \"boolean\",\n description: \"Render display math flush left.\"\n },\n throwOnError: {\n type: \"boolean\",\n default: true,\n cli: \"-t, --no-throw-on-error\",\n cliDescription: \"Render errors (in the color given by --error-color) ins\" + \"tead of throwing a ParseError exception when encountering an error.\"\n },\n errorColor: {\n type: \"string\",\n default: \"#cc0000\",\n cli: \"-c, --error-color <color>\",\n cliDescription: \"A color string given in the format 'rgb' or 'rrggbb' \" + \"(no #). This option determines the color of errors rendered by the \" + \"-t option.\",\n cliProcessor: color => \"#\" + color\n },\n macros: {\n type: \"object\",\n cli: \"-m, --macro <def>\",\n cliDescription: \"Define custom macro of the form '\\\\foo:expansion' (use \" + \"multiple -m arguments for multiple macros).\",\n cliDefault: [],\n cliProcessor: (def, defs) => {\n defs.push(def);\n return defs;\n }\n },\n minRuleThickness: {\n type: \"number\",\n 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`.\",\n processor: t => Math.max(0, t),\n cli: \"--min-rule-thickness <size>\",\n cliProcessor: parseFloat\n },\n colorIsTextColor: {\n type: \"boolean\",\n description: \"Makes \\\\color behave like LaTeX's 2-argument \\\\textcolor, \" + \"instead of LaTeX's one-argument \\\\color mode change.\",\n cli: \"-b, --color-is-text-color\"\n },\n strict: {\n type: [{\n enum: [\"warn\", \"ignore\", \"error\"]\n }, \"boolean\", \"function\"],\n description: \"Turn on strict / LaTeX faithfulness mode, which throws an \" + \"error if the input uses features that are not supported by LaTeX.\",\n cli: \"-S, --strict\",\n cliDefault: false\n },\n trust: {\n type: [\"boolean\", \"function\"],\n description: \"Trust the input, enabling all HTML features such as \\\\url.\",\n cli: \"-T, --trust\"\n },\n maxSize: {\n type: \"number\",\n default: Infinity,\n 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\",\n processor: s => Math.max(0, s),\n cli: \"-s, --max-size <n>\",\n cliProcessor: parseInt\n },\n maxExpand: {\n type: \"number\",\n default: 1000,\n 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.\",\n processor: n => Math.max(0, n),\n cli: \"-e, --max-expand <n>\",\n cliProcessor: n => n === \"Infinity\" ? Infinity : parseInt(n)\n },\n globalGroup: {\n type: \"boolean\",\n cli: false\n }\n};\nfunction getDefaultValue(schema) {\n if (\"default\" in schema) {\n return schema.default;\n }\n var type = schema.type;\n var defaultType = Array.isArray(type) ? type[0] : type;\n if (typeof defaultType !== 'string') {\n return defaultType.enum[0];\n }\n switch (defaultType) {\n case 'boolean':\n return false;\n case 'string':\n return '';\n case 'number':\n return 0;\n case 'object':\n return {};\n }\n}\n/**\n * The main Settings object\n *\n * The current options stored are:\n * - displayMode: Whether the expression should be typeset as inline math\n * (false, the default), meaning that the math starts in\n * \\textstyle and is placed in an inline-block); or as display\n * math (true), meaning that the math starts in \\displaystyle\n * and is placed in a block with vertical margin.\n */\nclass Settings {\n constructor(options) {\n if (options === void 0) {\n options = {};\n }\n // allow null options\n options = options || {};\n for (var prop of Object.keys(SETTINGS_SCHEMA)) {\n var schema = SETTINGS_SCHEMA[prop];\n var optionValue = options[prop];\n // TODO: validate options\n this[prop] = optionValue !== undefined ? schema.processor ? schema.processor(optionValue) : optionValue : getDefaultValue(schema);\n }\n }\n /**\n * Report nonstrict (non-LaTeX-compatible) input.\n * Can safely not be called if `this.strict` is false in JavaScript.\n */\n reportNonstrict(errorCode, errorMsg, token) {\n var strict = this.strict;\n if (typeof strict === \"function\") {\n // Allow return value of strict function to be boolean or string\n // (or null/undefined, meaning no further processing).\n strict = strict(errorCode, errorMsg, token);\n }\n if (!strict || strict === \"ignore\") {\n return;\n } else if (strict === true || strict === \"error\") {\n throw new ParseError(\"LaTeX-incompatible input and strict mode is set to 'error': \" + (errorMsg + \" [\" + errorCode + \"]\"), token);\n } else if (strict === \"warn\") {\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \" + (errorMsg + \" [\" + errorCode + \"]\"));\n } else {\n // won't happen in type-safe code\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to \" + (\"unrecognized '\" + strict + \"': \" + errorMsg + \" [\" + errorCode + \"]\"));\n }\n }\n /**\n * Check whether to apply strict (LaTeX-adhering) behavior for unusual\n * input (like `\\\\`). Unlike `nonstrict`, will not throw an error;\n * instead, \"error\" translates to a return value of `true`, while \"ignore\"\n * translates to a return value of `false`. May still print a warning:\n * \"warn\" prints a warning and returns `false`.\n * This is for the second category of `errorCode`s listed in the README.\n */\n useStrictBehavior(errorCode, errorMsg, token) {\n var strict = this.strict;\n if (typeof strict === \"function\") {\n // Allow return value of strict function to be boolean or string\n // (or null/undefined, meaning no further processing).\n // But catch any exceptions thrown by function, treating them\n // like \"error\".\n try {\n strict = strict(errorCode, errorMsg, token);\n } catch (error) {\n strict = \"error\";\n }\n }\n if (!strict || strict === \"ignore\") {\n return false;\n } else if (strict === true || strict === \"error\") {\n return true;\n } else if (strict === \"warn\") {\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \" + (errorMsg + \" [\" + errorCode + \"]\"));\n return false;\n } else {\n // won't happen in type-safe code\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to \" + (\"unrecognized '\" + strict + \"': \" + errorMsg + \" [\" + errorCode + \"]\"));\n return false;\n }\n }\n /**\n * Check whether to test potentially dangerous input, and return\n * `true` (trusted) or `false` (untrusted). The sole argument `context`\n * should be an object with `command` field specifying the relevant LaTeX\n * command (as a string starting with `\\`), and any other arguments, etc.\n * If `context` has a `url` field, a `protocol` field will automatically\n * get added by this function (changing the specified object).\n */\n isTrusted(context) {\n if (\"url\" in context && context.url && !context.protocol) {\n var protocol = protocolFromUrl(context.url);\n if (protocol == null) {\n return false;\n }\n context.protocol = protocol;\n }\n var trust = typeof this.trust === \"function\" ? this.trust(context) : this.trust;\n return Boolean(trust);\n }\n}\n\n/**\n * This file contains information and classes for the various kinds of styles\n * used in TeX. It provides a generic `Style` class, which holds information\n * about a specific style. It then provides instances of all the different kinds\n * of styles possible, and provides functions to move between them and get\n * information about them.\n */\n/**\n * The main style class. Contains a unique id for the style, a size (which is\n * the same for cramped and uncramped version of a style), and a cramped flag.\n */\nclass Style {\n constructor(id, size, cramped) {\n this.id = id;\n this.size = size;\n this.cramped = cramped;\n }\n /**\n * Get the style of a superscript given a base in the current style.\n */\n sup() {\n return styles[sup[this.id]];\n }\n /**\n * Get the style of a subscript given a base in the current style.\n */\n sub() {\n return styles[sub[this.id]];\n }\n /**\n * Get the style of a fraction numerator given the fraction in the current\n * style.\n */\n fracNum() {\n return styles[fracNum[this.id]];\n }\n /**\n * Get the style of a fraction denominator given the fraction in the current\n * style.\n */\n fracDen() {\n return styles[fracDen[this.id]];\n }\n /**\n * Get the cramped version of a style (in particular, cramping a cramped style\n * doesn't change the style).\n */\n cramp() {\n return styles[cramp[this.id]];\n }\n /**\n * Get a text or display version of this style.\n */\n text() {\n return styles[text$1[this.id]];\n }\n /**\n * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)\n */\n isTight() {\n return this.size >= 2;\n }\n}\n// IDs of the different styles\nvar D = 0;\nvar Dc = 1;\nvar T = 2;\nvar Tc = 3;\nvar S = 4;\nvar Sc = 5;\nvar SS = 6;\nvar SSc = 7;\n// Instances of the different styles\nvar styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)];\n// Lookup tables for switching from one style to another\nvar sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];\nvar sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];\nvar fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];\nvar text$1 = [D, Dc, T, Tc, T, Tc, T, Tc];\n// We only export some of the styles.\nvar Style$1 = {\n DISPLAY: styles[D],\n TEXT: styles[T],\n SCRIPT: styles[S],\n SCRIPTSCRIPT: styles[SS]\n};\n\n/*\n * This file defines the Unicode scripts and script families that we\n * support. To add new scripts or families, just add a new entry to the\n * scriptData array below. Adding scripts to the scriptData array allows\n * characters from that script to appear in \\text{} environments.\n */\n/**\n * Unicode block data for the families of scripts we support in \\text{}.\n * Scripts only need to appear here if they do not have font metrics.\n */\nvar scriptData = [{\n // Latin characters beyond the Latin-1 characters we have metrics for.\n // Needed for Czech, Hungarian and Turkish text, for example.\n name: 'latin',\n blocks: [[0x0100, 0x024f],\n // Latin Extended-A and Latin Extended-B\n [0x0300, 0x036f] // Combining Diacritical marks\n ]\n}, {\n // The Cyrillic script used by Russian and related languages.\n // A Cyrillic subset used to be supported as explicitly defined\n // symbols in symbols.js\n name: 'cyrillic',\n blocks: [[0x0400, 0x04ff]]\n}, {\n // Armenian\n name: 'armenian',\n blocks: [[0x0530, 0x058F]]\n}, {\n // The Brahmic scripts of South and Southeast Asia\n // Devanagari (0900\u2013097F)\n // Bengali (0980\u201309FF)\n // Gurmukhi (0A00\u20130A7F)\n // Gujarati (0A80\u20130AFF)\n // Oriya (0B00\u20130B7F)\n // Tamil (0B80\u20130BFF)\n // Telugu (0C00\u20130C7F)\n // Kannada (0C80\u20130CFF)\n // Malayalam (0D00\u20130D7F)\n // Sinhala (0D80\u20130DFF)\n // Thai (0E00\u20130E7F)\n // Lao (0E80\u20130EFF)\n // Tibetan (0F00\u20130FFF)\n // Myanmar (1000\u2013109F)\n name: 'brahmic',\n blocks: [[0x0900, 0x109F]]\n}, {\n name: 'georgian',\n blocks: [[0x10A0, 0x10ff]]\n}, {\n // Chinese and Japanese.\n // The \"k\" in cjk is for Korean, but we've separated Korean out\n name: \"cjk\",\n blocks: [[0x3000, 0x30FF],\n // CJK symbols and punctuation, Hiragana, Katakana\n [0x4E00, 0x9FAF],\n // CJK ideograms\n [0xFF00, 0xFF60] // Fullwidth punctuation\n // TODO: add halfwidth Katakana and Romanji glyphs\n ]\n}, {\n // Korean\n name: 'hangul',\n blocks: [[0xAC00, 0xD7AF]]\n}];\n/**\n * Given a codepoint, return the name of the script or script family\n * it is from, or null if it is not part of a known block\n */\nfunction scriptFromCodepoint(codepoint) {\n for (var i = 0; i < scriptData.length; i++) {\n var script = scriptData[i];\n for (var _i = 0; _i < script.blocks.length; _i++) {\n var block = script.blocks[_i];\n if (codepoint >= block[0] && codepoint <= block[1]) {\n return script.name;\n }\n }\n }\n return null;\n}\n/**\n * A flattened version of all the supported blocks in a single array.\n * This is an optimization to make supportedCodepoint() fast.\n */\nvar allBlocks = [];\nscriptData.forEach(s => s.blocks.forEach(b => allBlocks.push(...b)));\n/**\n * Given a codepoint, return true if it falls within one of the\n * scripts or script families defined above and false otherwise.\n *\n * Micro benchmarks shows that this is faster than\n * /[\\u3000-\\u30FF\\u4E00-\\u9FAF\\uFF00-\\uFF60\\uAC00-\\uD7AF\\u0900-\\u109F]/.test()\n * in Firefox, Chrome and Node.\n */\nfunction supportedCodepoint(codepoint) {\n for (var i = 0; i < allBlocks.length; i += 2) {\n if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * This file provides support to domTree.js and delimiter.js.\n * It's a storehouse of path geometry for SVG images.\n */\n// In all paths below, the viewBox-to-em scale is 1000:1.\n// Second Brush Stroke\n// Low resolution monitors struggle to display images in fine detail.\n// So browsers apply anti-aliasing. A long straight arrow shaft therefore\n// will sometimes appear as if it has a blurred edge.\n// To mitigate this, these SVG files contain a second \"brush-stroke\" on the\n// arrow shafts. That is, a second long thin rectangular SVG path has been\n// written directly on top of each arrow shaft. This reinforcement causes\n// some of the screen pixels to display as black instead of the anti-aliased\n// gray pixel that a single path would generate. So we get arrow shafts\n// whose edges appear to be sharper.\nvar doubleBrushStroke = svgPath => svgPath + \" \" + svgPath;\nvar hLinePad = 80; // padding above a sqrt vinculum. Prevents image cropping.\n// The vinculum of a \\sqrt can be made thicker by a KaTeX rendering option.\n// Think of variable extraVinculum as two detours in the SVG path.\n// The detour begins at the lower left of the area labeled extraVinculum below.\n// The detour proceeds one extraVinculum distance up and slightly to the right,\n// displacing the radiused corner between surd and vinculum. The radius is\n// traversed as usual, then the detour resumes. It goes right, to the end of\n// the very long vinculum, then down one extraVinculum distance,\n// after which it resumes regular path geometry for the radical.\n/* vinculum\n /\n /\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2190extraVinculum\n / \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u21900.04em (40 unit) std vinculum thickness\n / /\n / /\n / /\\\n / / surd\n*/\nvar sqrtMain = function sqrtMain(extraVinculum, hLinePad) {\n // sqrtMain path geometry is from glyph U221A in the font KaTeX Main\n return \"M95,\" + (622 + extraVinculum + hLinePad) + \"\\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\\nc44.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\\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\\nc69,-144,104.5,-217.7,106.5,-221\\nl\" + extraVinculum / 2.075 + \" -\" + extraVinculum + \"\\nc5.3,-9.3,12,-14,20,-14\\nH400000v\" + (40 + extraVinculum) + \"H845.2724\\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\\nM\" + (834 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize1 = function sqrtSize1(extraVinculum, hLinePad) {\n // size1 is from glyph U221A in the font KaTeX_Size1-Regular\n return \"M263,\" + (601 + extraVinculum + hLinePad) + \"c0.7,0,18,39.7,52,119\\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\\nc340,-704.7,510.7,-1060.3,512,-1067\\nl\" + extraVinculum / 2.084 + \" -\" + extraVinculum + \"\\nc4.7,-7.3,11,-11,19,-11\\nH40000v\" + (40 + extraVinculum) + \"H1012.3\\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\\nM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize2 = function sqrtSize2(extraVinculum, hLinePad) {\n // size2 is from glyph U221A in the font KaTeX_Size2-Regular\n return \"M983 \" + (10 + extraVinculum + hLinePad) + \"\\nl\" + extraVinculum / 3.13 + \" -\" + extraVinculum + \"\\nc4,-6.7,10,-10,18,-10 H400000v\" + (40 + extraVinculum) + \"\\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\\nM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize3 = function sqrtSize3(extraVinculum, hLinePad) {\n // size3 is from glyph U221A in the font KaTeX_Size3-Regular\n return \"M424,\" + (2398 + extraVinculum + hLinePad) + \"\\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\\nc0,-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\\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\\nl\" + extraVinculum / 4.223 + \" -\" + extraVinculum + \"c4,-6.7,10,-10,18,-10 H400000\\nv\" + (40 + extraVinculum) + \"H1014.6\\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\\nc-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2z M\" + (1001 + extraVinculum) + \" \" + hLinePad + \"\\nh400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize4 = function sqrtSize4(extraVinculum, hLinePad) {\n // size4 is from glyph U221A in the font KaTeX_Size4-Regular\n return \"M473,\" + (2713 + extraVinculum + hLinePad) + \"\\nc339.3,-1799.3,509.3,-2700,510,-2702 l\" + extraVinculum / 5.298 + \" -\" + extraVinculum + \"\\nc3.3,-7.3,9.3,-11,18,-11 H400000v\" + (40 + extraVinculum) + \"H1017.7\\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\\nc0,-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\\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\\n606zM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"H1017.7z\";\n};\nvar phasePath = function phasePath(y) {\n var x = y / 2; // x coordinate at top of angle\n return \"M400000 \" + y + \" H0 L\" + x + \" 0 l65 45 L145 \" + (y - 80) + \" H400000z\";\n};\nvar sqrtTall = function sqrtTall(extraVinculum, hLinePad, viewBoxHeight) {\n // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular\n // One path edge has a variable length. It runs vertically from the vinculum\n // to a point near (14 units) the bottom of the surd. The vinculum\n // is normally 40 units thick. So the length of the line in question is:\n var vertSegment = viewBoxHeight - 54 - hLinePad - extraVinculum;\n return \"M702 \" + (extraVinculum + hLinePad) + \"H400000\" + (40 + extraVinculum) + \"\\nH742v\" + vertSegment + \"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\\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\\n219 661 l218 661zM702 \" + hLinePad + \"H400000v\" + (40 + extraVinculum) + \"H742z\";\n};\nvar sqrtPath = function sqrtPath(size, extraVinculum, viewBoxHeight) {\n extraVinculum = 1000 * extraVinculum; // Convert from document ems to viewBox.\n var path = \"\";\n switch (size) {\n case \"sqrtMain\":\n path = sqrtMain(extraVinculum, hLinePad);\n break;\n case \"sqrtSize1\":\n path = sqrtSize1(extraVinculum, hLinePad);\n break;\n case \"sqrtSize2\":\n path = sqrtSize2(extraVinculum, hLinePad);\n break;\n case \"sqrtSize3\":\n path = sqrtSize3(extraVinculum, hLinePad);\n break;\n case \"sqrtSize4\":\n path = sqrtSize4(extraVinculum, hLinePad);\n break;\n case \"sqrtTall\":\n path = sqrtTall(extraVinculum, hLinePad, viewBoxHeight);\n }\n return path;\n};\nvar innerPath = function innerPath(name, height) {\n // The inner part of stretchy tall delimiters\n switch (name) {\n case \"\\u239c\":\n return doubleBrushStroke(\"M291 0 H417 V\" + height + \" H291z\");\n case \"\\u2223\":\n return doubleBrushStroke(\"M145 0 H188 V\" + height + \" H145z\");\n case \"\\u2225\":\n return doubleBrushStroke(\"M145 0 H188 V\" + height + \" H145z\") + doubleBrushStroke(\"M367 0 H410 V\" + height + \" H367z\");\n case \"\\u239f\":\n return doubleBrushStroke(\"M457 0 H583 V\" + height + \" H457z\");\n case \"\\u23a2\":\n return doubleBrushStroke(\"M319 0 H403 V\" + height + \" H319z\");\n case \"\\u23a5\":\n return doubleBrushStroke(\"M263 0 H347 V\" + height + \" H263z\");\n case \"\\u23aa\":\n return doubleBrushStroke(\"M384 0 H504 V\" + height + \" H384z\");\n case \"\\u23d0\":\n return doubleBrushStroke(\"M312 0 H355 V\" + height + \" H312z\");\n case \"\\u2016\":\n return doubleBrushStroke(\"M257 0 H300 V\" + height + \" H257z\") + doubleBrushStroke(\"M478 0 H521 V\" + height + \" H478z\");\n default:\n return \"\";\n }\n};\nvar path = {\n // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main\n doubleleftarrow: \"M262 157\\nl10-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\\n 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\\n 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\\nc2 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\\n 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\\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\\nm8 0v40h399730v-40zm0 194v40h399730v-40z\",\n // doublerightarrow is from glyph U+21D2 in font KaTeX Main\n doublerightarrow: \"M399738 392l\\n-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\\n 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\\n-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\\n-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\\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\\nc-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\\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z\",\n // leftarrow is from glyph U+2190 in font KaTeX Main\n leftarrow: \"M400000 241H110l3-3c68.7-52.7 113.7-120\\n 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\\n-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\\nc-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\\n 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\\n 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\\n l-3-3h399890zM100 241v40h399900v-40z\",\n // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular\n leftbrace: \"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z\",\n leftbraceunder: \"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\\n 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\\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z\",\n // overgroup is from the MnSymbol package (public domain)\n leftgroup: \"M400000 80\\nH435C64 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\\n 435 0h399565z\",\n leftgroupunder: \"M400000 262\\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\\n 435 219h399565z\",\n // Harpoons are from glyph U+21BD in font KaTeX Main\n leftharpoon: \"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\\n-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\\n-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\\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z\",\n leftharpoonplus: \"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\\n 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\\n-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\\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\\nm0 0v40h400000v-40z\",\n leftharpoondown: \"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\\n 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\\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z\",\n leftharpoondownplus: \"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\\n 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\\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z\",\n // hook is from glyph U+21A9 in font KaTeX Main\n lefthook: \"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\\n-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\\n-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\\n 71.5 23h399859zM103 281v-40h399897v40z\",\n leftlinesegment: doubleBrushStroke(\"M40 281 V428 H0 V94 H40 V241 H400000 v40z\"),\n leftbracketunder: doubleBrushStroke(\"M0 0 h120 V290 H399995 v120 H0z\"),\n leftbracketover: doubleBrushStroke(\"M0 440 h120 V150 H399995 v-120 H0z\"),\n leftmapsto: doubleBrushStroke(\"M40 281 V448H0V74H40V241H400000v40z\"),\n // tofrom is from glyph U+21C4 in font KaTeX AMS Regular\n leftToFrom: \"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\\nc28.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\\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z\",\n longequal: doubleBrushStroke(\"M0 50 h400000 v40H0z m0 194h40000v40H0z\"),\n midbrace: \"M200428 334\\nc-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\\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\\n 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\\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z\",\n midbraceunder: \"M199572 214\\nc100.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\\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\\n 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\\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z\",\n oiintSize1: \"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\\nm368.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\\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z\",\n oiintSize2: \"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\\nc0 110 84 276 504 276s502.4-166 502.4-276z\",\n oiiintSize1: \"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z\",\n oiiintSize2: \"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z\",\n rightarrow: \"M0 241v40h399891c-47.3 35.3-84 78-110 128\\n-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\\n 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\\n 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\\n-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\\n-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\\n 151.7 139 205zm0 0v40h399900v-40z\",\n rightbrace: \"M400000 542l\\n-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\\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z\",\n rightbraceunder: \"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z\",\n rightgroup: \"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\\n 3-1 3-3v-38c-76-158-257-219-435-219H0z\",\n rightgroupunder: \"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z\",\n rightharpoon: \"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\\n-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\\n-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\\n 69.2 92 94.5zm0 0v40h399900v-40z\",\n rightharpoonplus: \"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\\n-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\\n 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\\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z\",\n rightharpoondown: \"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\\n 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\\n-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\\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z\",\n rightharpoondownplus: \"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\\n 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\\n 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\\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\\nm0-194v40h400000v-40zm0 0v40h400000v-40z\",\n righthook: \"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\\n 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\\n-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\\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z\",\n rightlinesegment: doubleBrushStroke(\"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\"),\n rightbracketunder: doubleBrushStroke(\"M399995 0 h-120 V290 H0 v120 H400000z\"),\n rightbracketover: doubleBrushStroke(\"M399995 440 h-120 V150 H0 v-120 H399995z\"),\n rightToFrom: \"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\\n-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\\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z\",\n // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular\n twoheadleftarrow: \"M0 167c68 40\\n 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\\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z\",\n twoheadrightarrow: \"M400000 167\\nc-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\\n 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\\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z\",\n // tilde1 is a modified version of a glyph from the MnSymbol package\n tilde1: \"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\\n-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\\n 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\\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\\n-68.267.847-113-73.952-191-73.952z\",\n // ditto tilde2, tilde3, & tilde4\n tilde2: \"M344 55.266c-142 0-300.638 81.316-311.5 86.418\\n-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\\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\\nc1 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\\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z\",\n tilde3: \"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\\n -338 0-409-156.573-744-156.573z\",\n tilde4: \"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\\n -175.236-744-175.236z\",\n // vec is from glyph U+20D7 in font KaTeX Main\n vec: \"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\\n-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\\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\\nc-16-25.333-24-45-24-59z\",\n // widehat1 is a modified version of a glyph from the MnSymbol package\n widehat1: \"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\\nc-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\",\n // ditto widehat2, widehat3, & widehat4\n widehat2: \"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n widehat3: \"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n widehat4: \"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n // widecheck paths are all inverted versions of widehat\n widecheck1: \"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\\n-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\",\n widecheck2: \"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n widecheck3: \"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n widecheck4: \"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n // The next ten paths support reaction arrows from the mhchem package.\n // Arrows for \\ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX\n // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main\n baraboveleftarrow: \"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\\nc-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\\ns-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\\n121.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\\ns2.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\\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z\",\n // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main\n rightarrowabovebar: \"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\\n-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\\n13.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\\n-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\\n-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\\n-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\\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z\",\n // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.\n // Ref from mhchem.sty: \\rlap{\\raisebox{-.22ex}{$\\kern0.5em\n baraboveshortleftharpoon: \"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\\nc2,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\\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z\",\n rightharpoonaboveshortbar: \"M0,241 l0,40c399126,0,399993,0,399993,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-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\\nc-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\\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z\",\n shortbaraboveleftharpoon: \"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.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,\\n1c0,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,\\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z\",\n shortrightharpoonabovebar: \"M53,241l0,40c398570,0,399437,0,399437,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-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\\nc-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\\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z\"\n};\nvar tallDelim = function tallDelim(label, midHeight) {\n switch (label) {\n case \"lbrack\":\n return \"M403 1759 V84 H666 V0 H319 V1759 v\" + midHeight + \" v1759 h347 v-84\\nH403z M403 1759 V0 H319 V1759 v\" + midHeight + \" v1759 h84z\";\n case \"rbrack\":\n return \"M347 1759 V0 H0 V84 H263 V1759 v\" + midHeight + \" v1759 H0 v84 H347z\\nM347 1759 V0 H263 V1759 v\" + midHeight + \" v1759 h84z\";\n case \"vert\":\n return \"M145 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v\" + midHeight + \" v585 h43z\";\n case \"doublevert\":\n return \"M145 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v\" + midHeight + \" v585 h43z\\nM367 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v\" + midHeight + \" v585 h43z\";\n case \"lfloor\":\n return \"M319 602 V0 H403 V602 v\" + midHeight + \" v1715 h263 v84 H319z\\nMM319 602 V0 H403 V602 v\" + midHeight + \" v1715 H319z\";\n case \"rfloor\":\n return \"M319 602 V0 H403 V602 v\" + midHeight + \" v1799 H0 v-84 H319z\\nMM319 602 V0 H403 V602 v\" + midHeight + \" v1715 H319z\";\n case \"lceil\":\n return \"M403 1759 V84 H666 V0 H319 V1759 v\" + midHeight + \" v602 h84z\\nM403 1759 V0 H319 V1759 v\" + midHeight + \" v602 h84z\";\n case \"rceil\":\n return \"M347 1759 V0 H0 V84 H263 V1759 v\" + midHeight + \" v602 h84z\\nM347 1759 V0 h-84 V1759 v\" + midHeight + \" v602 h84z\";\n case \"lparen\":\n return \"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\\nc-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,\\n-36,557 l0,\" + (midHeight + 84) + \"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\\n949.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\\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\\nl0,-\" + (midHeight + 92) + \"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z\";\n case \"rparen\":\n return \"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,\" + (midHeight + 9) + \"\\nc-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\\nc-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\\nc0,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\\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\\nl0,-\" + (midHeight + 144) + \"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z\";\n default:\n // We should not ever get here.\n throw new Error(\"Unknown stretchy delimiter.\");\n }\n};\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. It only contains\n * children and doesn't have any DOM node properties.\n */\nclass DocumentFragment {\n // Never used; needed for satisfying interface.\n constructor(children) {\n this.children = children;\n this.classes = [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = {};\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n /** Convert the fragment into a node. */\n toNode() {\n var frag = document.createDocumentFragment();\n for (var i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n return frag;\n }\n /** Convert the fragment into HTML markup. */\n toMarkup() {\n var markup = \"\";\n // Simply concatenate the markup for the children together.\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n return markup;\n }\n /**\n * Converts the math node into a string, similar to innerText. Applies to\n * MathDomNode's only.\n */\n toText() {\n // To avoid this, we would subclass documentFragment separately for\n // MathML, but polyfills for subclassing is expensive per PR 1469.\n // TODO(ts): Only works for ChildType = MathDomNode.\n var toText = child => child.toText();\n return this.children.map(toText).join(\"\");\n }\n}\n\n/**\n * This file does conversion between units. In particular, it provides\n * calculateSize to convert other units into ems.\n */\n// This table gives the number of TeX pts in one of each *absolute* TeX unit.\n// Thus, multiplying a length by this number converts the length from units\n// into pts. Dividing the result by ptPerEm gives the number of ems\n// *assuming* a font size of ptPerEm (normal size, normal style).\nvar ptPerUnit = {\n // https://en.wikibooks.org/wiki/LaTeX/Lengths and\n // https://tex.stackexchange.com/a/8263\n \"pt\": 1,\n // TeX point\n \"mm\": 7227 / 2540,\n // millimeter\n \"cm\": 7227 / 254,\n // centimeter\n \"in\": 72.27,\n // inch\n \"bp\": 803 / 800,\n // big (PostScript) points\n \"pc\": 12,\n // pica\n \"dd\": 1238 / 1157,\n // didot\n \"cc\": 14856 / 1157,\n // cicero (12 didot)\n \"nd\": 685 / 642,\n // new didot\n \"nc\": 1370 / 107,\n // new cicero (12 new didot)\n \"sp\": 1 / 65536,\n // scaled point (TeX's internal smallest unit)\n // https://tex.stackexchange.com/a/41371\n \"px\": 803 / 800 // \\pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX\n};\n// Dictionary of relative units, for fast validity testing.\nvar relativeUnit = {\n \"ex\": true,\n \"em\": true,\n \"mu\": true\n};\n/**\n * Determine whether the specified unit (either a string defining the unit\n * or a \"size\" parse node containing a unit field) is valid.\n */\nvar validUnit = function validUnit(unit) {\n if (typeof unit !== \"string\") {\n unit = unit.unit;\n }\n return unit in ptPerUnit || unit in relativeUnit || unit === \"ex\";\n};\n/*\n * Convert a \"size\" parse node (with numeric \"number\" and string \"unit\" fields,\n * as parsed by functions.js argType \"size\") into a CSS em value for the\n * current style/scale. `options` gives the current options.\n */\nvar calculateSize = function calculateSize(sizeValue, options) {\n var scale;\n if (sizeValue.unit in ptPerUnit) {\n // Absolute units\n scale = ptPerUnit[sizeValue.unit] // Convert unit to pt\n / options.fontMetrics().ptPerEm // Convert pt to CSS em\n / options.sizeMultiplier; // Unscale to make absolute units\n } else if (sizeValue.unit === \"mu\") {\n // `mu` units scale with scriptstyle/scriptscriptstyle.\n scale = options.fontMetrics().cssEmPerMu;\n } else {\n // Other relative units always refer to the *textstyle* font\n // in the current size.\n var unitOptions;\n if (options.style.isTight()) {\n // isTight() means current style is script/scriptscript.\n unitOptions = options.havingStyle(options.style.text());\n } else {\n unitOptions = options;\n }\n // TODO: In TeX these units are relative to the quad of the current\n // *text* font, e.g. cmr10. KaTeX instead uses values from the\n // comparably-sized *Computer Modern symbol* font. At 10pt, these\n // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641;\n // cmr5=1.361133, cmsy5=1.472241. Consider $\\scriptsize a\\kern1emb$.\n // TeX \\showlists shows a kern of 1.13889 * fontsize;\n // KaTeX shows a kern of 1.171 * fontsize.\n if (sizeValue.unit === \"ex\") {\n scale = unitOptions.fontMetrics().xHeight;\n } else if (sizeValue.unit === \"em\") {\n scale = unitOptions.fontMetrics().quad;\n } else {\n throw new ParseError(\"Invalid unit: '\" + sizeValue.unit + \"'\");\n }\n if (unitOptions !== options) {\n scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n return Math.min(sizeValue.number * scale, options.maxSize);\n};\n/**\n * Round `n` to 4 decimal places, or to the nearest 1/10,000th em. See\n * https://github.com/KaTeX/KaTeX/pull/2460.\n */\nvar makeEm = function makeEm(n) {\n return +n.toFixed(4) + \"em\";\n};\n\n/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n *\n * TODO: refactor `span` and `anchor` into common superclass when\n * target environments support class inheritance\n */\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove empty classes.\n */\nvar createClass = function createClass(classes) {\n return classes.filter(cls => cls).join(\" \");\n};\nvar initNode = function initNode(classes, options, style) {\n this.classes = classes || [];\n this.attributes = {};\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = style || {};\n if (options) {\n if (options.style.isTight()) {\n this.classes.push(\"mtight\");\n }\n var color = options.getColor();\n if (color) {\n this.style.color = color;\n }\n }\n};\n/**\n * Convert into an HTML node\n */\nvar toNode = function toNode(tagName) {\n var node = document.createElement(tagName);\n // Apply the class\n node.className = createClass(this.classes);\n // Apply inline styles\n for (var key of Object.keys(this.style)) {\n node.style[key] = this.style[key];\n }\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n // Append the children, also as HTML nodes\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n return node;\n};\n/**\n * https://w3c.github.io/html-reference/syntax.html#syntax-attributes\n *\n * > Attribute Names must consist of one or more characters\n * other than the space characters, U+0000 NULL,\n * '\"', \"'\", \">\", \"/\", \"=\", the control characters,\n * and any characters that are not defined by Unicode.\n */\nvar invalidAttributeNameRegex = /[\\s\"'>/=\\x00-\\x1f]/;\n/**\n * Convert into an HTML markup string\n */\nvar toMarkup = function toMarkup(tagName) {\n var markup = \"<\" + tagName;\n // Add the class\n if (this.classes.length) {\n markup += \" class=\\\"\" + escape(createClass(this.classes)) + \"\\\"\";\n }\n var styles = \"\";\n // Add the styles, after hyphenation\n for (var key of Object.keys(this.style)) {\n styles += hyphenate(key) + \":\" + this.style[key] + \";\";\n }\n if (styles) {\n markup += \" style=\\\"\" + escape(styles) + \"\\\"\";\n }\n // Add the attributes\n for (var attr of Object.keys(this.attributes)) {\n if (invalidAttributeNameRegex.test(attr)) {\n throw new ParseError(\"Invalid attribute name '\" + attr + \"'\");\n }\n markup += \" \" + attr + \"=\\\"\" + escape(this.attributes[attr]) + \"\\\"\";\n }\n markup += \">\";\n // Add the markup of the children, also as markup\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n markup += \"</\" + tagName + \">\";\n return markup;\n};\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n *\n * Represents two types with different uses: SvgSpan to wrap an SVG and DomSpan\n * otherwise. This typesafety is important when HTML builders access a span's\n * children.\n */\nclass Span {\n constructor(classes, children, options, style) {\n initNode.call(this, classes, options, style);\n this.children = children || [];\n }\n /**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not\n * all browsers support attributes the same, and having too many custom\n * attributes is probably bad.\n */\n setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n toNode() {\n return toNode.call(this, \"span\");\n }\n toMarkup() {\n return toMarkup.call(this, \"span\");\n }\n}\n/**\n * This node represents an anchor (<a>) element with a hyperlink. See `span`\n * for further details.\n */\nclass Anchor {\n constructor(href, classes, children, options) {\n initNode.call(this, classes, options);\n this.children = children || [];\n this.setAttribute('href', href);\n }\n setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n toNode() {\n return toNode.call(this, \"a\");\n }\n toMarkup() {\n return toMarkup.call(this, \"a\");\n }\n}\n/**\n * This node represents an image embed (<img>) element.\n */\nclass Img {\n constructor(src, alt, style) {\n this.alt = alt;\n this.src = src;\n this.classes = [\"mord\"];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = style;\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n toNode() {\n var node = document.createElement(\"img\");\n node.src = this.src;\n node.alt = this.alt;\n node.className = \"mord\";\n // Apply inline styles\n for (var key of Object.keys(this.style)) {\n node.style[key] = this.style[key];\n }\n return node;\n }\n toMarkup() {\n var markup = \"<img src=\\\"\" + escape(this.src) + \"\\\"\" + (\" alt=\\\"\" + escape(this.alt) + \"\\\"\");\n // Add the styles, after hyphenation\n var styles = \"\";\n for (var key of Object.keys(this.style)) {\n styles += hyphenate(key) + \":\" + this.style[key] + \";\";\n }\n if (styles) {\n markup += \" style=\\\"\" + escape(styles) + \"\\\"\";\n }\n markup += \"'/>\";\n return markup;\n }\n}\nvar iCombinations = {\n '\u00EE': '\\u0131\\u0302',\n '\u00EF': '\\u0131\\u0308',\n '\u00ED': '\\u0131\\u0301',\n // '\u012B': '\\u0131\\u0304', // enable when we add Extended Latin\n '\u00EC': '\\u0131\\u0300'\n};\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\nclass SymbolNode {\n constructor(text, height, depth, italic, skew, width, classes, style) {\n this.text = text;\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.width = width || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0;\n // Mark text from non-Latin scripts with specific classes so that we\n // can specify which fonts to use. This allows us to render these\n // characters with a serif font in situations where the browser would\n // either default to a sans serif or render a placeholder character.\n // We use CSS class names like cjk_fallback, hangul_fallback and\n // brahmic_fallback. See ./unicodeScripts.js for the set of possible\n // script names\n var script = scriptFromCodepoint(this.text.charCodeAt(0));\n if (script) {\n this.classes.push(script + \"_fallback\");\n }\n if (/[\u00EE\u00EF\u00ED\u00EC]/.test(this.text)) {\n // add \u012B when we add Extended Latin\n this.text = iCombinations[this.text];\n }\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n /**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\n toNode() {\n var node = document.createTextNode(this.text);\n var span = null;\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = makeEm(this.italic);\n }\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n for (var key of Object.keys(this.style)) {\n span = span || document.createElement(\"span\");\n span.style[key] = this.style[key];\n }\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n }\n /**\n * Creates markup for a symbol node.\n */\n toMarkup() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n var needsSpan = false;\n var markup = \"<span\";\n if (this.classes.length) {\n needsSpan = true;\n markup += \" class=\\\"\";\n markup += escape(createClass(this.classes));\n markup += \"\\\"\";\n }\n var styles = \"\";\n if (this.italic > 0) {\n styles += \"margin-right:\" + makeEm(this.italic) + \";\";\n }\n for (var key of Object.keys(this.style)) {\n styles += hyphenate(key) + \":\" + this.style[key] + \";\";\n }\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + escape(styles) + \"\\\"\";\n }\n var escaped = escape(this.text);\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"</span>\";\n return markup;\n } else {\n return escaped;\n }\n }\n}\n/**\n * SVG nodes are used to render stretchy wide elements.\n */\nclass SvgNode {\n constructor(children, attributes) {\n this.children = children || [];\n this.attributes = attributes || {};\n }\n toNode() {\n var svgNS = \"http://www.w3.org/2000/svg\";\n var node = document.createElementNS(svgNS, \"svg\");\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n return node;\n }\n toMarkup() {\n var markup = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\";\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n markup += \" \" + attr + \"=\\\"\" + escape(this.attributes[attr]) + \"\\\"\";\n }\n markup += \">\";\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n markup += \"</svg>\";\n return markup;\n }\n}\nclass PathNode {\n constructor(pathName, alternate) {\n this.pathName = pathName;\n this.alternate = alternate; // Used only for \\sqrt, \\phase, & tall delims\n }\n toNode() {\n var svgNS = \"http://www.w3.org/2000/svg\";\n var node = document.createElementNS(svgNS, \"path\");\n if (this.alternate) {\n node.setAttribute(\"d\", this.alternate);\n } else {\n node.setAttribute(\"d\", path[this.pathName]);\n }\n return node;\n }\n toMarkup() {\n if (this.alternate) {\n return \"<path d=\\\"\" + escape(this.alternate) + \"\\\"/>\";\n } else {\n return \"<path d=\\\"\" + escape(path[this.pathName]) + \"\\\"/>\";\n }\n }\n}\nclass LineNode {\n constructor(attributes) {\n this.attributes = attributes || {};\n }\n toNode() {\n var svgNS = \"http://www.w3.org/2000/svg\";\n var node = document.createElementNS(svgNS, \"line\");\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n return node;\n }\n toMarkup() {\n var markup = \"<line\";\n for (var attr of Object.keys(this.attributes)) {\n markup += \" \" + attr + \"=\\\"\" + escape(this.attributes[attr]) + \"\\\"\";\n }\n markup += \"/>\";\n return markup;\n }\n}\nfunction assertSymbolDomNode(group) {\n if (group instanceof SymbolNode) {\n return group;\n } else {\n throw new Error(\"Expected symbolNode but got \" + String(group) + \".\");\n }\n}\nfunction assertSpan(group) {\n if (group instanceof Span) {\n return group;\n } else {\n throw new Error(\"Expected span<HtmlDomNode> but got \" + String(group) + \".\");\n }\n}\n/**\n * Whether an HtmlDomNode has HtmlDomNode children.\n * HtmlDomNode is a base type representing a union of\n * SymbolNode, SvgSpan, DomSpan, Anchor, and documentFragment.\n * In the last three cases, the children are HtmlDomNode[].\n */\nvar hasHtmlDomChildren = node => node instanceof Span || node instanceof Anchor || node instanceof DocumentFragment;\n\n// This file is GENERATED by buildMetrics.sh. DO NOT MODIFY.\nvar fontMetricsData = {\n \"AMS-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.68889, 0, 0, 0.72222],\n \"66\": [0, 0.68889, 0, 0, 0.66667],\n \"67\": [0, 0.68889, 0, 0, 0.72222],\n \"68\": [0, 0.68889, 0, 0, 0.72222],\n \"69\": [0, 0.68889, 0, 0, 0.66667],\n \"70\": [0, 0.68889, 0, 0, 0.61111],\n \"71\": [0, 0.68889, 0, 0, 0.77778],\n \"72\": [0, 0.68889, 0, 0, 0.77778],\n \"73\": [0, 0.68889, 0, 0, 0.38889],\n \"74\": [0.16667, 0.68889, 0, 0, 0.5],\n \"75\": [0, 0.68889, 0, 0, 0.77778],\n \"76\": [0, 0.68889, 0, 0, 0.66667],\n \"77\": [0, 0.68889, 0, 0, 0.94445],\n \"78\": [0, 0.68889, 0, 0, 0.72222],\n \"79\": [0.16667, 0.68889, 0, 0, 0.77778],\n \"80\": [0, 0.68889, 0, 0, 0.61111],\n \"81\": [0.16667, 0.68889, 0, 0, 0.77778],\n \"82\": [0, 0.68889, 0, 0, 0.72222],\n \"83\": [0, 0.68889, 0, 0, 0.55556],\n \"84\": [0, 0.68889, 0, 0, 0.66667],\n \"85\": [0, 0.68889, 0, 0, 0.72222],\n \"86\": [0, 0.68889, 0, 0, 0.72222],\n \"87\": [0, 0.68889, 0, 0, 1.0],\n \"88\": [0, 0.68889, 0, 0, 0.72222],\n \"89\": [0, 0.68889, 0, 0, 0.72222],\n \"90\": [0, 0.68889, 0, 0, 0.66667],\n \"107\": [0, 0.68889, 0, 0, 0.55556],\n \"160\": [0, 0, 0, 0, 0.25],\n \"165\": [0, 0.675, 0.025, 0, 0.75],\n \"174\": [0.15559, 0.69224, 0, 0, 0.94666],\n \"240\": [0, 0.68889, 0, 0, 0.55556],\n \"295\": [0, 0.68889, 0, 0, 0.54028],\n \"710\": [0, 0.825, 0, 0, 2.33334],\n \"732\": [0, 0.9, 0, 0, 2.33334],\n \"770\": [0, 0.825, 0, 0, 2.33334],\n \"771\": [0, 0.9, 0, 0, 2.33334],\n \"989\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"1008\": [0, 0.43056, 0.04028, 0, 0.66667],\n \"8245\": [0, 0.54986, 0, 0, 0.275],\n \"8463\": [0, 0.68889, 0, 0, 0.54028],\n \"8487\": [0, 0.68889, 0, 0, 0.72222],\n \"8498\": [0, 0.68889, 0, 0, 0.55556],\n \"8502\": [0, 0.68889, 0, 0, 0.66667],\n \"8503\": [0, 0.68889, 0, 0, 0.44445],\n \"8504\": [0, 0.68889, 0, 0, 0.66667],\n \"8513\": [0, 0.68889, 0, 0, 0.63889],\n \"8592\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8594\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8602\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8603\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8606\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8608\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8610\": [0.01354, 0.52239, 0, 0, 1.11111],\n \"8611\": [0.01354, 0.52239, 0, 0, 1.11111],\n \"8619\": [0, 0.54986, 0, 0, 1.0],\n \"8620\": [0, 0.54986, 0, 0, 1.0],\n \"8621\": [-0.13313, 0.37788, 0, 0, 1.38889],\n \"8622\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8624\": [0, 0.69224, 0, 0, 0.5],\n \"8625\": [0, 0.69224, 0, 0, 0.5],\n \"8630\": [0, 0.43056, 0, 0, 1.0],\n \"8631\": [0, 0.43056, 0, 0, 1.0],\n \"8634\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8635\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8638\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8639\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8642\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8643\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8644\": [0.1808, 0.675, 0, 0, 1.0],\n \"8646\": [0.1808, 0.675, 0, 0, 1.0],\n \"8647\": [0.1808, 0.675, 0, 0, 1.0],\n \"8648\": [0.19444, 0.69224, 0, 0, 0.83334],\n \"8649\": [0.1808, 0.675, 0, 0, 1.0],\n \"8650\": [0.19444, 0.69224, 0, 0, 0.83334],\n \"8651\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8652\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8653\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8654\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8655\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8666\": [0.13667, 0.63667, 0, 0, 1.0],\n \"8667\": [0.13667, 0.63667, 0, 0, 1.0],\n \"8669\": [-0.13313, 0.37788, 0, 0, 1.0],\n \"8672\": [-0.064, 0.437, 0, 0, 1.334],\n \"8674\": [-0.064, 0.437, 0, 0, 1.334],\n \"8705\": [0, 0.825, 0, 0, 0.5],\n \"8708\": [0, 0.68889, 0, 0, 0.55556],\n \"8709\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8717\": [0, 0.43056, 0, 0, 0.42917],\n \"8722\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8724\": [0.08198, 0.69224, 0, 0, 0.77778],\n \"8726\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8733\": [0, 0.69224, 0, 0, 0.77778],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8737\": [0, 0.69224, 0, 0, 0.72222],\n \"8738\": [0.03517, 0.52239, 0, 0, 0.72222],\n \"8739\": [0.08167, 0.58167, 0, 0, 0.22222],\n \"8740\": [0.25142, 0.74111, 0, 0, 0.27778],\n \"8741\": [0.08167, 0.58167, 0, 0, 0.38889],\n \"8742\": [0.25142, 0.74111, 0, 0, 0.5],\n \"8756\": [0, 0.69224, 0, 0, 0.66667],\n \"8757\": [0, 0.69224, 0, 0, 0.66667],\n \"8764\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8765\": [-0.13313, 0.37788, 0, 0, 0.77778],\n \"8769\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8770\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8774\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8776\": [-0.01688, 0.48312, 0, 0, 0.77778],\n \"8778\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8782\": [0.06062, 0.54986, 0, 0, 0.77778],\n \"8783\": [0.06062, 0.54986, 0, 0, 0.77778],\n \"8785\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8786\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8787\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8790\": [0, 0.69224, 0, 0, 0.77778],\n \"8791\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8796\": [0.08198, 0.91667, 0, 0, 0.77778],\n \"8806\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"8807\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"8808\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"8809\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"8812\": [0.25583, 0.75583, 0, 0, 0.5],\n \"8814\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8815\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8816\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8817\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8818\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8819\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8822\": [0.1808, 0.675, 0, 0, 0.77778],\n \"8823\": [0.1808, 0.675, 0, 0, 0.77778],\n \"8828\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8829\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8830\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8831\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8832\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8833\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8840\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8841\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8842\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8843\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8847\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8848\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8858\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8859\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8861\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8862\": [0, 0.675, 0, 0, 0.77778],\n \"8863\": [0, 0.675, 0, 0, 0.77778],\n \"8864\": [0, 0.675, 0, 0, 0.77778],\n \"8865\": [0, 0.675, 0, 0, 0.77778],\n \"8872\": [0, 0.69224, 0, 0, 0.61111],\n \"8873\": [0, 0.69224, 0, 0, 0.72222],\n \"8874\": [0, 0.69224, 0, 0, 0.88889],\n \"8876\": [0, 0.68889, 0, 0, 0.61111],\n \"8877\": [0, 0.68889, 0, 0, 0.61111],\n \"8878\": [0, 0.68889, 0, 0, 0.72222],\n \"8879\": [0, 0.68889, 0, 0, 0.72222],\n \"8882\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8883\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8884\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8885\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8888\": [0, 0.54986, 0, 0, 1.11111],\n \"8890\": [0.19444, 0.43056, 0, 0, 0.55556],\n \"8891\": [0.19444, 0.69224, 0, 0, 0.61111],\n \"8892\": [0.19444, 0.69224, 0, 0, 0.61111],\n \"8901\": [0, 0.54986, 0, 0, 0.27778],\n \"8903\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8905\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8906\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8907\": [0, 0.69224, 0, 0, 0.77778],\n \"8908\": [0, 0.69224, 0, 0, 0.77778],\n \"8909\": [-0.03598, 0.46402, 0, 0, 0.77778],\n \"8910\": [0, 0.54986, 0, 0, 0.76042],\n \"8911\": [0, 0.54986, 0, 0, 0.76042],\n \"8912\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8913\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8914\": [0, 0.54986, 0, 0, 0.66667],\n \"8915\": [0, 0.54986, 0, 0, 0.66667],\n \"8916\": [0, 0.69224, 0, 0, 0.66667],\n \"8918\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8919\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8920\": [0.03517, 0.54986, 0, 0, 1.33334],\n \"8921\": [0.03517, 0.54986, 0, 0, 1.33334],\n \"8922\": [0.38569, 0.88569, 0, 0, 0.77778],\n \"8923\": [0.38569, 0.88569, 0, 0, 0.77778],\n \"8926\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8927\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8928\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8929\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8934\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8935\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8936\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8937\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8938\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8939\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8940\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8941\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8994\": [0.19444, 0.69224, 0, 0, 0.77778],\n \"8995\": [0.19444, 0.69224, 0, 0, 0.77778],\n \"9416\": [0.15559, 0.69224, 0, 0, 0.90222],\n \"9484\": [0, 0.69224, 0, 0, 0.5],\n \"9488\": [0, 0.69224, 0, 0, 0.5],\n \"9492\": [0, 0.37788, 0, 0, 0.5],\n \"9496\": [0, 0.37788, 0, 0, 0.5],\n \"9585\": [0.19444, 0.68889, 0, 0, 0.88889],\n \"9586\": [0.19444, 0.74111, 0, 0, 0.88889],\n \"9632\": [0, 0.675, 0, 0, 0.77778],\n \"9633\": [0, 0.675, 0, 0, 0.77778],\n \"9650\": [0, 0.54986, 0, 0, 0.72222],\n \"9651\": [0, 0.54986, 0, 0, 0.72222],\n \"9654\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"9660\": [0, 0.54986, 0, 0, 0.72222],\n \"9661\": [0, 0.54986, 0, 0, 0.72222],\n \"9664\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"9674\": [0.11111, 0.69224, 0, 0, 0.66667],\n \"9733\": [0.19444, 0.69224, 0, 0, 0.94445],\n \"10003\": [0, 0.69224, 0, 0, 0.83334],\n \"10016\": [0, 0.69224, 0, 0, 0.83334],\n \"10731\": [0.11111, 0.69224, 0, 0, 0.66667],\n \"10846\": [0.19444, 0.75583, 0, 0, 0.61111],\n \"10877\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10878\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10885\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10886\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10887\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10888\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10889\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10890\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10891\": [0.48256, 0.98256, 0, 0, 0.77778],\n \"10892\": [0.48256, 0.98256, 0, 0, 0.77778],\n \"10901\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10902\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10933\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"10934\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"10935\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10936\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10937\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10938\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10949\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10950\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10955\": [0.28481, 0.79383, 0, 0, 0.77778],\n \"10956\": [0.28481, 0.79383, 0, 0, 0.77778],\n \"57350\": [0.08167, 0.58167, 0, 0, 0.22222],\n \"57351\": [0.08167, 0.58167, 0, 0, 0.38889],\n \"57352\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"57353\": [0, 0.43056, 0.04028, 0, 0.66667],\n \"57356\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57357\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57358\": [0.41951, 0.91951, 0, 0, 0.77778],\n \"57359\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"57360\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"57361\": [0.41951, 0.91951, 0, 0, 0.77778],\n \"57366\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57367\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57368\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57369\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57370\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"57371\": [0.13597, 0.63597, 0, 0, 0.77778]\n },\n \"Caligraphic-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.68333, 0, 0.19445, 0.79847],\n \"66\": [0, 0.68333, 0.03041, 0.13889, 0.65681],\n \"67\": [0, 0.68333, 0.05834, 0.13889, 0.52653],\n \"68\": [0, 0.68333, 0.02778, 0.08334, 0.77139],\n \"69\": [0, 0.68333, 0.08944, 0.11111, 0.52778],\n \"70\": [0, 0.68333, 0.09931, 0.11111, 0.71875],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],\n \"72\": [0, 0.68333, 0.00965, 0.11111, 0.84452],\n \"73\": [0, 0.68333, 0.07382, 0, 0.54452],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],\n \"75\": [0, 0.68333, 0.01445, 0.05556, 0.76195],\n \"76\": [0, 0.68333, 0, 0.13889, 0.68972],\n \"77\": [0, 0.68333, 0, 0.13889, 1.2009],\n \"78\": [0, 0.68333, 0.14736, 0.08334, 0.82049],\n \"79\": [0, 0.68333, 0.02778, 0.11111, 0.79611],\n \"80\": [0, 0.68333, 0.08222, 0.08334, 0.69556],\n \"81\": [0.09722, 0.68333, 0, 0.11111, 0.81667],\n \"82\": [0, 0.68333, 0, 0.08334, 0.8475],\n \"83\": [0, 0.68333, 0.075, 0.13889, 0.60556],\n \"84\": [0, 0.68333, 0.25417, 0, 0.54464],\n \"85\": [0, 0.68333, 0.09931, 0.08334, 0.62583],\n \"86\": [0, 0.68333, 0.08222, 0, 0.61278],\n \"87\": [0, 0.68333, 0.08222, 0.08334, 0.98778],\n \"88\": [0, 0.68333, 0.14643, 0.13889, 0.7133],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],\n \"90\": [0, 0.68333, 0.07944, 0.13889, 0.72473],\n \"160\": [0, 0, 0, 0, 0.25]\n },\n \"Fraktur-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69141, 0, 0, 0.29574],\n \"34\": [0, 0.69141, 0, 0, 0.21471],\n \"38\": [0, 0.69141, 0, 0, 0.73786],\n \"39\": [0, 0.69141, 0, 0, 0.21201],\n \"40\": [0.24982, 0.74947, 0, 0, 0.38865],\n \"41\": [0.24982, 0.74947, 0, 0, 0.38865],\n \"42\": [0, 0.62119, 0, 0, 0.27764],\n \"43\": [0.08319, 0.58283, 0, 0, 0.75623],\n \"44\": [0, 0.10803, 0, 0, 0.27764],\n \"45\": [0.08319, 0.58283, 0, 0, 0.75623],\n \"46\": [0, 0.10803, 0, 0, 0.27764],\n \"47\": [0.24982, 0.74947, 0, 0, 0.50181],\n \"48\": [0, 0.47534, 0, 0, 0.50181],\n \"49\": [0, 0.47534, 0, 0, 0.50181],\n \"50\": [0, 0.47534, 0, 0, 0.50181],\n \"51\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"52\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"53\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"54\": [0, 0.69141, 0, 0, 0.50181],\n \"55\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"56\": [0, 0.69141, 0, 0, 0.50181],\n \"57\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"58\": [0, 0.47534, 0, 0, 0.21606],\n \"59\": [0.12604, 0.47534, 0, 0, 0.21606],\n \"61\": [-0.13099, 0.36866, 0, 0, 0.75623],\n \"63\": [0, 0.69141, 0, 0, 0.36245],\n \"65\": [0, 0.69141, 0, 0, 0.7176],\n \"66\": [0, 0.69141, 0, 0, 0.88397],\n \"67\": [0, 0.69141, 0, 0, 0.61254],\n \"68\": [0, 0.69141, 0, 0, 0.83158],\n \"69\": [0, 0.69141, 0, 0, 0.66278],\n \"70\": [0.12604, 0.69141, 0, 0, 0.61119],\n \"71\": [0, 0.69141, 0, 0, 0.78539],\n \"72\": [0.06302, 0.69141, 0, 0, 0.7203],\n \"73\": [0, 0.69141, 0, 0, 0.55448],\n \"74\": [0.12604, 0.69141, 0, 0, 0.55231],\n \"75\": [0, 0.69141, 0, 0, 0.66845],\n \"76\": [0, 0.69141, 0, 0, 0.66602],\n \"77\": [0, 0.69141, 0, 0, 1.04953],\n \"78\": [0, 0.69141, 0, 0, 0.83212],\n \"79\": [0, 0.69141, 0, 0, 0.82699],\n \"80\": [0.18906, 0.69141, 0, 0, 0.82753],\n \"81\": [0.03781, 0.69141, 0, 0, 0.82699],\n \"82\": [0, 0.69141, 0, 0, 0.82807],\n \"83\": [0, 0.69141, 0, 0, 0.82861],\n \"84\": [0, 0.69141, 0, 0, 0.66899],\n \"85\": [0, 0.69141, 0, 0, 0.64576],\n \"86\": [0, 0.69141, 0, 0, 0.83131],\n \"87\": [0, 0.69141, 0, 0, 1.04602],\n \"88\": [0, 0.69141, 0, 0, 0.71922],\n \"89\": [0.18906, 0.69141, 0, 0, 0.83293],\n \"90\": [0.12604, 0.69141, 0, 0, 0.60201],\n \"91\": [0.24982, 0.74947, 0, 0, 0.27764],\n \"93\": [0.24982, 0.74947, 0, 0, 0.27764],\n \"94\": [0, 0.69141, 0, 0, 0.49965],\n \"97\": [0, 0.47534, 0, 0, 0.50046],\n \"98\": [0, 0.69141, 0, 0, 0.51315],\n \"99\": [0, 0.47534, 0, 0, 0.38946],\n \"100\": [0, 0.62119, 0, 0, 0.49857],\n \"101\": [0, 0.47534, 0, 0, 0.40053],\n \"102\": [0.18906, 0.69141, 0, 0, 0.32626],\n \"103\": [0.18906, 0.47534, 0, 0, 0.5037],\n \"104\": [0.18906, 0.69141, 0, 0, 0.52126],\n \"105\": [0, 0.69141, 0, 0, 0.27899],\n \"106\": [0, 0.69141, 0, 0, 0.28088],\n \"107\": [0, 0.69141, 0, 0, 0.38946],\n \"108\": [0, 0.69141, 0, 0, 0.27953],\n \"109\": [0, 0.47534, 0, 0, 0.76676],\n \"110\": [0, 0.47534, 0, 0, 0.52666],\n \"111\": [0, 0.47534, 0, 0, 0.48885],\n \"112\": [0.18906, 0.52396, 0, 0, 0.50046],\n \"113\": [0.18906, 0.47534, 0, 0, 0.48912],\n \"114\": [0, 0.47534, 0, 0, 0.38919],\n \"115\": [0, 0.47534, 0, 0, 0.44266],\n \"116\": [0, 0.62119, 0, 0, 0.33301],\n \"117\": [0, 0.47534, 0, 0, 0.5172],\n \"118\": [0, 0.52396, 0, 0, 0.5118],\n \"119\": [0, 0.52396, 0, 0, 0.77351],\n \"120\": [0.18906, 0.47534, 0, 0, 0.38865],\n \"121\": [0.18906, 0.47534, 0, 0, 0.49884],\n \"122\": [0.18906, 0.47534, 0, 0, 0.39054],\n \"160\": [0, 0, 0, 0, 0.25],\n \"8216\": [0, 0.69141, 0, 0, 0.21471],\n \"8217\": [0, 0.69141, 0, 0, 0.21471],\n \"58112\": [0, 0.62119, 0, 0, 0.49749],\n \"58113\": [0, 0.62119, 0, 0, 0.4983],\n \"58114\": [0.18906, 0.69141, 0, 0, 0.33328],\n \"58115\": [0.18906, 0.69141, 0, 0, 0.32923],\n \"58116\": [0.18906, 0.47534, 0, 0, 0.50343],\n \"58117\": [0, 0.69141, 0, 0, 0.33301],\n \"58118\": [0, 0.62119, 0, 0, 0.33409],\n \"58119\": [0, 0.47534, 0, 0, 0.50073]\n },\n \"Main-Bold\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.35],\n \"34\": [0, 0.69444, 0, 0, 0.60278],\n \"35\": [0.19444, 0.69444, 0, 0, 0.95833],\n \"36\": [0.05556, 0.75, 0, 0, 0.575],\n \"37\": [0.05556, 0.75, 0, 0, 0.95833],\n \"38\": [0, 0.69444, 0, 0, 0.89444],\n \"39\": [0, 0.69444, 0, 0, 0.31944],\n \"40\": [0.25, 0.75, 0, 0, 0.44722],\n \"41\": [0.25, 0.75, 0, 0, 0.44722],\n \"42\": [0, 0.75, 0, 0, 0.575],\n \"43\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"44\": [0.19444, 0.15556, 0, 0, 0.31944],\n \"45\": [0, 0.44444, 0, 0, 0.38333],\n \"46\": [0, 0.15556, 0, 0, 0.31944],\n \"47\": [0.25, 0.75, 0, 0, 0.575],\n \"48\": [0, 0.64444, 0, 0, 0.575],\n \"49\": [0, 0.64444, 0, 0, 0.575],\n \"50\": [0, 0.64444, 0, 0, 0.575],\n \"51\": [0, 0.64444, 0, 0, 0.575],\n \"52\": [0, 0.64444, 0, 0, 0.575],\n \"53\": [0, 0.64444, 0, 0, 0.575],\n \"54\": [0, 0.64444, 0, 0, 0.575],\n \"55\": [0, 0.64444, 0, 0, 0.575],\n \"56\": [0, 0.64444, 0, 0, 0.575],\n \"57\": [0, 0.64444, 0, 0, 0.575],\n \"58\": [0, 0.44444, 0, 0, 0.31944],\n \"59\": [0.19444, 0.44444, 0, 0, 0.31944],\n \"60\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"61\": [-0.10889, 0.39111, 0, 0, 0.89444],\n \"62\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"63\": [0, 0.69444, 0, 0, 0.54305],\n \"64\": [0, 0.69444, 0, 0, 0.89444],\n \"65\": [0, 0.68611, 0, 0, 0.86944],\n \"66\": [0, 0.68611, 0, 0, 0.81805],\n \"67\": [0, 0.68611, 0, 0, 0.83055],\n \"68\": [0, 0.68611, 0, 0, 0.88194],\n \"69\": [0, 0.68611, 0, 0, 0.75555],\n \"70\": [0, 0.68611, 0, 0, 0.72361],\n \"71\": [0, 0.68611, 0, 0, 0.90416],\n \"72\": [0, 0.68611, 0, 0, 0.9],\n \"73\": [0, 0.68611, 0, 0, 0.43611],\n \"74\": [0, 0.68611, 0, 0, 0.59444],\n \"75\": [0, 0.68611, 0, 0, 0.90138],\n \"76\": [0, 0.68611, 0, 0, 0.69166],\n \"77\": [0, 0.68611, 0, 0, 1.09166],\n \"78\": [0, 0.68611, 0, 0, 0.9],\n \"79\": [0, 0.68611, 0, 0, 0.86388],\n \"80\": [0, 0.68611, 0, 0, 0.78611],\n \"81\": [0.19444, 0.68611, 0, 0, 0.86388],\n \"82\": [0, 0.68611, 0, 0, 0.8625],\n \"83\": [0, 0.68611, 0, 0, 0.63889],\n \"84\": [0, 0.68611, 0, 0, 0.8],\n \"85\": [0, 0.68611, 0, 0, 0.88472],\n \"86\": [0, 0.68611, 0.01597, 0, 0.86944],\n \"87\": [0, 0.68611, 0.01597, 0, 1.18888],\n \"88\": [0, 0.68611, 0, 0, 0.86944],\n \"89\": [0, 0.68611, 0.02875, 0, 0.86944],\n \"90\": [0, 0.68611, 0, 0, 0.70277],\n \"91\": [0.25, 0.75, 0, 0, 0.31944],\n \"92\": [0.25, 0.75, 0, 0, 0.575],\n \"93\": [0.25, 0.75, 0, 0, 0.31944],\n \"94\": [0, 0.69444, 0, 0, 0.575],\n \"95\": [0.31, 0.13444, 0.03194, 0, 0.575],\n \"97\": [0, 0.44444, 0, 0, 0.55902],\n \"98\": [0, 0.69444, 0, 0, 0.63889],\n \"99\": [0, 0.44444, 0, 0, 0.51111],\n \"100\": [0, 0.69444, 0, 0, 0.63889],\n \"101\": [0, 0.44444, 0, 0, 0.52708],\n \"102\": [0, 0.69444, 0.10903, 0, 0.35139],\n \"103\": [0.19444, 0.44444, 0.01597, 0, 0.575],\n \"104\": [0, 0.69444, 0, 0, 0.63889],\n \"105\": [0, 0.69444, 0, 0, 0.31944],\n \"106\": [0.19444, 0.69444, 0, 0, 0.35139],\n \"107\": [0, 0.69444, 0, 0, 0.60694],\n \"108\": [0, 0.69444, 0, 0, 0.31944],\n \"109\": [0, 0.44444, 0, 0, 0.95833],\n \"110\": [0, 0.44444, 0, 0, 0.63889],\n \"111\": [0, 0.44444, 0, 0, 0.575],\n \"112\": [0.19444, 0.44444, 0, 0, 0.63889],\n \"113\": [0.19444, 0.44444, 0, 0, 0.60694],\n \"114\": [0, 0.44444, 0, 0, 0.47361],\n \"115\": [0, 0.44444, 0, 0, 0.45361],\n \"116\": [0, 0.63492, 0, 0, 0.44722],\n \"117\": [0, 0.44444, 0, 0, 0.63889],\n \"118\": [0, 0.44444, 0.01597, 0, 0.60694],\n \"119\": [0, 0.44444, 0.01597, 0, 0.83055],\n \"120\": [0, 0.44444, 0, 0, 0.60694],\n \"121\": [0.19444, 0.44444, 0.01597, 0, 0.60694],\n \"122\": [0, 0.44444, 0, 0, 0.51111],\n \"123\": [0.25, 0.75, 0, 0, 0.575],\n \"124\": [0.25, 0.75, 0, 0, 0.31944],\n \"125\": [0.25, 0.75, 0, 0, 0.575],\n \"126\": [0.35, 0.34444, 0, 0, 0.575],\n \"160\": [0, 0, 0, 0, 0.25],\n \"163\": [0, 0.69444, 0, 0, 0.86853],\n \"168\": [0, 0.69444, 0, 0, 0.575],\n \"172\": [0, 0.44444, 0, 0, 0.76666],\n \"176\": [0, 0.69444, 0, 0, 0.86944],\n \"177\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"184\": [0.17014, 0, 0, 0, 0.51111],\n \"198\": [0, 0.68611, 0, 0, 1.04166],\n \"215\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"216\": [0.04861, 0.73472, 0, 0, 0.89444],\n \"223\": [0, 0.69444, 0, 0, 0.59722],\n \"230\": [0, 0.44444, 0, 0, 0.83055],\n \"247\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"248\": [0.09722, 0.54167, 0, 0, 0.575],\n \"305\": [0, 0.44444, 0, 0, 0.31944],\n \"338\": [0, 0.68611, 0, 0, 1.16944],\n \"339\": [0, 0.44444, 0, 0, 0.89444],\n \"567\": [0.19444, 0.44444, 0, 0, 0.35139],\n \"710\": [0, 0.69444, 0, 0, 0.575],\n \"711\": [0, 0.63194, 0, 0, 0.575],\n \"713\": [0, 0.59611, 0, 0, 0.575],\n \"714\": [0, 0.69444, 0, 0, 0.575],\n \"715\": [0, 0.69444, 0, 0, 0.575],\n \"728\": [0, 0.69444, 0, 0, 0.575],\n \"729\": [0, 0.69444, 0, 0, 0.31944],\n \"730\": [0, 0.69444, 0, 0, 0.86944],\n \"732\": [0, 0.69444, 0, 0, 0.575],\n \"733\": [0, 0.69444, 0, 0, 0.575],\n \"915\": [0, 0.68611, 0, 0, 0.69166],\n \"916\": [0, 0.68611, 0, 0, 0.95833],\n \"920\": [0, 0.68611, 0, 0, 0.89444],\n \"923\": [0, 0.68611, 0, 0, 0.80555],\n \"926\": [0, 0.68611, 0, 0, 0.76666],\n \"928\": [0, 0.68611, 0, 0, 0.9],\n \"931\": [0, 0.68611, 0, 0, 0.83055],\n \"933\": [0, 0.68611, 0, 0, 0.89444],\n \"934\": [0, 0.68611, 0, 0, 0.83055],\n \"936\": [0, 0.68611, 0, 0, 0.89444],\n \"937\": [0, 0.68611, 0, 0, 0.83055],\n \"8211\": [0, 0.44444, 0.03194, 0, 0.575],\n \"8212\": [0, 0.44444, 0.03194, 0, 1.14999],\n \"8216\": [0, 0.69444, 0, 0, 0.31944],\n \"8217\": [0, 0.69444, 0, 0, 0.31944],\n \"8220\": [0, 0.69444, 0, 0, 0.60278],\n \"8221\": [0, 0.69444, 0, 0, 0.60278],\n \"8224\": [0.19444, 0.69444, 0, 0, 0.51111],\n \"8225\": [0.19444, 0.69444, 0, 0, 0.51111],\n \"8242\": [0, 0.55556, 0, 0, 0.34444],\n \"8407\": [0, 0.72444, 0.15486, 0, 0.575],\n \"8463\": [0, 0.69444, 0, 0, 0.66759],\n \"8465\": [0, 0.69444, 0, 0, 0.83055],\n \"8467\": [0, 0.69444, 0, 0, 0.47361],\n \"8472\": [0.19444, 0.44444, 0, 0, 0.74027],\n \"8476\": [0, 0.69444, 0, 0, 0.83055],\n \"8501\": [0, 0.69444, 0, 0, 0.70277],\n \"8592\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8593\": [0.19444, 0.69444, 0, 0, 0.575],\n \"8594\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8595\": [0.19444, 0.69444, 0, 0, 0.575],\n \"8596\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8597\": [0.25, 0.75, 0, 0, 0.575],\n \"8598\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8599\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8600\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8601\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8636\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8637\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8640\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8641\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8656\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8657\": [0.19444, 0.69444, 0, 0, 0.70277],\n \"8658\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8659\": [0.19444, 0.69444, 0, 0, 0.70277],\n \"8660\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8661\": [0.25, 0.75, 0, 0, 0.70277],\n \"8704\": [0, 0.69444, 0, 0, 0.63889],\n \"8706\": [0, 0.69444, 0.06389, 0, 0.62847],\n \"8707\": [0, 0.69444, 0, 0, 0.63889],\n \"8709\": [0.05556, 0.75, 0, 0, 0.575],\n \"8711\": [0, 0.68611, 0, 0, 0.95833],\n \"8712\": [0.08556, 0.58556, 0, 0, 0.76666],\n \"8715\": [0.08556, 0.58556, 0, 0, 0.76666],\n \"8722\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8723\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8725\": [0.25, 0.75, 0, 0, 0.575],\n \"8726\": [0.25, 0.75, 0, 0, 0.575],\n \"8727\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"8728\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8729\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8730\": [0.18, 0.82, 0, 0, 0.95833],\n \"8733\": [0, 0.44444, 0, 0, 0.89444],\n \"8734\": [0, 0.44444, 0, 0, 1.14999],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8739\": [0.25, 0.75, 0, 0, 0.31944],\n \"8741\": [0.25, 0.75, 0, 0, 0.575],\n \"8743\": [0, 0.55556, 0, 0, 0.76666],\n \"8744\": [0, 0.55556, 0, 0, 0.76666],\n \"8745\": [0, 0.55556, 0, 0, 0.76666],\n \"8746\": [0, 0.55556, 0, 0, 0.76666],\n \"8747\": [0.19444, 0.69444, 0.12778, 0, 0.56875],\n \"8764\": [-0.10889, 0.39111, 0, 0, 0.89444],\n \"8768\": [0.19444, 0.69444, 0, 0, 0.31944],\n \"8771\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8773\": [0.027, 0.638, 0, 0, 0.894],\n \"8776\": [0.02444, 0.52444, 0, 0, 0.89444],\n \"8781\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8801\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8804\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8805\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8810\": [0.08556, 0.58556, 0, 0, 1.14999],\n \"8811\": [0.08556, 0.58556, 0, 0, 1.14999],\n \"8826\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8827\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8834\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8835\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8838\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8839\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8846\": [0, 0.55556, 0, 0, 0.76666],\n \"8849\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8850\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8851\": [0, 0.55556, 0, 0, 0.76666],\n \"8852\": [0, 0.55556, 0, 0, 0.76666],\n \"8853\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8854\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8855\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8856\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8857\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8866\": [0, 0.69444, 0, 0, 0.70277],\n \"8867\": [0, 0.69444, 0, 0, 0.70277],\n \"8868\": [0, 0.69444, 0, 0, 0.89444],\n \"8869\": [0, 0.69444, 0, 0, 0.89444],\n \"8900\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8901\": [-0.02639, 0.47361, 0, 0, 0.31944],\n \"8902\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"8968\": [0.25, 0.75, 0, 0, 0.51111],\n \"8969\": [0.25, 0.75, 0, 0, 0.51111],\n \"8970\": [0.25, 0.75, 0, 0, 0.51111],\n \"8971\": [0.25, 0.75, 0, 0, 0.51111],\n \"8994\": [-0.13889, 0.36111, 0, 0, 1.14999],\n \"8995\": [-0.13889, 0.36111, 0, 0, 1.14999],\n \"9651\": [0.19444, 0.69444, 0, 0, 1.02222],\n \"9657\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"9661\": [0.19444, 0.69444, 0, 0, 1.02222],\n \"9667\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"9711\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"9824\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9825\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9826\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9827\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9837\": [0, 0.75, 0, 0, 0.44722],\n \"9838\": [0.19444, 0.69444, 0, 0, 0.44722],\n \"9839\": [0.19444, 0.69444, 0, 0, 0.44722],\n \"10216\": [0.25, 0.75, 0, 0, 0.44722],\n \"10217\": [0.25, 0.75, 0, 0, 0.44722],\n \"10815\": [0, 0.68611, 0, 0, 0.9],\n \"10927\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"10928\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"57376\": [0.19444, 0.69444, 0, 0, 0]\n },\n \"Main-BoldItalic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.11417, 0, 0.38611],\n \"34\": [0, 0.69444, 0.07939, 0, 0.62055],\n \"35\": [0.19444, 0.69444, 0.06833, 0, 0.94444],\n \"37\": [0.05556, 0.75, 0.12861, 0, 0.94444],\n \"38\": [0, 0.69444, 0.08528, 0, 0.88555],\n \"39\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"40\": [0.25, 0.75, 0.15806, 0, 0.47333],\n \"41\": [0.25, 0.75, 0.03306, 0, 0.47333],\n \"42\": [0, 0.75, 0.14333, 0, 0.59111],\n \"43\": [0.10333, 0.60333, 0.03306, 0, 0.88555],\n \"44\": [0.19444, 0.14722, 0, 0, 0.35555],\n \"45\": [0, 0.44444, 0.02611, 0, 0.41444],\n \"46\": [0, 0.14722, 0, 0, 0.35555],\n \"47\": [0.25, 0.75, 0.15806, 0, 0.59111],\n \"48\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"49\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"50\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"51\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"52\": [0.19444, 0.64444, 0.13167, 0, 0.59111],\n \"53\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"54\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"55\": [0.19444, 0.64444, 0.13167, 0, 0.59111],\n \"56\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"57\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"58\": [0, 0.44444, 0.06695, 0, 0.35555],\n \"59\": [0.19444, 0.44444, 0.06695, 0, 0.35555],\n \"61\": [-0.10889, 0.39111, 0.06833, 0, 0.88555],\n \"63\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"64\": [0, 0.69444, 0.09208, 0, 0.88555],\n \"65\": [0, 0.68611, 0, 0, 0.86555],\n \"66\": [0, 0.68611, 0.0992, 0, 0.81666],\n \"67\": [0, 0.68611, 0.14208, 0, 0.82666],\n \"68\": [0, 0.68611, 0.09062, 0, 0.87555],\n \"69\": [0, 0.68611, 0.11431, 0, 0.75666],\n \"70\": [0, 0.68611, 0.12903, 0, 0.72722],\n \"71\": [0, 0.68611, 0.07347, 0, 0.89527],\n \"72\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"73\": [0, 0.68611, 0.15681, 0, 0.47166],\n \"74\": [0, 0.68611, 0.145, 0, 0.61055],\n \"75\": [0, 0.68611, 0.14208, 0, 0.89499],\n \"76\": [0, 0.68611, 0, 0, 0.69777],\n \"77\": [0, 0.68611, 0.17208, 0, 1.07277],\n \"78\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"79\": [0, 0.68611, 0.09062, 0, 0.85499],\n \"80\": [0, 0.68611, 0.0992, 0, 0.78721],\n \"81\": [0.19444, 0.68611, 0.09062, 0, 0.85499],\n \"82\": [0, 0.68611, 0.02559, 0, 0.85944],\n \"83\": [0, 0.68611, 0.11264, 0, 0.64999],\n \"84\": [0, 0.68611, 0.12903, 0, 0.7961],\n \"85\": [0, 0.68611, 0.17208, 0, 0.88083],\n \"86\": [0, 0.68611, 0.18625, 0, 0.86555],\n \"87\": [0, 0.68611, 0.18625, 0, 1.15999],\n \"88\": [0, 0.68611, 0.15681, 0, 0.86555],\n \"89\": [0, 0.68611, 0.19803, 0, 0.86555],\n \"90\": [0, 0.68611, 0.14208, 0, 0.70888],\n \"91\": [0.25, 0.75, 0.1875, 0, 0.35611],\n \"93\": [0.25, 0.75, 0.09972, 0, 0.35611],\n \"94\": [0, 0.69444, 0.06709, 0, 0.59111],\n \"95\": [0.31, 0.13444, 0.09811, 0, 0.59111],\n \"97\": [0, 0.44444, 0.09426, 0, 0.59111],\n \"98\": [0, 0.69444, 0.07861, 0, 0.53222],\n \"99\": [0, 0.44444, 0.05222, 0, 0.53222],\n \"100\": [0, 0.69444, 0.10861, 0, 0.59111],\n \"101\": [0, 0.44444, 0.085, 0, 0.53222],\n \"102\": [0.19444, 0.69444, 0.21778, 0, 0.4],\n \"103\": [0.19444, 0.44444, 0.105, 0, 0.53222],\n \"104\": [0, 0.69444, 0.09426, 0, 0.59111],\n \"105\": [0, 0.69326, 0.11387, 0, 0.35555],\n \"106\": [0.19444, 0.69326, 0.1672, 0, 0.35555],\n \"107\": [0, 0.69444, 0.11111, 0, 0.53222],\n \"108\": [0, 0.69444, 0.10861, 0, 0.29666],\n \"109\": [0, 0.44444, 0.09426, 0, 0.94444],\n \"110\": [0, 0.44444, 0.09426, 0, 0.64999],\n \"111\": [0, 0.44444, 0.07861, 0, 0.59111],\n \"112\": [0.19444, 0.44444, 0.07861, 0, 0.59111],\n \"113\": [0.19444, 0.44444, 0.105, 0, 0.53222],\n \"114\": [0, 0.44444, 0.11111, 0, 0.50167],\n \"115\": [0, 0.44444, 0.08167, 0, 0.48694],\n \"116\": [0, 0.63492, 0.09639, 0, 0.385],\n \"117\": [0, 0.44444, 0.09426, 0, 0.62055],\n \"118\": [0, 0.44444, 0.11111, 0, 0.53222],\n \"119\": [0, 0.44444, 0.11111, 0, 0.76777],\n \"120\": [0, 0.44444, 0.12583, 0, 0.56055],\n \"121\": [0.19444, 0.44444, 0.105, 0, 0.56166],\n \"122\": [0, 0.44444, 0.13889, 0, 0.49055],\n \"126\": [0.35, 0.34444, 0.11472, 0, 0.59111],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.69444, 0.11473, 0, 0.59111],\n \"176\": [0, 0.69444, 0, 0, 0.94888],\n \"184\": [0.17014, 0, 0, 0, 0.53222],\n \"198\": [0, 0.68611, 0.11431, 0, 1.02277],\n \"216\": [0.04861, 0.73472, 0.09062, 0, 0.88555],\n \"223\": [0.19444, 0.69444, 0.09736, 0, 0.665],\n \"230\": [0, 0.44444, 0.085, 0, 0.82666],\n \"248\": [0.09722, 0.54167, 0.09458, 0, 0.59111],\n \"305\": [0, 0.44444, 0.09426, 0, 0.35555],\n \"338\": [0, 0.68611, 0.11431, 0, 1.14054],\n \"339\": [0, 0.44444, 0.085, 0, 0.82666],\n \"567\": [0.19444, 0.44444, 0.04611, 0, 0.385],\n \"710\": [0, 0.69444, 0.06709, 0, 0.59111],\n \"711\": [0, 0.63194, 0.08271, 0, 0.59111],\n \"713\": [0, 0.59444, 0.10444, 0, 0.59111],\n \"714\": [0, 0.69444, 0.08528, 0, 0.59111],\n \"715\": [0, 0.69444, 0, 0, 0.59111],\n \"728\": [0, 0.69444, 0.10333, 0, 0.59111],\n \"729\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"730\": [0, 0.69444, 0, 0, 0.94888],\n \"732\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"733\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"915\": [0, 0.68611, 0.12903, 0, 0.69777],\n \"916\": [0, 0.68611, 0, 0, 0.94444],\n \"920\": [0, 0.68611, 0.09062, 0, 0.88555],\n \"923\": [0, 0.68611, 0, 0, 0.80666],\n \"926\": [0, 0.68611, 0.15092, 0, 0.76777],\n \"928\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"931\": [0, 0.68611, 0.11431, 0, 0.82666],\n \"933\": [0, 0.68611, 0.10778, 0, 0.88555],\n \"934\": [0, 0.68611, 0.05632, 0, 0.82666],\n \"936\": [0, 0.68611, 0.10778, 0, 0.88555],\n \"937\": [0, 0.68611, 0.0992, 0, 0.82666],\n \"8211\": [0, 0.44444, 0.09811, 0, 0.59111],\n \"8212\": [0, 0.44444, 0.09811, 0, 1.18221],\n \"8216\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"8217\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"8220\": [0, 0.69444, 0.16772, 0, 0.62055],\n \"8221\": [0, 0.69444, 0.07939, 0, 0.62055]\n },\n \"Main-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"34\": [0, 0.69444, 0.06961, 0, 0.51444],\n \"35\": [0.19444, 0.69444, 0.06616, 0, 0.81777],\n \"37\": [0.05556, 0.75, 0.13639, 0, 0.81777],\n \"38\": [0, 0.69444, 0.09694, 0, 0.76666],\n \"39\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"40\": [0.25, 0.75, 0.16194, 0, 0.40889],\n \"41\": [0.25, 0.75, 0.03694, 0, 0.40889],\n \"42\": [0, 0.75, 0.14917, 0, 0.51111],\n \"43\": [0.05667, 0.56167, 0.03694, 0, 0.76666],\n \"44\": [0.19444, 0.10556, 0, 0, 0.30667],\n \"45\": [0, 0.43056, 0.02826, 0, 0.35778],\n \"46\": [0, 0.10556, 0, 0, 0.30667],\n \"47\": [0.25, 0.75, 0.16194, 0, 0.51111],\n \"48\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"49\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"50\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"51\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"52\": [0.19444, 0.64444, 0.13556, 0, 0.51111],\n \"53\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"54\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"55\": [0.19444, 0.64444, 0.13556, 0, 0.51111],\n \"56\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"57\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"58\": [0, 0.43056, 0.0582, 0, 0.30667],\n \"59\": [0.19444, 0.43056, 0.0582, 0, 0.30667],\n \"61\": [-0.13313, 0.36687, 0.06616, 0, 0.76666],\n \"63\": [0, 0.69444, 0.1225, 0, 0.51111],\n \"64\": [0, 0.69444, 0.09597, 0, 0.76666],\n \"65\": [0, 0.68333, 0, 0, 0.74333],\n \"66\": [0, 0.68333, 0.10257, 0, 0.70389],\n \"67\": [0, 0.68333, 0.14528, 0, 0.71555],\n \"68\": [0, 0.68333, 0.09403, 0, 0.755],\n \"69\": [0, 0.68333, 0.12028, 0, 0.67833],\n \"70\": [0, 0.68333, 0.13305, 0, 0.65277],\n \"71\": [0, 0.68333, 0.08722, 0, 0.77361],\n \"72\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"73\": [0, 0.68333, 0.15806, 0, 0.38555],\n \"74\": [0, 0.68333, 0.14028, 0, 0.525],\n \"75\": [0, 0.68333, 0.14528, 0, 0.76888],\n \"76\": [0, 0.68333, 0, 0, 0.62722],\n \"77\": [0, 0.68333, 0.16389, 0, 0.89666],\n \"78\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"79\": [0, 0.68333, 0.09403, 0, 0.76666],\n \"80\": [0, 0.68333, 0.10257, 0, 0.67833],\n \"81\": [0.19444, 0.68333, 0.09403, 0, 0.76666],\n \"82\": [0, 0.68333, 0.03868, 0, 0.72944],\n \"83\": [0, 0.68333, 0.11972, 0, 0.56222],\n \"84\": [0, 0.68333, 0.13305, 0, 0.71555],\n \"85\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"86\": [0, 0.68333, 0.18361, 0, 0.74333],\n \"87\": [0, 0.68333, 0.18361, 0, 0.99888],\n \"88\": [0, 0.68333, 0.15806, 0, 0.74333],\n \"89\": [0, 0.68333, 0.19383, 0, 0.74333],\n \"90\": [0, 0.68333, 0.14528, 0, 0.61333],\n \"91\": [0.25, 0.75, 0.1875, 0, 0.30667],\n \"93\": [0.25, 0.75, 0.10528, 0, 0.30667],\n \"94\": [0, 0.69444, 0.06646, 0, 0.51111],\n \"95\": [0.31, 0.12056, 0.09208, 0, 0.51111],\n \"97\": [0, 0.43056, 0.07671, 0, 0.51111],\n \"98\": [0, 0.69444, 0.06312, 0, 0.46],\n \"99\": [0, 0.43056, 0.05653, 0, 0.46],\n \"100\": [0, 0.69444, 0.10333, 0, 0.51111],\n \"101\": [0, 0.43056, 0.07514, 0, 0.46],\n \"102\": [0.19444, 0.69444, 0.21194, 0, 0.30667],\n \"103\": [0.19444, 0.43056, 0.08847, 0, 0.46],\n \"104\": [0, 0.69444, 0.07671, 0, 0.51111],\n \"105\": [0, 0.65536, 0.1019, 0, 0.30667],\n \"106\": [0.19444, 0.65536, 0.14467, 0, 0.30667],\n \"107\": [0, 0.69444, 0.10764, 0, 0.46],\n \"108\": [0, 0.69444, 0.10333, 0, 0.25555],\n \"109\": [0, 0.43056, 0.07671, 0, 0.81777],\n \"110\": [0, 0.43056, 0.07671, 0, 0.56222],\n \"111\": [0, 0.43056, 0.06312, 0, 0.51111],\n \"112\": [0.19444, 0.43056, 0.06312, 0, 0.51111],\n \"113\": [0.19444, 0.43056, 0.08847, 0, 0.46],\n \"114\": [0, 0.43056, 0.10764, 0, 0.42166],\n \"115\": [0, 0.43056, 0.08208, 0, 0.40889],\n \"116\": [0, 0.61508, 0.09486, 0, 0.33222],\n \"117\": [0, 0.43056, 0.07671, 0, 0.53666],\n \"118\": [0, 0.43056, 0.10764, 0, 0.46],\n \"119\": [0, 0.43056, 0.10764, 0, 0.66444],\n \"120\": [0, 0.43056, 0.12042, 0, 0.46389],\n \"121\": [0.19444, 0.43056, 0.08847, 0, 0.48555],\n \"122\": [0, 0.43056, 0.12292, 0, 0.40889],\n \"126\": [0.35, 0.31786, 0.11585, 0, 0.51111],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.66786, 0.10474, 0, 0.51111],\n \"176\": [0, 0.69444, 0, 0, 0.83129],\n \"184\": [0.17014, 0, 0, 0, 0.46],\n \"198\": [0, 0.68333, 0.12028, 0, 0.88277],\n \"216\": [0.04861, 0.73194, 0.09403, 0, 0.76666],\n \"223\": [0.19444, 0.69444, 0.10514, 0, 0.53666],\n \"230\": [0, 0.43056, 0.07514, 0, 0.71555],\n \"248\": [0.09722, 0.52778, 0.09194, 0, 0.51111],\n \"338\": [0, 0.68333, 0.12028, 0, 0.98499],\n \"339\": [0, 0.43056, 0.07514, 0, 0.71555],\n \"710\": [0, 0.69444, 0.06646, 0, 0.51111],\n \"711\": [0, 0.62847, 0.08295, 0, 0.51111],\n \"713\": [0, 0.56167, 0.10333, 0, 0.51111],\n \"714\": [0, 0.69444, 0.09694, 0, 0.51111],\n \"715\": [0, 0.69444, 0, 0, 0.51111],\n \"728\": [0, 0.69444, 0.10806, 0, 0.51111],\n \"729\": [0, 0.66786, 0.11752, 0, 0.30667],\n \"730\": [0, 0.69444, 0, 0, 0.83129],\n \"732\": [0, 0.66786, 0.11585, 0, 0.51111],\n \"733\": [0, 0.69444, 0.1225, 0, 0.51111],\n \"915\": [0, 0.68333, 0.13305, 0, 0.62722],\n \"916\": [0, 0.68333, 0, 0, 0.81777],\n \"920\": [0, 0.68333, 0.09403, 0, 0.76666],\n \"923\": [0, 0.68333, 0, 0, 0.69222],\n \"926\": [0, 0.68333, 0.15294, 0, 0.66444],\n \"928\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"931\": [0, 0.68333, 0.12028, 0, 0.71555],\n \"933\": [0, 0.68333, 0.11111, 0, 0.76666],\n \"934\": [0, 0.68333, 0.05986, 0, 0.71555],\n \"936\": [0, 0.68333, 0.11111, 0, 0.76666],\n \"937\": [0, 0.68333, 0.10257, 0, 0.71555],\n \"8211\": [0, 0.43056, 0.09208, 0, 0.51111],\n \"8212\": [0, 0.43056, 0.09208, 0, 1.02222],\n \"8216\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"8217\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"8220\": [0, 0.69444, 0.1685, 0, 0.51444],\n \"8221\": [0, 0.69444, 0.06961, 0, 0.51444],\n \"8463\": [0, 0.68889, 0, 0, 0.54028]\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.27778],\n \"34\": [0, 0.69444, 0, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0, 0, 0.5],\n \"37\": [0.05556, 0.75, 0, 0, 0.83334],\n \"38\": [0, 0.69444, 0, 0, 0.77778],\n \"39\": [0, 0.69444, 0, 0, 0.27778],\n \"40\": [0.25, 0.75, 0, 0, 0.38889],\n \"41\": [0.25, 0.75, 0, 0, 0.38889],\n \"42\": [0, 0.75, 0, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"44\": [0.19444, 0.10556, 0, 0, 0.27778],\n \"45\": [0, 0.43056, 0, 0, 0.33333],\n \"46\": [0, 0.10556, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0, 0, 0.5],\n \"48\": [0, 0.64444, 0, 0, 0.5],\n \"49\": [0, 0.64444, 0, 0, 0.5],\n \"50\": [0, 0.64444, 0, 0, 0.5],\n \"51\": [0, 0.64444, 0, 0, 0.5],\n \"52\": [0, 0.64444, 0, 0, 0.5],\n \"53\": [0, 0.64444, 0, 0, 0.5],\n \"54\": [0, 0.64444, 0, 0, 0.5],\n \"55\": [0, 0.64444, 0, 0, 0.5],\n \"56\": [0, 0.64444, 0, 0, 0.5],\n \"57\": [0, 0.64444, 0, 0, 0.5],\n \"58\": [0, 0.43056, 0, 0, 0.27778],\n \"59\": [0.19444, 0.43056, 0, 0, 0.27778],\n \"60\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"61\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"62\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"63\": [0, 0.69444, 0, 0, 0.47222],\n \"64\": [0, 0.69444, 0, 0, 0.77778],\n \"65\": [0, 0.68333, 0, 0, 0.75],\n \"66\": [0, 0.68333, 0, 0, 0.70834],\n \"67\": [0, 0.68333, 0, 0, 0.72222],\n \"68\": [0, 0.68333, 0, 0, 0.76389],\n \"69\": [0, 0.68333, 0, 0, 0.68056],\n \"70\": [0, 0.68333, 0, 0, 0.65278],\n \"71\": [0, 0.68333, 0, 0, 0.78472],\n \"72\": [0, 0.68333, 0, 0, 0.75],\n \"73\": [0, 0.68333, 0, 0, 0.36111],\n \"74\": [0, 0.68333, 0, 0, 0.51389],\n \"75\": [0, 0.68333, 0, 0, 0.77778],\n \"76\": [0, 0.68333, 0, 0, 0.625],\n \"77\": [0, 0.68333, 0, 0, 0.91667],\n \"78\": [0, 0.68333, 0, 0, 0.75],\n \"79\": [0, 0.68333, 0, 0, 0.77778],\n \"80\": [0, 0.68333, 0, 0, 0.68056],\n \"81\": [0.19444, 0.68333, 0, 0, 0.77778],\n \"82\": [0, 0.68333, 0, 0, 0.73611],\n \"83\": [0, 0.68333, 0, 0, 0.55556],\n \"84\": [0, 0.68333, 0, 0, 0.72222],\n \"85\": [0, 0.68333, 0, 0, 0.75],\n \"86\": [0, 0.68333, 0.01389, 0, 0.75],\n \"87\": [0, 0.68333, 0.01389, 0, 1.02778],\n \"88\": [0, 0.68333, 0, 0, 0.75],\n \"89\": [0, 0.68333, 0.025, 0, 0.75],\n \"90\": [0, 0.68333, 0, 0, 0.61111],\n \"91\": [0.25, 0.75, 0, 0, 0.27778],\n \"92\": [0.25, 0.75, 0, 0, 0.5],\n \"93\": [0.25, 0.75, 0, 0, 0.27778],\n \"94\": [0, 0.69444, 0, 0, 0.5],\n \"95\": [0.31, 0.12056, 0.02778, 0, 0.5],\n \"97\": [0, 0.43056, 0, 0, 0.5],\n \"98\": [0, 0.69444, 0, 0, 0.55556],\n \"99\": [0, 0.43056, 0, 0, 0.44445],\n \"100\": [0, 0.69444, 0, 0, 0.55556],\n \"101\": [0, 0.43056, 0, 0, 0.44445],\n \"102\": [0, 0.69444, 0.07778, 0, 0.30556],\n \"103\": [0.19444, 0.43056, 0.01389, 0, 0.5],\n \"104\": [0, 0.69444, 0, 0, 0.55556],\n \"105\": [0, 0.66786, 0, 0, 0.27778],\n \"106\": [0.19444, 0.66786, 0, 0, 0.30556],\n \"107\": [0, 0.69444, 0, 0, 0.52778],\n \"108\": [0, 0.69444, 0, 0, 0.27778],\n \"109\": [0, 0.43056, 0, 0, 0.83334],\n \"110\": [0, 0.43056, 0, 0, 0.55556],\n \"111\": [0, 0.43056, 0, 0, 0.5],\n \"112\": [0.19444, 0.43056, 0, 0, 0.55556],\n \"113\": [0.19444, 0.43056, 0, 0, 0.52778],\n \"114\": [0, 0.43056, 0, 0, 0.39167],\n \"115\": [0, 0.43056, 0, 0, 0.39445],\n \"116\": [0, 0.61508, 0, 0, 0.38889],\n \"117\": [0, 0.43056, 0, 0, 0.55556],\n \"118\": [0, 0.43056, 0.01389, 0, 0.52778],\n \"119\": [0, 0.43056, 0.01389, 0, 0.72222],\n \"120\": [0, 0.43056, 0, 0, 0.52778],\n \"121\": [0.19444, 0.43056, 0.01389, 0, 0.52778],\n \"122\": [0, 0.43056, 0, 0, 0.44445],\n \"123\": [0.25, 0.75, 0, 0, 0.5],\n \"124\": [0.25, 0.75, 0, 0, 0.27778],\n \"125\": [0.25, 0.75, 0, 0, 0.5],\n \"126\": [0.35, 0.31786, 0, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"163\": [0, 0.69444, 0, 0, 0.76909],\n \"167\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"168\": [0, 0.66786, 0, 0, 0.5],\n \"172\": [0, 0.43056, 0, 0, 0.66667],\n \"176\": [0, 0.69444, 0, 0, 0.75],\n \"177\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"182\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"198\": [0, 0.68333, 0, 0, 0.90278],\n \"215\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"216\": [0.04861, 0.73194, 0, 0, 0.77778],\n \"223\": [0, 0.69444, 0, 0, 0.5],\n \"230\": [0, 0.43056, 0, 0, 0.72222],\n \"247\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"248\": [0.09722, 0.52778, 0, 0, 0.5],\n \"305\": [0, 0.43056, 0, 0, 0.27778],\n \"338\": [0, 0.68333, 0, 0, 1.01389],\n \"339\": [0, 0.43056, 0, 0, 0.77778],\n \"567\": [0.19444, 0.43056, 0, 0, 0.30556],\n \"710\": [0, 0.69444, 0, 0, 0.5],\n \"711\": [0, 0.62847, 0, 0, 0.5],\n \"713\": [0, 0.56778, 0, 0, 0.5],\n \"714\": [0, 0.69444, 0, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0, 0, 0.5],\n \"729\": [0, 0.66786, 0, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.75],\n \"732\": [0, 0.66786, 0, 0, 0.5],\n \"733\": [0, 0.69444, 0, 0, 0.5],\n \"915\": [0, 0.68333, 0, 0, 0.625],\n \"916\": [0, 0.68333, 0, 0, 0.83334],\n \"920\": [0, 0.68333, 0, 0, 0.77778],\n \"923\": [0, 0.68333, 0, 0, 0.69445],\n \"926\": [0, 0.68333, 0, 0, 0.66667],\n \"928\": [0, 0.68333, 0, 0, 0.75],\n \"931\": [0, 0.68333, 0, 0, 0.72222],\n \"933\": [0, 0.68333, 0, 0, 0.77778],\n \"934\": [0, 0.68333, 0, 0, 0.72222],\n \"936\": [0, 0.68333, 0, 0, 0.77778],\n \"937\": [0, 0.68333, 0, 0, 0.72222],\n \"8211\": [0, 0.43056, 0.02778, 0, 0.5],\n \"8212\": [0, 0.43056, 0.02778, 0, 1.0],\n \"8216\": [0, 0.69444, 0, 0, 0.27778],\n \"8217\": [0, 0.69444, 0, 0, 0.27778],\n \"8220\": [0, 0.69444, 0, 0, 0.5],\n \"8221\": [0, 0.69444, 0, 0, 0.5],\n \"8224\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"8225\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"8230\": [0, 0.123, 0, 0, 1.172],\n \"8242\": [0, 0.55556, 0, 0, 0.275],\n \"8407\": [0, 0.71444, 0.15382, 0, 0.5],\n \"8463\": [0, 0.68889, 0, 0, 0.54028],\n \"8465\": [0, 0.69444, 0, 0, 0.72222],\n \"8467\": [0, 0.69444, 0, 0.11111, 0.41667],\n \"8472\": [0.19444, 0.43056, 0, 0.11111, 0.63646],\n \"8476\": [0, 0.69444, 0, 0, 0.72222],\n \"8501\": [0, 0.69444, 0, 0, 0.61111],\n \"8592\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8593\": [0.19444, 0.69444, 0, 0, 0.5],\n \"8594\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8595\": [0.19444, 0.69444, 0, 0, 0.5],\n \"8596\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8597\": [0.25, 0.75, 0, 0, 0.5],\n \"8598\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8599\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8600\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8601\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8614\": [0.011, 0.511, 0, 0, 1.0],\n \"8617\": [0.011, 0.511, 0, 0, 1.126],\n \"8618\": [0.011, 0.511, 0, 0, 1.126],\n \"8636\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8637\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8640\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8641\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8652\": [0.011, 0.671, 0, 0, 1.0],\n \"8656\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8657\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"8658\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8659\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"8660\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8661\": [0.25, 0.75, 0, 0, 0.61111],\n \"8704\": [0, 0.69444, 0, 0, 0.55556],\n \"8706\": [0, 0.69444, 0.05556, 0.08334, 0.5309],\n \"8707\": [0, 0.69444, 0, 0, 0.55556],\n \"8709\": [0.05556, 0.75, 0, 0, 0.5],\n \"8711\": [0, 0.68333, 0, 0, 0.83334],\n \"8712\": [0.0391, 0.5391, 0, 0, 0.66667],\n \"8715\": [0.0391, 0.5391, 0, 0, 0.66667],\n \"8722\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8723\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8725\": [0.25, 0.75, 0, 0, 0.5],\n \"8726\": [0.25, 0.75, 0, 0, 0.5],\n \"8727\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"8728\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8729\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8730\": [0.2, 0.8, 0, 0, 0.83334],\n \"8733\": [0, 0.43056, 0, 0, 0.77778],\n \"8734\": [0, 0.43056, 0, 0, 1.0],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8739\": [0.25, 0.75, 0, 0, 0.27778],\n \"8741\": [0.25, 0.75, 0, 0, 0.5],\n \"8743\": [0, 0.55556, 0, 0, 0.66667],\n \"8744\": [0, 0.55556, 0, 0, 0.66667],\n \"8745\": [0, 0.55556, 0, 0, 0.66667],\n \"8746\": [0, 0.55556, 0, 0, 0.66667],\n \"8747\": [0.19444, 0.69444, 0.11111, 0, 0.41667],\n \"8764\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8768\": [0.19444, 0.69444, 0, 0, 0.27778],\n \"8771\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8773\": [-0.022, 0.589, 0, 0, 0.778],\n \"8776\": [-0.01688, 0.48312, 0, 0, 0.77778],\n \"8781\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8784\": [-0.133, 0.673, 0, 0, 0.778],\n \"8801\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8804\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8805\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8810\": [0.0391, 0.5391, 0, 0, 1.0],\n \"8811\": [0.0391, 0.5391, 0, 0, 1.0],\n \"8826\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8827\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8834\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8835\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8838\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8839\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8846\": [0, 0.55556, 0, 0, 0.66667],\n \"8849\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8850\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8851\": [0, 0.55556, 0, 0, 0.66667],\n \"8852\": [0, 0.55556, 0, 0, 0.66667],\n \"8853\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8854\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8855\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8856\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8857\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8866\": [0, 0.69444, 0, 0, 0.61111],\n \"8867\": [0, 0.69444, 0, 0, 0.61111],\n \"8868\": [0, 0.69444, 0, 0, 0.77778],\n \"8869\": [0, 0.69444, 0, 0, 0.77778],\n \"8872\": [0.249, 0.75, 0, 0, 0.867],\n \"8900\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8901\": [-0.05555, 0.44445, 0, 0, 0.27778],\n \"8902\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"8904\": [0.005, 0.505, 0, 0, 0.9],\n \"8942\": [0.03, 0.903, 0, 0, 0.278],\n \"8943\": [-0.19, 0.313, 0, 0, 1.172],\n \"8945\": [-0.1, 0.823, 0, 0, 1.282],\n \"8968\": [0.25, 0.75, 0, 0, 0.44445],\n \"8969\": [0.25, 0.75, 0, 0, 0.44445],\n \"8970\": [0.25, 0.75, 0, 0, 0.44445],\n \"8971\": [0.25, 0.75, 0, 0, 0.44445],\n \"8994\": [-0.14236, 0.35764, 0, 0, 1.0],\n \"8995\": [-0.14236, 0.35764, 0, 0, 1.0],\n \"9136\": [0.244, 0.744, 0, 0, 0.412],\n \"9137\": [0.244, 0.745, 0, 0, 0.412],\n \"9651\": [0.19444, 0.69444, 0, 0, 0.88889],\n \"9657\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"9661\": [0.19444, 0.69444, 0, 0, 0.88889],\n \"9667\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"9711\": [0.19444, 0.69444, 0, 0, 1.0],\n \"9824\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9825\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9826\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9827\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9837\": [0, 0.75, 0, 0, 0.38889],\n \"9838\": [0.19444, 0.69444, 0, 0, 0.38889],\n \"9839\": [0.19444, 0.69444, 0, 0, 0.38889],\n \"10216\": [0.25, 0.75, 0, 0, 0.38889],\n \"10217\": [0.25, 0.75, 0, 0, 0.38889],\n \"10222\": [0.244, 0.744, 0, 0, 0.412],\n \"10223\": [0.244, 0.745, 0, 0, 0.412],\n \"10229\": [0.011, 0.511, 0, 0, 1.609],\n \"10230\": [0.011, 0.511, 0, 0, 1.638],\n \"10231\": [0.011, 0.511, 0, 0, 1.859],\n \"10232\": [0.024, 0.525, 0, 0, 1.609],\n \"10233\": [0.024, 0.525, 0, 0, 1.638],\n \"10234\": [0.024, 0.525, 0, 0, 1.858],\n \"10236\": [0.011, 0.511, 0, 0, 1.638],\n \"10815\": [0, 0.68333, 0, 0, 0.75],\n \"10927\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10928\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"57376\": [0.19444, 0.69444, 0, 0, 0]\n },\n \"Math-BoldItalic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"48\": [0, 0.44444, 0, 0, 0.575],\n \"49\": [0, 0.44444, 0, 0, 0.575],\n \"50\": [0, 0.44444, 0, 0, 0.575],\n \"51\": [0.19444, 0.44444, 0, 0, 0.575],\n \"52\": [0.19444, 0.44444, 0, 0, 0.575],\n \"53\": [0.19444, 0.44444, 0, 0, 0.575],\n \"54\": [0, 0.64444, 0, 0, 0.575],\n \"55\": [0.19444, 0.44444, 0, 0, 0.575],\n \"56\": [0, 0.64444, 0, 0, 0.575],\n \"57\": [0.19444, 0.44444, 0, 0, 0.575],\n \"65\": [0, 0.68611, 0, 0, 0.86944],\n \"66\": [0, 0.68611, 0.04835, 0, 0.8664],\n \"67\": [0, 0.68611, 0.06979, 0, 0.81694],\n \"68\": [0, 0.68611, 0.03194, 0, 0.93812],\n \"69\": [0, 0.68611, 0.05451, 0, 0.81007],\n \"70\": [0, 0.68611, 0.15972, 0, 0.68889],\n \"71\": [0, 0.68611, 0, 0, 0.88673],\n \"72\": [0, 0.68611, 0.08229, 0, 0.98229],\n \"73\": [0, 0.68611, 0.07778, 0, 0.51111],\n \"74\": [0, 0.68611, 0.10069, 0, 0.63125],\n \"75\": [0, 0.68611, 0.06979, 0, 0.97118],\n \"76\": [0, 0.68611, 0, 0, 0.75555],\n \"77\": [0, 0.68611, 0.11424, 0, 1.14201],\n \"78\": [0, 0.68611, 0.11424, 0, 0.95034],\n \"79\": [0, 0.68611, 0.03194, 0, 0.83666],\n \"80\": [0, 0.68611, 0.15972, 0, 0.72309],\n \"81\": [0.19444, 0.68611, 0, 0, 0.86861],\n \"82\": [0, 0.68611, 0.00421, 0, 0.87235],\n \"83\": [0, 0.68611, 0.05382, 0, 0.69271],\n \"84\": [0, 0.68611, 0.15972, 0, 0.63663],\n \"85\": [0, 0.68611, 0.11424, 0, 0.80027],\n \"86\": [0, 0.68611, 0.25555, 0, 0.67778],\n \"87\": [0, 0.68611, 0.15972, 0, 1.09305],\n \"88\": [0, 0.68611, 0.07778, 0, 0.94722],\n \"89\": [0, 0.68611, 0.25555, 0, 0.67458],\n \"90\": [0, 0.68611, 0.06979, 0, 0.77257],\n \"97\": [0, 0.44444, 0, 0, 0.63287],\n \"98\": [0, 0.69444, 0, 0, 0.52083],\n \"99\": [0, 0.44444, 0, 0, 0.51342],\n \"100\": [0, 0.69444, 0, 0, 0.60972],\n \"101\": [0, 0.44444, 0, 0, 0.55361],\n \"102\": [0.19444, 0.69444, 0.11042, 0, 0.56806],\n \"103\": [0.19444, 0.44444, 0.03704, 0, 0.5449],\n \"104\": [0, 0.69444, 0, 0, 0.66759],\n \"105\": [0, 0.69326, 0, 0, 0.4048],\n \"106\": [0.19444, 0.69326, 0.0622, 0, 0.47083],\n \"107\": [0, 0.69444, 0.01852, 0, 0.6037],\n \"108\": [0, 0.69444, 0.0088, 0, 0.34815],\n \"109\": [0, 0.44444, 0, 0, 1.0324],\n \"110\": [0, 0.44444, 0, 0, 0.71296],\n \"111\": [0, 0.44444, 0, 0, 0.58472],\n \"112\": [0.19444, 0.44444, 0, 0, 0.60092],\n \"113\": [0.19444, 0.44444, 0.03704, 0, 0.54213],\n \"114\": [0, 0.44444, 0.03194, 0, 0.5287],\n \"115\": [0, 0.44444, 0, 0, 0.53125],\n \"116\": [0, 0.63492, 0, 0, 0.41528],\n \"117\": [0, 0.44444, 0, 0, 0.68102],\n \"118\": [0, 0.44444, 0.03704, 0, 0.56666],\n \"119\": [0, 0.44444, 0.02778, 0, 0.83148],\n \"120\": [0, 0.44444, 0, 0, 0.65903],\n \"121\": [0.19444, 0.44444, 0.03704, 0, 0.59028],\n \"122\": [0, 0.44444, 0.04213, 0, 0.55509],\n \"160\": [0, 0, 0, 0, 0.25],\n \"915\": [0, 0.68611, 0.15972, 0, 0.65694],\n \"916\": [0, 0.68611, 0, 0, 0.95833],\n \"920\": [0, 0.68611, 0.03194, 0, 0.86722],\n \"923\": [0, 0.68611, 0, 0, 0.80555],\n \"926\": [0, 0.68611, 0.07458, 0, 0.84125],\n \"928\": [0, 0.68611, 0.08229, 0, 0.98229],\n \"931\": [0, 0.68611, 0.05451, 0, 0.88507],\n \"933\": [0, 0.68611, 0.15972, 0, 0.67083],\n \"934\": [0, 0.68611, 0, 0, 0.76666],\n \"936\": [0, 0.68611, 0.11653, 0, 0.71402],\n \"937\": [0, 0.68611, 0.04835, 0, 0.8789],\n \"945\": [0, 0.44444, 0, 0, 0.76064],\n \"946\": [0.19444, 0.69444, 0.03403, 0, 0.65972],\n \"947\": [0.19444, 0.44444, 0.06389, 0, 0.59003],\n \"948\": [0, 0.69444, 0.03819, 0, 0.52222],\n \"949\": [0, 0.44444, 0, 0, 0.52882],\n \"950\": [0.19444, 0.69444, 0.06215, 0, 0.50833],\n \"951\": [0.19444, 0.44444, 0.03704, 0, 0.6],\n \"952\": [0, 0.69444, 0.03194, 0, 0.5618],\n \"953\": [0, 0.44444, 0, 0, 0.41204],\n \"954\": [0, 0.44444, 0, 0, 0.66759],\n \"955\": [0, 0.69444, 0, 0, 0.67083],\n \"956\": [0.19444, 0.44444, 0, 0, 0.70787],\n \"957\": [0, 0.44444, 0.06898, 0, 0.57685],\n \"958\": [0.19444, 0.69444, 0.03021, 0, 0.50833],\n \"959\": [0, 0.44444, 0, 0, 0.58472],\n \"960\": [0, 0.44444, 0.03704, 0, 0.68241],\n \"961\": [0.19444, 0.44444, 0, 0, 0.6118],\n \"962\": [0.09722, 0.44444, 0.07917, 0, 0.42361],\n \"963\": [0, 0.44444, 0.03704, 0, 0.68588],\n \"964\": [0, 0.44444, 0.13472, 0, 0.52083],\n \"965\": [0, 0.44444, 0.03704, 0, 0.63055],\n \"966\": [0.19444, 0.44444, 0, 0, 0.74722],\n \"967\": [0.19444, 0.44444, 0, 0, 0.71805],\n \"968\": [0.19444, 0.69444, 0.03704, 0, 0.75833],\n \"969\": [0, 0.44444, 0.03704, 0, 0.71782],\n \"977\": [0, 0.69444, 0, 0, 0.69155],\n \"981\": [0.19444, 0.69444, 0, 0, 0.7125],\n \"982\": [0, 0.44444, 0.03194, 0, 0.975],\n \"1009\": [0.19444, 0.44444, 0, 0, 0.6118],\n \"1013\": [0, 0.44444, 0, 0, 0.48333],\n \"57649\": [0, 0.44444, 0, 0, 0.39352],\n \"57911\": [0.19444, 0.44444, 0, 0, 0.43889]\n },\n \"Math-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"48\": [0, 0.43056, 0, 0, 0.5],\n \"49\": [0, 0.43056, 0, 0, 0.5],\n \"50\": [0, 0.43056, 0, 0, 0.5],\n \"51\": [0.19444, 0.43056, 0, 0, 0.5],\n \"52\": [0.19444, 0.43056, 0, 0, 0.5],\n \"53\": [0.19444, 0.43056, 0, 0, 0.5],\n \"54\": [0, 0.64444, 0, 0, 0.5],\n \"55\": [0.19444, 0.43056, 0, 0, 0.5],\n \"56\": [0, 0.64444, 0, 0, 0.5],\n \"57\": [0.19444, 0.43056, 0, 0, 0.5],\n \"65\": [0, 0.68333, 0, 0.13889, 0.75],\n \"66\": [0, 0.68333, 0.05017, 0.08334, 0.75851],\n \"67\": [0, 0.68333, 0.07153, 0.08334, 0.71472],\n \"68\": [0, 0.68333, 0.02778, 0.05556, 0.82792],\n \"69\": [0, 0.68333, 0.05764, 0.08334, 0.7382],\n \"70\": [0, 0.68333, 0.13889, 0.08334, 0.64306],\n \"71\": [0, 0.68333, 0, 0.08334, 0.78625],\n \"72\": [0, 0.68333, 0.08125, 0.05556, 0.83125],\n \"73\": [0, 0.68333, 0.07847, 0.11111, 0.43958],\n \"74\": [0, 0.68333, 0.09618, 0.16667, 0.55451],\n \"75\": [0, 0.68333, 0.07153, 0.05556, 0.84931],\n \"76\": [0, 0.68333, 0, 0.02778, 0.68056],\n \"77\": [0, 0.68333, 0.10903, 0.08334, 0.97014],\n \"78\": [0, 0.68333, 0.10903, 0.08334, 0.80347],\n \"79\": [0, 0.68333, 0.02778, 0.08334, 0.76278],\n \"80\": [0, 0.68333, 0.13889, 0.08334, 0.64201],\n \"81\": [0.19444, 0.68333, 0, 0.08334, 0.79056],\n \"82\": [0, 0.68333, 0.00773, 0.08334, 0.75929],\n \"83\": [0, 0.68333, 0.05764, 0.08334, 0.6132],\n \"84\": [0, 0.68333, 0.13889, 0.08334, 0.58438],\n \"85\": [0, 0.68333, 0.10903, 0.02778, 0.68278],\n \"86\": [0, 0.68333, 0.22222, 0, 0.58333],\n \"87\": [0, 0.68333, 0.13889, 0, 0.94445],\n \"88\": [0, 0.68333, 0.07847, 0.08334, 0.82847],\n \"89\": [0, 0.68333, 0.22222, 0, 0.58056],\n \"90\": [0, 0.68333, 0.07153, 0.08334, 0.68264],\n \"97\": [0, 0.43056, 0, 0, 0.52859],\n \"98\": [0, 0.69444, 0, 0, 0.42917],\n \"99\": [0, 0.43056, 0, 0.05556, 0.43276],\n \"100\": [0, 0.69444, 0, 0.16667, 0.52049],\n \"101\": [0, 0.43056, 0, 0.05556, 0.46563],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],\n \"104\": [0, 0.69444, 0, 0, 0.57616],\n \"105\": [0, 0.65952, 0, 0, 0.34451],\n \"106\": [0.19444, 0.65952, 0.05724, 0, 0.41181],\n \"107\": [0, 0.69444, 0.03148, 0, 0.5206],\n \"108\": [0, 0.69444, 0.01968, 0.08334, 0.29838],\n \"109\": [0, 0.43056, 0, 0, 0.87801],\n \"110\": [0, 0.43056, 0, 0, 0.60023],\n \"111\": [0, 0.43056, 0, 0.05556, 0.48472],\n \"112\": [0.19444, 0.43056, 0, 0.08334, 0.50313],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],\n \"114\": [0, 0.43056, 0.02778, 0.05556, 0.45116],\n \"115\": [0, 0.43056, 0, 0.05556, 0.46875],\n \"116\": [0, 0.61508, 0, 0.08334, 0.36111],\n \"117\": [0, 0.43056, 0, 0.02778, 0.57246],\n \"118\": [0, 0.43056, 0.03588, 0.02778, 0.48472],\n \"119\": [0, 0.43056, 0.02691, 0.08334, 0.71592],\n \"120\": [0, 0.43056, 0, 0.02778, 0.57153],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],\n \"122\": [0, 0.43056, 0.04398, 0.05556, 0.46505],\n \"160\": [0, 0, 0, 0, 0.25],\n \"915\": [0, 0.68333, 0.13889, 0.08334, 0.61528],\n \"916\": [0, 0.68333, 0, 0.16667, 0.83334],\n \"920\": [0, 0.68333, 0.02778, 0.08334, 0.76278],\n \"923\": [0, 0.68333, 0, 0.16667, 0.69445],\n \"926\": [0, 0.68333, 0.07569, 0.08334, 0.74236],\n \"928\": [0, 0.68333, 0.08125, 0.05556, 0.83125],\n \"931\": [0, 0.68333, 0.05764, 0.08334, 0.77986],\n \"933\": [0, 0.68333, 0.13889, 0.05556, 0.58333],\n \"934\": [0, 0.68333, 0, 0.08334, 0.66667],\n \"936\": [0, 0.68333, 0.11, 0.05556, 0.61222],\n \"937\": [0, 0.68333, 0.05017, 0.08334, 0.7724],\n \"945\": [0, 0.43056, 0.0037, 0.02778, 0.6397],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],\n \"947\": [0.19444, 0.43056, 0.05556, 0, 0.51773],\n \"948\": [0, 0.69444, 0.03785, 0.05556, 0.44444],\n \"949\": [0, 0.43056, 0, 0.08334, 0.46632],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],\n \"952\": [0, 0.69444, 0.02778, 0.08334, 0.46944],\n \"953\": [0, 0.43056, 0, 0.05556, 0.35394],\n \"954\": [0, 0.43056, 0, 0, 0.57616],\n \"955\": [0, 0.69444, 0, 0, 0.58334],\n \"956\": [0.19444, 0.43056, 0, 0.02778, 0.60255],\n \"957\": [0, 0.43056, 0.06366, 0.02778, 0.49398],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],\n \"959\": [0, 0.43056, 0, 0.05556, 0.48472],\n \"960\": [0, 0.43056, 0.03588, 0, 0.57003],\n \"961\": [0.19444, 0.43056, 0, 0.08334, 0.51702],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],\n \"963\": [0, 0.43056, 0.03588, 0, 0.57141],\n \"964\": [0, 0.43056, 0.1132, 0.02778, 0.43715],\n \"965\": [0, 0.43056, 0.03588, 0.02778, 0.54028],\n \"966\": [0.19444, 0.43056, 0, 0.08334, 0.65417],\n \"967\": [0.19444, 0.43056, 0, 0.05556, 0.62569],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],\n \"969\": [0, 0.43056, 0.03588, 0, 0.62245],\n \"977\": [0, 0.69444, 0, 0.08334, 0.59144],\n \"981\": [0.19444, 0.69444, 0, 0.08334, 0.59583],\n \"982\": [0, 0.43056, 0.02778, 0, 0.82813],\n \"1009\": [0.19444, 0.43056, 0, 0.08334, 0.51702],\n \"1013\": [0, 0.43056, 0, 0.05556, 0.4059],\n \"57649\": [0, 0.43056, 0, 0.02778, 0.32246],\n \"57911\": [0.19444, 0.43056, 0, 0.08334, 0.38403]\n },\n \"SansSerif-Bold\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.36667],\n \"34\": [0, 0.69444, 0, 0, 0.55834],\n \"35\": [0.19444, 0.69444, 0, 0, 0.91667],\n \"36\": [0.05556, 0.75, 0, 0, 0.55],\n \"37\": [0.05556, 0.75, 0, 0, 1.02912],\n \"38\": [0, 0.69444, 0, 0, 0.83056],\n \"39\": [0, 0.69444, 0, 0, 0.30556],\n \"40\": [0.25, 0.75, 0, 0, 0.42778],\n \"41\": [0.25, 0.75, 0, 0, 0.42778],\n \"42\": [0, 0.75, 0, 0, 0.55],\n \"43\": [0.11667, 0.61667, 0, 0, 0.85556],\n \"44\": [0.10556, 0.13056, 0, 0, 0.30556],\n \"45\": [0, 0.45833, 0, 0, 0.36667],\n \"46\": [0, 0.13056, 0, 0, 0.30556],\n \"47\": [0.25, 0.75, 0, 0, 0.55],\n \"48\": [0, 0.69444, 0, 0, 0.55],\n \"49\": [0, 0.69444, 0, 0, 0.55],\n \"50\": [0, 0.69444, 0, 0, 0.55],\n \"51\": [0, 0.69444, 0, 0, 0.55],\n \"52\": [0, 0.69444, 0, 0, 0.55],\n \"53\": [0, 0.69444, 0, 0, 0.55],\n \"54\": [0, 0.69444, 0, 0, 0.55],\n \"55\": [0, 0.69444, 0, 0, 0.55],\n \"56\": [0, 0.69444, 0, 0, 0.55],\n \"57\": [0, 0.69444, 0, 0, 0.55],\n \"58\": [0, 0.45833, 0, 0, 0.30556],\n \"59\": [0.10556, 0.45833, 0, 0, 0.30556],\n \"61\": [-0.09375, 0.40625, 0, 0, 0.85556],\n \"63\": [0, 0.69444, 0, 0, 0.51945],\n \"64\": [0, 0.69444, 0, 0, 0.73334],\n \"65\": [0, 0.69444, 0, 0, 0.73334],\n \"66\": [0, 0.69444, 0, 0, 0.73334],\n \"67\": [0, 0.69444, 0, 0, 0.70278],\n \"68\": [0, 0.69444, 0, 0, 0.79445],\n \"69\": [0, 0.69444, 0, 0, 0.64167],\n \"70\": [0, 0.69444, 0, 0, 0.61111],\n \"71\": [0, 0.69444, 0, 0, 0.73334],\n \"72\": [0, 0.69444, 0, 0, 0.79445],\n \"73\": [0, 0.69444, 0, 0, 0.33056],\n \"74\": [0, 0.69444, 0, 0, 0.51945],\n \"75\": [0, 0.69444, 0, 0, 0.76389],\n \"76\": [0, 0.69444, 0, 0, 0.58056],\n \"77\": [0, 0.69444, 0, 0, 0.97778],\n \"78\": [0, 0.69444, 0, 0, 0.79445],\n \"79\": [0, 0.69444, 0, 0, 0.79445],\n \"80\": [0, 0.69444, 0, 0, 0.70278],\n \"81\": [0.10556, 0.69444, 0, 0, 0.79445],\n \"82\": [0, 0.69444, 0, 0, 0.70278],\n \"83\": [0, 0.69444, 0, 0, 0.61111],\n \"84\": [0, 0.69444, 0, 0, 0.73334],\n \"85\": [0, 0.69444, 0, 0, 0.76389],\n \"86\": [0, 0.69444, 0.01528, 0, 0.73334],\n \"87\": [0, 0.69444, 0.01528, 0, 1.03889],\n \"88\": [0, 0.69444, 0, 0, 0.73334],\n \"89\": [0, 0.69444, 0.0275, 0, 0.73334],\n \"90\": [0, 0.69444, 0, 0, 0.67223],\n \"91\": [0.25, 0.75, 0, 0, 0.34306],\n \"93\": [0.25, 0.75, 0, 0, 0.34306],\n \"94\": [0, 0.69444, 0, 0, 0.55],\n \"95\": [0.35, 0.10833, 0.03056, 0, 0.55],\n \"97\": [0, 0.45833, 0, 0, 0.525],\n \"98\": [0, 0.69444, 0, 0, 0.56111],\n \"99\": [0, 0.45833, 0, 0, 0.48889],\n \"100\": [0, 0.69444, 0, 0, 0.56111],\n \"101\": [0, 0.45833, 0, 0, 0.51111],\n \"102\": [0, 0.69444, 0.07639, 0, 0.33611],\n \"103\": [0.19444, 0.45833, 0.01528, 0, 0.55],\n \"104\": [0, 0.69444, 0, 0, 0.56111],\n \"105\": [0, 0.69444, 0, 0, 0.25556],\n \"106\": [0.19444, 0.69444, 0, 0, 0.28611],\n \"107\": [0, 0.69444, 0, 0, 0.53056],\n \"108\": [0, 0.69444, 0, 0, 0.25556],\n \"109\": [0, 0.45833, 0, 0, 0.86667],\n \"110\": [0, 0.45833, 0, 0, 0.56111],\n \"111\": [0, 0.45833, 0, 0, 0.55],\n \"112\": [0.19444, 0.45833, 0, 0, 0.56111],\n \"113\": [0.19444, 0.45833, 0, 0, 0.56111],\n \"114\": [0, 0.45833, 0.01528, 0, 0.37222],\n \"115\": [0, 0.45833, 0, 0, 0.42167],\n \"116\": [0, 0.58929, 0, 0, 0.40417],\n \"117\": [0, 0.45833, 0, 0, 0.56111],\n \"118\": [0, 0.45833, 0.01528, 0, 0.5],\n \"119\": [0, 0.45833, 0.01528, 0, 0.74445],\n \"120\": [0, 0.45833, 0, 0, 0.5],\n \"121\": [0.19444, 0.45833, 0.01528, 0, 0.5],\n \"122\": [0, 0.45833, 0, 0, 0.47639],\n \"126\": [0.35, 0.34444, 0, 0, 0.55],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.69444, 0, 0, 0.55],\n \"176\": [0, 0.69444, 0, 0, 0.73334],\n \"180\": [0, 0.69444, 0, 0, 0.55],\n \"184\": [0.17014, 0, 0, 0, 0.48889],\n \"305\": [0, 0.45833, 0, 0, 0.25556],\n \"567\": [0.19444, 0.45833, 0, 0, 0.28611],\n \"710\": [0, 0.69444, 0, 0, 0.55],\n \"711\": [0, 0.63542, 0, 0, 0.55],\n \"713\": [0, 0.63778, 0, 0, 0.55],\n \"728\": [0, 0.69444, 0, 0, 0.55],\n \"729\": [0, 0.69444, 0, 0, 0.30556],\n \"730\": [0, 0.69444, 0, 0, 0.73334],\n \"732\": [0, 0.69444, 0, 0, 0.55],\n \"733\": [0, 0.69444, 0, 0, 0.55],\n \"915\": [0, 0.69444, 0, 0, 0.58056],\n \"916\": [0, 0.69444, 0, 0, 0.91667],\n \"920\": [0, 0.69444, 0, 0, 0.85556],\n \"923\": [0, 0.69444, 0, 0, 0.67223],\n \"926\": [0, 0.69444, 0, 0, 0.73334],\n \"928\": [0, 0.69444, 0, 0, 0.79445],\n \"931\": [0, 0.69444, 0, 0, 0.79445],\n \"933\": [0, 0.69444, 0, 0, 0.85556],\n \"934\": [0, 0.69444, 0, 0, 0.79445],\n \"936\": [0, 0.69444, 0, 0, 0.85556],\n \"937\": [0, 0.69444, 0, 0, 0.79445],\n \"8211\": [0, 0.45833, 0.03056, 0, 0.55],\n \"8212\": [0, 0.45833, 0.03056, 0, 1.10001],\n \"8216\": [0, 0.69444, 0, 0, 0.30556],\n \"8217\": [0, 0.69444, 0, 0, 0.30556],\n \"8220\": [0, 0.69444, 0, 0, 0.55834],\n \"8221\": [0, 0.69444, 0, 0, 0.55834]\n },\n \"SansSerif-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.05733, 0, 0.31945],\n \"34\": [0, 0.69444, 0.00316, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0.05087, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0.11156, 0, 0.5],\n \"37\": [0.05556, 0.75, 0.03126, 0, 0.83334],\n \"38\": [0, 0.69444, 0.03058, 0, 0.75834],\n \"39\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"40\": [0.25, 0.75, 0.13164, 0, 0.38889],\n \"41\": [0.25, 0.75, 0.02536, 0, 0.38889],\n \"42\": [0, 0.75, 0.11775, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0.02536, 0, 0.77778],\n \"44\": [0.125, 0.08333, 0, 0, 0.27778],\n \"45\": [0, 0.44444, 0.01946, 0, 0.33333],\n \"46\": [0, 0.08333, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0.13164, 0, 0.5],\n \"48\": [0, 0.65556, 0.11156, 0, 0.5],\n \"49\": [0, 0.65556, 0.11156, 0, 0.5],\n \"50\": [0, 0.65556, 0.11156, 0, 0.5],\n \"51\": [0, 0.65556, 0.11156, 0, 0.5],\n \"52\": [0, 0.65556, 0.11156, 0, 0.5],\n \"53\": [0, 0.65556, 0.11156, 0, 0.5],\n \"54\": [0, 0.65556, 0.11156, 0, 0.5],\n \"55\": [0, 0.65556, 0.11156, 0, 0.5],\n \"56\": [0, 0.65556, 0.11156, 0, 0.5],\n \"57\": [0, 0.65556, 0.11156, 0, 0.5],\n \"58\": [0, 0.44444, 0.02502, 0, 0.27778],\n \"59\": [0.125, 0.44444, 0.02502, 0, 0.27778],\n \"61\": [-0.13, 0.37, 0.05087, 0, 0.77778],\n \"63\": [0, 0.69444, 0.11809, 0, 0.47222],\n \"64\": [0, 0.69444, 0.07555, 0, 0.66667],\n \"65\": [0, 0.69444, 0, 0, 0.66667],\n \"66\": [0, 0.69444, 0.08293, 0, 0.66667],\n \"67\": [0, 0.69444, 0.11983, 0, 0.63889],\n \"68\": [0, 0.69444, 0.07555, 0, 0.72223],\n \"69\": [0, 0.69444, 0.11983, 0, 0.59722],\n \"70\": [0, 0.69444, 0.13372, 0, 0.56945],\n \"71\": [0, 0.69444, 0.11983, 0, 0.66667],\n \"72\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"73\": [0, 0.69444, 0.13372, 0, 0.27778],\n \"74\": [0, 0.69444, 0.08094, 0, 0.47222],\n \"75\": [0, 0.69444, 0.11983, 0, 0.69445],\n \"76\": [0, 0.69444, 0, 0, 0.54167],\n \"77\": [0, 0.69444, 0.08094, 0, 0.875],\n \"78\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"79\": [0, 0.69444, 0.07555, 0, 0.73611],\n \"80\": [0, 0.69444, 0.08293, 0, 0.63889],\n \"81\": [0.125, 0.69444, 0.07555, 0, 0.73611],\n \"82\": [0, 0.69444, 0.08293, 0, 0.64584],\n \"83\": [0, 0.69444, 0.09205, 0, 0.55556],\n \"84\": [0, 0.69444, 0.13372, 0, 0.68056],\n \"85\": [0, 0.69444, 0.08094, 0, 0.6875],\n \"86\": [0, 0.69444, 0.1615, 0, 0.66667],\n \"87\": [0, 0.69444, 0.1615, 0, 0.94445],\n \"88\": [0, 0.69444, 0.13372, 0, 0.66667],\n \"89\": [0, 0.69444, 0.17261, 0, 0.66667],\n \"90\": [0, 0.69444, 0.11983, 0, 0.61111],\n \"91\": [0.25, 0.75, 0.15942, 0, 0.28889],\n \"93\": [0.25, 0.75, 0.08719, 0, 0.28889],\n \"94\": [0, 0.69444, 0.0799, 0, 0.5],\n \"95\": [0.35, 0.09444, 0.08616, 0, 0.5],\n \"97\": [0, 0.44444, 0.00981, 0, 0.48056],\n \"98\": [0, 0.69444, 0.03057, 0, 0.51667],\n \"99\": [0, 0.44444, 0.08336, 0, 0.44445],\n \"100\": [0, 0.69444, 0.09483, 0, 0.51667],\n \"101\": [0, 0.44444, 0.06778, 0, 0.44445],\n \"102\": [0, 0.69444, 0.21705, 0, 0.30556],\n \"103\": [0.19444, 0.44444, 0.10836, 0, 0.5],\n \"104\": [0, 0.69444, 0.01778, 0, 0.51667],\n \"105\": [0, 0.67937, 0.09718, 0, 0.23889],\n \"106\": [0.19444, 0.67937, 0.09162, 0, 0.26667],\n \"107\": [0, 0.69444, 0.08336, 0, 0.48889],\n \"108\": [0, 0.69444, 0.09483, 0, 0.23889],\n \"109\": [0, 0.44444, 0.01778, 0, 0.79445],\n \"110\": [0, 0.44444, 0.01778, 0, 0.51667],\n \"111\": [0, 0.44444, 0.06613, 0, 0.5],\n \"112\": [0.19444, 0.44444, 0.0389, 0, 0.51667],\n \"113\": [0.19444, 0.44444, 0.04169, 0, 0.51667],\n \"114\": [0, 0.44444, 0.10836, 0, 0.34167],\n \"115\": [0, 0.44444, 0.0778, 0, 0.38333],\n \"116\": [0, 0.57143, 0.07225, 0, 0.36111],\n \"117\": [0, 0.44444, 0.04169, 0, 0.51667],\n \"118\": [0, 0.44444, 0.10836, 0, 0.46111],\n \"119\": [0, 0.44444, 0.10836, 0, 0.68334],\n \"120\": [0, 0.44444, 0.09169, 0, 0.46111],\n \"121\": [0.19444, 0.44444, 0.10836, 0, 0.46111],\n \"122\": [0, 0.44444, 0.08752, 0, 0.43472],\n \"126\": [0.35, 0.32659, 0.08826, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.67937, 0.06385, 0, 0.5],\n \"176\": [0, 0.69444, 0, 0, 0.73752],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"305\": [0, 0.44444, 0.04169, 0, 0.23889],\n \"567\": [0.19444, 0.44444, 0.04169, 0, 0.26667],\n \"710\": [0, 0.69444, 0.0799, 0, 0.5],\n \"711\": [0, 0.63194, 0.08432, 0, 0.5],\n \"713\": [0, 0.60889, 0.08776, 0, 0.5],\n \"714\": [0, 0.69444, 0.09205, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0.09483, 0, 0.5],\n \"729\": [0, 0.67937, 0.07774, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.73752],\n \"732\": [0, 0.67659, 0.08826, 0, 0.5],\n \"733\": [0, 0.69444, 0.09205, 0, 0.5],\n \"915\": [0, 0.69444, 0.13372, 0, 0.54167],\n \"916\": [0, 0.69444, 0, 0, 0.83334],\n \"920\": [0, 0.69444, 0.07555, 0, 0.77778],\n \"923\": [0, 0.69444, 0, 0, 0.61111],\n \"926\": [0, 0.69444, 0.12816, 0, 0.66667],\n \"928\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"931\": [0, 0.69444, 0.11983, 0, 0.72222],\n \"933\": [0, 0.69444, 0.09031, 0, 0.77778],\n \"934\": [0, 0.69444, 0.04603, 0, 0.72222],\n \"936\": [0, 0.69444, 0.09031, 0, 0.77778],\n \"937\": [0, 0.69444, 0.08293, 0, 0.72222],\n \"8211\": [0, 0.44444, 0.08616, 0, 0.5],\n \"8212\": [0, 0.44444, 0.08616, 0, 1.0],\n \"8216\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"8217\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"8220\": [0, 0.69444, 0.14205, 0, 0.5],\n \"8221\": [0, 0.69444, 0.00316, 0, 0.5]\n },\n \"SansSerif-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.31945],\n \"34\": [0, 0.69444, 0, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0, 0, 0.5],\n \"37\": [0.05556, 0.75, 0, 0, 0.83334],\n \"38\": [0, 0.69444, 0, 0, 0.75834],\n \"39\": [0, 0.69444, 0, 0, 0.27778],\n \"40\": [0.25, 0.75, 0, 0, 0.38889],\n \"41\": [0.25, 0.75, 0, 0, 0.38889],\n \"42\": [0, 0.75, 0, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"44\": [0.125, 0.08333, 0, 0, 0.27778],\n \"45\": [0, 0.44444, 0, 0, 0.33333],\n \"46\": [0, 0.08333, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0, 0, 0.5],\n \"48\": [0, 0.65556, 0, 0, 0.5],\n \"49\": [0, 0.65556, 0, 0, 0.5],\n \"50\": [0, 0.65556, 0, 0, 0.5],\n \"51\": [0, 0.65556, 0, 0, 0.5],\n \"52\": [0, 0.65556, 0, 0, 0.5],\n \"53\": [0, 0.65556, 0, 0, 0.5],\n \"54\": [0, 0.65556, 0, 0, 0.5],\n \"55\": [0, 0.65556, 0, 0, 0.5],\n \"56\": [0, 0.65556, 0, 0, 0.5],\n \"57\": [0, 0.65556, 0, 0, 0.5],\n \"58\": [0, 0.44444, 0, 0, 0.27778],\n \"59\": [0.125, 0.44444, 0, 0, 0.27778],\n \"61\": [-0.13, 0.37, 0, 0, 0.77778],\n \"63\": [0, 0.69444, 0, 0, 0.47222],\n \"64\": [0, 0.69444, 0, 0, 0.66667],\n \"65\": [0, 0.69444, 0, 0, 0.66667],\n \"66\": [0, 0.69444, 0, 0, 0.66667],\n \"67\": [0, 0.69444, 0, 0, 0.63889],\n \"68\": [0, 0.69444, 0, 0, 0.72223],\n \"69\": [0, 0.69444, 0, 0, 0.59722],\n \"70\": [0, 0.69444, 0, 0, 0.56945],\n \"71\": [0, 0.69444, 0, 0, 0.66667],\n \"72\": [0, 0.69444, 0, 0, 0.70834],\n \"73\": [0, 0.69444, 0, 0, 0.27778],\n \"74\": [0, 0.69444, 0, 0, 0.47222],\n \"75\": [0, 0.69444, 0, 0, 0.69445],\n \"76\": [0, 0.69444, 0, 0, 0.54167],\n \"77\": [0, 0.69444, 0, 0, 0.875],\n \"78\": [0, 0.69444, 0, 0, 0.70834],\n \"79\": [0, 0.69444, 0, 0, 0.73611],\n \"80\": [0, 0.69444, 0, 0, 0.63889],\n \"81\": [0.125, 0.69444, 0, 0, 0.73611],\n \"82\": [0, 0.69444, 0, 0, 0.64584],\n \"83\": [0, 0.69444, 0, 0, 0.55556],\n \"84\": [0, 0.69444, 0, 0, 0.68056],\n \"85\": [0, 0.69444, 0, 0, 0.6875],\n \"86\": [0, 0.69444, 0.01389, 0, 0.66667],\n \"87\": [0, 0.69444, 0.01389, 0, 0.94445],\n \"88\": [0, 0.69444, 0, 0, 0.66667],\n \"89\": [0, 0.69444, 0.025, 0, 0.66667],\n \"90\": [0, 0.69444, 0, 0, 0.61111],\n \"91\": [0.25, 0.75, 0, 0, 0.28889],\n \"93\": [0.25, 0.75, 0, 0, 0.28889],\n \"94\": [0, 0.69444, 0, 0, 0.5],\n \"95\": [0.35, 0.09444, 0.02778, 0, 0.5],\n \"97\": [0, 0.44444, 0, 0, 0.48056],\n \"98\": [0, 0.69444, 0, 0, 0.51667],\n \"99\": [0, 0.44444, 0, 0, 0.44445],\n \"100\": [0, 0.69444, 0, 0, 0.51667],\n \"101\": [0, 0.44444, 0, 0, 0.44445],\n \"102\": [0, 0.69444, 0.06944, 0, 0.30556],\n \"103\": [0.19444, 0.44444, 0.01389, 0, 0.5],\n \"104\": [0, 0.69444, 0, 0, 0.51667],\n \"105\": [0, 0.67937, 0, 0, 0.23889],\n \"106\": [0.19444, 0.67937, 0, 0, 0.26667],\n \"107\": [0, 0.69444, 0, 0, 0.48889],\n \"108\": [0, 0.69444, 0, 0, 0.23889],\n \"109\": [0, 0.44444, 0, 0, 0.79445],\n \"110\": [0, 0.44444, 0, 0, 0.51667],\n \"111\": [0, 0.44444, 0, 0, 0.5],\n \"112\": [0.19444, 0.44444, 0, 0, 0.51667],\n \"113\": [0.19444, 0.44444, 0, 0, 0.51667],\n \"114\": [0, 0.44444, 0.01389, 0, 0.34167],\n \"115\": [0, 0.44444, 0, 0, 0.38333],\n \"116\": [0, 0.57143, 0, 0, 0.36111],\n \"117\": [0, 0.44444, 0, 0, 0.51667],\n \"118\": [0, 0.44444, 0.01389, 0, 0.46111],\n \"119\": [0, 0.44444, 0.01389, 0, 0.68334],\n \"120\": [0, 0.44444, 0, 0, 0.46111],\n \"121\": [0.19444, 0.44444, 0.01389, 0, 0.46111],\n \"122\": [0, 0.44444, 0, 0, 0.43472],\n \"126\": [0.35, 0.32659, 0, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.67937, 0, 0, 0.5],\n \"176\": [0, 0.69444, 0, 0, 0.66667],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"305\": [0, 0.44444, 0, 0, 0.23889],\n \"567\": [0.19444, 0.44444, 0, 0, 0.26667],\n \"710\": [0, 0.69444, 0, 0, 0.5],\n \"711\": [0, 0.63194, 0, 0, 0.5],\n \"713\": [0, 0.60889, 0, 0, 0.5],\n \"714\": [0, 0.69444, 0, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0, 0, 0.5],\n \"729\": [0, 0.67937, 0, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.66667],\n \"732\": [0, 0.67659, 0, 0, 0.5],\n \"733\": [0, 0.69444, 0, 0, 0.5],\n \"915\": [0, 0.69444, 0, 0, 0.54167],\n \"916\": [0, 0.69444, 0, 0, 0.83334],\n \"920\": [0, 0.69444, 0, 0, 0.77778],\n \"923\": [0, 0.69444, 0, 0, 0.61111],\n \"926\": [0, 0.69444, 0, 0, 0.66667],\n \"928\": [0, 0.69444, 0, 0, 0.70834],\n \"931\": [0, 0.69444, 0, 0, 0.72222],\n \"933\": [0, 0.69444, 0, 0, 0.77778],\n \"934\": [0, 0.69444, 0, 0, 0.72222],\n \"936\": [0, 0.69444, 0, 0, 0.77778],\n \"937\": [0, 0.69444, 0, 0, 0.72222],\n \"8211\": [0, 0.44444, 0.02778, 0, 0.5],\n \"8212\": [0, 0.44444, 0.02778, 0, 1.0],\n \"8216\": [0, 0.69444, 0, 0, 0.27778],\n \"8217\": [0, 0.69444, 0, 0, 0.27778],\n \"8220\": [0, 0.69444, 0, 0, 0.5],\n \"8221\": [0, 0.69444, 0, 0, 0.5]\n },\n \"Script-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.7, 0.22925, 0, 0.80253],\n \"66\": [0, 0.7, 0.04087, 0, 0.90757],\n \"67\": [0, 0.7, 0.1689, 0, 0.66619],\n \"68\": [0, 0.7, 0.09371, 0, 0.77443],\n \"69\": [0, 0.7, 0.18583, 0, 0.56162],\n \"70\": [0, 0.7, 0.13634, 0, 0.89544],\n \"71\": [0, 0.7, 0.17322, 0, 0.60961],\n \"72\": [0, 0.7, 0.29694, 0, 0.96919],\n \"73\": [0, 0.7, 0.19189, 0, 0.80907],\n \"74\": [0.27778, 0.7, 0.19189, 0, 1.05159],\n \"75\": [0, 0.7, 0.31259, 0, 0.91364],\n \"76\": [0, 0.7, 0.19189, 0, 0.87373],\n \"77\": [0, 0.7, 0.15981, 0, 1.08031],\n \"78\": [0, 0.7, 0.3525, 0, 0.9015],\n \"79\": [0, 0.7, 0.08078, 0, 0.73787],\n \"80\": [0, 0.7, 0.08078, 0, 1.01262],\n \"81\": [0, 0.7, 0.03305, 0, 0.88282],\n \"82\": [0, 0.7, 0.06259, 0, 0.85],\n \"83\": [0, 0.7, 0.19189, 0, 0.86767],\n \"84\": [0, 0.7, 0.29087, 0, 0.74697],\n \"85\": [0, 0.7, 0.25815, 0, 0.79996],\n \"86\": [0, 0.7, 0.27523, 0, 0.62204],\n \"87\": [0, 0.7, 0.27523, 0, 0.80532],\n \"88\": [0, 0.7, 0.26006, 0, 0.94445],\n \"89\": [0, 0.7, 0.2939, 0, 0.70961],\n \"90\": [0, 0.7, 0.24037, 0, 0.8212],\n \"160\": [0, 0, 0, 0, 0.25]\n },\n \"Size1-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.35001, 0.85, 0, 0, 0.45834],\n \"41\": [0.35001, 0.85, 0, 0, 0.45834],\n \"47\": [0.35001, 0.85, 0, 0, 0.57778],\n \"91\": [0.35001, 0.85, 0, 0, 0.41667],\n \"92\": [0.35001, 0.85, 0, 0, 0.57778],\n \"93\": [0.35001, 0.85, 0, 0, 0.41667],\n \"123\": [0.35001, 0.85, 0, 0, 0.58334],\n \"125\": [0.35001, 0.85, 0, 0, 0.58334],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.72222, 0, 0, 0.55556],\n \"732\": [0, 0.72222, 0, 0, 0.55556],\n \"770\": [0, 0.72222, 0, 0, 0.55556],\n \"771\": [0, 0.72222, 0, 0, 0.55556],\n \"8214\": [-0.00099, 0.601, 0, 0, 0.77778],\n \"8593\": [1e-05, 0.6, 0, 0, 0.66667],\n \"8595\": [1e-05, 0.6, 0, 0, 0.66667],\n \"8657\": [1e-05, 0.6, 0, 0, 0.77778],\n \"8659\": [1e-05, 0.6, 0, 0, 0.77778],\n \"8719\": [0.25001, 0.75, 0, 0, 0.94445],\n \"8720\": [0.25001, 0.75, 0, 0, 0.94445],\n \"8721\": [0.25001, 0.75, 0, 0, 1.05556],\n \"8730\": [0.35001, 0.85, 0, 0, 1.0],\n \"8739\": [-0.00599, 0.606, 0, 0, 0.33333],\n \"8741\": [-0.00599, 0.606, 0, 0, 0.55556],\n \"8747\": [0.30612, 0.805, 0.19445, 0, 0.47222],\n \"8748\": [0.306, 0.805, 0.19445, 0, 0.47222],\n \"8749\": [0.306, 0.805, 0.19445, 0, 0.47222],\n \"8750\": [0.30612, 0.805, 0.19445, 0, 0.47222],\n \"8896\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8897\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8898\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8899\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8968\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8969\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8970\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8971\": [0.35001, 0.85, 0, 0, 0.47222],\n \"9168\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"10216\": [0.35001, 0.85, 0, 0, 0.47222],\n \"10217\": [0.35001, 0.85, 0, 0, 0.47222],\n \"10752\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10753\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10754\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10756\": [0.25001, 0.75, 0, 0, 0.83334],\n \"10758\": [0.25001, 0.75, 0, 0, 0.83334]\n },\n \"Size2-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.65002, 1.15, 0, 0, 0.59722],\n \"41\": [0.65002, 1.15, 0, 0, 0.59722],\n \"47\": [0.65002, 1.15, 0, 0, 0.81111],\n \"91\": [0.65002, 1.15, 0, 0, 0.47222],\n \"92\": [0.65002, 1.15, 0, 0, 0.81111],\n \"93\": [0.65002, 1.15, 0, 0, 0.47222],\n \"123\": [0.65002, 1.15, 0, 0, 0.66667],\n \"125\": [0.65002, 1.15, 0, 0, 0.66667],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.75, 0, 0, 1.0],\n \"732\": [0, 0.75, 0, 0, 1.0],\n \"770\": [0, 0.75, 0, 0, 1.0],\n \"771\": [0, 0.75, 0, 0, 1.0],\n \"8719\": [0.55001, 1.05, 0, 0, 1.27778],\n \"8720\": [0.55001, 1.05, 0, 0, 1.27778],\n \"8721\": [0.55001, 1.05, 0, 0, 1.44445],\n \"8730\": [0.65002, 1.15, 0, 0, 1.0],\n \"8747\": [0.86225, 1.36, 0.44445, 0, 0.55556],\n \"8748\": [0.862, 1.36, 0.44445, 0, 0.55556],\n \"8749\": [0.862, 1.36, 0.44445, 0, 0.55556],\n \"8750\": [0.86225, 1.36, 0.44445, 0, 0.55556],\n \"8896\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8897\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8898\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8899\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8968\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8969\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8970\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8971\": [0.65002, 1.15, 0, 0, 0.52778],\n \"10216\": [0.65002, 1.15, 0, 0, 0.61111],\n \"10217\": [0.65002, 1.15, 0, 0, 0.61111],\n \"10752\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10753\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10754\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10756\": [0.55001, 1.05, 0, 0, 1.11111],\n \"10758\": [0.55001, 1.05, 0, 0, 1.11111]\n },\n \"Size3-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.95003, 1.45, 0, 0, 0.73611],\n \"41\": [0.95003, 1.45, 0, 0, 0.73611],\n \"47\": [0.95003, 1.45, 0, 0, 1.04445],\n \"91\": [0.95003, 1.45, 0, 0, 0.52778],\n \"92\": [0.95003, 1.45, 0, 0, 1.04445],\n \"93\": [0.95003, 1.45, 0, 0, 0.52778],\n \"123\": [0.95003, 1.45, 0, 0, 0.75],\n \"125\": [0.95003, 1.45, 0, 0, 0.75],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.75, 0, 0, 1.44445],\n \"732\": [0, 0.75, 0, 0, 1.44445],\n \"770\": [0, 0.75, 0, 0, 1.44445],\n \"771\": [0, 0.75, 0, 0, 1.44445],\n \"8730\": [0.95003, 1.45, 0, 0, 1.0],\n \"8968\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8969\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8970\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8971\": [0.95003, 1.45, 0, 0, 0.58334],\n \"10216\": [0.95003, 1.45, 0, 0, 0.75],\n \"10217\": [0.95003, 1.45, 0, 0, 0.75]\n },\n \"Size4-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [1.25003, 1.75, 0, 0, 0.79167],\n \"41\": [1.25003, 1.75, 0, 0, 0.79167],\n \"47\": [1.25003, 1.75, 0, 0, 1.27778],\n \"91\": [1.25003, 1.75, 0, 0, 0.58334],\n \"92\": [1.25003, 1.75, 0, 0, 1.27778],\n \"93\": [1.25003, 1.75, 0, 0, 0.58334],\n \"123\": [1.25003, 1.75, 0, 0, 0.80556],\n \"125\": [1.25003, 1.75, 0, 0, 0.80556],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.825, 0, 0, 1.8889],\n \"732\": [0, 0.825, 0, 0, 1.8889],\n \"770\": [0, 0.825, 0, 0, 1.8889],\n \"771\": [0, 0.825, 0, 0, 1.8889],\n \"8730\": [1.25003, 1.75, 0, 0, 1.0],\n \"8968\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8969\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8970\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8971\": [1.25003, 1.75, 0, 0, 0.63889],\n \"9115\": [0.64502, 1.155, 0, 0, 0.875],\n \"9116\": [1e-05, 0.6, 0, 0, 0.875],\n \"9117\": [0.64502, 1.155, 0, 0, 0.875],\n \"9118\": [0.64502, 1.155, 0, 0, 0.875],\n \"9119\": [1e-05, 0.6, 0, 0, 0.875],\n \"9120\": [0.64502, 1.155, 0, 0, 0.875],\n \"9121\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9122\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"9123\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9124\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9125\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"9126\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9127\": [1e-05, 0.9, 0, 0, 0.88889],\n \"9128\": [0.65002, 1.15, 0, 0, 0.88889],\n \"9129\": [0.90001, 0, 0, 0, 0.88889],\n \"9130\": [0, 0.3, 0, 0, 0.88889],\n \"9131\": [1e-05, 0.9, 0, 0, 0.88889],\n \"9132\": [0.65002, 1.15, 0, 0, 0.88889],\n \"9133\": [0.90001, 0, 0, 0, 0.88889],\n \"9143\": [0.88502, 0.915, 0, 0, 1.05556],\n \"10216\": [1.25003, 1.75, 0, 0, 0.80556],\n \"10217\": [1.25003, 1.75, 0, 0, 0.80556],\n \"57344\": [-0.00499, 0.605, 0, 0, 1.05556],\n \"57345\": [-0.00499, 0.605, 0, 0, 1.05556],\n \"57680\": [0, 0.12, 0, 0, 0.45],\n \"57681\": [0, 0.12, 0, 0, 0.45],\n \"57682\": [0, 0.12, 0, 0, 0.45],\n \"57683\": [0, 0.12, 0, 0, 0.45]\n },\n \"Typewriter-Regular\": {\n \"32\": [0, 0, 0, 0, 0.525],\n \"33\": [0, 0.61111, 0, 0, 0.525],\n \"34\": [0, 0.61111, 0, 0, 0.525],\n \"35\": [0, 0.61111, 0, 0, 0.525],\n \"36\": [0.08333, 0.69444, 0, 0, 0.525],\n \"37\": [0.08333, 0.69444, 0, 0, 0.525],\n \"38\": [0, 0.61111, 0, 0, 0.525],\n \"39\": [0, 0.61111, 0, 0, 0.525],\n \"40\": [0.08333, 0.69444, 0, 0, 0.525],\n \"41\": [0.08333, 0.69444, 0, 0, 0.525],\n \"42\": [0, 0.52083, 0, 0, 0.525],\n \"43\": [-0.08056, 0.53055, 0, 0, 0.525],\n \"44\": [0.13889, 0.125, 0, 0, 0.525],\n \"45\": [-0.08056, 0.53055, 0, 0, 0.525],\n \"46\": [0, 0.125, 0, 0, 0.525],\n \"47\": [0.08333, 0.69444, 0, 0, 0.525],\n \"48\": [0, 0.61111, 0, 0, 0.525],\n \"49\": [0, 0.61111, 0, 0, 0.525],\n \"50\": [0, 0.61111, 0, 0, 0.525],\n \"51\": [0, 0.61111, 0, 0, 0.525],\n \"52\": [0, 0.61111, 0, 0, 0.525],\n \"53\": [0, 0.61111, 0, 0, 0.525],\n \"54\": [0, 0.61111, 0, 0, 0.525],\n \"55\": [0, 0.61111, 0, 0, 0.525],\n \"56\": [0, 0.61111, 0, 0, 0.525],\n \"57\": [0, 0.61111, 0, 0, 0.525],\n \"58\": [0, 0.43056, 0, 0, 0.525],\n \"59\": [0.13889, 0.43056, 0, 0, 0.525],\n \"60\": [-0.05556, 0.55556, 0, 0, 0.525],\n \"61\": [-0.19549, 0.41562, 0, 0, 0.525],\n \"62\": [-0.05556, 0.55556, 0, 0, 0.525],\n \"63\": [0, 0.61111, 0, 0, 0.525],\n \"64\": [0, 0.61111, 0, 0, 0.525],\n \"65\": [0, 0.61111, 0, 0, 0.525],\n \"66\": [0, 0.61111, 0, 0, 0.525],\n \"67\": [0, 0.61111, 0, 0, 0.525],\n \"68\": [0, 0.61111, 0, 0, 0.525],\n \"69\": [0, 0.61111, 0, 0, 0.525],\n \"70\": [0, 0.61111, 0, 0, 0.525],\n \"71\": [0, 0.61111, 0, 0, 0.525],\n \"72\": [0, 0.61111, 0, 0, 0.525],\n \"73\": [0, 0.61111, 0, 0, 0.525],\n \"74\": [0, 0.61111, 0, 0, 0.525],\n \"75\": [0, 0.61111, 0, 0, 0.525],\n \"76\": [0, 0.61111, 0, 0, 0.525],\n \"77\": [0, 0.61111, 0, 0, 0.525],\n \"78\": [0, 0.61111, 0, 0, 0.525],\n \"79\": [0, 0.61111, 0, 0, 0.525],\n \"80\": [0, 0.61111, 0, 0, 0.525],\n \"81\": [0.13889, 0.61111, 0, 0, 0.525],\n \"82\": [0, 0.61111, 0, 0, 0.525],\n \"83\": [0, 0.61111, 0, 0, 0.525],\n \"84\": [0, 0.61111, 0, 0, 0.525],\n \"85\": [0, 0.61111, 0, 0, 0.525],\n \"86\": [0, 0.61111, 0, 0, 0.525],\n \"87\": [0, 0.61111, 0, 0, 0.525],\n \"88\": [0, 0.61111, 0, 0, 0.525],\n \"89\": [0, 0.61111, 0, 0, 0.525],\n \"90\": [0, 0.61111, 0, 0, 0.525],\n \"91\": [0.08333, 0.69444, 0, 0, 0.525],\n \"92\": [0.08333, 0.69444, 0, 0, 0.525],\n \"93\": [0.08333, 0.69444, 0, 0, 0.525],\n \"94\": [0, 0.61111, 0, 0, 0.525],\n \"95\": [0.09514, 0, 0, 0, 0.525],\n \"96\": [0, 0.61111, 0, 0, 0.525],\n \"97\": [0, 0.43056, 0, 0, 0.525],\n \"98\": [0, 0.61111, 0, 0, 0.525],\n \"99\": [0, 0.43056, 0, 0, 0.525],\n \"100\": [0, 0.61111, 0, 0, 0.525],\n \"101\": [0, 0.43056, 0, 0, 0.525],\n \"102\": [0, 0.61111, 0, 0, 0.525],\n \"103\": [0.22222, 0.43056, 0, 0, 0.525],\n \"104\": [0, 0.61111, 0, 0, 0.525],\n \"105\": [0, 0.61111, 0, 0, 0.525],\n \"106\": [0.22222, 0.61111, 0, 0, 0.525],\n \"107\": [0, 0.61111, 0, 0, 0.525],\n \"108\": [0, 0.61111, 0, 0, 0.525],\n \"109\": [0, 0.43056, 0, 0, 0.525],\n \"110\": [0, 0.43056, 0, 0, 0.525],\n \"111\": [0, 0.43056, 0, 0, 0.525],\n \"112\": [0.22222, 0.43056, 0, 0, 0.525],\n \"113\": [0.22222, 0.43056, 0, 0, 0.525],\n \"114\": [0, 0.43056, 0, 0, 0.525],\n \"115\": [0, 0.43056, 0, 0, 0.525],\n \"116\": [0, 0.55358, 0, 0, 0.525],\n \"117\": [0, 0.43056, 0, 0, 0.525],\n \"118\": [0, 0.43056, 0, 0, 0.525],\n \"119\": [0, 0.43056, 0, 0, 0.525],\n \"120\": [0, 0.43056, 0, 0, 0.525],\n \"121\": [0.22222, 0.43056, 0, 0, 0.525],\n \"122\": [0, 0.43056, 0, 0, 0.525],\n \"123\": [0.08333, 0.69444, 0, 0, 0.525],\n \"124\": [0.08333, 0.69444, 0, 0, 0.525],\n \"125\": [0.08333, 0.69444, 0, 0, 0.525],\n \"126\": [0, 0.61111, 0, 0, 0.525],\n \"127\": [0, 0.61111, 0, 0, 0.525],\n \"160\": [0, 0, 0, 0, 0.525],\n \"176\": [0, 0.61111, 0, 0, 0.525],\n \"184\": [0.19445, 0, 0, 0, 0.525],\n \"305\": [0, 0.43056, 0, 0, 0.525],\n \"567\": [0.22222, 0.43056, 0, 0, 0.525],\n \"711\": [0, 0.56597, 0, 0, 0.525],\n \"713\": [0, 0.56555, 0, 0, 0.525],\n \"714\": [0, 0.61111, 0, 0, 0.525],\n \"715\": [0, 0.61111, 0, 0, 0.525],\n \"728\": [0, 0.61111, 0, 0, 0.525],\n \"730\": [0, 0.61111, 0, 0, 0.525],\n \"770\": [0, 0.61111, 0, 0, 0.525],\n \"771\": [0, 0.61111, 0, 0, 0.525],\n \"776\": [0, 0.61111, 0, 0, 0.525],\n \"915\": [0, 0.61111, 0, 0, 0.525],\n \"916\": [0, 0.61111, 0, 0, 0.525],\n \"920\": [0, 0.61111, 0, 0, 0.525],\n \"923\": [0, 0.61111, 0, 0, 0.525],\n \"926\": [0, 0.61111, 0, 0, 0.525],\n \"928\": [0, 0.61111, 0, 0, 0.525],\n \"931\": [0, 0.61111, 0, 0, 0.525],\n \"933\": [0, 0.61111, 0, 0, 0.525],\n \"934\": [0, 0.61111, 0, 0, 0.525],\n \"936\": [0, 0.61111, 0, 0, 0.525],\n \"937\": [0, 0.61111, 0, 0, 0.525],\n \"8216\": [0, 0.61111, 0, 0, 0.525],\n \"8217\": [0, 0.61111, 0, 0, 0.525],\n \"8242\": [0, 0.61111, 0, 0, 0.525],\n \"9251\": [0.11111, 0.21944, 0, 0, 0.525]\n }\n};\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n// In TeX, there are actually three sets of dimensions, one for each of\n// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4:\n// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are\n// provided in the arrays below, in that order.\n//\n// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respectively.\n// This was determined by running the following script:\n//\n// latex -interaction=nonstopmode \\\n// '\\documentclass{article}\\usepackage{amsmath}\\begin{document}' \\\n// '$a$ \\expandafter\\show\\the\\textfont2' \\\n// '\\expandafter\\show\\the\\scriptfont2' \\\n// '\\expandafter\\show\\the\\scriptscriptfont2' \\\n// '\\stop'\n//\n// The metrics themselves were retrieved using the following commands:\n//\n// tftopl cmsy10\n// tftopl cmsy7\n// tftopl cmsy5\n//\n// The output of each of these commands is quite lengthy. The only part we\n// care about is the FONTDIMEN section. Each value is measured in EMs.\nvar sigmasAndXis = {\n slant: [0.250, 0.250, 0.250],\n // sigma1\n space: [0.000, 0.000, 0.000],\n // sigma2\n stretch: [0.000, 0.000, 0.000],\n // sigma3\n shrink: [0.000, 0.000, 0.000],\n // sigma4\n xHeight: [0.431, 0.431, 0.431],\n // sigma5\n quad: [1.000, 1.171, 1.472],\n // sigma6\n extraSpace: [0.000, 0.000, 0.000],\n // sigma7\n num1: [0.677, 0.732, 0.925],\n // sigma8\n num2: [0.394, 0.384, 0.387],\n // sigma9\n num3: [0.444, 0.471, 0.504],\n // sigma10\n denom1: [0.686, 0.752, 1.025],\n // sigma11\n denom2: [0.345, 0.344, 0.532],\n // sigma12\n sup1: [0.413, 0.503, 0.504],\n // sigma13\n sup2: [0.363, 0.431, 0.404],\n // sigma14\n sup3: [0.289, 0.286, 0.294],\n // sigma15\n sub1: [0.150, 0.143, 0.200],\n // sigma16\n sub2: [0.247, 0.286, 0.400],\n // sigma17\n supDrop: [0.386, 0.353, 0.494],\n // sigma18\n subDrop: [0.050, 0.071, 0.100],\n // sigma19\n delim1: [2.390, 1.700, 1.980],\n // sigma20\n delim2: [1.010, 1.157, 1.420],\n // sigma21\n axisHeight: [0.250, 0.250, 0.250],\n // sigma22\n // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;\n // they correspond to the font parameters of the extension fonts (family 3).\n // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to\n // match cmex7, we'd use cmex7.tfm values for script and scriptscript\n // values.\n defaultRuleThickness: [0.04, 0.049, 0.049],\n // xi8; cmex7: 0.049\n bigOpSpacing1: [0.111, 0.111, 0.111],\n // xi9\n bigOpSpacing2: [0.166, 0.166, 0.166],\n // xi10\n bigOpSpacing3: [0.2, 0.2, 0.2],\n // xi11\n bigOpSpacing4: [0.6, 0.611, 0.611],\n // xi12; cmex7: 0.611\n bigOpSpacing5: [0.1, 0.143, 0.143],\n // xi13; cmex7: 0.143\n // The \\sqrt rule width is taken from the height of the surd character.\n // Since we use the same font at all sizes, this thickness doesn't scale.\n sqrtRuleThickness: [0.04, 0.04, 0.04],\n // This value determines how large a pt is, for metrics which are defined\n // in terms of pts.\n // This value is also used in katex.scss; if you change it make sure the\n // values match.\n ptPerEm: [10.0, 10.0, 10.0],\n // The space between adjacent `|` columns in an array definition. From\n // `\\showthe\\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.\n doubleRuleSep: [0.2, 0.2, 0.2],\n // The width of separator lines in {array} environments. From\n // `\\showthe\\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm.\n arrayRuleWidth: [0.04, 0.04, 0.04],\n // Two values from LaTeX source2e:\n fboxsep: [0.3, 0.3, 0.3],\n // 3 pt / ptPerEm\n fboxrule: [0.04, 0.04, 0.04] // 0.4 pt / ptPerEm\n};\n// These are very rough approximations. We default to Times New Roman which\n// should have Latin-1 and Cyrillic characters, but may not depending on the\n// operating system. The metrics do not account for extra height from the\n// accents. In the case of Cyrillic characters which have both ascenders and\n// descenders we prefer approximations with ascenders, primarily to prevent\n// the fraction bar or root line from intersecting the glyph.\n// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.\nvar extraCharacterMap = {\n // Latin-1\n '\u00C5': 'A',\n '\u00D0': 'D',\n '\u00DE': 'o',\n '\u00E5': 'a',\n '\u00F0': 'd',\n '\u00FE': 'o',\n // Cyrillic\n '\u0410': 'A',\n '\u0411': 'B',\n '\u0412': 'B',\n '\u0413': 'F',\n '\u0414': 'A',\n '\u0415': 'E',\n '\u0416': 'K',\n '\u0417': '3',\n '\u0418': 'N',\n '\u0419': 'N',\n '\u041A': 'K',\n '\u041B': 'N',\n '\u041C': 'M',\n '\u041D': 'H',\n '\u041E': 'O',\n '\u041F': 'N',\n '\u0420': 'P',\n '\u0421': 'C',\n '\u0422': 'T',\n '\u0423': 'y',\n '\u0424': 'O',\n '\u0425': 'X',\n '\u0426': 'U',\n '\u0427': 'h',\n '\u0428': 'W',\n '\u0429': 'W',\n '\u042A': 'B',\n '\u042B': 'X',\n '\u042C': 'B',\n '\u042D': '3',\n '\u042E': 'X',\n '\u042F': 'R',\n '\u0430': 'a',\n '\u0431': 'b',\n '\u0432': 'a',\n '\u0433': 'r',\n '\u0434': 'y',\n '\u0435': 'e',\n '\u0436': 'm',\n '\u0437': 'e',\n '\u0438': 'n',\n '\u0439': 'n',\n '\u043A': 'n',\n '\u043B': 'n',\n '\u043C': 'm',\n '\u043D': 'n',\n '\u043E': 'o',\n '\u043F': 'n',\n '\u0440': 'p',\n '\u0441': 'c',\n '\u0442': 'o',\n '\u0443': 'y',\n '\u0444': 'b',\n '\u0445': 'x',\n '\u0446': 'n',\n '\u0447': 'n',\n '\u0448': 'w',\n '\u0449': 'w',\n '\u044A': 'a',\n '\u044B': 'm',\n '\u044C': 'a',\n '\u044D': 'e',\n '\u044E': 'm',\n '\u044F': 'r'\n};\n/**\n * This function adds new font metrics to default metricMap\n * It can also override existing metrics\n */\nfunction setFontMetrics(fontName, metrics) {\n fontMetricsData[fontName] = metrics;\n}\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a font.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\nfunction getCharacterMetrics(character, font, mode) {\n if (!fontMetricsData[font]) {\n throw new Error(\"Font metrics not found for font: \" + font + \".\");\n }\n var ch = character.charCodeAt(0);\n var metrics = fontMetricsData[font][ch];\n if (!metrics && character[0] in extraCharacterMap) {\n ch = extraCharacterMap[character[0]].charCodeAt(0);\n metrics = fontMetricsData[font][ch];\n }\n if (!metrics && mode === 'text') {\n // We don't typically have font metrics for Asian scripts.\n // But since we support them in text mode, we need to return\n // some sort of metrics.\n // So if the character is in a script we support but we\n // don't have metrics for it, just use the metrics for\n // the Latin capital letter M. This is close enough because\n // we (currently) only care about the height of the glyph\n // not its width.\n if (supportedCodepoint(ch)) {\n metrics = fontMetricsData[font][77]; // 77 is the charcode for 'M'\n }\n }\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4]\n };\n }\n}\nvar fontMetricsBySizeIndex = {};\n/**\n * Get the font metrics for a given size.\n */\nfunction getGlobalMetrics(size) {\n var sizeIndex;\n if (size >= 5) {\n sizeIndex = 0;\n } else if (size >= 3) {\n sizeIndex = 1;\n } else {\n sizeIndex = 2;\n }\n if (!fontMetricsBySizeIndex[sizeIndex]) {\n var metrics = fontMetricsBySizeIndex[sizeIndex] = {\n cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18\n };\n for (var key in sigmasAndXis) {\n if (sigmasAndXis.hasOwnProperty(key)) {\n metrics[key] = sigmasAndXis[key][sizeIndex];\n }\n }\n }\n return fontMetricsBySizeIndex[sizeIndex];\n}\n\n/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n// Some of these have a \"-token\" suffix since these are also used as `ParseNode`\n// types for raw text tokens, and we want to avoid conflicts with higher-level\n// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by\n// looking up the `symbols` map.\nvar ATOMS = {\n \"bin\": 1,\n \"close\": 1,\n \"inner\": 1,\n \"open\": 1,\n \"punct\": 1,\n \"rel\": 1\n};\nvar NON_ATOMS = {\n \"accent-token\": 1,\n \"mathord\": 1,\n \"op-token\": 1,\n \"spacing\": 1,\n \"textord\": 1\n};\nvar symbols = {\n \"math\": {},\n \"text\": {}\n};\n/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */\nfunction defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) {\n symbols[mode][name] = {\n font,\n group,\n replace\n };\n if (acceptUnicodeChar && replace) {\n symbols[mode][replace] = symbols[mode][name];\n }\n}\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n// modes:\nvar math = \"math\";\nvar text = \"text\";\n// fonts:\nvar main = \"main\";\nvar ams = \"ams\";\n// groups:\nvar accent = \"accent-token\";\nvar bin = \"bin\";\nvar close = \"close\";\nvar inner = \"inner\";\nvar mathord = \"mathord\";\nvar op = \"op-token\";\nvar open = \"open\";\nvar punct = \"punct\";\nvar rel = \"rel\";\nvar spacing = \"spacing\";\nvar textord = \"textord\";\n// Now comes the symbol table\n// Relation Symbols\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\", true);\ndefineSymbol(math, main, rel, \"\\u227a\", \"\\\\prec\", true);\ndefineSymbol(math, main, rel, \"\\u227b\", \"\\\\succ\", true);\ndefineSymbol(math, main, rel, \"\\u223c\", \"\\\\sim\", true);\ndefineSymbol(math, main, rel, \"\\u22a5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2aaf\", \"\\\\preceq\", true);\ndefineSymbol(math, main, rel, \"\\u2ab0\", \"\\\\succeq\", true);\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\", true);\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\", true);\ndefineSymbol(math, main, rel, \"\\u226a\", \"\\\\ll\", true);\ndefineSymbol(math, main, rel, \"\\u226b\", \"\\\\gg\", true);\ndefineSymbol(math, main, rel, \"\\u224d\", \"\\\\asymp\", true);\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\bowtie\", true);\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\", true);\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\", true);\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\", true);\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\ni\", true);\ndefineSymbol(math, main, rel, \"\\u221d\", \"\\\\propto\", true);\ndefineSymbol(math, main, rel, \"\\u22a2\", \"\\\\vdash\", true);\ndefineSymbol(math, main, rel, \"\\u22a3\", \"\\\\dashv\", true);\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\owns\");\n// Punctuation\ndefineSymbol(math, main, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\\\cdotp\");\n// The KaTeX fonts do not contain U+00B7. Use the centered dot glyph at U+22C5\n// in both modes, but keep math-mode punctuation spacing only in math mode.\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\u00b7\");\ndefineSymbol(text, main, textord, \"\\u22c5\", \"\\u00b7\");\n// Misc Symbols\ndefineSymbol(math, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(text, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(text, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\", true);\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\", true);\ndefineSymbol(math, main, textord, \"\\u210f\", \"\\\\hbar\", true);\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\", true);\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\", true);\ndefineSymbol(math, main, textord, \"\\u266d\", \"\\\\flat\", true);\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\", true);\ndefineSymbol(math, main, textord, \"\\u266e\", \"\\\\natural\", true);\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\", true);\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\", true);\ndefineSymbol(math, main, textord, \"\\u266f\", \"\\\\sharp\", true);\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\", true);\ndefineSymbol(math, main, textord, \"\\u211c\", \"\\\\Re\", true);\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\", true);\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\", true);\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\", true);\ndefineSymbol(math, main, textord, \"\\u00a7\", \"\\\\S\", true);\ndefineSymbol(text, main, textord, \"\\u00a7\", \"\\\\S\");\ndefineSymbol(math, main, textord, \"\\u00b6\", \"\\\\P\", true);\ndefineSymbol(text, main, textord, \"\\u00b6\", \"\\\\P\");\n// Math and Text\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\textdagger\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, main, textord, \"\\u2021\", \"\\\\textdaggerdbl\");\n// Large Delimiters\ndefineSymbol(math, main, close, \"\\u23b1\", \"\\\\rmoustache\", true);\ndefineSymbol(math, main, open, \"\\u23b0\", \"\\\\lmoustache\", true);\ndefineSymbol(math, main, close, \"\\u27ef\", \"\\\\rgroup\", true);\ndefineSymbol(math, main, open, \"\\u27ee\", \"\\\\lgroup\", true);\n// Binary Operators\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\", true);\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\", true);\ndefineSymbol(math, main, bin, \"\\u228e\", \"\\\\uplus\", true);\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\", true);\ndefineSymbol(math, main, bin, \"\\u25ef\", \"\\\\bigcirc\", true);\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\", true);\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\", true);\ndefineSymbol(math, main, bin, \"\\u2a3f\", \"\\\\amalg\");\ndefineSymbol(math, main, bin, \"\\u0026\", \"\\\\And\"); // from amsmath\n// Arrow Symbols\ndefineSymbol(math, main, rel, \"\\u27f5\", \"\\\\longleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d0\", \"\\\\Leftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f8\", \"\\\\Longleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f6\", \"\\\\longrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d2\", \"\\\\Rightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f9\", \"\\\\Longrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f7\", \"\\\\longleftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d4\", \"\\\\Leftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21a6\", \"\\\\mapsto\", true);\ndefineSymbol(math, main, rel, \"\\u27fc\", \"\\\\longmapsto\", true);\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\", true);\ndefineSymbol(math, main, rel, \"\\u21a9\", \"\\\\hookleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21aa\", \"\\\\hookrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\", true);\ndefineSymbol(math, main, rel, \"\\u21bc\", \"\\\\leftharpoonup\", true);\ndefineSymbol(math, main, rel, \"\\u21c0\", \"\\\\rightharpoonup\", true);\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21bd\", \"\\\\leftharpoondown\", true);\ndefineSymbol(math, main, rel, \"\\u21c1\", \"\\\\rightharpoondown\", true);\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21cc\", \"\\\\rightleftharpoons\", true);\n// AMS Negated Binary Relations\ndefineSymbol(math, ams, rel, \"\\u226e\", \"\\\\nless\", true);\n// Symbol names preceded by \"@\" each have a corresponding macro.\ndefineSymbol(math, ams, rel, \"\\ue010\", \"\\\\@nleqslant\");\ndefineSymbol(math, ams, rel, \"\\ue011\", \"\\\\@nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2a87\", \"\\\\lneq\", true);\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue00c\", \"\\\\@lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e6\", \"\\\\lnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a89\", \"\\\\lnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\", true);\n// unicode-math maps \\u22e0 to \\npreccurlyeq. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u22e0\", \"\\\\npreceq\", true);\ndefineSymbol(math, ams, rel, \"\\u22e8\", \"\\\\precnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab9\", \"\\\\precnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\", true);\ndefineSymbol(math, ams, rel, \"\\ue006\", \"\\\\@nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\", true);\ndefineSymbol(math, ams, rel, \"\\u22ac\", \"\\\\nvdash\", true);\ndefineSymbol(math, ams, rel, \"\\u22ad\", \"\\\\nvDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\", true);\ndefineSymbol(math, ams, rel, \"\\u228a\", \"\\\\subsetneq\", true);\ndefineSymbol(math, ams, rel, \"\\ue01a\", \"\\\\@varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acb\", \"\\\\subsetneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue017\", \"\\\\@varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226f\", \"\\\\ngtr\", true);\ndefineSymbol(math, ams, rel, \"\\ue00f\", \"\\\\@ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\ue00e\", \"\\\\@ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2a88\", \"\\\\gneq\", true);\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue00d\", \"\\\\@gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e7\", \"\\\\gnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8a\", \"\\\\gnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\", true);\n// unicode-math maps \\u22e1 to \\nsucccurlyeq. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u22e1\", \"\\\\nsucceq\", true);\ndefineSymbol(math, ams, rel, \"\\u22e9\", \"\\\\succnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2aba\", \"\\\\succnapprox\", true);\n// unicode-math maps \\u2246 to \\simneqq. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\", true);\ndefineSymbol(math, ams, rel, \"\\ue007\", \"\\\\@nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\", true);\ndefineSymbol(math, ams, rel, \"\\u22af\", \"\\\\nVDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\", true);\ndefineSymbol(math, ams, rel, \"\\ue018\", \"\\\\@nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228b\", \"\\\\supsetneq\", true);\ndefineSymbol(math, ams, rel, \"\\ue01b\", \"\\\\@varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acc\", \"\\\\supsetneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue019\", \"\\\\@varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22ae\", \"\\\\nVdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab5\", \"\\\\precneqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab6\", \"\\\\succneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue016\", \"\\\\@nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22b5\", \"\\\\unrhd\");\n// AMS Negated Arrows\ndefineSymbol(math, ams, rel, \"\\u219a\", \"\\\\nleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u219b\", \"\\\\nrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21cd\", \"\\\\nLeftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21cf\", \"\\\\nRightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21ae\", \"\\\\nleftrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\", true);\n// AMS Misc\ndefineSymbol(math, ams, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(text, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\", true);\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\", true);\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\", true);\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\", true);\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\", true);\n// unicode-math maps U+F0 to \\matheth. We map to AMS function \\eth\ndefineSymbol(math, ams, textord, \"\\u00f0\", \"\\\\eth\", true);\ndefineSymbol(text, main, textord, \"\\u00f0\", \"\\u00f0\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\Diamond\");\n// unicode-math maps U+A5 to \\mathyen. We map to AMS function \\yen\ndefineSymbol(math, ams, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(text, ams, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\", true);\ndefineSymbol(text, ams, textord, \"\\u2713\", \"\\\\checkmark\");\n// AMS Hebrew\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\", true);\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\", true);\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\", true);\n// AMS Greek\ndefineSymbol(math, ams, textord, \"\\u03dd\", \"\\\\digamma\", true);\ndefineSymbol(math, ams, textord, \"\\u03f0\", \"\\\\varkappa\");\n// AMS Delimiters\ndefineSymbol(math, ams, open, \"\\u250c\", \"\\\\@ulcorner\", true);\ndefineSymbol(math, ams, close, \"\\u2510\", \"\\\\@urcorner\", true);\ndefineSymbol(math, ams, open, \"\\u2514\", \"\\\\@llcorner\", true);\ndefineSymbol(math, ams, close, \"\\u2518\", \"\\\\@lrcorner\", true);\n// AMS Binary Relations\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2a7d\", \"\\\\leqslant\", true);\ndefineSymbol(math, ams, rel, \"\\u2a95\", \"\\\\eqslantless\", true);\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a85\", \"\\\\lessapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u224a\", \"\\\\approxeq\", true);\ndefineSymbol(math, ams, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\lll\", true);\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u22da\", \"\\\\lesseqgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\", true);\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\", true);\ndefineSymbol(math, ams, rel, \"\\u223d\", \"\\\\backsim\", true);\ndefineSymbol(math, ams, rel, \"\\u22cd\", \"\\\\backsimeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2ac5\", \"\\\\subseteqq\", true);\ndefineSymbol(math, ams, rel, \"\\u22d0\", \"\\\\Subset\", true);\ndefineSymbol(math, ams, rel, \"\\u228f\", \"\\\\sqsubset\", true);\ndefineSymbol(math, ams, rel, \"\\u227c\", \"\\\\preccurlyeq\", true);\ndefineSymbol(math, ams, rel, \"\\u22de\", \"\\\\curlyeqprec\", true);\ndefineSymbol(math, ams, rel, \"\\u227e\", \"\\\\precsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab7\", \"\\\\precapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22a8\", \"\\\\vDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22aa\", \"\\\\Vvdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224f\", \"\\\\bumpeq\", true);\ndefineSymbol(math, ams, rel, \"\\u224e\", \"\\\\Bumpeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2a7e\", \"\\\\geqslant\", true);\ndefineSymbol(math, ams, rel, \"\\u2a96\", \"\\\\eqslantgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a86\", \"\\\\gtrapprox\", true);\ndefineSymbol(math, ams, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\ggg\", true);\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\", true);\ndefineSymbol(math, ams, rel, \"\\u22db\", \"\\\\gtreqless\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8c\", \"\\\\gtreqqless\", true);\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\", true);\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\", true);\ndefineSymbol(math, ams, rel, \"\\u225c\", \"\\\\triangleq\", true);\ndefineSymbol(math, ams, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2ac6\", \"\\\\supseteqq\", true);\ndefineSymbol(math, ams, rel, \"\\u22d1\", \"\\\\Supset\", true);\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\", true);\ndefineSymbol(math, ams, rel, \"\\u227d\", \"\\\\succcurlyeq\", true);\ndefineSymbol(math, ams, rel, \"\\u22df\", \"\\\\curlyeqsucc\", true);\ndefineSymbol(math, ams, rel, \"\\u227f\", \"\\\\succsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab8\", \"\\\\succapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22a9\", \"\\\\Vdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226c\", \"\\\\between\", true);\ndefineSymbol(math, ams, rel, \"\\u22d4\", \"\\\\pitchfork\", true);\ndefineSymbol(math, ams, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25c0\", \"\\\\blacktriangleleft\");\n// unicode-math says that \\therefore is a mathord atom.\n// We kept the amssymb atom type, which is rel.\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\", true);\ndefineSymbol(math, ams, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25b6\", \"\\\\blacktriangleright\");\n// unicode-math says that \\because is a mathord atom.\n// We kept the amssymb atom type, which is rel.\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\", true);\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\", true);\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\", true);\n// AMS Binary Operators\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\", true);\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\Cap\", true);\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\Cup\", true);\ndefineSymbol(math, ams, bin, \"\\u2a5e\", \"\\\\doublebarwedge\", true);\ndefineSymbol(math, ams, bin, \"\\u229f\", \"\\\\boxminus\", true);\ndefineSymbol(math, ams, bin, \"\\u229e\", \"\\\\boxplus\", true);\ndefineSymbol(math, ams, bin, \"\\u22c7\", \"\\\\divideontimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22c9\", \"\\\\ltimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22ca\", \"\\\\rtimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cb\", \"\\\\leftthreetimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cc\", \"\\\\rightthreetimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cf\", \"\\\\curlywedge\", true);\ndefineSymbol(math, ams, bin, \"\\u22ce\", \"\\\\curlyvee\", true);\ndefineSymbol(math, ams, bin, \"\\u229d\", \"\\\\circleddash\", true);\ndefineSymbol(math, ams, bin, \"\\u229b\", \"\\\\circledast\", true);\ndefineSymbol(math, ams, bin, \"\\u22c5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22ba\", \"\\\\intercal\", true);\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22a0\", \"\\\\boxtimes\", true);\n// AMS Arrows\n// Note: unicode-math maps \\u21e2 to their own function \\rightdasharrow.\n// We'll map it to AMS function \\dashrightarrow. It produces the same atom.\ndefineSymbol(math, ams, rel, \"\\u21e2\", \"\\\\dashrightarrow\", true);\n// unicode-math maps \\u21e0 to \\leftdasharrow. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u21e0\", \"\\\\dashleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21c7\", \"\\\\leftleftarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21c6\", \"\\\\leftrightarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21da\", \"\\\\Lleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u219e\", \"\\\\twoheadleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21a2\", \"\\\\leftarrowtail\", true);\ndefineSymbol(math, ams, rel, \"\\u21ab\", \"\\\\looparrowleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21cb\", \"\\\\leftrightharpoons\", true);\ndefineSymbol(math, ams, rel, \"\\u21b6\", \"\\\\curvearrowleft\", true);\n// unicode-math maps \\u21ba to \\acwopencirclearrow. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u21ba\", \"\\\\circlearrowleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21b0\", \"\\\\Lsh\", true);\ndefineSymbol(math, ams, rel, \"\\u21c8\", \"\\\\upuparrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21bf\", \"\\\\upharpoonleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21c3\", \"\\\\downharpoonleft\", true);\ndefineSymbol(math, main, rel, \"\\u22b6\", \"\\\\origof\", true); // not in font\ndefineSymbol(math, main, rel, \"\\u22b7\", \"\\\\imageof\", true); // not in font\ndefineSymbol(math, ams, rel, \"\\u22b8\", \"\\\\multimap\", true);\ndefineSymbol(math, ams, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21c9\", \"\\\\rightrightarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21c4\", \"\\\\rightleftarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21a3\", \"\\\\rightarrowtail\", true);\ndefineSymbol(math, ams, rel, \"\\u21ac\", \"\\\\looparrowright\", true);\ndefineSymbol(math, ams, rel, \"\\u21b7\", \"\\\\curvearrowright\", true);\n// unicode-math maps \\u21bb to \\cwopencirclearrow. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u21bb\", \"\\\\circlearrowright\", true);\ndefineSymbol(math, ams, rel, \"\\u21b1\", \"\\\\Rsh\", true);\ndefineSymbol(math, ams, rel, \"\\u21ca\", \"\\\\downdownarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\upharpoonright\", true);\ndefineSymbol(math, ams, rel, \"\\u21c2\", \"\\\\downharpoonright\", true);\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\rightsquigarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21db\", \"\\\\Rrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\restriction\");\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\textdollar\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(text, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\textunderscore\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\", true);\ndefineSymbol(math, main, textord, \"\\u221e\", \"\\\\infty\", true);\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\", true);\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\", true);\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\", true);\ndefineSymbol(math, main, textord, \"\\u039b\", \"\\\\Lambda\", true);\ndefineSymbol(math, main, textord, \"\\u039e\", \"\\\\Xi\", true);\ndefineSymbol(math, main, textord, \"\\u03a0\", \"\\\\Pi\", true);\ndefineSymbol(math, main, textord, \"\\u03a3\", \"\\\\Sigma\", true);\ndefineSymbol(math, main, textord, \"\\u03a5\", \"\\\\Upsilon\", true);\ndefineSymbol(math, main, textord, \"\\u03a6\", \"\\\\Phi\", true);\ndefineSymbol(math, main, textord, \"\\u03a8\", \"\\\\Psi\", true);\ndefineSymbol(math, main, textord, \"\\u03a9\", \"\\\\Omega\", true);\ndefineSymbol(math, main, textord, \"A\", \"\\u0391\");\ndefineSymbol(math, main, textord, \"B\", \"\\u0392\");\ndefineSymbol(math, main, textord, \"E\", \"\\u0395\");\ndefineSymbol(math, main, textord, \"Z\", \"\\u0396\");\ndefineSymbol(math, main, textord, \"H\", \"\\u0397\");\ndefineSymbol(math, main, textord, \"I\", \"\\u0399\");\ndefineSymbol(math, main, textord, \"K\", \"\\u039A\");\ndefineSymbol(math, main, textord, \"M\", \"\\u039C\");\ndefineSymbol(math, main, textord, \"N\", \"\\u039D\");\ndefineSymbol(math, main, textord, \"O\", \"\\u039F\");\ndefineSymbol(math, main, textord, \"P\", \"\\u03A1\");\ndefineSymbol(math, main, textord, \"T\", \"\\u03A4\");\ndefineSymbol(math, main, textord, \"X\", \"\\u03A7\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\neg\", true);\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03b1\", \"\\\\alpha\", true);\ndefineSymbol(math, main, mathord, \"\\u03b2\", \"\\\\beta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b3\", \"\\\\gamma\", true);\ndefineSymbol(math, main, mathord, \"\\u03b4\", \"\\\\delta\", true);\ndefineSymbol(math, main, mathord, \"\\u03f5\", \"\\\\epsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03b6\", \"\\\\zeta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b7\", \"\\\\eta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b8\", \"\\\\theta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b9\", \"\\\\iota\", true);\ndefineSymbol(math, main, mathord, \"\\u03ba\", \"\\\\kappa\", true);\ndefineSymbol(math, main, mathord, \"\\u03bb\", \"\\\\lambda\", true);\ndefineSymbol(math, main, mathord, \"\\u03bc\", \"\\\\mu\", true);\ndefineSymbol(math, main, mathord, \"\\u03bd\", \"\\\\nu\", true);\ndefineSymbol(math, main, mathord, \"\\u03be\", \"\\\\xi\", true);\ndefineSymbol(math, main, mathord, \"\\u03bf\", \"\\\\omicron\", true);\ndefineSymbol(math, main, mathord, \"\\u03c0\", \"\\\\pi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c1\", \"\\\\rho\", true);\ndefineSymbol(math, main, mathord, \"\\u03c3\", \"\\\\sigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03c4\", \"\\\\tau\", true);\ndefineSymbol(math, main, mathord, \"\\u03c5\", \"\\\\upsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03d5\", \"\\\\phi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c7\", \"\\\\chi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c8\", \"\\\\psi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c9\", \"\\\\omega\", true);\ndefineSymbol(math, main, mathord, \"\\u03b5\", \"\\\\varepsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03d1\", \"\\\\vartheta\", true);\ndefineSymbol(math, main, mathord, \"\\u03d6\", \"\\\\varpi\", true);\ndefineSymbol(math, main, mathord, \"\\u03f1\", \"\\\\varrho\", true);\ndefineSymbol(math, main, mathord, \"\\u03c2\", \"\\\\varsigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03c6\", \"\\\\varphi\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\", true);\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\", true);\ndefineSymbol(math, main, bin, \"\\u22c5\", \"\\\\cdot\", true);\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\", true);\ndefineSymbol(math, main, bin, \"\\u00f7\", \"\\\\div\", true);\ndefineSymbol(math, main, bin, \"\\u00b1\", \"\\\\pm\", true);\ndefineSymbol(math, main, bin, \"\\u00d7\", \"\\\\times\", true);\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\", true);\ndefineSymbol(math, main, bin, \"\\u222a\", \"\\\\cup\", true);\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\", true);\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\", true);\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\", true);\ndefineSymbol(math, main, textord, \"\\u221a\", \"\\\\surd\");\ndefineSymbol(math, main, open, \"\\u27e8\", \"\\\\langle\", true);\ndefineSymbol(math, main, open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, close, \"?\", \"?\");\ndefineSymbol(math, main, close, \"!\", \"!\");\ndefineSymbol(math, main, close, \"\\u27e9\", \"\\\\rangle\", true);\ndefineSymbol(math, main, close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\", true);\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\", true);\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\", true);\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\", true);\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\", true);\ndefineSymbol(math, main, rel, \"\\ue020\", \"\\\\@not\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\", true);\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\", true);\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\", true);\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\", true);\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\", true);\ndefineSymbol(math, main, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\", true);\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\", true);\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\", true);\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\space\");\n// Ref: LaTeX Source 2e: \\DeclareRobustCommand{\\nobreakspace}{%\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \" \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\nobreak\");\ndefineSymbol(math, main, spacing, null, \"\\\\allowbreak\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, ams, bin, \"\\u22bc\", \"\\\\barwedge\", true);\ndefineSymbol(math, ams, bin, \"\\u22bb\", \"\\\\veebar\", true);\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\", true);\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\", true);\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\", true);\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\", true);\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\", true);\ndefineSymbol(math, ams, bin, \"\\u229a\", \"\\\\circledcirc\", true);\ndefineSymbol(math, ams, bin, \"\\u22a1\", \"\\\\boxdot\", true);\ndefineSymbol(math, main, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22c6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\textbraceleft\");\ndefineSymbol(math, main, close, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\textbraceright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, open, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(text, main, textord, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(math, main, close, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(text, main, textord, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(math, main, open, \"(\", \"\\\\lparen\", true);\ndefineSymbol(math, main, close, \")\", \"\\\\rparen\", true);\ndefineSymbol(text, main, textord, \"<\", \"\\\\textless\", true); // in T1 fontenc\ndefineSymbol(text, main, textord, \">\", \"\\\\textgreater\", true); // in T1 fontenc\ndefineSymbol(math, main, open, \"\\u230a\", \"\\\\lfloor\", true);\ndefineSymbol(math, main, close, \"\\u230b\", \"\\\\rfloor\", true);\ndefineSymbol(math, main, open, \"\\u2308\", \"\\\\lceil\", true);\ndefineSymbol(math, main, close, \"\\u2309\", \"\\\\rceil\", true);\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(text, main, textord, \"|\", \"\\\\textbar\", true); // in T1 fontenc\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(text, main, textord, \"\\u2225\", \"\\\\textbardbl\");\ndefineSymbol(text, main, textord, \"~\", \"\\\\textasciitilde\");\ndefineSymbol(text, main, textord, \"\\\\\", \"\\\\textbackslash\");\ndefineSymbol(text, main, textord, \"^\", \"\\\\textasciicircum\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d1\", \"\\\\Uparrow\", true);\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d3\", \"\\\\Downarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d5\", \"\\\\Updownarrow\", true);\ndefineSymbol(math, main, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, main, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, main, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, main, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, main, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, main, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, main, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, main, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, main, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, main, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, main, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, main, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, main, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, main, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, main, op, \"\\u222f\", \"\\\\oiint\");\ndefineSymbol(math, main, op, \"\\u2230\", \"\\\\oiiint\");\ndefineSymbol(math, main, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\textellipsis\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\mathellipsis\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u22ef\", \"\\\\@cdots\", true);\ndefineSymbol(math, main, inner, \"\\u22f1\", \"\\\\ddots\", true);\n// \\vdots is a macro that uses one of these two symbols (with made-up names):\ndefineSymbol(math, main, textord, \"\\u22ee\", \"\\\\varvdots\");\ndefineSymbol(text, main, textord, \"\\u22ee\", \"\\\\varvdots\");\ndefineSymbol(math, main, accent, \"\\u02ca\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"\\u02cb\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\u02c9\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"\\u005e\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20d7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, main, accent, \"\\u02da\", \"\\\\mathring\");\n// \\imath and \\jmath should be invariant to \\mathrm, \\mathbf, etc., so use PUA\ndefineSymbol(math, main, mathord, \"\\ue131\", \"\\\\@imath\");\ndefineSymbol(math, main, mathord, \"\\ue237\", \"\\\\@jmath\");\ndefineSymbol(math, main, textord, \"\\u0131\", \"\\u0131\");\ndefineSymbol(math, main, textord, \"\\u0237\", \"\\u0237\");\ndefineSymbol(text, main, textord, \"\\u0131\", \"\\\\i\", true);\ndefineSymbol(text, main, textord, \"\\u0237\", \"\\\\j\", true);\ndefineSymbol(text, main, textord, \"\\u00df\", \"\\\\ss\", true);\ndefineSymbol(text, main, textord, \"\\u00e6\", \"\\\\ae\", true);\ndefineSymbol(text, main, textord, \"\\u0153\", \"\\\\oe\", true);\ndefineSymbol(text, main, textord, \"\\u00f8\", \"\\\\o\", true);\ndefineSymbol(text, main, textord, \"\\u00c6\", \"\\\\AE\", true);\ndefineSymbol(text, main, textord, \"\\u0152\", \"\\\\OE\", true);\ndefineSymbol(text, main, textord, \"\\u00d8\", \"\\\\O\", true);\ndefineSymbol(text, main, accent, \"\\u02ca\", \"\\\\'\"); // acute\ndefineSymbol(text, main, accent, \"\\u02cb\", \"\\\\`\"); // grave\ndefineSymbol(text, main, accent, \"\\u02c6\", \"\\\\^\"); // circumflex\ndefineSymbol(text, main, accent, \"\\u02dc\", \"\\\\~\"); // tilde\ndefineSymbol(text, main, accent, \"\\u02c9\", \"\\\\=\"); // macron\ndefineSymbol(text, main, accent, \"\\u02d8\", \"\\\\u\"); // breve\ndefineSymbol(text, main, accent, \"\\u02d9\", \"\\\\.\"); // dot above\ndefineSymbol(text, main, accent, \"\\u00b8\", \"\\\\c\"); // cedilla\ndefineSymbol(text, main, accent, \"\\u02da\", \"\\\\r\"); // ring above\ndefineSymbol(text, main, accent, \"\\u02c7\", \"\\\\v\"); // caron\ndefineSymbol(text, main, accent, \"\\u00a8\", '\\\\\"'); // diaeresis\ndefineSymbol(text, main, accent, \"\\u02dd\", \"\\\\H\"); // double acute\ndefineSymbol(text, main, accent, \"\\u25ef\", \"\\\\textcircled\"); // \\bigcirc glyph\n// These ligatures are detected and created in Parser.js's `formLigatures`.\nvar ligatures = {\n \"--\": true,\n \"---\": true,\n \"``\": true,\n \"''\": true\n};\ndefineSymbol(text, main, textord, \"\\u2013\", \"--\", true);\ndefineSymbol(text, main, textord, \"\\u2013\", \"\\\\textendash\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"---\", true);\ndefineSymbol(text, main, textord, \"\\u2014\", \"\\\\textemdash\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"`\", true);\ndefineSymbol(text, main, textord, \"\\u2018\", \"\\\\textquoteleft\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"'\", true);\ndefineSymbol(text, main, textord, \"\\u2019\", \"\\\\textquoteright\");\ndefineSymbol(text, main, textord, \"\\u201c\", \"``\", true);\ndefineSymbol(text, main, textord, \"\\u201c\", \"\\\\textquotedblleft\");\ndefineSymbol(text, main, textord, \"\\u201d\", \"''\", true);\ndefineSymbol(text, main, textord, \"\\u201d\", \"\\\\textquotedblright\");\n// \\degree from gensymb package\ndefineSymbol(math, main, textord, \"\\u00b0\", \"\\\\degree\", true);\ndefineSymbol(text, main, textord, \"\\u00b0\", \"\\\\degree\");\n// \\textdegree from inputenc package\ndefineSymbol(text, main, textord, \"\\u00b0\", \"\\\\textdegree\", true);\n// TODO: In LaTeX, \\pounds can generate a different character in text and math\n// mode, but among our fonts, only Main-Regular defines this character \"163\".\ndefineSymbol(math, main, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(math, main, textord, \"\\u00a3\", \"\\\\mathsterling\", true);\ndefineSymbol(text, main, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(text, main, textord, \"\\u00a3\", \"\\\\textsterling\", true);\ndefineSymbol(math, ams, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(text, ams, textord, \"\\u2720\", \"\\\\maltese\");\n// There are lots of symbols which are the same, so we add them in afterwards.\n// All of these are textords in math mode\nvar mathTextSymbols = \"0123456789/@.\\\"\";\nfor (var i = 0; i < mathTextSymbols.length; i++) {\n var ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n}\n// All of these are textords in text mode\nvar textSymbols = \"0123456789!@*()-=+\\\";:?/.,\";\nfor (var _i = 0; _i < textSymbols.length; _i++) {\n var _ch = textSymbols.charAt(_i);\n defineSymbol(text, main, textord, _ch, _ch);\n}\n// All of these are textords in text mode, and mathords in math mode\nvar letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nfor (var _i2 = 0; _i2 < letters.length; _i2++) {\n var _ch2 = letters.charAt(_i2);\n defineSymbol(math, main, mathord, _ch2, _ch2);\n defineSymbol(text, main, textord, _ch2, _ch2);\n}\n// Blackboard bold and script letters in Unicode range\ndefineSymbol(math, ams, textord, \"C\", \"\\u2102\"); // blackboard bold\ndefineSymbol(text, ams, textord, \"C\", \"\\u2102\");\ndefineSymbol(math, ams, textord, \"H\", \"\\u210D\");\ndefineSymbol(text, ams, textord, \"H\", \"\\u210D\");\ndefineSymbol(math, ams, textord, \"N\", \"\\u2115\");\ndefineSymbol(text, ams, textord, \"N\", \"\\u2115\");\ndefineSymbol(math, ams, textord, \"P\", \"\\u2119\");\ndefineSymbol(text, ams, textord, \"P\", \"\\u2119\");\ndefineSymbol(math, ams, textord, \"Q\", \"\\u211A\");\ndefineSymbol(text, ams, textord, \"Q\", \"\\u211A\");\ndefineSymbol(math, ams, textord, \"R\", \"\\u211D\");\ndefineSymbol(text, ams, textord, \"R\", \"\\u211D\");\ndefineSymbol(math, ams, textord, \"Z\", \"\\u2124\");\ndefineSymbol(text, ams, textord, \"Z\", \"\\u2124\");\ndefineSymbol(math, main, mathord, \"h\", \"\\u210E\"); // italic h, Planck constant\ndefineSymbol(text, main, mathord, \"h\", \"\\u210E\");\n// The next loop loads wide (surrogate pair) characters.\n// We support some letters in the Unicode range U+1D400 to U+1D7FF,\n// Mathematical Alphanumeric Symbols.\n// Some editors do not deal well with wide characters. So don't write the\n// string into this file. Instead, create the string from the surrogate pair.\nvar wideChar = \"\";\nfor (var _i3 = 0; _i3 < letters.length; _i3++) {\n var _ch3 = letters.charAt(_i3);\n // The hex numbers in the next line are a surrogate pair.\n // 0xD835 is the high surrogate for all letters in the range we support.\n // 0xDC00 is the low surrogate for bold A.\n wideChar = String.fromCharCode(0xD835, 0xDC00 + _i3); // A-Z a-z bold\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC34 + _i3); // A-Z a-z italic\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC68 + _i3); // A-Z a-z bold italic\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDD04 + _i3); // A-Z a-z Fraktur\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDD6C + _i3); // A-Z a-z bold Fraktur\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDDA0 + _i3); // A-Z a-z sans-serif\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDDD4 + _i3); // A-Z a-z sans bold\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDE08 + _i3); // A-Z a-z sans italic\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDE70 + _i3); // A-Z a-z monospace\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n if (_i3 < 26) {\n // KaTeX fonts have only capital letters for blackboard bold and script.\n // See exception for k below.\n wideChar = String.fromCharCode(0xD835, 0xDD38 + _i3); // A-Z double struck\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC9C + _i3); // A-Z script\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n }\n // TODO: Add bold script when it is supported by a KaTeX font.\n}\n// \"k\" is the only double struck lower case letter in the KaTeX fonts.\nwideChar = String.fromCharCode(0xD835, 0xDD5C); // k double struck\ndefineSymbol(math, main, mathord, \"k\", wideChar);\ndefineSymbol(text, main, textord, \"k\", wideChar);\n// Next, some wide character numerals\nfor (var _i4 = 0; _i4 < 10; _i4++) {\n var _ch4 = _i4.toString();\n wideChar = String.fromCharCode(0xD835, 0xDFCE + _i4); // 0-9 bold\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFE2 + _i4); // 0-9 sans serif\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFEC + _i4); // 0-9 bold sans\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFF6 + _i4); // 0-9 monospace\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n}\n// We add these Latin-1 letters as symbols for backwards-compatibility,\n// but they are not actually in the font, nor are they supported by the\n// Unicode accent mechanism, so they fall back to Times font and look ugly.\n// TODO(edemaine): Fix this.\nvar extraLatin = \"\\u00d0\\u00de\\u00fe\";\nfor (var _i5 = 0; _i5 < extraLatin.length; _i5++) {\n var _ch5 = extraLatin.charAt(_i5);\n defineSymbol(math, main, mathord, _ch5, _ch5);\n defineSymbol(text, main, textord, _ch5, _ch5);\n}\n\n/**\n * This file provides support for Unicode range U+1D400 to U+1D7FF,\n * Mathematical Alphanumeric Symbols.\n *\n * Function wideCharacterFont takes a wide character as input and returns\n * the font information necessary to render it properly.\n */\n/**\n * Data below is from https://www.unicode.org/charts/PDF/U1D400.pdf\n * That document sorts characters into groups by font type, say bold or italic.\n *\n * In the arrays below, each subarray consists three elements:\n * * The CSS class of that group when in math mode.\n * * The CSS class of that group when in text mode.\n * * The font name, so that KaTeX can get font metrics.\n */\nvar wideLatinLetterData = [[\"mathbf\", \"textbf\", \"Main-Bold\"],\n// A-Z bold upright\n[\"mathbf\", \"textbf\", \"Main-Bold\"],\n// a-z bold upright\n[\"mathnormal\", \"textit\", \"Math-Italic\"],\n// A-Z italic\n[\"mathnormal\", \"textit\", \"Math-Italic\"],\n// a-z italic\n[\"boldsymbol\", \"boldsymbol\", \"Main-BoldItalic\"],\n// A-Z bold italic\n[\"boldsymbol\", \"boldsymbol\", \"Main-BoldItalic\"],\n// a-z bold italic\n// Map fancy A-Z letters to script, not calligraphic.\n// This aligns with unicode-math and math fonts (except Cambria Math).\n[\"mathscr\", \"textscr\", \"Script-Regular\"],\n// A-Z script\n[\"\", \"\", \"\"],\n// a-z script. No font\n[\"\", \"\", \"\"],\n// A-Z bold script. No font\n[\"\", \"\", \"\"],\n// a-z bold script. No font\n[\"mathfrak\", \"textfrak\", \"Fraktur-Regular\"],\n// A-Z Fraktur\n[\"mathfrak\", \"textfrak\", \"Fraktur-Regular\"],\n// a-z Fraktur\n[\"mathbb\", \"textbb\", \"AMS-Regular\"],\n// A-Z double-struck\n[\"mathbb\", \"textbb\", \"AMS-Regular\"],\n// k double-struck\n// Note that we are using a bold font, but font metrics for regular Fraktur.\n[\"mathboldfrak\", \"textboldfrak\", \"Fraktur-Regular\"],\n// A-Z bold Fraktur\n[\"mathboldfrak\", \"textboldfrak\", \"Fraktur-Regular\"],\n// a-z bold Fraktur\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"],\n// A-Z sans-serif\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"],\n// a-z sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"],\n// A-Z bold sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"],\n// a-z bold sans-serif\n[\"mathitsf\", \"textitsf\", \"SansSerif-Italic\"],\n// A-Z italic sans-serif\n[\"mathitsf\", \"textitsf\", \"SansSerif-Italic\"],\n// a-z italic sans-serif\n[\"\", \"\", \"\"],\n// A-Z bold italic sans. No font\n[\"\", \"\", \"\"],\n// a-z bold italic sans. No font\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"],\n// A-Z monospace\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"] // a-z monospace\n];\nvar wideNumeralData = [[\"mathbf\", \"textbf\", \"Main-Bold\"],\n// 0-9 bold\n[\"\", \"\", \"\"],\n// 0-9 double-struck. No KaTeX font.\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"],\n// 0-9 sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"],\n// 0-9 bold sans-serif\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"] // 0-9 monospace\n];\nvar wideCharacterFont = (wideChar, mode) => {\n // IE doesn't support codePointAt(). So work with the surrogate pair.\n var H = wideChar.charCodeAt(0); // high surrogate\n var L = wideChar.charCodeAt(1); // low surrogate\n var codePoint = (H - 0xD800) * 0x400 + (L - 0xDC00) + 0x10000;\n var j = mode === \"math\" ? 0 : 1; // column index for CSS class.\n if (0x1D400 <= codePoint && codePoint < 0x1D6A4) {\n // wideLatinLetterData contains exactly 26 chars on each row.\n // So we can calculate the relevant row. No traverse necessary.\n var i = Math.floor((codePoint - 0x1D400) / 26);\n return [wideLatinLetterData[i][2], wideLatinLetterData[i][j]];\n } else if (0x1D7CE <= codePoint && codePoint <= 0x1D7FF) {\n // Numerals, ten per row.\n var _i = Math.floor((codePoint - 0x1D7CE) / 10);\n return [wideNumeralData[_i][2], wideNumeralData[_i][j]];\n } else if (codePoint === 0x1D6A5 || codePoint === 0x1D6A6) {\n // dotless i or j\n return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]];\n } else if (0x1D6A6 < codePoint && codePoint < 0x1D7CE) {\n // Greek letters. Not supported, yet.\n return [\"\", \"\"];\n } else {\n // We don't support any wide characters outside 1D400\u20131D7FF.\n throw new ParseError(\"Unsupported character: \" + wideChar);\n }\n};\n\n/* eslint no-console:0 */\n/**\n * Looks up the given symbol in fontMetrics, after applying any symbol\n * replacements defined in symbol.js\n */\nvar lookupSymbol = function lookupSymbol(value,\n// TODO(#963): Use a union type for this.\nfontName, mode) {\n // Replace the value with its replaced value from symbol.js\n if (symbols[mode][value]) {\n var replacement = symbols[mode][value].replace;\n if (replacement) {\n value = replacement;\n }\n }\n return {\n value,\n metrics: getCharacterMetrics(value, fontName, mode)\n };\n};\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n *\n * TODO: make argument order closer to makeSpan\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n * TODO(#953): Make `options` mandatory and always pass it in.\n */\nvar makeSymbol = function makeSymbol(value, fontName, mode, options, classes) {\n var lookup = lookupSymbol(value, fontName, mode);\n var metrics = lookup.metrics;\n value = lookup.value;\n var symbolNode;\n if (metrics) {\n var italic = metrics.italic;\n if (mode === \"text\" || options && options.font === \"mathit\") {\n italic = 0;\n }\n symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\"No character metrics \" + (\"for '\" + value + \"' in style '\" + fontName + \"' and mode '\" + mode + \"'\"));\n symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes);\n }\n if (options) {\n symbolNode.maxFontSize = options.sizeMultiplier;\n if (options.style.isTight()) {\n symbolNode.classes.push(\"mtight\");\n }\n var color = options.getColor();\n if (color) {\n symbolNode.style.color = color;\n }\n }\n return symbolNode;\n};\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\nvar mathsym = function mathsym(value, mode, options, classes) {\n if (classes === void 0) {\n classes = [];\n }\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text, as well as a special case for boldsymbol because it\n // can be used for bold + and -\n if (options.font === \"boldsymbol\" && lookupSymbol(value, \"Main-Bold\", mode).metrics) {\n return makeSymbol(value, \"Main-Bold\", mode, options, classes.concat([\"mathbf\"]));\n } else if (value === \"\\\\\" || symbols[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, options, classes);\n } else {\n return makeSymbol(value, \"AMS-Regular\", mode, options, classes.concat([\"amsrm\"]));\n }\n};\n/**\n * Determines which of the two font names (Main-Bold and Math-BoldItalic) and\n * corresponding style tags (mathbf or boldsymbol) to use for font \"boldsymbol\",\n * depending on the symbol. Use this function instead of fontMap for font\n * \"boldsymbol\".\n */\nvar boldsymbol = function boldsymbol(value, mode, options, classes, type) {\n if (type !== \"textord\" && lookupSymbol(value, \"Math-BoldItalic\", mode).metrics) {\n return {\n fontName: \"Math-BoldItalic\",\n fontClass: \"boldsymbol\"\n };\n } else {\n // Some glyphs do not exist in Math-BoldItalic so we need to use\n // Main-Bold instead.\n return {\n fontName: \"Main-Bold\",\n fontClass: \"mathbf\"\n };\n }\n};\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\nvar makeOrd = function makeOrd(group, options, type) {\n var mode = group.mode;\n var text = group.text;\n var classes = [\"mord\"];\n // Math mode or Old font (i.e. \\rm)\n var isFont = mode === \"math\" || mode === \"text\" && options.font;\n var fontOrFamily = isFont ? options.font : options.fontFamily;\n var wideFontName = \"\";\n var wideFontClass = \"\";\n if (text.charCodeAt(0) === 0xD835) {\n [wideFontName, wideFontClass] = wideCharacterFont(text, mode);\n }\n if (wideFontName.length > 0) {\n // surrogate pairs get special treatment\n return makeSymbol(text, wideFontName, mode, options, classes.concat(wideFontClass));\n } else if (fontOrFamily) {\n var fontName;\n var fontClasses;\n if (fontOrFamily === \"boldsymbol\") {\n var fontData = boldsymbol(text, mode, options, classes, type);\n fontName = fontData.fontName;\n fontClasses = [fontData.fontClass];\n } else if (isFont) {\n fontName = fontMap[fontOrFamily].fontName;\n fontClasses = [fontOrFamily];\n } else {\n fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape);\n fontClasses = [fontOrFamily, options.fontWeight, options.fontShape];\n }\n if (lookupSymbol(text, fontName, mode).metrics) {\n return makeSymbol(text, fontName, mode, options, classes.concat(fontClasses));\n } else if (ligatures.hasOwnProperty(text) && fontName.slice(0, 10) === \"Typewriter\") {\n // Deconstruct ligatures in monospace fonts (\\texttt, \\tt).\n var parts = [];\n for (var i = 0; i < text.length; i++) {\n parts.push(makeSymbol(text[i], fontName, mode, options, classes.concat(fontClasses)));\n }\n return makeFragment(parts);\n }\n }\n // Makes a symbol in the default font for mathords and textords.\n if (type === \"mathord\") {\n return makeSymbol(text, \"Math-Italic\", mode, options, classes.concat([\"mathnormal\"]));\n } else if (type === \"textord\") {\n var font = symbols[mode][text] && symbols[mode][text].font;\n if (font === \"ams\") {\n var _fontName = retrieveTextFontName(\"amsrm\", options.fontWeight, options.fontShape);\n return makeSymbol(text, _fontName, mode, options, classes.concat(\"amsrm\", options.fontWeight, options.fontShape));\n } else if (font === \"main\" || !font) {\n var _fontName2 = retrieveTextFontName(\"textrm\", options.fontWeight, options.fontShape);\n return makeSymbol(text, _fontName2, mode, options, classes.concat(options.fontWeight, options.fontShape));\n } else {\n // fonts added by plugins\n var _fontName3 = retrieveTextFontName(font, options.fontWeight, options.fontShape);\n // We add font name as a css class\n return makeSymbol(text, _fontName3, mode, options, classes.concat(_fontName3, options.fontWeight, options.fontShape));\n }\n } else {\n throw new Error(\"unexpected type: \" + type + \" in makeOrd\");\n }\n};\n/**\n * Returns true if subsequent symbolNodes have the same classes, skew, maxFont,\n * and styles. For mathnormal text, the left node must also have zero italic\n * correction so we don't lose spacing between combined glyphs.\n */\nvar canCombine = (prev, next) => {\n if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize || prev.italic !== 0 && prev.hasClass(\"mathnormal\")) {\n return false;\n }\n // If prev and next both are just \"mbin\"s or \"mord\"s we don't combine them\n // so that the proper spacing can be preserved.\n if (prev.classes.length === 1) {\n var cls = prev.classes[0];\n if (cls === \"mbin\" || cls === \"mord\") {\n return false;\n }\n }\n for (var key of Object.keys(prev.style)) {\n if (prev.style[key] !== next.style[key]) {\n return false;\n }\n }\n for (var _key of Object.keys(next.style)) {\n if (prev.style[_key] !== next.style[_key]) {\n return false;\n }\n }\n return true;\n};\n/**\n * Combine consecutive domTree.symbolNodes into a single symbolNode.\n * Note: this function mutates the argument.\n */\nvar tryCombineChars = chars => {\n for (var i = 0; i < chars.length - 1; i++) {\n var prev = chars[i];\n var next = chars[i + 1];\n if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) {\n prev.text += next.text;\n prev.height = Math.max(prev.height, next.height);\n prev.depth = Math.max(prev.depth, next.depth);\n // Use the last character's italic correction since we use\n // it to add padding to the right of the span created from\n // the combined characters.\n prev.italic = next.italic;\n chars.splice(i + 1, 1);\n i--;\n }\n }\n return chars;\n};\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\nvar sizeElementFromChildren = function sizeElementFromChildren(elem) {\n var height = 0;\n var depth = 0;\n var maxFontSize = 0;\n for (var i = 0; i < elem.children.length; i++) {\n var child = elem.children[i];\n if (child.height > height) {\n height = child.height;\n }\n if (child.depth > depth) {\n depth = child.depth;\n }\n if (child.maxFontSize > maxFontSize) {\n maxFontSize = child.maxFontSize;\n }\n }\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n/**\n * Makes a span with the given list of classes, list of children, and options.\n *\n * TODO(#953): Ensure that `options` is always provided (currently some call\n * sites don't pass it) and make the type below mandatory.\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\nvar makeSpan = function makeSpan(classes, children, options, style) {\n var span = new Span(classes, children, options, style);\n sizeElementFromChildren(span);\n return span;\n};\n// SVG one is simpler -- doesn't require height, depth, max-font setting.\n// This is also a separate method for typesafety.\nvar makeSvgSpan = (classes, children, options, style) => new Span(classes, children, options, style);\nvar makeLineSpan = function makeLineSpan(className, options, thickness) {\n var line = makeSpan([className], [], options);\n line.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness);\n line.style.borderBottomWidth = makeEm(line.height);\n line.maxFontSize = 1.0;\n return line;\n};\n/**\n * Makes an anchor with the given href, list of classes, list of children,\n * and options.\n */\nvar makeAnchor = function makeAnchor(href, classes, children, options) {\n var anchor = new Anchor(href, classes, children, options);\n sizeElementFromChildren(anchor);\n return anchor;\n};\n/**\n * Makes a document fragment with the given list of children.\n */\nvar makeFragment = function makeFragment(children) {\n var fragment = new DocumentFragment(children);\n sizeElementFromChildren(fragment);\n return fragment;\n};\n/**\n * Wraps group in a span if it's a document fragment, allowing to apply classes\n * and styles\n */\nvar wrapFragment = function wrapFragment(group, options) {\n if (group instanceof DocumentFragment) {\n return makeSpan([], [group], options);\n }\n return group;\n};\n// Computes the updated `children` list and the overall depth.\n//\n// This helper function for makeVList makes it easier to enforce type safety by\n// allowing early exits (returns) in the logic.\nvar getVListChildrenAndDepth = function getVListChildrenAndDepth(params) {\n if (params.positionType === \"individualShift\") {\n var oldChildren = params.children;\n var children = [oldChildren[0]];\n // Add in kerns to the list of params.children to get each element to be\n // shifted to the correct specified shift\n var _depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n var currPos = _depth;\n for (var i = 1; i < oldChildren.length; i++) {\n var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth;\n var size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth);\n currPos = currPos + diff;\n children.push({\n type: \"kern\",\n size\n });\n children.push(oldChildren[i]);\n }\n return {\n children,\n depth: _depth\n };\n }\n var depth;\n if (params.positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n var bottom = params.positionData;\n for (var _i = 0; _i < params.children.length; _i++) {\n var child = params.children[_i];\n bottom -= child.type === \"kern\" ? child.size : child.elem.height + child.elem.depth;\n }\n depth = bottom;\n } else if (params.positionType === \"bottom\") {\n depth = -params.positionData;\n } else {\n var firstChild = params.children[0];\n if (firstChild.type !== \"elem\") {\n throw new Error('First child must have type \"elem\".');\n }\n if (params.positionType === \"shift\") {\n depth = -firstChild.elem.depth - params.positionData;\n } else if (params.positionType === \"firstBaseline\") {\n depth = -firstChild.elem.depth;\n } else {\n throw new Error(\"Invalid positionType \" + params.positionType + \".\");\n }\n }\n return {\n children: params.children,\n depth\n };\n};\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * See VListParam documentation above.\n */\nvar makeVList = function makeVList(params, options) {\n var {\n children,\n depth\n } = getVListChildrenAndDepth(params);\n // Create a strut that is taller than any list item. The strut is added to\n // each item, where it will determine the item's baseline. Since it has\n // `overflow:hidden`, the strut's top edge will sit on the item's line box's\n // top edge and the strut's bottom edge will sit on the item's baseline,\n // with no additional line-height spacing. This allows the item baseline to\n // be positioned precisely without worrying about font ascent and\n // line-height.\n var pstrutSize = 0;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.type === \"elem\") {\n var elem = child.elem;\n pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height);\n }\n }\n pstrutSize += 2;\n var pstrut = makeSpan([\"pstrut\"], []);\n pstrut.style.height = makeEm(pstrutSize);\n // Create a new list of actual children at the correct offsets\n var realChildren = [];\n var minPos = depth;\n var maxPos = depth;\n var currPos = depth;\n for (var _i2 = 0; _i2 < children.length; _i2++) {\n var _child = children[_i2];\n if (_child.type === \"kern\") {\n currPos += _child.size;\n } else {\n var _elem = _child.elem;\n var classes = _child.wrapperClasses || [];\n var style = _child.wrapperStyle || {};\n var childWrap = makeSpan(classes, [pstrut, _elem], undefined, style);\n childWrap.style.top = makeEm(-pstrutSize - currPos - _elem.depth);\n if (_child.marginLeft) {\n childWrap.style.marginLeft = _child.marginLeft;\n }\n if (_child.marginRight) {\n childWrap.style.marginRight = _child.marginRight;\n }\n realChildren.push(childWrap);\n currPos += _elem.height + _elem.depth;\n }\n minPos = Math.min(minPos, currPos);\n maxPos = Math.max(maxPos, currPos);\n }\n // The vlist contents go in a table-cell with `vertical-align:bottom`.\n // This cell's bottom edge will determine the containing table's baseline\n // without overly expanding the containing line-box.\n var vlist = makeSpan([\"vlist\"], realChildren);\n vlist.style.height = makeEm(maxPos);\n // A second row is used if necessary to represent the vlist's depth.\n var rows;\n if (minPos < 0) {\n // We will define depth in an empty span with display: table-cell.\n // It should render with the height that we define. But Chrome, in\n // contenteditable mode only, treats that span as if it contains some\n // text content. And that min-height over-rides our desired height.\n // So we put another empty span inside the depth strut span.\n var emptySpan = makeSpan([], []);\n var depthStrut = makeSpan([\"vlist\"], [emptySpan]);\n depthStrut.style.height = makeEm(-minPos);\n // Safari wants the first row to have inline content; otherwise it\n // puts the bottom of the *second* row on the baseline.\n var topStrut = makeSpan([\"vlist-s\"], [new SymbolNode(\"\\u200b\")]);\n rows = [makeSpan([\"vlist-r\"], [vlist, topStrut]), makeSpan([\"vlist-r\"], [depthStrut])];\n } else {\n rows = [makeSpan([\"vlist-r\"], [vlist])];\n }\n var vtable = makeSpan([\"vlist-t\"], rows);\n if (rows.length === 2) {\n vtable.classes.push(\"vlist-t2\");\n }\n vtable.height = maxPos;\n vtable.depth = -minPos;\n return vtable;\n};\n// Glue is a concept from TeX which is a flexible space between elements in\n// either a vertical or horizontal list. In KaTeX, at least for now, it's\n// static space between elements in a horizontal layout.\nvar makeGlue = (measurement, options) => {\n // Make an empty span for the space\n var rule = makeSpan([\"mspace\"], [], options);\n var size = calculateSize(measurement, options);\n rule.style.marginRight = makeEm(size);\n return rule;\n};\n// Takes font options, and returns the appropriate fontLookup name\nvar retrieveTextFontName = function retrieveTextFontName(fontFamily, fontWeight, fontShape) {\n var baseFontName = \"\";\n switch (fontFamily) {\n case \"amsrm\":\n baseFontName = \"AMS\";\n break;\n case \"textrm\":\n baseFontName = \"Main\";\n break;\n case \"textsf\":\n baseFontName = \"SansSerif\";\n break;\n case \"texttt\":\n baseFontName = \"Typewriter\";\n break;\n default:\n baseFontName = fontFamily;\n // use fonts added by a plugin\n }\n var fontStylesName;\n if (fontWeight === \"textbf\" && fontShape === \"textit\") {\n fontStylesName = \"BoldItalic\";\n } else if (fontWeight === \"textbf\") {\n fontStylesName = \"Bold\";\n } else if (fontWeight === \"textit\") {\n fontStylesName = \"Italic\";\n } else {\n fontStylesName = \"Regular\";\n }\n return baseFontName + \"-\" + fontStylesName;\n};\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\nvar fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\"\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\"\n },\n \"textit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n \"mathit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n \"mathnormal\": {\n variant: \"italic\",\n fontName: \"Math-Italic\"\n },\n \"mathsfit\": {\n variant: \"sans-serif-italic\",\n fontName: \"SansSerif-Italic\"\n },\n // \"boldsymbol\" is missing because they require the use of multiple fonts:\n // Math-BoldItalic and Main-Bold. This is handled by a special case in\n // makeOrd which ends up calling boldsymbol.\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\"\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\"\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\"\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\"\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\"\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\"\n }\n};\nvar svgData = {\n // path, width, height\n vec: [\"vec\", 0.471, 0.714],\n // values from the font glyph\n oiintSize1: [\"oiintSize1\", 0.957, 0.499],\n // oval to overlay the integrand\n oiintSize2: [\"oiintSize2\", 1.472, 0.659],\n oiiintSize1: [\"oiiintSize1\", 1.304, 0.499],\n oiiintSize2: [\"oiiintSize2\", 1.98, 0.659]\n};\nvar staticSvg = function staticSvg(value, options) {\n // Create a span with inline SVG for the element.\n var [pathName, width, height] = svgData[value];\n var path = new PathNode(pathName);\n var svgNode = new SvgNode([path], {\n \"width\": makeEm(width),\n \"height\": makeEm(height),\n // Override CSS rule `.katex svg { width: 100% }`\n \"style\": \"width:\" + makeEm(width),\n \"viewBox\": \"0 0 \" + 1000 * width + \" \" + 1000 * height,\n \"preserveAspectRatio\": \"xMinYMin\"\n });\n var span = makeSvgSpan([\"overlay\"], [svgNode], options);\n span.height = height;\n span.style.height = makeEm(height);\n span.style.width = makeEm(width);\n return span;\n};\n\nvar thinspace = {\n number: 3,\n unit: \"mu\"\n};\nvar mediumspace = {\n number: 4,\n unit: \"mu\"\n};\nvar thickspace = {\n number: 5,\n unit: \"mu\"\n};\n// Spacing relationships for display and text styles\nvar spacings = {\n mord: {\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n minner: thinspace\n },\n mop: {\n mord: thinspace,\n mop: thinspace,\n mrel: thickspace,\n minner: thinspace\n },\n mbin: {\n mord: mediumspace,\n mop: mediumspace,\n mopen: mediumspace,\n minner: mediumspace\n },\n mrel: {\n mord: thickspace,\n mop: thickspace,\n mopen: thickspace,\n minner: thickspace\n },\n mopen: {},\n mclose: {\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n minner: thinspace\n },\n mpunct: {\n mord: thinspace,\n mop: thinspace,\n mrel: thickspace,\n mopen: thinspace,\n mclose: thinspace,\n mpunct: thinspace,\n minner: thinspace\n },\n minner: {\n mord: thinspace,\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n mopen: thinspace,\n mpunct: thinspace,\n minner: thinspace\n }\n};\n// Spacing relationships for script and scriptscript styles\nvar tightSpacings = {\n mord: {\n mop: thinspace\n },\n mop: {\n mord: thinspace,\n mop: thinspace\n },\n mbin: {},\n mrel: {},\n mopen: {},\n mclose: {\n mop: thinspace\n },\n mpunct: {},\n minner: {\n mop: thinspace\n }\n};\n\n/**\n * All registered functions.\n * `functions.js` just exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary.\n */\nvar _functions = {};\n/**\n * All HTML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\nvar _htmlGroupBuilders = {};\n/**\n * All MathML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\nvar _mathmlGroupBuilders = {};\nfunction defineFunction(_ref) {\n var {\n type,\n names,\n props,\n handler,\n htmlBuilder,\n mathmlBuilder\n } = _ref;\n // Set default values of functions\n var data = {\n type,\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n allowedInArgument: !!props.allowedInArgument,\n allowedInText: !!props.allowedInText,\n allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath,\n numOptionalArgs: props.numOptionalArgs || 0,\n infix: !!props.infix,\n primitive: !!props.primitive,\n handler\n };\n for (var i = 0; i < names.length; ++i) {\n _functions[names[i]] = data;\n }\n if (type) {\n if (htmlBuilder) {\n _htmlGroupBuilders[type] = htmlBuilder;\n }\n if (mathmlBuilder) {\n _mathmlGroupBuilders[type] = mathmlBuilder;\n }\n }\n}\n/**\n * Use this to register only the HTML and MathML builders for a function (e.g.\n * if the function's ParseNode is generated in Parser.js rather than via a\n * stand-alone handler provided to `defineFunction`).\n */\nfunction defineFunctionBuilders(_ref2) {\n var {\n type,\n htmlBuilder,\n mathmlBuilder\n } = _ref2;\n defineFunction({\n type,\n names: [],\n props: {\n numArgs: 0\n },\n handler() {\n throw new Error('Should never be called.');\n },\n htmlBuilder,\n mathmlBuilder\n });\n}\nvar normalizeArgument = function normalizeArgument(arg) {\n return arg.type === \"ordgroup\" && arg.body.length === 1 ? arg.body[0] : arg;\n};\n// Since the corresponding buildHTML/buildMathML function expects a\n// list of elements, we normalize for different kinds of arguments\nvar ordargument = function ordargument(arg) {\n return arg.type === \"ordgroup\" ? arg.body : [arg];\n};\n\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupBuilders functions\n * are called, to produce a final HTML tree.\n */\n// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)\n// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,\n// and the text before Rule 19.\nvar binLeftCanceller = new Set([\"leftmost\", \"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"]);\nvar binRightCanceller = new Set([\"rightmost\", \"mrel\", \"mclose\", \"mpunct\"]);\nvar styleMap$1 = {\n \"display\": Style$1.DISPLAY,\n \"text\": Style$1.TEXT,\n \"script\": Style$1.SCRIPT,\n \"scriptscript\": Style$1.SCRIPTSCRIPT\n};\nvar DomEnum = {\n mord: \"mord\",\n mop: \"mop\",\n mbin: \"mbin\",\n mrel: \"mrel\",\n mopen: \"mopen\",\n mclose: \"mclose\",\n mpunct: \"mpunct\",\n minner: \"minner\"\n};\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. documentFragments are flattened into their contents, so the\n * returned list contains no fragments. `isRealGroup` is true if `expression`\n * is a real group (no atoms will be added on either side), as opposed to\n * a partial group (e.g. one created by \\color). `surrounding` is an array\n * consisting type of nodes that will be added to the left and right.\n */\nvar buildExpression$1 = function buildExpression(expression, options, isRealGroup, surrounding) {\n if (surrounding === void 0) {\n surrounding = [null, null];\n }\n // Parse expressions into `groups`.\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var output = buildGroup$1(expression[i], options);\n if (output instanceof DocumentFragment) {\n var children = output.children;\n groups.push(...children);\n } else {\n groups.push(output);\n }\n }\n // Combine consecutive domTree.symbolNodes into a single symbolNode.\n tryCombineChars(groups);\n // If `expression` is a partial group, let the parent handle spacings\n // to avoid processing groups multiple times.\n if (!isRealGroup) {\n return groups;\n }\n var glueOptions = options;\n if (expression.length === 1) {\n var node = expression[0];\n if (node.type === \"sizing\") {\n glueOptions = options.havingSize(node.size);\n } else if (node.type === \"styling\") {\n glueOptions = options.havingStyle(styleMap$1[node.style]);\n }\n }\n // Dummy spans for determining spacings between surrounding atoms.\n // If `expression` has no atoms on the left or right, class \"leftmost\"\n // or \"rightmost\", respectively, is used to indicate it.\n var dummyPrev = makeSpan([surrounding[0] || \"leftmost\"], [], options);\n var dummyNext = makeSpan([surrounding[1] || \"rightmost\"], [], options);\n // TODO: These code assumes that a node's math class is the first element\n // of its `classes` array. A later cleanup should ensure this, for\n // instance by changing the signature of `makeSpan`.\n // Before determining what spaces to insert, perform bin cancellation.\n // Binary operators change to ordinary symbols in some contexts.\n var isRoot = isRealGroup === \"root\";\n _traverseNonSpaceNodes(groups, (node, prev) => {\n var prevType = prev.classes[0];\n var type = node.classes[0];\n if (prevType === \"mbin\" && binRightCanceller.has(type)) {\n prev.classes[0] = \"mord\";\n } else if (type === \"mbin\" && binLeftCanceller.has(prevType)) {\n node.classes[0] = \"mord\";\n }\n }, {\n node: dummyPrev\n }, dummyNext, isRoot);\n _traverseNonSpaceNodes(groups, (node, prev) => {\n var _tightSpacings$prevTy, _spacings$prevType;\n var prevType = getTypeOfDomTree(prev);\n var type = getTypeOfDomTree(node);\n // 'mtight' indicates that the node is script or scriptscript style.\n var space = prevType && type ? node.hasClass(\"mtight\") ? (_tightSpacings$prevTy = tightSpacings[prevType]) == null ? void 0 : _tightSpacings$prevTy[type] : (_spacings$prevType = spacings[prevType]) == null ? void 0 : _spacings$prevType[type] : null;\n if (space) {\n // Insert glue (spacing) after the `prev`.\n return makeGlue(space, glueOptions);\n }\n }, {\n node: dummyPrev\n }, dummyNext, isRoot);\n return groups;\n};\n// Depth-first traverse non-space `nodes`, calling `callback` with the current and\n// previous node as arguments, optionally returning a node to insert after the\n// previous node. `prev` is an object with the previous node and `insertAfter`\n// function to insert after it. `next` is a node that will be added to the right.\n// Used for bin cancellation and inserting spacings.\nvar _traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next, isRoot) {\n if (next) {\n // temporarily append the right node, if exists\n nodes.push(next);\n }\n var i = 0;\n for (; i < nodes.length; i++) {\n var node = nodes[i];\n var partialGroup = checkPartialGroup(node);\n if (partialGroup) {\n // Recursive DFS\n // TODO(ts): make nodes a $ReadOnlyArray by returning a new array\n _traverseNonSpaceNodes(partialGroup.children, callback, prev, null, isRoot);\n continue;\n }\n // Ignore explicit spaces (e.g., \\;, \\,) when determining what implicit\n // spacing should go between atoms of different classes\n var nonspace = !node.hasClass(\"mspace\");\n if (nonspace) {\n var result = callback(node, prev.node);\n if (result) {\n if (prev.insertAfter) {\n prev.insertAfter(result);\n } else {\n // insert at front\n nodes.unshift(result);\n i++;\n }\n }\n }\n if (nonspace) {\n prev.node = node;\n } else if (isRoot && node.hasClass(\"newline\")) {\n prev.node = makeSpan([\"leftmost\"]); // treat like beginning of line\n }\n prev.insertAfter = (index => n => {\n nodes.splice(index + 1, 0, n);\n i++;\n })(i);\n }\n if (next) {\n nodes.pop();\n }\n};\n// Check if given node is a partial group, i.e., does not affect spacing around.\nvar checkPartialGroup = function checkPartialGroup(node) {\n if (node instanceof DocumentFragment || node instanceof Anchor || node instanceof Span && node.hasClass(\"enclosing\")) {\n return node;\n }\n return null;\n};\n// Return the outermost node of a domTree.\nvar _getOutermostNode = function getOutermostNode(node, side) {\n var partialGroup = checkPartialGroup(node);\n if (partialGroup) {\n var children = partialGroup.children;\n if (children.length) {\n if (side === \"right\") {\n return _getOutermostNode(children[children.length - 1], \"right\");\n } else if (side === \"left\") {\n return _getOutermostNode(children[0], \"left\");\n }\n }\n }\n return node;\n};\n// Return math atom class (mclass) of a domTree.\n// If `side` is given, it will get the type of the outermost node at given side.\nvar getTypeOfDomTree = function getTypeOfDomTree(node, side) {\n if (!node) {\n return null;\n }\n if (side) {\n node = _getOutermostNode(node, side);\n }\n // This makes a lot of assumptions as to where the type of atom\n // appears. We should do a better job of enforcing this.\n var className = node.classes[0];\n return DomEnum[className] || null;\n};\nvar makeNullDelimiter = function makeNullDelimiter(options, classes) {\n var moreClasses = [\"nulldelimiter\"].concat(options.baseSizingClasses());\n return makeSpan(classes.concat(moreClasses));\n};\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\nvar buildGroup$1 = function buildGroup(group, options, baseOptions) {\n if (!group) {\n return makeSpan();\n }\n if (_htmlGroupBuilders[group.type]) {\n // Call the groupBuilders function\n // TODO(ts)\n var groupNode = _htmlGroupBuilders[group.type](group, options);\n // If the size changed between the parent and the current group, account\n // for that size difference.\n if (baseOptions && options.size !== baseOptions.size) {\n groupNode = makeSpan(options.sizingClasses(baseOptions), [groupNode], options);\n var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n return groupNode;\n } else {\n throw new ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n/**\n * Combine an array of HTML DOM nodes (e.g., the output of `buildExpression`)\n * into an unbreakable HTML node of class .base, with proper struts to\n * guarantee correct vertical extent. `buildHTML` calls this repeatedly to\n * make up the entire expression as a sequence of unbreakable units.\n */\nfunction buildHTMLUnbreakable(children, options) {\n // Compute height and depth of this chunk.\n var body = makeSpan([\"base\"], children, options);\n // Add strut, which ensures that the top of the HTML element falls at\n // the height of the expression, and the bottom of the HTML element\n // falls at the depth of the expression.\n var strut = makeSpan([\"strut\"]);\n strut.style.height = makeEm(body.height + body.depth);\n if (body.depth) {\n strut.style.verticalAlign = makeEm(-body.depth);\n }\n body.children.unshift(strut);\n return body;\n}\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\nfunction buildHTML(tree, options) {\n // Strip off outer tag wrapper for processing below.\n var tag = null;\n if (tree.length === 1 && tree[0].type === \"tag\") {\n tag = tree[0].tag;\n tree = tree[0].body;\n }\n // Build the expression contained in the tree\n var expression = buildExpression$1(tree, options, \"root\");\n var eqnNum;\n if (expression.length === 2 && expression[1].hasClass(\"tag\")) {\n // An environment with automatic equation numbers, e.g. {gather}.\n eqnNum = expression.pop();\n }\n var children = [];\n // Create one base node for each chunk between potential line breaks.\n // The TeXBook [p.173] says \"A formula will be broken only after a\n // relation symbol like $=$ or $<$ or $\\rightarrow$, or after a binary\n // operation symbol like $+$ or $-$ or $\\times$, where the relation or\n // binary operation is on the ``outer level'' of the formula (i.e., not\n // enclosed in {...} and not part of an \\over construction).\"\n var parts = [];\n for (var i = 0; i < expression.length; i++) {\n parts.push(expression[i]);\n if (expression[i].hasClass(\"mbin\") || expression[i].hasClass(\"mrel\") || expression[i].hasClass(\"allowbreak\")) {\n // Put any post-operator glue on same line as operator.\n // Watch for \\nobreak along the way, and stop at \\newline.\n var nobreak = false;\n while (i < expression.length - 1 && expression[i + 1].hasClass(\"mspace\") && !expression[i + 1].hasClass(\"newline\")) {\n i++;\n parts.push(expression[i]);\n if (expression[i].hasClass(\"nobreak\")) {\n nobreak = true;\n }\n }\n // Don't allow break if \\nobreak among the post-operator glue.\n if (!nobreak) {\n children.push(buildHTMLUnbreakable(parts, options));\n parts = [];\n }\n } else if (expression[i].hasClass(\"newline\")) {\n // Write the line except the newline\n parts.pop();\n if (parts.length > 0) {\n children.push(buildHTMLUnbreakable(parts, options));\n parts = [];\n }\n // Put the newline at the top level\n children.push(expression[i]);\n }\n }\n if (parts.length > 0) {\n children.push(buildHTMLUnbreakable(parts, options));\n }\n // Now, if there was a tag, build it too and append it as a final child.\n var tagChild;\n if (tag) {\n tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true), options);\n tagChild.classes = [\"tag\"];\n children.push(tagChild);\n } else if (eqnNum) {\n children.push(eqnNum);\n }\n var htmlNode = makeSpan([\"katex-html\"], children);\n htmlNode.setAttribute(\"aria-hidden\", \"true\");\n // Adjust the strut of the tag to be the maximum height of all children\n // (the height of the enclosing htmlNode) for proper vertical alignment.\n if (tagChild) {\n var strut = tagChild.children[0];\n strut.style.height = makeEm(htmlNode.height + htmlNode.depth);\n if (htmlNode.depth) {\n strut.style.verticalAlign = makeEm(-htmlNode.depth);\n }\n }\n return htmlNode;\n}\n\n/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work similarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\nfunction newDocumentFragment(children) {\n return new DocumentFragment(children);\n}\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `<mo>` and `<mspace>` tags).\n */\nclass MathNode {\n constructor(type, children, classes) {\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n this.classes = classes || [];\n }\n /**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\n setAttribute(name, value) {\n this.attributes[name] = value;\n }\n /**\n * Gets an attribute on a MathML node.\n */\n getAttribute(name) {\n return this.attributes[name];\n }\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n toNode() {\n var node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", this.type);\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n if (this.classes.length > 0) {\n node.className = createClass(this.classes);\n }\n for (var i = 0; i < this.children.length; i++) {\n // Combine multiple TextNodes into one TextNode, to prevent\n // screen readers from reading each as a separate word [#3995]\n if (this.children[i] instanceof TextNode && this.children[i + 1] instanceof TextNode) {\n var text = this.children[i].toText() + this.children[++i].toText();\n while (this.children[i + 1] instanceof TextNode) {\n text += this.children[++i].toText();\n }\n node.appendChild(new TextNode(text).toNode());\n } else {\n node.appendChild(this.children[i].toNode());\n }\n }\n return node;\n }\n /**\n * Converts the math node into an HTML markup string.\n */\n toMarkup() {\n var markup = \"<\" + this.type;\n // Add the attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n if (this.classes.length > 0) {\n markup += \" class =\\\"\" + escape(createClass(this.classes)) + \"\\\"\";\n }\n markup += \">\";\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n markup += \"</\" + this.type + \">\";\n return markup;\n }\n /**\n * Converts the math node into a string, similar to innerText, but escaped.\n */\n toText() {\n return this.children.map(child => child.toText()).join(\"\");\n }\n}\n/**\n * This node represents a piece of text.\n */\nclass TextNode {\n constructor(text) {\n this.text = text;\n }\n /**\n * Converts the text node into a DOM text node.\n */\n toNode() {\n return document.createTextNode(this.text);\n }\n /**\n * Converts the text node into escaped HTML markup\n * (representing the text itself).\n */\n toMarkup() {\n return escape(this.toText());\n }\n /**\n * Converts the text node into a string\n * (representing the text itself).\n */\n toText() {\n return this.text;\n }\n}\n/**\n * This node represents a space, but may render as <mspace.../> or as text,\n * depending on the width.\n */\nclass SpaceNode {\n /**\n * Create a Space node with width given in CSS ems.\n */\n constructor(width) {\n this.width = width;\n // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html\n // for a table of space-like characters. We use Unicode\n // representations instead of &LongNames; as it's not clear how to\n // make the latter via document.createTextNode.\n if (width >= 0.05555 && width <= 0.05556) {\n this.character = \"\\u200a\"; //  \n } else if (width >= 0.1666 && width <= 0.1667) {\n this.character = \"\\u2009\"; //  \n } else if (width >= 0.2222 && width <= 0.2223) {\n this.character = \"\\u2005\"; //  \n } else if (width >= 0.2777 && width <= 0.2778) {\n this.character = \"\\u2005\\u200a\"; //   \n } else if (width >= -0.05556 && width <= -0.05555) {\n this.character = \"\\u200a\\u2063\"; // ​\n } else if (width >= -0.1667 && width <= -0.1666) {\n this.character = \"\\u2009\\u2063\"; // ​\n } else if (width >= -0.2223 && width <= -0.2222) {\n this.character = \"\\u205f\\u2063\"; // ​\n } else if (width >= -0.2778 && width <= -0.2777) {\n this.character = \"\\u2005\\u2063\"; // ​\n } else {\n this.character = null;\n }\n }\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n toNode() {\n if (this.character) {\n return document.createTextNode(this.character);\n } else {\n var node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"mspace\");\n node.setAttribute(\"width\", makeEm(this.width));\n return node;\n }\n }\n /**\n * Converts the math node into an HTML markup string.\n */\n toMarkup() {\n if (this.character) {\n return \"<mtext>\" + this.character + \"</mtext>\";\n } else {\n return \"<mspace width=\\\"\" + makeEm(this.width) + \"\\\"/>\";\n }\n }\n /**\n * Converts the math node into a string, similar to innerText.\n */\n toText() {\n if (this.character) {\n return this.character;\n } else {\n return \" \";\n }\n }\n}\n\n/**\n * This file converts a parse tree into a corresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\nvar noVariantSymbols = new Set([\"\\\\imath\", \"\\\\jmath\"]);\nvar rowLikeTypes = new Set([\"mrow\", \"mtable\"]);\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nvar makeText = function makeText(text, mode, options) {\n if (symbols[mode][text] && symbols[mode][text].replace && text.charCodeAt(0) !== 0xD835 && !(ligatures.hasOwnProperty(text) && options && (options.fontFamily && options.fontFamily.slice(4, 6) === \"tt\" || options.font && options.font.slice(4, 6) === \"tt\"))) {\n text = symbols[mode][text].replace;\n }\n return new TextNode(text);\n};\n/**\n * Wrap the given array of nodes in an <mrow> node if needed, i.e.,\n * unless the array has length 1. Always returns a single node.\n */\nvar makeRow = function makeRow(body) {\n if (body.length === 1) {\n return body[0];\n } else {\n return new MathNode(\"mrow\", body);\n }\n};\n/**\n * Returns the math variant as a string or null if none is required.\n */\nvar getVariant = function getVariant(group, options) {\n // Handle \\text... font specifiers as best we can.\n // MathML has a limited list of allowable mathvariant specifiers; see\n // https://www.w3.org/TR/MathML3/chapter3.html#presm.commatt\n if (options.fontFamily === \"texttt\") {\n return \"monospace\";\n } else if (options.fontFamily === \"textsf\") {\n if (options.fontShape === \"textit\" && options.fontWeight === \"textbf\") {\n return \"sans-serif-bold-italic\";\n } else if (options.fontShape === \"textit\") {\n return \"sans-serif-italic\";\n } else if (options.fontWeight === \"textbf\") {\n return \"bold-sans-serif\";\n } else {\n return \"sans-serif\";\n }\n } else if (options.fontShape === \"textit\" && options.fontWeight === \"textbf\") {\n return \"bold-italic\";\n } else if (options.fontShape === \"textit\") {\n return \"italic\";\n } else if (options.fontWeight === \"textbf\") {\n return \"bold\";\n }\n var font = options.font;\n if (!font || font === \"mathnormal\") {\n return null;\n }\n var mode = group.mode;\n if (font === \"mathit\") {\n return \"italic\";\n } else if (font === \"boldsymbol\") {\n return group.type === \"textord\" ? \"bold\" : \"bold-italic\";\n } else if (font === \"mathbf\") {\n return \"bold\";\n } else if (font === \"mathbb\") {\n return \"double-struck\";\n } else if (font === \"mathsfit\") {\n return \"sans-serif-italic\";\n } else if (font === \"mathfrak\") {\n return \"fraktur\";\n } else if (font === \"mathscr\" || font === \"mathcal\") {\n // MathML makes no distinction between script and calligraphic\n return \"script\";\n } else if (font === \"mathsf\") {\n return \"sans-serif\";\n } else if (font === \"mathtt\") {\n return \"monospace\";\n }\n var text = group.text;\n if (noVariantSymbols.has(text)) {\n return null;\n }\n if (symbols[mode][text]) {\n var replacement = symbols[mode][text].replace;\n if (replacement) {\n text = replacement;\n }\n }\n var fontName = fontMap[font].fontName;\n if (getCharacterMetrics(text, fontName, mode)) {\n return fontMap[font].variant;\n }\n return null;\n};\n/**\n * Check for <mi>.</mi> which is how a dot renders in MathML,\n * or <mo separator=\"true\" lspace=\"0em\" rspace=\"0em\">,</mo>\n * which is how a braced comma {,} renders in MathML\n */\nfunction isNumberPunctuation(group) {\n if (!group) {\n return false;\n }\n if (group.type === 'mi' && group.children.length === 1) {\n var child = group.children[0];\n return child instanceof TextNode && child.text === '.';\n } else if (group.type === 'mo' && group.children.length === 1 && group.getAttribute('separator') === 'true' && group.getAttribute('lspace') === '0em' && group.getAttribute('rspace') === '0em') {\n var _child = group.children[0];\n return _child instanceof TextNode && _child.text === ',';\n } else {\n return false;\n }\n}\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. Also combine consecutive <mtext> outputs into a single\n * <mtext> tag.\n */\nvar buildExpression = function buildExpression(expression, options, isOrdgroup) {\n if (expression.length === 1) {\n var group = buildGroup(expression[0], options);\n if (isOrdgroup && group instanceof MathNode && group.type === \"mo\") {\n // When TeX writers want to suppress spacing on an operator,\n // they often put the operator by itself inside braces.\n group.setAttribute(\"lspace\", \"0em\");\n group.setAttribute(\"rspace\", \"0em\");\n }\n return [group];\n }\n var groups = [];\n var lastGroup;\n for (var i = 0; i < expression.length; i++) {\n var _group = buildGroup(expression[i], options);\n if (_group instanceof MathNode && lastGroup instanceof MathNode) {\n // Concatenate adjacent <mtext>s\n if (_group.type === 'mtext' && lastGroup.type === 'mtext' && _group.getAttribute('mathvariant') === lastGroup.getAttribute('mathvariant')) {\n lastGroup.children.push(..._group.children);\n continue;\n // Concatenate adjacent <mn>s\n } else if (_group.type === 'mn' && lastGroup.type === 'mn') {\n lastGroup.children.push(..._group.children);\n continue;\n // Concatenate <mn>...</mn> followed by <mi>.</mi>\n } else if (isNumberPunctuation(_group) && lastGroup.type === 'mn') {\n lastGroup.children.push(..._group.children);\n continue;\n // Concatenate <mi>.</mi> followed by <mn>...</mn>\n } else if (_group.type === 'mn' && isNumberPunctuation(lastGroup)) {\n _group.children = [...lastGroup.children, ..._group.children];\n groups.pop();\n // Put preceding <mn>...</mn> or <mi>.</mi> inside base of\n // <msup><mn>...base...</mn>...exponent...</msup> (or <msub>)\n } else if ((_group.type === 'msup' || _group.type === 'msub') && _group.children.length >= 1 && (lastGroup.type === 'mn' || isNumberPunctuation(lastGroup))) {\n var base = _group.children[0];\n if (base instanceof MathNode && base.type === 'mn') {\n base.children = [...lastGroup.children, ...base.children];\n groups.pop();\n }\n // \\not\n } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {\n var lastChild = lastGroup.children[0];\n if (lastChild instanceof TextNode && lastChild.text === '\\u0338' && (_group.type === 'mo' || _group.type === 'mi' || _group.type === 'mn')) {\n var child = _group.children[0];\n if (child instanceof TextNode && child.text.length > 0) {\n // Overlay with combining character long solidus\n child.text = child.text.slice(0, 1) + \"\\u0338\" + child.text.slice(1);\n groups.pop();\n }\n }\n }\n }\n groups.push(_group);\n lastGroup = _group;\n }\n return groups;\n};\n/**\n * Equivalent to buildExpression, but wraps the elements in an <mrow>\n * if there's more than one. Returns a single node instead of an array.\n */\nvar buildExpressionRow = function buildExpressionRow(expression, options, isOrdgroup) {\n return makeRow(buildExpression(expression, options, isOrdgroup));\n};\n/**\n * Takes a group from the parser and calls the appropriate groupBuilders function\n * on it to produce a MathML node.\n */\nvar buildGroup = function buildGroup(group, options) {\n if (!group) {\n return new MathNode(\"mrow\");\n }\n if (_mathmlGroupBuilders[group.type]) {\n // Call the groupBuilders function\n // TODO(ts)\n var result = _mathmlGroupBuilders[group.type](group, options);\n // TODO(ts)\n return result;\n } else {\n throw new ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * <semantics> tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `<math>` inside it so\n * we can do appropriate styling.\n */\nfunction buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly) {\n var expression = buildExpression(tree, options);\n // TODO: Make a pass thru the MathML similar to buildHTML.traverseNonSpaceNodes\n // and add spacing nodes. This is necessary only adjacent to math operators\n // like \\sin or \\lim or to subsup elements that contain math operators.\n // MathML takes care of the other spacing issues.\n // Wrap up the expression in an mrow so it is presented in the semantics\n // tag correctly, unless it's a single <mrow> or <mtable>.\n var wrapper;\n if (expression.length === 1 && expression[0] instanceof MathNode && rowLikeTypes.has(expression[0].type)) {\n wrapper = expression[0];\n } else {\n wrapper = new MathNode(\"mrow\", expression);\n }\n // Build a TeX annotation of the source\n var annotation = new MathNode(\"annotation\", [new TextNode(texExpression)]);\n annotation.setAttribute(\"encoding\", \"application/x-tex\");\n var semantics = new MathNode(\"semantics\", [wrapper, annotation]);\n var math = new MathNode(\"math\", [semantics]);\n math.setAttribute(\"xmlns\", \"http://www.w3.org/1998/Math/MathML\");\n if (isDisplayMode) {\n math.setAttribute(\"display\", \"block\");\n }\n // You can't style <math> nodes, so we wrap the node in a span.\n // NOTE: The span class is not typed to have <math> nodes as children, and\n // we don't want to make the children type more generic since the children\n // of span are expected to have more fields in `buildHtml` contexts.\n var wrapperClass = forMathmlOnly ? \"katex\" : \"katex-mathml\";\n // TODO(ts)\n return makeSpan([wrapperClass], [math]);\n}\n\n/**\n * This file contains information about the options that the Parser carries\n * around with it while parsing. Data is held in an `Options` object, and when\n * recursing, a new `Options` object can be created with the `.with*` and\n * `.reset` functions.\n */\nvar sizeStyleMap = [\n// Each element contains [textsize, scriptsize, scriptscriptsize].\n// The size mappings are taken from TeX with \\normalsize=10pt.\n[1, 1, 1],\n// size1: [5, 5, 5] \\tiny\n[2, 1, 1],\n// size2: [6, 5, 5]\n[3, 1, 1],\n// size3: [7, 5, 5] \\scriptsize\n[4, 2, 1],\n// size4: [8, 6, 5] \\footnotesize\n[5, 2, 1],\n// size5: [9, 6, 5] \\small\n[6, 3, 1],\n// size6: [10, 7, 5] \\normalsize\n[7, 4, 2],\n// size7: [12, 8, 6] \\large\n[8, 6, 3],\n// size8: [14.4, 10, 7] \\Large\n[9, 7, 6],\n// size9: [17.28, 12, 10] \\LARGE\n[10, 8, 7],\n// size10: [20.74, 14.4, 12] \\huge\n[11, 10, 9] // size11: [24.88, 20.74, 17.28] \\HUGE\n];\nvar sizeMultipliers = [\n// fontMetrics.js:getGlobalMetrics also uses size indexes, so if\n// you change size indexes, change that function.\n0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488];\nvar sizeAtStyle = function sizeAtStyle(size, style) {\n return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];\n};\n/**\n * This is the main options class. It contains the current style, size, color,\n * and font.\n *\n * Options objects should not be modified. To create a new Options with\n * different properties, call a `.having*` method.\n */\nclass Options {\n constructor(data) {\n this.style = data.style;\n this.color = data.color;\n this.size = data.size || Options.BASESIZE;\n this.textSize = data.textSize || this.size;\n this.phantom = !!data.phantom;\n this.font = data.font || \"\";\n this.fontFamily = data.fontFamily || \"\";\n this.fontWeight = data.fontWeight || '';\n this.fontShape = data.fontShape || '';\n this.sizeMultiplier = sizeMultipliers[this.size - 1];\n this.maxSize = data.maxSize;\n this.minRuleThickness = data.minRuleThickness;\n this._fontMetrics = undefined;\n }\n /**\n * Returns a new options object with the same properties as \"this\". Properties\n * from \"extension\" will be copied to the new options object.\n */\n extend(extension) {\n var data = {\n style: this.style,\n size: this.size,\n textSize: this.textSize,\n color: this.color,\n phantom: this.phantom,\n font: this.font,\n fontFamily: this.fontFamily,\n fontWeight: this.fontWeight,\n fontShape: this.fontShape,\n maxSize: this.maxSize,\n minRuleThickness: this.minRuleThickness\n };\n Object.assign(data, extension);\n return new Options(data);\n }\n /**\n * Return an options object with the given style. If `this.style === style`,\n * returns `this`.\n */\n havingStyle(style) {\n if (this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: sizeAtStyle(this.textSize, style)\n });\n }\n }\n /**\n * Return an options object with a cramped version of the current style. If\n * the current style is cramped, returns `this`.\n */\n havingCrampedStyle() {\n return this.havingStyle(this.style.cramp());\n }\n /**\n * Return an options object with the given size and in at least `\\textstyle`.\n * Returns `this` if appropriate.\n */\n havingSize(size) {\n if (this.size === size && this.textSize === size) {\n return this;\n } else {\n return this.extend({\n style: this.style.text(),\n size: size,\n textSize: size,\n sizeMultiplier: sizeMultipliers[size - 1]\n });\n }\n }\n /**\n * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,\n * changes to at least `\\textstyle`.\n */\n havingBaseStyle(style) {\n style = style || this.style.text();\n var wantSize = sizeAtStyle(Options.BASESIZE, style);\n if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: wantSize\n });\n }\n }\n /**\n * Remove the effect of sizing changes such as \\Huge.\n * Keep the effect of the current style, such as \\scriptstyle.\n */\n havingBaseSizing() {\n var size;\n switch (this.style.id) {\n case 4:\n case 5:\n size = 3; // normalsize in scriptstyle\n break;\n case 6:\n case 7:\n size = 1; // normalsize in scriptscriptstyle\n break;\n default:\n size = 6;\n // normalsize in textstyle or displaystyle\n }\n return this.extend({\n style: this.style.text(),\n size: size\n });\n }\n /**\n * Create a new options object with the given color.\n */\n withColor(color) {\n return this.extend({\n color: color\n });\n }\n /**\n * Create a new options object with \"phantom\" set to true.\n */\n withPhantom() {\n return this.extend({\n phantom: true\n });\n }\n /**\n * Creates a new options object with the given math font or old text font.\n * @type {[type]}\n */\n withFont(font) {\n return this.extend({\n font\n });\n }\n /**\n * Create a new options objects with the given fontFamily.\n */\n withTextFontFamily(fontFamily) {\n return this.extend({\n fontFamily,\n font: \"\"\n });\n }\n /**\n * Creates a new options object with the given font weight\n */\n withTextFontWeight(fontWeight) {\n return this.extend({\n fontWeight,\n font: \"\"\n });\n }\n /**\n * Creates a new options object with the given font weight\n */\n withTextFontShape(fontShape) {\n return this.extend({\n fontShape,\n font: \"\"\n });\n }\n /**\n * Return the CSS sizing classes required to switch from enclosing options\n * `oldOptions` to `this`. Returns an array of classes.\n */\n sizingClasses(oldOptions) {\n if (oldOptions.size !== this.size) {\n return [\"sizing\", \"reset-size\" + oldOptions.size, \"size\" + this.size];\n } else {\n return [];\n }\n }\n /**\n * Return the CSS sizing classes required to switch to the base size. Like\n * `this.havingSize(BASESIZE).sizingClasses(this)`.\n */\n baseSizingClasses() {\n if (this.size !== Options.BASESIZE) {\n return [\"sizing\", \"reset-size\" + this.size, \"size\" + Options.BASESIZE];\n } else {\n return [];\n }\n }\n /**\n * Return the font metrics for this size.\n */\n fontMetrics() {\n if (!this._fontMetrics) {\n this._fontMetrics = getGlobalMetrics(this.size);\n }\n return this._fontMetrics;\n }\n /**\n * Gets the CSS color of the current options object\n */\n getColor() {\n if (this.phantom) {\n return \"transparent\";\n } else {\n return this.color;\n }\n }\n}\n// A font family applies to a group of fonts (i.e. SansSerif), while a font\n// represents a specific font (i.e. SansSerif Bold).\n// See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm\n/**\n * The base size index.\n */\nOptions.BASESIZE = 6;\n\nvar optionsFromSettings = function optionsFromSettings(settings) {\n return new Options({\n style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT,\n maxSize: settings.maxSize,\n minRuleThickness: settings.minRuleThickness\n });\n};\nvar displayWrap = function displayWrap(node, settings) {\n if (settings.displayMode) {\n var classes = [\"katex-display\"];\n if (settings.leqno) {\n classes.push(\"leqno\");\n }\n if (settings.fleqn) {\n classes.push(\"fleqn\");\n }\n node = makeSpan(classes, [node]);\n }\n return node;\n};\nvar buildTree = function buildTree(tree, expression, settings) {\n var options = optionsFromSettings(settings);\n var katexNode;\n if (settings.output === \"mathml\") {\n return buildMathML(tree, expression, options, settings.displayMode, true);\n } else if (settings.output === \"html\") {\n var htmlNode = buildHTML(tree, options);\n katexNode = makeSpan([\"katex\"], [htmlNode]);\n } else {\n var mathMLNode = buildMathML(tree, expression, options, settings.displayMode, false);\n var _htmlNode = buildHTML(tree, options);\n katexNode = makeSpan([\"katex\"], [mathMLNode, _htmlNode]);\n }\n return displayWrap(katexNode, settings);\n};\nvar buildHTMLTree = function buildHTMLTree(tree, expression, settings) {\n var options = optionsFromSettings(settings);\n var htmlNode = buildHTML(tree, options);\n var katexNode = makeSpan([\"katex\"], [htmlNode]);\n return displayWrap(katexNode, settings);\n};\n\n/**\n * This file provides support to buildMathML.js and buildHTML.js\n * for stretchy wide elements rendered from SVG files\n * and other CSS trickery.\n */\nvar stretchyCodePoint = {\n widehat: \"^\",\n widecheck: \"\u02C7\",\n widetilde: \"~\",\n utilde: \"~\",\n overleftarrow: \"\\u2190\",\n underleftarrow: \"\\u2190\",\n xleftarrow: \"\\u2190\",\n overrightarrow: \"\\u2192\",\n underrightarrow: \"\\u2192\",\n xrightarrow: \"\\u2192\",\n underbrace: \"\\u23df\",\n overbrace: \"\\u23de\",\n underbracket: \"\\u23b5\",\n overbracket: \"\\u23b4\",\n overgroup: \"\\u23e0\",\n undergroup: \"\\u23e1\",\n overleftrightarrow: \"\\u2194\",\n underleftrightarrow: \"\\u2194\",\n xleftrightarrow: \"\\u2194\",\n Overrightarrow: \"\\u21d2\",\n xRightarrow: \"\\u21d2\",\n overleftharpoon: \"\\u21bc\",\n xleftharpoonup: \"\\u21bc\",\n overrightharpoon: \"\\u21c0\",\n xrightharpoonup: \"\\u21c0\",\n xLeftarrow: \"\\u21d0\",\n xLeftrightarrow: \"\\u21d4\",\n xhookleftarrow: \"\\u21a9\",\n xhookrightarrow: \"\\u21aa\",\n xmapsto: \"\\u21a6\",\n xrightharpoondown: \"\\u21c1\",\n xleftharpoondown: \"\\u21bd\",\n xrightleftharpoons: \"\\u21cc\",\n xleftrightharpoons: \"\\u21cb\",\n xtwoheadleftarrow: \"\\u219e\",\n xtwoheadrightarrow: \"\\u21a0\",\n xlongequal: \"=\",\n xtofrom: \"\\u21c4\",\n xrightleftarrows: \"\\u21c4\",\n xrightequilibrium: \"\\u21cc\",\n // Not a perfect match.\n xleftequilibrium: \"\\u21cb\",\n // None better available.\n \"\\\\cdrightarrow\": \"\\u2192\",\n \"\\\\cdleftarrow\": \"\\u2190\",\n \"\\\\cdlongequal\": \"=\"\n};\nvar stretchyMathML = function stretchyMathML(label) {\n var node = new MathNode(\"mo\", [new TextNode(stretchyCodePoint[label.replace(/^\\\\/, '')])]);\n node.setAttribute(\"stretchy\", \"true\");\n return node;\n};\n// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts.\n// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>)\n// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>)\n// Licensed under the SIL Open Font License, Version 1.1.\n// See \\nhttp://scripts.sil.org/OFL\n// Very Long SVGs\n// Many of the KaTeX stretchy wide elements use a long SVG image and an\n// overflow: hidden tactic to achieve a stretchy image while avoiding\n// distortion of arrowheads or brace corners.\n// The SVG typically contains a very long (400 em) arrow.\n// The SVG is in a container span that has overflow: hidden, so the span\n// acts like a window that exposes only part of the SVG.\n// The SVG always has a longer, thinner aspect ratio than the container span.\n// After the SVG fills 100% of the height of the container span,\n// there is a long arrow shaft left over. That left-over shaft is not shown.\n// Instead, it is sliced off because the span's CSS has overflow: hidden.\n// Thus, the reader sees an arrow that matches the subject matter width\n// without distortion.\n// Some functions, such as \\cancel, need to vary their aspect ratio. These\n// functions do not get the overflow SVG treatment.\n// In the katexImagesData object just below, the dimensions all\n// correspond to path geometry inside the relevant SVG.\n// For example, \\overrightarrow uses the same arrowhead as glyph U+2192\n// from the KaTeX Main font. The scaling factor is 1000.\n// That is, inside the font, that arrowhead is 522 units tall, which\n// corresponds to 0.522 em inside the document.\nvar katexImagesData = {\n // path(s), minWidth, height, align\n overrightarrow: [[\"rightarrow\"], 0.888, 522, \"xMaxYMin\"],\n overleftarrow: [[\"leftarrow\"], 0.888, 522, \"xMinYMin\"],\n underrightarrow: [[\"rightarrow\"], 0.888, 522, \"xMaxYMin\"],\n underleftarrow: [[\"leftarrow\"], 0.888, 522, \"xMinYMin\"],\n xrightarrow: [[\"rightarrow\"], 1.469, 522, \"xMaxYMin\"],\n \"\\\\cdrightarrow\": [[\"rightarrow\"], 3.0, 522, \"xMaxYMin\"],\n // CD minwwidth2.5pc\n xleftarrow: [[\"leftarrow\"], 1.469, 522, \"xMinYMin\"],\n \"\\\\cdleftarrow\": [[\"leftarrow\"], 3.0, 522, \"xMinYMin\"],\n Overrightarrow: [[\"doublerightarrow\"], 0.888, 560, \"xMaxYMin\"],\n xRightarrow: [[\"doublerightarrow\"], 1.526, 560, \"xMaxYMin\"],\n xLeftarrow: [[\"doubleleftarrow\"], 1.526, 560, \"xMinYMin\"],\n overleftharpoon: [[\"leftharpoon\"], 0.888, 522, \"xMinYMin\"],\n xleftharpoonup: [[\"leftharpoon\"], 0.888, 522, \"xMinYMin\"],\n xleftharpoondown: [[\"leftharpoondown\"], 0.888, 522, \"xMinYMin\"],\n overrightharpoon: [[\"rightharpoon\"], 0.888, 522, \"xMaxYMin\"],\n xrightharpoonup: [[\"rightharpoon\"], 0.888, 522, \"xMaxYMin\"],\n xrightharpoondown: [[\"rightharpoondown\"], 0.888, 522, \"xMaxYMin\"],\n xlongequal: [[\"longequal\"], 0.888, 334, \"xMinYMin\"],\n \"\\\\cdlongequal\": [[\"longequal\"], 3.0, 334, \"xMinYMin\"],\n xtwoheadleftarrow: [[\"twoheadleftarrow\"], 0.888, 334, \"xMinYMin\"],\n xtwoheadrightarrow: [[\"twoheadrightarrow\"], 0.888, 334, \"xMaxYMin\"],\n overleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 0.888, 522],\n overbrace: [[\"leftbrace\", \"midbrace\", \"rightbrace\"], 1.6, 548],\n underbrace: [[\"leftbraceunder\", \"midbraceunder\", \"rightbraceunder\"], 1.6, 548],\n underleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 0.888, 522],\n xleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 1.75, 522],\n xLeftrightarrow: [[\"doubleleftarrow\", \"doublerightarrow\"], 1.75, 560],\n xrightleftharpoons: [[\"leftharpoondownplus\", \"rightharpoonplus\"], 1.75, 716],\n xleftrightharpoons: [[\"leftharpoonplus\", \"rightharpoondownplus\"], 1.75, 716],\n xhookleftarrow: [[\"leftarrow\", \"righthook\"], 1.08, 522],\n xhookrightarrow: [[\"lefthook\", \"rightarrow\"], 1.08, 522],\n overlinesegment: [[\"leftlinesegment\", \"rightlinesegment\"], 0.888, 522],\n underlinesegment: [[\"leftlinesegment\", \"rightlinesegment\"], 0.888, 522],\n overbracket: [[\"leftbracketover\", \"rightbracketover\"], 1.6, 440],\n underbracket: [[\"leftbracketunder\", \"rightbracketunder\"], 1.6, 410],\n overgroup: [[\"leftgroup\", \"rightgroup\"], 0.888, 342],\n undergroup: [[\"leftgroupunder\", \"rightgroupunder\"], 0.888, 342],\n xmapsto: [[\"leftmapsto\", \"rightarrow\"], 1.5, 522],\n xtofrom: [[\"leftToFrom\", \"rightToFrom\"], 1.75, 528],\n // The next three arrows are from the mhchem package.\n // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the\n // document as \\xrightarrow or \\xrightleftharpoons. Those have\n // min-length = 1.75em, so we set min-length on these next three to match.\n xrightleftarrows: [[\"baraboveleftarrow\", \"rightarrowabovebar\"], 1.75, 901],\n xrightequilibrium: [[\"baraboveshortleftharpoon\", \"rightharpoonaboveshortbar\"], 1.75, 716],\n xleftequilibrium: [[\"shortbaraboveleftharpoon\", \"shortrightharpoonabovebar\"], 1.75, 716]\n};\nvar wideAccentLabels = new Set([\"widehat\", \"widecheck\", \"widetilde\", \"utilde\"]);\nvar stretchySvg = function stretchySvg(group, options) {\n // Create a span with inline SVG for the element.\n function buildSvgSpan_() {\n var viewBoxWidth = 400000; // default\n var label = group.label.slice(1);\n if (wideAccentLabels.has(label)) {\n // Each type in the `if` statement corresponds to one of the ParseNode\n // types below. This narrowing is required to access `grp.base`.\n // TODO(ts)\n var grp = group;\n // There are four SVG images available for each function.\n // Choose a taller image when there are more characters.\n var numChars = grp.base.type === \"ordgroup\" ? grp.base.body.length : 1;\n var viewBoxHeight;\n var pathName;\n var _height;\n if (numChars > 5) {\n if (label === \"widehat\" || label === \"widecheck\") {\n viewBoxHeight = 420;\n viewBoxWidth = 2364;\n _height = 0.42;\n pathName = label + \"4\";\n } else {\n viewBoxHeight = 312;\n viewBoxWidth = 2340;\n _height = 0.34;\n pathName = \"tilde4\";\n }\n } else {\n var imgIndex = [1, 1, 2, 2, 3, 3][numChars];\n if (label === \"widehat\" || label === \"widecheck\") {\n viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex];\n viewBoxHeight = [0, 239, 300, 360, 420][imgIndex];\n _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex];\n pathName = label + imgIndex;\n } else {\n viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex];\n viewBoxHeight = [0, 260, 286, 306, 312][imgIndex];\n _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex];\n pathName = \"tilde\" + imgIndex;\n }\n }\n var path = new PathNode(pathName);\n var svgNode = new SvgNode([path], {\n \"width\": \"100%\",\n \"height\": makeEm(_height),\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight,\n \"preserveAspectRatio\": \"none\"\n });\n return {\n span: makeSvgSpan([], [svgNode], options),\n minWidth: 0,\n height: _height\n };\n } else {\n var spans = [];\n var data = katexImagesData[label];\n var [paths, _minWidth, _viewBoxHeight] = data;\n var _height2 = _viewBoxHeight / 1000;\n var numSvgChildren = paths.length;\n var widthClasses;\n var aligns;\n if (numSvgChildren === 1) {\n // TODO(ts): All these cases must be of the 4-tuple type.\n var align1 = data[3];\n widthClasses = [\"hide-tail\"];\n aligns = [align1];\n } else if (numSvgChildren === 2) {\n widthClasses = [\"halfarrow-left\", \"halfarrow-right\"];\n aligns = [\"xMinYMin\", \"xMaxYMin\"];\n } else if (numSvgChildren === 3) {\n widthClasses = [\"brace-left\", \"brace-center\", \"brace-right\"];\n aligns = [\"xMinYMin\", \"xMidYMin\", \"xMaxYMin\"];\n } else {\n throw new Error(\"Correct katexImagesData or update code here to support\\n \" + numSvgChildren + \" children.\");\n }\n for (var i = 0; i < numSvgChildren; i++) {\n var _path = new PathNode(paths[i]);\n var _svgNode = new SvgNode([_path], {\n \"width\": \"400em\",\n \"height\": makeEm(_height2),\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + _viewBoxHeight,\n \"preserveAspectRatio\": aligns[i] + \" slice\"\n });\n var _span = makeSvgSpan([widthClasses[i]], [_svgNode], options);\n if (numSvgChildren === 1) {\n return {\n span: _span,\n minWidth: _minWidth,\n height: _height2\n };\n } else {\n _span.style.height = makeEm(_height2);\n spans.push(_span);\n }\n }\n return {\n span: makeSpan([\"stretchy\"], spans, options),\n minWidth: _minWidth,\n height: _height2\n };\n }\n } // buildSvgSpan_()\n var {\n span,\n minWidth,\n height\n } = buildSvgSpan_();\n // Note that we are returning span.depth = 0.\n // Any adjustments relative to the baseline must be done in buildHTML.\n span.height = height;\n span.style.height = makeEm(height);\n if (minWidth > 0) {\n span.style.minWidth = makeEm(minWidth);\n }\n return span;\n};\nvar stretchyEnclose = function stretchyEnclose(inner, label, topPad, bottomPad, options) {\n // Return an image span for \\cancel, \\bcancel, \\xcancel, \\fbox, or \\angl\n var img;\n var totalHeight = inner.height + inner.depth + topPad + bottomPad;\n if (/fbox|color|angl/.test(label)) {\n img = makeSpan([\"stretchy\", label], [], options);\n if (label === \"fbox\") {\n var color = options.color && options.getColor();\n if (color) {\n img.style.borderColor = color;\n }\n }\n } else {\n // \\cancel, \\bcancel, or \\xcancel\n // Since \\cancel's SVG is inline and it omits the viewBox attribute,\n // its stroke-width will not vary with span area.\n var lines = [];\n if (/^[bx]cancel$/.test(label)) {\n lines.push(new LineNode({\n \"x1\": \"0\",\n \"y1\": \"0\",\n \"x2\": \"100%\",\n \"y2\": \"100%\",\n \"stroke-width\": \"0.046em\"\n }));\n }\n if (/^x?cancel$/.test(label)) {\n lines.push(new LineNode({\n \"x1\": \"0\",\n \"y1\": \"100%\",\n \"x2\": \"100%\",\n \"y2\": \"0\",\n \"stroke-width\": \"0.046em\"\n }));\n }\n var svgNode = new SvgNode(lines, {\n \"width\": \"100%\",\n \"height\": makeEm(totalHeight)\n });\n img = makeSvgSpan([], [svgNode], options);\n }\n img.height = totalHeight;\n img.style.height = makeEm(totalHeight);\n return img;\n};\n\n/**\n * Asserts that the node is of the given type and returns it with stricter\n * typing. Throws if the node's type does not match.\n */\nfunction assertNodeType(node, type) {\n if (!node || node.type !== type) {\n throw new Error(\"Expected node of type \" + type + \", but got \" + (node ? \"node of type \" + node.type : String(node)));\n }\n return node;\n}\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\nfunction assertSymbolNodeType(node) {\n var typedNode = checkSymbolNodeType(node);\n if (!typedNode) {\n throw new Error(\"Expected node of symbol group type, but got \" + (node ? \"node of type \" + node.type : String(node)));\n }\n return typedNode;\n}\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\nfunction checkSymbolNodeType(node) {\n if (node && (node.type === \"atom\" || NON_ATOMS.hasOwnProperty(node.type))) {\n return node;\n }\n return null;\n}\n\nvar getBaseSymbol = group => {\n if (group instanceof SymbolNode) {\n return group;\n }\n if (hasHtmlDomChildren(group) && group.children.length === 1) {\n return getBaseSymbol(group.children[0]);\n }\n};\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"accent\", but\n// also \"supsub\" since an accent can affect super/subscripting.\nvar htmlBuilder$a = (grp, options) => {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n var base;\n var group;\n var supSubGroup;\n if (grp && grp.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n // The real accent group is the base of the supsub group\n group = assertNodeType(grp.base, \"accent\");\n // The character box is the base of the accent group\n base = group.base;\n // Stick the character box into the base of the supsub group\n grp.base = base;\n // Rerender the supsub group with its new base, and store that\n // result.\n supSubGroup = assertSpan(buildGroup$1(grp, options));\n // reset original base\n grp.base = group;\n } else {\n group = assertNodeType(grp, \"accent\");\n base = group.base;\n }\n // Build the base group\n var body = buildGroup$1(base, options.havingCrampedStyle());\n // Does the accent need to shift for the skew of a character?\n var mustShift = group.isShifty && isCharacterBox(base);\n // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n var skew = 0;\n if (mustShift) {\n var _getBaseSymbol$skew, _getBaseSymbol;\n // Read the skew from the rendered base symbol.\n // This preserves font metrics from font wrappers like \\mathbb.\n skew = (_getBaseSymbol$skew = (_getBaseSymbol = getBaseSymbol(body)) == null ? void 0 : _getBaseSymbol.skew) != null ? _getBaseSymbol$skew : 0;\n }\n var accentBelow = group.label === \"\\\\c\";\n // calculate the amount of space between the body and the accent\n var clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options.fontMetrics().xHeight);\n // Build the accent\n var accentBody;\n if (!group.isStretchy) {\n var accent;\n var width;\n if (group.label === \"\\\\vec\") {\n // Before version 0.9, \\vec used the combining font glyph U+20D7.\n // But browsers, especially Safari, are not consistent in how they\n // render combining characters when not preceded by a character.\n // So now we use an SVG.\n // If Safari reforms, we should consider reverting to the glyph.\n accent = staticSvg(\"vec\", options);\n width = svgData.vec[1];\n } else {\n accent = makeOrd({\n type: \"textord\",\n mode: group.mode,\n text: group.label\n }, options, \"textord\");\n accent = assertSymbolDomNode(accent);\n // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n accent.italic = 0;\n width = accent.width;\n if (accentBelow) {\n clearance += accent.depth;\n }\n }\n accentBody = makeSpan([\"accent-body\"], [accent]);\n // \"Full\" accents expand the width of the resulting symbol to be\n // at least the width of the accent, and overlap directly onto the\n // character without any vertical offset.\n var accentFull = group.label === \"\\\\textcircled\";\n if (accentFull) {\n accentBody.classes.push('accent-full');\n clearance = body.height;\n }\n // Shift the accent over by the skew.\n var left = skew;\n // CSS defines `.katex .accent .accent-body:not(.accent-full) { width: 0 }`\n // so that the accent doesn't contribute to the bounding box.\n // We need to shift the character by its width (effectively half\n // its width) to compensate.\n if (!accentFull) {\n left -= width / 2;\n }\n accentBody.style.left = makeEm(left);\n // \\textcircled uses the \\bigcirc glyph, so it needs some\n // vertical adjustment to match LaTeX.\n if (group.label === \"\\\\textcircled\") {\n accentBody.style.top = \".2em\";\n }\n accentBody = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"kern\",\n size: -clearance\n }, {\n type: \"elem\",\n elem: accentBody\n }]\n });\n } else {\n accentBody = stretchySvg(group, options);\n accentBody = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"elem\",\n elem: accentBody,\n wrapperClasses: [\"svg-align\"],\n wrapperStyle: skew > 0 ? {\n width: \"calc(100% - \" + makeEm(2 * skew) + \")\",\n marginLeft: makeEm(2 * skew)\n } : undefined\n }]\n });\n }\n var accentWrap = makeSpan([\"mord\", \"accent\"], [accentBody], options);\n if (supSubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supSubGroup.children[0] = accentWrap;\n // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height);\n // Accents should always be ords, even when their innards are not.\n supSubGroup.classes[0] = \"mord\";\n return supSubGroup;\n } else {\n return accentWrap;\n }\n};\nvar mathmlBuilder$9 = (group, options) => {\n var accentNode = group.isStretchy ? stretchyMathML(group.label) : new MathNode(\"mo\", [makeText(group.label, group.mode)]);\n var node = new MathNode(\"mover\", [buildGroup(group.base, options), accentNode]);\n node.setAttribute(\"accent\", \"true\");\n return node;\n};\nvar NON_STRETCHY_ACCENT_REGEX = new RegExp([\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\mathring\"].map(accent => \"\\\\\" + accent).join(\"|\"));\n// Accents\ndefineFunction({\n type: \"accent\",\n names: [\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\mathring\", \"\\\\widecheck\", \"\\\\widehat\", \"\\\\widetilde\", \"\\\\overrightarrow\", \"\\\\overleftarrow\", \"\\\\Overrightarrow\", \"\\\\overleftrightarrow\", \"\\\\overgroup\", \"\\\\overlinesegment\", \"\\\\overleftharpoon\", \"\\\\overrightharpoon\"],\n props: {\n numArgs: 1\n },\n handler: (context, args) => {\n var base = normalizeArgument(args[0]);\n var isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName);\n var isShifty = !isStretchy || context.funcName === \"\\\\widehat\" || context.funcName === \"\\\\widetilde\" || context.funcName === \"\\\\widecheck\";\n return {\n type: \"accent\",\n mode: context.parser.mode,\n label: context.funcName,\n isStretchy: isStretchy,\n isShifty: isShifty,\n base: base\n };\n },\n htmlBuilder: htmlBuilder$a,\n mathmlBuilder: mathmlBuilder$9\n});\n// Text-mode accents\ndefineFunction({\n type: \"accent\",\n names: [\"\\\\'\", \"\\\\`\", \"\\\\^\", \"\\\\~\", \"\\\\=\", \"\\\\u\", \"\\\\.\", '\\\\\"', \"\\\\c\", \"\\\\r\", \"\\\\H\", \"\\\\v\", \"\\\\textcircled\"],\n props: {\n numArgs: 1,\n allowedInText: true,\n allowedInMath: true,\n // unless in strict mode\n argTypes: [\"primitive\"]\n },\n handler: (context, args) => {\n var base = args[0];\n var mode = context.parser.mode;\n if (mode === \"math\") {\n context.parser.settings.reportNonstrict(\"mathVsTextAccents\", \"LaTeX's accent \" + context.funcName + \" works only in text mode\");\n mode = \"text\";\n }\n return {\n type: \"accent\",\n mode: mode,\n label: context.funcName,\n isStretchy: false,\n isShifty: true,\n base: base\n };\n },\n htmlBuilder: htmlBuilder$a,\n mathmlBuilder: mathmlBuilder$9\n});\n\n// Horizontal overlap functions\ndefineFunction({\n type: \"accentUnder\",\n names: [\"\\\\underleftarrow\", \"\\\\underrightarrow\", \"\\\\underleftrightarrow\", \"\\\\undergroup\", \"\\\\underlinesegment\", \"\\\\utilde\"],\n props: {\n numArgs: 1\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var base = args[0];\n return {\n type: \"accentUnder\",\n mode: parser.mode,\n label: funcName,\n base: base\n };\n },\n htmlBuilder: (group, options) => {\n // Treat under accents much like underlines.\n var innerGroup = buildGroup$1(group.base, options);\n var accentBody = stretchySvg(group, options);\n var kern = group.label === \"\\\\utilde\" ? 0.12 : 0;\n // Generate the vlist, with the appropriate kerns\n var vlist = makeVList({\n positionType: \"top\",\n positionData: innerGroup.height,\n children: [{\n type: \"elem\",\n elem: accentBody,\n wrapperClasses: [\"svg-align\"]\n }, {\n type: \"kern\",\n size: kern\n }, {\n type: \"elem\",\n elem: innerGroup\n }]\n });\n return makeSpan([\"mord\", \"accentunder\"], [vlist], options);\n },\n mathmlBuilder: (group, options) => {\n var accentNode = stretchyMathML(group.label);\n var node = new MathNode(\"munder\", [buildGroup(group.base, options), accentNode]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n }\n});\n\n// Helper function\nvar paddedNode = group => {\n var node = new MathNode(\"mpadded\", group ? [group] : []);\n node.setAttribute(\"width\", \"+0.6em\");\n node.setAttribute(\"lspace\", \"0.3em\");\n return node;\n};\n// Stretchy arrows with an optional argument\ndefineFunction({\n type: \"xArrow\",\n names: [\"\\\\xleftarrow\", \"\\\\xrightarrow\", \"\\\\xLeftarrow\", \"\\\\xRightarrow\", \"\\\\xleftrightarrow\", \"\\\\xLeftrightarrow\", \"\\\\xhookleftarrow\", \"\\\\xhookrightarrow\", \"\\\\xmapsto\", \"\\\\xrightharpoondown\", \"\\\\xrightharpoonup\", \"\\\\xleftharpoondown\", \"\\\\xleftharpoonup\", \"\\\\xrightleftharpoons\", \"\\\\xleftrightharpoons\", \"\\\\xlongequal\", \"\\\\xtwoheadrightarrow\", \"\\\\xtwoheadleftarrow\", \"\\\\xtofrom\",\n // The next 3 functions are here to support the mhchem extension.\n // Direct use of these functions is discouraged and may break someday.\n \"\\\\xrightleftarrows\", \"\\\\xrightequilibrium\", \"\\\\xleftequilibrium\",\n // The next 3 functions are here only to support the {CD} environment.\n \"\\\\\\\\cdrightarrow\", \"\\\\\\\\cdleftarrow\", \"\\\\\\\\cdlongequal\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1\n },\n handler(_ref, args, optArgs) {\n var {\n parser,\n funcName\n } = _ref;\n return {\n type: \"xArrow\",\n mode: parser.mode,\n label: funcName,\n body: args[0],\n below: optArgs[0]\n };\n },\n htmlBuilder(group, options) {\n var style = options.style;\n // Build the argument groups in the appropriate style.\n // Ref: amsmath.dtx: \\hbox{$\\scriptstyle\\mkern#3mu{#6}\\mkern#4mu$}%\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n var newOptions = options.havingStyle(style.sup());\n var upperGroup = wrapFragment(buildGroup$1(group.body, newOptions, options), options);\n var arrowPrefix = group.label.slice(0, 2) === \"\\\\x\" ? \"x\" : \"cd\";\n upperGroup.classes.push(arrowPrefix + \"-arrow-pad\");\n var lowerGroup;\n if (group.below) {\n // Build the lower group\n newOptions = options.havingStyle(style.sub());\n lowerGroup = wrapFragment(buildGroup$1(group.below, newOptions, options), options);\n lowerGroup.classes.push(arrowPrefix + \"-arrow-pad\");\n }\n var arrowBody = stretchySvg(group, options);\n // Re shift: Note that stretchySvg returned arrowBody.depth = 0.\n // The point we want on the math axis is at 0.5 * arrowBody.height.\n var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height;\n // 2 mu kern. Ref: amsmath.dtx: #7\\if0#2\\else\\mkern#2mu\\fi\n var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; // 0.111 em = 2 mu\n if (upperGroup.depth > 0.25 || group.label === \"\\\\xleftequilibrium\") {\n upperShift -= upperGroup.depth; // shift up if depth encroaches\n }\n // Generate the vlist\n var vlist;\n if (lowerGroup) {\n var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111;\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: upperGroup,\n shift: upperShift\n }, {\n type: \"elem\",\n elem: arrowBody,\n shift: arrowShift\n }, {\n type: \"elem\",\n elem: lowerGroup,\n shift: lowerShift\n }]\n });\n } else {\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: upperGroup,\n shift: upperShift\n }, {\n type: \"elem\",\n elem: arrowBody,\n shift: arrowShift\n }]\n });\n }\n // TODO(ts): Replace this with passing \"svg-align\" into makeVList.\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n return makeSpan([\"mrel\", \"x-arrow\"], [vlist], options);\n },\n mathmlBuilder(group, options) {\n var arrowNode = stretchyMathML(group.label);\n arrowNode.setAttribute(\"minsize\", group.label.charAt(0) === \"x\" ? \"1.75em\" : \"3.0em\");\n var node;\n if (group.body) {\n var upperNode = paddedNode(buildGroup(group.body, options));\n if (group.below) {\n var lowerNode = paddedNode(buildGroup(group.below, options));\n node = new MathNode(\"munderover\", [arrowNode, lowerNode, upperNode]);\n } else {\n node = new MathNode(\"mover\", [arrowNode, upperNode]);\n }\n } else if (group.below) {\n var _lowerNode = paddedNode(buildGroup(group.below, options));\n node = new MathNode(\"munder\", [arrowNode, _lowerNode]);\n } else {\n // This should never happen.\n // Parser.js throws an error if there is no argument.\n node = paddedNode();\n node = new MathNode(\"mover\", [arrowNode, node]);\n }\n return node;\n }\n});\n\nfunction htmlBuilder$9(group, options) {\n var elements = buildExpression$1(group.body, options, true);\n return makeSpan([group.mclass], elements, options);\n}\nfunction mathmlBuilder$8(group, options) {\n var node;\n var inner = buildExpression(group.body, options);\n if (group.mclass === \"minner\") {\n node = new MathNode(\"mpadded\", inner);\n } else if (group.mclass === \"mord\") {\n if (group.isCharacterBox) {\n node = inner[0];\n node.type = \"mi\";\n } else {\n node = new MathNode(\"mi\", inner);\n }\n } else {\n if (group.isCharacterBox) {\n node = inner[0];\n node.type = \"mo\";\n } else {\n node = new MathNode(\"mo\", inner);\n }\n // Set spacing based on what is the most likely adjacent atom type.\n // See TeXbook p170.\n if (group.mclass === \"mbin\") {\n node.attributes.lspace = \"0.22em\"; // medium space\n node.attributes.rspace = \"0.22em\";\n } else if (group.mclass === \"mpunct\") {\n node.attributes.lspace = \"0em\";\n node.attributes.rspace = \"0.17em\"; // thinspace\n } else if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n node.attributes.lspace = \"0em\";\n node.attributes.rspace = \"0em\";\n } else if (group.mclass === \"minner\") {\n node.attributes.lspace = \"0.0556em\"; // 1 mu is the most likely option\n node.attributes.width = \"+0.1111em\";\n }\n // MathML <mo> default space is 5/18 em, so <mrel> needs no action.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo\n }\n return node;\n}\n// Math class commands except \\mathop\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\mathord\", \"\\\\mathbin\", \"\\\\mathrel\", \"\\\\mathopen\", \"\\\\mathclose\", \"\\\\mathpunct\", \"\\\\mathinner\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: \"m\" + funcName.slice(5),\n // TODO(kevinb): don't prefix with 'm'\n body: ordargument(body),\n isCharacterBox: isCharacterBox(body)\n };\n },\n htmlBuilder: htmlBuilder$9,\n mathmlBuilder: mathmlBuilder$8\n});\nvar binrelClass = arg => {\n // \\binrel@ spacing varies with (bin|rel|ord) of the atom in the argument.\n // (by rendering separately and with {}s before and after, and measuring\n // the change in spacing). We'll do roughly the same by detecting the\n // atom type directly.\n var atom = arg.type === \"ordgroup\" && arg.body.length ? arg.body[0] : arg;\n if (atom.type === \"atom\" && (atom.family === \"bin\" || atom.family === \"rel\")) {\n return \"m\" + atom.family;\n } else {\n return \"mord\";\n }\n};\n// \\@binrel{x}{y} renders like y but as mbin/mrel/mord if x is mbin/mrel/mord.\n// This is equivalent to \\binrel@{x}\\binrel@@{y} in AMSTeX.\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\@binrel\"],\n props: {\n numArgs: 2\n },\n handler(_ref2, args) {\n var {\n parser\n } = _ref2;\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: binrelClass(args[0]),\n body: ordargument(args[1]),\n isCharacterBox: isCharacterBox(args[1])\n };\n }\n});\n// Build a relation or stacked op by placing one symbol on top of another\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\stackrel\", \"\\\\overset\", \"\\\\underset\"],\n props: {\n numArgs: 2\n },\n handler(_ref3, args) {\n var {\n parser,\n funcName\n } = _ref3;\n var baseArg = args[1];\n var shiftedArg = args[0];\n var mclass;\n if (funcName !== \"\\\\stackrel\") {\n // LaTeX applies \\binrel spacing to \\overset and \\underset.\n mclass = binrelClass(baseArg);\n } else {\n mclass = \"mrel\"; // for \\stackrel\n }\n var baseOp = {\n type: \"op\",\n mode: baseArg.mode,\n limits: true,\n alwaysHandleSupSub: true,\n parentIsSupSub: false,\n symbol: false,\n suppressBaseShift: funcName !== \"\\\\stackrel\",\n body: ordargument(baseArg)\n };\n var supsub = {\n type: \"supsub\",\n mode: shiftedArg.mode,\n base: baseOp,\n sup: funcName === \"\\\\underset\" ? null : shiftedArg,\n sub: funcName === \"\\\\underset\" ? shiftedArg : null\n };\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass,\n body: [supsub],\n isCharacterBox: isCharacterBox(supsub)\n };\n },\n htmlBuilder: htmlBuilder$9,\n mathmlBuilder: mathmlBuilder$8\n});\n\n// \\pmb is a simulation of bold font.\n// The version of \\pmb in ambsy.sty works by typesetting three copies\n// with small offsets. We use CSS text-shadow.\n// It's a hack. Not as good as a real bold font. Better than nothing.\ndefineFunction({\n type: \"pmb\",\n names: [\"\\\\pmb\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"pmb\",\n mode: parser.mode,\n mclass: binrelClass(args[0]),\n body: ordargument(args[0])\n };\n },\n htmlBuilder(group, options) {\n var elements = buildExpression$1(group.body, options, true);\n var node = makeSpan([group.mclass], elements, options);\n node.style.textShadow = \"0.02em 0.01em 0.04px\";\n return node;\n },\n mathmlBuilder(group, style) {\n var inner = buildExpression(group.body, style);\n // Wrap with an <mstyle> element.\n var node = new MathNode(\"mstyle\", inner);\n node.setAttribute(\"style\", \"text-shadow: 0.02em 0.01em 0.04px\");\n return node;\n }\n});\n\nvar cdArrowFunctionName = {\n \">\": \"\\\\\\\\cdrightarrow\",\n \"<\": \"\\\\\\\\cdleftarrow\",\n \"=\": \"\\\\\\\\cdlongequal\",\n \"A\": \"\\\\uparrow\",\n \"V\": \"\\\\downarrow\",\n \"|\": \"\\\\Vert\",\n \".\": \"no arrow\"\n};\nvar newCell = () => {\n // Create an empty cell, to be filled below with parse nodes.\n // The parseTree from this module must be constructed like the\n // one created by parseArray(), so an empty CD cell must\n // be a ParseNode<\"styling\">. And CD is always displaystyle.\n return {\n type: \"styling\",\n body: [],\n mode: \"math\",\n style: \"display\"\n };\n};\nvar isStartOfArrow = node => {\n return node.type === \"textord\" && node.text === \"@\";\n};\nvar isLabelEnd = (node, endChar) => {\n return (node.type === \"mathord\" || node.type === \"atom\") && node.text === endChar;\n};\nfunction cdArrow(arrowChar, labels, parser) {\n // Return a parse tree of an arrow and its labels.\n // This acts in a way similar to a macro expansion.\n var funcName = cdArrowFunctionName[arrowChar];\n switch (funcName) {\n case \"\\\\\\\\cdrightarrow\":\n case \"\\\\\\\\cdleftarrow\":\n return parser.callFunction(funcName, [labels[0]], [labels[1]]);\n case \"\\\\uparrow\":\n case \"\\\\downarrow\":\n {\n var leftLabel = parser.callFunction(\"\\\\\\\\cdleft\", [labels[0]], []);\n var bareArrow = {\n type: \"atom\",\n text: funcName,\n mode: \"math\",\n family: \"rel\"\n };\n var sizedArrow = parser.callFunction(\"\\\\Big\", [bareArrow], []);\n var rightLabel = parser.callFunction(\"\\\\\\\\cdright\", [labels[1]], []);\n var arrowGroup = {\n type: \"ordgroup\",\n mode: \"math\",\n body: [leftLabel, sizedArrow, rightLabel]\n };\n return parser.callFunction(\"\\\\\\\\cdparent\", [arrowGroup], []);\n }\n case \"\\\\\\\\cdlongequal\":\n return parser.callFunction(\"\\\\\\\\cdlongequal\", [], []);\n case \"\\\\Vert\":\n {\n var arrow = {\n type: \"textord\",\n text: \"\\\\Vert\",\n mode: \"math\"\n };\n return parser.callFunction(\"\\\\Big\", [arrow], []);\n }\n default:\n return {\n type: \"textord\",\n text: \" \",\n mode: \"math\"\n };\n }\n}\nfunction parseCD(parser) {\n // Get the array's parse nodes with \\\\ temporarily mapped to \\cr.\n var parsedRows = [];\n parser.gullet.beginGroup();\n parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n parser.gullet.beginGroup();\n while (true) {\n // eslint-disable-line no-constant-condition\n // Get the parse nodes for the next row.\n parsedRows.push(parser.parseExpression(false, \"\\\\\\\\\"));\n parser.gullet.endGroup();\n parser.gullet.beginGroup();\n var next = parser.fetch().text;\n if (next === \"&\" || next === \"\\\\\\\\\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n if (parsedRows[parsedRows.length - 1].length === 0) {\n parsedRows.pop(); // final row ended in \\\\\n }\n break;\n } else {\n throw new ParseError(\"Expected \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n }\n }\n var row = [];\n var body = [row];\n // Loop thru the parse nodes. Collect them into cells and arrows.\n for (var i = 0; i < parsedRows.length; i++) {\n // Start a new row.\n var rowNodes = parsedRows[i];\n // Create the first cell.\n var cell = newCell();\n for (var j = 0; j < rowNodes.length; j++) {\n if (!isStartOfArrow(rowNodes[j])) {\n // If a parseNode is not an arrow, it goes into a cell.\n cell.body.push(rowNodes[j]);\n } else {\n // Parse node j is an \"@\", the start of an arrow.\n // Before starting on the arrow, push the cell into `row`.\n row.push(cell);\n // Now collect parseNodes into an arrow.\n // The character after \"@\" defines the arrow type.\n j += 1;\n var arrowChar = assertSymbolNodeType(rowNodes[j]).text;\n // Create two empty label nodes. We may or may not use them.\n var labels = new Array(2);\n labels[0] = {\n type: \"ordgroup\",\n mode: \"math\",\n body: []\n };\n labels[1] = {\n type: \"ordgroup\",\n mode: \"math\",\n body: []\n };\n // Process the arrow.\n if (\"=|.\".includes(arrowChar)) ; else if (\"<>AV\".includes(arrowChar)) {\n // Four arrows, `@>>>`, `@<<<`, `@AAA`, and `@VVV`, each take\n // two optional labels. E.g. the right-point arrow syntax is\n // really: @>{optional label}>{optional label}>\n // Collect parseNodes into labels.\n for (var labelNum = 0; labelNum < 2; labelNum++) {\n var inLabel = true;\n for (var k = j + 1; k < rowNodes.length; k++) {\n if (isLabelEnd(rowNodes[k], arrowChar)) {\n inLabel = false;\n j = k;\n break;\n }\n if (isStartOfArrow(rowNodes[k])) {\n throw new ParseError(\"Missing a \" + arrowChar + \" character to complete a CD arrow.\", rowNodes[k]);\n }\n labels[labelNum].body.push(rowNodes[k]);\n }\n if (inLabel) {\n // isLabelEnd never returned a true.\n throw new ParseError(\"Missing a \" + arrowChar + \" character to complete a CD arrow.\", rowNodes[j]);\n }\n }\n } else {\n throw new ParseError(\"Expected one of \\\"<>AV=|.\\\" after @\", rowNodes[j]);\n }\n // Now join the arrow to its labels.\n var arrow = cdArrow(arrowChar, labels, parser);\n // Wrap the arrow in ParseNode<\"styling\">.\n // This is done to match parseArray() behavior.\n var wrappedArrow = {\n type: \"styling\",\n body: [arrow],\n mode: \"math\",\n style: \"display\" // CD is always displaystyle.\n };\n row.push(wrappedArrow);\n // In CD's syntax, cells are implicit. That is, everything that\n // is not an arrow gets collected into a cell. So create an empty\n // cell now. It will collect upcoming parseNodes.\n cell = newCell();\n }\n }\n if (i % 2 === 0) {\n // Even-numbered rows consist of: cell, arrow, cell, arrow, ... cell\n // The last cell is not yet pushed into `row`, so:\n row.push(cell);\n } else {\n // Odd-numbered rows consist of: vert arrow, empty cell, ... vert arrow\n // Remove the empty cell that was placed at the beginning of `row`.\n row.shift();\n }\n row = [];\n body.push(row);\n }\n // End row group\n parser.gullet.endGroup();\n // End array group defining \\\\\n parser.gullet.endGroup();\n // define column separation.\n var cols = new Array(body[0].length).fill({\n type: \"align\",\n align: \"c\",\n pregap: 0.25,\n // CD package sets \\enskip between columns.\n postgap: 0.25 // So pre and post each get half an \\enskip, i.e. 0.25em.\n });\n return {\n type: \"array\",\n mode: \"math\",\n body,\n arraystretch: 1,\n addJot: true,\n rowGaps: [null],\n cols,\n colSeparationType: \"CD\",\n hLinesBeforeRow: new Array(body.length + 1).fill([])\n };\n}\n// The functions below are not available for general use.\n// They are here only for internal use by the {CD} environment in placing labels\n// next to vertical arrows.\n// We don't need any such functions for horizontal arrows because we can reuse\n// the functionality that already exists for extensible arrows.\ndefineFunction({\n type: \"cdlabel\",\n names: [\"\\\\\\\\cdleft\", \"\\\\\\\\cdright\"],\n props: {\n numArgs: 1\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n return {\n type: \"cdlabel\",\n mode: parser.mode,\n side: funcName.slice(4),\n label: args[0]\n };\n },\n htmlBuilder(group, options) {\n var newOptions = options.havingStyle(options.style.sup());\n var label = wrapFragment(buildGroup$1(group.label, newOptions, options), options);\n label.classes.push(\"cd-label-\" + group.side);\n label.style.bottom = makeEm(0.8 - label.depth);\n // Zero out label height & depth, so vertical align of arrow is set\n // by the arrow height, not by the label.\n label.height = 0;\n label.depth = 0;\n return label;\n },\n mathmlBuilder(group, options) {\n var label = new MathNode(\"mrow\", [buildGroup(group.label, options)]);\n label = new MathNode(\"mpadded\", [label]);\n label.setAttribute(\"width\", \"0\");\n if (group.side === \"left\") {\n label.setAttribute(\"lspace\", \"-1width\");\n }\n // We have to guess at vertical alignment. We know the arrow is 1.8em tall,\n // But we don't know the height or depth of the label.\n label.setAttribute(\"voffset\", \"0.7em\");\n label = new MathNode(\"mstyle\", [label]);\n label.setAttribute(\"displaystyle\", \"false\");\n label.setAttribute(\"scriptlevel\", \"1\");\n return label;\n }\n});\ndefineFunction({\n type: \"cdlabelparent\",\n names: [\"\\\\\\\\cdparent\"],\n props: {\n numArgs: 1\n },\n handler(_ref2, args) {\n var {\n parser\n } = _ref2;\n return {\n type: \"cdlabelparent\",\n mode: parser.mode,\n fragment: args[0]\n };\n },\n htmlBuilder(group, options) {\n // Wrap the vertical arrow and its labels.\n // The parent gets position: relative. The child gets position: absolute.\n // So CSS can locate the label correctly.\n var parent = wrapFragment(buildGroup$1(group.fragment, options), options);\n parent.classes.push(\"cd-vert-arrow\");\n return parent;\n },\n mathmlBuilder(group, options) {\n return new MathNode(\"mrow\", [buildGroup(group.fragment, options)]);\n }\n});\n\n// \\@char is an internal function that takes a grouped decimal argument like\n// {123} and converts into symbol with code 123. It is used by the *macro*\n// \\char defined in macros.js.\ndefineFunction({\n type: \"textord\",\n names: [\"\\\\@char\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var arg = assertNodeType(args[0], \"ordgroup\");\n var group = arg.body;\n var number = \"\";\n for (var i = 0; i < group.length; i++) {\n var node = assertNodeType(group[i], \"textord\");\n number += node.text;\n }\n var code = parseInt(number);\n var text;\n if (isNaN(code)) {\n throw new ParseError(\"\\\\@char has non-numeric argument \" + number);\n // If we drop IE support, the following code could be replaced with\n // text = String.fromCodePoint(code)\n } else if (code < 0 || code >= 0x10ffff) {\n throw new ParseError(\"\\\\@char with invalid code point \" + number);\n } else if (code <= 0xffff) {\n text = String.fromCharCode(code);\n } else {\n // Astral code point; split into surrogate halves\n code -= 0x10000;\n text = String.fromCharCode((code >> 10) + 0xd800, (code & 0x3ff) + 0xdc00);\n }\n return {\n type: \"textord\",\n mode: parser.mode,\n text: text\n };\n }\n});\n\nvar htmlBuilder$8 = (group, options) => {\n var elements = buildExpression$1(group.body, options.withColor(group.color), false);\n // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n return makeFragment(elements);\n};\nvar mathmlBuilder$7 = (group, options) => {\n var inner = buildExpression(group.body, options.withColor(group.color));\n var node = new MathNode(\"mstyle\", inner);\n node.setAttribute(\"mathcolor\", group.color);\n return node;\n};\ndefineFunction({\n type: \"color\",\n names: [\"\\\\textcolor\"],\n props: {\n numArgs: 2,\n allowedInText: true,\n argTypes: [\"color\", \"original\"]\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var color = assertNodeType(args[0], \"color-token\").color;\n var body = args[1];\n return {\n type: \"color\",\n mode: parser.mode,\n color,\n body: ordargument(body)\n };\n },\n htmlBuilder: htmlBuilder$8,\n mathmlBuilder: mathmlBuilder$7\n});\ndefineFunction({\n type: \"color\",\n names: [\"\\\\color\"],\n props: {\n numArgs: 1,\n allowedInText: true,\n argTypes: [\"color\"]\n },\n handler(_ref2, args) {\n var {\n parser,\n breakOnTokenText\n } = _ref2;\n var color = assertNodeType(args[0], \"color-token\").color;\n // Set macro \\current@color in current namespace to store the current\n // color, mimicking the behavior of color.sty.\n // This is currently used just to correctly color a \\right\n // that follows a \\color command.\n parser.gullet.macros.set(\"\\\\current@color\", color);\n // Parse out the implicit body that should be colored.\n var body = parser.parseExpression(true, breakOnTokenText);\n return {\n type: \"color\",\n mode: parser.mode,\n color,\n body\n };\n },\n htmlBuilder: htmlBuilder$8,\n mathmlBuilder: mathmlBuilder$7\n});\n\n// Row breaks within tabular environments, and line breaks at top level\n// \\DeclareRobustCommand\\\\{...\\@xnewline}\ndefineFunction({\n type: \"cr\",\n names: [\"\\\\\\\\\"],\n props: {\n numArgs: 0,\n numOptionalArgs: 0,\n allowedInText: true\n },\n handler(_ref, args, optArgs) {\n var {\n parser\n } = _ref;\n var size = parser.gullet.future().text === \"[\" ? parser.parseSizeGroup(true) : null;\n var newLine = !parser.settings.displayMode || !parser.settings.useStrictBehavior(\"newLineInDisplayMode\", \"In LaTeX, \\\\\\\\ or \\\\newline \" + \"does nothing in display mode\");\n return {\n type: \"cr\",\n mode: parser.mode,\n newLine,\n size: size && assertNodeType(size, \"size\").value\n };\n },\n // The following builders are called only at the top level,\n // not within tabular/array environments.\n htmlBuilder(group, options) {\n var span = makeSpan([\"mspace\"], [], options);\n if (group.newLine) {\n span.classes.push(\"newline\");\n if (group.size) {\n span.style.marginTop = makeEm(calculateSize(group.size, options));\n }\n }\n return span;\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mspace\");\n if (group.newLine) {\n node.setAttribute(\"linebreak\", \"newline\");\n if (group.size) {\n node.setAttribute(\"height\", makeEm(calculateSize(group.size, options)));\n }\n }\n return node;\n }\n});\n\nvar globalMap = {\n \"\\\\global\": \"\\\\global\",\n \"\\\\long\": \"\\\\\\\\globallong\",\n \"\\\\\\\\globallong\": \"\\\\\\\\globallong\",\n \"\\\\def\": \"\\\\gdef\",\n \"\\\\gdef\": \"\\\\gdef\",\n \"\\\\edef\": \"\\\\xdef\",\n \"\\\\xdef\": \"\\\\xdef\",\n \"\\\\let\": \"\\\\\\\\globallet\",\n \"\\\\futurelet\": \"\\\\\\\\globalfuture\"\n};\nvar checkControlSequence = tok => {\n var name = tok.text;\n if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n throw new ParseError(\"Expected a control sequence\", tok);\n }\n return name;\n};\nvar getRHS = parser => {\n var tok = parser.gullet.popToken();\n if (tok.text === \"=\") {\n // consume optional equals\n tok = parser.gullet.popToken();\n if (tok.text === \" \") {\n // consume one optional space\n tok = parser.gullet.popToken();\n }\n }\n return tok;\n};\nvar letCommand = (parser, name, tok, global) => {\n var macro = parser.gullet.macros.get(tok.text);\n if (macro == null) {\n // don't expand it later even if a macro with the same name is defined\n // e.g., \\let\\foo=\\frac \\def\\frac{\\relax} \\frac12\n tok.noexpand = true;\n macro = {\n tokens: [tok],\n numArgs: 0,\n // reproduce the same behavior in expansion\n unexpandable: !parser.gullet.isExpandable(tok.text)\n };\n }\n parser.gullet.macros.set(name, macro, global);\n};\n// <assignment> -> <non-macro assignment>|<macro assignment>\n// <non-macro assignment> -> <simple assignment>|\\global<non-macro assignment>\n// <macro assignment> -> <definition>|<prefix><macro assignment>\n// <prefix> -> \\global|\\long|\\outer\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\global\", \"\\\\long\", \"\\\\\\\\globallong\" // can\u2019t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler(_ref) {\n var {\n parser,\n funcName\n } = _ref;\n parser.consumeSpaces();\n var token = parser.fetch();\n if (globalMap[token.text]) {\n // KaTeX doesn't have \\par, so ignore \\long\n if (funcName === \"\\\\global\" || funcName === \"\\\\\\\\globallong\") {\n token.text = globalMap[token.text];\n }\n return assertNodeType(parser.parseFunction(), \"internal\");\n }\n throw new ParseError(\"Invalid token after macro prefix\", token);\n }\n});\n// Basic support for macro definitions: \\def, \\gdef, \\edef, \\xdef\n// <definition> -> <def><control sequence><definition text>\n// <def> -> \\def|\\gdef|\\edef|\\xdef\n// <definition text> -> <parameter text><left brace><balanced text><right brace>\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\def\", \"\\\\gdef\", \"\\\\edef\", \"\\\\xdef\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref2) {\n var {\n parser,\n funcName\n } = _ref2;\n var tok = parser.gullet.popToken();\n var name = tok.text;\n if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n throw new ParseError(\"Expected a control sequence\", tok);\n }\n var numArgs = 0;\n var insert;\n var delimiters = [[]];\n // <parameter text> contains no braces\n while (parser.gullet.future().text !== \"{\") {\n tok = parser.gullet.popToken();\n if (tok.text === \"#\") {\n // If the very last character of the <parameter text> is #, so that\n // this # is immediately followed by {, TeX will behave as if the {\n // had been inserted at the right end of both the parameter text\n // and the replacement text.\n if (parser.gullet.future().text === \"{\") {\n insert = parser.gullet.future();\n delimiters[numArgs].push(\"{\");\n break;\n }\n // A parameter, the first appearance of # must be followed by 1,\n // the next by 2, and so on; up to nine #\u2019s are allowed\n tok = parser.gullet.popToken();\n if (!/^[1-9]$/.test(tok.text)) {\n throw new ParseError(\"Invalid argument number \\\"\" + tok.text + \"\\\"\");\n }\n if (parseInt(tok.text) !== numArgs + 1) {\n throw new ParseError(\"Argument number \\\"\" + tok.text + \"\\\" out of order\");\n }\n numArgs++;\n delimiters.push([]);\n } else if (tok.text === \"EOF\") {\n throw new ParseError(\"Expected a macro definition\");\n } else {\n delimiters[numArgs].push(tok.text);\n }\n }\n // replacement text, enclosed in '{' and '}' and properly nested\n var {\n tokens\n } = parser.gullet.consumeArg();\n if (insert) {\n tokens.unshift(insert);\n }\n if (funcName === \"\\\\edef\" || funcName === \"\\\\xdef\") {\n tokens = parser.gullet.expandTokens(tokens);\n tokens.reverse(); // to fit in with stack order\n }\n // Final arg is the expansion of the macro\n parser.gullet.macros.set(name, {\n tokens,\n numArgs,\n delimiters\n }, funcName === globalMap[funcName]);\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n// <simple assignment> -> <let assignment>\n// <let assignment> -> \\futurelet<control sequence><token><token>\n// | \\let<control sequence><equals><one optional space><token>\n// <equals> -> <optional spaces>|<optional spaces>=\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\let\", \"\\\\\\\\globallet\" // can\u2019t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref3) {\n var {\n parser,\n funcName\n } = _ref3;\n var name = checkControlSequence(parser.gullet.popToken());\n parser.gullet.consumeSpaces();\n var tok = getRHS(parser);\n letCommand(parser, name, tok, funcName === \"\\\\\\\\globallet\");\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n// ref: https://www.tug.org/TUGboat/tb09-3/tb22bechtolsheim.pdf\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\futurelet\", \"\\\\\\\\globalfuture\" // can\u2019t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref4) {\n var {\n parser,\n funcName\n } = _ref4;\n var name = checkControlSequence(parser.gullet.popToken());\n var middle = parser.gullet.popToken();\n var tok = parser.gullet.popToken();\n letCommand(parser, name, tok, funcName === \"\\\\\\\\globalfuture\");\n parser.gullet.pushToken(tok);\n parser.gullet.pushToken(middle);\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n\n/**\n * This file deals with creating delimiters of various sizes. The TeXbook\n * discusses these routines on page 441-442, in the \"Another subroutine sets box\n * x to a specified variable delimiter\" paragraph.\n *\n * There are three main routines here. `makeSmallDelim` makes a delimiter in the\n * normal font, but in either text, script, or scriptscript style.\n * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,\n * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of\n * smaller pieces that are stacked on top of one another.\n *\n * The functions take a parameter `center`, which determines if the delimiter\n * should be centered around the axis.\n *\n * Then, there are three exposed functions. `sizedDelim` makes a delimiter in\n * one of the given sizes. This is used for things like `\\bigl`.\n * `customSizedDelim` makes a delimiter with a given total height+depth. It is\n * called in places like `\\sqrt`. `leftRightDelim` makes an appropriate\n * delimiter which surrounds an expression of a given height an depth. It is\n * used in `\\left` and `\\right`.\n */\n/**\n * Get the metrics for a given symbol and font, after transformation (i.e.\n * after following replacement from symbols.js)\n */\nvar getMetrics = function getMetrics(symbol, font, mode) {\n var replace = symbols.math[symbol] && symbols.math[symbol].replace;\n var metrics = getCharacterMetrics(replace || symbol, font, mode);\n if (!metrics) {\n throw new Error(\"Unsupported symbol \" + symbol + \" and font size \" + font + \".\");\n }\n return metrics;\n};\n/**\n * Puts a delimiter span in a given style, and adds appropriate height, depth,\n * and maxFontSizes.\n */\nvar styleWrap = function styleWrap(delim, toStyle, options, classes) {\n var newOptions = options.havingBaseStyle(toStyle);\n var span = makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options);\n var delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;\n span.height *= delimSizeMultiplier;\n span.depth *= delimSizeMultiplier;\n span.maxFontSize = newOptions.sizeMultiplier;\n return span;\n};\nvar centerSpan = function centerSpan(span, options, style) {\n var newOptions = options.havingBaseStyle(style);\n var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight;\n span.classes.push(\"delimcenter\");\n span.style.top = makeEm(shift);\n span.height -= shift;\n span.depth += shift;\n};\n/**\n * Makes a small delimiter. This is a delimiter that comes in the Main-Regular\n * font, but is restyled to either be in textstyle, scriptstyle, or\n * scriptscriptstyle.\n */\nvar makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) {\n var text = makeSymbol(delim, \"Main-Regular\", mode, options);\n var span = styleWrap(text, style, options, classes);\n if (center) {\n centerSpan(span, options, style);\n }\n return span;\n};\n/**\n * Builds a symbol in the given font size (note size is an integer)\n */\nvar mathrmSize = function mathrmSize(value, size, mode, options) {\n return makeSymbol(value, \"Size\" + size + \"-Regular\", mode, options);\n};\n/**\n * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,\n * Size3, or Size4 fonts. It is always rendered in textstyle.\n */\nvar makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) {\n var inner = mathrmSize(delim, size, mode, options);\n var span = styleWrap(makeSpan([\"delimsizing\", \"size\" + size], [inner], options), Style$1.TEXT, options, classes);\n if (center) {\n centerSpan(span, options, Style$1.TEXT);\n }\n return span;\n};\n/**\n * Make a span from a font glyph with the given offset and in the given font.\n * This is used in makeStackedDelim to make the stacking pieces for the delimiter.\n */\nvar makeGlyphSpan = function makeGlyphSpan(symbol, font, mode) {\n var sizeClass;\n // Apply the correct CSS class to choose the right font.\n if (font === \"Size1-Regular\") {\n sizeClass = \"delim-size1\";\n } else /* if (font === \"Size4-Regular\") */{\n sizeClass = \"delim-size4\";\n }\n var corner = makeSpan([\"delimsizinginner\", sizeClass], [makeSpan([], [makeSymbol(symbol, font, mode)])]);\n // Since this will be passed into `makeVList` in the end, wrap the element\n // in the appropriate tag that VList uses.\n return {\n type: \"elem\",\n elem: corner\n };\n};\nvar makeInner = function makeInner(ch, height, options) {\n // Create a span with inline SVG for the inner part of a tall stacked delimiter.\n var width = fontMetricsData['Size4-Regular'][ch.charCodeAt(0)] ? fontMetricsData['Size4-Regular'][ch.charCodeAt(0)][4] : fontMetricsData['Size1-Regular'][ch.charCodeAt(0)][4];\n var path = new PathNode(\"inner\", innerPath(ch, Math.round(1000 * height)));\n var svgNode = new SvgNode([path], {\n \"width\": makeEm(width),\n \"height\": makeEm(height),\n // Override CSS rule `.katex svg { width: 100% }`\n \"style\": \"width:\" + makeEm(width),\n \"viewBox\": \"0 0 \" + 1000 * width + \" \" + Math.round(1000 * height),\n \"preserveAspectRatio\": \"xMinYMin\"\n });\n var span = makeSvgSpan([], [svgNode], options);\n span.height = height;\n span.style.height = makeEm(height);\n span.style.width = makeEm(width);\n return {\n type: \"elem\",\n elem: span\n };\n};\n// Helpers for makeStackedDelim\nvar lapInEms = 0.008;\nvar lap = {\n type: \"kern\",\n size: -1 * lapInEms\n};\nvar verts = new Set([\"|\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\vert\"]);\nvar doubleVerts = new Set([\"\\\\|\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\Vert\"]);\n/**\n * Make a stacked delimiter out of a given delimiter, with the total height at\n * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.\n */\nvar makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) {\n // There are four parts, the top, an optional middle, a repeated part, and a\n // bottom.\n var top;\n var middle;\n var repeat;\n var bottom;\n var svgLabel = \"\";\n var viewBoxWidth = 0;\n top = repeat = bottom = delim;\n middle = null;\n // Also keep track of what font the delimiters are in\n var font = \"Size1-Regular\";\n // We set the parts and font based on the symbol. Note that we use\n // '\\u23d0' instead of '|' and '\\u2016' instead of '\\\\|' for the\n // repeats of the arrows\n if (delim === \"\\\\uparrow\") {\n repeat = bottom = \"\\u23d0\";\n } else if (delim === \"\\\\Uparrow\") {\n repeat = bottom = \"\\u2016\";\n } else if (delim === \"\\\\downarrow\") {\n top = repeat = \"\\u23d0\";\n } else if (delim === \"\\\\Downarrow\") {\n top = repeat = \"\\u2016\";\n } else if (delim === \"\\\\updownarrow\") {\n top = \"\\\\uparrow\";\n repeat = \"\\u23d0\";\n bottom = \"\\\\downarrow\";\n } else if (delim === \"\\\\Updownarrow\") {\n top = \"\\\\Uparrow\";\n repeat = \"\\u2016\";\n bottom = \"\\\\Downarrow\";\n } else if (verts.has(delim)) {\n repeat = \"\\u2223\";\n svgLabel = \"vert\";\n viewBoxWidth = 333;\n } else if (doubleVerts.has(delim)) {\n repeat = \"\\u2225\";\n svgLabel = \"doublevert\";\n viewBoxWidth = 556;\n } else if (delim === \"[\" || delim === \"\\\\lbrack\") {\n top = \"\\u23a1\";\n repeat = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n svgLabel = \"lbrack\";\n viewBoxWidth = 667;\n } else if (delim === \"]\" || delim === \"\\\\rbrack\") {\n top = \"\\u23a4\";\n repeat = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n svgLabel = \"rbrack\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\lfloor\" || delim === \"\\u230a\") {\n repeat = top = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n svgLabel = \"lfloor\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\lceil\" || delim === \"\\u2308\") {\n top = \"\\u23a1\";\n repeat = bottom = \"\\u23a2\";\n font = \"Size4-Regular\";\n svgLabel = \"lceil\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\rfloor\" || delim === \"\\u230b\") {\n repeat = top = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n svgLabel = \"rfloor\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\rceil\" || delim === \"\\u2309\") {\n top = \"\\u23a4\";\n repeat = bottom = \"\\u23a5\";\n font = \"Size4-Regular\";\n svgLabel = \"rceil\";\n viewBoxWidth = 667;\n } else if (delim === \"(\" || delim === \"\\\\lparen\") {\n top = \"\\u239b\";\n repeat = \"\\u239c\";\n bottom = \"\\u239d\";\n font = \"Size4-Regular\";\n svgLabel = \"lparen\";\n viewBoxWidth = 875;\n } else if (delim === \")\" || delim === \"\\\\rparen\") {\n top = \"\\u239e\";\n repeat = \"\\u239f\";\n bottom = \"\\u23a0\";\n font = \"Size4-Regular\";\n svgLabel = \"rparen\";\n viewBoxWidth = 875;\n } else if (delim === \"\\\\{\" || delim === \"\\\\lbrace\") {\n top = \"\\u23a7\";\n middle = \"\\u23a8\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\}\" || delim === \"\\\\rbrace\") {\n top = \"\\u23ab\";\n middle = \"\\u23ac\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lgroup\" || delim === \"\\u27ee\") {\n top = \"\\u23a7\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rgroup\" || delim === \"\\u27ef\") {\n top = \"\\u23ab\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lmoustache\" || delim === \"\\u23b0\") {\n top = \"\\u23a7\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rmoustache\" || delim === \"\\u23b1\") {\n top = \"\\u23ab\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n }\n // Get the metrics of the four sections\n var topMetrics = getMetrics(top, font, mode);\n var topHeightTotal = topMetrics.height + topMetrics.depth;\n var repeatMetrics = getMetrics(repeat, font, mode);\n var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;\n var bottomMetrics = getMetrics(bottom, font, mode);\n var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;\n var middleHeightTotal = 0;\n var middleFactor = 1;\n if (middle !== null) {\n var middleMetrics = getMetrics(middle, font, mode);\n middleHeightTotal = middleMetrics.height + middleMetrics.depth;\n middleFactor = 2; // repeat symmetrically above and below middle\n }\n // Calculate the minimal height that the delimiter can have.\n // It is at least the size of the top, bottom, and optional middle combined.\n var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;\n // Compute the number of copies of the repeat symbol we will need\n var repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)));\n // Compute the total height of the delimiter including all the symbols\n var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal;\n // The center of the delimiter is placed at the center of the axis. Note\n // that in this context, \"center\" means that the delimiter should be\n // centered around the axis in the current style, while normally it is\n // centered around the axis in textstyle.\n var axisHeight = options.fontMetrics().axisHeight;\n if (center) {\n axisHeight *= options.sizeMultiplier;\n }\n // Calculate the depth\n var depth = realHeightTotal / 2 - axisHeight;\n // Now, we start building the pieces that will go into the vlist\n // Keep a list of the pieces of the stacked delimiter\n var stack = [];\n if (svgLabel.length > 0) {\n // Instead of stacking glyphs, create a single SVG.\n // This evades browser problems with imprecise positioning of spans.\n var midHeight = realHeightTotal - topHeightTotal - bottomHeightTotal;\n var viewBoxHeight = Math.round(realHeightTotal * 1000);\n var pathStr = tallDelim(svgLabel, Math.round(midHeight * 1000));\n var path = new PathNode(svgLabel, pathStr);\n var width = makeEm(viewBoxWidth / 1000);\n var height = makeEm(viewBoxHeight / 1000);\n var svg = new SvgNode([path], {\n \"width\": width,\n \"height\": height,\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight\n });\n var wrapper = makeSvgSpan([], [svg], options);\n wrapper.height = viewBoxHeight / 1000;\n wrapper.style.width = width;\n wrapper.style.height = height;\n stack.push({\n type: \"elem\",\n elem: wrapper\n });\n } else {\n // Stack glyphs\n // Start by adding the bottom symbol\n stack.push(makeGlyphSpan(bottom, font, mode));\n stack.push(lap); // overlap\n if (middle === null) {\n // The middle section will be an SVG. Make it an extra 0.016em tall.\n // We'll overlap by 0.008em at top and bottom.\n var innerHeight = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms;\n stack.push(makeInner(repeat, innerHeight, options));\n } else {\n // When there is a middle bit, we need the middle part and two repeated\n // sections\n var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms;\n stack.push(makeInner(repeat, _innerHeight, options));\n // Now insert the middle of the brace.\n stack.push(lap);\n stack.push(makeGlyphSpan(middle, font, mode));\n stack.push(lap);\n stack.push(makeInner(repeat, _innerHeight, options));\n }\n // Add the top symbol\n stack.push(lap);\n stack.push(makeGlyphSpan(top, font, mode));\n }\n // Finally, build the vlist\n var newOptions = options.havingBaseStyle(Style$1.TEXT);\n var inner = makeVList({\n positionType: \"bottom\",\n positionData: depth,\n children: stack\n });\n return styleWrap(makeSpan([\"delimsizing\", \"mult\"], [inner], newOptions), Style$1.TEXT, options, classes);\n};\n// All surds have 0.08em padding above the vinculum inside the SVG.\n// That keeps browser span height rounding error from pinching the line.\nvar vbPad = 80; // padding above the surd, measured inside the viewBox.\nvar emPad = 0.08; // padding, in ems, measured in the document.\nvar sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, extraVinculum, options) {\n var path = sqrtPath(sqrtName, extraVinculum, viewBoxHeight);\n var pathNode = new PathNode(sqrtName, path);\n var svg = new SvgNode([pathNode], {\n // Note: 1000:1 ratio of viewBox to document em width.\n \"width\": \"400em\",\n \"height\": makeEm(height),\n \"viewBox\": \"0 0 400000 \" + viewBoxHeight,\n \"preserveAspectRatio\": \"xMinYMin slice\"\n });\n return makeSvgSpan([\"hide-tail\"], [svg], options);\n};\n/**\n * Make a sqrt image of the given height,\n */\nvar makeSqrtImage = function makeSqrtImage(height, options) {\n // Define a newOptions that removes the effect of size changes such as \\Huge.\n // We don't pick different a height surd for \\Huge. For it, we scale up.\n var newOptions = options.havingBaseSizing();\n // Pick the desired surd glyph from a sequence of surds.\n var delim = traverseSequence(\"\\\\surd\", height * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions);\n var sizeMultiplier = newOptions.sizeMultiplier; // default\n // The standard sqrt SVGs each have a 0.04em thick vinculum.\n // If Settings.minRuleThickness is larger than that, we add extraVinculum.\n var extraVinculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness);\n // Create a span containing an SVG image of a sqrt symbol.\n var span;\n var spanHeight = 0;\n var texHeight = 0;\n var viewBoxHeight = 0;\n var advanceWidth;\n // We create viewBoxes with 80 units of \"padding\" above each surd.\n // Then browser rounding error on the parent span height will not\n // encroach on the ink of the vinculum. But that padding is not\n // included in the TeX-like `height` used for calculation of\n // vertical alignment. So texHeight = span.height < span.style.height.\n if (delim.type === \"small\") {\n // Get an SVG that is derived from glyph U+221A in font KaTeX-Main.\n // 1000 unit normal glyph height.\n viewBoxHeight = 1000 + 1000 * extraVinculum + vbPad;\n if (height < 1.0) {\n sizeMultiplier = 1.0; // mimic a \\textfont radical\n } else if (height < 1.4) {\n sizeMultiplier = 0.7; // mimic a \\scriptfont radical\n }\n spanHeight = (1.0 + extraVinculum + emPad) / sizeMultiplier;\n texHeight = (1.00 + extraVinculum) / sizeMultiplier;\n span = sqrtSvg(\"sqrtMain\", spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"0.853em\";\n advanceWidth = 0.833 / sizeMultiplier; // from the font.\n } else if (delim.type === \"large\") {\n // These SVGs come from fonts: KaTeX_Size1, _Size2, etc.\n viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size];\n texHeight = (sizeToMaxHeight[delim.size] + extraVinculum) / sizeMultiplier;\n spanHeight = (sizeToMaxHeight[delim.size] + extraVinculum + emPad) / sizeMultiplier;\n span = sqrtSvg(\"sqrtSize\" + delim.size, spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"1.02em\";\n advanceWidth = 1.0 / sizeMultiplier; // 1.0 from the font.\n } else {\n // Tall sqrt. In TeX, this would be stacked using multiple glyphs.\n // We'll use a single SVG to accomplish the same thing.\n spanHeight = height + extraVinculum + emPad;\n texHeight = height + extraVinculum;\n viewBoxHeight = Math.floor(1000 * height + extraVinculum) + vbPad;\n span = sqrtSvg(\"sqrtTall\", spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"0.742em\";\n advanceWidth = 1.056;\n }\n span.height = texHeight;\n span.style.height = makeEm(spanHeight);\n return {\n span,\n advanceWidth,\n // Calculate the actual line width.\n // This actually should depend on the chosen font -- e.g. \\boldmath\n // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and\n // have thicker rules.\n ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraVinculum) * sizeMultiplier\n };\n};\n// There are three kinds of delimiters, delimiters that stack when they become\n// too large\nvar stackLargeDelimiters = new Set([\"(\", \"\\\\lparen\", \")\", \"\\\\rparen\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\", \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\", \"\\\\lfloor\", \"\\\\rfloor\", \"\\u230a\", \"\\u230b\", \"\\\\lceil\", \"\\\\rceil\", \"\\u2308\", \"\\u2309\", \"\\\\surd\"]);\n// delimiters that always stack\nvar stackAlwaysDelimiters = new Set([\"\\\\uparrow\", \"\\\\downarrow\", \"\\\\updownarrow\", \"\\\\Uparrow\", \"\\\\Downarrow\", \"\\\\Updownarrow\", \"|\", \"\\\\|\", \"\\\\vert\", \"\\\\Vert\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\lgroup\", \"\\\\rgroup\", \"\\u27ee\", \"\\u27ef\", \"\\\\lmoustache\", \"\\\\rmoustache\", \"\\u23b0\", \"\\u23b1\"]);\n// and delimiters that never stack\nvar stackNeverDelimiters = new Set([\"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"/\", \"\\\\backslash\", \"\\\\lt\", \"\\\\gt\"]);\n// Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\nvar sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n/**\n * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.\n */\nvar makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) {\n // < and > turn into \\langle and \\rangle in delimiters\n if (delim === \"<\" || delim === \"\\\\lt\" || delim === \"\\u27e8\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\" || delim === \"\\u27e9\") {\n delim = \"\\\\rangle\";\n }\n // Sized delimiters are never centered.\n if (stackLargeDelimiters.has(delim) || stackNeverDelimiters.has(delim)) {\n return makeLargeDelim(delim, size, false, options, mode, classes);\n } else if (stackAlwaysDelimiters.has(delim)) {\n return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes);\n } else {\n throw new ParseError(\"Illegal delimiter: '\" + delim + \"'\");\n }\n};\n// Delimiters that never stack try small delimiters and large delimiters only\nvar stackNeverDelimiterSequence = [{\n type: \"small\",\n style: Style$1.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: Style$1.SCRIPT\n}, {\n type: \"small\",\n style: Style$1.TEXT\n}, {\n type: \"large\",\n size: 1\n}, {\n type: \"large\",\n size: 2\n}, {\n type: \"large\",\n size: 3\n}, {\n type: \"large\",\n size: 4\n}];\n// Delimiters that always stack try the small delimiters first, then stack\nvar stackAlwaysDelimiterSequence = [{\n type: \"small\",\n style: Style$1.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: Style$1.SCRIPT\n}, {\n type: \"small\",\n style: Style$1.TEXT\n}, {\n type: \"stack\"\n}];\n// Delimiters that stack when large try the small and then large delimiters, and\n// stack afterwards\nvar stackLargeDelimiterSequence = [{\n type: \"small\",\n style: Style$1.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: Style$1.SCRIPT\n}, {\n type: \"small\",\n style: Style$1.TEXT\n}, {\n type: \"large\",\n size: 1\n}, {\n type: \"large\",\n size: 2\n}, {\n type: \"large\",\n size: 3\n}, {\n type: \"large\",\n size: 4\n}, {\n type: \"stack\"\n}];\n/**\n * Get the font used in a delimiter based on what kind of delimiter it is.\n * TODO(#963) Use more specific font family return type once that is introduced.\n */\nvar delimTypeToFont = function delimTypeToFont(type) {\n if (type.type === \"small\") {\n return \"Main-Regular\";\n } else if (type.type === \"large\") {\n return \"Size\" + type.size + \"-Regular\";\n } else if (type.type === \"stack\") {\n return \"Size4-Regular\";\n } else {\n var delimKind = type.type;\n throw new Error(\"Add support for delim type '\" + delimKind + \"' here.\");\n }\n};\n/**\n * Traverse a sequence of types of delimiters to decide what kind of delimiter\n * should be used to create a delimiter of the given height+depth.\n */\nvar traverseSequence = function traverseSequence(delim, height, sequence, options) {\n // Here, we choose the index we should start at in the sequences. In smaller\n // sizes (which correspond to larger numbers in style.size) we start earlier\n // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts\n // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2\n var start = Math.min(2, 3 - options.style.size);\n for (var i = start; i < sequence.length; i++) {\n var delimType = sequence[i];\n if (delimType.type === \"stack\") {\n // This is always the last delimiter, so we just break the loop now.\n break;\n }\n var metrics = getMetrics(delim, delimTypeToFont(delimType), \"math\");\n var heightDepth = metrics.height + metrics.depth;\n // Small delimiters are scaled down versions of the same font, so we\n // account for the style change size.\n if (delimType.type === \"small\") {\n var newOptions = options.havingBaseStyle(delimType.style);\n heightDepth *= newOptions.sizeMultiplier;\n }\n // Check if the delimiter at this size works for the given height.\n if (heightDepth > height) {\n return delimType;\n }\n }\n // If we reached the end of the sequence, return the last sequence element.\n return sequence[sequence.length - 1];\n};\n/**\n * Make a delimiter of a given height+depth, with optional centering. Here, we\n * traverse the sequences, and create a delimiter that the sequence tells us to.\n */\nvar makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) {\n if (delim === \"<\" || delim === \"\\\\lt\" || delim === \"\\u27e8\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\" || delim === \"\\u27e9\") {\n delim = \"\\\\rangle\";\n }\n // Decide what sequence to use\n var sequence;\n if (stackNeverDelimiters.has(delim)) {\n sequence = stackNeverDelimiterSequence;\n } else if (stackLargeDelimiters.has(delim)) {\n sequence = stackLargeDelimiterSequence;\n } else {\n sequence = stackAlwaysDelimiterSequence;\n }\n // Look through the sequence\n var delimType = traverseSequence(delim, height, sequence, options);\n // Get the delimiter from font glyphs.\n // Depending on the sequence element we decided on, call the\n // appropriate function.\n if (delimType.type === \"small\") {\n return makeSmallDelim(delim, delimType.style, center, options, mode, classes);\n } else if (delimType.type === \"large\") {\n return makeLargeDelim(delim, delimType.size, center, options, mode, classes);\n } else /* if (delimType.type === \"stack\") */{\n return makeStackedDelim(delim, height, center, options, mode, classes);\n }\n};\n/**\n * Make a delimiter for use with `\\left` and `\\right`, given a height and depth\n * of an expression that the delimiters surround.\n */\nvar makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) {\n // We always center \\left/\\right delimiters, so the axis is always shifted\n var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier;\n // Taken from TeX source, tex.web, function make_left_right\n var delimiterFactor = 901;\n var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm;\n var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight);\n var totalHeight = Math.max(\n // In real TeX, calculations are done using integral values which are\n // 65536 per pt, or 655360 per em. So, the division here truncates in\n // TeX but doesn't here, producing different results. If we wanted to\n // exactly match TeX's calculation, we could do\n // Math.floor(655360 * maxDistFromAxis / 500) *\n // delimiterFactor / 655360\n // (To see the difference, compare\n // x^{x^{\\left(\\rule{0.1em}{0.68em}\\right)}}\n // in TeX and KaTeX)\n maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend);\n // Finally, we defer to `makeCustomSizedDelim` with our calculated total\n // height\n return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes);\n};\n\n// Extra data needed for the delimiter handler down below\nvar delimiterSizes = {\n \"\\\\bigl\": {\n mclass: \"mopen\",\n size: 1\n },\n \"\\\\Bigl\": {\n mclass: \"mopen\",\n size: 2\n },\n \"\\\\biggl\": {\n mclass: \"mopen\",\n size: 3\n },\n \"\\\\Biggl\": {\n mclass: \"mopen\",\n size: 4\n },\n \"\\\\bigr\": {\n mclass: \"mclose\",\n size: 1\n },\n \"\\\\Bigr\": {\n mclass: \"mclose\",\n size: 2\n },\n \"\\\\biggr\": {\n mclass: \"mclose\",\n size: 3\n },\n \"\\\\Biggr\": {\n mclass: \"mclose\",\n size: 4\n },\n \"\\\\bigm\": {\n mclass: \"mrel\",\n size: 1\n },\n \"\\\\Bigm\": {\n mclass: \"mrel\",\n size: 2\n },\n \"\\\\biggm\": {\n mclass: \"mrel\",\n size: 3\n },\n \"\\\\Biggm\": {\n mclass: \"mrel\",\n size: 4\n },\n \"\\\\big\": {\n mclass: \"mord\",\n size: 1\n },\n \"\\\\Big\": {\n mclass: \"mord\",\n size: 2\n },\n \"\\\\bigg\": {\n mclass: \"mord\",\n size: 3\n },\n \"\\\\Bigg\": {\n mclass: \"mord\",\n size: 4\n }\n};\nvar delimiters = 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\", \".\"]);\n// Delimiter functions\nfunction checkDelimiter(delim, context) {\n var symDelim = checkSymbolNodeType(delim);\n if (symDelim && delimiters.has(symDelim.text)) {\n return symDelim;\n } else if (symDelim) {\n throw new ParseError(\"Invalid delimiter '\" + symDelim.text + \"' after '\" + context.funcName + \"'\", delim);\n } else {\n throw new ParseError(\"Invalid delimiter type '\" + delim.type + \"'\", delim);\n }\n}\ndefineFunction({\n type: \"delimsizing\",\n names: [\"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\", \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\", \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\", \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\"],\n props: {\n numArgs: 1,\n argTypes: [\"primitive\"]\n },\n handler: (context, args) => {\n var delim = checkDelimiter(args[0], context);\n return {\n type: \"delimsizing\",\n mode: context.parser.mode,\n size: delimiterSizes[context.funcName].size,\n mclass: delimiterSizes[context.funcName].mclass,\n delim: delim.text\n };\n },\n htmlBuilder: (group, options) => {\n if (group.delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return makeSpan([group.mclass]);\n }\n return makeSizedDelim(group.delim, group.size, options, group.mode, [group.mclass]);\n },\n mathmlBuilder: group => {\n var children = [];\n if (group.delim !== \".\") {\n children.push(makeText(group.delim, group.mode));\n }\n var node = new MathNode(\"mo\", children);\n if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"mopen\" or \"mclose\" mclass.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n node.setAttribute(\"stretchy\", \"true\");\n var size = makeEm(sizeToMaxHeight[group.size]);\n node.setAttribute(\"minsize\", size);\n node.setAttribute(\"maxsize\", size);\n return node;\n }\n});\nfunction assertParsed(group) {\n if (!group.body) {\n throw new Error(\"Bug: The leftright ParseNode wasn't fully parsed.\");\n }\n}\ndefineFunction({\n type: \"leftright-right\",\n names: [\"\\\\right\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n // \\left case below triggers parsing of \\right in\n // `const right = parser.parseFunction();`\n // uses this return value.\n var color = context.parser.gullet.macros.get(\"\\\\current@color\");\n if (color && typeof color !== \"string\") {\n throw new ParseError(\"\\\\current@color set to non-string in \\\\right\");\n }\n return {\n type: \"leftright-right\",\n mode: context.parser.mode,\n delim: checkDelimiter(args[0], context).text,\n color: color // undefined if not set via \\color\n };\n }\n});\ndefineFunction({\n type: \"leftright\",\n names: [\"\\\\left\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n var delim = checkDelimiter(args[0], context);\n var parser = context.parser;\n // Parse out the implicit body\n ++parser.leftrightDepth;\n // parseExpression stops before '\\\\right'\n var body = parser.parseExpression(false);\n --parser.leftrightDepth;\n // Check the next token\n parser.expect(\"\\\\right\", false);\n var right = assertNodeType(parser.parseFunction(), \"leftright-right\");\n return {\n type: \"leftright\",\n mode: parser.mode,\n body,\n left: delim.text,\n right: right.delim,\n rightColor: right.color\n };\n },\n htmlBuilder: (group, options) => {\n assertParsed(group);\n // Build the inner expression\n var inner = buildExpression$1(group.body, options, true, [\"mopen\", \"mclose\"]);\n var innerHeight = 0;\n var innerDepth = 0;\n var hadMiddle = false;\n // Calculate its height and depth\n for (var i = 0; i < inner.length; i++) {\n // Property `isMiddle` not defined on `span`. See comment in\n // \"middle\"'s htmlBuilder.\n // TODO(ts)\n if (inner[i].isMiddle) {\n hadMiddle = true;\n } else {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n }\n // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n innerHeight *= options.sizeMultiplier;\n innerDepth *= options.sizeMultiplier;\n var leftDelim;\n if (group.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = makeLeftRightDelim(group.left, innerHeight, innerDepth, options, group.mode, [\"mopen\"]);\n }\n // Add it to the beginning of the expression\n inner.unshift(leftDelim);\n // Handle middle delimiters\n if (hadMiddle) {\n for (var _i = 1; _i < inner.length; _i++) {\n var middleDelim = inner[_i];\n // Property `isMiddle` not defined on `span`. See comment in\n // \"middle\"'s htmlBuilder.\n // TODO(ts)\n var isMiddle = middleDelim.isMiddle;\n if (isMiddle) {\n // Apply the options that were active when \\middle was called\n inner[_i] = makeLeftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group.mode, []);\n }\n }\n }\n var rightDelim;\n // Same for the right delimiter, but using color specified by \\color\n if (group.right === \".\") {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n var colorOptions = group.rightColor ? options.withColor(group.rightColor) : options;\n rightDelim = makeLeftRightDelim(group.right, innerHeight, innerDepth, colorOptions, group.mode, [\"mclose\"]);\n }\n // Add it to the end of the expression.\n inner.push(rightDelim);\n return makeSpan([\"minner\"], inner, options);\n },\n mathmlBuilder: (group, options) => {\n assertParsed(group);\n var inner = buildExpression(group.body, options);\n if (group.left !== \".\") {\n var leftNode = new MathNode(\"mo\", [makeText(group.left, group.mode)]);\n leftNode.setAttribute(\"fence\", \"true\");\n inner.unshift(leftNode);\n }\n if (group.right !== \".\") {\n var rightNode = new MathNode(\"mo\", [makeText(group.right, group.mode)]);\n rightNode.setAttribute(\"fence\", \"true\");\n if (group.rightColor) {\n rightNode.setAttribute(\"mathcolor\", group.rightColor);\n }\n inner.push(rightNode);\n }\n return makeRow(inner);\n }\n});\ndefineFunction({\n type: \"middle\",\n names: [\"\\\\middle\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n var delim = checkDelimiter(args[0], context);\n if (!context.parser.leftrightDepth) {\n throw new ParseError(\"\\\\middle without preceding \\\\left\", delim);\n }\n return {\n type: \"middle\",\n mode: context.parser.mode,\n delim: delim.text\n };\n },\n htmlBuilder: (group, options) => {\n var middleDelim;\n if (group.delim === \".\") {\n middleDelim = makeNullDelimiter(options, []);\n } else {\n middleDelim = makeSizedDelim(group.delim, 1, options, group.mode, []);\n var isMiddle = {\n delim: group.delim,\n options\n };\n // Property `isMiddle` not defined on `span`. It is only used in\n // this file above.\n // TODO: Fix this violation of the `span` type and possibly rename\n // things since `isMiddle` sounds like a boolean, but is a struct.\n // TODO(ts)\n middleDelim.isMiddle = isMiddle;\n }\n return middleDelim;\n },\n mathmlBuilder: (group, options) => {\n // A Firefox \\middle will stretch a character vertically only if it\n // is in the fence part of the operator dictionary at:\n // https://www.w3.org/TR/MathML3/appendixc.html.\n // So we need to avoid U+2223 and use plain \"|\" instead.\n var textNode = group.delim === \"\\\\vert\" || group.delim === \"|\" ? makeText(\"|\", \"text\") : makeText(group.delim, group.mode);\n var middleNode = new MathNode(\"mo\", [textNode]);\n middleNode.setAttribute(\"fence\", \"true\");\n // MathML gives 5/18em spacing to each <mo> element.\n // \\middle should get delimiter spacing instead.\n middleNode.setAttribute(\"lspace\", \"0.05em\");\n middleNode.setAttribute(\"rspace\", \"0.05em\");\n return middleNode;\n }\n});\n\nvar htmlBuilder$7 = (group, options) => {\n // \\cancel, \\bcancel, \\xcancel, \\sout, \\fbox, \\colorbox, \\fcolorbox, \\phase\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n var inner = wrapFragment(buildGroup$1(group.body, options), options);\n var label = group.label.slice(1);\n var scale = options.sizeMultiplier;\n var img;\n var imgShift = 0;\n // In the LaTeX cancel package, line geometry is slightly different\n // depending on whether the subject is wider than it is tall, or vice versa.\n // We don't know the width of a group, so as a proxy, we test if\n // the subject is a single character. This captures most of the\n // subjects that should get the \"tall\" treatment.\n var isSingleChar = isCharacterBox(group.body);\n if (label === \"sout\") {\n img = makeSpan([\"stretchy\", \"sout\"]);\n img.height = options.fontMetrics().defaultRuleThickness / scale;\n imgShift = -0.5 * options.fontMetrics().xHeight;\n } else if (label === \"phase\") {\n // Set a couple of dimensions from the steinmetz package.\n var lineWeight = calculateSize({\n number: 0.6,\n unit: \"pt\"\n }, options);\n var clearance = calculateSize({\n number: 0.35,\n unit: \"ex\"\n }, options);\n // Prevent size changes like \\Huge from affecting line thickness\n var newOptions = options.havingBaseSizing();\n scale = scale / newOptions.sizeMultiplier;\n var angleHeight = inner.height + inner.depth + lineWeight + clearance;\n // Reserve a left pad for the angle.\n inner.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight);\n // Create an SVG\n var viewBoxHeight = Math.floor(1000 * angleHeight * scale);\n var path = phasePath(viewBoxHeight);\n var svgNode = new SvgNode([new PathNode(\"phase\", path)], {\n \"width\": \"400em\",\n \"height\": makeEm(viewBoxHeight / 1000),\n \"viewBox\": \"0 0 400000 \" + viewBoxHeight,\n \"preserveAspectRatio\": \"xMinYMin slice\"\n });\n // Wrap it in a span with overflow: hidden.\n img = makeSvgSpan([\"hide-tail\"], [svgNode], options);\n img.style.height = makeEm(angleHeight);\n imgShift = inner.depth + lineWeight + clearance;\n } else {\n // Add horizontal padding\n if (/cancel/.test(label)) {\n if (!isSingleChar) {\n inner.classes.push(\"cancel-pad\");\n }\n } else if (label === \"angl\") {\n inner.classes.push(\"anglpad\");\n } else {\n inner.classes.push(\"boxpad\");\n }\n // Add vertical padding\n var topPad = 0;\n var bottomPad = 0;\n var ruleThickness = 0;\n // ref: cancel package: \\advance\\totalheight2\\p@ % \"+2\"\n if (/box/.test(label)) {\n ruleThickness = Math.max(options.fontMetrics().fboxrule,\n // default\n options.minRuleThickness);\n topPad = options.fontMetrics().fboxsep + (label === \"colorbox\" ? 0 : ruleThickness);\n bottomPad = topPad;\n } else if (label === \"angl\") {\n ruleThickness = Math.max(options.fontMetrics().defaultRuleThickness, options.minRuleThickness);\n topPad = 4 * ruleThickness; // gap = 3 \u00D7 line, plus the line itself.\n bottomPad = Math.max(0, 0.25 - inner.depth);\n } else {\n topPad = isSingleChar ? 0.2 : 0;\n bottomPad = topPad;\n }\n img = stretchyEnclose(inner, label, topPad, bottomPad, options);\n if (/fbox|boxed|fcolorbox/.test(label)) {\n img.style.borderStyle = \"solid\";\n img.style.borderWidth = makeEm(ruleThickness);\n } else if (label === \"angl\" && ruleThickness !== 0.049) {\n img.style.borderTopWidth = makeEm(ruleThickness);\n img.style.borderRightWidth = makeEm(ruleThickness);\n }\n imgShift = inner.depth + bottomPad;\n if (group.backgroundColor) {\n img.style.backgroundColor = group.backgroundColor;\n if (group.borderColor) {\n img.style.borderColor = group.borderColor;\n }\n }\n }\n var vlist;\n if (group.backgroundColor) {\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [\n // Put the color background behind inner;\n {\n type: \"elem\",\n elem: img,\n shift: imgShift\n }, {\n type: \"elem\",\n elem: inner,\n shift: 0\n }]\n });\n } else {\n var classes = /cancel|phase/.test(label) ? [\"svg-align\"] : [];\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [\n // Write the \\cancel stroke on top of inner.\n {\n type: \"elem\",\n elem: inner,\n shift: 0\n }, {\n type: \"elem\",\n elem: img,\n shift: imgShift,\n wrapperClasses: classes\n }]\n });\n }\n if (/cancel/.test(label)) {\n // The cancel package documentation says that cancel lines add their height\n // to the expression, but tests show that isn't how it actually works.\n vlist.height = inner.height;\n vlist.depth = inner.depth;\n }\n if (/cancel/.test(label) && !isSingleChar) {\n // cancel does not create horiz space for its line extension.\n return makeSpan([\"mord\", \"cancel-lap\"], [vlist], options);\n } else {\n return makeSpan([\"mord\"], [vlist], options);\n }\n};\nvar mathmlBuilder$6 = (group, options) => {\n var fboxsep = 0;\n var node = new MathNode(group.label.includes(\"colorbox\") ? \"mpadded\" : \"menclose\", [buildGroup(group.body, options)]);\n switch (group.label) {\n case \"\\\\cancel\":\n node.setAttribute(\"notation\", \"updiagonalstrike\");\n break;\n case \"\\\\bcancel\":\n node.setAttribute(\"notation\", \"downdiagonalstrike\");\n break;\n case \"\\\\phase\":\n node.setAttribute(\"notation\", \"phasorangle\");\n break;\n case \"\\\\sout\":\n node.setAttribute(\"notation\", \"horizontalstrike\");\n break;\n case \"\\\\fbox\":\n node.setAttribute(\"notation\", \"box\");\n break;\n case \"\\\\angl\":\n node.setAttribute(\"notation\", \"actuarial\");\n break;\n case \"\\\\fcolorbox\":\n case \"\\\\colorbox\":\n // <menclose> doesn't have a good notation option. So use <mpadded>\n // instead. Set some attributes that come included with <menclose>.\n fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm;\n node.setAttribute(\"width\", \"+\" + 2 * fboxsep + \"pt\");\n node.setAttribute(\"height\", \"+\" + 2 * fboxsep + \"pt\");\n node.setAttribute(\"lspace\", fboxsep + \"pt\"); //\n node.setAttribute(\"voffset\", fboxsep + \"pt\");\n if (group.label === \"\\\\fcolorbox\") {\n var thk = Math.max(options.fontMetrics().fboxrule,\n // default\n options.minRuleThickness);\n node.setAttribute(\"style\", \"border: \" + makeEm(thk) + \" solid \" + group.borderColor);\n }\n break;\n case \"\\\\xcancel\":\n node.setAttribute(\"notation\", \"updiagonalstrike downdiagonalstrike\");\n break;\n }\n if (group.backgroundColor) {\n node.setAttribute(\"mathbackground\", group.backgroundColor);\n }\n return node;\n};\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\colorbox\"],\n props: {\n numArgs: 2,\n allowedInText: true,\n argTypes: [\"color\", \"text\"]\n },\n handler(_ref, args, optArgs) {\n var {\n parser,\n funcName\n } = _ref;\n var color = assertNodeType(args[0], \"color-token\").color;\n var body = args[1];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n backgroundColor: color,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\fcolorbox\"],\n props: {\n numArgs: 3,\n allowedInText: true,\n argTypes: [\"color\", \"color\", \"text\"]\n },\n handler(_ref2, args, optArgs) {\n var {\n parser,\n funcName\n } = _ref2;\n var borderColor = assertNodeType(args[0], \"color-token\").color;\n var backgroundColor = assertNodeType(args[1], \"color-token\").color;\n var body = args[2];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n backgroundColor,\n borderColor,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\fbox\"],\n props: {\n numArgs: 1,\n argTypes: [\"hbox\"],\n allowedInText: true\n },\n handler(_ref3, args) {\n var {\n parser\n } = _ref3;\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: \"\\\\fbox\",\n body: args[0]\n };\n }\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\cancel\", \"\\\\bcancel\", \"\\\\xcancel\", \"\\\\phase\"],\n props: {\n numArgs: 1\n },\n handler(_ref4, args) {\n var {\n parser,\n funcName\n } = _ref4;\n var body = args[0];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\sout\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref5, args) {\n var {\n parser,\n funcName\n } = _ref5;\n if (parser.mode === \"math\") {\n parser.settings.reportNonstrict(\"mathVsSout\", \"LaTeX's \\\\sout works only in text mode\");\n }\n var body = args[0];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\angl\"],\n props: {\n numArgs: 1,\n argTypes: [\"hbox\"],\n allowedInText: false\n },\n handler(_ref6, args) {\n var {\n parser\n } = _ref6;\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: \"\\\\angl\",\n body: args[0]\n };\n }\n});\n\n/**\n * All registered environments.\n * `environments.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `environments.js`.\n */\nvar _environments = {};\nfunction defineEnvironment(_ref) {\n var {\n type,\n names,\n props,\n handler,\n htmlBuilder,\n mathmlBuilder\n } = _ref;\n // Set default values of environments.\n var data = {\n type,\n numArgs: props.numArgs || 0,\n allowedInText: false,\n numOptionalArgs: 0,\n handler\n };\n for (var i = 0; i < names.length; ++i) {\n // TODO: The value type of _environments should be a type union of all\n // possible `EnvSpec<>` possibilities instead of `EnvSpec<*>`, which is\n // an existential type.\n _environments[names[i]] = data;\n }\n if (htmlBuilder) {\n _htmlGroupBuilders[type] = htmlBuilder;\n }\n if (mathmlBuilder) {\n _mathmlGroupBuilders[type] = mathmlBuilder;\n }\n}\n\n/**\n * All registered global/built-in macros.\n * `macros.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `macros.js`.\n */\nvar _macros = {};\n// This function might one day accept an additional argument and do more things.\nfunction defineMacro(name, body) {\n _macros[name] = body;\n}\n\n/**\n * Lexing or parsing positional information for error reporting.\n * This object is immutable.\n */\nclass SourceLocation {\n // The + prefix indicates that these fields aren't writeable\n // Lexer holding the input string.\n // Start offset, zero-based inclusive.\n // End offset, zero-based exclusive.\n constructor(lexer, start, end) {\n this.lexer = lexer;\n this.start = start;\n this.end = end;\n }\n /**\n * Merges two `SourceLocation`s from location providers, given they are\n * provided in order of appearance.\n * - Returns the first one's location if only the first is provided.\n * - Returns a merged range of the first and the last if both are provided\n * and their lexers match.\n * - Otherwise, returns null.\n */\n static range(first, second) {\n if (!second) {\n return first && first.loc;\n } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {\n return null;\n } else {\n return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);\n }\n }\n}\n\n/**\n * The resulting token returned from `lex`.\n *\n * It consists of the token text plus some position information.\n * The position information is essentially a range in an input string,\n * but instead of referencing the bare input string, we refer to the lexer.\n * That way it is possible to attach extra metadata to the input string,\n * like for example a file name or similar.\n *\n * The position information is optional, so it is OK to construct synthetic\n * tokens if appropriate. Not providing available position information may\n * lead to degraded error reporting, though.\n */\nclass Token {\n // don't expand the token\n // used in \\noexpand\n constructor(text,\n // the text of this token\n loc) {\n this.text = text;\n this.loc = loc;\n }\n /**\n * Given a pair of tokens (this and endToken), compute a `Token` encompassing\n * the whole input range enclosed by these two.\n */\n range(endToken,\n // last token of the range, inclusive\n text) {\n return new Token(text, SourceLocation.range(this, endToken));\n }\n}\n\n// Helper functions\nfunction getHLines(parser) {\n // Return an array. The array length = number of hlines.\n // Each element in the array tells if the line is dashed.\n var hlineInfo = [];\n parser.consumeSpaces();\n var nxt = parser.fetch().text;\n if (nxt === \"\\\\relax\") {\n // \\relax is an artifact of the \\cr macro below\n parser.consume();\n parser.consumeSpaces();\n nxt = parser.fetch().text;\n }\n while (nxt === \"\\\\hline\" || nxt === \"\\\\hdashline\") {\n parser.consume();\n hlineInfo.push(nxt === \"\\\\hdashline\");\n parser.consumeSpaces();\n nxt = parser.fetch().text;\n }\n return hlineInfo;\n}\nvar validateAmsEnvironmentContext = context => {\n var settings = context.parser.settings;\n if (!settings.displayMode) {\n throw new ParseError(\"{\" + context.envName + \"} can be used only in\" + \" display mode.\");\n }\n};\nvar gatherEnvironments = new Set([\"gather\", \"gather*\"]);\n// autoTag (an argument to parseArray) can be one of three values:\n// * undefined: Regular (not-top-level) array; no tags on each row\n// * true: Automatic equation numbering, overridable by \\tag\n// * false: Tags allowed on each row, but no automatic numbering\n// This function *doesn't* work with the \"split\" environment name.\nfunction getAutoTag(name) {\n if (!name.includes(\"ed\")) {\n return !name.includes(\"*\");\n }\n // return undefined;\n}\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell. If given an optional argument style\n * (\"text\", \"display\", etc.), then each cell is cast into that style.\n */\nfunction parseArray(parser, _ref, style) {\n var {\n hskipBeforeAndAfter,\n addJot,\n cols,\n arraystretch,\n colSeparationType,\n autoTag,\n singleRow,\n emptySingleRow,\n maxNumCols,\n leqno\n } = _ref;\n parser.gullet.beginGroup();\n if (!singleRow) {\n // \\cr is equivalent to \\\\ without the optional size argument (see below)\n // TODO: provide helpful error when \\cr is used outside array environment\n parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n }\n // Get current arraystretch if it's not set by the environment\n if (!arraystretch) {\n var stretch = parser.gullet.expandMacroAsText(\"\\\\arraystretch\");\n if (stretch == null) {\n // Default \\arraystretch from lttab.dtx\n arraystretch = 1;\n } else {\n arraystretch = parseFloat(stretch);\n if (!arraystretch || arraystretch < 0) {\n throw new ParseError(\"Invalid \\\\arraystretch: \" + stretch);\n }\n }\n }\n // Start group for first cell\n parser.gullet.beginGroup();\n var row = [];\n var body = [row];\n var rowGaps = [];\n var hLinesBeforeRow = [];\n var tags = autoTag != null ? [] : undefined;\n // amsmath uses \\global\\@eqnswtrue and \\global\\@eqnswfalse to represent\n // whether this row should have an equation number. Simulate this with\n // a \\@eqnsw macro set to 1 or 0.\n function beginRow() {\n if (autoTag) {\n parser.gullet.macros.set(\"\\\\@eqnsw\", \"1\", true);\n }\n }\n function endRow() {\n if (tags) {\n if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n tags.push(parser.subparse([new Token(\"\\\\df@tag\")]));\n parser.gullet.macros.set(\"\\\\df@tag\", undefined, true);\n } else {\n tags.push(Boolean(autoTag) && parser.gullet.macros.get(\"\\\\@eqnsw\") === \"1\");\n }\n }\n }\n beginRow();\n // Test for \\hline at the top of the array.\n hLinesBeforeRow.push(getHLines(parser));\n while (true) {\n // eslint-disable-line no-constant-condition\n // Parse each cell in its own group (namespace)\n var cellBody = parser.parseExpression(false, singleRow ? \"\\\\end\" : \"\\\\\\\\\");\n parser.gullet.endGroup();\n parser.gullet.beginGroup();\n var cell = {\n type: \"ordgroup\",\n mode: parser.mode,\n body: cellBody\n };\n if (style) {\n cell = {\n type: \"styling\",\n mode: parser.mode,\n style,\n body: [cell]\n };\n }\n row.push(cell);\n var next = parser.fetch().text;\n if (next === \"&\") {\n if (maxNumCols && row.length === maxNumCols) {\n if (singleRow || colSeparationType) {\n // {equation} or {split}\n throw new ParseError(\"Too many tab characters: &\", parser.nextToken);\n } else {\n // {array} environment\n parser.settings.reportNonstrict(\"textEnv\", \"Too few columns \" + \"specified in the {array} column argument.\");\n }\n }\n parser.consume();\n } else if (next === \"\\\\end\") {\n endRow();\n // Arrays terminate newlines with `\\crcr` which consumes a `\\cr` if\n // the last line is empty. However, AMS environments keep the\n // empty row if it's the only one.\n // NOTE: Currently, `cell` is the last item added into `row`.\n if (row.length === 1 && cell.type === \"styling\" && cell.body.length === 1 && cell.body[0].type === \"ordgroup\" && cell.body[0].body.length === 0 && (body.length > 1 || !emptySingleRow)) {\n body.pop();\n }\n if (hLinesBeforeRow.length < body.length + 1) {\n hLinesBeforeRow.push([]);\n }\n break;\n } else if (next === \"\\\\\\\\\") {\n parser.consume();\n var size = void 0;\n // \\def\\Let@{\\let\\\\\\math@cr}\n // \\def\\math@cr{...\\math@cr@}\n // \\def\\math@cr@{\\new@ifnextchar[\\math@cr@@{\\math@cr@@[\\z@]}}\n // \\def\\math@cr@@[#1]{...\\math@cr@@@...}\n // \\def\\math@cr@@@{\\cr}\n if (parser.gullet.future().text !== \" \") {\n size = parser.parseSizeGroup(true);\n }\n rowGaps.push(size ? size.value : null);\n endRow();\n // check for \\hline(s) following the row separator\n hLinesBeforeRow.push(getHLines(parser));\n row = [];\n body.push(row);\n beginRow();\n } else {\n throw new ParseError(\"Expected & or \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n }\n }\n // End cell group\n parser.gullet.endGroup();\n // End array group defining \\cr\n parser.gullet.endGroup();\n return {\n type: \"array\",\n mode: parser.mode,\n addJot,\n arraystretch,\n body,\n cols,\n rowGaps,\n hskipBeforeAndAfter,\n hLinesBeforeRow,\n colSeparationType,\n tags,\n leqno\n };\n}\n// Decides on a style for cells in an array according to whether the given\n// environment name starts with the letter 'd'.\nfunction dCellStyle(envName) {\n if (envName.slice(0, 1) === \"d\") {\n return \"display\";\n } else {\n return \"text\";\n }\n}\nvar htmlBuilder$6 = function htmlBuilder(group, options) {\n var r;\n var c;\n var nr = group.body.length;\n var hLinesBeforeRow = group.hLinesBeforeRow;\n var nc = 0;\n var body = new Array(nr);\n var hlines = [];\n var ruleThickness = Math.max(\n // From LaTeX \\showthe\\arrayrulewidth. Equals 0.04 em.\n options.fontMetrics().arrayRuleWidth, options.minRuleThickness);\n // Horizontal spacing\n var pt = 1 / options.fontMetrics().ptPerEm;\n var arraycolsep = 5 * pt; // default value, i.e. \\arraycolsep in article.cls\n if (group.colSeparationType && group.colSeparationType === \"small\") {\n // We're in a {smallmatrix}. Default column space is \\thickspace,\n // i.e. 5/18em = 0.2778em, per amsmath.dtx for {smallmatrix}.\n // But that needs adjustment because LaTeX applies \\scriptstyle to the\n // entire array, including the colspace, but this function applies\n // \\scriptstyle only inside each element.\n var localMultiplier = options.havingStyle(Style$1.SCRIPT).sizeMultiplier;\n arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier);\n }\n // Vertical spacing\n var baselineskip = group.colSeparationType === \"CD\" ? calculateSize({\n number: 3,\n unit: \"ex\"\n }, options) : 12 * pt; // see size10.clo\n // Default \\jot from ltmath.dtx\n // TODO(edemaine): allow overriding \\jot via \\setlength (#687)\n var jot = 3 * pt;\n var arrayskip = group.arraystretch * baselineskip;\n var arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n var arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n var totalHeight = 0;\n // Set a position for \\hline(s) at the top of the array, if any.\n function setHLinePos(hlinesInGap) {\n for (var i = 0; i < hlinesInGap.length; ++i) {\n if (i > 0) {\n totalHeight += 0.25;\n }\n hlines.push({\n pos: totalHeight,\n isDashed: hlinesInGap[i]\n });\n }\n }\n setHLinePos(hLinesBeforeRow[0]);\n for (r = 0; r < group.body.length; ++r) {\n var inrow = group.body[r];\n var height = arstrutHeight; // \\@array adds an \\@arstrut\n var depth = arstrutDepth; // to each tow (via the template)\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n var outrow = new Array(inrow.length);\n for (c = 0; c < inrow.length; ++c) {\n var elt = buildGroup$1(inrow[c], options);\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n if (height < elt.height) {\n height = elt.height;\n }\n outrow[c] = elt;\n }\n var rowGap = group.rowGaps[r];\n var gap = 0;\n if (rowGap) {\n gap = calculateSize(rowGap, options);\n if (gap > 0) {\n // \\@argarraycr\n gap += arstrutDepth;\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n gap = 0;\n }\n }\n // In AMS multiline environments such as aligned and gathered, rows\n // correspond to lines that have additional \\jot added between lines\n // via \\openup.\n // We simulate this by adding \\jot depth to each row except the last.\n if (group.addJot && r < group.body.length - 1) {\n depth += jot;\n }\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n body[r] = outrow;\n // Set a position for \\hline(s), if any.\n setHLinePos(hLinesBeforeRow[r + 1]);\n }\n var offset = totalHeight / 2 + options.fontMetrics().axisHeight;\n var colDescriptions = group.cols || [];\n var cols = [];\n var colSep;\n var colDescrNum;\n var tagSpans = [];\n if (group.tags && group.tags.some(tag => tag)) {\n // An environment with manual tags and/or automatic equation numbers.\n // Create node(s), the latter of which trigger CSS counter increment.\n for (r = 0; r < nr; ++r) {\n var rw = body[r];\n var shift = rw.pos - offset;\n var tag = group.tags[r];\n var tagSpan = void 0;\n if (tag === true) {\n // automatic numbering\n tagSpan = makeSpan([\"eqn-num\"], [], options);\n } else if (tag === false) {\n // \\nonumber/\\notag or starred environment\n tagSpan = makeSpan([], [], options);\n } else {\n // manual \\tag\n tagSpan = makeSpan([], buildExpression$1(tag, options, true), options);\n }\n tagSpan.depth = rw.depth;\n tagSpan.height = rw.height;\n tagSpans.push({\n type: \"elem\",\n elem: tagSpan,\n shift\n });\n }\n }\n for (c = 0, colDescrNum = 0;\n // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) {\n var _colDescr3;\n var colDescr = colDescriptions[colDescrNum];\n var firstSeparator = true;\n while (((_colDescr = colDescr) == null ? void 0 : _colDescr.type) === \"separator\") {\n var _colDescr;\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(options.fontMetrics().doubleRuleSep);\n cols.push(colSep);\n }\n if (colDescr.separator === \"|\" || colDescr.separator === \":\") {\n var lineType = colDescr.separator === \"|\" ? \"solid\" : \"dashed\";\n var separator = makeSpan([\"vertical-separator\"], [], options);\n separator.style.height = makeEm(totalHeight);\n separator.style.borderRightWidth = makeEm(ruleThickness);\n separator.style.borderRightStyle = lineType;\n separator.style.margin = \"0 \" + makeEm(-ruleThickness / 2);\n var _shift = totalHeight - offset;\n if (_shift) {\n separator.style.verticalAlign = makeEm(-_shift);\n }\n cols.push(separator);\n } else {\n throw new ParseError(\"Invalid separator type: \" + colDescr.separator);\n }\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum];\n firstSeparator = false;\n }\n if (c >= nc) {\n continue;\n }\n var sepwidth = void 0;\n if (c > 0 || group.hskipBeforeAndAfter) {\n var _colDescr$pregap, _colDescr2;\n sepwidth = (_colDescr$pregap = (_colDescr2 = colDescr) == null ? void 0 : _colDescr2.pregap) != null ? _colDescr$pregap : arraycolsep;\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(sepwidth);\n cols.push(colSep);\n }\n }\n var colElems = [];\n for (r = 0; r < nr; ++r) {\n var row = body[r];\n var elem = row[c];\n if (!elem) {\n continue;\n }\n var _shift2 = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n colElems.push({\n type: \"elem\",\n elem: elem,\n shift: _shift2\n });\n }\n var colVList = makeVList({\n positionType: \"individualShift\",\n children: colElems\n });\n var colSpan = makeSpan([\"col-align-\" + (((_colDescr3 = colDescr) == null ? void 0 : _colDescr3.align) || \"c\")], [colVList]);\n cols.push(colSpan);\n if (c < nc - 1 || group.hskipBeforeAndAfter) {\n var _colDescr$postgap, _colDescr4;\n sepwidth = (_colDescr$postgap = (_colDescr4 = colDescr) == null ? void 0 : _colDescr4.postgap) != null ? _colDescr$postgap : arraycolsep;\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(sepwidth);\n cols.push(colSep);\n }\n }\n }\n var tableBody = makeSpan([\"mtable\"], cols);\n // Add \\hline(s), if any.\n if (hlines.length > 0) {\n var line = makeLineSpan(\"hline\", options, ruleThickness);\n var dashes = makeLineSpan(\"hdashline\", options, ruleThickness);\n var vListElems = [{\n type: \"elem\",\n elem: tableBody,\n shift: 0\n }];\n while (hlines.length > 0) {\n var hline = hlines.pop();\n var lineShift = hline.pos - offset;\n if (hline.isDashed) {\n vListElems.push({\n type: \"elem\",\n elem: dashes,\n shift: lineShift\n });\n } else {\n vListElems.push({\n type: \"elem\",\n elem: line,\n shift: lineShift\n });\n }\n }\n tableBody = makeVList({\n positionType: \"individualShift\",\n children: vListElems\n });\n }\n if (tagSpans.length === 0) {\n return makeSpan([\"mord\"], [tableBody], options);\n } else {\n var eqnNumCol = makeVList({\n positionType: \"individualShift\",\n children: tagSpans\n });\n var tagCol = makeSpan([\"tag\"], [eqnNumCol], options);\n return makeFragment([tableBody, tagCol]);\n }\n};\nvar alignMap = {\n c: \"center \",\n l: \"left \",\n r: \"right \"\n};\nvar mathmlBuilder$5 = function mathmlBuilder(group, options) {\n var tbl = [];\n var glue = new MathNode(\"mtd\", [], [\"mtr-glue\"]);\n var tag = new MathNode(\"mtd\", [], [\"mml-eqn-num\"]);\n for (var i = 0; i < group.body.length; i++) {\n var rw = group.body[i];\n var row = [];\n for (var j = 0; j < rw.length; j++) {\n row.push(new MathNode(\"mtd\", [buildGroup(rw[j], options)]));\n }\n if (group.tags && group.tags[i]) {\n row.unshift(glue);\n row.push(glue);\n if (group.leqno) {\n row.unshift(tag);\n } else {\n row.push(tag);\n }\n }\n tbl.push(new MathNode(\"mtr\", row));\n }\n var table = new MathNode(\"mtable\", tbl);\n // Set column alignment, row spacing, column spacing, and\n // array lines by setting attributes on the table element.\n // Set the row spacing. In MathML, we specify a gap distance.\n // We do not use rowGap[] because MathML automatically increases\n // cell height with the height/depth of the element content.\n // LaTeX \\arraystretch multiplies the row baseline-to-baseline distance.\n // We simulate this by adding (arraystretch - 1)em to the gap. This\n // does a reasonable job of adjusting arrays containing 1 em tall content.\n // The 0.16 and 0.09 values are found empirically. They produce an array\n // similar to LaTeX and in which content does not interfere with \\hlines.\n var gap = group.arraystretch === 0.5 ? 0.1 // {smallmatrix}, {subarray}\n : 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);\n table.setAttribute(\"rowspacing\", makeEm(gap));\n // MathML table lines go only between cells.\n // To place a line on an edge we'll use <menclose>, if necessary.\n var menclose = \"\";\n var align = \"\";\n if (group.cols && group.cols.length > 0) {\n // Find column alignment, column spacing, and vertical lines.\n var cols = group.cols;\n var columnLines = \"\";\n var prevTypeWasAlign = false;\n var iStart = 0;\n var iEnd = cols.length;\n if (cols[0].type === \"separator\") {\n menclose += \"top \";\n iStart = 1;\n }\n if (cols[cols.length - 1].type === \"separator\") {\n menclose += \"bottom \";\n iEnd -= 1;\n }\n for (var _i = iStart; _i < iEnd; _i++) {\n var col = cols[_i];\n if (col.type === \"align\") {\n align += alignMap[col.align];\n if (prevTypeWasAlign) {\n columnLines += \"none \";\n }\n prevTypeWasAlign = true;\n } else if (col.type === \"separator\") {\n // MathML accepts only single lines between cells.\n // So we read only the first of consecutive separators.\n if (prevTypeWasAlign) {\n columnLines += col.separator === \"|\" ? \"solid \" : \"dashed \";\n prevTypeWasAlign = false;\n }\n }\n }\n table.setAttribute(\"columnalign\", align.trim());\n if (/[sd]/.test(columnLines)) {\n table.setAttribute(\"columnlines\", columnLines.trim());\n }\n }\n // Set column spacing.\n if (group.colSeparationType === \"align\") {\n var _cols = group.cols || [];\n var spacing = \"\";\n for (var _i2 = 1; _i2 < _cols.length; _i2++) {\n spacing += _i2 % 2 ? \"0em \" : \"1em \";\n }\n table.setAttribute(\"columnspacing\", spacing.trim());\n } else if (group.colSeparationType === \"alignat\" || group.colSeparationType === \"gather\") {\n table.setAttribute(\"columnspacing\", \"0em\");\n } else if (group.colSeparationType === \"small\") {\n table.setAttribute(\"columnspacing\", \"0.2778em\");\n } else if (group.colSeparationType === \"CD\") {\n table.setAttribute(\"columnspacing\", \"0.5em\");\n } else {\n table.setAttribute(\"columnspacing\", \"1em\");\n }\n // Address \\hline and \\hdashline\n var rowLines = \"\";\n var hlines = group.hLinesBeforeRow;\n menclose += hlines[0].length > 0 ? \"left \" : \"\";\n menclose += hlines[hlines.length - 1].length > 0 ? \"right \" : \"\";\n for (var _i3 = 1; _i3 < hlines.length - 1; _i3++) {\n rowLines += hlines[_i3].length === 0 ? \"none \"\n // MathML accepts only a single line between rows. Read one element.\n : hlines[_i3][0] ? \"dashed \" : \"solid \";\n }\n if (/[sd]/.test(rowLines)) {\n table.setAttribute(\"rowlines\", rowLines.trim());\n }\n if (menclose !== \"\") {\n table = new MathNode(\"menclose\", [table]);\n table.setAttribute(\"notation\", menclose.trim());\n }\n if (group.arraystretch && group.arraystretch < 1) {\n // A small array. Wrap in scriptstyle so row gap is not too large.\n table = new MathNode(\"mstyle\", [table]);\n table.setAttribute(\"scriptlevel\", \"1\");\n }\n return table;\n};\n// Convenience function for align, align*, aligned, alignat, alignat*, alignedat.\nvar alignedHandler = function alignedHandler(context, args) {\n if (!context.envName.includes(\"ed\")) {\n validateAmsEnvironmentContext(context);\n }\n var cols = [];\n var separationType = context.envName.includes(\"at\") ? \"alignat\" : \"align\";\n var isSplit = context.envName === \"split\";\n var res = parseArray(context.parser, {\n cols,\n addJot: true,\n autoTag: isSplit ? undefined : getAutoTag(context.envName),\n emptySingleRow: true,\n colSeparationType: separationType,\n maxNumCols: isSplit ? 2 : undefined,\n leqno: context.parser.settings.leqno\n }, \"display\");\n // Determining number of columns.\n // 1. If the first argument is given, we use it as a number of columns,\n // and makes sure that each row doesn't exceed that number.\n // 2. Otherwise, just count number of columns = maximum number\n // of cells in each row (\"aligned\" mode -- isAligned will be true).\n //\n // At the same time, prepend empty group {} at beginning of every second\n // cell in each row (starting with second cell) so that operators become\n // binary. This behavior is implemented in amsmath's \\start@aligned.\n var numMaths = 0;\n var numCols = 0;\n var emptyGroup = {\n type: \"ordgroup\",\n mode: context.mode,\n body: []\n };\n if (args[0] && args[0].type === \"ordgroup\") {\n var arg0 = \"\";\n for (var i = 0; i < args[0].body.length; i++) {\n var textord = assertNodeType(args[0].body[i], \"textord\");\n arg0 += textord.text;\n }\n numMaths = Number(arg0);\n numCols = numMaths * 2;\n }\n var isAligned = !numCols;\n res.body.forEach(function (row) {\n for (var _i4 = 1; _i4 < row.length; _i4 += 2) {\n // Modify ordgroup node within styling node\n var styling = assertNodeType(row[_i4], \"styling\");\n var ordgroup = assertNodeType(styling.body[0], \"ordgroup\");\n ordgroup.body.unshift(emptyGroup);\n }\n if (!isAligned) {\n // Case 1\n var curMaths = row.length / 2;\n if (numMaths < curMaths) {\n throw new ParseError(\"Too many math in a row: \" + (\"expected \" + numMaths + \", but got \" + curMaths), row[0]);\n }\n } else if (numCols < row.length) {\n // Case 2\n numCols = row.length;\n }\n });\n // Adjusting alignment.\n // In aligned mode, we add one \\qquad between columns;\n // otherwise we add nothing.\n for (var _i5 = 0; _i5 < numCols; ++_i5) {\n var align = \"r\";\n var pregap = 0;\n if (_i5 % 2 === 1) {\n align = \"l\";\n } else if (_i5 > 0 && isAligned) {\n // \"aligned\" mode.\n pregap = 1; // add one \\quad\n }\n cols[_i5] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0\n };\n }\n res.colSeparationType = isAligned ? \"align\" : \"alignat\";\n return res;\n};\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\n// {darray} is an {array} environment where cells are set in \\displaystyle,\n// as defined in nccmath.sty.\ndefineEnvironment({\n type: \"array\",\n names: [\"array\", \"darray\"],\n props: {\n numArgs: 1\n },\n handler(context, args) {\n // Since no types are specified above, the two possibilities are\n // - The argument is wrapped in {} or [], in which case Parser's\n // parseGroup() returns an \"ordgroup\" wrapping some symbol node.\n // - The argument is a bare symbol node.\n var symNode = checkSymbolNodeType(args[0]);\n var colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n var cols = colalign.map(function (nde) {\n var node = assertSymbolNodeType(nde);\n var ca = node.text;\n if (\"lcr\".includes(ca)) {\n return {\n type: \"align\",\n align: ca\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\"\n };\n } else if (ca === \":\") {\n return {\n type: \"separator\",\n separator: \":\"\n };\n }\n throw new ParseError(\"Unknown column alignment: \" + ca, nde);\n });\n var res = {\n cols,\n hskipBeforeAndAfter: true,\n // \\@preamble in lttab.dtx\n maxNumCols: cols.length\n };\n return parseArray(context.parser, res, dCellStyle(context.envName));\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\n// The mathtools package adds starred versions of the same environments.\n// These have an optional argument to choose left|center|right justification.\ndefineEnvironment({\n type: \"array\",\n names: [\"matrix\", \"pmatrix\", \"bmatrix\", \"Bmatrix\", \"vmatrix\", \"Vmatrix\", \"matrix*\", \"pmatrix*\", \"bmatrix*\", \"Bmatrix*\", \"vmatrix*\", \"Vmatrix*\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n var delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"]\n }[context.envName.replace(\"*\", \"\")];\n // \\hskip -\\arraycolsep in amsmath\n var colAlign = \"c\";\n var payload = {\n hskipBeforeAndAfter: false,\n cols: [{\n type: \"align\",\n align: colAlign\n }]\n };\n if (context.envName.charAt(context.envName.length - 1) === \"*\") {\n // It's one of the mathtools starred functions.\n // Parse the optional alignment argument.\n var parser = context.parser;\n parser.consumeSpaces();\n if (parser.fetch().text === \"[\") {\n parser.consume();\n parser.consumeSpaces();\n colAlign = parser.fetch().text;\n if (!\"lcr\".includes(colAlign)) {\n throw new ParseError(\"Expected l or c or r\", parser.nextToken);\n }\n parser.consume();\n parser.consumeSpaces();\n parser.expect(\"]\");\n parser.consume();\n payload.cols = [{\n type: \"align\",\n align: colAlign\n }];\n }\n }\n var res = parseArray(context.parser, payload, dCellStyle(context.envName));\n // Populate cols with the correct number of column alignment specs.\n var numCols = Math.max(0, ...res.body.map(row => row.length));\n res.cols = new Array(numCols).fill({\n type: \"align\",\n align: colAlign\n });\n return delimiters ? {\n type: \"leftright\",\n mode: context.mode,\n body: [res],\n left: delimiters[0],\n right: delimiters[1],\n rightColor: undefined // \\right uninfluenced by \\color in array\n } : res;\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"smallmatrix\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n var payload = {\n arraystretch: 0.5\n };\n var res = parseArray(context.parser, payload, \"script\");\n res.colSeparationType = \"small\";\n return res;\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"subarray\"],\n props: {\n numArgs: 1\n },\n handler(context, args) {\n // Parsing of {subarray} is similar to {array}\n var symNode = checkSymbolNodeType(args[0]);\n var colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n var cols = colalign.map(function (nde) {\n var node = assertSymbolNodeType(nde);\n var ca = node.text;\n // {subarray} only recognizes \"l\" & \"c\"\n if (\"lc\".includes(ca)) {\n return {\n type: \"align\",\n align: ca\n };\n }\n throw new ParseError(\"Unknown column alignment: \" + ca, nde);\n });\n if (cols.length > 1) {\n throw new ParseError(\"{subarray} can contain only one column\");\n }\n var payload = {\n cols,\n hskipBeforeAndAfter: false,\n arraystretch: 0.5\n };\n var res = parseArray(context.parser, payload, \"script\");\n if (res.body.length > 0 && res.body[0].length > 1) {\n throw new ParseError(\"{subarray} can contain only one column\");\n }\n return res;\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} \u2026 \\end{array}\\right.\n// {dcases} is a {cases} environment where cells are set in \\displaystyle,\n// as defined in mathtools.sty.\n// {rcases} is another mathtools environment. It's brace is on the right side.\ndefineEnvironment({\n type: \"array\",\n names: [\"cases\", \"dcases\", \"rcases\", \"drcases\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n var payload = {\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n // TODO(kevinb) get the current style.\n // For now we use the metrics for TEXT style which is what we were\n // doing before. Before attempting to get the current style we\n // should look at TeX's behavior especially for \\over and matrices.\n postgap: 1.0 /* 1em quad */\n }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0\n }]\n };\n var res = parseArray(context.parser, payload, dCellStyle(context.envName));\n return {\n type: \"leftright\",\n mode: context.mode,\n body: [res],\n left: context.envName.includes(\"r\") ? \".\" : \"\\\\{\",\n right: context.envName.includes(\"r\") ? \"\\\\}\" : \".\",\n rightColor: undefined\n };\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// In the align environment, one uses ampersands, &, to specify number of\n// columns in each row, and to locate spacing between each column.\n// align gets automatic numbering. align* and aligned do not.\n// The alignedat environment can be used in math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\ndefineEnvironment({\n type: \"array\",\n names: [\"align\", \"align*\", \"aligned\", \"split\"],\n props: {\n numArgs: 0\n },\n handler: alignedHandler,\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// A gathered environment is like an array environment with one centered\n// column, but where rows are considered lines so get \\jot line spacing\n// and contents are set in \\displaystyle.\ndefineEnvironment({\n type: \"array\",\n names: [\"gathered\", \"gather\", \"gather*\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n if (gatherEnvironments.has(context.envName)) {\n validateAmsEnvironmentContext(context);\n }\n var res = {\n cols: [{\n type: \"align\",\n align: \"c\"\n }],\n addJot: true,\n colSeparationType: \"gather\",\n autoTag: getAutoTag(context.envName),\n emptySingleRow: true,\n leqno: context.parser.settings.leqno\n };\n return parseArray(context.parser, res, \"display\");\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// alignat environment is like an align environment, but one must explicitly\n// specify maximum number of columns in each row, and can adjust spacing between\n// each columns.\ndefineEnvironment({\n type: \"array\",\n names: [\"alignat\", \"alignat*\", \"alignedat\"],\n props: {\n numArgs: 1\n },\n handler: alignedHandler,\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"equation\", \"equation*\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n validateAmsEnvironmentContext(context);\n var res = {\n autoTag: getAutoTag(context.envName),\n emptySingleRow: true,\n singleRow: true,\n maxNumCols: 1,\n leqno: context.parser.settings.leqno\n };\n return parseArray(context.parser, res, \"display\");\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"CD\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n validateAmsEnvironmentContext(context);\n return parseCD(context.parser);\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineMacro(\"\\\\nonumber\", \"\\\\gdef\\\\@eqnsw{0}\");\ndefineMacro(\"\\\\notag\", \"\\\\nonumber\");\n// Catch \\hline outside array environment\ndefineFunction({\n type: \"text\",\n // Doesn't matter what this is.\n names: [\"\\\\hline\", \"\\\\hdashline\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: true\n },\n handler(context, args) {\n throw new ParseError(context.funcName + \" valid only within array environment\");\n }\n});\n\nvar environments = _environments;\n\n// Environment delimiters. HTML/MathML rendering is defined in the corresponding\n// defineEnvironment definitions.\ndefineFunction({\n type: \"environment\",\n names: [\"\\\\begin\", \"\\\\end\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"]\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var nameGroup = args[0];\n if (nameGroup.type !== \"ordgroup\") {\n throw new ParseError(\"Invalid environment name\", nameGroup);\n }\n var envName = \"\";\n for (var i = 0; i < nameGroup.body.length; ++i) {\n envName += assertNodeType(nameGroup.body[i], \"textord\").text;\n }\n if (funcName === \"\\\\begin\") {\n // begin...end is similar to left...right\n if (!environments.hasOwnProperty(envName)) {\n throw new ParseError(\"No such environment: \" + envName, nameGroup);\n }\n // Build the environment object. Arguments and other information will\n // be made available to the begin and end methods using properties.\n var env = environments[envName];\n var {\n args: _args,\n optArgs\n } = parser.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n var context = {\n mode: parser.mode,\n envName,\n parser\n };\n var result = env.handler(context, _args, optArgs);\n parser.expect(\"\\\\end\", false);\n var endNameToken = parser.nextToken;\n var end = assertNodeType(parser.parseFunction(), \"environment\");\n if (end.name !== envName) {\n throw new ParseError(\"Mismatch: \\\\begin{\" + envName + \"} matched by \\\\end{\" + end.name + \"}\", endNameToken);\n }\n // TODO(ts), \"environment\" handler returns an environment ParseNode\n return result;\n }\n return {\n type: \"environment\",\n mode: parser.mode,\n name: envName,\n nameGroup\n };\n }\n});\n\n// TODO(kevinb): implement \\\\sl and \\\\sc\nvar htmlBuilder$5 = (group, options) => {\n var font = group.font;\n var newOptions = options.withFont(font);\n return buildGroup$1(group.body, newOptions);\n};\nvar mathmlBuilder$4 = (group, options) => {\n var font = group.font;\n var newOptions = options.withFont(font);\n return buildGroup(group.body, newOptions);\n};\nvar fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\",\n \"\\\\bm\": \"\\\\boldsymbol\"\n};\ndefineFunction({\n type: \"font\",\n names: [\n // styles, except \\boldsymbol defined below\n \"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\", \"\\\\mathnormal\", \"\\\\mathsfit\",\n // families\n \"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\", \"\\\\mathtt\",\n // aliases, except \\bm defined below\n \"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\"],\n props: {\n numArgs: 1,\n allowedInArgument: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var body = normalizeArgument(args[0]);\n var func = funcName;\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n return {\n type: \"font\",\n mode: parser.mode,\n font: func.slice(1),\n body\n };\n },\n htmlBuilder: htmlBuilder$5,\n mathmlBuilder: mathmlBuilder$4\n});\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\boldsymbol\", \"\\\\bm\"],\n props: {\n numArgs: 1\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var body = args[0];\n // amsbsy.sty's \\boldsymbol uses \\binrel spacing to inherit the\n // argument's bin|rel|ord status\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: binrelClass(body),\n body: [{\n type: \"font\",\n mode: parser.mode,\n font: \"boldsymbol\",\n body\n }],\n isCharacterBox: isCharacterBox(body)\n };\n }\n});\n// Old font changing functions\ndefineFunction({\n type: \"font\",\n names: [\"\\\\rm\", \"\\\\sf\", \"\\\\tt\", \"\\\\bf\", \"\\\\it\", \"\\\\cal\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler: (_ref3, args) => {\n var {\n parser,\n funcName,\n breakOnTokenText\n } = _ref3;\n var {\n mode\n } = parser;\n var body = parser.parseExpression(true, breakOnTokenText);\n var style = \"math\" + funcName.slice(1);\n return {\n type: \"font\",\n mode: mode,\n font: style,\n body: {\n type: \"ordgroup\",\n mode: parser.mode,\n body\n }\n };\n },\n htmlBuilder: htmlBuilder$5,\n mathmlBuilder: mathmlBuilder$4\n});\n\nvar htmlBuilder$4 = (group, options) => {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n var style = options.style;\n var nstyle = style.fracNum();\n var dstyle = style.fracDen();\n var newOptions;\n newOptions = options.havingStyle(nstyle);\n var numerm = buildGroup$1(group.numer, newOptions, options);\n if (group.continued) {\n // \\cfrac inserts a \\strut into the numerator.\n // Get \\strut dimensions from TeXbook page 353.\n var hStrut = 8.5 / options.fontMetrics().ptPerEm;\n var dStrut = 3.5 / options.fontMetrics().ptPerEm;\n numerm.height = numerm.height < hStrut ? hStrut : numerm.height;\n numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth;\n }\n newOptions = options.havingStyle(dstyle);\n var denomm = buildGroup$1(group.denom, newOptions, options);\n var rule;\n var ruleWidth;\n var ruleSpacing;\n if (group.hasBarLine) {\n if (group.barSize) {\n ruleWidth = calculateSize(group.barSize, options);\n rule = makeLineSpan(\"frac-line\", options, ruleWidth);\n } else {\n rule = makeLineSpan(\"frac-line\", options);\n }\n ruleWidth = rule.height;\n ruleSpacing = rule.height;\n } else {\n rule = null;\n ruleWidth = 0;\n ruleSpacing = options.fontMetrics().defaultRuleThickness;\n }\n // Rule 15b\n var numShift;\n var clearance;\n var denomShift;\n if (style.size === Style$1.DISPLAY.size) {\n numShift = options.fontMetrics().num1;\n if (ruleWidth > 0) {\n clearance = 3 * ruleSpacing;\n } else {\n clearance = 7 * ruleSpacing;\n }\n denomShift = options.fontMetrics().denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = options.fontMetrics().num2;\n clearance = ruleSpacing;\n } else {\n numShift = options.fontMetrics().num3;\n clearance = 3 * ruleSpacing;\n }\n denomShift = options.fontMetrics().denom2;\n }\n var frac;\n if (!rule) {\n // Rule 15c\n var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift);\n if (candidateClearance < clearance) {\n numShift += 0.5 * (clearance - candidateClearance);\n denomShift += 0.5 * (clearance - candidateClearance);\n }\n frac = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: denomm,\n shift: denomShift\n }, {\n type: \"elem\",\n elem: numerm,\n shift: -numShift\n }]\n });\n } else {\n // Rule 15d\n var axisHeight = options.fontMetrics().axisHeight;\n if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) {\n numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth));\n }\n if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) {\n denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift));\n }\n var midShift = -(axisHeight - 0.5 * ruleWidth);\n frac = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: denomm,\n shift: denomShift\n }, {\n type: \"elem\",\n elem: rule,\n shift: midShift\n }, {\n type: \"elem\",\n elem: numerm,\n shift: -numShift\n }]\n });\n }\n // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n newOptions = options.havingStyle(style);\n frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier;\n frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier;\n // Rule 15e\n var delimSize;\n if (style.size === Style$1.DISPLAY.size) {\n delimSize = options.fontMetrics().delim1;\n } else if (style.size === Style$1.SCRIPTSCRIPT.size) {\n delimSize = options.havingStyle(Style$1.SCRIPT).fontMetrics().delim2;\n } else {\n delimSize = options.fontMetrics().delim2;\n }\n var leftDelim;\n var rightDelim;\n if (group.leftDelim == null) {\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n leftDelim = makeCustomSizedDelim(group.leftDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mopen\"]);\n }\n if (group.continued) {\n rightDelim = makeSpan([]); // zero width for \\cfrac\n } else if (group.rightDelim == null) {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = makeCustomSizedDelim(group.rightDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mclose\"]);\n }\n return makeSpan([\"mord\"].concat(newOptions.sizingClasses(options)), [leftDelim, makeSpan([\"mfrac\"], [frac]), rightDelim], options);\n};\nvar mathmlBuilder$3 = (group, options) => {\n var node = new MathNode(\"mfrac\", [buildGroup(group.numer, options), buildGroup(group.denom, options)]);\n if (!group.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n } else if (group.barSize) {\n var ruleWidth = calculateSize(group.barSize, options);\n node.setAttribute(\"linethickness\", makeEm(ruleWidth));\n }\n if (group.leftDelim != null || group.rightDelim != null) {\n var withDelims = [];\n if (group.leftDelim != null) {\n var leftOp = new MathNode(\"mo\", [new TextNode(group.leftDelim.replace(\"\\\\\", \"\"))]);\n leftOp.setAttribute(\"fence\", \"true\");\n withDelims.push(leftOp);\n }\n withDelims.push(node);\n if (group.rightDelim != null) {\n var rightOp = new MathNode(\"mo\", [new TextNode(group.rightDelim.replace(\"\\\\\", \"\"))]);\n rightOp.setAttribute(\"fence\", \"true\");\n withDelims.push(rightOp);\n }\n return makeRow(withDelims);\n }\n return node;\n};\nvar wrapWithStyle = (frac, style) => {\n if (!style) {\n return frac;\n }\n var wrapper = {\n type: \"styling\",\n mode: frac.mode,\n style,\n body: [frac]\n };\n // @ts-ignore defineFunction handler needs to return ParseNode<\"genfrac\">\n return wrapper;\n};\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\cfrac\", \"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\", \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\", \"\\\\\\\\atopfrac\",\n // can\u2019t be entered directly\n \"\\\\\\\\bracefrac\", \"\\\\\\\\brackfrac\" // ditto\n ],\n props: {\n numArgs: 2,\n allowedInArgument: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var numer = args[0];\n var denom = args[1];\n var hasBarLine;\n var leftDelim = null;\n var rightDelim = null;\n switch (funcName) {\n case \"\\\\cfrac\":\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n case \"\\\\\\\\atopfrac\":\n hasBarLine = false;\n break;\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n case \"\\\\\\\\bracefrac\":\n hasBarLine = false;\n leftDelim = \"\\\\{\";\n rightDelim = \"\\\\}\";\n break;\n case \"\\\\\\\\brackfrac\":\n hasBarLine = false;\n leftDelim = \"[\";\n rightDelim = \"]\";\n break;\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n var continued = funcName === \"\\\\cfrac\";\n var style = null;\n if (continued || funcName.startsWith(\"\\\\d\")) {\n style = \"display\";\n } else if (funcName.startsWith(\"\\\\t\")) {\n style = \"text\";\n }\n return wrapWithStyle({\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued,\n hasBarLine,\n leftDelim,\n rightDelim,\n barSize: null\n }, style);\n },\n htmlBuilder: htmlBuilder$4,\n mathmlBuilder: mathmlBuilder$3\n});\n// Infix generalized fractions -- these are not rendered directly, but replaced\n// immediately by one of the variants above.\ndefineFunction({\n type: \"infix\",\n names: [\"\\\\over\", \"\\\\choose\", \"\\\\atop\", \"\\\\brace\", \"\\\\brack\"],\n props: {\n numArgs: 0,\n infix: true\n },\n handler(_ref2) {\n var {\n parser,\n funcName,\n token\n } = _ref2;\n var replaceWith;\n switch (funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n case \"\\\\atop\":\n replaceWith = \"\\\\\\\\atopfrac\";\n break;\n case \"\\\\brace\":\n replaceWith = \"\\\\\\\\bracefrac\";\n break;\n case \"\\\\brack\":\n replaceWith = \"\\\\\\\\brackfrac\";\n break;\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n return {\n type: \"infix\",\n mode: parser.mode,\n replaceWith,\n token\n };\n }\n});\nvar stylArray = [\"display\", \"text\", \"script\", \"scriptscript\"];\nvar delimFromValue = function delimFromValue(delimString) {\n var delim = null;\n if (delimString.length > 0) {\n delim = delimString;\n delim = delim === \".\" ? null : delim;\n }\n return delim;\n};\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\genfrac\"],\n props: {\n numArgs: 6,\n allowedInArgument: true,\n argTypes: [\"math\", \"math\", \"size\", \"text\", \"math\", \"math\"]\n },\n handler(_ref3, args) {\n var {\n parser\n } = _ref3;\n var numer = args[4];\n var denom = args[5];\n // Look into the parse nodes to get the desired delimiters.\n var leftNode = normalizeArgument(args[0]);\n var leftDelim = leftNode.type === \"atom\" && leftNode.family === \"open\" ? delimFromValue(leftNode.text) : null;\n var rightNode = normalizeArgument(args[1]);\n var rightDelim = rightNode.type === \"atom\" && rightNode.family === \"close\" ? delimFromValue(rightNode.text) : null;\n var barNode = assertNodeType(args[2], \"size\");\n var hasBarLine;\n var barSize = null;\n if (barNode.isBlank) {\n // \\genfrac acts differently than \\above.\n // \\genfrac treats an empty size group as a signal to use a\n // standard bar size. \\above would see size = 0 and omit the bar.\n hasBarLine = true;\n } else {\n barSize = barNode.value;\n hasBarLine = barSize.number > 0;\n }\n // Find out if we want displaystyle, textstyle, etc.\n var size = null;\n var styl = args[3];\n if (styl.type === \"ordgroup\") {\n if (styl.body.length > 0) {\n var textOrd = assertNodeType(styl.body[0], \"textord\");\n size = stylArray[Number(textOrd.text)];\n }\n } else {\n styl = assertNodeType(styl, \"textord\");\n size = stylArray[Number(styl.text)];\n }\n return wrapWithStyle({\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued: false,\n hasBarLine,\n barSize,\n leftDelim,\n rightDelim\n }, size);\n }\n});\n// \\above is an infix fraction that also defines a fraction bar size.\ndefineFunction({\n type: \"infix\",\n names: [\"\\\\above\"],\n props: {\n numArgs: 1,\n argTypes: [\"size\"],\n infix: true\n },\n handler(_ref4, args) {\n var {\n parser,\n funcName,\n token\n } = _ref4;\n return {\n type: \"infix\",\n mode: parser.mode,\n replaceWith: \"\\\\\\\\abovefrac\",\n size: assertNodeType(args[0], \"size\").value,\n token\n };\n }\n});\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\\\\\abovefrac\"],\n props: {\n numArgs: 3,\n argTypes: [\"math\", \"size\", \"math\"]\n },\n handler: (_ref5, args) => {\n var {\n parser,\n funcName\n } = _ref5;\n var numer = args[0];\n var barSize = assertNodeType(args[1], \"infix\").size;\n if (!barSize) {\n throw new Error(\"\\\\\\\\abovefrac expected size, but got \" + String(barSize));\n }\n var denom = args[2];\n var hasBarLine = barSize.number > 0;\n return {\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued: false,\n hasBarLine,\n barSize,\n leftDelim: null,\n rightDelim: null\n };\n }\n});\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"horizBrace\", but\n// also \"supsub\" since an over/underbrace can affect super/subscripting.\nvar htmlBuilder$3 = (grp, options) => {\n var style = options.style;\n // Pull out the `ParseNode<\"horizBrace\">` if `grp` is a \"supsub\" node.\n var supSubGroup;\n var group;\n if (grp.type === \"supsub\") {\n // Ref: LaTeX source2e: }}}}\\limits}\n // i.e. LaTeX treats the brace similar to an op and passes it\n // with \\limits, so we need to assign supsub style.\n supSubGroup = grp.sup ? buildGroup$1(grp.sup, options.havingStyle(style.sup()), options) : buildGroup$1(grp.sub, options.havingStyle(style.sub()), options);\n group = assertNodeType(grp.base, \"horizBrace\");\n } else {\n group = assertNodeType(grp, \"horizBrace\");\n }\n // Build the base group\n var body = buildGroup$1(group.base, options.havingBaseStyle(Style$1.DISPLAY));\n // Create the stretchy element\n var braceBody = stretchySvg(group, options);\n // Generate the vlist, with the appropriate kerns \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n // This first vlist contains the content and the brace: equation\n var vlist;\n if (group.isOver) {\n vlist = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"kern\",\n size: 0.1\n }, {\n type: \"elem\",\n elem: braceBody\n }]\n });\n // TODO(ts): Replace this with passing \"svg-align\" into makeVList.\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n } else {\n vlist = makeVList({\n positionType: \"bottom\",\n positionData: body.depth + 0.1 + braceBody.height,\n children: [{\n type: \"elem\",\n elem: braceBody\n }, {\n type: \"kern\",\n size: 0.1\n }, {\n type: \"elem\",\n elem: body\n }]\n });\n // TODO(ts): Replace this with passing \"svg-align\" into makeVList.\n vlist.children[0].children[0].children[0].classes.push(\"svg-align\");\n }\n if (supSubGroup) {\n // To write the supsub, wrap the first vlist in another vlist:\n // They can't all go in the same vlist, because the note might be\n // wider than the equation. We want the equation to control the\n // brace width.\n // note long note long note\n // \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513 or \u250F\u2501\u2501\u2501\u2513 not \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n // equation eqn eqn\n var vSpan = makeSpan([\"minner\", group.isOver ? \"mover\" : \"munder\"], [vlist], options);\n if (group.isOver) {\n vlist = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: vSpan\n }, {\n type: \"kern\",\n size: 0.2\n }, {\n type: \"elem\",\n elem: supSubGroup\n }]\n });\n } else {\n vlist = makeVList({\n positionType: \"bottom\",\n positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth,\n children: [{\n type: \"elem\",\n elem: supSubGroup\n }, {\n type: \"kern\",\n size: 0.2\n }, {\n type: \"elem\",\n elem: vSpan\n }]\n });\n }\n }\n return makeSpan([\"minner\", group.isOver ? \"mover\" : \"munder\"], [vlist], options);\n};\nvar mathmlBuilder$2 = (group, options) => {\n var accentNode = stretchyMathML(group.label);\n return new MathNode(group.isOver ? \"mover\" : \"munder\", [buildGroup(group.base, options), accentNode]);\n};\n// Horizontal stretchy braces\ndefineFunction({\n type: \"horizBrace\",\n names: [\"\\\\overbrace\", \"\\\\underbrace\", \"\\\\overbracket\", \"\\\\underbracket\"],\n props: {\n numArgs: 1\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n return {\n type: \"horizBrace\",\n mode: parser.mode,\n label: funcName,\n isOver: funcName.includes(\"\\\\over\"),\n base: args[0]\n };\n },\n htmlBuilder: htmlBuilder$3,\n mathmlBuilder: mathmlBuilder$2\n});\n\ndefineFunction({\n type: \"href\",\n names: [\"\\\\href\"],\n props: {\n numArgs: 2,\n argTypes: [\"url\", \"original\"],\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n var body = args[1];\n var href = assertNodeType(args[0], \"url\").url;\n if (!parser.settings.isTrusted({\n command: \"\\\\href\",\n url: href\n })) {\n return parser.formatUnsupportedCmd(\"\\\\href\");\n }\n return {\n type: \"href\",\n mode: parser.mode,\n href,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.body, options, false);\n return makeAnchor(group.href, [], elements, options);\n },\n mathmlBuilder: (group, options) => {\n var math = buildExpressionRow(group.body, options);\n if (!(math instanceof MathNode)) {\n math = new MathNode(\"mrow\", [math]);\n }\n math.setAttribute(\"href\", group.href);\n return math;\n }\n});\ndefineFunction({\n type: \"href\",\n names: [\"\\\\url\"],\n props: {\n numArgs: 1,\n argTypes: [\"url\"],\n allowedInText: true\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var href = assertNodeType(args[0], \"url\").url;\n if (!parser.settings.isTrusted({\n command: \"\\\\url\",\n url: href\n })) {\n return parser.formatUnsupportedCmd(\"\\\\url\");\n }\n var chars = [];\n for (var i = 0; i < href.length; i++) {\n var c = href[i];\n if (c === \"~\") {\n c = \"\\\\textasciitilde\";\n }\n chars.push({\n type: \"textord\",\n mode: \"text\",\n text: c\n });\n }\n var body = {\n type: \"text\",\n mode: parser.mode,\n font: \"\\\\texttt\",\n body: chars\n };\n return {\n type: \"href\",\n mode: parser.mode,\n href,\n body: ordargument(body)\n };\n }\n});\n\n// \\hbox is provided for compatibility with LaTeX \\vcenter.\n// In LaTeX, \\vcenter can act only on a box, as in\n// \\vcenter{\\hbox{$\\frac{a+b}{\\dfrac{c}{d}}$}}\n// This function by itself doesn't do anything but prevent a soft line break.\ndefineFunction({\n type: \"hbox\",\n names: [\"\\\\hbox\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"],\n allowedInText: true,\n primitive: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"hbox\",\n mode: parser.mode,\n body: ordargument(args[0])\n };\n },\n htmlBuilder(group, options) {\n var elements = buildExpression$1(group.body, options, false);\n return makeFragment(elements);\n },\n mathmlBuilder(group, options) {\n return new MathNode(\"mrow\", buildExpression(group.body, options));\n }\n});\n\ndefineFunction({\n type: \"html\",\n names: [\"\\\\htmlClass\", \"\\\\htmlId\", \"\\\\htmlStyle\", \"\\\\htmlData\"],\n props: {\n numArgs: 2,\n argTypes: [\"raw\", \"original\"],\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName,\n token\n } = _ref;\n var value = assertNodeType(args[0], \"raw\").string;\n var body = args[1];\n if (parser.settings.strict) {\n parser.settings.reportNonstrict(\"htmlExtension\", \"HTML extension is disabled on strict mode\");\n }\n var trustContext;\n var attributes = {};\n switch (funcName) {\n case \"\\\\htmlClass\":\n attributes.class = value;\n trustContext = {\n command: \"\\\\htmlClass\",\n class: value\n };\n break;\n case \"\\\\htmlId\":\n attributes.id = value;\n trustContext = {\n command: \"\\\\htmlId\",\n id: value\n };\n break;\n case \"\\\\htmlStyle\":\n attributes.style = value;\n trustContext = {\n command: \"\\\\htmlStyle\",\n style: value\n };\n break;\n case \"\\\\htmlData\":\n {\n var data = value.split(\",\");\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n var firstEquals = item.indexOf(\"=\");\n if (firstEquals < 0) {\n throw new ParseError(\"\\\\htmlData key/value '\" + item + \"'\" + \" missing equals sign\");\n }\n var key = item.slice(0, firstEquals);\n var _value = item.slice(firstEquals + 1);\n attributes[\"data-\" + key.trim()] = _value;\n }\n trustContext = {\n command: \"\\\\htmlData\",\n attributes\n };\n break;\n }\n default:\n throw new Error(\"Unrecognized html command\");\n }\n if (!parser.settings.isTrusted(trustContext)) {\n return parser.formatUnsupportedCmd(funcName);\n }\n return {\n type: \"html\",\n mode: parser.mode,\n attributes,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.body, options, false);\n var classes = [\"enclosing\"];\n if (group.attributes.class) {\n classes.push(...group.attributes.class.trim().split(/\\s+/));\n }\n var span = makeSpan(classes, elements, options);\n for (var attr in group.attributes) {\n if (attr !== \"class\" && group.attributes.hasOwnProperty(attr)) {\n span.setAttribute(attr, group.attributes[attr]);\n }\n }\n return span;\n },\n mathmlBuilder: (group, options) => {\n return buildExpressionRow(group.body, options);\n }\n});\n\ndefineFunction({\n type: \"htmlmathml\",\n names: [\"\\\\html@mathml\"],\n props: {\n numArgs: 2,\n allowedInArgument: true,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n return {\n type: \"htmlmathml\",\n mode: parser.mode,\n html: ordargument(args[0]),\n mathml: ordargument(args[1])\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.html, options, false);\n return makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n return buildExpressionRow(group.mathml, options);\n }\n});\n\nvar sizeData = function sizeData(str) {\n if (/^[-+]? *(\\d+(\\.\\d*)?|\\.\\d+)$/.test(str)) {\n // str is a number with no unit specified.\n // default unit is bp, per graphix package.\n return {\n number: +str,\n unit: \"bp\"\n };\n } else {\n var match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(str);\n if (!match) {\n throw new ParseError(\"Invalid size: '\" + str + \"' in \\\\includegraphics\");\n }\n var data = {\n number: +(match[1] + match[2]),\n // sign + magnitude, cast to number\n unit: match[3]\n };\n if (!validUnit(data)) {\n throw new ParseError(\"Invalid unit: '\" + data.unit + \"' in \\\\includegraphics.\");\n }\n return data;\n }\n};\ndefineFunction({\n type: \"includegraphics\",\n names: [\"\\\\includegraphics\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1,\n argTypes: [\"raw\", \"url\"],\n allowedInText: false\n },\n handler: (_ref, args, optArgs) => {\n var {\n parser\n } = _ref;\n var width = {\n number: 0,\n unit: \"em\"\n };\n var height = {\n number: 0.9,\n unit: \"em\"\n }; // sorta character sized.\n var totalheight = {\n number: 0,\n unit: \"em\"\n };\n var alt = \"\";\n if (optArgs[0]) {\n var attributeStr = assertNodeType(optArgs[0], \"raw\").string;\n // Parser.js does not parse key/value pairs. We get a string.\n var attributes = attributeStr.split(\",\");\n for (var i = 0; i < attributes.length; i++) {\n var keyVal = attributes[i].split(\"=\");\n if (keyVal.length === 2) {\n var str = keyVal[1].trim();\n switch (keyVal[0].trim()) {\n case \"alt\":\n alt = str;\n break;\n case \"width\":\n width = sizeData(str);\n break;\n case \"height\":\n height = sizeData(str);\n break;\n case \"totalheight\":\n totalheight = sizeData(str);\n break;\n default:\n throw new ParseError(\"Invalid key: '\" + keyVal[0] + \"' in \\\\includegraphics.\");\n }\n }\n }\n }\n var src = assertNodeType(args[0], \"url\").url;\n if (alt === \"\") {\n // No alt given. Use the file name. Strip away the path.\n alt = src;\n alt = alt.replace(/^.*[\\\\/]/, '');\n alt = alt.substring(0, alt.lastIndexOf('.'));\n }\n if (!parser.settings.isTrusted({\n command: \"\\\\includegraphics\",\n url: src\n })) {\n return parser.formatUnsupportedCmd(\"\\\\includegraphics\");\n }\n return {\n type: \"includegraphics\",\n mode: parser.mode,\n alt: alt,\n width: width,\n height: height,\n totalheight: totalheight,\n src: src\n };\n },\n htmlBuilder: (group, options) => {\n var height = calculateSize(group.height, options);\n var depth = 0;\n if (group.totalheight.number > 0) {\n depth = calculateSize(group.totalheight, options) - height;\n }\n var width = 0;\n if (group.width.number > 0) {\n width = calculateSize(group.width, options);\n }\n var style = {\n height: makeEm(height + depth)\n };\n if (width > 0) {\n style.width = makeEm(width);\n }\n if (depth > 0) {\n style.verticalAlign = makeEm(-depth);\n }\n var node = new Img(group.src, group.alt, style);\n node.height = height;\n node.depth = depth;\n return node;\n },\n mathmlBuilder: (group, options) => {\n var node = new MathNode(\"mglyph\", []);\n node.setAttribute(\"alt\", group.alt);\n var height = calculateSize(group.height, options);\n var depth = 0;\n if (group.totalheight.number > 0) {\n depth = calculateSize(group.totalheight, options) - height;\n node.setAttribute(\"valign\", makeEm(-depth));\n }\n node.setAttribute(\"height\", makeEm(height + depth));\n if (group.width.number > 0) {\n var width = calculateSize(group.width, options);\n node.setAttribute(\"width\", makeEm(width));\n }\n node.setAttribute(\"src\", group.src);\n return node;\n }\n});\n\n// Horizontal spacing commands\n// TODO: \\hskip and \\mskip should support plus and minus in lengths\ndefineFunction({\n type: \"kern\",\n names: [\"\\\\kern\", \"\\\\mkern\", \"\\\\hskip\", \"\\\\mskip\"],\n props: {\n numArgs: 1,\n argTypes: [\"size\"],\n primitive: true,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var size = assertNodeType(args[0], \"size\");\n if (parser.settings.strict) {\n var mathFunction = funcName[1] === 'm'; // \\mkern, \\mskip\n var muUnit = size.value.unit === 'mu';\n if (mathFunction) {\n if (!muUnit) {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" supports only mu units, \" + (\"not \" + size.value.unit + \" units\"));\n }\n if (parser.mode !== \"math\") {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" works only in math mode\");\n }\n } else {\n // !mathFunction\n if (muUnit) {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" doesn't support mu units\");\n }\n }\n }\n return {\n type: \"kern\",\n mode: parser.mode,\n dimension: size.value\n };\n },\n htmlBuilder(group, options) {\n return makeGlue(group.dimension, options);\n },\n mathmlBuilder(group, options) {\n var dimension = calculateSize(group.dimension, options);\n return new SpaceNode(dimension);\n }\n});\n\n// Horizontal overlap functions\ndefineFunction({\n type: \"lap\",\n names: [\"\\\\mathllap\", \"\\\\mathrlap\", \"\\\\mathclap\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"lap\",\n mode: parser.mode,\n alignment: funcName.slice(5),\n body\n };\n },\n htmlBuilder: (group, options) => {\n // mathllap, mathrlap, mathclap\n var inner;\n if (group.alignment === \"clap\") {\n // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/\n inner = makeSpan([], [buildGroup$1(group.body, options)]);\n // wrap, since CSS will center a .clap > .inner > span\n inner = makeSpan([\"inner\"], [inner], options);\n } else {\n inner = makeSpan([\"inner\"], [buildGroup$1(group.body, options)]);\n }\n var fix = makeSpan([\"fix\"], []);\n var node = makeSpan([group.alignment], [inner, fix], options);\n // At this point, we have correctly set horizontal alignment of the\n // two items involved in the lap.\n // Next, use a strut to set the height of the HTML bounding box.\n // Otherwise, a tall argument may be misplaced.\n // This code resolved issue #1153\n var strut = makeSpan([\"strut\"]);\n strut.style.height = makeEm(node.height + node.depth);\n if (node.depth) {\n strut.style.verticalAlign = makeEm(-node.depth);\n }\n node.children.unshift(strut);\n // Next, prevent vertical misplacement when next to something tall.\n // This code resolves issue #1234\n node = makeSpan([\"thinbox\"], [node], options);\n return makeSpan([\"mord\", \"vbox\"], [node], options);\n },\n mathmlBuilder: (group, options) => {\n // mathllap, mathrlap, mathclap\n var node = new MathNode(\"mpadded\", [buildGroup(group.body, options)]);\n if (group.alignment !== \"rlap\") {\n var offset = group.alignment === \"llap\" ? \"-1\" : \"-0.5\";\n node.setAttribute(\"lspace\", offset + \"width\");\n }\n node.setAttribute(\"width\", \"0px\");\n return node;\n }\n});\n\n// Switching from text mode back to math mode\ndefineFunction({\n type: \"styling\",\n names: [\"\\\\(\", \"$\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: false\n },\n handler(_ref, args) {\n var {\n funcName,\n parser\n } = _ref;\n var outerMode = parser.mode;\n parser.switchMode(\"math\");\n var close = funcName === \"\\\\(\" ? \"\\\\)\" : \"$\";\n var body = parser.parseExpression(false, close);\n parser.expect(close);\n parser.switchMode(outerMode);\n return {\n type: \"styling\",\n mode: parser.mode,\n style: \"text\",\n body\n };\n }\n});\n// Check for extra closing math delimiters\ndefineFunction({\n type: \"text\",\n // Doesn't matter what this is.\n names: [\"\\\\)\", \"\\\\]\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: false\n },\n handler(context, args) {\n throw new ParseError(\"Mismatched \" + context.funcName);\n }\n});\n\nvar chooseMathStyle = (group, options) => {\n switch (options.style.size) {\n case Style$1.DISPLAY.size:\n return group.display;\n case Style$1.TEXT.size:\n return group.text;\n case Style$1.SCRIPT.size:\n return group.script;\n case Style$1.SCRIPTSCRIPT.size:\n return group.scriptscript;\n default:\n return group.text;\n }\n};\ndefineFunction({\n type: \"mathchoice\",\n names: [\"\\\\mathchoice\"],\n props: {\n numArgs: 4,\n primitive: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n return {\n type: \"mathchoice\",\n mode: parser.mode,\n display: ordargument(args[0]),\n text: ordargument(args[1]),\n script: ordargument(args[2]),\n scriptscript: ordargument(args[3])\n };\n },\n htmlBuilder: (group, options) => {\n var body = chooseMathStyle(group, options);\n var elements = buildExpression$1(body, options, false);\n return makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n var body = chooseMathStyle(group, options);\n return buildExpressionRow(body, options);\n }\n});\n\n// For an operator with limits, assemble the base, sup, and sub into a span.\nvar assembleSupSub = (base, supGroup, subGroup, options, style, slant, baseShift) => {\n base = makeSpan([], [base]);\n var subIsSingleCharacter = subGroup && isCharacterBox(subGroup);\n var sub;\n var sup;\n // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n if (supGroup) {\n var elem = buildGroup$1(supGroup, options.havingStyle(style.sup()), options);\n sup = {\n elem,\n kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth)\n };\n }\n if (subGroup) {\n var _elem = buildGroup$1(subGroup, options.havingStyle(style.sub()), options);\n sub = {\n elem: _elem,\n kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height)\n };\n }\n // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n var finalGroup;\n if (sup && sub) {\n var bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift;\n finalGroup = makeVList({\n positionType: \"bottom\",\n positionData: bottom,\n children: [{\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }, {\n type: \"elem\",\n elem: sub.elem,\n marginLeft: makeEm(-slant)\n }, {\n type: \"kern\",\n size: sub.kern\n }, {\n type: \"elem\",\n elem: base\n }, {\n type: \"kern\",\n size: sup.kern\n }, {\n type: \"elem\",\n elem: sup.elem,\n marginLeft: makeEm(slant)\n }, {\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }]\n });\n } else if (sub) {\n var top = base.height - baseShift;\n // Shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n finalGroup = makeVList({\n positionType: \"top\",\n positionData: top,\n children: [{\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }, {\n type: \"elem\",\n elem: sub.elem,\n marginLeft: makeEm(-slant)\n }, {\n type: \"kern\",\n size: sub.kern\n }, {\n type: \"elem\",\n elem: base\n }]\n });\n } else if (sup) {\n var _bottom = base.depth + baseShift;\n finalGroup = makeVList({\n positionType: \"bottom\",\n positionData: _bottom,\n children: [{\n type: \"elem\",\n elem: base\n }, {\n type: \"kern\",\n size: sup.kern\n }, {\n type: \"elem\",\n elem: sup.elem,\n marginLeft: makeEm(slant)\n }, {\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }]\n });\n } else {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n }\n var parts = [finalGroup];\n if (sub && slant !== 0 && !subIsSingleCharacter) {\n // A negative margin-left was applied to the lower limit.\n // Avoid an overlap by placing a spacer on the left on the group.\n var spacer = makeSpan([\"mspace\"], [], options);\n spacer.style.marginRight = makeEm(slant);\n parts.unshift(spacer);\n }\n return makeSpan([\"mop\", \"op-limits\"], parts, options);\n};\n\n// Limits, symbols\n// Most operators have a large successor symbol, but these don't.\nvar noSuccessor = new Set([\"\\\\smallint\"]);\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"op\", but also\n// \"supsub\" since some of them (like \\int) can affect super/subscripting.\nvar htmlBuilder$2 = (grp, options) => {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n var group;\n if (grp.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = grp.sup;\n subGroup = grp.sub;\n group = assertNodeType(grp.base, \"op\");\n hasLimits = true;\n } else {\n group = assertNodeType(grp, \"op\");\n }\n var style = options.style;\n var large = false;\n if (style.size === Style$1.DISPLAY.size && group.symbol && !noSuccessor.has(group.name)) {\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n var base;\n if (group.symbol) {\n // If this is a symbol, create the symbol.\n var fontName = large ? \"Size2-Regular\" : \"Size1-Regular\";\n var stash = \"\";\n if (group.name === \"\\\\oiint\" || group.name === \"\\\\oiiint\") {\n // No font glyphs yet, so use a glyph w/o the oval.\n // TODO: When font glyphs are available, delete this code.\n stash = group.name.slice(1);\n group.name = stash === \"oiint\" ? \"\\\\iint\" : \"\\\\iiint\";\n }\n base = makeSymbol(group.name, fontName, \"math\", options, [\"mop\", \"op-symbol\", large ? \"large-op\" : \"small-op\"]);\n if (stash.length > 0) {\n // We're in \\oiint or \\oiiint. Overlay the oval.\n // TODO: When font glyphs are available, delete this code.\n var italic = base.italic;\n var oval = staticSvg(stash + \"Size\" + (large ? \"2\" : \"1\"), options);\n base = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: base,\n shift: 0\n }, {\n type: \"elem\",\n elem: oval,\n shift: large ? 0.08 : 0\n }]\n });\n group.name = \"\\\\\" + stash;\n base.classes.unshift(\"mop\");\n // TODO(ts)\n base.italic = italic;\n }\n } else if (group.body) {\n // If this is a list, compose that list.\n var inner = buildExpression$1(group.body, options, true);\n if (inner.length === 1 && inner[0] instanceof SymbolNode) {\n base = inner[0];\n base.classes[0] = \"mop\"; // replace old mclass\n } else {\n base = makeSpan([\"mop\"], inner, options);\n }\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n var output = [];\n for (var i = 1; i < group.name.length; i++) {\n output.push(mathsym(group.name[i], group.mode, options));\n }\n base = makeSpan([\"mop\"], output, options);\n }\n // If content of op is a single symbol, shift it vertically.\n var baseShift = 0;\n var slant = 0;\n if ((base instanceof SymbolNode || group.name === \"\\\\oiint\" || group.name === \"\\\\oiiint\") && !group.suppressBaseShift) {\n // We suppress the shift of the base of \\overset and \\underset. Otherwise,\n // shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight;\n // The slant of the symbol is just its italic correction.\n // TODO(ts)\n slant = base.italic || 0;\n }\n if (hasLimits) {\n return assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift);\n } else {\n if (baseShift) {\n base.style.position = \"relative\";\n base.style.top = makeEm(baseShift);\n }\n return base;\n }\n};\nvar mathmlBuilder$1 = (group, options) => {\n var node;\n if (group.symbol) {\n // This is a symbol. Just add the symbol.\n node = new MathNode(\"mo\", [makeText(group.name, group.mode)]);\n if (noSuccessor.has(group.name)) {\n node.setAttribute(\"largeop\", \"false\");\n }\n } else if (group.body) {\n // This is an operator with children. Add them.\n node = new MathNode(\"mo\", buildExpression(group.body, options));\n } else {\n // This is a text operator. Add all the characters from the\n // operator's name.\n node = new MathNode(\"mi\", [new TextNode(group.name.slice(1))]);\n // Append an <mo>⁡</mo>.\n // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4\n var operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n if (group.parentIsSupSub) {\n node = new MathNode(\"mrow\", [node, operator]);\n } else {\n node = newDocumentFragment([node, operator]);\n }\n }\n return node;\n};\nvar singleCharBigOps = {\n \"\\u220F\": \"\\\\prod\",\n \"\\u2210\": \"\\\\coprod\",\n \"\\u2211\": \"\\\\sum\",\n \"\\u22c0\": \"\\\\bigwedge\",\n \"\\u22c1\": \"\\\\bigvee\",\n \"\\u22c2\": \"\\\\bigcap\",\n \"\\u22c3\": \"\\\\bigcup\",\n \"\\u2a00\": \"\\\\bigodot\",\n \"\\u2a01\": \"\\\\bigoplus\",\n \"\\u2a02\": \"\\\\bigotimes\",\n \"\\u2a04\": \"\\\\biguplus\",\n \"\\u2a06\": \"\\\\bigsqcup\"\n};\ndefineFunction({\n type: \"op\",\n 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\"],\n props: {\n numArgs: 0\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var fName = funcName;\n if (fName.length === 1) {\n fName = singleCharBigOps[fName];\n }\n return {\n type: \"op\",\n mode: parser.mode,\n limits: true,\n parentIsSupSub: false,\n symbol: true,\n name: fName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// Note: calling defineFunction with a type that's already been defined only\n// works because the same htmlBuilder and mathmlBuilder are being used.\ndefineFunction({\n type: \"op\",\n names: [\"\\\\mathop\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var body = args[0];\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: false,\n body: ordargument(body)\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\nvar singleCharIntegrals = {\n \"\\u222b\": \"\\\\int\",\n \"\\u222c\": \"\\\\iint\",\n \"\\u222d\": \"\\\\iiint\",\n \"\\u222e\": \"\\\\oint\",\n \"\\u222f\": \"\\\\oiint\",\n \"\\u2230\": \"\\\\oiiint\"\n};\n// No limits, not symbols\ndefineFunction({\n type: \"op\",\n 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\"],\n props: {\n numArgs: 0\n },\n handler(_ref3) {\n var {\n parser,\n funcName\n } = _ref3;\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: false,\n name: funcName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// Limits, not symbols\ndefineFunction({\n type: \"op\",\n names: [\"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\max\", \"\\\\min\", \"\\\\Pr\", \"\\\\sup\"],\n props: {\n numArgs: 0\n },\n handler(_ref4) {\n var {\n parser,\n funcName\n } = _ref4;\n return {\n type: \"op\",\n mode: parser.mode,\n limits: true,\n parentIsSupSub: false,\n symbol: false,\n name: funcName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// No limits, symbols\ndefineFunction({\n type: \"op\",\n names: [\"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\", \"\\\\oiint\", \"\\\\oiiint\", \"\\u222b\", \"\\u222c\", \"\\u222d\", \"\\u222e\", \"\\u222f\", \"\\u2230\"],\n props: {\n numArgs: 0,\n allowedInArgument: true\n },\n handler(_ref5) {\n var {\n parser,\n funcName\n } = _ref5;\n var fName = funcName;\n if (fName.length === 1) {\n fName = singleCharIntegrals[fName];\n }\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: true,\n name: fName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only\n// \"operatorname\", but also \"supsub\" since \\operatorname* can\n// affect super/subscripting.\nvar htmlBuilder$1 = (grp, options) => {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n var group;\n if (grp.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = grp.sup;\n subGroup = grp.sub;\n group = assertNodeType(grp.base, \"operatorname\");\n hasLimits = true;\n } else {\n group = assertNodeType(grp, \"operatorname\");\n }\n var base;\n if (group.body.length > 0) {\n var body = group.body.map(child => {\n var childText = \"text\" in child ? child.text : undefined;\n if (typeof childText === \"string\") {\n return {\n type: \"textord\",\n mode: child.mode,\n text: childText\n };\n } else {\n return child;\n }\n });\n // Consolidate function names into symbol characters.\n var expression = buildExpression$1(body, options.withFont(\"mathrm\"), true);\n for (var i = 0; i < expression.length; i++) {\n var child = expression[i];\n if (child instanceof SymbolNode) {\n // Per amsopn package,\n // change minus to hyphen and \\ast to asterisk\n child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n }\n }\n base = makeSpan([\"mop\"], expression, options);\n } else {\n base = makeSpan([\"mop\"], [], options);\n }\n if (hasLimits) {\n return assembleSupSub(base, supGroup, subGroup, options, options.style, 0, 0);\n } else {\n return base;\n }\n};\nvar mathmlBuilder = (group, options) => {\n // The steps taken here are similar to the html version.\n var expression = buildExpression(group.body, options.withFont(\"mathrm\"));\n // Is expression a string or has it something like a fraction?\n var isAllString = true; // default\n for (var i = 0; i < expression.length; i++) {\n var node = expression[i];\n if (node instanceof SpaceNode) ; else if (node instanceof MathNode) {\n switch (node.type) {\n case \"mi\":\n case \"mn\":\n case \"mspace\":\n case \"mtext\":\n break;\n // Do nothing yet.\n case \"mo\":\n {\n var child = node.children[0];\n if (node.children.length === 1 && child instanceof TextNode) {\n child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n } else {\n isAllString = false;\n }\n break;\n }\n default:\n isAllString = false;\n }\n } else {\n isAllString = false;\n }\n }\n if (isAllString) {\n // Write a single TextNode instead of multiple nested tags.\n var word = expression.map(node => node.toText()).join(\"\");\n expression = [new TextNode(word)];\n }\n var identifier = new MathNode(\"mi\", expression);\n identifier.setAttribute(\"mathvariant\", \"normal\");\n // \\u2061 is the same as ⁡\n // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp\n var operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n if (group.parentIsSupSub) {\n return new MathNode(\"mrow\", [identifier, operator]);\n } else {\n return newDocumentFragment([identifier, operator]);\n }\n};\n// \\operatorname\n// amsopn.dtx: \\mathop{#1\\kern\\z@\\operator@font#3}\\newmcodes@\ndefineFunction({\n type: \"operatorname\",\n names: [\"\\\\operatorname@\", \"\\\\operatornamewithlimits\"],\n props: {\n numArgs: 1\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"operatorname\",\n mode: parser.mode,\n body: ordargument(body),\n alwaysHandleSupSub: funcName === \"\\\\operatornamewithlimits\",\n limits: false,\n parentIsSupSub: false\n };\n },\n htmlBuilder: htmlBuilder$1,\n mathmlBuilder\n});\ndefineMacro(\"\\\\operatorname\", \"\\\\@ifstar\\\\operatornamewithlimits\\\\operatorname@\");\n\ndefineFunctionBuilders({\n type: \"ordgroup\",\n htmlBuilder(group, options) {\n if (group.semisimple) {\n return makeFragment(buildExpression$1(group.body, options, false));\n }\n return makeSpan([\"mord\"], buildExpression$1(group.body, options, true), options);\n },\n mathmlBuilder(group, options) {\n return buildExpressionRow(group.body, options, true);\n }\n});\n\ndefineFunction({\n type: \"overline\",\n names: [\"\\\\overline\"],\n props: {\n numArgs: 1\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var body = args[0];\n return {\n type: \"overline\",\n mode: parser.mode,\n body\n };\n },\n htmlBuilder(group, options) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n // Build the inner group in the cramped style.\n var innerGroup = buildGroup$1(group.body, options.havingCrampedStyle());\n // Create the line above the body\n var line = makeLineSpan(\"overline-line\", options);\n // Generate the vlist, with the appropriate kerns\n var defaultRuleThickness = options.fontMetrics().defaultRuleThickness;\n var vlist = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: innerGroup\n }, {\n type: \"kern\",\n size: 3 * defaultRuleThickness\n }, {\n type: \"elem\",\n elem: line\n }, {\n type: \"kern\",\n size: defaultRuleThickness\n }]\n });\n return makeSpan([\"mord\", \"overline\"], [vlist], options);\n },\n mathmlBuilder(group, options) {\n var operator = new MathNode(\"mo\", [new TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n var node = new MathNode(\"mover\", [buildGroup(group.body, options), operator]);\n node.setAttribute(\"accent\", \"true\");\n return node;\n }\n});\n\ndefineFunction({\n type: \"phantom\",\n names: [\"\\\\phantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n var body = args[0];\n return {\n type: \"phantom\",\n mode: parser.mode,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.body, options.withPhantom(), false);\n // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n return makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n var inner = buildExpression(group.body, options);\n return new MathNode(\"mphantom\", inner);\n }\n});\ndefineMacro(\"\\\\hphantom\", \"\\\\smash{\\\\phantom{#1}}\");\ndefineFunction({\n type: \"vphantom\",\n names: [\"\\\\vphantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var body = args[0];\n return {\n type: \"vphantom\",\n mode: parser.mode,\n body\n };\n },\n htmlBuilder: (group, options) => {\n var inner = makeSpan([\"inner\"], [buildGroup$1(group.body, options.withPhantom())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan([\"mord\", \"rlap\"], [inner, fix], options);\n },\n mathmlBuilder: (group, options) => {\n var inner = buildExpression(ordargument(group.body), options);\n var phantom = new MathNode(\"mphantom\", inner);\n var node = new MathNode(\"mpadded\", [phantom]);\n node.setAttribute(\"width\", \"0px\");\n return node;\n }\n});\n\n// Box manipulation\ndefineFunction({\n type: \"raisebox\",\n names: [\"\\\\raisebox\"],\n props: {\n numArgs: 2,\n argTypes: [\"size\", \"hbox\"],\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var amount = assertNodeType(args[0], \"size\").value;\n var body = args[1];\n return {\n type: \"raisebox\",\n mode: parser.mode,\n dy: amount,\n body\n };\n },\n htmlBuilder(group, options) {\n var body = buildGroup$1(group.body, options);\n var dy = calculateSize(group.dy, options);\n return makeVList({\n positionType: \"shift\",\n positionData: -dy,\n children: [{\n type: \"elem\",\n elem: body\n }]\n });\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mpadded\", [buildGroup(group.body, options)]);\n var dy = group.dy.number + group.dy.unit;\n node.setAttribute(\"voffset\", dy);\n return node;\n }\n});\n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\relax\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInArgument: true\n },\n handler(_ref) {\n var {\n parser\n } = _ref;\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n\ndefineFunction({\n type: \"rule\",\n names: [\"\\\\rule\"],\n props: {\n numArgs: 2,\n numOptionalArgs: 1,\n allowedInText: true,\n allowedInMath: true,\n argTypes: [\"size\", \"size\", \"size\"]\n },\n handler(_ref, args, optArgs) {\n var {\n parser\n } = _ref;\n var shift = optArgs[0];\n var width = assertNodeType(args[0], \"size\");\n var height = assertNodeType(args[1], \"size\");\n return {\n type: \"rule\",\n mode: parser.mode,\n shift: shift && assertNodeType(shift, \"size\").value,\n width: width.value,\n height: height.value\n };\n },\n htmlBuilder(group, options) {\n // Make an empty span for the rule\n var rule = makeSpan([\"mord\", \"rule\"], [], options);\n // Calculate the shift, width, and height of the rule, and account for units\n var width = calculateSize(group.width, options);\n var height = calculateSize(group.height, options);\n var shift = group.shift ? calculateSize(group.shift, options) : 0;\n // Style the rule to the right size\n rule.style.borderRightWidth = makeEm(width);\n rule.style.borderTopWidth = makeEm(height);\n rule.style.bottom = makeEm(shift);\n // Record the height and width\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift;\n // Font size is the number large enough that the browser will\n // reserve at least `absHeight` space above the baseline.\n // The 1.125 factor was empirically determined\n rule.maxFontSize = height * 1.125 * options.sizeMultiplier;\n return rule;\n },\n mathmlBuilder(group, options) {\n var width = calculateSize(group.width, options);\n var height = calculateSize(group.height, options);\n var shift = group.shift ? calculateSize(group.shift, options) : 0;\n var color = options.color && options.getColor() || \"black\";\n var rule = new MathNode(\"mspace\");\n rule.setAttribute(\"mathbackground\", color);\n rule.setAttribute(\"width\", makeEm(width));\n rule.setAttribute(\"height\", makeEm(height));\n var wrapper = new MathNode(\"mpadded\", [rule]);\n if (shift >= 0) {\n wrapper.setAttribute(\"height\", makeEm(shift));\n } else {\n wrapper.setAttribute(\"height\", makeEm(shift));\n wrapper.setAttribute(\"depth\", makeEm(-shift));\n }\n wrapper.setAttribute(\"voffset\", makeEm(shift));\n return wrapper;\n }\n});\n\nfunction sizingGroup(value, options, baseOptions) {\n var inner = buildExpression$1(value, options, false);\n var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n // Add size-resetting classes to the inner list and set maxFontSize\n // manually. Handle nested size changes.\n for (var i = 0; i < inner.length; i++) {\n var pos = inner[i].classes.indexOf(\"sizing\");\n if (pos < 0) {\n Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions));\n } else if (inner[i].classes[pos + 1] === \"reset-size\" + options.size) {\n // This is a nested size change: e.g., inner[i] is the \"b\" in\n // `\\Huge a \\small b`. Override the old size (the `reset-` class)\n // but not the new size.\n inner[i].classes[pos + 1] = \"reset-size\" + baseOptions.size;\n }\n inner[i].height *= multiplier;\n inner[i].depth *= multiplier;\n }\n return makeFragment(inner);\n}\nvar sizeFuncs = [\"\\\\tiny\", \"\\\\sixptsize\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"];\nvar htmlBuilder = (group, options) => {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n var newOptions = options.havingSize(group.size);\n return sizingGroup(group.body, newOptions, options);\n};\ndefineFunction({\n type: \"sizing\",\n names: sizeFuncs,\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n breakOnTokenText,\n funcName,\n parser\n } = _ref;\n var body = parser.parseExpression(false, breakOnTokenText);\n return {\n type: \"sizing\",\n mode: parser.mode,\n // Figure out what size to use based on the list of functions above\n size: sizeFuncs.indexOf(funcName) + 1,\n body\n };\n },\n htmlBuilder,\n mathmlBuilder: (group, options) => {\n var newOptions = options.havingSize(group.size);\n var inner = buildExpression(group.body, newOptions);\n var node = new MathNode(\"mstyle\", inner);\n // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n node.setAttribute(\"mathsize\", makeEm(newOptions.sizeMultiplier));\n return node;\n }\n});\n\n// smash, with optional [tb], as in AMS\ndefineFunction({\n type: \"smash\",\n names: [\"\\\\smash\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args, optArgs) => {\n var {\n parser\n } = _ref;\n var smashHeight = false;\n var smashDepth = false;\n var tbArg = optArgs[0] && assertNodeType(optArgs[0], \"ordgroup\");\n if (tbArg) {\n // Optional [tb] argument is engaged.\n // ref: amsmath: \\renewcommand{\\smash}[1][tb]{%\n // def\\mb@t{\\ht}\\def\\mb@b{\\dp}\\def\\mb@tb{\\ht\\z@\\z@\\dp}%\n var letter = \"\";\n for (var i = 0; i < tbArg.body.length; ++i) {\n var node = tbArg.body[i];\n letter = assertSymbolNodeType(node).text;\n if (letter === \"t\") {\n smashHeight = true;\n } else if (letter === \"b\") {\n smashDepth = true;\n } else {\n smashHeight = false;\n smashDepth = false;\n break;\n }\n }\n } else {\n smashHeight = true;\n smashDepth = true;\n }\n var body = args[0];\n return {\n type: \"smash\",\n mode: parser.mode,\n body,\n smashHeight,\n smashDepth\n };\n },\n htmlBuilder: (group, options) => {\n var node = makeSpan([], [buildGroup$1(group.body, options)]);\n if (!group.smashHeight && !group.smashDepth) {\n return node;\n }\n if (group.smashHeight) {\n node.height = 0;\n }\n if (group.smashDepth) {\n node.depth = 0;\n }\n if (group.smashHeight && group.smashDepth) {\n // Symmetric \\smash can stay in inline layout.\n return makeSpan([\"mord\", \"smash\"], [node], options);\n }\n // In order to influence makeVList for asymmetric smashing, we have to\n // reset the children.\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n if (group.smashHeight) {\n node.children[i].height = 0;\n }\n if (group.smashDepth) {\n node.children[i].depth = 0;\n }\n }\n }\n // At this point, we've reset the TeX-like height and depth values.\n // But the span still has an HTML line height.\n // makeVList applies \"display: table-cell\", which prevents the browser\n // from acting on that line height. So we'll call makeVList now.\n var smashedNode = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: node\n }]\n });\n // For spacing, TeX treats \\smash as a math group (same spacing as ord).\n return makeSpan([\"mord\"], [smashedNode], options);\n },\n mathmlBuilder: (group, options) => {\n var node = new MathNode(\"mpadded\", [buildGroup(group.body, options)]);\n if (group.smashHeight) {\n node.setAttribute(\"height\", \"0px\");\n }\n if (group.smashDepth) {\n node.setAttribute(\"depth\", \"0px\");\n }\n return node;\n }\n});\n\ndefineFunction({\n type: \"sqrt\",\n names: [\"\\\\sqrt\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1\n },\n handler(_ref, args, optArgs) {\n var {\n parser\n } = _ref;\n var index = optArgs[0];\n var body = args[0];\n return {\n type: \"sqrt\",\n mode: parser.mode,\n body,\n index\n };\n },\n htmlBuilder(group, options) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n // First, we do the same steps as in overline to build the inner group\n // and line\n var inner = buildGroup$1(group.body, options.havingCrampedStyle());\n if (inner.height === 0) {\n // Render a small surd.\n inner.height = options.fontMetrics().xHeight;\n }\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n inner = wrapFragment(inner, options);\n // Calculate the minimum size for the \\surd delimiter\n var metrics = options.fontMetrics();\n var theta = metrics.defaultRuleThickness;\n var phi = theta;\n if (options.style.id < Style$1.TEXT.id) {\n phi = options.fontMetrics().xHeight;\n }\n // Calculate the clearance between the body and line\n var lineClearance = theta + phi / 4;\n var minDelimiterHeight = inner.height + inner.depth + lineClearance + theta;\n // Create a sqrt SVG of the required minimum size\n var {\n span: img,\n ruleWidth,\n advanceWidth\n } = makeSqrtImage(minDelimiterHeight, options);\n var delimDepth = img.height - ruleWidth;\n // Adjust the clearance based on the delimiter size\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n }\n // Shift the sqrt image\n var imgShift = img.height - inner.height - lineClearance - ruleWidth;\n inner.style.paddingLeft = makeEm(advanceWidth);\n // Overlay the image and the argument.\n var body = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: inner,\n wrapperClasses: [\"svg-align\"]\n }, {\n type: \"kern\",\n size: -(inner.height + imgShift)\n }, {\n type: \"elem\",\n elem: img\n }, {\n type: \"kern\",\n size: ruleWidth\n }]\n });\n if (!group.index) {\n return makeSpan([\"mord\", \"sqrt\"], [body], options);\n } else {\n // Handle the optional root index\n // The index is always in scriptscript style\n var newOptions = options.havingStyle(Style$1.SCRIPTSCRIPT);\n var rootm = buildGroup$1(group.index, newOptions, options);\n // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n var toShift = 0.6 * (body.height - body.depth);\n // Build a VList with the superscript shifted up correctly\n var rootVList = makeVList({\n positionType: \"shift\",\n positionData: -toShift,\n children: [{\n type: \"elem\",\n elem: rootm\n }]\n });\n // Add a class surrounding it so we can add on the appropriate\n // kerning\n var rootVListWrap = makeSpan([\"root\"], [rootVList]);\n return makeSpan([\"mord\", \"sqrt\"], [rootVListWrap, body], options);\n }\n },\n mathmlBuilder(group, options) {\n var {\n body,\n index\n } = group;\n return index ? new MathNode(\"mroot\", [buildGroup(body, options), buildGroup(index, options)]) : new MathNode(\"msqrt\", [buildGroup(body, options)]);\n }\n});\n\nvar styleMap = {\n \"display\": Style$1.DISPLAY,\n \"text\": Style$1.TEXT,\n \"script\": Style$1.SCRIPT,\n \"scriptscript\": Style$1.SCRIPTSCRIPT\n};\ndefineFunction({\n type: \"styling\",\n names: [\"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref, args) {\n var {\n breakOnTokenText,\n funcName,\n parser\n } = _ref;\n // parse out the implicit body\n var body = parser.parseExpression(true, breakOnTokenText);\n // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.\n // here and in buildHTML and de-dupe the enumeration of all the styles).\n // TODO(ts): The names above exactly match the styles.\n var style = funcName.slice(1, funcName.length - 5);\n return {\n type: \"styling\",\n mode: parser.mode,\n // Figure out what style to use by pulling out the style from\n // the function name\n style,\n body\n };\n },\n htmlBuilder(group, options) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n var newStyle = styleMap[group.style];\n var newOptions = options.havingStyle(newStyle).withFont('');\n return sizingGroup(group.body, newOptions, options);\n },\n mathmlBuilder(group, options) {\n // Figure out what style we're changing to.\n var newStyle = styleMap[group.style];\n var newOptions = options.havingStyle(newStyle);\n var inner = buildExpression(group.body, newOptions);\n var node = new MathNode(\"mstyle\", inner);\n var styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"]\n };\n var attr = styleAttributes[group.style];\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n return node;\n }\n});\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * Sometimes, groups perform special rules when they have superscripts or\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nvar htmlBuilderDelegate = function htmlBuilderDelegate(group, options) {\n var base = group.base;\n if (!base) {\n return null;\n } else if (base.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n var delegate = base.limits && (options.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub);\n return delegate ? htmlBuilder$2 : null;\n } else if (base.type === \"operatorname\") {\n var _delegate = base.alwaysHandleSupSub && (options.style.size === Style$1.DISPLAY.size || base.limits);\n return _delegate ? htmlBuilder$1 : null;\n } else if (base.type === \"accent\") {\n return isCharacterBox(base.base) ? htmlBuilder$a : null;\n } else if (base.type === \"horizBrace\") {\n var isSup = !group.sub;\n return isSup === base.isOver ? htmlBuilder$3 : null;\n } else {\n return null;\n }\n};\n// Super scripts and subscripts, whose precise placement can depend on other\n// functions that precede them.\ndefineFunctionBuilders({\n type: \"supsub\",\n htmlBuilder(group, options) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n var builderDelegate = htmlBuilderDelegate(group, options);\n if (builderDelegate) {\n return builderDelegate(group, options);\n }\n var {\n base: valueBase,\n sup: valueSup,\n sub: valueSub\n } = group;\n var base = buildGroup$1(valueBase, options);\n var supm;\n var subm;\n var metrics = options.fontMetrics();\n // Rule 18a\n var supShift = 0;\n var subShift = 0;\n var isCharBox = valueBase && isCharacterBox(valueBase);\n if (valueSup) {\n var newOptions = options.havingStyle(options.style.sup());\n supm = buildGroup$1(valueSup, newOptions, options);\n if (!isCharBox) {\n supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n if (valueSub) {\n var _newOptions = options.havingStyle(options.style.sub());\n subm = buildGroup$1(valueSub, _newOptions, options);\n if (!isCharBox) {\n subShift = base.depth + _newOptions.fontMetrics().subDrop * _newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n // Rule 18c\n var minSupShift;\n if (options.style === Style$1.DISPLAY) {\n minSupShift = metrics.sup1;\n } else if (options.style.cramped) {\n minSupShift = metrics.sup3;\n } else {\n minSupShift = metrics.sup2;\n }\n // scriptspace is a font-size-independent size, so scale it\n // appropriately for use as the marginRight.\n var multiplier = options.sizeMultiplier;\n var marginRight = makeEm(0.5 / metrics.ptPerEm / multiplier);\n var marginLeft = null;\n if (subm) {\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n var isOiint = group.base && group.base.type === \"op\" && group.base.name && (group.base.name === \"\\\\oiint\" || group.base.name === \"\\\\oiiint\");\n if (base instanceof SymbolNode || isOiint) {\n // @ts-ignore\n marginLeft = makeEm(-base.italic);\n }\n }\n var supsub;\n if (supm && subm) {\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n subShift = Math.max(subShift, metrics.sub2);\n var ruleWidth = metrics.defaultRuleThickness;\n // Rule 18e\n var maxWidth = 4 * ruleWidth;\n if (supShift - supm.depth - (subm.height - subShift) < maxWidth) {\n subShift = maxWidth - (supShift - supm.depth) + subm.height;\n var psi = 0.8 * metrics.xHeight - (supShift - supm.depth);\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n var vlistElem = [{\n type: \"elem\",\n elem: subm,\n shift: subShift,\n marginRight,\n marginLeft\n }, {\n type: \"elem\",\n elem: supm,\n shift: -supShift,\n marginRight\n }];\n supsub = makeVList({\n positionType: \"individualShift\",\n children: vlistElem\n });\n } else if (subm) {\n // Rule 18b\n subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight);\n var _vlistElem = [{\n type: \"elem\",\n elem: subm,\n marginLeft,\n marginRight\n }];\n supsub = makeVList({\n positionType: \"shift\",\n positionData: subShift,\n children: _vlistElem\n });\n } else if (supm) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n supsub = makeVList({\n positionType: \"shift\",\n positionData: -supShift,\n children: [{\n type: \"elem\",\n elem: supm,\n marginRight\n }]\n });\n } else {\n throw new Error(\"supsub must have either sup or sub.\");\n }\n // Wrap the supsub vlist in a span.msupsub to reset text-align.\n var mclass = getTypeOfDomTree(base, \"right\") || \"mord\";\n return makeSpan([mclass], [base, makeSpan([\"msupsub\"], [supsub])], options);\n },\n mathmlBuilder(group, options) {\n // Is the inner group a relevant horizontal brace?\n var isBrace = false;\n var isOver;\n var isSup;\n if (group.base && group.base.type === \"horizBrace\") {\n isSup = !!group.sup;\n if (isSup === group.base.isOver) {\n isBrace = true;\n isOver = group.base.isOver;\n }\n }\n if (group.base && (group.base.type === \"op\" || group.base.type === \"operatorname\")) {\n group.base.parentIsSupSub = true;\n }\n var children = [buildGroup(group.base, options)];\n if (group.sub) {\n children.push(buildGroup(group.sub, options));\n }\n if (group.sup) {\n children.push(buildGroup(group.sup, options));\n }\n var nodeType;\n if (isBrace) {\n nodeType = isOver ? \"mover\" : \"munder\";\n } else if (!group.sub) {\n var base = group.base;\n if (base && base.type === \"op\" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {\n nodeType = \"mover\";\n } else if (base && base.type === \"operatorname\" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) {\n nodeType = \"mover\";\n } else {\n nodeType = \"msup\";\n }\n } else if (!group.sup) {\n var _base = group.base;\n if (_base && _base.type === \"op\" && _base.limits && (options.style === Style$1.DISPLAY || _base.alwaysHandleSupSub)) {\n nodeType = \"munder\";\n } else if (_base && _base.type === \"operatorname\" && _base.alwaysHandleSupSub && (_base.limits || options.style === Style$1.DISPLAY)) {\n nodeType = \"munder\";\n } else {\n nodeType = \"msub\";\n }\n } else {\n var _base2 = group.base;\n if (_base2 && _base2.type === \"op\" && _base2.limits && options.style === Style$1.DISPLAY) {\n nodeType = \"munderover\";\n } else if (_base2 && _base2.type === \"operatorname\" && _base2.alwaysHandleSupSub && (options.style === Style$1.DISPLAY || _base2.limits)) {\n nodeType = \"munderover\";\n } else {\n nodeType = \"msubsup\";\n }\n }\n return new MathNode(nodeType, children);\n }\n});\n\n// Operator ParseNodes created in Parser.js from symbol Groups in src/symbols.js.\ndefineFunctionBuilders({\n type: \"atom\",\n htmlBuilder(group, options) {\n return mathsym(group.text, group.mode, options, [\"m\" + group.family]);\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mo\", [makeText(group.text, group.mode)]);\n if (group.family === \"bin\") {\n var variant = getVariant(group, options);\n if (variant === \"bold-italic\") {\n node.setAttribute(\"mathvariant\", variant);\n }\n } else if (group.family === \"punct\") {\n node.setAttribute(\"separator\", \"true\");\n } else if (group.family === \"open\" || group.family === \"close\") {\n // Delims built here should not stretch vertically.\n // See delimsizing.js for stretchy delims.\n node.setAttribute(\"stretchy\", \"false\");\n }\n return node;\n }\n});\n\n// \"mathord\" and \"textord\" ParseNodes created in Parser.js from symbol Groups in\n// src/symbols.js.\nvar defaultVariant = {\n \"mi\": \"italic\",\n \"mn\": \"normal\",\n \"mtext\": \"normal\"\n};\ndefineFunctionBuilders({\n type: \"mathord\",\n htmlBuilder(group, options) {\n return makeOrd(group, options, \"mathord\");\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mi\", [makeText(group.text, group.mode, options)]);\n var variant = getVariant(group, options) || \"italic\";\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n }\n});\ndefineFunctionBuilders({\n type: \"textord\",\n htmlBuilder(group, options) {\n return makeOrd(group, options, \"textord\");\n },\n mathmlBuilder(group, options) {\n var text = makeText(group.text, group.mode, options);\n var variant = getVariant(group, options) || \"normal\";\n var node;\n if (group.mode === 'text') {\n node = new MathNode(\"mtext\", [text]);\n } else if (/[0-9]/.test(group.text)) {\n node = new MathNode(\"mn\", [text]);\n } else if (group.text === \"\\\\prime\") {\n node = new MathNode(\"mo\", [text]);\n } else {\n node = new MathNode(\"mi\", [text]);\n }\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n }\n});\n\n// A map of CSS-based spacing functions to their CSS class.\nvar cssSpace = {\n \"\\\\nobreak\": \"nobreak\",\n \"\\\\allowbreak\": \"allowbreak\"\n};\n// A lookup table to determine whether a spacing function/symbol should be\n// treated like a regular space character. If a symbol or command is a key\n// in this table, then it should be a regular space character. Furthermore,\n// the associated value may have a `className` specifying an extra CSS class\n// to add to the created `span`.\nvar regularSpace = {\n \" \": {},\n \"\\\\ \": {},\n \"~\": {\n className: \"nobreak\"\n },\n \"\\\\space\": {},\n \"\\\\nobreakspace\": {\n className: \"nobreak\"\n }\n};\n// ParseNode<\"spacing\"> created in Parser.js from the \"spacing\" symbol Groups in\n// src/symbols.js.\ndefineFunctionBuilders({\n type: \"spacing\",\n htmlBuilder(group, options) {\n if (regularSpace.hasOwnProperty(group.text)) {\n var className = regularSpace[group.text].className || \"\";\n // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n if (group.mode === \"text\") {\n var ord = makeOrd(group, options, \"textord\");\n ord.classes.push(className);\n return ord;\n } else {\n return makeSpan([\"mspace\", className], [mathsym(group.text, group.mode, options)], options);\n }\n } else if (cssSpace.hasOwnProperty(group.text)) {\n // Spaces based on just a CSS class.\n return makeSpan([\"mspace\", cssSpace[group.text]], [], options);\n } else {\n throw new ParseError(\"Unknown type of space \\\"\" + group.text + \"\\\"\");\n }\n },\n mathmlBuilder(group, options) {\n var node;\n if (regularSpace.hasOwnProperty(group.text)) {\n node = new MathNode(\"mtext\", [new TextNode(\"\\u00a0\")]);\n } else if (cssSpace.hasOwnProperty(group.text)) {\n // CSS-based MathML spaces (\\nobreak, \\allowbreak) are ignored\n return new MathNode(\"mspace\");\n } else {\n throw new ParseError(\"Unknown type of space \\\"\" + group.text + \"\\\"\");\n }\n return node;\n }\n});\n\nvar pad = () => {\n var padNode = new MathNode(\"mtd\", []);\n padNode.setAttribute(\"width\", \"50%\");\n return padNode;\n};\ndefineFunctionBuilders({\n type: \"tag\",\n mathmlBuilder(group, options) {\n var table = new MathNode(\"mtable\", [new MathNode(\"mtr\", [pad(), new MathNode(\"mtd\", [buildExpressionRow(group.body, options)]), pad(), new MathNode(\"mtd\", [buildExpressionRow(group.tag, options)])])]);\n table.setAttribute(\"width\", \"100%\");\n return table;\n // TODO: Left-aligned tags.\n // Currently, the group and options passed here do not contain\n // enough info to set tag alignment. `leqno` is in Settings but it is\n // not passed to Options. On the HTML side, leqno is\n // set by a CSS class applied in buildTree.js. That would have worked\n // in MathML if browsers supported <mlabeledtr>. Since they don't, we\n // need to rewrite the way this function is called.\n }\n});\n\n// Non-mathy text, possibly in a font\nvar textFontFamilies = {\n \"\\\\text\": undefined,\n \"\\\\textrm\": \"textrm\",\n \"\\\\textsf\": \"textsf\",\n \"\\\\texttt\": \"texttt\",\n \"\\\\textnormal\": \"textrm\"\n};\nvar textFontWeights = {\n \"\\\\textbf\": \"textbf\",\n \"\\\\textmd\": \"textmd\"\n};\nvar textFontShapes = {\n \"\\\\textit\": \"textit\",\n \"\\\\textup\": \"textup\"\n};\nvar optionsWithFont = (group, options) => {\n var font = group.font;\n // Checks if the argument is a font family or a font style.\n if (!font) {\n return options;\n } else if (textFontFamilies[font]) {\n return options.withTextFontFamily(textFontFamilies[font]);\n } else if (textFontWeights[font]) {\n return options.withTextFontWeight(textFontWeights[font]);\n } else if (font === \"\\\\emph\") {\n return options.fontShape === \"textit\" ? options.withTextFontShape(\"textup\") : options.withTextFontShape(\"textit\");\n }\n return options.withTextFontShape(textFontShapes[font]);\n};\ndefineFunction({\n type: \"text\",\n names: [\n // Font families\n \"\\\\text\", \"\\\\textrm\", \"\\\\textsf\", \"\\\\texttt\", \"\\\\textnormal\",\n // Font weights\n \"\\\\textbf\", \"\\\\textmd\",\n // Font Shapes\n \"\\\\textit\", \"\\\\textup\", \"\\\\emph\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"],\n allowedInArgument: true,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"text\",\n mode: parser.mode,\n body: ordargument(body),\n font: funcName\n };\n },\n htmlBuilder(group, options) {\n var newOptions = optionsWithFont(group, options);\n var inner = buildExpression$1(group.body, newOptions, true);\n return makeSpan([\"mord\", \"text\"], inner, newOptions);\n },\n mathmlBuilder(group, options) {\n var newOptions = optionsWithFont(group, options);\n return buildExpressionRow(group.body, newOptions);\n }\n});\n\ndefineFunction({\n type: \"underline\",\n names: [\"\\\\underline\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"underline\",\n mode: parser.mode,\n body: args[0]\n };\n },\n htmlBuilder(group, options) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n // Build the inner group.\n var innerGroup = buildGroup$1(group.body, options);\n // Create the line to go below the body\n var line = makeLineSpan(\"underline-line\", options);\n // Generate the vlist, with the appropriate kerns\n var defaultRuleThickness = options.fontMetrics().defaultRuleThickness;\n var vlist = makeVList({\n positionType: \"top\",\n positionData: innerGroup.height,\n children: [{\n type: \"kern\",\n size: defaultRuleThickness\n }, {\n type: \"elem\",\n elem: line\n }, {\n type: \"kern\",\n size: 3 * defaultRuleThickness\n }, {\n type: \"elem\",\n elem: innerGroup\n }]\n });\n return makeSpan([\"mord\", \"underline\"], [vlist], options);\n },\n mathmlBuilder(group, options) {\n var operator = new MathNode(\"mo\", [new TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n var node = new MathNode(\"munder\", [buildGroup(group.body, options), operator]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n }\n});\n\n// \\vcenter: Vertically center the argument group on the math axis.\ndefineFunction({\n type: \"vcenter\",\n names: [\"\\\\vcenter\"],\n props: {\n numArgs: 1,\n argTypes: [\"original\"],\n // In LaTeX, \\vcenter can act only on a box.\n allowedInText: false\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"vcenter\",\n mode: parser.mode,\n body: args[0]\n };\n },\n htmlBuilder(group, options) {\n var body = buildGroup$1(group.body, options);\n var axisHeight = options.fontMetrics().axisHeight;\n var dy = 0.5 * (body.height - axisHeight - (body.depth + axisHeight));\n return makeVList({\n positionType: \"shift\",\n positionData: dy,\n children: [{\n type: \"elem\",\n elem: body\n }]\n });\n },\n mathmlBuilder(group, options) {\n // There is no way to do this in MathML.\n // Write a class as a breadcrumb in case some post-processor wants\n // to perform a vcenter adjustment.\n // Wrap in mrow to ensure valid MathML when placed inside mo (e.g., \\mathrel)\n var mpadded = new MathNode(\"mpadded\", [buildGroup(group.body, options)], [\"vcenter\"]);\n return new MathNode(\"mrow\", [mpadded]);\n }\n});\n\ndefineFunction({\n type: \"verb\",\n names: [\"\\\\verb\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler(context, args, optArgs) {\n // \\verb and \\verb* are dealt with directly in Parser.js.\n // If we end up here, it's because of a failure to match the two delimiters\n // in the regex in Lexer.js. LaTeX raises the following error when \\verb is\n // terminated by end of line (or file).\n throw new ParseError(\"\\\\verb ended by end of line instead of matching delimiter\");\n },\n htmlBuilder(group, options) {\n var text = makeVerb(group);\n var body = [];\n // \\verb enters text mode and therefore is sized like \\textstyle\n var newOptions = options.havingStyle(options.style.text());\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c === '~') {\n c = '\\\\textasciitilde';\n }\n body.push(makeSymbol(c, \"Typewriter-Regular\", group.mode, newOptions, [\"mord\", \"texttt\"]));\n }\n return makeSpan([\"mord\", \"text\"].concat(newOptions.sizingClasses(options)), tryCombineChars(body), newOptions);\n },\n mathmlBuilder(group, options) {\n var text = new TextNode(makeVerb(group));\n var node = new MathNode(\"mtext\", [text]);\n node.setAttribute(\"mathvariant\", \"monospace\");\n return node;\n }\n});\n/**\n * Converts verb group into body string.\n *\n * \\verb* replaces each space with an open box \\u2423\n * \\verb replaces each space with a no-break space \\xA0\n */\nvar makeVerb = group => group.body.replace(/ /g, group.star ? '\\u2423' : '\\xA0');\n\n/** Include this to ensure that all functions are defined. */\nvar functions = _functions;\n\n/**\n * The Lexer class handles tokenizing the input in various ways. Since our\n * parser expects us to be able to backtrack, the lexer allows lexing from any\n * given starting point.\n *\n * Its main exposed function is the `lex` function, which takes a position to\n * lex from and a type of token to lex. It defers to the appropriate `_innerLex`\n * function.\n *\n * The various `_innerLex` functions perform the actual lexing of different\n * kinds.\n */\n/* The following tokenRegex\n * - matches typical whitespace (but not NBSP etc.) using its first group\n * - does not match any control character \\x00-\\x1f except whitespace\n * - does not match a bare backslash\n * - matches any ASCII character except those just mentioned\n * - does not match the BMP private use area \\uE000-\\uF8FF\n * - does not match bare surrogate code units\n * - matches any BMP character except for those just described\n * - matches any valid Unicode surrogate pair\n * - matches a backslash followed by one or more whitespace characters\n * - matches a backslash followed by one or more letters then whitespace\n * - matches a backslash followed by any BMP character\n * Capturing groups:\n * [1] regular whitespace\n * [2] backslash followed by whitespace\n * [3] anything else, which may include:\n * [4] left character of \\verb*\n * [5] left character of \\verb\n * [6] backslash followed by word, excluding any trailing whitespace\n * Just because the Lexer matches something doesn't mean it's valid input:\n * If there is no matching function or symbol definition, the Parser will\n * still reject the input.\n */\nvar spaceRegexString = \"[ \\r\\n\\t]\";\nvar controlWordRegexString = \"\\\\\\\\[a-zA-Z@]+\";\nvar controlSymbolRegexString = \"\\\\\\\\[^\\uD800-\\uDFFF]\";\nvar controlWordWhitespaceRegexString = \"(\" + controlWordRegexString + \")\" + spaceRegexString + \"*\";\nvar controlSpaceRegexString = \"\\\\\\\\(\\n|[ \\r\\t]+\\n?)[ \\r\\t]*\";\nvar combiningDiacriticalMarkString = \"[\\u0300-\\u036f]\";\nvar combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + \"+$\");\nvar tokenRegexString = \"(\" + spaceRegexString + \"+)|\" + (// whitespace\ncontrolSpaceRegexString + \"|\") +\n// \\whitespace\n\"([!-\\\\[\\\\]-\\u2027\\u202A-\\uD7FF\\uF900-\\uFFFF]\" + (// single codepoint\ncombiningDiacriticalMarkString + \"*\") +\n// ...plus accents\n\"|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\" + (// surrogate pair\ncombiningDiacriticalMarkString + \"*\") +\n// ...plus accents\n\"|\\\\\\\\verb\\\\*([^]).*?\\\\4\" +\n// \\verb*\n\"|\\\\\\\\verb([^*a-zA-Z]).*?\\\\5\" + (// \\verb unstarred\n\"|\" + controlWordWhitespaceRegexString) + (// \\macroName + spaces\n\"|\" + controlSymbolRegexString + \")\"); // \\\\, \\', etc.\n/** Main Lexer class */\nclass Lexer {\n // Category codes. The lexer only supports comment characters (14) for now.\n // MacroExpander additionally distinguishes active (13).\n\n constructor(input, settings) {\n // Separate accents from characters\n this.input = input;\n this.settings = settings;\n this.tokenRegex = new RegExp(tokenRegexString, 'g');\n this.catcodes = {\n \"%\": 14,\n // comment character\n \"~\": 13 // active character\n };\n }\n setCatcode(char, code) {\n this.catcodes[char] = code;\n }\n /**\n * This function lexes a single token.\n */\n lex() {\n var input = this.input;\n var pos = this.tokenRegex.lastIndex;\n if (pos === input.length) {\n return new Token(\"EOF\", new SourceLocation(this, pos, pos));\n }\n var match = this.tokenRegex.exec(input);\n if (match === null || match.index !== pos) {\n throw new ParseError(\"Unexpected character: '\" + input[pos] + \"'\", new Token(input[pos], new SourceLocation(this, pos, pos + 1)));\n }\n var text = match[6] || match[3] || (match[2] ? \"\\\\ \" : \" \");\n if (this.catcodes[text] === 14) {\n // comment character\n var nlIndex = input.indexOf('\\n', this.tokenRegex.lastIndex);\n if (nlIndex === -1) {\n this.tokenRegex.lastIndex = input.length; // EOF\n this.settings.reportNonstrict(\"commentAtEnd\", \"% comment has no terminating newline; LaTeX would \" + \"fail because of commenting the end of math mode (e.g. $)\");\n } else {\n this.tokenRegex.lastIndex = nlIndex + 1;\n }\n return this.lex();\n }\n return new Token(text, new SourceLocation(this, pos, this.tokenRegex.lastIndex));\n }\n}\n\n/**\n * A `Namespace` refers to a space of nameable things like macros or lengths,\n * which can be `set` either globally or local to a nested group, using an\n * undo stack similar to how TeX implements this functionality.\n * Performance-wise, `get` and local `set` take constant time, while global\n * `set` takes time proportional to the depth of group nesting.\n */\nclass Namespace {\n /**\n * Both arguments are optional. The first argument is an object of\n * built-in mappings which never change. The second argument is an object\n * of initial (global-level) mappings, which will constantly change\n * according to any global/top-level `set`s done.\n */\n constructor(builtins, globalMacros) {\n if (builtins === void 0) {\n builtins = {};\n }\n if (globalMacros === void 0) {\n globalMacros = {};\n }\n this.current = globalMacros;\n this.builtins = builtins;\n this.undefStack = [];\n }\n /**\n * Start a new nested group, affecting future local `set`s.\n */\n beginGroup() {\n this.undefStack.push({});\n }\n /**\n * End current nested group, restoring values before the group began.\n */\n endGroup() {\n if (this.undefStack.length === 0) {\n throw new ParseError(\"Unbalanced namespace destruction: attempt \" + \"to pop global namespace; please report this as a bug\");\n }\n var undefs = this.undefStack.pop();\n for (var undef in undefs) {\n if (undefs.hasOwnProperty(undef)) {\n if (undefs[undef] == null) {\n delete this.current[undef];\n } else {\n this.current[undef] = undefs[undef];\n }\n }\n }\n }\n /**\n * Ends all currently nested groups (if any), restoring values before the\n * groups began. Useful in case of an error in the middle of parsing.\n */\n endGroups() {\n while (this.undefStack.length > 0) {\n this.endGroup();\n }\n }\n /**\n * Detect whether `name` has a definition. Equivalent to\n * `get(name) != null`.\n */\n has(name) {\n return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name);\n }\n /**\n * Get the current value of a name, or `undefined` if there is no value.\n *\n * Note: Do not use `if (namespace.get(...))` to detect whether a macro\n * is defined, as the definition may be the empty string which evaluates\n * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or\n * `if (namespace.has(...))`.\n */\n get(name) {\n if (this.current.hasOwnProperty(name)) {\n return this.current[name];\n } else {\n return this.builtins[name];\n }\n }\n /**\n * Set the current value of a name, and optionally set it globally too.\n * Local set() sets the current value and (when appropriate) adds an undo\n * operation to the undo stack. Global set() may change the undo\n * operation at every level, so takes time linear in their number.\n * A value of undefined means to delete existing definitions.\n */\n set(name, value, global) {\n if (global === void 0) {\n global = false;\n }\n if (global) {\n // Global set is equivalent to setting in all groups. Simulate this\n // by destroying any undos currently scheduled for this name,\n // and adding an undo with the *new* value (in case it later gets\n // locally reset within this environment).\n for (var i = 0; i < this.undefStack.length; i++) {\n delete this.undefStack[i][name];\n }\n if (this.undefStack.length > 0) {\n this.undefStack[this.undefStack.length - 1][name] = value;\n }\n } else {\n // Undo this set at end of this group (possibly to `undefined`),\n // unless an undo is already in place, in which case that older\n // value is the correct one.\n var top = this.undefStack[this.undefStack.length - 1];\n if (top && !top.hasOwnProperty(name)) {\n top[name] = this.current[name];\n }\n }\n if (value == null) {\n delete this.current[name];\n } else {\n this.current[name] = value;\n }\n }\n}\n\n/**\n * Predefined macros for KaTeX.\n * This can be used to define some commands in terms of others.\n */\nvar macros = _macros;\n//////////////////////////////////////////////////////////////////////\n// macro tools\ndefineMacro(\"\\\\noexpand\", function (context) {\n // The expansion is the token itself; but that token is interpreted\n // as if its meaning were \u2018\\relax\u2019 if it is a control sequence that\n // would ordinarily be expanded by TeX\u2019s expansion rules.\n var t = context.popToken();\n if (context.isExpandable(t.text)) {\n t.noexpand = true;\n t.treatAsRelax = true;\n }\n return {\n tokens: [t],\n numArgs: 0\n };\n});\ndefineMacro(\"\\\\expandafter\", function (context) {\n // TeX first reads the token that comes immediately after \\expandafter,\n // without expanding it; let\u2019s call this token t. Then TeX reads the\n // token that comes after t (and possibly more tokens, if that token\n // has an argument), replacing it by its expansion. Finally TeX puts\n // t back in front of that expansion.\n var t = context.popToken();\n context.expandOnce(true); // expand only an expandable token\n return {\n tokens: [t],\n numArgs: 0\n };\n});\n// LaTeX's \\@firstoftwo{#1}{#2} expands to #1, skipping #2\n// TeX source: \\long\\def\\@firstoftwo#1#2{#1}\ndefineMacro(\"\\\\@firstoftwo\", function (context) {\n var args = context.consumeArgs(2);\n return {\n tokens: args[0],\n numArgs: 0\n };\n});\n// LaTeX's \\@secondoftwo{#1}{#2} expands to #2, skipping #1\n// TeX source: \\long\\def\\@secondoftwo#1#2{#2}\ndefineMacro(\"\\\\@secondoftwo\", function (context) {\n var args = context.consumeArgs(2);\n return {\n tokens: args[1],\n numArgs: 0\n };\n});\n// LaTeX's \\@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded)\n// symbol that isn't a space, consuming any spaces but not consuming the\n// first nonspace character. If that nonspace character matches #1, then\n// the macro expands to #2; otherwise, it expands to #3.\ndefineMacro(\"\\\\@ifnextchar\", function (context) {\n var args = context.consumeArgs(3); // symbol, if, else\n context.consumeSpaces();\n var nextToken = context.future();\n if (args[0].length === 1 && args[0][0].text === nextToken.text) {\n return {\n tokens: args[1],\n numArgs: 0\n };\n } else {\n return {\n tokens: args[2],\n numArgs: 0\n };\n }\n});\n// LaTeX's \\@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol.\n// If it is `*`, then it consumes the symbol, and the macro expands to #1;\n// otherwise, the macro expands to #2 (without consuming the symbol).\n// TeX source: \\def\\@ifstar#1{\\@ifnextchar *{\\@firstoftwo{#1}}}\ndefineMacro(\"\\\\@ifstar\", \"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\");\n// LaTeX's \\TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode\ndefineMacro(\"\\\\TextOrMath\", function (context) {\n var args = context.consumeArgs(2);\n if (context.mode === 'text') {\n return {\n tokens: args[0],\n numArgs: 0\n };\n } else {\n return {\n tokens: args[1],\n numArgs: 0\n };\n }\n});\n// Lookup table for parsing numbers in base 8 through 16\nvar digitToNumber = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"a\": 10,\n \"A\": 10,\n \"b\": 11,\n \"B\": 11,\n \"c\": 12,\n \"C\": 12,\n \"d\": 13,\n \"D\": 13,\n \"e\": 14,\n \"E\": 14,\n \"f\": 15,\n \"F\": 15\n};\n// TeX \\char makes a literal character (catcode 12) using the following forms:\n// (see The TeXBook, p. 43)\n// \\char123 -- decimal\n// \\char'123 -- octal\n// \\char\"123 -- hex\n// \\char`x -- character that can be written (i.e. isn't active)\n// \\char`\\x -- character that cannot be written (e.g. %)\n// These all refer to characters from the font, so we turn them into special\n// calls to a function \\@char dealt with in the Parser.\ndefineMacro(\"\\\\char\", function (context) {\n var token = context.popToken();\n var base;\n var number = 0;\n if (token.text === \"'\") {\n base = 8;\n token = context.popToken();\n } else if (token.text === '\"') {\n base = 16;\n token = context.popToken();\n } else if (token.text === \"`\") {\n token = context.popToken();\n if (token.text[0] === \"\\\\\") {\n number = token.text.charCodeAt(1);\n } else if (token.text === \"EOF\") {\n throw new ParseError(\"\\\\char` missing argument\");\n } else {\n number = token.text.charCodeAt(0);\n }\n } else {\n base = 10;\n }\n if (base) {\n // Parse a number in the given base, starting with first `token`.\n number = digitToNumber[token.text];\n if (number == null || number >= base) {\n throw new ParseError(\"Invalid base-\" + base + \" digit \" + token.text);\n }\n var digit;\n while ((digit = digitToNumber[context.future().text]) != null && digit < base) {\n number *= base;\n number += digit;\n context.popToken();\n }\n }\n return \"\\\\@char{\" + number + \"}\";\n});\n// \\newcommand{\\macro}[args]{definition}\n// \\renewcommand{\\macro}[args]{definition}\n// TODO: Optional arguments: \\newcommand{\\macro}[args][default]{definition}\nvar newcommand = (context, existsOK, nonexistsOK, skipIfExists) => {\n var arg = context.consumeArg().tokens;\n if (arg.length !== 1) {\n throw new ParseError(\"\\\\newcommand's first argument must be a macro name\");\n }\n var name = arg[0].text;\n var exists = context.isDefined(name);\n if (exists && !existsOK) {\n throw new ParseError(\"\\\\newcommand{\" + name + \"} attempting to redefine \" + (name + \"; use \\\\renewcommand\"));\n }\n if (!exists && !nonexistsOK) {\n throw new ParseError(\"\\\\renewcommand{\" + name + \"} when command \" + name + \" \" + \"does not yet exist; use \\\\newcommand\");\n }\n var numArgs = 0;\n arg = context.consumeArg().tokens;\n if (arg.length === 1 && arg[0].text === \"[\") {\n var argText = '';\n var token = context.expandNextToken();\n while (token.text !== \"]\" && token.text !== \"EOF\") {\n // TODO: Should properly expand arg, e.g., ignore {}s\n argText += token.text;\n token = context.expandNextToken();\n }\n if (!argText.match(/^\\s*[0-9]+\\s*$/)) {\n throw new ParseError(\"Invalid number of arguments: \" + argText);\n }\n numArgs = parseInt(argText);\n arg = context.consumeArg().tokens;\n }\n if (!(exists && skipIfExists)) {\n // Final arg is the expansion of the macro\n context.macros.set(name, {\n tokens: arg,\n numArgs\n });\n }\n return '';\n};\ndefineMacro(\"\\\\newcommand\", context => newcommand(context, false, true, false));\ndefineMacro(\"\\\\renewcommand\", context => newcommand(context, true, false, false));\ndefineMacro(\"\\\\providecommand\", context => newcommand(context, true, true, true));\n// terminal (console) tools\ndefineMacro(\"\\\\message\", context => {\n var arg = context.consumeArgs(1)[0];\n // eslint-disable-next-line no-console\n console.log(arg.reverse().map(token => token.text).join(\"\"));\n return '';\n});\ndefineMacro(\"\\\\errmessage\", context => {\n var arg = context.consumeArgs(1)[0];\n // eslint-disable-next-line no-console\n console.error(arg.reverse().map(token => token.text).join(\"\"));\n return '';\n});\ndefineMacro(\"\\\\show\", context => {\n var tok = context.popToken();\n var name = tok.text;\n // eslint-disable-next-line no-console\n console.log(tok, context.macros.get(name), functions[name], symbols.math[name], symbols.text[name]);\n return '';\n});\n//////////////////////////////////////////////////////////////////////\n// Grouping\n// \\let\\bgroup={ \\let\\egroup=}\ndefineMacro(\"\\\\bgroup\", \"{\");\ndefineMacro(\"\\\\egroup\", \"}\");\n// Symbols from latex.ltx:\n// \\def~{\\nobreakspace{}}\n// \\def\\lq{`}\n// \\def\\rq{'}\n// \\def \\aa {\\r a}\n// \\def \\AA {\\r A}\ndefineMacro(\"~\", \"\\\\nobreakspace\");\ndefineMacro(\"\\\\lq\", \"`\");\ndefineMacro(\"\\\\rq\", \"'\");\ndefineMacro(\"\\\\aa\", \"\\\\r a\");\ndefineMacro(\"\\\\AA\", \"\\\\r A\");\n// Copyright (C) and registered (R) symbols. Use raw symbol in MathML.\n// \\DeclareTextCommandDefault{\\textcopyright}{\\textcircled{c}}\n// \\DeclareTextCommandDefault{\\textregistered}{\\textcircled{%\n// \\check@mathfonts\\fontsize\\sf@size\\z@\\math@fontsfalse\\selectfont R}}\n// \\DeclareRobustCommand{\\copyright}{%\n// \\ifmmode{\\nfss@text{\\textcopyright}}\\else\\textcopyright\\fi}\ndefineMacro(\"\\\\textcopyright\", \"\\\\html@mathml{\\\\textcircled{c}}{\\\\char`\u00A9}\");\ndefineMacro(\"\\\\copyright\", \"\\\\TextOrMath{\\\\textcopyright}{\\\\text{\\\\textcopyright}}\");\ndefineMacro(\"\\\\textregistered\", \"\\\\html@mathml{\\\\textcircled{\\\\scriptsize R}}{\\\\char`\u00AE}\");\n// Characters omitted from Unicode range 1D400\u20131D7FF\ndefineMacro(\"\\u212C\", \"\\\\mathscr{B}\"); // script\ndefineMacro(\"\\u2130\", \"\\\\mathscr{E}\");\ndefineMacro(\"\\u2131\", \"\\\\mathscr{F}\");\ndefineMacro(\"\\u210B\", \"\\\\mathscr{H}\");\ndefineMacro(\"\\u2110\", \"\\\\mathscr{I}\");\ndefineMacro(\"\\u2112\", \"\\\\mathscr{L}\");\ndefineMacro(\"\\u2133\", \"\\\\mathscr{M}\");\ndefineMacro(\"\\u211B\", \"\\\\mathscr{R}\");\ndefineMacro(\"\\u212D\", \"\\\\mathfrak{C}\"); // Fraktur\ndefineMacro(\"\\u210C\", \"\\\\mathfrak{H}\");\ndefineMacro(\"\\u2128\", \"\\\\mathfrak{Z}\");\n// Define \\Bbbk with a macro that works in both HTML and MathML.\ndefineMacro(\"\\\\Bbbk\", \"\\\\Bbb{k}\");\n// \\llap and \\rlap render their contents in text mode\ndefineMacro(\"\\\\llap\", \"\\\\mathllap{\\\\textrm{#1}}\");\ndefineMacro(\"\\\\rlap\", \"\\\\mathrlap{\\\\textrm{#1}}\");\ndefineMacro(\"\\\\clap\", \"\\\\mathclap{\\\\textrm{#1}}\");\n// \\mathstrut from the TeXbook, p 360\ndefineMacro(\"\\\\mathstrut\", \"\\\\vphantom{(}\");\n// \\underbar from TeXbook p 353\ndefineMacro(\"\\\\underbar\", \"\\\\underline{\\\\text{#1}}\");\n// \\not is defined by base/fontmath.ltx via\n// \\DeclareMathSymbol{\\not}{\\mathrel}{symbols}{\"36}\n// It's thus treated like a \\mathrel, but defined by a symbol that has zero\n// width but extends to the right. We use \\rlap to get that spacing.\n// For MathML we write U+0338 here. buildMathML.js will then do the overlay.\ndefineMacro(\"\\\\not\", \"\\\\html@mathml{\\\\mathrel{\\\\mathrlap\\\\@not}\\\\nobreak}\" + \"{\\\\char\\\"338}\");\n// Negated symbols from base/fontmath.ltx:\n// \\def\\neq{\\not=} \\let\\ne=\\neq\n// \\DeclareRobustCommand\n// \\notin{\\mathrel{\\m@th\\mathpalette\\c@ncel\\in}}\n// \\def\\c@ncel#1#2{\\m@th\\ooalign{$\\hfil#1\\mkern1mu/\\hfil$\\crcr$#1#2$}}\ndefineMacro(\"\\\\neq\", \"\\\\html@mathml{\\\\mathrel{\\\\not=}}{\\\\mathrel{\\\\char`\u2260}}\");\ndefineMacro(\"\\\\ne\", \"\\\\neq\");\ndefineMacro(\"\\u2260\", \"\\\\neq\");\ndefineMacro(\"\\\\notin\", \"\\\\html@mathml{\\\\mathrel{{\\\\in}\\\\mathllap{/\\\\mskip1mu}}}\" + \"{\\\\mathrel{\\\\char`\u2209}}\");\ndefineMacro(\"\\u2209\", \"\\\\notin\");\n// Unicode stacked relations\ndefineMacro(\"\\u2258\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\kern{-1em}\\\\raisebox{0.4em}{$\\\\scriptsize\\\\frown$}}\" + \"}{\\\\mathrel{\\\\char`\\u2258}}\");\ndefineMacro(\"\\u2259\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\wedge}{=}}{\\\\mathrel{\\\\char`\\u2258}}\");\ndefineMacro(\"\\u225A\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\vee}{=}}{\\\\mathrel{\\\\char`\\u225A}}\");\ndefineMacro(\"\\u225B\", \"\\\\html@mathml{\\\\stackrel{\\\\scriptsize\\\\star}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225B}}\");\ndefineMacro(\"\\u225D\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{def}}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225D}}\");\ndefineMacro(\"\\u225E\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{m}}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225E}}\");\ndefineMacro(\"\\u225F\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny?}{=}}{\\\\mathrel{\\\\char`\\u225F}}\");\n// Misc Unicode\ndefineMacro(\"\\u27C2\", \"\\\\perp\");\ndefineMacro(\"\\u203C\", \"\\\\mathclose{!\\\\mkern-0.8mu!}\");\ndefineMacro(\"\\u220C\", \"\\\\notni\");\ndefineMacro(\"\\u231C\", \"\\\\ulcorner\");\ndefineMacro(\"\\u231D\", \"\\\\urcorner\");\ndefineMacro(\"\\u231E\", \"\\\\llcorner\");\ndefineMacro(\"\\u231F\", \"\\\\lrcorner\");\ndefineMacro(\"\\u00A9\", \"\\\\copyright\");\ndefineMacro(\"\\u00AE\", \"\\\\textregistered\");\n// The KaTeX fonts have corners at codepoints that don't match Unicode.\n// For MathML purposes, use the Unicode code point.\ndefineMacro(\"\\\\ulcorner\", \"\\\\html@mathml{\\\\@ulcorner}{\\\\mathop{\\\\char\\\"231c}}\");\ndefineMacro(\"\\\\urcorner\", \"\\\\html@mathml{\\\\@urcorner}{\\\\mathop{\\\\char\\\"231d}}\");\ndefineMacro(\"\\\\llcorner\", \"\\\\html@mathml{\\\\@llcorner}{\\\\mathop{\\\\char\\\"231e}}\");\ndefineMacro(\"\\\\lrcorner\", \"\\\\html@mathml{\\\\@lrcorner}{\\\\mathop{\\\\char\\\"231f}}\");\n//////////////////////////////////////////////////////////////////////\n// LaTeX_2\u03B5\n// \\vdots{\\vbox{\\baselineskip4\\p@ \\lineskiplimit\\z@\n// \\kern6\\p@\\hbox{.}\\hbox{.}\\hbox{.}}}\n// We'll call \\varvdots, which gets a glyph from symbols.js.\n// The zero-width rule gets us an equivalent to the vertical 6pt kern.\ndefineMacro(\"\\\\vdots\", \"{\\\\varvdots\\\\rule{0pt}{15pt}}\");\ndefineMacro(\"\\u22ee\", \"\\\\vdots\");\n//////////////////////////////////////////////////////////////////////\n// amsmath.sty\n// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf\n// Italic Greek capital letters. AMS defines these with \\DeclareMathSymbol,\n// but they are equivalent to \\mathit{\\Letter}.\ndefineMacro(\"\\\\varGamma\", \"\\\\mathit{\\\\Gamma}\");\ndefineMacro(\"\\\\varDelta\", \"\\\\mathit{\\\\Delta}\");\ndefineMacro(\"\\\\varTheta\", \"\\\\mathit{\\\\Theta}\");\ndefineMacro(\"\\\\varLambda\", \"\\\\mathit{\\\\Lambda}\");\ndefineMacro(\"\\\\varXi\", \"\\\\mathit{\\\\Xi}\");\ndefineMacro(\"\\\\varPi\", \"\\\\mathit{\\\\Pi}\");\ndefineMacro(\"\\\\varSigma\", \"\\\\mathit{\\\\Sigma}\");\ndefineMacro(\"\\\\varUpsilon\", \"\\\\mathit{\\\\Upsilon}\");\ndefineMacro(\"\\\\varPhi\", \"\\\\mathit{\\\\Phi}\");\ndefineMacro(\"\\\\varPsi\", \"\\\\mathit{\\\\Psi}\");\ndefineMacro(\"\\\\varOmega\", \"\\\\mathit{\\\\Omega}\");\n//\\newcommand{\\substack}[1]{\\subarray{c}#1\\endsubarray}\ndefineMacro(\"\\\\substack\", \"\\\\begin{subarray}{c}#1\\\\end{subarray}\");\n// \\renewcommand{\\colon}{\\nobreak\\mskip2mu\\mathpunct{}\\nonscript\n// \\mkern-\\thinmuskip{:}\\mskip6muplus1mu\\relax}\ndefineMacro(\"\\\\colon\", \"\\\\nobreak\\\\mskip2mu\\\\mathpunct{}\" + \"\\\\mathchoice{\\\\mkern-3mu}{\\\\mkern-3mu}{}{}{:}\\\\mskip6mu\\\\relax\");\n// \\newcommand{\\boxed}[1]{\\fbox{\\m@th$\\displaystyle#1$}}\ndefineMacro(\"\\\\boxed\", \"\\\\fbox{$\\\\displaystyle{#1}$}\");\n// \\def\\iff{\\DOTSB\\;\\Longleftrightarrow\\;}\n// \\def\\implies{\\DOTSB\\;\\Longrightarrow\\;}\n// \\def\\impliedby{\\DOTSB\\;\\Longleftarrow\\;}\ndefineMacro(\"\\\\iff\", \"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\");\ndefineMacro(\"\\\\implies\", \"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\");\ndefineMacro(\"\\\\impliedby\", \"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\");\n// \\def\\dddot#1{{\\mathop{#1}\\limits^{\\vbox to-1.4\\ex@{\\kern-\\tw@\\ex@\n// \\hbox{\\normalfont ...}\\vss}}}}\n// We use \\overset which avoids the vertical shift of \\mathop.\ndefineMacro(\"\\\\dddot\", \"{\\\\overset{\\\\raisebox{-0.1ex}{\\\\normalsize ...}}{#1}}\");\ndefineMacro(\"\\\\ddddot\", \"{\\\\overset{\\\\raisebox{-0.1ex}{\\\\normalsize ....}}{#1}}\");\n// AMSMath's automatic \\dots, based on \\mdots@@ macro.\nvar dotsByToken = {\n ',': '\\\\dotsc',\n '\\\\not': '\\\\dotsb',\n // \\keybin@ checks for the following:\n '+': '\\\\dotsb',\n '=': '\\\\dotsb',\n '<': '\\\\dotsb',\n '>': '\\\\dotsb',\n '-': '\\\\dotsb',\n '*': '\\\\dotsb',\n ':': '\\\\dotsb',\n // Symbols whose definition starts with \\DOTSB:\n '\\\\DOTSB': '\\\\dotsb',\n '\\\\coprod': '\\\\dotsb',\n '\\\\bigvee': '\\\\dotsb',\n '\\\\bigwedge': '\\\\dotsb',\n '\\\\biguplus': '\\\\dotsb',\n '\\\\bigcap': '\\\\dotsb',\n '\\\\bigcup': '\\\\dotsb',\n '\\\\prod': '\\\\dotsb',\n '\\\\sum': '\\\\dotsb',\n '\\\\bigotimes': '\\\\dotsb',\n '\\\\bigoplus': '\\\\dotsb',\n '\\\\bigodot': '\\\\dotsb',\n '\\\\bigsqcup': '\\\\dotsb',\n '\\\\And': '\\\\dotsb',\n '\\\\longrightarrow': '\\\\dotsb',\n '\\\\Longrightarrow': '\\\\dotsb',\n '\\\\longleftarrow': '\\\\dotsb',\n '\\\\Longleftarrow': '\\\\dotsb',\n '\\\\longleftrightarrow': '\\\\dotsb',\n '\\\\Longleftrightarrow': '\\\\dotsb',\n '\\\\mapsto': '\\\\dotsb',\n '\\\\longmapsto': '\\\\dotsb',\n '\\\\hookrightarrow': '\\\\dotsb',\n '\\\\doteq': '\\\\dotsb',\n // Symbols whose definition starts with \\mathbin:\n '\\\\mathbin': '\\\\dotsb',\n // Symbols whose definition starts with \\mathrel:\n '\\\\mathrel': '\\\\dotsb',\n '\\\\relbar': '\\\\dotsb',\n '\\\\Relbar': '\\\\dotsb',\n '\\\\xrightarrow': '\\\\dotsb',\n '\\\\xleftarrow': '\\\\dotsb',\n // Symbols whose definition starts with \\DOTSI:\n '\\\\DOTSI': '\\\\dotsi',\n '\\\\int': '\\\\dotsi',\n '\\\\oint': '\\\\dotsi',\n '\\\\iint': '\\\\dotsi',\n '\\\\iiint': '\\\\dotsi',\n '\\\\iiiint': '\\\\dotsi',\n '\\\\idotsint': '\\\\dotsi',\n // Symbols whose definition starts with \\DOTSX:\n '\\\\DOTSX': '\\\\dotsx'\n};\nvar dotsbGroups = new Set(['bin', 'rel']);\ndefineMacro(\"\\\\dots\", function (context) {\n // TODO: If used in text mode, should expand to \\textellipsis.\n // However, in KaTeX, \\textellipsis and \\ldots behave the same\n // (in text mode), and it's unlikely we'd see any of the math commands\n // that affect the behavior of \\dots when in text mode. So fine for now\n // (until we support \\ifmmode ... \\else ... \\fi).\n var thedots = '\\\\dotso';\n var next = context.expandAfterFuture().text;\n if (next in dotsByToken) {\n thedots = dotsByToken[next];\n } else if (next.slice(0, 4) === '\\\\not') {\n thedots = '\\\\dotsb';\n } else if (next in symbols.math) {\n if (dotsbGroups.has(symbols.math[next].group)) {\n thedots = '\\\\dotsb';\n }\n }\n return thedots;\n});\nvar spaceAfterDots = {\n // \\rightdelim@ checks for the following:\n ')': true,\n ']': true,\n '\\\\rbrack': true,\n '\\\\}': true,\n '\\\\rbrace': true,\n '\\\\rangle': true,\n '\\\\rceil': true,\n '\\\\rfloor': true,\n '\\\\rgroup': true,\n '\\\\rmoustache': true,\n '\\\\right': true,\n '\\\\bigr': true,\n '\\\\biggr': true,\n '\\\\Bigr': true,\n '\\\\Biggr': true,\n // \\extra@ also tests for the following:\n '$': true,\n // \\extrap@ checks for the following:\n ';': true,\n '.': true,\n ',': true\n};\ndefineMacro(\"\\\\dotso\", function (context) {\n var next = context.future().text;\n if (next in spaceAfterDots) {\n return \"\\\\ldots\\\\,\";\n } else {\n return \"\\\\ldots\";\n }\n});\ndefineMacro(\"\\\\dotsc\", function (context) {\n var next = context.future().text;\n // \\dotsc uses \\extra@ but not \\extrap@, instead specially checking for\n // ';' and '.', but doesn't check for ','.\n if (next in spaceAfterDots && next !== ',') {\n return \"\\\\ldots\\\\,\";\n } else {\n return \"\\\\ldots\";\n }\n});\ndefineMacro(\"\\\\cdots\", function (context) {\n var next = context.future().text;\n if (next in spaceAfterDots) {\n return \"\\\\@cdots\\\\,\";\n } else {\n return \"\\\\@cdots\";\n }\n});\ndefineMacro(\"\\\\dotsb\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsm\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsi\", \"\\\\!\\\\cdots\");\n// amsmath doesn't actually define \\dotsx, but \\dots followed by a macro\n// starting with \\DOTSX implies \\dotso, and then \\extra@ detects this case\n// and forces the added `\\,`.\ndefineMacro(\"\\\\dotsx\", \"\\\\ldots\\\\,\");\n// \\let\\DOTSI\\relax\n// \\let\\DOTSB\\relax\n// \\let\\DOTSX\\relax\ndefineMacro(\"\\\\DOTSI\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSB\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSX\", \"\\\\relax\");\n// Spacing, based on amsmath.sty's override of LaTeX defaults\n// \\DeclareRobustCommand{\\tmspace}[3]{%\n// \\ifmmode\\mskip#1#2\\else\\kern#1#3\\fi\\relax}\ndefineMacro(\"\\\\tmspace\", \"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\");\n// \\renewcommand{\\,}{\\tmspace+\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\ndefineMacro(\"\\\\,\", \"\\\\tmspace+{3mu}{.1667em}\");\n// \\let\\thinspace\\,\ndefineMacro(\"\\\\thinspace\", \"\\\\,\");\n// \\def\\>{\\mskip\\medmuskip}\n// \\renewcommand{\\:}{\\tmspace+\\medmuskip{.2222em}}\n// TODO: \\> and math mode of \\: should use \\medmuskip = 4mu plus 2mu minus 4mu\ndefineMacro(\"\\\\>\", \"\\\\mskip{4mu}\");\ndefineMacro(\"\\\\:\", \"\\\\tmspace+{4mu}{.2222em}\");\n// \\let\\medspace\\:\ndefineMacro(\"\\\\medspace\", \"\\\\:\");\n// \\renewcommand{\\;}{\\tmspace+\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip = 5mu plus 5mu\ndefineMacro(\"\\\\;\", \"\\\\tmspace+{5mu}{.2777em}\");\n// \\let\\thickspace\\;\ndefineMacro(\"\\\\thickspace\", \"\\\\;\");\n// \\renewcommand{\\!}{\\tmspace-\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\ndefineMacro(\"\\\\!\", \"\\\\tmspace-{3mu}{.1667em}\");\n// \\let\\negthinspace\\!\ndefineMacro(\"\\\\negthinspace\", \"\\\\!\");\n// \\newcommand{\\negmedspace}{\\tmspace-\\medmuskip{.2222em}}\n// TODO: math mode should use \\medmuskip\ndefineMacro(\"\\\\negmedspace\", \"\\\\tmspace-{4mu}{.2222em}\");\n// \\newcommand{\\negthickspace}{\\tmspace-\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip\ndefineMacro(\"\\\\negthickspace\", \"\\\\tmspace-{5mu}{.277em}\");\n// \\def\\enspace{\\kern.5em }\ndefineMacro(\"\\\\enspace\", \"\\\\kern.5em \");\n// \\def\\enskip{\\hskip.5em\\relax}\ndefineMacro(\"\\\\enskip\", \"\\\\hskip.5em\\\\relax\");\n// \\def\\quad{\\hskip1em\\relax}\ndefineMacro(\"\\\\quad\", \"\\\\hskip1em\\\\relax\");\n// \\def\\qquad{\\hskip2em\\relax}\ndefineMacro(\"\\\\qquad\", \"\\\\hskip2em\\\\relax\");\n// \\tag@in@display form of \\tag\ndefineMacro(\"\\\\tag\", \"\\\\@ifstar\\\\tag@literal\\\\tag@paren\");\ndefineMacro(\"\\\\tag@paren\", \"\\\\tag@literal{({#1})}\");\ndefineMacro(\"\\\\tag@literal\", context => {\n if (context.macros.get(\"\\\\df@tag\")) {\n throw new ParseError(\"Multiple \\\\tag\");\n }\n return \"\\\\gdef\\\\df@tag{\\\\text{#1}}\";\n});\n// \\renewcommand{\\bmod}{\\nonscript\\mskip-\\medmuskip\\mkern5mu\\mathbin\n// {\\operator@font mod}\\penalty900\n// \\mkern5mu\\nonscript\\mskip-\\medmuskip}\n// \\newcommand{\\pod}[1]{\\allowbreak\n// \\if@display\\mkern18mu\\else\\mkern8mu\\fi(#1)}\n// \\renewcommand{\\pmod}[1]{\\pod{{\\operator@font mod}\\mkern6mu#1}}\n// \\newcommand{\\mod}[1]{\\allowbreak\\if@display\\mkern18mu\n// \\else\\mkern12mu\\fi{\\operator@font mod}\\,\\,#1}\n// TODO: math mode should use \\medmuskip = 4mu plus 2mu minus 4mu\ndefineMacro(\"\\\\bmod\", \"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\" + \"\\\\mathbin{\\\\rm mod}\" + \"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\");\ndefineMacro(\"\\\\pod\", \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\");\ndefineMacro(\"\\\\pmod\", \"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\");\ndefineMacro(\"\\\\mod\", \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}\" + \"{\\\\rm mod}\\\\,\\\\,#1\");\n//////////////////////////////////////////////////////////////////////\n// LaTeX source2e\n// \\expandafter\\let\\expandafter\\@normalcr\n// \\csname\\expandafter\\@gobble\\string\\\\ \\endcsname\n// \\DeclareRobustCommand\\newline{\\@normalcr\\relax}\ndefineMacro(\"\\\\newline\", \"\\\\\\\\\\\\relax\");\n// \\def\\TeX{T\\kern-.1667em\\lower.5ex\\hbox{E}\\kern-.125emX\\@}\n// TODO: Doesn't normally work in math mode because \\@ fails. KaTeX doesn't\n// support \\@ yet, so that's omitted, and we add \\text so that the result\n// doesn't look funny in math mode.\ndefineMacro(\"\\\\TeX\", \"\\\\textrm{\\\\html@mathml{\" + \"T\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125emX\" + \"}{TeX}}\");\n// \\DeclareRobustCommand{\\LaTeX}{L\\kern-.36em%\n// {\\sbox\\z@ T%\n// \\vbox to\\ht\\z@{\\hbox{\\check@mathfonts\n// \\fontsize\\sf@size\\z@\n// \\math@fontsfalse\\selectfont\n// A}%\n// \\vss}%\n// }%\n// \\kern-.15em%\n// \\TeX}\n// This code aligns the top of the A with the T (from the perspective of TeX's\n// boxes, though visually the A appears to extend above slightly).\n// We compute the corresponding \\raisebox when A is rendered in \\normalsize\n// \\scriptstyle, which has a scale factor of 0.7 (see Options.js).\nvar latexRaiseA = makeEm(fontMetricsData['Main-Regular'][\"T\".charCodeAt(0)][1] - 0.7 * fontMetricsData['Main-Regular'][\"A\".charCodeAt(0)][1]);\ndefineMacro(\"\\\\LaTeX\", \"\\\\textrm{\\\\html@mathml{\" + (\"L\\\\kern-.36em\\\\raisebox{\" + latexRaiseA + \"}{\\\\scriptstyle A}\") + \"\\\\kern-.15em\\\\TeX}{LaTeX}}\");\n// New KaTeX logo based on tweaking LaTeX logo\ndefineMacro(\"\\\\KaTeX\", \"\\\\textrm{\\\\html@mathml{\" + (\"K\\\\kern-.17em\\\\raisebox{\" + latexRaiseA + \"}{\\\\scriptstyle A}\") + \"\\\\kern-.15em\\\\TeX}{KaTeX}}\");\n// \\DeclareRobustCommand\\hspace{\\@ifstar\\@hspacer\\@hspace}\n// \\def\\@hspace#1{\\hskip #1\\relax}\n// \\def\\@hspacer#1{\\vrule \\@width\\z@\\nobreak\n// \\hskip #1\\hskip \\z@skip}\ndefineMacro(\"\\\\hspace\", \"\\\\@ifstar\\\\@hspacer\\\\@hspace\");\ndefineMacro(\"\\\\@hspace\", \"\\\\hskip #1\\\\relax\");\ndefineMacro(\"\\\\@hspacer\", \"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\");\n//////////////////////////////////////////////////////////////////////\n// mathtools.sty\n//\\providecommand\\ordinarycolon{:}\ndefineMacro(\"\\\\ordinarycolon\", \":\");\n//\\def\\vcentcolon{\\mathrel{\\mathop\\ordinarycolon}}\n//TODO(edemaine): Not yet centered. Fix via \\raisebox or #726\ndefineMacro(\"\\\\vcentcolon\", \"\\\\mathrel{\\\\mathop\\\\ordinarycolon}\");\n// \\providecommand*\\dblcolon{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}\ndefineMacro(\"\\\\dblcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-.9mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2237}}\");\n// \\providecommand*\\coloneqq{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}\ndefineMacro(\"\\\\coloneqq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}=}}\" + \"{\\\\mathop{\\\\char\\\"2254}}\"); // \u2254\n// \\providecommand*\\Coloneqq{\\dblcolon\\mathrel{\\mkern-1.2mu}=}\ndefineMacro(\"\\\\Coloneqq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}=}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"3d}}\");\n// \\providecommand*\\coloneq{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\coloneq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"2212}}\");\n// \\providecommand*\\Coloneq{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\Coloneq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"2212}}\");\n// \\providecommand*\\eqqcolon{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}\ndefineMacro(\"\\\\eqqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2255}}\"); // \u2255\n// \\providecommand*\\Eqqcolon{=\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}\" + \"{\\\\mathop{\\\\char\\\"3d\\\\char\\\"2237}}\");\n// \\providecommand*\\eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}\ndefineMacro(\"\\\\eqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2239}}\");\n// \\providecommand*\\Eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}\" + \"{\\\\mathop{\\\\char\\\"2212\\\\char\\\"2237}}\");\n// \\providecommand*\\colonapprox{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\colonapprox\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"2248}}\");\n// \\providecommand*\\Colonapprox{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\Colonapprox\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"2248}}\");\n// \\providecommand*\\colonsim{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\colonsim\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"223c}}\");\n// \\providecommand*\\Colonsim{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\Colonsim\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"223c}}\");\n// Some Unicode characters are implemented with macros to mathtools functions.\ndefineMacro(\"\\u2237\", \"\\\\dblcolon\"); // ::\ndefineMacro(\"\\u2239\", \"\\\\eqcolon\"); // -:\ndefineMacro(\"\\u2254\", \"\\\\coloneqq\"); // :=\ndefineMacro(\"\\u2255\", \"\\\\eqqcolon\"); // =:\ndefineMacro(\"\\u2A74\", \"\\\\Coloneqq\"); // ::=\n//////////////////////////////////////////////////////////////////////\n// colonequals.sty\n// Alternate names for mathtools's macros:\ndefineMacro(\"\\\\ratio\", \"\\\\vcentcolon\");\ndefineMacro(\"\\\\coloncolon\", \"\\\\dblcolon\");\ndefineMacro(\"\\\\colonequals\", \"\\\\coloneqq\");\ndefineMacro(\"\\\\coloncolonequals\", \"\\\\Coloneqq\");\ndefineMacro(\"\\\\equalscolon\", \"\\\\eqqcolon\");\ndefineMacro(\"\\\\equalscoloncolon\", \"\\\\Eqqcolon\");\ndefineMacro(\"\\\\colonminus\", \"\\\\coloneq\");\ndefineMacro(\"\\\\coloncolonminus\", \"\\\\Coloneq\");\ndefineMacro(\"\\\\minuscolon\", \"\\\\eqcolon\");\ndefineMacro(\"\\\\minuscoloncolon\", \"\\\\Eqcolon\");\n// \\colonapprox name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonapprox\", \"\\\\Colonapprox\");\n// \\colonsim name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonsim\", \"\\\\Colonsim\");\n// Additional macros, implemented by analogy with mathtools definitions:\ndefineMacro(\"\\\\simcolon\", \"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\");\ndefineMacro(\"\\\\simcoloncolon\", \"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\");\ndefineMacro(\"\\\\approxcolon\", \"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\");\ndefineMacro(\"\\\\approxcoloncolon\", \"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\");\n// Present in newtxmath, pxfonts and txfonts\ndefineMacro(\"\\\\notni\", \"\\\\html@mathml{\\\\not\\\\ni}{\\\\mathrel{\\\\char`\\u220C}}\");\ndefineMacro(\"\\\\limsup\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,sup}\");\ndefineMacro(\"\\\\liminf\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,inf}\");\n//////////////////////////////////////////////////////////////////////\n// From amsopn.sty\ndefineMacro(\"\\\\injlim\", \"\\\\DOTSB\\\\operatorname*{inj\\\\,lim}\");\ndefineMacro(\"\\\\projlim\", \"\\\\DOTSB\\\\operatorname*{proj\\\\,lim}\");\ndefineMacro(\"\\\\varlimsup\", \"\\\\DOTSB\\\\operatorname*{\\\\overline{lim}}\");\ndefineMacro(\"\\\\varliminf\", \"\\\\DOTSB\\\\operatorname*{\\\\underline{lim}}\");\ndefineMacro(\"\\\\varinjlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underrightarrow{lim}}\");\ndefineMacro(\"\\\\varprojlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underleftarrow{lim}}\");\n//////////////////////////////////////////////////////////////////////\n// MathML alternates for KaTeX glyphs in the Unicode private area\ndefineMacro(\"\\\\gvertneqq\", \"\\\\html@mathml{\\\\@gvertneqq}{\\u2269}\");\ndefineMacro(\"\\\\lvertneqq\", \"\\\\html@mathml{\\\\@lvertneqq}{\\u2268}\");\ndefineMacro(\"\\\\ngeqq\", \"\\\\html@mathml{\\\\@ngeqq}{\\u2271}\");\ndefineMacro(\"\\\\ngeqslant\", \"\\\\html@mathml{\\\\@ngeqslant}{\\u2271}\");\ndefineMacro(\"\\\\nleqq\", \"\\\\html@mathml{\\\\@nleqq}{\\u2270}\");\ndefineMacro(\"\\\\nleqslant\", \"\\\\html@mathml{\\\\@nleqslant}{\\u2270}\");\ndefineMacro(\"\\\\nshortmid\", \"\\\\html@mathml{\\\\@nshortmid}{\u2224}\");\ndefineMacro(\"\\\\nshortparallel\", \"\\\\html@mathml{\\\\@nshortparallel}{\u2226}\");\ndefineMacro(\"\\\\nsubseteqq\", \"\\\\html@mathml{\\\\@nsubseteqq}{\\u2288}\");\ndefineMacro(\"\\\\nsupseteqq\", \"\\\\html@mathml{\\\\@nsupseteqq}{\\u2289}\");\ndefineMacro(\"\\\\varsubsetneq\", \"\\\\html@mathml{\\\\@varsubsetneq}{\u228A}\");\ndefineMacro(\"\\\\varsubsetneqq\", \"\\\\html@mathml{\\\\@varsubsetneqq}{\u2ACB}\");\ndefineMacro(\"\\\\varsupsetneq\", \"\\\\html@mathml{\\\\@varsupsetneq}{\u228B}\");\ndefineMacro(\"\\\\varsupsetneqq\", \"\\\\html@mathml{\\\\@varsupsetneqq}{\u2ACC}\");\ndefineMacro(\"\\\\imath\", \"\\\\html@mathml{\\\\@imath}{\\u0131}\");\ndefineMacro(\"\\\\jmath\", \"\\\\html@mathml{\\\\@jmath}{\\u0237}\");\n//////////////////////////////////////////////////////////////////////\n// stmaryrd and semantic\n// The stmaryrd and semantic packages render the next four items by calling a\n// glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.\ndefineMacro(\"\\\\llbracket\", \"\\\\html@mathml{\" + \"\\\\mathopen{[\\\\mkern-3.2mu[}}\" + \"{\\\\mathopen{\\\\char`\\u27e6}}\");\ndefineMacro(\"\\\\rrbracket\", \"\\\\html@mathml{\" + \"\\\\mathclose{]\\\\mkern-3.2mu]}}\" + \"{\\\\mathclose{\\\\char`\\u27e7}}\");\ndefineMacro(\"\\u27e6\", \"\\\\llbracket\"); // blackboard bold [\ndefineMacro(\"\\u27e7\", \"\\\\rrbracket\"); // blackboard bold ]\ndefineMacro(\"\\\\lBrace\", \"\\\\html@mathml{\" + \"\\\\mathopen{\\\\{\\\\mkern-3.2mu[}}\" + \"{\\\\mathopen{\\\\char`\\u2983}}\");\ndefineMacro(\"\\\\rBrace\", \"\\\\html@mathml{\" + \"\\\\mathclose{]\\\\mkern-3.2mu\\\\}}}\" + \"{\\\\mathclose{\\\\char`\\u2984}}\");\ndefineMacro(\"\\u2983\", \"\\\\lBrace\"); // blackboard bold {\ndefineMacro(\"\\u2984\", \"\\\\rBrace\"); // blackboard bold }\n// TODO: Create variable sized versions of the last two items. I believe that\n// will require new font glyphs.\n// The stmaryrd function `\\minuso` provides a \"Plimsoll\" symbol that\n// superimposes the characters \\circ and \\mathminus. Used in chemistry.\ndefineMacro(\"\\\\minuso\", \"\\\\mathbin{\\\\html@mathml{\" + \"{\\\\mathrlap{\\\\mathchoice{\\\\kern{0.145em}}{\\\\kern{0.145em}}\" + \"{\\\\kern{0.1015em}}{\\\\kern{0.0725em}}\\\\circ}{-}}}\" + \"{\\\\char`\u29B5}}\");\ndefineMacro(\"\u29B5\", \"\\\\minuso\");\n//////////////////////////////////////////////////////////////////////\n// texvc.sty\n// The texvc package contains macros available in mediawiki pages.\n// We omit the functions deprecated at\n// https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax\n// We also omit texvc's \\O, which conflicts with \\text{\\O}\ndefineMacro(\"\\\\darr\", \"\\\\downarrow\");\ndefineMacro(\"\\\\dArr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\Darr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\lang\", \"\\\\langle\");\ndefineMacro(\"\\\\rang\", \"\\\\rangle\");\ndefineMacro(\"\\\\uarr\", \"\\\\uparrow\");\ndefineMacro(\"\\\\uArr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\Uarr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\N\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\R\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Z\", \"\\\\mathbb{Z}\");\ndefineMacro(\"\\\\alef\", \"\\\\aleph\");\ndefineMacro(\"\\\\alefsym\", \"\\\\aleph\");\ndefineMacro(\"\\\\Alpha\", \"\\\\mathrm{A}\");\ndefineMacro(\"\\\\Beta\", \"\\\\mathrm{B}\");\ndefineMacro(\"\\\\bull\", \"\\\\bullet\");\ndefineMacro(\"\\\\Chi\", \"\\\\mathrm{X}\");\ndefineMacro(\"\\\\clubs\", \"\\\\clubsuit\");\ndefineMacro(\"\\\\cnums\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Complex\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Dagger\", \"\\\\ddagger\");\ndefineMacro(\"\\\\diamonds\", \"\\\\diamondsuit\");\ndefineMacro(\"\\\\empty\", \"\\\\emptyset\");\ndefineMacro(\"\\\\Epsilon\", \"\\\\mathrm{E}\");\ndefineMacro(\"\\\\Eta\", \"\\\\mathrm{H}\");\ndefineMacro(\"\\\\exist\", \"\\\\exists\");\ndefineMacro(\"\\\\harr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\hArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Harr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\hearts\", \"\\\\heartsuit\");\ndefineMacro(\"\\\\image\", \"\\\\Im\");\ndefineMacro(\"\\\\infin\", \"\\\\infty\");\ndefineMacro(\"\\\\Iota\", \"\\\\mathrm{I}\");\ndefineMacro(\"\\\\isin\", \"\\\\in\");\ndefineMacro(\"\\\\Kappa\", \"\\\\mathrm{K}\");\ndefineMacro(\"\\\\larr\", \"\\\\leftarrow\");\ndefineMacro(\"\\\\lArr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\Larr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\lrarr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\lrArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Lrarr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Mu\", \"\\\\mathrm{M}\");\ndefineMacro(\"\\\\natnums\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\Nu\", \"\\\\mathrm{N}\");\ndefineMacro(\"\\\\Omicron\", \"\\\\mathrm{O}\");\ndefineMacro(\"\\\\plusmn\", \"\\\\pm\");\ndefineMacro(\"\\\\rarr\", \"\\\\rightarrow\");\ndefineMacro(\"\\\\rArr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\Rarr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\real\", \"\\\\Re\");\ndefineMacro(\"\\\\reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Rho\", \"\\\\mathrm{P}\");\ndefineMacro(\"\\\\sdot\", \"\\\\cdot\");\ndefineMacro(\"\\\\sect\", \"\\\\S\");\ndefineMacro(\"\\\\spades\", \"\\\\spadesuit\");\ndefineMacro(\"\\\\sub\", \"\\\\subset\");\ndefineMacro(\"\\\\sube\", \"\\\\subseteq\");\ndefineMacro(\"\\\\supe\", \"\\\\supseteq\");\ndefineMacro(\"\\\\Tau\", \"\\\\mathrm{T}\");\ndefineMacro(\"\\\\thetasym\", \"\\\\vartheta\");\n// TODO: defineMacro(\"\\\\varcoppa\", \"\\\\\\mbox{\\\\coppa}\");\ndefineMacro(\"\\\\weierp\", \"\\\\wp\");\ndefineMacro(\"\\\\Zeta\", \"\\\\mathrm{Z}\");\n//////////////////////////////////////////////////////////////////////\n// statmath.sty\n// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf\ndefineMacro(\"\\\\argmin\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,min}\");\ndefineMacro(\"\\\\argmax\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,max}\");\ndefineMacro(\"\\\\plim\", \"\\\\DOTSB\\\\mathop{\\\\operatorname{plim}}\\\\limits\");\n//////////////////////////////////////////////////////////////////////\n// braket.sty\n// http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/braket/braket.pdf\ndefineMacro(\"\\\\bra\", \"\\\\mathinner{\\\\langle{#1}|}\");\ndefineMacro(\"\\\\ket\", \"\\\\mathinner{|{#1}\\\\rangle}\");\ndefineMacro(\"\\\\braket\", \"\\\\mathinner{\\\\langle{#1}\\\\rangle}\");\ndefineMacro(\"\\\\Bra\", \"\\\\left\\\\langle#1\\\\right|\");\ndefineMacro(\"\\\\Ket\", \"\\\\left|#1\\\\right\\\\rangle\");\nvar braketHelper = one => context => {\n var left = context.consumeArg().tokens;\n var middle = context.consumeArg().tokens;\n var middleDouble = context.consumeArg().tokens;\n var right = context.consumeArg().tokens;\n var oldMiddle = context.macros.get(\"|\");\n var oldMiddleDouble = context.macros.get(\"\\\\|\");\n context.macros.beginGroup();\n var midMacro = double => context => {\n if (one) {\n // Only modify the first instance of | or \\|\n context.macros.set(\"|\", oldMiddle);\n if (middleDouble.length) {\n context.macros.set(\"\\\\|\", oldMiddleDouble);\n }\n }\n var doubled = double;\n if (!double && middleDouble.length) {\n // Mimic \\@ifnextchar\n var nextToken = context.future();\n if (nextToken.text === \"|\") {\n context.popToken();\n doubled = true;\n }\n }\n return {\n tokens: doubled ? middleDouble : middle,\n numArgs: 0\n };\n };\n context.macros.set(\"|\", midMacro(false));\n if (middleDouble.length) {\n context.macros.set(\"\\\\|\", midMacro(true));\n }\n var arg = context.consumeArg().tokens;\n var expanded = context.expandTokens([...right, ...arg, ...left // reversed\n ]);\n context.macros.endGroup();\n return {\n tokens: expanded.reverse(),\n numArgs: 0\n };\n};\ndefineMacro(\"\\\\bra@ket\", braketHelper(false));\ndefineMacro(\"\\\\bra@set\", braketHelper(true));\ndefineMacro(\"\\\\Braket\", \"\\\\bra@ket{\\\\left\\\\langle}\" + \"{\\\\,\\\\middle\\\\vert\\\\,}{\\\\,\\\\middle\\\\vert\\\\,}{\\\\right\\\\rangle}\");\ndefineMacro(\"\\\\Set\", \"\\\\bra@set{\\\\left\\\\{\\\\:}\" + \"{\\\\;\\\\middle\\\\vert\\\\;}{\\\\;\\\\middle\\\\Vert\\\\;}{\\\\:\\\\right\\\\}}\");\ndefineMacro(\"\\\\set\", \"\\\\bra@set{\\\\{\\\\,}{\\\\mid}{}{\\\\,\\\\}}\");\n// has no support for special || or \\|\n//////////////////////////////////////////////////////////////////////\n// actuarialangle.dtx\ndefineMacro(\"\\\\angln\", \"{\\\\angl n}\");\n// Custom Khan Academy colors, should be moved to an optional package\ndefineMacro(\"\\\\blue\", \"\\\\textcolor{##6495ed}{#1}\");\ndefineMacro(\"\\\\orange\", \"\\\\textcolor{##ffa500}{#1}\");\ndefineMacro(\"\\\\pink\", \"\\\\textcolor{##ff00af}{#1}\");\ndefineMacro(\"\\\\red\", \"\\\\textcolor{##df0030}{#1}\");\ndefineMacro(\"\\\\green\", \"\\\\textcolor{##28ae7b}{#1}\");\ndefineMacro(\"\\\\gray\", \"\\\\textcolor{gray}{#1}\");\ndefineMacro(\"\\\\purple\", \"\\\\textcolor{##9d38bd}{#1}\");\ndefineMacro(\"\\\\blueA\", \"\\\\textcolor{##ccfaff}{#1}\");\ndefineMacro(\"\\\\blueB\", \"\\\\textcolor{##80f6ff}{#1}\");\ndefineMacro(\"\\\\blueC\", \"\\\\textcolor{##63d9ea}{#1}\");\ndefineMacro(\"\\\\blueD\", \"\\\\textcolor{##11accd}{#1}\");\ndefineMacro(\"\\\\blueE\", \"\\\\textcolor{##0c7f99}{#1}\");\ndefineMacro(\"\\\\tealA\", \"\\\\textcolor{##94fff5}{#1}\");\ndefineMacro(\"\\\\tealB\", \"\\\\textcolor{##26edd5}{#1}\");\ndefineMacro(\"\\\\tealC\", \"\\\\textcolor{##01d1c1}{#1}\");\ndefineMacro(\"\\\\tealD\", \"\\\\textcolor{##01a995}{#1}\");\ndefineMacro(\"\\\\tealE\", \"\\\\textcolor{##208170}{#1}\");\ndefineMacro(\"\\\\greenA\", \"\\\\textcolor{##b6ffb0}{#1}\");\ndefineMacro(\"\\\\greenB\", \"\\\\textcolor{##8af281}{#1}\");\ndefineMacro(\"\\\\greenC\", \"\\\\textcolor{##74cf70}{#1}\");\ndefineMacro(\"\\\\greenD\", \"\\\\textcolor{##1fab54}{#1}\");\ndefineMacro(\"\\\\greenE\", \"\\\\textcolor{##0d923f}{#1}\");\ndefineMacro(\"\\\\goldA\", \"\\\\textcolor{##ffd0a9}{#1}\");\ndefineMacro(\"\\\\goldB\", \"\\\\textcolor{##ffbb71}{#1}\");\ndefineMacro(\"\\\\goldC\", \"\\\\textcolor{##ff9c39}{#1}\");\ndefineMacro(\"\\\\goldD\", \"\\\\textcolor{##e07d10}{#1}\");\ndefineMacro(\"\\\\goldE\", \"\\\\textcolor{##a75a05}{#1}\");\ndefineMacro(\"\\\\redA\", \"\\\\textcolor{##fca9a9}{#1}\");\ndefineMacro(\"\\\\redB\", \"\\\\textcolor{##ff8482}{#1}\");\ndefineMacro(\"\\\\redC\", \"\\\\textcolor{##f9685d}{#1}\");\ndefineMacro(\"\\\\redD\", \"\\\\textcolor{##e84d39}{#1}\");\ndefineMacro(\"\\\\redE\", \"\\\\textcolor{##bc2612}{#1}\");\ndefineMacro(\"\\\\maroonA\", \"\\\\textcolor{##ffbde0}{#1}\");\ndefineMacro(\"\\\\maroonB\", \"\\\\textcolor{##ff92c6}{#1}\");\ndefineMacro(\"\\\\maroonC\", \"\\\\textcolor{##ed5fa6}{#1}\");\ndefineMacro(\"\\\\maroonD\", \"\\\\textcolor{##ca337c}{#1}\");\ndefineMacro(\"\\\\maroonE\", \"\\\\textcolor{##9e034e}{#1}\");\ndefineMacro(\"\\\\purpleA\", \"\\\\textcolor{##ddd7ff}{#1}\");\ndefineMacro(\"\\\\purpleB\", \"\\\\textcolor{##c6b9fc}{#1}\");\ndefineMacro(\"\\\\purpleC\", \"\\\\textcolor{##aa87ff}{#1}\");\ndefineMacro(\"\\\\purpleD\", \"\\\\textcolor{##7854ab}{#1}\");\ndefineMacro(\"\\\\purpleE\", \"\\\\textcolor{##543b78}{#1}\");\ndefineMacro(\"\\\\mintA\", \"\\\\textcolor{##f5f9e8}{#1}\");\ndefineMacro(\"\\\\mintB\", \"\\\\textcolor{##edf2df}{#1}\");\ndefineMacro(\"\\\\mintC\", \"\\\\textcolor{##e0e5cc}{#1}\");\ndefineMacro(\"\\\\grayA\", \"\\\\textcolor{##f6f7f7}{#1}\");\ndefineMacro(\"\\\\grayB\", \"\\\\textcolor{##f0f1f2}{#1}\");\ndefineMacro(\"\\\\grayC\", \"\\\\textcolor{##e3e5e6}{#1}\");\ndefineMacro(\"\\\\grayD\", \"\\\\textcolor{##d6d8da}{#1}\");\ndefineMacro(\"\\\\grayE\", \"\\\\textcolor{##babec2}{#1}\");\ndefineMacro(\"\\\\grayF\", \"\\\\textcolor{##888d93}{#1}\");\ndefineMacro(\"\\\\grayG\", \"\\\\textcolor{##626569}{#1}\");\ndefineMacro(\"\\\\grayH\", \"\\\\textcolor{##3b3e40}{#1}\");\ndefineMacro(\"\\\\grayI\", \"\\\\textcolor{##21242c}{#1}\");\ndefineMacro(\"\\\\kaBlue\", \"\\\\textcolor{##314453}{#1}\");\ndefineMacro(\"\\\\kaGreen\", \"\\\\textcolor{##71B307}{#1}\");\n\n/**\n * This file contains the \u201Cgullet\u201D where macros are expanded\n * until only non-macro tokens remain.\n */\n// List of commands that act like macros but aren't defined as a macro,\n// function, or symbol. Used in `isDefined`.\nvar implicitCommands = {\n \"^\": true,\n // Parser.js\n \"_\": true,\n // Parser.js\n \"\\\\limits\": true,\n // Parser.js\n \"\\\\nolimits\": true // Parser.js\n};\nclass MacroExpander {\n constructor(input, settings, mode) {\n this.settings = settings;\n this.expansionCount = 0;\n this.feed(input);\n // Make new global namespace\n this.macros = new Namespace(macros, settings.macros);\n this.mode = mode;\n this.stack = []; // contains tokens in REVERSE order\n }\n /**\n * Feed a new input string to the same MacroExpander\n * (with existing macros etc.).\n */\n feed(input) {\n this.lexer = new Lexer(input, this.settings);\n }\n /**\n * Switches between \"text\" and \"math\" modes.\n */\n switchMode(newMode) {\n this.mode = newMode;\n }\n /**\n * Start a new group nesting within all namespaces.\n */\n beginGroup() {\n this.macros.beginGroup();\n }\n /**\n * End current group nesting within all namespaces.\n */\n endGroup() {\n this.macros.endGroup();\n }\n /**\n * Ends all currently nested groups (if any), restoring values before the\n * groups began. Useful in case of an error in the middle of parsing.\n */\n endGroups() {\n this.macros.endGroups();\n }\n /**\n * Returns the topmost token on the stack, without expanding it.\n * Similar in behavior to TeX's `\\futurelet`.\n */\n future() {\n if (this.stack.length === 0) {\n this.pushToken(this.lexer.lex());\n }\n return this.stack[this.stack.length - 1];\n }\n /**\n * Remove and return the next unexpanded token.\n */\n popToken() {\n this.future(); // ensure non-empty stack\n return this.stack.pop();\n }\n /**\n * Add a given token to the token stack. In particular, this get be used\n * to put back a token returned from one of the other methods.\n */\n pushToken(token) {\n this.stack.push(token);\n }\n /**\n * Append an array of tokens to the token stack.\n */\n pushTokens(tokens) {\n this.stack.push(...tokens);\n }\n /**\n * Find an macro argument without expanding tokens and append the array of\n * tokens to the token stack. Uses Token as a container for the result.\n */\n scanArgument(isOptional) {\n var start;\n var end;\n var tokens;\n if (isOptional) {\n this.consumeSpaces(); // \\@ifnextchar gobbles any space following it\n if (this.future().text !== \"[\") {\n return null;\n }\n start = this.popToken(); // don't include [ in tokens\n ({\n tokens,\n end\n } = this.consumeArg([\"]\"]));\n } else {\n ({\n tokens,\n start,\n end\n } = this.consumeArg());\n }\n // indicate the end of an argument\n this.pushToken(new Token(\"EOF\", end.loc));\n this.pushTokens(tokens);\n return new Token(\"\", SourceLocation.range(start, end));\n }\n /**\n * Consume all following space tokens, without expansion.\n */\n consumeSpaces() {\n for (;;) {\n var token = this.future();\n if (token.text === \" \") {\n this.stack.pop();\n } else {\n break;\n }\n }\n }\n /**\n * Consume an argument from the token stream, and return the resulting array\n * of tokens and start/end token.\n */\n consumeArg(delims) {\n // The argument for a delimited parameter is the shortest (possibly\n // empty) sequence of tokens with properly nested {...} groups that is\n // followed ... by this particular list of non-parameter tokens.\n // The argument for an undelimited parameter is the next nonblank\n // token, unless that token is \u2018{\u2019, when the argument will be the\n // entire {...} group that follows.\n var tokens = [];\n var isDelimited = delims && delims.length > 0;\n if (!isDelimited) {\n // Ignore spaces between arguments. As the TeXbook says:\n // \"After you have said \u2018\\def\\row#1#2{...}\u2019, you are allowed to\n // put spaces between the arguments (e.g., \u2018\\row x n\u2019), because\n // TeX doesn\u2019t use single spaces as undelimited arguments.\"\n this.consumeSpaces();\n }\n var start = this.future();\n var tok;\n var depth = 0;\n var match = 0;\n do {\n tok = this.popToken();\n tokens.push(tok);\n if (tok.text === \"{\") {\n ++depth;\n } else if (tok.text === \"}\") {\n --depth;\n if (depth === -1) {\n throw new ParseError(\"Extra }\", tok);\n }\n } else if (tok.text === \"EOF\") {\n throw new ParseError(\"Unexpected end of input in a macro argument\" + \", expected '\" + (delims && isDelimited ? delims[match] : \"}\") + \"'\", tok);\n }\n if (delims && isDelimited) {\n if ((depth === 0 || depth === 1 && delims[match] === \"{\") && tok.text === delims[match]) {\n ++match;\n if (match === delims.length) {\n // don't include delims in tokens\n tokens.splice(-match, match);\n break;\n }\n } else {\n match = 0;\n }\n }\n } while (depth !== 0 || isDelimited);\n // If the argument found ... has the form \u2018{<nested tokens>}\u2019,\n // ... the outermost braces enclosing the argument are removed\n if (start.text === \"{\" && tokens[tokens.length - 1].text === \"}\") {\n tokens.pop();\n tokens.shift();\n }\n tokens.reverse(); // to fit in with stack order\n return {\n tokens,\n start,\n end: tok\n };\n }\n /**\n * Consume the specified number of (delimited) arguments from the token\n * stream and return the resulting array of arguments.\n */\n consumeArgs(numArgs, delimiters) {\n if (delimiters) {\n if (delimiters.length !== numArgs + 1) {\n throw new ParseError(\"The length of delimiters doesn't match the number of args!\");\n }\n var delims = delimiters[0];\n for (var i = 0; i < delims.length; i++) {\n var tok = this.popToken();\n if (delims[i] !== tok.text) {\n throw new ParseError(\"Use of the macro doesn't match its definition\", tok);\n }\n }\n }\n var args = [];\n for (var _i = 0; _i < numArgs; _i++) {\n args.push(this.consumeArg(delimiters && delimiters[_i + 1]).tokens);\n }\n return args;\n }\n /**\n * Increment `expansionCount` by the specified amount.\n * Throw an error if it exceeds `maxExpand`.\n */\n countExpansion(amount) {\n this.expansionCount += amount;\n if (this.expansionCount > this.settings.maxExpand) {\n throw new ParseError(\"Too many expansions: infinite loop or \" + \"need to increase maxExpand setting\");\n }\n }\n /**\n * Expand the next token only once if possible.\n *\n * If the token is expanded, the resulting tokens will be pushed onto\n * the stack in reverse order, and the number of such tokens will be\n * returned. This number might be zero or positive.\n *\n * If not, the return value is `false`, and the next token remains at the\n * top of the stack.\n *\n * In either case, the next token will be on the top of the stack,\n * or the stack will be empty (in case of empty expansion\n * and no other tokens).\n *\n * Used to implement `expandAfterFuture` and `expandNextToken`.\n *\n * If expandableOnly, only expandable tokens are expanded and\n * an undefined control sequence results in an error.\n */\n expandOnce(expandableOnly) {\n var topToken = this.popToken();\n var name = topToken.text;\n var expansion = !topToken.noexpand ? this._getExpansion(name) : null;\n if (expansion == null || expandableOnly && expansion.unexpandable) {\n if (expandableOnly && expansion == null && name[0] === \"\\\\\" && !this.isDefined(name)) {\n throw new ParseError(\"Undefined control sequence: \" + name);\n }\n this.pushToken(topToken);\n return false;\n }\n this.countExpansion(1);\n var tokens = expansion.tokens;\n var args = this.consumeArgs(expansion.numArgs, expansion.delimiters);\n if (expansion.numArgs) {\n // paste arguments in place of the placeholders\n tokens = tokens.slice(); // make a shallow copy\n for (var i = tokens.length - 1; i >= 0; --i) {\n var tok = tokens[i];\n if (tok.text === \"#\") {\n if (i === 0) {\n throw new ParseError(\"Incomplete placeholder at end of macro body\", tok);\n }\n tok = tokens[--i]; // next token on stack\n if (tok.text === \"#\") {\n // ## \u2192 #\n tokens.splice(i + 1, 1); // drop first #\n } else if (/^[1-9]$/.test(tok.text)) {\n // replace the placeholder with the indicated argument\n tokens.splice(i, 2, ...args[+tok.text - 1]);\n } else {\n throw new ParseError(\"Not a valid argument number\", tok);\n }\n }\n }\n }\n // Concatenate expansion onto top of stack.\n this.pushTokens(tokens);\n return tokens.length;\n }\n /**\n * Expand the next token only once (if possible), and return the resulting\n * top token on the stack (without removing anything from the stack).\n * Similar in behavior to TeX's `\\expandafter\\futurelet`.\n * Equivalent to expandOnce() followed by future().\n */\n expandAfterFuture() {\n this.expandOnce();\n return this.future();\n }\n /**\n * Recursively expand first token, then return first non-expandable token.\n */\n expandNextToken() {\n for (;;) {\n if (this.expandOnce() === false) {\n // fully expanded\n var token = this.stack.pop();\n // the token after \\noexpand is interpreted as if its meaning\n // were \u2018\\relax\u2019\n if (token.treatAsRelax) {\n token.text = \"\\\\relax\";\n }\n return token;\n }\n }\n }\n /**\n * Fully expand the given macro name and return the resulting list of\n * tokens, or return `undefined` if no such macro is defined.\n */\n expandMacro(name) {\n return this.macros.has(name) ? this.expandTokens([new Token(name)]) : undefined;\n }\n /**\n * Fully expand the given token stream and return the resulting list of\n * tokens. Note that the input tokens are in reverse order, but the\n * output tokens are in forward order.\n */\n expandTokens(tokens) {\n var output = [];\n var oldStackLength = this.stack.length;\n this.pushTokens(tokens);\n while (this.stack.length > oldStackLength) {\n // Expand only expandable tokens\n if (this.expandOnce(true) === false) {\n // fully expanded\n var token = this.stack.pop();\n if (token.treatAsRelax) {\n // the expansion of \\noexpand is the token itself\n token.noexpand = false;\n token.treatAsRelax = false;\n }\n output.push(token);\n }\n }\n // Count all of these tokens as additional expansions, to prevent\n // exponential blowup from linearly many \\edef's.\n this.countExpansion(output.length);\n return output;\n }\n /**\n * Fully expand the given macro name and return the result as a string,\n * or return `undefined` if no such macro is defined.\n */\n expandMacroAsText(name) {\n var tokens = this.expandMacro(name);\n if (tokens) {\n return tokens.map(token => token.text).join(\"\");\n } else {\n return tokens;\n }\n }\n /**\n * Returns the expanded macro as a reversed array of tokens and a macro\n * argument count. Or returns `null` if no such macro.\n */\n _getExpansion(name) {\n var definition = this.macros.get(name);\n if (definition == null) {\n // mainly checking for undefined here\n return definition;\n }\n // If a single character has an associated catcode other than 13\n // (active character), then don't expand it.\n if (name.length === 1) {\n var catcode = this.lexer.catcodes[name];\n if (catcode != null && catcode !== 13) {\n return;\n }\n }\n var expansion = typeof definition === \"function\" ? definition(this) : definition;\n if (typeof expansion === \"string\") {\n var numArgs = 0;\n if (expansion.includes(\"#\")) {\n var stripped = expansion.replace(/##/g, \"\");\n while (stripped.includes(\"#\" + (numArgs + 1))) {\n ++numArgs;\n }\n }\n var bodyLexer = new Lexer(expansion, this.settings);\n var tokens = [];\n var tok = bodyLexer.lex();\n while (tok.text !== \"EOF\") {\n tokens.push(tok);\n tok = bodyLexer.lex();\n }\n tokens.reverse(); // to fit in with stack using push and pop\n var expanded = {\n tokens,\n numArgs\n };\n return expanded;\n }\n return expansion;\n }\n /**\n * Determine whether a command is currently \"defined\" (has some\n * functionality), meaning that it's a macro (in the current group),\n * a function, a symbol, or one of the special commands listed in\n * `implicitCommands`.\n */\n isDefined(name) {\n return this.macros.has(name) || functions.hasOwnProperty(name) || symbols.math.hasOwnProperty(name) || symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name);\n }\n /**\n * Determine whether a command is expandable.\n */\n isExpandable(name) {\n var macro = this.macros.get(name);\n return macro != null ? typeof macro === \"string\" || typeof macro === \"function\" || !macro.unexpandable : functions.hasOwnProperty(name) && !functions[name].primitive;\n }\n}\n\n// Helpers for Parser.js handling of Unicode (sub|super)script characters.\nvar unicodeSubRegEx = /^[\u208A\u208B\u208C\u208D\u208E\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1D62\u2C7C\u2096\u2097\u2098\u2099\u2092\u209A\u1D63\u209B\u209C\u1D64\u1D65\u2093\u1D66\u1D67\u1D68\u1D69\u1D6A]/;\nvar uSubsAndSups = Object.freeze({\n '\u208A': '+',\n '\u208B': '-',\n '\u208C': '=',\n '\u208D': '(',\n '\u208E': ')',\n '\u2080': '0',\n '\u2081': '1',\n '\u2082': '2',\n '\u2083': '3',\n '\u2084': '4',\n '\u2085': '5',\n '\u2086': '6',\n '\u2087': '7',\n '\u2088': '8',\n '\u2089': '9',\n '\\u2090': 'a',\n '\\u2091': 'e',\n '\\u2095': 'h',\n '\\u1D62': 'i',\n '\\u2C7C': 'j',\n '\\u2096': 'k',\n '\\u2097': 'l',\n '\\u2098': 'm',\n '\\u2099': 'n',\n '\\u2092': 'o',\n '\\u209A': 'p',\n '\\u1D63': 'r',\n '\\u209B': 's',\n '\\u209C': 't',\n '\\u1D64': 'u',\n '\\u1D65': 'v',\n '\\u2093': 'x',\n '\\u1D66': '\u03B2',\n '\\u1D67': '\u03B3',\n '\\u1D68': '\u03C1',\n '\\u1D69': '\\u03d5',\n '\\u1D6A': '\u03C7',\n '\u207A': '+',\n '\u207B': '-',\n '\u207C': '=',\n '\u207D': '(',\n '\u207E': ')',\n '\u2070': '0',\n '\u00B9': '1',\n '\u00B2': '2',\n '\u00B3': '3',\n '\u2074': '4',\n '\u2075': '5',\n '\u2076': '6',\n '\u2077': '7',\n '\u2078': '8',\n '\u2079': '9',\n '\\u1D2C': 'A',\n '\\u1D2E': 'B',\n '\\u1D30': 'D',\n '\\u1D31': 'E',\n '\\u1D33': 'G',\n '\\u1D34': 'H',\n '\\u1D35': 'I',\n '\\u1D36': 'J',\n '\\u1D37': 'K',\n '\\u1D38': 'L',\n '\\u1D39': 'M',\n '\\u1D3A': 'N',\n '\\u1D3C': 'O',\n '\\u1D3E': 'P',\n '\\u1D3F': 'R',\n '\\u1D40': 'T',\n '\\u1D41': 'U',\n '\\u2C7D': 'V',\n '\\u1D42': 'W',\n '\\u1D43': 'a',\n '\\u1D47': 'b',\n '\\u1D9C': 'c',\n '\\u1D48': 'd',\n '\\u1D49': 'e',\n '\\u1DA0': 'f',\n '\\u1D4D': 'g',\n '\\u02B0': 'h',\n '\\u2071': 'i',\n '\\u02B2': 'j',\n '\\u1D4F': 'k',\n '\\u02E1': 'l',\n '\\u1D50': 'm',\n '\\u207F': 'n',\n '\\u1D52': 'o',\n '\\u1D56': 'p',\n '\\u02B3': 'r',\n '\\u02E2': 's',\n '\\u1D57': 't',\n '\\u1D58': 'u',\n '\\u1D5B': 'v',\n '\\u02B7': 'w',\n '\\u02E3': 'x',\n '\\u02B8': 'y',\n '\\u1DBB': 'z',\n '\\u1D5D': '\u03B2',\n '\\u1D5E': '\u03B3',\n '\\u1D5F': '\u03B4',\n '\\u1D60': '\\u03d5',\n '\\u1D61': '\u03C7',\n '\\u1DBF': '\u03B8'\n});\n\n/* eslint no-constant-condition:0 */\n// Pre-evaluate both modules as unicodeSymbols require String.normalize()\nvar unicodeAccents = {\n \"\u0301\": {\n \"text\": \"\\\\'\",\n \"math\": \"\\\\acute\"\n },\n \"\u0300\": {\n \"text\": \"\\\\`\",\n \"math\": \"\\\\grave\"\n },\n \"\u0308\": {\n \"text\": \"\\\\\\\"\",\n \"math\": \"\\\\ddot\"\n },\n \"\u0303\": {\n \"text\": \"\\\\~\",\n \"math\": \"\\\\tilde\"\n },\n \"\u0304\": {\n \"text\": \"\\\\=\",\n \"math\": \"\\\\bar\"\n },\n \"\u0306\": {\n \"text\": \"\\\\u\",\n \"math\": \"\\\\breve\"\n },\n \"\u030C\": {\n \"text\": \"\\\\v\",\n \"math\": \"\\\\check\"\n },\n \"\u0302\": {\n \"text\": \"\\\\^\",\n \"math\": \"\\\\hat\"\n },\n \"\u0307\": {\n \"text\": \"\\\\.\",\n \"math\": \"\\\\dot\"\n },\n \"\u030A\": {\n \"text\": \"\\\\r\",\n \"math\": \"\\\\mathring\"\n },\n \"\u030B\": {\n \"text\": \"\\\\H\"\n },\n \"\u0327\": {\n \"text\": \"\\\\c\"\n }\n};\nvar unicodeSymbols = {\n \"\u00E1\": \"a\u0301\",\n \"\u00E0\": \"a\u0300\",\n \"\u00E4\": \"a\u0308\",\n \"\u01DF\": \"a\u0308\u0304\",\n \"\u00E3\": \"a\u0303\",\n \"\u0101\": \"a\u0304\",\n \"\u0103\": \"a\u0306\",\n \"\u1EAF\": \"a\u0306\u0301\",\n \"\u1EB1\": \"a\u0306\u0300\",\n \"\u1EB5\": \"a\u0306\u0303\",\n \"\u01CE\": \"a\u030C\",\n \"\u00E2\": \"a\u0302\",\n \"\u1EA5\": \"a\u0302\u0301\",\n \"\u1EA7\": \"a\u0302\u0300\",\n \"\u1EAB\": \"a\u0302\u0303\",\n \"\u0227\": \"a\u0307\",\n \"\u01E1\": \"a\u0307\u0304\",\n \"\u00E5\": \"a\u030A\",\n \"\u01FB\": \"a\u030A\u0301\",\n \"\u1E03\": \"b\u0307\",\n \"\u0107\": \"c\u0301\",\n \"\u1E09\": \"c\u0327\u0301\",\n \"\u010D\": \"c\u030C\",\n \"\u0109\": \"c\u0302\",\n \"\u010B\": \"c\u0307\",\n \"\u00E7\": \"c\u0327\",\n \"\u010F\": \"d\u030C\",\n \"\u1E0B\": \"d\u0307\",\n \"\u1E11\": \"d\u0327\",\n \"\u00E9\": \"e\u0301\",\n \"\u00E8\": \"e\u0300\",\n \"\u00EB\": \"e\u0308\",\n \"\u1EBD\": \"e\u0303\",\n \"\u0113\": \"e\u0304\",\n \"\u1E17\": \"e\u0304\u0301\",\n \"\u1E15\": \"e\u0304\u0300\",\n \"\u0115\": \"e\u0306\",\n \"\u1E1D\": \"e\u0327\u0306\",\n \"\u011B\": \"e\u030C\",\n \"\u00EA\": \"e\u0302\",\n \"\u1EBF\": \"e\u0302\u0301\",\n \"\u1EC1\": \"e\u0302\u0300\",\n \"\u1EC5\": \"e\u0302\u0303\",\n \"\u0117\": \"e\u0307\",\n \"\u0229\": \"e\u0327\",\n \"\u1E1F\": \"f\u0307\",\n \"\u01F5\": \"g\u0301\",\n \"\u1E21\": \"g\u0304\",\n \"\u011F\": \"g\u0306\",\n \"\u01E7\": \"g\u030C\",\n \"\u011D\": \"g\u0302\",\n \"\u0121\": \"g\u0307\",\n \"\u0123\": \"g\u0327\",\n \"\u1E27\": \"h\u0308\",\n \"\u021F\": \"h\u030C\",\n \"\u0125\": \"h\u0302\",\n \"\u1E23\": \"h\u0307\",\n \"\u1E29\": \"h\u0327\",\n \"\u00ED\": \"i\u0301\",\n \"\u00EC\": \"i\u0300\",\n \"\u00EF\": \"i\u0308\",\n \"\u1E2F\": \"i\u0308\u0301\",\n \"\u0129\": \"i\u0303\",\n \"\u012B\": \"i\u0304\",\n \"\u012D\": \"i\u0306\",\n \"\u01D0\": \"i\u030C\",\n \"\u00EE\": \"i\u0302\",\n \"\u01F0\": \"j\u030C\",\n \"\u0135\": \"j\u0302\",\n \"\u1E31\": \"k\u0301\",\n \"\u01E9\": \"k\u030C\",\n \"\u0137\": \"k\u0327\",\n \"\u013A\": \"l\u0301\",\n \"\u013E\": \"l\u030C\",\n \"\u013C\": \"l\u0327\",\n \"\u1E3F\": \"m\u0301\",\n \"\u1E41\": \"m\u0307\",\n \"\u0144\": \"n\u0301\",\n \"\u01F9\": \"n\u0300\",\n \"\u00F1\": \"n\u0303\",\n \"\u0148\": \"n\u030C\",\n \"\u1E45\": \"n\u0307\",\n \"\u0146\": \"n\u0327\",\n \"\u00F3\": \"o\u0301\",\n \"\u00F2\": \"o\u0300\",\n \"\u00F6\": \"o\u0308\",\n \"\u022B\": \"o\u0308\u0304\",\n \"\u00F5\": \"o\u0303\",\n \"\u1E4D\": \"o\u0303\u0301\",\n \"\u1E4F\": \"o\u0303\u0308\",\n \"\u022D\": \"o\u0303\u0304\",\n \"\u014D\": \"o\u0304\",\n \"\u1E53\": \"o\u0304\u0301\",\n \"\u1E51\": \"o\u0304\u0300\",\n \"\u014F\": \"o\u0306\",\n \"\u01D2\": \"o\u030C\",\n \"\u00F4\": \"o\u0302\",\n \"\u1ED1\": \"o\u0302\u0301\",\n \"\u1ED3\": \"o\u0302\u0300\",\n \"\u1ED7\": \"o\u0302\u0303\",\n \"\u022F\": \"o\u0307\",\n \"\u0231\": \"o\u0307\u0304\",\n \"\u0151\": \"o\u030B\",\n \"\u1E55\": \"p\u0301\",\n \"\u1E57\": \"p\u0307\",\n \"\u0155\": \"r\u0301\",\n \"\u0159\": \"r\u030C\",\n \"\u1E59\": \"r\u0307\",\n \"\u0157\": \"r\u0327\",\n \"\u015B\": \"s\u0301\",\n \"\u1E65\": \"s\u0301\u0307\",\n \"\u0161\": \"s\u030C\",\n \"\u1E67\": \"s\u030C\u0307\",\n \"\u015D\": \"s\u0302\",\n \"\u1E61\": \"s\u0307\",\n \"\u015F\": \"s\u0327\",\n \"\u1E97\": \"t\u0308\",\n \"\u0165\": \"t\u030C\",\n \"\u1E6B\": \"t\u0307\",\n \"\u0163\": \"t\u0327\",\n \"\u00FA\": \"u\u0301\",\n \"\u00F9\": \"u\u0300\",\n \"\u00FC\": \"u\u0308\",\n \"\u01D8\": \"u\u0308\u0301\",\n \"\u01DC\": \"u\u0308\u0300\",\n \"\u01D6\": \"u\u0308\u0304\",\n \"\u01DA\": \"u\u0308\u030C\",\n \"\u0169\": \"u\u0303\",\n \"\u1E79\": \"u\u0303\u0301\",\n \"\u016B\": \"u\u0304\",\n \"\u1E7B\": \"u\u0304\u0308\",\n \"\u016D\": \"u\u0306\",\n \"\u01D4\": \"u\u030C\",\n \"\u00FB\": \"u\u0302\",\n \"\u016F\": \"u\u030A\",\n \"\u0171\": \"u\u030B\",\n \"\u1E7D\": \"v\u0303\",\n \"\u1E83\": \"w\u0301\",\n \"\u1E81\": \"w\u0300\",\n \"\u1E85\": \"w\u0308\",\n \"\u0175\": \"w\u0302\",\n \"\u1E87\": \"w\u0307\",\n \"\u1E98\": \"w\u030A\",\n \"\u1E8D\": \"x\u0308\",\n \"\u1E8B\": \"x\u0307\",\n \"\u00FD\": \"y\u0301\",\n \"\u1EF3\": \"y\u0300\",\n \"\u00FF\": \"y\u0308\",\n \"\u1EF9\": \"y\u0303\",\n \"\u0233\": \"y\u0304\",\n \"\u0177\": \"y\u0302\",\n \"\u1E8F\": \"y\u0307\",\n \"\u1E99\": \"y\u030A\",\n \"\u017A\": \"z\u0301\",\n \"\u017E\": \"z\u030C\",\n \"\u1E91\": \"z\u0302\",\n \"\u017C\": \"z\u0307\",\n \"\u00C1\": \"A\u0301\",\n \"\u00C0\": \"A\u0300\",\n \"\u00C4\": \"A\u0308\",\n \"\u01DE\": \"A\u0308\u0304\",\n \"\u00C3\": \"A\u0303\",\n \"\u0100\": \"A\u0304\",\n \"\u0102\": \"A\u0306\",\n \"\u1EAE\": \"A\u0306\u0301\",\n \"\u1EB0\": \"A\u0306\u0300\",\n \"\u1EB4\": \"A\u0306\u0303\",\n \"\u01CD\": \"A\u030C\",\n \"\u00C2\": \"A\u0302\",\n \"\u1EA4\": \"A\u0302\u0301\",\n \"\u1EA6\": \"A\u0302\u0300\",\n \"\u1EAA\": \"A\u0302\u0303\",\n \"\u0226\": \"A\u0307\",\n \"\u01E0\": \"A\u0307\u0304\",\n \"\u00C5\": \"A\u030A\",\n \"\u01FA\": \"A\u030A\u0301\",\n \"\u1E02\": \"B\u0307\",\n \"\u0106\": \"C\u0301\",\n \"\u1E08\": \"C\u0327\u0301\",\n \"\u010C\": \"C\u030C\",\n \"\u0108\": \"C\u0302\",\n \"\u010A\": \"C\u0307\",\n \"\u00C7\": \"C\u0327\",\n \"\u010E\": \"D\u030C\",\n \"\u1E0A\": \"D\u0307\",\n \"\u1E10\": \"D\u0327\",\n \"\u00C9\": \"E\u0301\",\n \"\u00C8\": \"E\u0300\",\n \"\u00CB\": \"E\u0308\",\n \"\u1EBC\": \"E\u0303\",\n \"\u0112\": \"E\u0304\",\n \"\u1E16\": \"E\u0304\u0301\",\n \"\u1E14\": \"E\u0304\u0300\",\n \"\u0114\": \"E\u0306\",\n \"\u1E1C\": \"E\u0327\u0306\",\n \"\u011A\": \"E\u030C\",\n \"\u00CA\": \"E\u0302\",\n \"\u1EBE\": \"E\u0302\u0301\",\n \"\u1EC0\": \"E\u0302\u0300\",\n \"\u1EC4\": \"E\u0302\u0303\",\n \"\u0116\": \"E\u0307\",\n \"\u0228\": \"E\u0327\",\n \"\u1E1E\": \"F\u0307\",\n \"\u01F4\": \"G\u0301\",\n \"\u1E20\": \"G\u0304\",\n \"\u011E\": \"G\u0306\",\n \"\u01E6\": \"G\u030C\",\n \"\u011C\": \"G\u0302\",\n \"\u0120\": \"G\u0307\",\n \"\u0122\": \"G\u0327\",\n \"\u1E26\": \"H\u0308\",\n \"\u021E\": \"H\u030C\",\n \"\u0124\": \"H\u0302\",\n \"\u1E22\": \"H\u0307\",\n \"\u1E28\": \"H\u0327\",\n \"\u00CD\": \"I\u0301\",\n \"\u00CC\": \"I\u0300\",\n \"\u00CF\": \"I\u0308\",\n \"\u1E2E\": \"I\u0308\u0301\",\n \"\u0128\": \"I\u0303\",\n \"\u012A\": \"I\u0304\",\n \"\u012C\": \"I\u0306\",\n \"\u01CF\": \"I\u030C\",\n \"\u00CE\": \"I\u0302\",\n \"\u0130\": \"I\u0307\",\n \"\u0134\": \"J\u0302\",\n \"\u1E30\": \"K\u0301\",\n \"\u01E8\": \"K\u030C\",\n \"\u0136\": \"K\u0327\",\n \"\u0139\": \"L\u0301\",\n \"\u013D\": \"L\u030C\",\n \"\u013B\": \"L\u0327\",\n \"\u1E3E\": \"M\u0301\",\n \"\u1E40\": \"M\u0307\",\n \"\u0143\": \"N\u0301\",\n \"\u01F8\": \"N\u0300\",\n \"\u00D1\": \"N\u0303\",\n \"\u0147\": \"N\u030C\",\n \"\u1E44\": \"N\u0307\",\n \"\u0145\": \"N\u0327\",\n \"\u00D3\": \"O\u0301\",\n \"\u00D2\": \"O\u0300\",\n \"\u00D6\": \"O\u0308\",\n \"\u022A\": \"O\u0308\u0304\",\n \"\u00D5\": \"O\u0303\",\n \"\u1E4C\": \"O\u0303\u0301\",\n \"\u1E4E\": \"O\u0303\u0308\",\n \"\u022C\": \"O\u0303\u0304\",\n \"\u014C\": \"O\u0304\",\n \"\u1E52\": \"O\u0304\u0301\",\n \"\u1E50\": \"O\u0304\u0300\",\n \"\u014E\": \"O\u0306\",\n \"\u01D1\": \"O\u030C\",\n \"\u00D4\": \"O\u0302\",\n \"\u1ED0\": \"O\u0302\u0301\",\n \"\u1ED2\": \"O\u0302\u0300\",\n \"\u1ED6\": \"O\u0302\u0303\",\n \"\u022E\": \"O\u0307\",\n \"\u0230\": \"O\u0307\u0304\",\n \"\u0150\": \"O\u030B\",\n \"\u1E54\": \"P\u0301\",\n \"\u1E56\": \"P\u0307\",\n \"\u0154\": \"R\u0301\",\n \"\u0158\": \"R\u030C\",\n \"\u1E58\": \"R\u0307\",\n \"\u0156\": \"R\u0327\",\n \"\u015A\": \"S\u0301\",\n \"\u1E64\": \"S\u0301\u0307\",\n \"\u0160\": \"S\u030C\",\n \"\u1E66\": \"S\u030C\u0307\",\n \"\u015C\": \"S\u0302\",\n \"\u1E60\": \"S\u0307\",\n \"\u015E\": \"S\u0327\",\n \"\u0164\": \"T\u030C\",\n \"\u1E6A\": \"T\u0307\",\n \"\u0162\": \"T\u0327\",\n \"\u00DA\": \"U\u0301\",\n \"\u00D9\": \"U\u0300\",\n \"\u00DC\": \"U\u0308\",\n \"\u01D7\": \"U\u0308\u0301\",\n \"\u01DB\": \"U\u0308\u0300\",\n \"\u01D5\": \"U\u0308\u0304\",\n \"\u01D9\": \"U\u0308\u030C\",\n \"\u0168\": \"U\u0303\",\n \"\u1E78\": \"U\u0303\u0301\",\n \"\u016A\": \"U\u0304\",\n \"\u1E7A\": \"U\u0304\u0308\",\n \"\u016C\": \"U\u0306\",\n \"\u01D3\": \"U\u030C\",\n \"\u00DB\": \"U\u0302\",\n \"\u016E\": \"U\u030A\",\n \"\u0170\": \"U\u030B\",\n \"\u1E7C\": \"V\u0303\",\n \"\u1E82\": \"W\u0301\",\n \"\u1E80\": \"W\u0300\",\n \"\u1E84\": \"W\u0308\",\n \"\u0174\": \"W\u0302\",\n \"\u1E86\": \"W\u0307\",\n \"\u1E8C\": \"X\u0308\",\n \"\u1E8A\": \"X\u0307\",\n \"\u00DD\": \"Y\u0301\",\n \"\u1EF2\": \"Y\u0300\",\n \"\u0178\": \"Y\u0308\",\n \"\u1EF8\": \"Y\u0303\",\n \"\u0232\": \"Y\u0304\",\n \"\u0176\": \"Y\u0302\",\n \"\u1E8E\": \"Y\u0307\",\n \"\u0179\": \"Z\u0301\",\n \"\u017D\": \"Z\u030C\",\n \"\u1E90\": \"Z\u0302\",\n \"\u017B\": \"Z\u0307\",\n \"\u03AC\": \"\u03B1\u0301\",\n \"\u1F70\": \"\u03B1\u0300\",\n \"\u1FB1\": \"\u03B1\u0304\",\n \"\u1FB0\": \"\u03B1\u0306\",\n \"\u03AD\": \"\u03B5\u0301\",\n \"\u1F72\": \"\u03B5\u0300\",\n \"\u03AE\": \"\u03B7\u0301\",\n \"\u1F74\": \"\u03B7\u0300\",\n \"\u03AF\": \"\u03B9\u0301\",\n \"\u1F76\": \"\u03B9\u0300\",\n \"\u03CA\": \"\u03B9\u0308\",\n \"\u0390\": \"\u03B9\u0308\u0301\",\n \"\u1FD2\": \"\u03B9\u0308\u0300\",\n \"\u1FD1\": \"\u03B9\u0304\",\n \"\u1FD0\": \"\u03B9\u0306\",\n \"\u03CC\": \"\u03BF\u0301\",\n \"\u1F78\": \"\u03BF\u0300\",\n \"\u03CD\": \"\u03C5\u0301\",\n \"\u1F7A\": \"\u03C5\u0300\",\n \"\u03CB\": \"\u03C5\u0308\",\n \"\u03B0\": \"\u03C5\u0308\u0301\",\n \"\u1FE2\": \"\u03C5\u0308\u0300\",\n \"\u1FE1\": \"\u03C5\u0304\",\n \"\u1FE0\": \"\u03C5\u0306\",\n \"\u03CE\": \"\u03C9\u0301\",\n \"\u1F7C\": \"\u03C9\u0300\",\n \"\u038E\": \"\u03A5\u0301\",\n \"\u1FEA\": \"\u03A5\u0300\",\n \"\u03AB\": \"\u03A5\u0308\",\n \"\u1FE9\": \"\u03A5\u0304\",\n \"\u1FE8\": \"\u03A5\u0306\",\n \"\u038F\": \"\u03A9\u0301\",\n \"\u1FFA\": \"\u03A9\u0300\"\n};\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.gullet.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The functions return ParseNodes.\n */\nclass Parser {\n constructor(input, settings) {\n // Start in math mode\n this.mode = \"math\";\n // Create a new macro expander (gullet) and (indirectly via that) also a\n // new lexer (mouth) for this parser (stomach, in the language of TeX)\n this.gullet = new MacroExpander(input, settings, this.mode);\n // Store the settings for use in parsing\n this.settings = settings;\n // Count leftright depth (for \\middle errors)\n this.leftrightDepth = 0;\n this.nextToken = null;\n }\n /**\n * Checks a result to make sure it has the right type, and throws an\n * appropriate error otherwise.\n */\n expect(text, consume) {\n if (consume === void 0) {\n consume = true;\n }\n if (this.fetch().text !== text) {\n throw new ParseError(\"Expected '\" + text + \"', got '\" + this.fetch().text + \"'\", this.fetch());\n }\n if (consume) {\n this.consume();\n }\n }\n /**\n * Discards the current lookahead token, considering it consumed.\n */\n consume() {\n this.nextToken = null;\n }\n /**\n * Return the current lookahead token, or if there isn't one (at the\n * beginning, or if the previous lookahead token was consume()d),\n * fetch the next token as the new lookahead token and return it.\n */\n fetch() {\n if (this.nextToken == null) {\n this.nextToken = this.gullet.expandNextToken();\n }\n return this.nextToken;\n }\n /**\n * Switches between \"text\" and \"math\" modes.\n */\n switchMode(newMode) {\n this.mode = newMode;\n this.gullet.switchMode(newMode);\n }\n /**\n * Main parsing function, which parses an entire input.\n */\n parse() {\n if (!this.settings.globalGroup) {\n // Create a group namespace for the math expression.\n // (LaTeX creates a new group for every $...$, $$...$$, \\[...\\].)\n this.gullet.beginGroup();\n }\n // Use old \\color behavior (same as LaTeX's \\textcolor) if requested.\n // We do this within the group for the math expression, so it doesn't\n // pollute settings.macros.\n if (this.settings.colorIsTextColor) {\n this.gullet.macros.set(\"\\\\color\", \"\\\\textcolor\");\n }\n try {\n // Try to parse the input\n var parse = this.parseExpression(false);\n // If we succeeded, make sure there's an EOF at the end\n this.expect(\"EOF\");\n // End the group namespace for the expression\n if (!this.settings.globalGroup) {\n this.gullet.endGroup();\n }\n return parse;\n // Close any leftover groups in case of a parse error.\n } finally {\n this.gullet.endGroups();\n }\n }\n /**\n * Fully parse a separate sequence of tokens as a separate job.\n * Tokens should be specified in reverse order, as in a MacroDefinition.\n */\n subparse(tokens) {\n // Save the next token from the current job.\n var oldToken = this.nextToken;\n this.consume();\n // Run the new job, terminating it with an excess '}'\n this.gullet.pushToken(new Token(\"}\"));\n this.gullet.pushTokens(tokens);\n var parse = this.parseExpression(false);\n this.expect(\"}\");\n // Restore the next token from the current job.\n this.nextToken = oldToken;\n return parse;\n }\n /**\n * Parses an \"expression\", which is a list of atoms.\n *\n * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This\n * happens when functions have higher precedence than infix\n * nodes in implicit parses.\n *\n * `breakOnTokenText`: The text of the token that the expression should end\n * with, or `null` if something else should end the\n * expression.\n */\n parseExpression(breakOnInfix, breakOnTokenText) {\n var body = [];\n // Keep adding atoms to the body until we can't parse any more atoms (either\n // we reached the end, a }, or a \\right)\n while (true) {\n // Ignore spaces in math mode\n if (this.mode === \"math\") {\n this.consumeSpaces();\n }\n var lex = this.fetch();\n if (Parser.endOfExpression.has(lex.text)) {\n break;\n }\n if (breakOnTokenText && lex.text === breakOnTokenText) {\n break;\n }\n if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {\n break;\n }\n var atom = this.parseAtom(breakOnTokenText);\n if (!atom) {\n break;\n } else if (atom.type === \"internal\") {\n // Internal nodes do not appear in parse tree\n continue;\n }\n body.push(atom);\n }\n if (this.mode === \"text\") {\n this.formLigatures(body);\n }\n return this.handleInfixNodes(body);\n }\n /**\n * Rewrites infix operators such as \\over with corresponding commands such\n * as \\frac.\n *\n * There can only be one infix operator per group. If there's more than one\n * then the expression is ambiguous. This can be resolved by adding {}.\n */\n handleInfixNodes(body) {\n var overIndex = -1;\n var funcName;\n for (var i = 0; i < body.length; i++) {\n var node = body[i];\n if (node.type === \"infix\") {\n if (overIndex !== -1) {\n throw new ParseError(\"only one infix operator per group\", node.token);\n }\n overIndex = i;\n funcName = node.replaceWith;\n }\n }\n if (overIndex !== -1 && funcName) {\n var numerNode;\n var denomNode;\n var numerBody = body.slice(0, overIndex);\n var denomBody = body.slice(overIndex + 1);\n if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n numerNode = numerBody[0];\n } else {\n numerNode = {\n type: \"ordgroup\",\n mode: this.mode,\n body: numerBody\n };\n }\n if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n denomNode = denomBody[0];\n } else {\n denomNode = {\n type: \"ordgroup\",\n mode: this.mode,\n body: denomBody\n };\n }\n var _node;\n if (funcName === \"\\\\\\\\abovefrac\") {\n _node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);\n } else {\n _node = this.callFunction(funcName, [numerNode, denomNode], []);\n }\n return [_node];\n } else {\n return body;\n }\n }\n /**\n * Handle a subscript or superscript with nice errors.\n */\n handleSupSubscript(name) {\n var symbolToken = this.fetch();\n var symbol = symbolToken.text;\n this.consume();\n this.consumeSpaces(); // ignore spaces before sup/subscript argument\n // Skip over allowed internal nodes such as \\relax\n var group;\n do {\n var _group;\n group = this.parseGroup(name);\n } while (((_group = group) == null ? void 0 : _group.type) === \"internal\");\n if (!group) {\n throw new ParseError(\"Expected group after '\" + symbol + \"'\", symbolToken);\n }\n return group;\n }\n /**\n * Converts the textual input of an unsupported command into a text node\n * contained within a color node whose color is determined by errorColor\n */\n formatUnsupportedCmd(text) {\n var textordArray = [];\n for (var i = 0; i < text.length; i++) {\n textordArray.push({\n type: \"textord\",\n mode: \"text\",\n text: text[i]\n });\n }\n var textNode = {\n type: \"text\",\n mode: this.mode,\n body: textordArray\n };\n var colorNode = {\n type: \"color\",\n mode: this.mode,\n color: this.settings.errorColor,\n body: [textNode]\n };\n return colorNode;\n }\n /**\n * Parses a group with optional super/subscripts.\n */\n parseAtom(breakOnTokenText) {\n // The body of an atom is an implicit group, so that things like\n // \\left(x\\right)^2 work correctly.\n var base = this.parseGroup(\"atom\", breakOnTokenText);\n // Internal nodes (e.g. \\relax) cannot support super/subscripts.\n // Instead we will pick up super/subscripts with blank base next round.\n if ((base == null ? void 0 : base.type) === \"internal\") {\n return base;\n }\n // In text mode, we don't have superscripts or subscripts\n if (this.mode === \"text\") {\n return base;\n }\n // Note that base may be empty (i.e. null) at this point.\n var superscript;\n var subscript;\n while (true) {\n // Guaranteed in math mode, so eat any spaces first.\n this.consumeSpaces();\n // Lex the first token\n var lex = this.fetch();\n if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n // We got a limit control\n if (base && base.type === \"op\") {\n var limits = lex.text === \"\\\\limits\";\n base.limits = limits;\n base.alwaysHandleSupSub = true;\n } else if (base && base.type === \"operatorname\") {\n if (base.alwaysHandleSupSub) {\n base.limits = lex.text === \"\\\\limits\";\n }\n } else {\n throw new ParseError(\"Limit controls must follow a math operator\", lex);\n }\n this.consume();\n } else if (lex.text === \"^\") {\n // We got a superscript start\n if (superscript) {\n throw new ParseError(\"Double superscript\", lex);\n }\n superscript = this.handleSupSubscript(\"superscript\");\n } else if (lex.text === \"_\") {\n // We got a subscript start\n if (subscript) {\n throw new ParseError(\"Double subscript\", lex);\n }\n subscript = this.handleSupSubscript(\"subscript\");\n } else if (lex.text === \"'\") {\n // We got a prime\n if (superscript) {\n throw new ParseError(\"Double superscript\", lex);\n }\n var prime = {\n type: \"textord\",\n mode: this.mode,\n text: \"\\\\prime\"\n };\n // Many primes can be grouped together, so we handle this here\n var primes = [prime];\n this.consume();\n // Keep lexing tokens until we get something that's not a prime\n while (this.fetch().text === \"'\") {\n // For each one, add another prime to the list\n primes.push(prime);\n this.consume();\n }\n // If there's a superscript following the primes, combine that\n // superscript in with the primes.\n if (this.fetch().text === \"^\") {\n primes.push(this.handleSupSubscript(\"superscript\"));\n }\n // Put everything into an ordgroup as the superscript\n superscript = {\n type: \"ordgroup\",\n mode: this.mode,\n body: primes\n };\n } else if (uSubsAndSups[lex.text]) {\n // A Unicode subscript or superscript character.\n // We treat these similarly to the unicode-math package.\n // So we render a string of Unicode (sub|super)scripts the\n // same as a (sub|super)script of regular characters.\n var isSub = unicodeSubRegEx.test(lex.text);\n var subsupTokens = [];\n subsupTokens.push(new Token(uSubsAndSups[lex.text]));\n this.consume();\n // Continue fetching tokens to fill out the string.\n while (true) {\n var token = this.fetch().text;\n if (!uSubsAndSups[token]) {\n break;\n }\n if (unicodeSubRegEx.test(token) !== isSub) {\n break;\n }\n subsupTokens.unshift(new Token(uSubsAndSups[token]));\n this.consume();\n }\n // Now create a (sub|super)script.\n var body = this.subparse(subsupTokens);\n if (isSub) {\n subscript = {\n type: \"ordgroup\",\n mode: \"math\",\n body\n };\n } else {\n superscript = {\n type: \"ordgroup\",\n mode: \"math\",\n body\n };\n }\n } else {\n // If it wasn't ^, _, or ', stop parsing super/subscripts\n break;\n }\n }\n // Base must be set if superscript or subscript are set per logic above,\n // but need to check here for type check to pass.\n if (superscript || subscript) {\n // If we got either a superscript or subscript, create a supsub\n return {\n type: \"supsub\",\n mode: this.mode,\n base: base,\n sup: superscript,\n sub: subscript\n };\n } else {\n // Otherwise return the original body\n return base;\n }\n }\n /**\n * Parses an entire function, including its base and all of its arguments.\n */\n parseFunction(breakOnTokenText, name) {\n var token = this.fetch();\n var func = token.text;\n var funcData = functions[func];\n if (!funcData) {\n return null;\n }\n this.consume(); // consume command token\n if (name && name !== \"atom\" && !funcData.allowedInArgument) {\n throw new ParseError(\"Got function '\" + func + \"' with no arguments\" + (name ? \" as \" + name : \"\"), token);\n } else if (this.mode === \"text\" && !funcData.allowedInText) {\n throw new ParseError(\"Can't use function '\" + func + \"' in text mode\", token);\n } else if (this.mode === \"math\" && funcData.allowedInMath === false) {\n throw new ParseError(\"Can't use function '\" + func + \"' in math mode\", token);\n }\n var {\n args,\n optArgs\n } = this.parseArguments(func, funcData);\n return this.callFunction(func, args, optArgs, token, breakOnTokenText);\n }\n /**\n * Call a function handler with a suitable context and arguments.\n */\n callFunction(name, args, optArgs, token, breakOnTokenText) {\n var context = {\n funcName: name,\n parser: this,\n token,\n breakOnTokenText\n };\n var func = functions[name];\n if (func && func.handler) {\n return func.handler(context, args, optArgs);\n } else {\n throw new ParseError(\"No function handler for \" + name);\n }\n }\n /**\n * Parses the arguments of a function or environment\n */\n parseArguments(func,\n // Should look like \"\\name\" or \"\\begin{name}\".\n funcData) {\n var totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n if (totalArgs === 0) {\n return {\n args: [],\n optArgs: []\n };\n }\n var args = [];\n var optArgs = [];\n for (var i = 0; i < totalArgs; i++) {\n var argType = funcData.argTypes && funcData.argTypes[i];\n var isOptional = i < funcData.numOptionalArgs;\n if (\"primitive\" in funcData && funcData.primitive && argType == null ||\n // \\sqrt expands into primitive if optional argument doesn't exist\n funcData.type === \"sqrt\" && i === 1 && optArgs[0] == null) {\n argType = \"primitive\";\n }\n var arg = this.parseGroupOfType(\"argument to '\" + func + \"'\", argType, isOptional);\n if (isOptional) {\n optArgs.push(arg);\n } else if (arg != null) {\n args.push(arg);\n } else {\n // should be unreachable\n throw new ParseError(\"Null argument, please report this as a bug\");\n }\n }\n return {\n args,\n optArgs\n };\n }\n /**\n * Parses a group when the mode is changing.\n */\n parseGroupOfType(name, type, optional) {\n switch (type) {\n case \"color\":\n return this.parseColorGroup(optional);\n case \"size\":\n return this.parseSizeGroup(optional);\n case \"url\":\n return this.parseUrlGroup(optional);\n case \"math\":\n case \"text\":\n return this.parseArgumentGroup(optional, type);\n case \"hbox\":\n {\n // hbox argument type wraps the argument in the equivalent of\n // \\hbox, which is like \\text but switching to \\textstyle size.\n var group = this.parseArgumentGroup(optional, \"text\");\n return group != null ? {\n type: \"styling\",\n mode: group.mode,\n body: [group],\n style: \"text\" // simulate \\textstyle\n } : null;\n }\n case \"raw\":\n {\n var token = this.parseStringGroup(\"raw\", optional);\n return token != null ? {\n type: \"raw\",\n mode: \"text\",\n string: token.text\n } : null;\n }\n case \"primitive\":\n {\n if (optional) {\n throw new ParseError(\"A primitive argument cannot be optional\");\n }\n var _group2 = this.parseGroup(name);\n if (_group2 == null) {\n throw new ParseError(\"Expected group as \" + name, this.fetch());\n }\n return _group2;\n }\n case \"original\":\n case null:\n case undefined:\n return this.parseArgumentGroup(optional);\n default:\n throw new ParseError(\"Unknown group type as \" + name, this.fetch());\n }\n }\n /**\n * Discard any space tokens, fetching the next non-space token.\n */\n consumeSpaces() {\n while (this.fetch().text === \" \") {\n this.consume();\n }\n }\n /**\n * Parses a group, essentially returning the string formed by the\n * brace-enclosed tokens plus some position information.\n */\n parseStringGroup(modeName,\n // Used to describe the mode in error messages.\n optional) {\n var argToken = this.gullet.scanArgument(optional);\n if (argToken == null) {\n return null;\n }\n var str = \"\";\n var nextToken;\n while ((nextToken = this.fetch()).text !== \"EOF\") {\n str += nextToken.text;\n this.consume();\n }\n this.consume(); // consume the end of the argument\n argToken.text = str;\n return argToken;\n }\n /**\n * Parses a regex-delimited group: the largest sequence of tokens\n * whose concatenated strings match `regex`. Returns the string\n * formed by the tokens plus some position information.\n */\n parseRegexGroup(regex, modeName) {\n var firstToken = this.fetch();\n var lastToken = firstToken;\n var str = \"\";\n var nextToken;\n while ((nextToken = this.fetch()).text !== \"EOF\" && regex.test(str + nextToken.text)) {\n lastToken = nextToken;\n str += lastToken.text;\n this.consume();\n }\n if (str === \"\") {\n throw new ParseError(\"Invalid \" + modeName + \": '\" + firstToken.text + \"'\", firstToken);\n }\n return firstToken.range(lastToken, str);\n }\n /**\n * Parses a color description.\n */\n parseColorGroup(optional) {\n var res = this.parseStringGroup(\"color\", optional);\n if (res == null) {\n return null;\n }\n var match = /^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(res.text);\n if (!match) {\n throw new ParseError(\"Invalid color: '\" + res.text + \"'\", res);\n }\n var color = match[0];\n if (/^[0-9a-f]{6}$/i.test(color)) {\n // We allow a 6-digit HTML color spec without a leading \"#\".\n // This follows the xcolor package's HTML color model.\n // Predefined color names are all missed by this RegEx pattern.\n color = \"#\" + color;\n }\n return {\n type: \"color-token\",\n mode: this.mode,\n color\n };\n }\n /**\n * Parses a size specification, consisting of magnitude and unit.\n */\n parseSizeGroup(optional) {\n var res;\n var isBlank = false;\n // don't expand before parseStringGroup\n this.gullet.consumeSpaces();\n if (!optional && this.gullet.future().text !== \"{\") {\n res = this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/, \"size\");\n } else {\n res = this.parseStringGroup(\"size\", optional);\n }\n if (!res) {\n return null;\n }\n if (!optional && res.text.length === 0) {\n // Because we've tested for what is !optional, this block won't\n // affect \\kern, \\hspace, etc. It will capture the mandatory arguments\n // to \\genfrac and \\above.\n res.text = \"0pt\"; // Enable \\above{}\n isBlank = true; // This is here specifically for \\genfrac\n }\n var match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(res.text);\n if (!match) {\n throw new ParseError(\"Invalid size: '\" + res.text + \"'\", res);\n }\n var data = {\n number: +(match[1] + match[2]),\n // sign + magnitude, cast to number\n unit: match[3]\n };\n if (!validUnit(data)) {\n throw new ParseError(\"Invalid unit: '\" + data.unit + \"'\", res);\n }\n return {\n type: \"size\",\n mode: this.mode,\n value: data,\n isBlank\n };\n }\n /**\n * Parses an URL, checking escaped letters and allowed protocols,\n * and setting the catcode of % as an active character (as in \\hyperref).\n */\n parseUrlGroup(optional) {\n this.gullet.lexer.setCatcode(\"%\", 13); // active character\n this.gullet.lexer.setCatcode(\"~\", 12); // other character\n var res = this.parseStringGroup(\"url\", optional);\n this.gullet.lexer.setCatcode(\"%\", 14); // comment character\n this.gullet.lexer.setCatcode(\"~\", 13); // active character\n if (res == null) {\n return null;\n }\n // hyperref package allows backslashes alone in href, but doesn't\n // generate valid links in such cases; we interpret this as\n // \"undefined\" behaviour, and keep them as-is. Some browser will\n // replace backslashes with forward slashes.\n var url = res.text.replace(/\\\\([#$%&~_^{}])/g, '$1');\n return {\n type: \"url\",\n mode: this.mode,\n url\n };\n }\n /**\n * Parses an argument with the mode specified.\n */\n parseArgumentGroup(optional, mode) {\n var argToken = this.gullet.scanArgument(optional);\n if (argToken == null) {\n return null;\n }\n var outerMode = this.mode;\n if (mode) {\n // Switch to specified mode\n this.switchMode(mode);\n }\n this.gullet.beginGroup();\n var expression = this.parseExpression(false, \"EOF\");\n // TODO: find an alternative way to denote the end\n this.expect(\"EOF\"); // expect the end of the argument\n this.gullet.endGroup();\n var result = {\n type: \"ordgroup\",\n mode: this.mode,\n loc: argToken.loc,\n body: expression\n };\n if (mode) {\n // Switch mode back\n this.switchMode(outerMode);\n }\n return result;\n }\n /**\n * Parses an ordinary group, which is either a single nucleus (like \"x\")\n * or an expression in braces (like \"{x+y}\") or an implicit group, a group\n * that starts at the current position, and ends right before a higher explicit\n * group ends, or at EOF.\n */\n parseGroup(name,\n // For error reporting.\n breakOnTokenText) {\n var firstToken = this.fetch();\n var text = firstToken.text;\n var result;\n // Try to parse an open brace or \\begingroup\n if (text === \"{\" || text === \"\\\\begingroup\") {\n this.consume();\n var groupEnd = text === \"{\" ? \"}\" : \"\\\\endgroup\";\n this.gullet.beginGroup();\n // If we get a brace, parse an expression\n var expression = this.parseExpression(false, groupEnd);\n var lastToken = this.fetch();\n this.expect(groupEnd); // Check that we got a matching closing brace\n this.gullet.endGroup();\n result = {\n type: \"ordgroup\",\n mode: this.mode,\n loc: SourceLocation.range(firstToken, lastToken),\n body: expression,\n // A group formed by \\begingroup...\\endgroup is a semi-simple group\n // which doesn't affect spacing in math mode, i.e., is transparent.\n // https://tex.stackexchange.com/questions/1930/when-should-one-\n // use-begingroup-instead-of-bgroup\n semisimple: text === \"\\\\begingroup\" || undefined\n };\n } else {\n // If there exists a function with this name, parse the function.\n // Otherwise, just return a nucleus\n result = this.parseFunction(breakOnTokenText, name) || this.parseSymbol();\n if (result == null && text[0] === \"\\\\\" && !implicitCommands.hasOwnProperty(text)) {\n if (this.settings.throwOnError) {\n throw new ParseError(\"Undefined control sequence: \" + text, firstToken);\n }\n result = this.formatUnsupportedCmd(text);\n this.consume();\n }\n }\n return result;\n }\n /**\n * Form ligature-like combinations of characters for text mode.\n * This includes inputs like \"--\", \"---\", \"``\" and \"''\".\n * The result will simply replace multiple textord nodes with a single\n * character in each value by a single textord node having multiple\n * characters in its value. The representation is still ASCII source.\n * The group will be modified in place.\n */\n formLigatures(group) {\n var n = group.length - 1;\n for (var i = 0; i < n; ++i) {\n var a = group[i];\n if (a.type !== \"textord\") {\n continue;\n }\n var v = a.text;\n var next = group[i + 1];\n if (!next || next.type !== \"textord\") {\n continue;\n }\n if (v === \"-\" && next.text === \"-\") {\n var afterNext = group[i + 2];\n if (i + 1 < n && afterNext && afterNext.type === \"textord\" && afterNext.text === \"-\") {\n group.splice(i, 3, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, afterNext),\n text: \"---\"\n });\n n -= 2;\n } else {\n group.splice(i, 2, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, next),\n text: \"--\"\n });\n n -= 1;\n }\n }\n if ((v === \"'\" || v === \"`\") && next.text === v) {\n group.splice(i, 2, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, next),\n text: v + v\n });\n n -= 1;\n }\n }\n }\n /**\n * Parse a single symbol out of the string. Here, we handle single character\n * symbols and special functions like \\verb.\n */\n parseSymbol() {\n var nucleus = this.fetch();\n var text = nucleus.text;\n if (/^\\\\verb[^a-zA-Z]/.test(text)) {\n this.consume();\n var arg = text.slice(5);\n var star = arg.charAt(0) === \"*\";\n if (star) {\n arg = arg.slice(1);\n }\n // Lexer's tokenRegex is constructed to always have matching\n // first/last characters.\n if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) {\n throw new ParseError(\"\\\\verb assertion failed --\\n please report what input caused this bug\");\n }\n arg = arg.slice(1, -1); // remove first and last char\n return {\n type: \"verb\",\n mode: \"text\",\n body: arg,\n star\n };\n }\n // At this point, we should have a symbol, possibly with accents.\n // First expand any accented base symbol according to unicodeSymbols.\n if (unicodeSymbols.hasOwnProperty(text[0]) && !symbols[this.mode][text[0]]) {\n // This behavior is not strict (XeTeX-compatible) in math mode.\n if (this.settings.strict && this.mode === \"math\") {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Accented Unicode text character \\\"\" + text[0] + \"\\\" used in \" + \"math mode\", nucleus);\n }\n text = unicodeSymbols[text[0]] + text.slice(1);\n }\n // Strip off any combining characters\n var match = combiningDiacriticalMarksEndRegex.exec(text);\n if (match) {\n text = text.substring(0, match.index);\n if (text === 'i') {\n text = '\\u0131'; // dotless i, in math and text mode\n } else if (text === 'j') {\n text = '\\u0237'; // dotless j, in math and text mode\n }\n }\n // Recognize base symbol\n var symbol;\n if (symbols[this.mode][text]) {\n if (this.settings.strict && this.mode === 'math' && extraLatin.includes(text)) {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Latin-1/Unicode text character \\\"\" + text[0] + \"\\\" used in \" + \"math mode\", nucleus);\n }\n var group = symbols[this.mode][text].group;\n var loc = SourceLocation.range(nucleus);\n var s;\n if (ATOMS.hasOwnProperty(group)) {\n // TODO(ts)\n var family = group;\n s = {\n type: \"atom\",\n mode: this.mode,\n family,\n loc,\n text\n };\n } else {\n // TODO(ts)\n s = {\n type: group,\n mode: this.mode,\n loc,\n text\n };\n }\n // TODO(ts)\n symbol = s;\n } else if (text.charCodeAt(0) >= 0x80) {\n // no symbol for e.g. ^\n if (this.settings.strict) {\n if (!supportedCodepoint(text.charCodeAt(0))) {\n this.settings.reportNonstrict(\"unknownSymbol\", \"Unrecognized Unicode character \\\"\" + text[0] + \"\\\"\" + (\" (\" + text.charCodeAt(0) + \")\"), nucleus);\n } else if (this.mode === \"math\") {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Unicode text character \\\"\" + text[0] + \"\\\" used in math mode\", nucleus);\n }\n }\n // All nonmathematical Unicode characters are rendered as if they\n // are in text mode (wrapped in \\text) because that's what it\n // takes to render them in LaTeX. Setting `mode: this.mode` is\n // another natural choice (the user requested math mode), but\n // this makes it more difficult for getCharacterMetrics() to\n // distinguish Unicode characters without metrics and those for\n // which we want to simulate the letter M.\n symbol = {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(nucleus),\n text\n };\n } else {\n return null; // EOF, ^, _, {, }, etc.\n }\n this.consume();\n // Transform combining characters into accents\n if (match) {\n for (var i = 0; i < match[0].length; i++) {\n var accent = match[0][i];\n if (!unicodeAccents[accent]) {\n throw new ParseError(\"Unknown accent ' \" + accent + \"'\", nucleus);\n }\n var command = unicodeAccents[accent][this.mode] || unicodeAccents[accent].text;\n if (!command) {\n throw new ParseError(\"Accent \" + accent + \" unsupported in \" + this.mode + \" mode\", nucleus);\n }\n symbol = {\n type: \"accent\",\n mode: this.mode,\n loc: SourceLocation.range(nucleus),\n label: command,\n isStretchy: false,\n isShifty: true,\n // TODO(ts)\n base: symbol\n };\n }\n }\n // TODO(ts)\n return symbol;\n }\n}\nParser.endOfExpression = new Set([\"}\", \"\\\\endgroup\", \"\\\\end\", \"\\\\right\", \"&\"]);\n\n/**\n * Provides a single function for parsing an expression using a Parser\n * TODO(emily): Remove this\n */\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nvar parseTree = function parseTree(toParse, settings) {\n if (!(typeof toParse === 'string' || toParse instanceof String)) {\n throw new TypeError('KaTeX can only parse string typed expression');\n }\n var parser = new Parser(toParse, settings);\n // Blank out any \\df@tag to avoid spurious \"Duplicate \\tag\" errors\n delete parser.gullet.macros.current[\"\\\\df@tag\"];\n var tree = parser.parse();\n // Prevent a color definition from persisting between calls to katex.render().\n delete parser.gullet.macros.current[\"\\\\current@color\"];\n delete parser.gullet.macros.current[\"\\\\color\"];\n // If the input used \\tag, it will set the \\df@tag macro to the tag.\n // In this case, we separately parse the tag and wrap the tree.\n if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n if (!settings.displayMode) {\n throw new ParseError(\"\\\\tag works only in display equations\");\n }\n tree = [{\n type: \"tag\",\n mode: \"text\",\n body: tree,\n tag: parser.subparse([new Token(\"\\\\df@tag\")])\n }];\n }\n return tree;\n};\n\n/* eslint no-console:0 */\n/**\n * Parse and build an expression, and place that expression in the DOM node\n * given.\n */\nvar render = function render(expression, baseNode, options) {\n baseNode.textContent = \"\";\n var node = renderToDomTree(expression, options).toNode();\n baseNode.appendChild(node);\n};\n// KaTeX's styles don't work properly in quirks mode. Print out an error, and\n// disable rendering.\nif (typeof document !== \"undefined\") {\n if (document.compatMode !== \"CSS1Compat\") {\n typeof console !== \"undefined\" && console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your \" + \"website has a suitable doctype.\");\n render = function render() {\n throw new ParseError(\"KaTeX doesn't work in quirks mode.\");\n };\n }\n}\n/**\n * Parse and build an expression, and return the markup for that.\n */\nvar renderToString = function renderToString(expression, options) {\n var markup = renderToDomTree(expression, options).toMarkup();\n return markup;\n};\n/**\n * Parse an expression and return the parse tree.\n */\nvar generateParseTree = function generateParseTree(expression, options) {\n var settings = new Settings(options);\n return parseTree(expression, settings);\n};\n/**\n * If the given error is a KaTeX ParseError and options.throwOnError is false,\n * renders the invalid LaTeX as a span with hover title giving the KaTeX\n * error message. Otherwise, simply throws the error.\n */\nvar renderError = function renderError(error, expression, options) {\n if (options.throwOnError || !(error instanceof ParseError)) {\n throw error;\n }\n var node = makeSpan([\"katex-error\"], [new SymbolNode(expression)]);\n node.setAttribute(\"title\", error.toString());\n node.setAttribute(\"style\", \"color:\" + options.errorColor);\n return node;\n};\n/**\n * Generates and returns the katex build tree. This is used for advanced\n * use cases (like rendering to custom output).\n */\nvar renderToDomTree = function renderToDomTree(expression, options) {\n var settings = new Settings(options);\n try {\n var tree = parseTree(expression, settings);\n return buildTree(tree, expression, settings);\n } catch (error) {\n return renderError(error, expression, settings);\n }\n};\n/**\n * Generates and returns the katex build tree, with just HTML (no MathML).\n * This is used for advanced use cases (like rendering to custom output).\n */\nvar renderToHTMLTree = function renderToHTMLTree(expression, options) {\n var settings = new Settings(options);\n try {\n var tree = parseTree(expression, settings);\n return buildHTMLTree(tree, expression, settings);\n } catch (error) {\n return renderError(error, expression, settings);\n }\n};\nvar version = \"0.16.45\";\nvar __domTree = {\n Span,\n Anchor,\n SymbolNode,\n SvgNode,\n PathNode,\n LineNode\n};\n// CJS exports and ESM default export\nvar katex = {\n /**\n * Current KaTeX version\n */\n version,\n /**\n * Renders the given LaTeX into an HTML+MathML combination, and adds\n * it as a child to the specified DOM node.\n */\n render,\n /**\n * Renders the given LaTeX into an HTML+MathML combination string,\n * for sending to the client.\n */\n renderToString,\n /**\n * KaTeX error, usually during parsing.\n */\n ParseError,\n /**\n * The schema of Settings\n */\n SETTINGS_SCHEMA,\n /**\n * Parses the given LaTeX into KaTeX's internal parse tree structure,\n * without rendering to HTML or MathML.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __parse: generateParseTree,\n /**\n * Renders the given LaTeX into an HTML+MathML internal DOM tree\n * representation, without flattening that representation to a string.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __renderToDomTree: renderToDomTree,\n /**\n * Renders the given LaTeX into an HTML internal DOM tree representation,\n * without MathML and without flattening that representation to a string.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __renderToHTMLTree: renderToHTMLTree,\n /**\n * extends internal font metrics object with a new object\n * each key in the new object represents a font name\n */\n __setFontMetrics: setFontMetrics,\n /**\n * adds a new symbol to builtin symbols table\n */\n __defineSymbol: defineSymbol,\n /**\n * adds a new function to builtin function list,\n * which directly produce parse tree elements\n * and have their own html/mathml builders\n */\n __defineFunction: defineFunction,\n /**\n * adds a new macro to builtin macro list\n */\n __defineMacro: defineMacro,\n /**\n * Expose the dom tree node types, which can be useful for type checking nodes.\n *\n * NOTE: These methods are not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __domTree\n};\n\nexport { ParseError, SETTINGS_SCHEMA, defineFunction as __defineFunction, defineMacro as __defineMacro, defineSymbol as __defineSymbol, __domTree, generateParseTree as __parse, renderToDomTree as __renderToDomTree, renderToHTMLTree as __renderToHTMLTree, setFontMetrics as __setFontMetrics, katex as default, render, renderToString, version };\n", "/// <reference types=\"mdast-util-math\" />\n/// <reference types=\"remark-parse\" />\n/// <reference types=\"remark-stringify\" />\n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-math').ToOptions} Options\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\nimport {mathFromMarkdown, mathToMarkdown} from 'mdast-util-math'\nimport {math} from 'micromark-extension-math'\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Add support for math.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkMath(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(math(settings))\n fromMarkdownExtensions.push(mathFromMarkdown())\n toMarkdownExtensions.push(mathToMarkdown(settings))\n}\n", "/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let safeByteCutoff = 256 - (256 % alphabet.length)\n if (safeByteCutoff === 256) {\n let mask = alphabet.length - 1\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(size)\n let j = size\n while (j--) {\n id += alphabet[bytes[j] & mask]\n if (id.length >= size) return id\n }\n }\n }\n }\n let step = Math.ceil((1.6 * 256 * defaultSize) / safeByteCutoff)\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n if (bytes[j] < safeByteCutoff) {\n id += alphabet[bytes[j] % alphabet.length]\n if (id.length >= size) return id\n }\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "import type {\n Cleanup,\n Ctx,\n MilkdownPlugin,\n SliceType,\n TimerType,\n} from '@milkdown/ctx'\n\nimport { createTimer } from '@milkdown/ctx'\nimport { customAlphabet } from 'nanoid'\n\n/// @internal\nexport const nanoid = customAlphabet('abcedfghicklmn', 10)\n\n/// @internal\nexport type WithTimer<T> = T & { timer: TimerType }\n\n/// @internal\nexport function addTimer<\n T extends MilkdownPlugin,\n PluginWithTimer extends T = WithTimer<T>,\n>(\n runner: (\n ctx: Ctx,\n plugin: PluginWithTimer,\n done: () => void\n ) => Promise<void | Cleanup>,\n injectTo: SliceType<TimerType[], string>,\n timerName?: string\n): PluginWithTimer {\n const timer = createTimer(timerName || nanoid())\n let doneCalled = false\n\n const plugin: MilkdownPlugin = (ctx) => {\n ctx.record(timer)\n ctx.update(injectTo, (x) => x.concat(timer))\n\n return async () => {\n const done = () => {\n ctx.done(timer)\n doneCalled = true\n }\n\n const cleanup = await runner(ctx, <PluginWithTimer>plugin, done)\n\n if (!doneCalled) ctx.done(timer)\n\n return () => {\n ctx.update(injectTo, (x) => x.filter((y) => y !== timer))\n ctx.clearTimer(timer)\n if (cleanup) {\n const result = cleanup()\n if (result && 'then' in result) {\n result.catch(console.error)\n }\n }\n }\n }\n }\n ;(<T & { timer: TimerType }>plugin).timer = timer\n\n return <PluginWithTimer>plugin\n}\n", "import type { Cmd, CmdKey } from '@milkdown/core'\nimport type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n CommandsReady,\n commandsCtx,\n commandsTimerCtx,\n createCmdKey,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Command<T> = MilkdownPlugin & {\n run: (payload?: T) => boolean\n key: CmdKey<T>\n}\n\n/// Create a command plugin. The command will be registered in the `commandsCtx` and can be called by other parts of the editor.\n/// It takes a key and a factory function. The factory function will be called when the plugin is created.\n/// The factory should return a function that will be called when the command is executed.\n/// The function should receive at **most one parameter**, which is the payload of the command.\n/// And the payload should always be **optional**.\n///\n/// ```ts\n/// import { setBlockType } from '@milkdown/prose/commands'\n///\n/// const commandPlugin = $command('SetAsHeading', (ctx) => {\n/// return (level = 1) => setBlockType(headingSchema.type(), { level });\n/// });\n/// ```\n///\n/// Additional property:\n/// - `key`: The key of the command.\n/// - `run`: The function to run the command.\n///\n/// You can use `callCommand` in `editor.action` to call the command.\n///\n/// ```ts\n/// import { callCommand } from '@milkdown/utils';\n/// const editor = Editor.make().use(/* some plugins */).use(commandPlugin).create();\n///\n/// editor.action(callCommand(commandPlugin.key, 3));\n/// ```\nexport function $command<T, K extends string>(\n key: K,\n cmd: (ctx: Ctx) => Cmd<T>\n): $Command<T> {\n const cmdKey = createCmdKey<T>(key)\n\n const plugin: MilkdownPlugin = (ctx) => async () => {\n ;(<$Command<T>>plugin).key = cmdKey\n await ctx.wait(CommandsReady)\n const command = cmd(ctx)\n ctx.get(commandsCtx).create(cmdKey, command)\n ;(<$Command<T>>plugin).run = (payload?: T) =>\n ctx.get(commandsCtx).call(key, payload)\n\n return () => {\n ctx.get(commandsCtx).remove(cmdKey)\n }\n }\n\n return <$Command<T>>plugin\n}\n\n/// The async version for `$command`. You can use `await` in the factory when creating the command.\n/// ```ts\n/// const commandPlugin = $commandASync('LoadRemoteDoc', (ctx) => {\n/// return async (url = 'my-remote-api') => {\n/// const doc = await LoadRemoteDoc(url);\n/// return addDoc(doc);\n/// }\n/// });\n/// ```\n///\n/// Additional property:\n/// - `key`: The key of the command.\n/// - `run`: The function to run the command.\n/// - `timer`: The timer which will be resolved when the command is ready.\nexport function $commandAsync<T, K extends string>(\n key: K,\n cmd: (ctx: Ctx) => Promise<Cmd<T>>,\n timerName?: string\n) {\n const cmdKey = createCmdKey<T>(key)\n return addTimer<$Command<T>>(\n async (ctx, plugin) => {\n await ctx.wait(CommandsReady)\n const command = await cmd(ctx)\n ctx.get(commandsCtx).create(cmdKey, command)\n ;(<$Command<T>>plugin).run = (payload?: T) =>\n ctx.get(commandsCtx).call(key, payload)\n ;(<$Command<T>>plugin).key = cmdKey\n return () => {\n ctx.get(commandsCtx).remove(cmdKey)\n }\n },\n commandsTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { InputRule } from '@milkdown/prose/inputrules'\n\nimport { SchemaReady, editorStateTimerCtx, inputRulesCtx } from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $InputRule = MilkdownPlugin & {\n inputRule: InputRule\n}\n\n/// Create an input rule plugin.\n/// It takes a factory function which returns a [prosemirror input rule](https://prosemirror.net/docs/ref/#inputrules.InputRule).\n///\n/// Additional property:\n/// - `inputRule`: The prosemirror input rule created.\nexport function $inputRule(inputRule: (ctx: Ctx) => InputRule): $InputRule {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n const ir = inputRule(ctx)\n ctx.update(inputRulesCtx, (irs) => [...irs, ir])\n ;(<$InputRule>plugin).inputRule = ir\n\n return () => {\n ctx.update(inputRulesCtx, (irs) => irs.filter((x) => x !== ir))\n }\n }\n\n return <$InputRule>plugin\n}\n\n/// The async version for `$inputRule`. You can use `await` in the factory when creating the input rule.\n///\n/// Additional property:\n/// - `inputRule`: The prosemirror input rule created.\n/// - `timer`: The timer which will be resolved when the input rule is ready.\nexport function $inputRuleAsync(\n inputRule: (ctx: Ctx) => Promise<InputRule>,\n timerName?: string\n) {\n return addTimer<$InputRule>(\n async (ctx, plugin) => {\n await ctx.wait(SchemaReady)\n const ir = await inputRule(ctx)\n ctx.update(inputRulesCtx, (irs) => [...irs, ir])\n plugin.inputRule = ir\n return () => {\n ctx.update(inputRulesCtx, (irs) => irs.filter((x) => x !== ir))\n }\n },\n editorStateTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n pasteRulesCtx,\n pasteRulesTimerCtx,\n SchemaReady,\n type PasteRule,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $PasteRule = MilkdownPlugin & {\n pasteRule: PasteRule\n}\n\n/// Create a paste rule plugin.\n/// It takes a factory function which returns a paste rule.\n///\n/// Additional property:\n/// - `pasteRule`: The paste rule created.\nexport function $pasteRule(pasteRule: (ctx: Ctx) => PasteRule): $PasteRule {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n const pr = pasteRule(ctx)\n ctx.update(pasteRulesCtx, (prs) => [...prs, pr])\n ;(<$PasteRule>plugin).pasteRule = pr\n\n return () => {\n ctx.update(pasteRulesCtx, (prs) => prs.filter((x) => x !== pr))\n }\n }\n\n return <$PasteRule>plugin\n}\n\n/// The async version for `$pasteRule`. You can use `await` in the factory when creating the paste rule.\n///\n/// Additional property:\n/// - `pasteRule`: The paste rule created.\n/// - `timer`: The timer which will be resolved when the paste rule is ready.\nexport function $pasteRuleAsync(\n pasteRule: (ctx: Ctx) => Promise<PasteRule>,\n timerName?: string\n) {\n return addTimer<$PasteRule>(\n async (ctx, plugin) => {\n await ctx.wait(SchemaReady)\n const pr = await pasteRule(ctx)\n ctx.update(pasteRulesCtx, (prs) => [...prs, pr])\n plugin.pasteRule = pr\n return () => {\n ctx.update(pasteRulesCtx, (prs) => prs.filter((x) => x !== pr))\n }\n },\n pasteRulesTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { MarkType } from '@milkdown/prose/model'\nimport type { MarkSchema } from '@milkdown/transformer'\n\nimport { marksCtx, schemaCtx, schemaTimerCtx } from '@milkdown/core'\nimport { missingMarkInSchema } from '@milkdown/exception'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Mark = MilkdownPlugin & {\n id: string\n schema: MarkSchema\n type: (ctx: Ctx) => MarkType\n}\n\n/// Create a mark plugin.\n/// It takes a mark id and a factory function.\n/// The factory should return a function that returns a [mark schema](/transformer#interface-markschema).\n///\n/// Additional property:\n/// - `id`: The id of the mark.\n/// - `schema`: The mark schema created.\n/// - `type`: A function that will return the [prosemirror mark type](https://prosemirror.net/docs/ref/#model.MarkType).\nexport function $mark(id: string, schema: (ctx: Ctx) => MarkSchema): $Mark {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n const markSchema = schema(ctx)\n ctx.update(marksCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, markSchema] as [string, MarkSchema],\n ])\n ;(<$Mark>plugin).id = id\n ;(<$Mark>plugin).schema = markSchema\n\n return () => {\n ctx.update(marksCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n }\n ;(<$Mark>plugin).type = (ctx) => {\n const markType = ctx.get(schemaCtx).marks[id]\n if (!markType) throw missingMarkInSchema(id)\n return markType\n }\n\n return <$Mark>plugin\n}\n\n/// The async version for `$mark`. You can use `await` in the factory when creating the mark schema.\n///\n/// Additional property:\n/// - `id`: The id of the mark.\n/// - `schema`: The mark schema created.\n/// - `type`: A function that will return the [prosemirror mark type](https://prosemirror.net/docs/ref/#model.MarkType).\n/// - `timer`: The timer which will be resolved when the mark schema is ready.\nexport function $markAsync(\n id: string,\n schema: (ctx: Ctx) => Promise<MarkSchema>,\n timerName?: string\n) {\n const plugin = addTimer<$Mark>(\n async (ctx, plugin, done) => {\n const markSchema = await schema(ctx)\n ctx.update(marksCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, markSchema] as [string, MarkSchema],\n ])\n\n plugin.id = id\n plugin.schema = markSchema\n done()\n\n return () => {\n ctx.update(marksCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n },\n schemaTimerCtx,\n timerName\n )\n\n plugin.type = (ctx) => {\n const markType = ctx.get(schemaCtx).marks[id]\n if (!markType) throw missingMarkInSchema(id)\n return markType\n }\n\n return plugin\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { NodeType } from '@milkdown/prose/model'\nimport type { NodeSchema } from '@milkdown/transformer'\n\nimport { nodesCtx, schemaCtx, schemaTimerCtx } from '@milkdown/core'\nimport { missingNodeInSchema } from '@milkdown/exception'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Node = MilkdownPlugin & {\n id: string\n schema: NodeSchema\n type: (ctx: Ctx) => NodeType\n}\n\n/// Create a node plugin.\n/// It takes a node id and a factory function.\n/// The factory should return a function that returns a [node schema](/transformer#interface-nodeschema).\n///\n/// Additional property:\n/// - `id`: The id of the node.\n/// - `schema`: The node schema created.\n/// - `type`: A function that will return the [prosemirror node type](https://prosemirror.net/docs/ref/#model.NodeType).\nexport function $node(id: string, schema: (ctx: Ctx) => NodeSchema): $Node {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n const nodeSchema = schema(ctx)\n ctx.update(nodesCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, nodeSchema] as [string, NodeSchema],\n ])\n ;(<$Node>plugin).id = id\n ;(<$Node>plugin).schema = nodeSchema\n\n return () => {\n ctx.update(nodesCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n }\n\n ;(<$Node>plugin).type = (ctx) => {\n const nodeType = ctx.get(schemaCtx).nodes[id]\n if (!nodeType) throw missingNodeInSchema(id)\n\n return nodeType\n }\n\n return <$Node>plugin\n}\n\n/// The async version for `$node`. You can use `await` in the factory when creating the node schema.\n///\n/// Additional property:\n/// - `id`: The id of the node.\n/// - `schema`: The node schema created.\n/// - `type`: A function that will return the [prosemirror node type](https://prosemirror.net/docs/ref/#model.NodeType).\n/// - `timer`: The timer which will be resolved when the node schema is ready.\nexport function $nodeAsync(\n id: string,\n schema: (ctx: Ctx) => Promise<NodeSchema>,\n timerName?: string\n) {\n const plugin = addTimer<$Node>(\n async (ctx, plugin, done) => {\n const nodeSchema = await schema(ctx)\n ctx.update(nodesCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, nodeSchema] as [string, NodeSchema],\n ])\n\n plugin.id = id\n plugin.schema = nodeSchema\n done()\n\n return () => {\n ctx.update(nodesCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n },\n schemaTimerCtx,\n timerName\n )\n\n plugin.type = (ctx) => {\n const nodeType = ctx.get(schemaCtx).nodes[id]\n if (!nodeType) throw missingNodeInSchema(id)\n\n return nodeType\n }\n\n return plugin\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { Plugin, PluginKey } from '@milkdown/prose/state'\n\nimport {\n SchemaReady,\n editorStateTimerCtx,\n prosePluginsCtx,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Prose = MilkdownPlugin & {\n plugin: () => Plugin\n key: () => PluginKey | undefined\n}\n\n/// Create a milkdown wrapper for [prosemirror plugin](https://prosemirror.net/docs/ref/#state.Plugin).\n/// It takes a factory function which returns a [prosemirror plugin](https://prosemirror.net/docs/ref/#state.Plugin).\n///\n/// Additional property:\n/// - `plugin`: The prosemirror plugin created.\n/// - `key`: The [prosemirror plugin key](https://prosemirror.net/docs/ref/#state.PluginKey) of the plugin.\nexport function $prose(prose: (ctx: Ctx) => Plugin): $Prose {\n let prosePlugin: Plugin | undefined\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n prosePlugin = prose(ctx)\n ctx.update(prosePluginsCtx, (ps) => [...ps, prosePlugin!])\n\n return () => {\n ctx.update(prosePluginsCtx, (ps) => ps.filter((x) => x !== prosePlugin))\n }\n }\n ;(<$Prose>plugin).plugin = () => prosePlugin!\n ;(<$Prose>plugin).key = () => prosePlugin!.spec.key\n\n return <$Prose>plugin\n}\n\n/// The async version for `$prose`. You can use `await` in the factory when creating the plugin.\n///\n/// Additional property:\n/// - `plugin`: The prosemirror plugin created.\n/// - `key`: The [prosemirror plugin key](https://prosemirror.net/docs/ref/#state.PluginKey) of the plugin.\n/// - `timer`: The timer which will be resolved when the plugin is ready.\nexport function $proseAsync(\n prose: (ctx: Ctx) => Promise<Plugin>,\n timerName?: string\n) {\n let prosePlugin: Plugin | undefined\n const plugin = addTimer<$Prose>(\n async (ctx) => {\n await ctx.wait(SchemaReady)\n prosePlugin = await prose(ctx)\n ctx.update(prosePluginsCtx, (ps) => [...ps, prosePlugin!])\n\n return () => {\n ctx.update(prosePluginsCtx, (ps) => ps.filter((x) => x !== prosePlugin))\n }\n },\n editorStateTimerCtx,\n timerName\n )\n\n plugin.plugin = () => prosePlugin!\n plugin.key = () => prosePlugin!.spec.key\n\n return plugin\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { Command } from '@milkdown/prose/state'\n\nimport {\n KeymapReady,\n editorStateTimerCtx,\n keymapCtx,\n type KeymapItem,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type Keymap = Record<string, Command | KeymapItem>\n\n/// @internal\nexport type $Shortcut = MilkdownPlugin & {\n keymap: Keymap\n}\n\n/// Create a shortcut for the editor.\n/// It takes a factory function which returns a [prosemirror keymap](https://prosemirror.net/docs/ref/#keymap).\n///\n/// Additional property:\n/// - `keymap`: The prosemirror keymap created.\nexport function $shortcut(shortcut: (ctx: Ctx) => Keymap): $Shortcut {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(KeymapReady)\n const km = ctx.get(keymapCtx)\n const keymap = shortcut(ctx)\n const dispose = km.addObjectKeymap(keymap)\n ;(<$Shortcut>plugin).keymap = keymap\n\n return () => {\n dispose()\n }\n }\n\n return <$Shortcut>plugin\n}\n\n/// The async version for `$shortcut`. You can use `await` in the factory when creating the keymap.\n///\n/// Additional property:\n/// - `keymap`: The prosemirror keymap created.\n/// - `timer`: The timer which will be resolved when the plugin is ready.\nexport function $shortcutAsync(\n shortcut: (ctx: Ctx) => Promise<Keymap>,\n timerName?: string\n) {\n return addTimer<$Shortcut>(\n async (ctx, plugin) => {\n await ctx.wait(KeymapReady)\n const km = ctx.get(keymapCtx)\n const keymap = await shortcut(ctx)\n const dispose = km.addObjectKeymap(keymap)\n plugin.keymap = keymap\n\n return () => {\n dispose()\n }\n },\n editorStateTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type {\n MarkViewConstructor,\n NodeViewConstructor,\n} from '@milkdown/prose/view'\n\nimport {\n SchemaReady,\n editorViewTimerCtx,\n markViewCtx,\n nodeViewCtx,\n} from '@milkdown/core'\nimport { NodeType } from '@milkdown/prose/model'\n\nimport type { $Mark, $Node } from '.'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $View<\n T extends $Node | $Mark,\n V extends NodeViewConstructor | MarkViewConstructor,\n> = MilkdownPlugin & {\n view: V\n type: T\n}\n\n/// @internal\nexport type GetConstructor<T extends $Node | $Mark> = T extends $Node\n ? NodeViewConstructor\n : T extends $Mark\n ? MarkViewConstructor\n : NodeViewConstructor | MarkViewConstructor\n\n/// Create a [prosemirror node/mark view](https://prosemirror.net/docs/ref/#view.NodeView) plugin.\n/// It takes two arguments\n/// - `type`: The node/mark plugin that needs to add a view.\n/// - `view`: The factory that creates the view. It should return a function that returns a [node/mark view constructor](https://prosemirror.net/docs/ref/#view.NodeView).\n///\n/// Additional property:\n/// - `view`: The view created.\n/// - `type`: The node/mark plugin that needs to add a view.\nexport function $view<\n T extends $Node | $Mark,\n V extends NodeViewConstructor | MarkViewConstructor = GetConstructor<T>,\n>(type: T, view: (ctx: Ctx) => V): $View<T, V> {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n const v = view(ctx)\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, NodeViewConstructor],\n ])\n else\n ctx.update(markViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, MarkViewConstructor],\n ])\n ;(<$View<T, V>>plugin).view = v\n ;(<$View<T, V>>plugin).type = type\n\n return () => {\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n else ctx.update(markViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n }\n }\n\n return <$View<T, V>>plugin\n}\n\n/// The async version for `$view`. You can use `await` in the factory when creating the view.\n///\n/// Additional property:\n/// - `view`: The view created.\n/// - `type`: The node/mark plugin that needs to add a view.\n/// - `timer`: The timer which will be resolved when the view is ready.\nexport function $viewAsync<\n T extends $Node | $Mark,\n V extends NodeViewConstructor | MarkViewConstructor = GetConstructor<T>,\n>(type: T, view: (ctx: Ctx) => Promise<V>, timerName?: string) {\n return addTimer<$View<T, V>>(\n async (ctx, plugin) => {\n await ctx.wait(SchemaReady)\n const v = await view(ctx)\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, NodeViewConstructor],\n ])\n else\n ctx.update(markViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, MarkViewConstructor],\n ])\n\n plugin.view = v\n plugin.type = type\n\n return () => {\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n else ctx.update(markViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n }\n },\n editorViewTimerCtx,\n timerName\n )\n}\n", "import type { MilkdownPlugin, SliceType } from '@milkdown/ctx'\n\nimport { createSlice } from '@milkdown/ctx'\n\n/// @internal\nexport type $Ctx<T, N extends string> = MilkdownPlugin & {\n key: SliceType<T, N>\n}\n\n/// Create a slice plugin. The plugin will be registered in the `ctx` and can be accessed by other parts of the editor.\n/// ```ts\n/// const counterCtx = $ctx(0, 'counter');\n/// ```\n///\n/// Additional property:\n/// - `key`: The key of the slice.\nexport function $ctx<T, N extends string>(value: T, name: N): $Ctx<T, N> {\n const slice = createSlice(value, name)\n const plugin: $Ctx<T, N> = (ctx) => {\n ctx.inject(slice)\n return () => {\n return () => {\n ctx.remove(slice)\n }\n }\n }\n\n plugin.key = slice\n\n return plugin\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { NodeSchema } from '@milkdown/transformer'\n\nimport type { $Ctx } from '../$ctx'\nimport type { $Node } from '../$node'\n\nimport { $ctx } from '../$ctx'\nimport { $node } from '../$node'\n\n/// @internal\nexport type GetNodeSchema = (ctx: Ctx) => NodeSchema\n\n/// @internal\nexport type $NodeSchema<T extends string> = [\n schemaCtx: $Ctx<GetNodeSchema, T>,\n schema: $Node,\n] & {\n id: $Node['id']\n type: $Node['type']\n node: $Node\n ctx: $Ctx<GetNodeSchema, T>\n key: $Ctx<GetNodeSchema, T>['key']\n extendSchema: (\n handler: (prev: GetNodeSchema) => GetNodeSchema\n ) => $NodeSchema<T>\n}\n\n/// Create a plugin for node schema.\n/// The first parameter is the id of the node schema.\n/// The second parameter is the function that returns the node schema.\n///\n/// The function will return a plugin with additional properties:\n/// - `id`: The id of the node schema.\n/// - `type`: A function witch will return the type of the node schema.\n/// - `ctx`: The context of the node schema.\n/// - `node`: The node schema plugin.\n/// - `schema`: The node schema.\n/// - `key`: The key of slice which contains the node schema factory.\n/// - `extendSchema`: A function witch will return a plugin that can extend the node schema.\nexport function $nodeSchema<T extends string>(\n id: T,\n schema: GetNodeSchema\n): $NodeSchema<T> {\n const schemaCtx = $ctx(schema, id)\n\n const nodeSchema = $node(id, (ctx) => {\n const userSchema = ctx.get(schemaCtx.key)\n return userSchema(ctx)\n })\n\n const result = [schemaCtx, nodeSchema] as $NodeSchema<T>\n result.id = nodeSchema.id\n result.node = nodeSchema\n\n result.type = (ctx: Ctx) => nodeSchema.type(ctx)\n result.ctx = schemaCtx\n result.key = schemaCtx.key\n result.extendSchema = (handler) => {\n const nextSchema = handler(schema)\n\n return $nodeSchema(id, nextSchema)\n }\n\n return result\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { MarkSchema } from '@milkdown/transformer'\n\nimport type { $Ctx } from '../$ctx'\nimport type { $Mark } from '../$mark'\n\nimport { $ctx } from '../$ctx'\nimport { $mark } from '../$mark'\n\n/// @internal\nexport type GetMarkSchema = (ctx: Ctx) => MarkSchema\n\n/// @internal\nexport type $MarkSchema<T extends string> = [\n schemaCtx: $Ctx<GetMarkSchema, T>,\n schema: $Mark,\n] & {\n id: $Mark['id']\n type: $Mark['type']\n mark: $Mark\n ctx: $Ctx<GetMarkSchema, T>\n key: $Ctx<GetMarkSchema, T>['key']\n extendSchema: (\n handler: (prev: GetMarkSchema) => GetMarkSchema\n ) => $MarkSchema<T>\n}\n\n/// Create a plugin for mark schema.\n/// The first parameter is the id of the mark schema.\n/// The second parameter is the function that returns the mark schema.\n///\n/// The function will return a plugin with additional properties:\n/// - `id`: The id of the mark schema.\n/// - `type`: A function witch will return the type of the mark schema.\n/// - `ctx`: The context of the mark schema.\n/// - `mark`: The mark schema plugin.\n/// - `schema`: The mark schema.\n/// - `key`: The key of slice which contains the mark schema factory.\n/// - `extendSchema`: A function witch will return a plugin that can extend the mark schema.\nexport function $markSchema<T extends string>(\n id: T,\n schema: GetMarkSchema\n): $MarkSchema<T> {\n const schemaCtx = $ctx(schema, id)\n\n const markSchema = $mark(id, (ctx) => {\n const userSchema = ctx.get(schemaCtx.key)\n return userSchema(ctx)\n })\n\n const result = [schemaCtx, markSchema] as $MarkSchema<T>\n result.id = markSchema.id\n result.mark = markSchema\n\n result.type = (ctx: Ctx) => markSchema.type(ctx)\n result.ctx = schemaCtx\n result.key = schemaCtx.key\n result.extendSchema = (handler) => {\n const nextSchema = handler(schema)\n\n return $markSchema(id, nextSchema)\n }\n\n return result\n}\n", "import type { Ctx, SliceType } from '@milkdown/ctx'\nimport type { Command } from '@milkdown/prose/state'\n\nimport type { $Ctx } from '../$ctx'\nimport type { $Shortcut, Keymap } from '../$shortcut'\n\nimport { $ctx } from '../$ctx'\nimport { $shortcut } from '../$shortcut'\n\n/// @internal\nexport type KeymapConfig<K extends string> = Record<\n K,\n {\n shortcuts: string | string[]\n priority?: number\n }\n>\n\n/// @internal\nexport interface KeymapItem {\n shortcuts: string | string[]\n priority?: number\n command: (ctx: Ctx) => Command\n}\n\n/// @internal\nexport type UserKeymapConfig<Key extends string> = Record<Key, KeymapItem>\n\n/// @internal\nexport type $UserKeymap<N extends string, Key extends string> = [\n $Ctx<KeymapConfig<Key>, `${N}Keymap`>,\n $Shortcut,\n] & {\n key: SliceType<KeymapConfig<Key>, `${N}Keymap`>\n keymap: Keymap\n ctx: $Ctx<KeymapConfig<Key>, `${N}Keymap`>\n shortcuts: $Shortcut\n}\n\n/// Create a keymap which can be customized by user.\n/// It takes two arguments:\n/// - `name`: The name of the keymap.\n/// - `userKeymap`: The keymap config which contains the shortcuts and the command.\nexport function $useKeymap<N extends string, Key extends string>(\n name: N,\n userKeymap: UserKeymapConfig<Key>\n) {\n const key = Object.fromEntries(\n Object.entries<KeymapItem>(userKeymap).map(\n ([key, { shortcuts, priority }]) => {\n return [key, { shortcuts, priority }]\n }\n )\n ) as KeymapConfig<Key>\n\n const keymapDef = $ctx<KeymapConfig<Key>, `${N}Keymap`>(key, `${name}Keymap`)\n\n const shortcuts = $shortcut((ctx) => {\n const keys = ctx.get(keymapDef.key)\n\n const keymapTuple = Object.entries<KeymapItem>(userKeymap).flatMap(\n ([key, { command }]) => {\n const target = keys[key as Key]\n const targetKeys = [target.shortcuts].flat()\n const priority = target.priority\n\n return targetKeys.map(\n (targetKey) =>\n [\n targetKey,\n {\n key: targetKey,\n onRun: command,\n priority,\n },\n ] as const\n )\n }\n )\n\n return Object.fromEntries(keymapTuple)\n })\n\n const result = [keymapDef, shortcuts] as $UserKeymap<N, Key>\n result.ctx = keymapDef\n result.shortcuts = shortcuts\n result.key = keymapDef.key\n result.keymap = shortcuts.keymap\n\n return result\n}\n", "import type { Mark, Node } from '@milkdown/prose/model'\n\nimport type { $Ctx } from '../$ctx'\n\nimport { $ctx } from '../$ctx'\n\n/// @internal\nexport type $NodeAttr = $Ctx<\n (node: Node) => Record<string, any>,\n `${string}Attr`\n>\n\n/// Create a slice which contains the attributes for node schema.\nexport const $nodeAttr = (\n name: string,\n value: (node: Node) => Record<string, any> = () => ({})\n): $NodeAttr => $ctx(value, `${name}Attr`)\n\n/// @internal\nexport type $MarkAttr = $Ctx<\n (node: Mark) => Record<string, any>,\n `${string}Attr`\n>\n\n/// Create a slice which contains the attributes for mark schema.\nexport const $markAttr = (\n name: string,\n value: (mark: Mark) => Record<string, any> = () => ({})\n): $MarkAttr => $ctx(value, `${name}Attr`)\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { RemarkPlugin, RemarkPluginRaw } from '@milkdown/transformer'\n\nimport { InitReady, remarkPluginsCtx } from '@milkdown/core'\n\nimport type { $Ctx } from '../$ctx'\n\nimport { $ctx } from '../$ctx'\n\n/// @internal\nexport type $Remark<Id extends string, Options> = [\n optionsCtx: $Ctx<Options, Id>,\n plugin: MilkdownPlugin,\n] & {\n id: Id\n plugin: MilkdownPlugin\n options: $Ctx<Options, Id>\n}\n\n/// Create a milkdown wrapper for [remark plugin](https://github.com/remarkjs/remark/blob/main/doc/plugins.md).\n/// It takes a factory function which returns a [remark plugin](https://github.com/remarkjs/remark/blob/main/doc/plugins.md).\n///\n/// Additional property:\n/// - `id`: The id of the remark plugin.\n/// - `plugin`: The remark plugin created.\n/// - `options`: The ctx contains the options of the remark plugin.\nexport function $remark<Id extends string, Options>(\n id: Id,\n remark: (ctx: Ctx) => RemarkPluginRaw<Options>,\n initialOptions?: Options\n): $Remark<Id, Options> {\n const options = $ctx<Options, Id>(initialOptions ?? ({} as Options), id)\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(InitReady)\n const re = remark(ctx)\n const remarkPlugin: RemarkPlugin<Options> = {\n plugin: re,\n options: ctx.get(options.key),\n }\n ctx.update(remarkPluginsCtx, (rp) => [...rp, remarkPlugin as RemarkPlugin])\n\n return () => {\n ctx.update(remarkPluginsCtx, (rp) => rp.filter((x) => x !== remarkPlugin))\n }\n }\n\n const result = [options, plugin] as $Remark<Id, Options>\n result.id = id\n result.plugin = plugin\n result.options = options\n\n return result\n}\n", "import type { CmdKey } from '@milkdown/core'\nimport type { Ctx } from '@milkdown/ctx'\n\nimport { commandsCtx } from '@milkdown/core'\n\ntype InferParams<T> = T extends CmdKey<infer U> ? U : never\n\n/// Call a command. You can pass the command key and the payload to the macro.\nexport function callCommand<T extends CmdKey<any>>(\n slice: string,\n payload?: InferParams<T>\n): (ctx: Ctx) => boolean\nexport function callCommand<T>(\n slice: CmdKey<T>,\n payload?: T\n): (ctx: Ctx) => boolean\nexport function callCommand(\n slice: string | CmdKey<any>,\n payload?: any\n): (ctx: Ctx) => boolean\nexport function callCommand(\n slice: string | CmdKey<any>,\n payload?: any\n): (ctx: Ctx) => boolean {\n return (ctx: Ctx) => {\n return ctx.get(commandsCtx).call(slice, payload)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\n/// Force update the editor.\nexport function forceUpdate() {\n return (ctx: Ctx): void => {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n\n const nextTr = Object.assign(Object.create(tr), tr).setTime(Date.now())\n return view.dispatch(nextTr)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx, schemaCtx } from '@milkdown/core'\nimport { DOMSerializer } from '@milkdown/prose/model'\n\n/// Get content of the editor as HTML string.\nexport function getHTML() {\n return (ctx: Ctx): string => {\n const div = document.createElement('div')\n const schema = ctx.get(schemaCtx)\n const view = ctx.get(editorViewCtx)\n const fragment = DOMSerializer.fromSchema(schema).serializeFragment(\n view.state.doc.content\n )\n\n div.appendChild(fragment)\n\n return div.innerHTML\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx, schemaCtx, serializerCtx } from '@milkdown/core'\n\n/// Get content of the editor as markdown string.\n/// If range is provided, it will return the markdown string of the range.\n/// If range is not provided, it will return the markdown string of the whole document.\nexport function getMarkdown(range?: { from: number; to: number }) {\n return (ctx: Ctx): string => {\n const view = ctx.get(editorViewCtx)\n const schema = ctx.get(schemaCtx)\n const serializer = ctx.get(serializerCtx)\n\n if (!range) {\n return serializer(view.state.doc)\n }\n\n const state = view.state\n const slice = state.doc.slice(range.from, range.to, true)\n const doc = schema.topNodeType.createAndFill(null, slice.content)\n if (!doc) {\n console.error('No document found')\n return ''\n }\n return serializer(doc)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx, parserCtx, schemaCtx } from '@milkdown/core'\nimport { isTextOnlySlice } from '@milkdown/prose'\nimport { DOMParser, DOMSerializer, Slice } from '@milkdown/prose/model'\n\n/// Insert markdown string into the editor.\nexport function insert(markdown: string, inline: boolean = false) {\n return (ctx: Ctx) => {\n const view = ctx.get(editorViewCtx)\n const parser = ctx.get(parserCtx)\n const doc = parser(markdown)\n if (!doc) return\n\n if (!inline) {\n const contentSlice = view.state.selection.content()\n return view.dispatch(\n view.state.tr\n .replaceSelection(\n new Slice(doc.content, contentSlice.openStart, contentSlice.openEnd)\n )\n .scrollIntoView()\n )\n }\n\n const schema = ctx.get(schemaCtx)\n const dom = DOMSerializer.fromSchema(schema).serializeFragment(doc.content)\n const domParser = DOMParser.fromSchema(schema)\n const slice = domParser.parseSlice(dom)\n const node = isTextOnlySlice(slice)\n if (node) {\n view.dispatch(view.state.tr.replaceSelectionWith(node, true))\n return\n }\n\n view.dispatch(view.state.tr.replaceSelection(slice))\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\n/// Get outline of the editor.\nexport function outline() {\n return (ctx: Ctx): Array<{ text: string; level: number; id: string }> => {\n const view = ctx.get(editorViewCtx)\n const data: { text: string; level: number; id: string }[] = []\n const doc = view.state.doc\n doc.descendants((node) => {\n if (node.type.name === 'heading' && node.attrs.level)\n data.push({\n text: node.textContent,\n level: node.attrs.level,\n id: node.attrs.id,\n })\n })\n return data\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport {\n editorStateOptionsCtx,\n editorViewCtx,\n parserCtx,\n prosePluginsCtx,\n schemaCtx,\n} from '@milkdown/core'\nimport { Slice } from '@milkdown/prose/model'\nimport { EditorState } from '@milkdown/prose/state'\n\n/// Replace all content of the editor with markdown string.\n/// If flush is true, the editor state will be re-created.\nexport function replaceAll(markdown: string, flush = false) {\n return (ctx: Ctx): void => {\n const view = ctx.get(editorViewCtx)\n const parser = ctx.get(parserCtx)\n const doc = parser(markdown)\n if (!doc) return\n\n if (!flush) {\n const { state } = view\n return view.dispatch(\n state.tr.replace(\n 0,\n state.doc.content.size,\n new Slice(doc.content, 0, 0)\n )\n )\n }\n\n const schema = ctx.get(schemaCtx)\n const overrideOptions = ctx.get(editorStateOptionsCtx)\n const plugins = ctx.get(prosePluginsCtx)\n const newOptions = overrideOptions({\n schema,\n doc,\n plugins,\n })\n\n const state = EditorState.create(newOptions)\n\n view.updateState(state)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Attrs } from '@milkdown/prose/model'\n\nimport { editorViewCtx } from '@milkdown/core'\n\n/// Set the attributes of the node at the given position.\nexport function setAttr(pos: number, update: (prevAttrs: Attrs) => Attrs) {\n return (ctx: Ctx) => {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n const node = tr.doc.nodeAt(pos)\n if (!node) return\n const nextAttr = update(node.attrs)\n return view.dispatch(tr.setNodeMarkup(pos, undefined, nextAttr))\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { parserCtx, schemaCtx } from '@milkdown/core'\nimport { DOMSerializer, DOMParser } from '@milkdown/prose/model'\n\n/// Convert markdown string to slice.\nexport function markdownToSlice(markdown: string) {\n return (ctx: Ctx) => {\n const parser = ctx.get(parserCtx)\n const doc = parser(markdown)\n const schema = ctx.get(schemaCtx)\n const dom = DOMSerializer.fromSchema(schema).serializeFragment(doc.content)\n const domParser = DOMParser.fromSchema(schema)\n const slice = domParser.parseSlice(dom)\n\n return slice\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\nimport { markdownToSlice } from './markdown-to-slice'\n\n/// Insert markdown string to the given position.\n/// If inline is true, the markdown will be inserted as inline text.\n/// If inline is false, the markdown will be inserted as block text.\nexport function insertPos(\n markdown: string,\n pos: number,\n inline: boolean = false\n) {\n return (ctx: Ctx) => {\n const slice = markdownToSlice(markdown)(ctx)\n const view = ctx.get(editorViewCtx)\n const toPos = view.state.doc.resolve(pos)\n\n const min = 0\n const max = view.state.doc.content.size\n const resolved = inline ? toPos.pos : toPos.after(toPos.depth - 1)\n const to = Math.min(Math.max(resolved, min), max)\n\n view.dispatch(view.state.tr.replace(resolved, to, slice))\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\nimport { markdownToSlice } from './markdown-to-slice'\n\n/// Replace the content of the given range with the markdown string.\nexport function replaceRange(\n markdown: string,\n range: { from: number; to: number }\n) {\n return (ctx: Ctx) => {\n const view = ctx.get(editorViewCtx)\n const slice = markdownToSlice(markdown)(ctx)\n\n view.dispatch(view.state.tr.replace(range.from, range.to, slice))\n }\n}\n", "/// @internal\nexport type Many<T> = T | ReadonlyArray<T>\n\ninterface Pipe {\n pipe: (<A extends any[], R1, R2, R3, R4, R5, R6, R7>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5,\n f6: (a: R5) => R6,\n f7: (a: R6) => R7\n ) => (...args: A) => R7) &\n (<A extends any[], R1, R2, R3, R4, R5, R6, R7>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5,\n f6: (a: R5) => R6,\n f7: (a: R6) => R7,\n ...func: Array<Many<(a: any) => any>>\n ) => (...args: A) => any) &\n (<A extends any[], R1, R2, R3, R4, R5, R6>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5,\n f6: (a: R5) => R6\n ) => (...args: A) => R6) &\n (<A extends any[], R1, R2, R3, R4, R5>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5\n ) => (...args: A) => R5) &\n (<A extends any[], R1, R2, R3, R4>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4\n ) => (...args: A) => R4) &\n (<A extends any[], R1, R2, R3>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3\n ) => (...args: A) => R3) &\n (<A extends any[], R1, R2>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2\n ) => (...args: A) => R2) &\n ((...func: Array<Many<(...args: any[]) => any>>) => (...args: any[]) => any)\n}\n\n/// @internal\nexport const pipe: Pipe['pipe'] = (...funcs: any[]) => {\n const length = funcs.length\n let index = length\n while (index--) {\n if (typeof funcs[index] !== 'function')\n throw new TypeError('Expected a function')\n }\n return (...args: any[]) => {\n let index = 0\n let result = length ? funcs[index](...args) : args[0]\n while (++index < length) result = funcs[index](result)\n\n return result\n }\n}\n", "import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `<ol>`\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1, validate: \"number\" } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `<ul>`.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`<li>`) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to);\n if (!range)\n return false;\n let tr = dispatch ? state.tr : null;\n if (!wrapRangeInList(tr, range, listType, attrs))\n return false;\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nTry to wrap the given node range in a list of the given type.\nReturn `true` when this is possible, `false` otherwise. When `tr`\nis non-null, the wrapping is added to that transaction. When it is\n`null`, the function only queries whether the wrapping is\npossible.\n*/\nfunction wrapRangeInList(tr, range, listType, attrs = null) {\n let doJoin = false, outerRange = range, doc = range.$from.doc;\n // This is at the top of an existing list item\n if (range.depth >= 2 && range.$from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if (range.$from.index(range.depth - 1) == 0)\n return false;\n let $insert = doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new NodeRange(range.$from, doc.resolve(range.$to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (tr)\n doWrapInList(tr, range, wrap, doJoin, listType);\n return true;\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!canSplit(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nActs like [`splitListItem`](https://prosemirror.net/docs/ref/#schema-list.splitListItem), but\nwithout resetting the set of active marks at the cursor.\n*/\nfunction splitListItemKeepMarks(itemType, itemAttrs) {\n let split = splitListItem(itemType, itemAttrs);\n return (state, dispatch) => {\n return split(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = liftTarget(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let $after = tr.doc.resolve(tr.mapping.map(end, -1) - 1);\n if (canJoin(tr.doc, $after.pos) && $after.nodeBefore.type == $after.nodeAfter.type)\n tr.join($after.pos);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, splitListItemKeepMarks, wrapInList, wrapRangeInList };\n", "/**\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Nodes} Nodes\n */\n\n/**\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition (optional).\n * @returns {Definition | undefined}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Nodes} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Map<string, Definition>} */\n const cache = new Map()\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', function (definition) {\n const id = clean(definition.identifier)\n if (id && !cache.get(id)) {\n cache.set(id, definition)\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n return cache.get(id)\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n", "/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {definitions} from 'mdast-util-definitions'\nimport {SKIP, visit} from 'unist-util-visit'\n\n/**\n * Turn references and definitions into normal links and images.\n *\n * @returns\n * Transform.\n */\nexport default function remarkInlineLinks() {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n const definition = definitions(tree)\n\n visit(tree, function (node, index, parent) {\n if (\n node.type === 'definition' &&\n parent !== undefined &&\n typeof index === 'number'\n ) {\n parent.children.splice(index, 1)\n return [SKIP, index]\n }\n\n if (node.type === 'imageReference' || node.type === 'linkReference') {\n const def = definition(node.identifier)\n\n if (def && parent && typeof index === 'number') {\n parent.children[index] =\n node.type === 'imageReference'\n ? {type: 'image', url: def.url, title: def.title, alt: node.alt}\n : {\n type: 'link',\n url: def.url,\n title: def.title,\n children: node.children\n }\n return [SKIP, index]\n }\n }\n })\n }\n}\n", "import type { Node } from '@milkdown/prose/model'\nimport type { SerializerState } from '@milkdown/transformer'\n\nimport { Fragment } from '@milkdown/prose/model'\n\nexport function serializeText(state: SerializerState, node: Node) {\n const lastIsHardBreak =\n node.childCount >= 1 && node.lastChild?.type.name === 'hardbreak'\n if (!lastIsHardBreak) {\n state.next(node.content)\n return\n }\n\n const contentArr: Node[] = []\n node.content.forEach((n, _, i) => {\n if (i === node.childCount - 1) return\n\n contentArr.push(n)\n })\n state.next(Fragment.fromArray(contentArr))\n}\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/preset-commonmark',\n ...meta,\n },\n })\n\n return plugin\n}\n", "import { commandsCtx, remarkStringifyOptionsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the emphasis mark.\nexport const emphasisAttr = $markAttr('emphasis')\n\nwithMeta(emphasisAttr, {\n displayName: 'Attr<emphasis>',\n group: 'Emphasis',\n})\n\n/// Emphasis mark schema.\nexport const emphasisSchema = $markSchema('emphasis', (ctx) => ({\n attrs: {\n marker: {\n default: ctx.get(remarkStringifyOptionsCtx).emphasis || '*',\n validate: 'string',\n },\n },\n parseDOM: [\n { tag: 'i' },\n { tag: 'em' },\n { style: 'font-style', getAttrs: (value) => (value === 'italic') as false },\n ],\n toDOM: (mark) => ['em', ctx.get(emphasisAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'emphasis',\n runner: (state, node, markType) => {\n state.openMark(markType, { marker: node.marker })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'emphasis',\n runner: (state, mark) => {\n state.withMark(mark, 'emphasis', undefined, {\n marker: mark.attrs.marker,\n })\n },\n },\n}))\n\nwithMeta(emphasisSchema.mark, {\n displayName: 'MarkSchema<emphasis>',\n group: 'Emphasis',\n})\n\nwithMeta(emphasisSchema.ctx, {\n displayName: 'MarkSchemaCtx<emphasis>',\n group: 'Emphasis',\n})\n\n/// A command to toggle the emphasis mark.\nexport const toggleEmphasisCommand = $command('ToggleEmphasis', (ctx) => () => {\n return toggleMark(emphasisSchema.type(ctx))\n})\n\nwithMeta(toggleEmphasisCommand, {\n displayName: 'Command<toggleEmphasisCommand>',\n group: 'Emphasis',\n})\n\n/// Input rule for use `*` to create emphasis mark.\nexport const emphasisStarInputRule = $inputRule((ctx) => {\n return markRule(/(?:^|[^*])\\*([^*]+)\\*$/, emphasisSchema.type(ctx), {\n getAttr: () => ({\n marker: '*',\n }),\n updateCaptured: ({ fullMatch, start }) =>\n !fullMatch.startsWith('*')\n ? { fullMatch: fullMatch.slice(1), start: start + 1 }\n : {},\n })\n})\n\nwithMeta(emphasisStarInputRule, {\n displayName: 'InputRule<emphasis>|Star',\n group: 'Emphasis',\n})\n\n/// Input rule for use `_` to create emphasis mark.\nexport const emphasisUnderscoreInputRule = $inputRule((ctx) => {\n return markRule(/\\b_(?![_\\s])(.*?[^_\\s])_\\b/, emphasisSchema.type(ctx), {\n getAttr: () => ({\n marker: '_',\n }),\n updateCaptured: ({ fullMatch, start }) =>\n !fullMatch.startsWith('_')\n ? { fullMatch: fullMatch.slice(1), start: start + 1 }\n : {},\n })\n})\n\nwithMeta(emphasisUnderscoreInputRule, {\n displayName: 'InputRule<emphasis>|Underscore',\n group: 'Emphasis',\n})\n\n/// Keymap for the emphasis mark.\n/// - `Mod-i` - Toggle the emphasis mark.\nexport const emphasisKeymap = $useKeymap('emphasisKeymap', {\n ToggleEmphasis: {\n shortcuts: 'Mod-i',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleEmphasisCommand.key)\n },\n },\n})\n\nwithMeta(emphasisKeymap.ctx, {\n displayName: 'KeymapCtx<emphasis>',\n group: 'Emphasis',\n})\n\nwithMeta(emphasisKeymap.shortcuts, {\n displayName: 'Keymap<emphasis>',\n group: 'Emphasis',\n})\n", "import { commandsCtx, remarkStringifyOptionsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the strong mark.\nexport const strongAttr = $markAttr('strong')\n\nwithMeta(strongAttr, {\n displayName: 'Attr<strong>',\n group: 'Strong',\n})\n\n/// Strong mark schema.\nexport const strongSchema = $markSchema('strong', (ctx) => ({\n attrs: {\n marker: {\n default: ctx.get(remarkStringifyOptionsCtx).strong || '*',\n validate: 'string',\n },\n },\n parseDOM: [\n // This works around a Google Docs misbehavior where\n // pasted content will be inexplicably wrapped in `<b>`\n // tags with a font-weight normal.\n {\n tag: 'b',\n getAttrs: (node: HTMLElement) =>\n node.style.fontWeight != 'normal' && null,\n },\n { tag: 'strong' },\n { style: 'font-style', getAttrs: (value) => (value === 'bold') as false },\n { style: 'font-weight=400', clearMark: (m) => m.type.name == 'strong' },\n {\n style: 'font-weight',\n getAttrs: (value: string) =>\n /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null,\n },\n ],\n toDOM: (mark) => ['strong', ctx.get(strongAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'strong',\n runner: (state, node, markType) => {\n state.openMark(markType, { marker: node.marker })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'strong',\n runner: (state, mark) => {\n state.withMark(mark, 'strong', undefined, {\n marker: mark.attrs.marker,\n })\n },\n },\n}))\n\nwithMeta(strongSchema.mark, {\n displayName: 'MarkSchema<strong>',\n group: 'Strong',\n})\n\nwithMeta(strongSchema.ctx, {\n displayName: 'MarkSchemaCtx<strong>',\n group: 'Strong',\n})\n\n/// A command to toggle the strong mark.\nexport const toggleStrongCommand = $command('ToggleStrong', (ctx) => () => {\n return toggleMark(strongSchema.type(ctx))\n})\n\nwithMeta(toggleStrongCommand, {\n displayName: 'Command<toggleStrongCommand>',\n group: 'Strong',\n})\n\n/// A input rule that will capture the strong mark.\nexport const strongInputRule = $inputRule((ctx) => {\n // Avoid matching when the opening delimiter is directly adjacent to alphanumeric characters,\n // colon or slash (to prevent matches inside file paths, URLs, or intra-word like `a**b**c`).\n // Also ensure the closing delimiter is not followed by such characters (mirrors strike-through rule).\n return markRule(\n /(?<![\\w:/])(?:\\*\\*|__)([^*_]+?)(?:\\*\\*|__)(?![\\w/])$/,\n strongSchema.type(ctx),\n {\n getAttr: (match) => {\n return {\n marker: match[0].startsWith('*') ? '*' : '_',\n }\n },\n }\n )\n})\n\nwithMeta(strongInputRule, {\n displayName: 'InputRule<strong>',\n group: 'Strong',\n})\n\n/// Keymap for the strong mark.\n/// - `Mod-b` - Toggle the strong mark.\nexport const strongKeymap = $useKeymap('strongKeymap', {\n ToggleBold: {\n shortcuts: ['Mod-b'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleStrongCommand.key)\n },\n },\n})\n\nwithMeta(strongKeymap.ctx, {\n displayName: 'KeymapCtx<strong>',\n group: 'Strong',\n})\n\nwithMeta(strongKeymap.shortcuts, {\n displayName: 'Keymap<strong>',\n group: 'Strong',\n})\n", "import type { MarkType } from '@milkdown/prose/model'\n\nimport { commandsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the inlineCode mark.\nexport const inlineCodeAttr = $markAttr('inlineCode')\n\nwithMeta(inlineCodeAttr, {\n displayName: 'Attr<inlineCode>',\n group: 'InlineCode',\n})\n\n/// InlineCode mark schema.\nexport const inlineCodeSchema = $markSchema('inlineCode', (ctx) => ({\n priority: 100,\n code: true,\n parseDOM: [{ tag: 'code' }],\n toDOM: (mark) => ['code', ctx.get(inlineCodeAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'inlineCode',\n runner: (state, node, markType) => {\n state.openMark(markType)\n state.addText(node.value as string)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'inlineCode',\n runner: (state, mark, node) => {\n state.withMark(mark, 'inlineCode', node.text || '')\n return true\n },\n },\n}))\n\nwithMeta(inlineCodeSchema.mark, {\n displayName: 'MarkSchema<inlineCode>',\n group: 'InlineCode',\n})\n\nwithMeta(inlineCodeSchema.ctx, {\n displayName: 'MarkSchemaCtx<inlineCode>',\n group: 'InlineCode',\n})\n\n/// A command to toggle the inlineCode mark.\nexport const toggleInlineCodeCommand = $command(\n 'ToggleInlineCode',\n (ctx) => () => (state, dispatch) => {\n const { selection, tr } = state\n if (selection.empty) return false\n const { from, to } = selection\n\n const has = state.doc.rangeHasMark(from, to, inlineCodeSchema.type(ctx))\n // remove exists inlineCode mark if have\n if (has) {\n dispatch?.(tr.removeMark(from, to, inlineCodeSchema.type(ctx)))\n return true\n }\n\n const restMarksName = Object.keys(state.schema.marks).filter(\n (x) => x !== inlineCodeSchema.type.name\n )\n\n // remove other marks\n restMarksName\n .map((name) => state.schema.marks[name] as MarkType)\n .forEach((t) => {\n tr.removeMark(from, to, t)\n })\n\n // add inlineCode mark\n dispatch?.(tr.addMark(from, to, inlineCodeSchema.type(ctx).create()))\n return true\n }\n)\n\nwithMeta(toggleInlineCodeCommand, {\n displayName: 'Command<toggleInlineCodeCommand>',\n group: 'InlineCode',\n})\n\n/// Input rule for create inlineCode mark.\nexport const inlineCodeInputRule = $inputRule((ctx) => {\n return markRule(/(?:`)([^`]+)(?:`)$/, inlineCodeSchema.type(ctx))\n})\n\nwithMeta(inlineCodeInputRule, {\n displayName: 'InputRule<inlineCodeInputRule>',\n group: 'InlineCode',\n})\n\n/// Keymap for the inlineCode mark.\n/// - `Mod-e` - Toggle the inlineCode mark.\nexport const inlineCodeKeymap = $useKeymap('inlineCodeKeymap', {\n ToggleInlineCode: {\n shortcuts: 'Mod-e',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleInlineCodeCommand.key)\n },\n },\n})\n\nwithMeta(inlineCodeKeymap.ctx, {\n displayName: 'KeymapCtx<inlineCode>',\n group: 'InlineCode',\n})\n\nwithMeta(inlineCodeKeymap.shortcuts, {\n displayName: 'Keymap<inlineCode>',\n group: 'InlineCode',\n})\n", "import type { Node as ProseNode } from '@milkdown/prose/model'\n\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport { TextSelection } from '@milkdown/prose/state'\nimport { $command, $markAttr, $markSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the link mark.\nexport const linkAttr = $markAttr('link')\n\nwithMeta(linkAttr, {\n displayName: 'Attr<link>',\n group: 'Link',\n})\n\n/// Link mark schema.\nexport const linkSchema = $markSchema('link', (ctx) => ({\n attrs: {\n href: { validate: 'string' },\n title: { default: null, validate: 'string|null' },\n },\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n href: dom.getAttribute('href'),\n title: dom.getAttribute('title'),\n }\n },\n },\n ],\n toDOM: (mark) => ['a', { ...ctx.get(linkAttr.key)(mark), ...mark.attrs }],\n parseMarkdown: {\n match: (node) => node.type === 'link',\n runner: (state, node, markType) => {\n const url = node.url as string\n const title = node.title as string\n state.openMark(markType, { href: url, title })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'link',\n runner: (state, mark) => {\n state.withMark(mark, 'link', undefined, {\n title: mark.attrs.title,\n url: mark.attrs.href,\n })\n },\n },\n}))\n\nwithMeta(linkSchema.mark, {\n displayName: 'MarkSchema<link>',\n group: 'Link',\n})\n\n/// @internal\nexport interface UpdateLinkCommandPayload {\n href?: string\n title?: string\n}\n/// A command to toggle the link mark.\n/// You can pass the `href` and `title` to the link.\nexport const toggleLinkCommand = $command(\n 'ToggleLink',\n (ctx) =>\n (payload: UpdateLinkCommandPayload = {}) =>\n toggleMark(linkSchema.type(ctx), payload)\n)\n\nwithMeta(toggleLinkCommand, {\n displayName: 'Command<toggleLinkCommand>',\n group: 'Link',\n})\n\n/// A command to update the link mark.\n/// You can pass the `href` and `title` to update the link.\nexport const updateLinkCommand = $command(\n 'UpdateLink',\n (ctx) =>\n (payload: UpdateLinkCommandPayload = {}) =>\n (state, dispatch) => {\n if (!dispatch) return false\n\n let node: ProseNode | undefined\n let pos = -1\n const { selection } = state\n const { from, to } = selection\n state.doc.nodesBetween(from, from === to ? to + 1 : to, (n, p) => {\n if (linkSchema.type(ctx).isInSet(n.marks)) {\n node = n\n pos = p\n return false\n }\n\n return undefined\n })\n\n if (!node) return false\n\n const mark = node.marks.find(({ type }) => type === linkSchema.type(ctx))\n if (!mark) return false\n\n const start = pos\n const end = pos + node.nodeSize\n const { tr } = state\n const linkMark = linkSchema\n .type(ctx)\n .create({ ...mark.attrs, ...payload })\n if (!linkMark) return false\n\n dispatch(\n tr\n .removeMark(start, end, mark)\n .addMark(start, end, linkMark)\n .setSelection(new TextSelection(tr.selection.$anchor))\n .scrollIntoView()\n )\n\n return true\n }\n)\n\nwithMeta(updateLinkCommand, {\n displayName: 'Command<updateLinkCommand>',\n group: 'Link',\n})\n", "import { $node } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// The top-level document node.\nexport const docSchema = $node('doc', () => ({\n content: 'block+',\n parseMarkdown: {\n match: ({ type }) => type === 'root',\n runner: (state, node, type) => {\n state.injectRoot(node, type)\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'doc',\n runner: (state, node) => {\n state.openNode('root')\n state.next(node.content)\n },\n },\n}))\n\nwithMeta(docSchema, {\n displayName: 'NodeSchema<doc>',\n group: 'Doc',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\nimport { visitParents } from 'unist-util-visit-parents'\n\nimport { withMeta } from '../__internal__'\n\nfunction visitEmptyLine(ast: Node) {\n return visitParents(\n ast,\n (node: Node) =>\n node.type === 'html' &&\n ['<br />', '<br>', '<br >', '<br/>'].includes(\n (node as Node & { value: string }).value?.trim()\n ),\n (node: Node, parents: Node[]) => {\n if (!parents.length) return\n const parent = parents[parents.length - 1] as\n | (Node & { children: Node[] })\n | undefined\n if (!parent) return\n const index = parent.children.indexOf(node)\n if (index === -1) return\n\n parent.children.splice(index, 1)\n },\n true\n )\n}\n\n/// @internal\n/// This plugin is used to preserve the empty line.\n/// Markdown will fold the empty line into the previous line by default.\n/// This plugin will preserve the empty line by converting `<br />` to `line-break`.\n/// This plugin should be used with `linebreakSchema` to work.\nexport const remarkPreserveEmptyLinePlugin = $remark(\n 'remark-preserve-empty-line',\n () => () => visitEmptyLine\n)\n\nwithMeta(remarkPreserveEmptyLinePlugin.plugin, {\n displayName: 'Remark<remarkPreserveEmptyLine>',\n group: 'Remark',\n})\n\nwithMeta(remarkPreserveEmptyLinePlugin.options, {\n displayName: 'RemarkConfig<remarkPreserveEmptyLine>',\n group: 'Remark',\n})\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { commandsCtx, editorViewCtx } from '@milkdown/core'\nimport { setBlockType } from '@milkdown/prose/commands'\nimport { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils'\n\nimport { serializeText, withMeta } from '../__internal__'\nimport { remarkPreserveEmptyLinePlugin } from '../plugin/remark-preserve-empty-line'\n\n/// HTML attributes for paragraph node.\nexport const paragraphAttr = $nodeAttr('paragraph')\n\nwithMeta(paragraphAttr, {\n displayName: 'Attr<paragraph>',\n group: 'Paragraph',\n})\n\n/// Schema for paragraph node.\nexport const paragraphSchema = $nodeSchema('paragraph', (ctx) => ({\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM: (node) => ['p', ctx.get(paragraphAttr.key)(node), 0],\n parseMarkdown: {\n match: (node) => node.type === 'paragraph',\n runner: (state, node, type) => {\n state.openNode(type)\n if (node.children) state.next(node.children)\n else state.addText((node.value || '') as string)\n\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'paragraph',\n runner: (state, node) => {\n const view = ctx.get(editorViewCtx)\n const lastNode = view.state?.doc.lastChild\n\n state.openNode('paragraph')\n if (\n (!node.content || node.content.size === 0) &&\n node !== lastNode &&\n shouldPreserveEmptyLine(ctx)\n ) {\n state.addNode('html', undefined, '<br />')\n } else {\n serializeText(state, node)\n }\n state.closeNode()\n },\n },\n}))\n\nfunction shouldPreserveEmptyLine(ctx: Ctx) {\n let shouldPreserveEmptyLine = false\n try {\n ctx.get(remarkPreserveEmptyLinePlugin.id)\n shouldPreserveEmptyLine = true\n } catch {\n shouldPreserveEmptyLine = false\n }\n return shouldPreserveEmptyLine\n}\n\nwithMeta(paragraphSchema.node, {\n displayName: 'NodeSchema<paragraph>',\n group: 'Paragraph',\n})\nwithMeta(paragraphSchema.ctx, {\n displayName: 'NodeSchemaCtx<paragraph>',\n group: 'Paragraph',\n})\n\n/// This command can turn the selected block into paragraph.\nexport const turnIntoTextCommand = $command(\n 'TurnIntoText',\n (ctx) => () => setBlockType(paragraphSchema.type(ctx))\n)\n\nwithMeta(turnIntoTextCommand, {\n displayName: 'Command<turnIntoTextCommand>',\n group: 'Paragraph',\n})\n\n/// Keymap for paragraph node.\n/// - `<Mod-Alt-0>`: Turn the selected block into paragraph.\nexport const paragraphKeymap = $useKeymap('paragraphKeymap', {\n TurnIntoText: {\n shortcuts: 'Mod-Alt-0',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(turnIntoTextCommand.key)\n },\n },\n})\n\nwithMeta(paragraphKeymap.ctx, {\n displayName: 'KeymapCtx<paragraph>',\n group: 'Paragraph',\n})\n\nwithMeta(paragraphKeymap.shortcuts, {\n displayName: 'Keymap<paragraph>',\n group: 'Paragraph',\n})\n", "import type { Node } from '@milkdown/prose/model'\n\nimport { commandsCtx, editorViewCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { setBlockType } from '@milkdown/prose/commands'\nimport { textblockTypeInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $ctx,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { serializeText, withMeta } from '../__internal__'\nimport { paragraphSchema } from './paragraph'\n\nconst headingIndex = Array(6)\n .fill(0)\n .map((_, i) => i + 1)\n\nfunction defaultHeadingIdGenerator(node: Node) {\n return node.textContent.toLowerCase().trim().replace(/\\s+/g, '-')\n}\n\n/// This is a slice contains a function to generate heading id.\n/// You can configure it to generate id in your own way.\nexport const headingIdGenerator = $ctx(\n defaultHeadingIdGenerator,\n 'headingIdGenerator'\n)\n\nwithMeta(headingIdGenerator, {\n displayName: 'Ctx<HeadingIdGenerator>',\n group: 'Heading',\n})\n\n/// HTML attributes for heading node.\nexport const headingAttr = $nodeAttr('heading')\n\nwithMeta(headingAttr, {\n displayName: 'Attr<heading>',\n group: 'Heading',\n})\n\n/// Schema for heading node.\nexport const headingSchema = $nodeSchema('heading', (ctx) => {\n const getId = ctx.get(headingIdGenerator.key)\n return {\n content: 'inline*',\n group: 'block',\n defining: true,\n attrs: {\n id: {\n default: '',\n validate: 'string',\n },\n level: {\n default: 1,\n validate: 'number',\n },\n },\n parseDOM: headingIndex.map((x) => ({\n tag: `h${x}`,\n getAttrs: (node) => {\n if (!(node instanceof HTMLElement)) throw expectDomTypeError(node)\n\n return { level: x, id: node.id }\n },\n })),\n toDOM: (node) => {\n return [\n `h${node.attrs.level}`,\n {\n ...ctx.get(headingAttr.key)(node),\n id: node.attrs.id || getId(node),\n },\n 0,\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'heading',\n runner: (state, node, type) => {\n const depth = node.depth as number\n state.openNode(type, { level: depth })\n state.next(node.children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'heading',\n runner: (state, node) => {\n state.openNode('heading', undefined, { depth: node.attrs.level })\n serializeText(state, node)\n state.closeNode()\n },\n },\n }\n})\n\nwithMeta(headingSchema.node, {\n displayName: 'NodeSchema<heading>',\n group: 'Heading',\n})\n\nwithMeta(headingSchema.ctx, {\n displayName: 'NodeSchemaCtx<heading>',\n group: 'Heading',\n})\n\n/// This input rule can turn the selected block into heading.\n/// You can input numbers of `#` and a `space` to create heading.\nexport const wrapInHeadingInputRule = $inputRule((ctx) => {\n return textblockTypeInputRule(\n /^(?<hashes>#+)\\s$/,\n headingSchema.type(ctx),\n (match) => {\n const x = match.groups?.hashes?.length || 0\n\n const view = ctx.get(editorViewCtx)\n const { $from } = view.state.selection\n const node = $from.node()\n if (node.type.name === 'heading') {\n let level = Number(node.attrs.level) + Number(x)\n if (level > 6) level = 6\n\n return { level }\n }\n return { level: x }\n }\n )\n})\n\nwithMeta(wrapInHeadingInputRule, {\n displayName: 'InputRule<wrapInHeadingInputRule>',\n group: 'Heading',\n})\n\n/// This command can turn the selected block into heading.\n/// You can pass the level of heading to this command.\n/// By default, the level is 1, which means it will create a `h1` element.\nexport const wrapInHeadingCommand = $command('WrapInHeading', (ctx) => {\n return (level?: number) => {\n level ??= 1\n\n if (level < 1) return setBlockType(paragraphSchema.type(ctx))\n\n return setBlockType(headingSchema.type(ctx), { level })\n }\n})\n\nwithMeta(wrapInHeadingCommand, {\n displayName: 'Command<wrapInHeadingCommand>',\n group: 'Heading',\n})\n\n/// This command can downgrade the selected heading.\n/// For example, if you have a `h2` element, and you call this command, you will get a `h1` element.\n/// If the element is already a `h1` element, it will turn it into a `p` element.\nexport const downgradeHeadingCommand = $command(\n 'DowngradeHeading',\n (ctx) => () => (state, dispatch, view) => {\n const { $from } = state.selection\n const node = $from.node()\n if (\n node.type !== headingSchema.type(ctx) ||\n !state.selection.empty ||\n $from.parentOffset !== 0\n )\n return false\n\n const level = node.attrs.level - 1\n if (!level)\n return setBlockType(paragraphSchema.type(ctx))(state, dispatch, view)\n\n dispatch?.(\n state.tr.setNodeMarkup(state.selection.$from.before(), undefined, {\n ...node.attrs,\n level,\n })\n )\n return true\n }\n)\n\nwithMeta(downgradeHeadingCommand, {\n displayName: 'Command<downgradeHeadingCommand>',\n group: 'Heading',\n})\n\n/// Keymap for heading node.\n/// - `<Mod-Alt-{1-6}>`: Turn the selected block into `h{1-6}` element.\n/// - `<Delete>/<Backspace>`: Downgrade the selected heading.\nexport const headingKeymap = $useKeymap('headingKeymap', {\n TurnIntoH1: {\n shortcuts: 'Mod-Alt-1',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 1)\n },\n },\n TurnIntoH2: {\n shortcuts: 'Mod-Alt-2',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 2)\n },\n },\n TurnIntoH3: {\n shortcuts: 'Mod-Alt-3',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 3)\n },\n },\n TurnIntoH4: {\n shortcuts: 'Mod-Alt-4',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 4)\n },\n },\n TurnIntoH5: {\n shortcuts: 'Mod-Alt-5',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 5)\n },\n },\n TurnIntoH6: {\n shortcuts: 'Mod-Alt-6',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 6)\n },\n },\n DowngradeHeading: {\n shortcuts: ['Delete', 'Backspace'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(downgradeHeadingCommand.key)\n },\n },\n})\n\nwithMeta(headingKeymap.ctx, {\n displayName: 'KeymapCtx<heading>',\n group: 'Heading',\n})\n\nwithMeta(headingKeymap.shortcuts, {\n displayName: 'Keymap<heading>',\n group: 'Heading',\n})\n", "import type { $NodeSchema } from '@milkdown/utils'\n\nimport { commandsCtx } from '@milkdown/core'\nimport { wrapIn } from '@milkdown/prose/commands'\nimport { wrappingInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for blockquote node.\nexport const blockquoteAttr = $nodeAttr('blockquote')\n\nwithMeta(blockquoteAttr, {\n displayName: 'Attr<blockquote>',\n group: 'Blockquote',\n})\n\n/// Schema for blockquote node.\nexport const blockquoteSchema: $NodeSchema<'blockquote'> = $nodeSchema(\n 'blockquote',\n (ctx) => ({\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [{ tag: 'blockquote' }],\n toDOM: (node) => ['blockquote', ctx.get(blockquoteAttr.key)(node), 0],\n parseMarkdown: {\n match: ({ type }) => type === 'blockquote',\n runner: (state, node, type) => {\n state.openNode(type).next(node.children).closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'blockquote',\n runner: (state, node) => {\n state.openNode('blockquote').next(node.content).closeNode()\n },\n },\n })\n)\n\nwithMeta(blockquoteSchema.node, {\n displayName: 'NodeSchema<blockquote>',\n group: 'Blockquote',\n})\n\nwithMeta(blockquoteSchema.ctx, {\n displayName: 'NodeSchemaCtx<blockquote>',\n group: 'Blockquote',\n})\n\n/// This input rule will convert a line that starts with `> ` into a blockquote.\n/// You can type `> ` at the start of a line to create a blockquote.\nexport const wrapInBlockquoteInputRule = $inputRule((ctx) =>\n wrappingInputRule(/^\\s*>\\s$/, blockquoteSchema.type(ctx))\n)\n\nwithMeta(wrapInBlockquoteInputRule, {\n displayName: 'InputRule<wrapInBlockquoteInputRule>',\n group: 'Blockquote',\n})\n\n/// This command will wrap the current selection in a blockquote.\nexport const wrapInBlockquoteCommand = $command(\n 'WrapInBlockquote',\n (ctx) => () => wrapIn(blockquoteSchema.type(ctx))\n)\n\nwithMeta(wrapInBlockquoteCommand, {\n displayName: 'Command<wrapInBlockquoteCommand>',\n group: 'Blockquote',\n})\n\n/// Keymap for blockquote.\n/// - `Mod-Shift-b`: Wrap selection in blockquote.\nexport const blockquoteKeymap = $useKeymap('blockquoteKeymap', {\n WrapInBlockquote: {\n shortcuts: 'Mod-Shift-b',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInBlockquoteCommand.key)\n },\n },\n})\n\nwithMeta(blockquoteKeymap.ctx, {\n displayName: 'KeymapCtx<blockquote>',\n group: 'Blockquote',\n})\n\nwithMeta(blockquoteKeymap.shortcuts, {\n displayName: 'Keymap<blockquote>',\n group: 'Blockquote',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { setBlockType } from '@milkdown/prose/commands'\nimport { textblockTypeInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for code block node.\nexport const codeBlockAttr = $nodeAttr('codeBlock', () => ({\n pre: {},\n code: {},\n}))\n\nwithMeta(codeBlockAttr, {\n displayName: 'Attr<codeBlock>',\n group: 'CodeBlock',\n})\n\n/// Schema for code block node.\nexport const codeBlockSchema = $nodeSchema('code_block', (ctx) => {\n return {\n content: 'text*',\n group: 'block',\n marks: '',\n defining: true,\n code: true,\n attrs: {\n language: {\n default: '',\n validate: 'string',\n },\n },\n parseDOM: [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return { language: dom.dataset.language }\n },\n },\n ],\n toDOM: (node) => {\n const attr = ctx.get(codeBlockAttr.key)(node)\n const language = node.attrs.language\n const languageAttrs =\n language && language.length > 0\n ? { 'data-language': language }\n : undefined\n\n return [\n 'pre',\n {\n ...attr.pre,\n ...languageAttrs,\n },\n ['code', attr.code, 0],\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'code',\n runner: (state, node, type) => {\n const language = node.lang ?? ''\n const value = node.value as string | null\n state.openNode(type, { language })\n if (value) state.addText(value)\n\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'code_block',\n runner: (state, node) => {\n state.addNode('code', undefined, node.content.firstChild?.text || '', {\n lang: node.attrs.language,\n })\n },\n },\n }\n})\n\nwithMeta(codeBlockSchema.node, {\n displayName: 'NodeSchema<codeBlock>',\n group: 'CodeBlock',\n})\n\nwithMeta(codeBlockSchema.ctx, {\n displayName: 'NodeSchemaCtx<codeBlock>',\n group: 'CodeBlock',\n})\n\n/// A input rule for creating code block.\n/// For example, ` ```javascript ` will create a code block with language javascript.\nexport const createCodeBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(\n /^```(?<language>[a-z]*)?[\\s\\n]$/,\n codeBlockSchema.type(ctx),\n (match) => ({\n language: match.groups?.language ?? '',\n })\n )\n)\n\nwithMeta(createCodeBlockInputRule, {\n displayName: 'InputRule<createCodeBlockInputRule>',\n group: 'CodeBlock',\n})\n\n/// A command for creating code block.\n/// You can pass the language of the code block as the parameter.\nexport const createCodeBlockCommand = $command(\n 'CreateCodeBlock',\n (ctx) =>\n (language = '') =>\n setBlockType(codeBlockSchema.type(ctx), { language })\n)\n\nwithMeta(createCodeBlockCommand, {\n displayName: 'Command<createCodeBlockCommand>',\n group: 'CodeBlock',\n})\n\n/// A command for updating the code block language of the target position.\nexport const updateCodeBlockLanguageCommand = $command(\n 'UpdateCodeBlockLanguage',\n () =>\n (\n { pos, language }: { pos: number; language: string } = {\n pos: -1,\n language: '',\n }\n ) =>\n (state, dispatch) => {\n if (pos >= 0) {\n dispatch?.(state.tr.setNodeAttribute(pos, 'language', language))\n return true\n }\n\n return false\n }\n)\n\nwithMeta(updateCodeBlockLanguageCommand, {\n displayName: 'Command<updateCodeBlockLanguageCommand>',\n group: 'CodeBlock',\n})\n\n/// Keymap for code block.\n/// - `Mod-Alt-c`: Create a code block.\nexport const codeBlockKeymap = $useKeymap('codeBlockKeymap', {\n CreateCodeBlock: {\n shortcuts: 'Mod-Alt-c',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(createCodeBlockCommand.key)\n },\n },\n})\n\nwithMeta(codeBlockKeymap.ctx, {\n displayName: 'KeymapCtx<codeBlock>',\n group: 'CodeBlock',\n})\n\nwithMeta(codeBlockKeymap.shortcuts, {\n displayName: 'Keymap<codeBlock>',\n group: 'CodeBlock',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { findSelectedNodeOfType } from '@milkdown/prose'\nimport { InputRule } from '@milkdown/prose/inputrules'\nimport { $command, $inputRule, $nodeAttr, $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for image node.\nexport const imageAttr = $nodeAttr('image')\n\nwithMeta(imageAttr, {\n displayName: 'Attr<image>',\n group: 'Image',\n})\n\n/// Schema for image node.\nexport const imageSchema = $nodeSchema('image', (ctx) => {\n return {\n inline: true,\n group: 'inline',\n selectable: true,\n draggable: true,\n marks: '',\n atom: true,\n defining: true,\n isolating: true,\n attrs: {\n src: { default: '', validate: 'string' },\n alt: { default: '', validate: 'string' },\n title: { default: '', validate: 'string' },\n },\n parseDOM: [\n {\n tag: 'img[src]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n src: dom.getAttribute('src') || '',\n alt: dom.getAttribute('alt') || '',\n title: dom.getAttribute('title') || dom.getAttribute('alt') || '',\n }\n },\n },\n ],\n toDOM: (node) => {\n return ['img', { ...ctx.get(imageAttr.key)(node), ...node.attrs }]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'image',\n runner: (state, node, type) => {\n const url = node.url as string\n const alt = node.alt as string\n const title = node.title as string\n state.addNode(type, {\n src: url,\n alt,\n title,\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'image',\n runner: (state, node) => {\n state.addNode('image', undefined, undefined, {\n title: node.attrs.title,\n url: node.attrs.src,\n alt: node.attrs.alt,\n })\n },\n },\n }\n})\n\nwithMeta(imageSchema.node, {\n displayName: 'NodeSchema<image>',\n group: 'Image',\n})\n\nwithMeta(imageSchema.ctx, {\n displayName: 'NodeSchemaCtx<image>',\n group: 'Image',\n})\n\n/// @internal\nexport interface UpdateImageCommandPayload {\n src?: string\n title?: string\n alt?: string\n}\n\n/// This command will insert a image node.\n/// You can pass a payload to set `src`, `alt` and `title` for the image node.\nexport const insertImageCommand = $command(\n 'InsertImage',\n (ctx) =>\n (payload: UpdateImageCommandPayload = {}) =>\n (state, dispatch) => {\n if (!dispatch) return true\n\n const { src = '', alt = '', title = '' } = payload\n\n const node = imageSchema.type(ctx).create({ src, alt, title })\n if (!node) return true\n\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView())\n return true\n }\n)\n\nwithMeta(insertImageCommand, {\n displayName: 'Command<insertImageCommand>',\n group: 'Image',\n})\n\n/// This command will update the selected image node.\n/// You can pass a payload to update `src`, `alt` and `title` for the image node.\nexport const updateImageCommand = $command(\n 'UpdateImage',\n (ctx) =>\n (payload: UpdateImageCommandPayload = {}) =>\n (state, dispatch) => {\n const nodeWithPos = findSelectedNodeOfType(\n state.selection,\n imageSchema.type(ctx)\n )\n if (!nodeWithPos) return false\n\n const { node, pos } = nodeWithPos\n\n const newAttrs = { ...node.attrs }\n const { src, alt, title } = payload\n if (src !== undefined) newAttrs.src = src\n if (alt !== undefined) newAttrs.alt = alt\n if (title !== undefined) newAttrs.title = title\n\n dispatch?.(\n state.tr.setNodeMarkup(pos, undefined, newAttrs).scrollIntoView()\n )\n return true\n }\n)\n\nwithMeta(updateImageCommand, {\n displayName: 'Command<updateImageCommand>',\n group: 'Image',\n})\n\n/// This input rule will insert a image node.\n/// You can input `![alt](src \"title\")` to insert a image node.\n/// The `title` is optional.\nexport const insertImageInputRule = $inputRule(\n (ctx) =>\n new InputRule(\n /!\\[(?<alt>.*?)]\\((?<filename>.*?)\\s*(?=\"|\\))\"?(?<title>[^\"]+)?\"?\\)/,\n (state, match, start, end) => {\n const [matched, alt, src = '', title] = match\n if (matched)\n return state.tr.replaceWith(\n start,\n end,\n imageSchema.type(ctx).create({ src, alt, title })\n )\n\n return null\n }\n )\n)\n\nwithMeta(insertImageInputRule, {\n displayName: 'InputRule<insertImageInputRule>',\n group: 'Image',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { Selection, TextSelection } from '@milkdown/prose/state'\nimport { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the hardbreak node.\n///\n/// Default value:\n/// - `data-is-inline` - Whether the hardbreak is inline.\nexport const hardbreakAttr = $nodeAttr('hardbreak', (node) => {\n return {\n 'data-type': 'hardbreak',\n 'data-is-inline': node.attrs.isInline,\n }\n})\n\nwithMeta(hardbreakAttr, {\n displayName: 'Attr<hardbreak>',\n group: 'Hardbreak',\n})\n\n/// Hardbreak node schema.\nexport const hardbreakSchema = $nodeSchema('hardbreak', (ctx) => ({\n inline: true,\n group: 'inline',\n attrs: {\n isInline: {\n default: false,\n validate: 'boolean',\n },\n },\n selectable: false,\n parseDOM: [\n { tag: 'br' },\n {\n tag: 'span[data-type=\"hardbreak\"]',\n getAttrs: () => ({ isInline: true }),\n },\n ],\n toDOM: (node) =>\n node.attrs.isInline\n ? ['span', ctx.get(hardbreakAttr.key)(node), ' ']\n : ['br', ctx.get(hardbreakAttr.key)(node)],\n parseMarkdown: {\n match: ({ type }) => type === 'break',\n runner: (state, node, type) => {\n state.addNode(type, {\n isInline: Boolean(\n (node.data as undefined | { isInline: boolean })?.isInline\n ),\n })\n },\n },\n leafText: () => '\\n',\n toMarkdown: {\n match: (node) => node.type.name === 'hardbreak',\n runner: (state, node) => {\n if (node.attrs.isInline) state.addNode('text', undefined, '\\n')\n else state.addNode('break')\n },\n },\n}))\n\nwithMeta(hardbreakSchema.node, {\n displayName: 'NodeSchema<hardbreak>',\n group: 'Hardbreak',\n})\n\nwithMeta(hardbreakSchema.ctx, {\n displayName: 'NodeSchemaCtx<hardbreak>',\n group: 'Hardbreak',\n})\n\n/// Command to insert a hardbreak.\nexport const insertHardbreakCommand = $command(\n 'InsertHardbreak',\n (ctx) => () => (state, dispatch) => {\n const { selection, tr } = state\n if (!(selection instanceof TextSelection)) return false\n\n if (selection.empty) {\n // Transform two successive hardbreak into a new line\n const node = selection.$from.node()\n if (node.childCount > 0 && node.lastChild?.type.name === 'hardbreak') {\n dispatch?.(\n tr\n .replaceRangeWith(\n selection.to - 1,\n selection.to,\n state.schema.node('paragraph')\n )\n .setSelection(Selection.near(tr.doc.resolve(selection.to)))\n .scrollIntoView()\n )\n return true\n }\n }\n dispatch?.(\n tr\n .setMeta('hardbreak', true)\n .replaceSelectionWith(hardbreakSchema.type(ctx).create())\n .scrollIntoView()\n )\n return true\n }\n)\n\nwithMeta(insertHardbreakCommand, {\n displayName: 'Command<insertHardbreakCommand>',\n group: 'Hardbreak',\n})\n\n/// Keymap for the hardbreak node.\n/// - `Shift-Enter` - Insert a hardbreak.\nexport const hardbreakKeymap = $useKeymap('hardbreakKeymap', {\n InsertHardbreak: {\n shortcuts: 'Shift-Enter',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(insertHardbreakCommand.key)\n },\n },\n})\n\nwithMeta(hardbreakKeymap.ctx, {\n displayName: 'KeymapCtx<hardbreak>',\n group: 'Hardbreak',\n})\n\nwithMeta(hardbreakKeymap.shortcuts, {\n displayName: 'Keymap<hardbreak>',\n group: 'Hardbreak',\n})\n", "import { InputRule } from '@milkdown/prose/inputrules'\nimport { Selection } from '@milkdown/prose/state'\nimport { $command, $inputRule, $nodeAttr, $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { paragraphSchema } from './paragraph'\n\n/// HTML attributes for the hr node.\nexport const hrAttr = $nodeAttr('hr')\n\nwithMeta(hrAttr, {\n displayName: 'Attr<hr>',\n group: 'Hr',\n})\n\n/// Hr node schema.\nexport const hrSchema = $nodeSchema('hr', (ctx) => ({\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n toDOM: (node) => ['hr', ctx.get(hrAttr.key)(node)],\n parseMarkdown: {\n match: ({ type }) => type === 'thematicBreak',\n runner: (state, _, type) => {\n state.addNode(type)\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'hr',\n runner: (state) => {\n state.addNode('thematicBreak')\n },\n },\n}))\n\nwithMeta(hrSchema.node, {\n displayName: 'NodeSchema<hr>',\n group: 'Hr',\n})\n\nwithMeta(hrSchema.ctx, {\n displayName: 'NodeSchemaCtx<hr>',\n group: 'Hr',\n})\n\n/// Input rule to insert a hr.\n/// For example, `---` will be converted to a hr.\nexport const insertHrInputRule = $inputRule(\n (ctx) =>\n new InputRule(/^(?:---|___\\s|\\*\\*\\*\\s)$/, (state, match, start, end) => {\n const { tr } = state\n\n if (match[0]) tr.replaceWith(start - 1, end, hrSchema.type(ctx).create())\n\n return tr\n })\n)\n\nwithMeta(insertHrInputRule, {\n displayName: 'InputRule<insertHrInputRule>',\n group: 'Hr',\n})\n\n/// Command to insert a hr.\nexport const insertHrCommand = $command(\n 'InsertHr',\n (ctx) => () => (state, dispatch) => {\n if (!dispatch) return true\n\n const paragraph = paragraphSchema.node.type(ctx).create()\n const { tr, selection } = state\n const { from } = selection\n const node = hrSchema.type(ctx).create()\n if (!node) return true\n\n const _tr = tr.replaceSelectionWith(node).insert(from, paragraph)\n const sel = Selection.findFrom(_tr.doc.resolve(from), 1, true)\n if (!sel) return true\n\n dispatch(_tr.setSelection(sel).scrollIntoView())\n return true\n }\n)\n\nwithMeta(insertHrCommand, {\n displayName: 'Command<insertHrCommand>',\n group: 'Hr',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { wrapIn } from '@milkdown/prose/commands'\nimport { wrappingInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for bullet list node.\nexport const bulletListAttr = $nodeAttr('bulletList')\n\nwithMeta(bulletListAttr, {\n displayName: 'Attr<bulletList>',\n group: 'BulletList',\n})\n\n/// Schema for bullet list node.\nexport const bulletListSchema = $nodeSchema('bullet_list', (ctx) => {\n return {\n content: 'listItem+',\n group: 'block',\n attrs: {\n spread: {\n default: false,\n validate: 'boolean',\n },\n },\n parseDOM: [\n {\n tag: 'ul',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n spread: dom.dataset.spread === 'true',\n }\n },\n },\n ],\n toDOM: (node) => {\n return [\n 'ul',\n {\n ...ctx.get(bulletListAttr.key)(node),\n 'data-spread': node.attrs.spread,\n },\n 0,\n ]\n },\n parseMarkdown: {\n match: ({ type, ordered }) => type === 'list' && !ordered,\n runner: (state, node, type) => {\n const spread = node.spread != null ? `${node.spread}` : 'false'\n state.openNode(type, { spread }).next(node.children).closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'bullet_list',\n runner: (state, node) => {\n state\n .openNode('list', undefined, {\n ordered: false,\n spread: node.attrs.spread,\n })\n .next(node.content)\n .closeNode()\n },\n },\n }\n})\n\nwithMeta(bulletListSchema.node, {\n displayName: 'NodeSchema<bulletList>',\n group: 'BulletList',\n})\n\nwithMeta(bulletListSchema.ctx, {\n displayName: 'NodeSchemaCtx<bulletList>',\n group: 'BulletList',\n})\n\n/// Input rule for wrapping a block in bullet list node.\nexport const wrapInBulletListInputRule = $inputRule((ctx) =>\n wrappingInputRule(/^\\s*([-+*])\\s$/, bulletListSchema.type(ctx))\n)\n\nwithMeta(wrapInBulletListInputRule, {\n displayName: 'InputRule<wrapInBulletListInputRule>',\n group: 'BulletList',\n})\n\n/// Command for creating bullet list node.\nexport const wrapInBulletListCommand = $command(\n 'WrapInBulletList',\n (ctx) => () => wrapIn(bulletListSchema.type(ctx))\n)\n\nwithMeta(wrapInBulletListCommand, {\n displayName: 'Command<wrapInBulletListCommand>',\n group: 'BulletList',\n})\n\n/// Keymap for bullet list node.\n/// - `Mod-Alt-8`: Wrap a block in bullet list.\nexport const bulletListKeymap = $useKeymap('bulletListKeymap', {\n WrapInBulletList: {\n shortcuts: 'Mod-Alt-8',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInBulletListCommand.key)\n },\n },\n})\n\nwithMeta(bulletListKeymap.ctx, {\n displayName: 'KeymapCtx<bulletListKeymap>',\n group: 'BulletList',\n})\n\nwithMeta(bulletListKeymap.shortcuts, {\n displayName: 'Keymap<bulletListKeymap>',\n group: 'BulletList',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { wrapIn } from '@milkdown/prose/commands'\nimport { wrappingInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for ordered list node.\nexport const orderedListAttr = $nodeAttr('orderedList')\n\nwithMeta(orderedListAttr, {\n displayName: 'Attr<orderedList>',\n group: 'OrderedList',\n})\n\n/// Schema for ordered list node.\nexport const orderedListSchema = $nodeSchema('ordered_list', (ctx) => ({\n content: 'listItem+',\n group: 'block',\n attrs: {\n order: {\n default: 1,\n validate: 'number',\n },\n spread: {\n default: false,\n validate: 'boolean',\n },\n },\n parseDOM: [\n {\n tag: 'ol',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n spread: dom.dataset.spread,\n order: dom.hasAttribute('start')\n ? Number(dom.getAttribute('start'))\n : 1,\n }\n },\n },\n ],\n toDOM: (node) => [\n 'ol',\n {\n ...ctx.get(orderedListAttr.key)(node),\n ...(node.attrs.order === 1 ? {} : { start: node.attrs.order }),\n 'data-spread': node.attrs.spread,\n },\n 0,\n ],\n parseMarkdown: {\n match: ({ type, ordered }) => type === 'list' && !!ordered,\n runner: (state, node, type) => {\n const spread = node.spread != null ? `${node.spread}` : 'true'\n state\n .openNode(type, { spread, order: node.start ?? 1 })\n .next(node.children)\n .closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'ordered_list',\n runner: (state, node) => {\n state.openNode('list', undefined, {\n ordered: true,\n start: node.attrs.order ?? 1,\n spread: node.attrs.spread === 'true',\n })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(orderedListSchema.node, {\n displayName: 'NodeSchema<orderedList>',\n group: 'OrderedList',\n})\n\nwithMeta(orderedListSchema.ctx, {\n displayName: 'NodeSchemaCtx<orderedList>',\n group: 'OrderedList',\n})\n\n/// Input rule for wrapping a block in ordered list node.\nexport const wrapInOrderedListInputRule = $inputRule((ctx) =>\n wrappingInputRule(\n /^\\s*(\\d+)\\.\\s$/,\n orderedListSchema.type(ctx),\n (match) => ({ order: Number(match[1]) }),\n (match, node) => node.childCount + node.attrs.order === Number(match[1])\n )\n)\n\nwithMeta(wrapInOrderedListInputRule, {\n displayName: 'InputRule<wrapInOrderedListInputRule>',\n group: 'OrderedList',\n})\n\n/// Command for wrapping a block in ordered list node.\nexport const wrapInOrderedListCommand = $command(\n 'WrapInOrderedList',\n (ctx) => () => wrapIn(orderedListSchema.type(ctx))\n)\n\nwithMeta(wrapInOrderedListCommand, {\n displayName: 'Command<wrapInOrderedListCommand>',\n group: 'OrderedList',\n})\n\n/// Keymap for ordered list node.\n/// - `Mod-Alt-7`: Wrap a block in ordered list.\nexport const orderedListKeymap = $useKeymap('orderedListKeymap', {\n WrapInOrderedList: {\n shortcuts: 'Mod-Alt-7',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInOrderedListCommand.key)\n },\n },\n})\n\nwithMeta(orderedListKeymap.ctx, {\n displayName: 'KeymapCtx<orderedList>',\n group: 'OrderedList',\n})\n\nwithMeta(orderedListKeymap.shortcuts, {\n displayName: 'Keymap<orderedList>',\n group: 'OrderedList',\n})\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { joinBackward } from '@milkdown/prose/commands'\nimport {\n liftListItem,\n sinkListItem,\n splitListItem,\n} from '@milkdown/prose/schema-list'\nimport { type Command, TextSelection } from '@milkdown/prose/state'\nimport { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for list item node.\nexport const listItemAttr = $nodeAttr('listItem')\n\nwithMeta(listItemAttr, {\n displayName: 'Attr<listItem>',\n group: 'ListItem',\n})\n\n/// Schema for list item node.\nexport const listItemSchema = $nodeSchema('list_item', (ctx) => ({\n group: 'listItem',\n content: 'paragraph block*',\n attrs: {\n label: {\n default: '•',\n validate: 'string',\n },\n listType: {\n default: 'bullet',\n validate: 'string',\n },\n spread: {\n default: true,\n validate: 'boolean',\n },\n },\n defining: true,\n parseDOM: [\n {\n tag: 'li',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n listType: dom.dataset.listType,\n spread: dom.dataset.spread === 'true',\n }\n },\n },\n ],\n toDOM: (node) => [\n 'li',\n {\n ...ctx.get(listItemAttr.key)(node),\n 'data-label': node.attrs.label,\n 'data-list-type': node.attrs.listType,\n 'data-spread': node.attrs.spread,\n },\n 0,\n ],\n parseMarkdown: {\n match: ({ type }) => type === 'listItem',\n runner: (state, node, type) => {\n const label = node.label != null ? `${node.label}.` : '•'\n const listType = node.label != null ? 'ordered' : 'bullet'\n const spread = node.spread != null ? `${node.spread}` : 'true'\n state.openNode(type, { label, listType, spread })\n state.next(node.children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'list_item',\n runner: (state, node) => {\n state.openNode('listItem', undefined, {\n spread: node.attrs.spread,\n })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(listItemSchema.node, {\n displayName: 'NodeSchema<listItem>',\n group: 'ListItem',\n})\n\nwithMeta(listItemSchema.ctx, {\n displayName: 'NodeSchemaCtx<listItem>',\n group: 'ListItem',\n})\n\n/// The command to sink list item.\n///\n/// For example:\n/// ```md\n/// * List item 1\n/// * List item 2 <- cursor here\n/// ```\n/// Will get:\n/// ```md\n/// * List item 1\n/// * List item 2\n/// ```\nexport const sinkListItemCommand = $command(\n 'SinkListItem',\n (ctx) => () => sinkListItem(listItemSchema.type(ctx))\n)\n\nwithMeta(sinkListItemCommand, {\n displayName: 'Command<sinkListItemCommand>',\n group: 'ListItem',\n})\n\n/// The command to lift list item.\n///\n/// For example:\n/// ```md\n/// * List item 1\n/// * List item 2 <- cursor here\n/// ```\n/// Will get:\n/// ```md\n/// * List item 1\n/// * List item 2\n/// ```\nexport const liftListItemCommand = $command(\n 'LiftListItem',\n (ctx) => () => liftListItem(listItemSchema.type(ctx))\n)\n\nwithMeta(liftListItemCommand, {\n displayName: 'Command<liftListItemCommand>',\n group: 'ListItem',\n})\n\n/// The command to split a list item.\n///\n/// For example:\n/// ```md\n/// * List item 1\n/// * List item 2 <- cursor here\n/// ```\n/// Will get:\n/// ```md\n/// * List item 1\n/// * List item 2\n/// * <- cursor here\n/// ```\nexport const splitListItemCommand = $command(\n 'SplitListItem',\n (ctx) => () => splitListItem(listItemSchema.type(ctx))\n)\n\nwithMeta(splitListItemCommand, {\n displayName: 'Command<splitListItemCommand>',\n group: 'ListItem',\n})\n\nfunction liftFirstListItem(ctx: Ctx): Command {\n return (state, dispatch, view) => {\n const { selection } = state\n if (!(selection instanceof TextSelection)) return false\n\n const { empty, $from } = selection\n\n // selection should be empty and at the start of the node\n if (!empty || $from.parentOffset !== 0) return false\n\n const parentItem = $from.node(-1)\n // selection should be in list item\n if (parentItem.type !== listItemSchema.type(ctx)) return false\n\n return joinBackward(state, dispatch, view)\n }\n}\n\n/// The command to remove list item **only if**:\n///\n/// - Selection is at the start of the list item.\n/// - List item is the only child of the list.\n///\n/// Most of the time, you shouldn't use this command directly.\nexport const liftFirstListItemCommand = $command(\n 'LiftFirstListItem',\n (ctx) => () => liftFirstListItem(ctx)\n)\n\nwithMeta(liftFirstListItemCommand, {\n displayName: 'Command<liftFirstListItemCommand>',\n group: 'ListItem',\n})\n\n/// Keymap for list item node.\n/// - `<Enter>`: Split the current list item.\n/// - `<Tab>/<Mod-]>`: Sink the current list item.\n/// - `<Shift-Tab>/<Mod-[>`: Lift the current list item.\nexport const listItemKeymap = $useKeymap('listItemKeymap', {\n NextListItem: {\n shortcuts: 'Enter',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(splitListItemCommand.key)\n },\n },\n SinkListItem: {\n shortcuts: ['Tab', 'Mod-]'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(sinkListItemCommand.key)\n },\n },\n LiftListItem: {\n shortcuts: ['Shift-Tab', 'Mod-['],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(liftListItemCommand.key)\n },\n },\n LiftFirstListItem: {\n shortcuts: ['Backspace', 'Delete'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(liftFirstListItemCommand.key)\n },\n },\n})\n\nwithMeta(listItemKeymap.ctx, {\n displayName: 'KeymapCtx<listItem>',\n group: 'ListItem',\n})\n\nwithMeta(listItemKeymap.shortcuts, {\n displayName: 'Keymap<listItem>',\n group: 'ListItem',\n})\n", "import { $node } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// The bottom-level node.\nexport const textSchema = $node('text', () => ({\n group: 'inline',\n parseMarkdown: {\n match: ({ type }) => type === 'text',\n runner: (state, node) => {\n state.addText(node.value as string)\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'text',\n runner: (state, node) => {\n state.addNode('text', undefined, node.text as string)\n },\n },\n}))\n\nwithMeta(textSchema, {\n displayName: 'NodeSchema<text>',\n group: 'Text',\n})\n", "import { $nodeAttr, $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\nexport const htmlAttr = $nodeAttr('html')\n\nwithMeta(htmlAttr, {\n displayName: 'Attr<html>',\n group: 'Html',\n})\n\nexport const htmlSchema = $nodeSchema('html', (ctx) => {\n return {\n atom: true,\n group: 'inline',\n inline: true,\n attrs: {\n value: {\n default: '',\n validate: 'string',\n },\n },\n toDOM: (node) => {\n const span = document.createElement('span')\n const attr = {\n ...ctx.get(htmlAttr.key)(node),\n 'data-value': node.attrs.value,\n 'data-type': 'html',\n }\n span.textContent = node.attrs.value\n return ['span', attr, node.attrs.value]\n },\n parseDOM: [\n {\n tag: 'span[data-type=\"html\"]',\n getAttrs: (dom) => {\n return {\n value: dom.dataset.value ?? '',\n }\n },\n },\n ],\n parseMarkdown: {\n match: ({ type }) => Boolean(type === 'html'),\n runner: (state, node, type) => {\n state.addNode(type, { value: node.value as string })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'html',\n runner: (state, node) => {\n state.addNode('html', undefined, node.attrs.value)\n },\n },\n }\n})\n\nwithMeta(htmlSchema.node, {\n displayName: 'NodeSchema<html>',\n group: 'Html',\n})\n\nwithMeta(htmlSchema.ctx, {\n displayName: 'NodeSchemaCtx<html>',\n group: 'Html',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n emphasisAttr,\n emphasisSchema,\n inlineCodeAttr,\n inlineCodeSchema,\n linkAttr,\n linkSchema,\n strongAttr,\n strongSchema,\n} from '../mark'\nimport {\n blockquoteAttr,\n blockquoteSchema,\n bulletListAttr,\n bulletListSchema,\n codeBlockAttr,\n codeBlockSchema,\n docSchema,\n hardbreakAttr,\n hardbreakSchema,\n headingAttr,\n headingIdGenerator,\n headingSchema,\n hrAttr,\n hrSchema,\n htmlAttr,\n htmlSchema,\n imageAttr,\n imageSchema,\n listItemAttr,\n listItemSchema,\n orderedListAttr,\n orderedListSchema,\n paragraphAttr,\n paragraphSchema,\n textSchema,\n} from '../node'\n\n/// @internal\nexport const schema: MilkdownPlugin[] = [\n docSchema,\n\n paragraphAttr,\n paragraphSchema,\n\n headingIdGenerator,\n headingAttr,\n headingSchema,\n\n hardbreakAttr,\n hardbreakSchema,\n\n blockquoteAttr,\n blockquoteSchema,\n\n codeBlockAttr,\n codeBlockSchema,\n\n hrAttr,\n hrSchema,\n\n imageAttr,\n imageSchema,\n\n bulletListAttr,\n bulletListSchema,\n\n orderedListAttr,\n orderedListSchema,\n\n listItemAttr,\n listItemSchema,\n\n emphasisAttr,\n emphasisSchema,\n\n strongAttr,\n strongSchema,\n\n inlineCodeAttr,\n inlineCodeSchema,\n\n linkAttr,\n linkSchema,\n\n htmlAttr,\n htmlSchema,\n\n textSchema,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n emphasisStarInputRule,\n emphasisUnderscoreInputRule,\n inlineCodeInputRule,\n strongInputRule,\n} from '../mark'\nimport {\n createCodeBlockInputRule,\n insertHrInputRule,\n wrapInBlockquoteInputRule,\n wrapInBulletListInputRule,\n wrapInHeadingInputRule,\n wrapInOrderedListInputRule,\n} from '../node'\n\n/// @internal\nexport const inputRules: MilkdownPlugin[] = [\n wrapInBlockquoteInputRule,\n wrapInBulletListInputRule,\n wrapInOrderedListInputRule,\n createCodeBlockInputRule,\n insertHrInputRule,\n wrapInHeadingInputRule,\n].flat()\n\n/// @internal\nexport const markInputRules: MilkdownPlugin[] = [\n emphasisStarInputRule,\n emphasisUnderscoreInputRule,\n inlineCodeInputRule,\n strongInputRule,\n]\n", "import { findNodeInSelection } from '@milkdown/prose'\nimport {\n Node,\n type Attrs,\n type MarkType,\n type NodeType,\n} from '@milkdown/prose/model'\nimport { TextSelection } from '@milkdown/prose/state'\nimport { findWrapping } from '@milkdown/prose/transform'\nimport { $command } from '@milkdown/utils'\n\n/// A command to check if a mark is selected.\nexport const isMarkSelectedCommand = $command(\n 'IsMarkSelected',\n () => (markType?: MarkType) => (state) => {\n if (!markType) return false\n const { doc, selection } = state\n const hasLink = doc.rangeHasMark(selection.from, selection.to, markType)\n return hasLink\n }\n)\n\n/// A command to check if a node is selected.\nexport const isNodeSelectedCommand = $command(\n 'IsNoteSelected',\n () => (nodeType?: NodeType) => (state) => {\n if (!nodeType) return false\n const result = findNodeInSelection(state, nodeType)\n return result.hasNode\n }\n)\n\n/// A command to clear text in the current block.\nexport const clearTextInCurrentBlockCommand = $command(\n 'ClearTextInCurrentBlock',\n () => () => (state, dispatch) => {\n let tr = state.tr\n const { $from, $to } = tr.selection\n const { pos: from } = $from\n const { pos: right } = $to\n const left = from - $from.node().content.size\n if (left < 0) return false\n\n tr = tr.deleteRange(left, right)\n dispatch?.(tr)\n return true\n }\n)\n\n/// Set block type to target block and attribute.\nexport const setBlockTypeCommand = $command(\n 'SetBlockType',\n () =>\n (payload?: { nodeType: NodeType; attrs?: Attrs | null }) =>\n (state, dispatch) => {\n const { nodeType, attrs = null } = payload ?? {}\n if (!nodeType) return false\n const tr = state.tr\n const { from, to } = tr.selection\n try {\n tr.setBlockType(from, to, nodeType, attrs)\n } catch {\n return false\n }\n dispatch?.(tr)\n return true\n }\n)\n\n/// A command to wrap the current block with a block type.\nexport const wrapInBlockTypeCommand = $command(\n 'WrapInBlockType',\n () =>\n (payload?: { nodeType: NodeType; attrs?: Attrs | null }) =>\n (state, dispatch) => {\n const { nodeType, attrs = null } = payload ?? {}\n if (!nodeType) return false\n\n let tr = state.tr\n\n try {\n const { $from, $to } = tr.selection\n const blockRange = $from.blockRange($to)\n const wrapping = blockRange && findWrapping(blockRange, nodeType, attrs)\n if (!wrapping) return false\n tr = tr.wrap(blockRange, wrapping)\n } catch {\n return false\n }\n\n dispatch?.(tr)\n return true\n }\n)\n\n/// A command to add a block type to the current selection.\nexport const addBlockTypeCommand = $command(\n 'AddBlockType',\n () =>\n (payload?: { nodeType: NodeType | Node; attrs?: Attrs | null }) =>\n (state, dispatch) => {\n const { nodeType, attrs = null } = payload ?? {}\n if (!nodeType) return false\n const tr = state.tr\n\n try {\n const node =\n nodeType instanceof Node ? nodeType : nodeType.createAndFill(attrs)\n if (!node) return false\n\n tr.replaceSelectionWith(node)\n } catch {\n return false\n }\n dispatch?.(tr)\n return true\n }\n)\n\n/// A command to select text near a position.\nexport const selectTextNearPosCommand = $command(\n 'SelectTextNearPos',\n () => (payload?: { pos?: number }) => (state, dispatch) => {\n const { pos } = payload ?? {}\n if (pos == null) return false\n\n const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\n const tr = state.tr\n try {\n const $pos = state.doc.resolve(clamp(pos, 0, state.doc.content.size))\n tr.setSelection(TextSelection.near($pos))\n } catch {\n return false\n }\n dispatch?.(tr.scrollIntoView())\n return true\n }\n)\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n addBlockTypeCommand,\n clearTextInCurrentBlockCommand,\n isMarkSelectedCommand,\n isNodeSelectedCommand,\n selectTextNearPosCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n} from '../commands'\nimport {\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleLinkCommand,\n toggleStrongCommand,\n updateLinkCommand,\n} from '../mark'\nimport {\n createCodeBlockCommand,\n downgradeHeadingCommand,\n insertHardbreakCommand,\n insertHrCommand,\n insertImageCommand,\n liftFirstListItemCommand,\n liftListItemCommand,\n sinkListItemCommand,\n splitListItemCommand,\n turnIntoTextCommand,\n updateImageCommand,\n wrapInBlockquoteCommand,\n wrapInBulletListCommand,\n wrapInHeadingCommand,\n wrapInOrderedListCommand,\n} from '../node'\n\n/// @internal\nexport const commands: MilkdownPlugin[] = [\n turnIntoTextCommand,\n wrapInBlockquoteCommand,\n wrapInHeadingCommand,\n downgradeHeadingCommand,\n createCodeBlockCommand,\n insertHardbreakCommand,\n insertHrCommand,\n\n insertImageCommand,\n updateImageCommand,\n\n wrapInOrderedListCommand,\n wrapInBulletListCommand,\n sinkListItemCommand,\n splitListItemCommand,\n liftListItemCommand,\n liftFirstListItemCommand,\n\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n\n toggleLinkCommand,\n updateLinkCommand,\n\n isMarkSelectedCommand,\n isNodeSelectedCommand,\n\n clearTextInCurrentBlockCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n addBlockTypeCommand,\n selectTextNearPosCommand,\n]\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { emphasisKeymap, inlineCodeKeymap, strongKeymap } from '../mark'\nimport {\n blockquoteKeymap,\n bulletListKeymap,\n codeBlockKeymap,\n hardbreakKeymap,\n headingKeymap,\n listItemKeymap,\n orderedListKeymap,\n paragraphKeymap,\n} from '../node'\n\n/// @internal\nexport const keymap: MilkdownPlugin[] = [\n blockquoteKeymap,\n codeBlockKeymap,\n hardbreakKeymap,\n headingKeymap,\n listItemKeymap,\n orderedListKeymap,\n bulletListKeymap,\n paragraphKeymap,\n\n emphasisKeymap,\n inlineCodeKeymap,\n strongKeymap,\n].flat()\n", "import { $remark } from '@milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to add order in list for remark AST.\nexport const remarkAddOrderInListPlugin = $remark(\n 'remarkAddOrderInList',\n () => () => (tree) => {\n visit(tree, 'list', (node) => {\n if (node.ordered) {\n const start = node.start ?? 1\n node.children.forEach((child, index) => {\n ;(child as unknown as Record<string, number>).label = index + start\n })\n }\n })\n }\n)\n\nwithMeta(remarkAddOrderInListPlugin.plugin, {\n displayName: 'Remark<remarkAddOrderInListPlugin>',\n group: 'Remark',\n})\n\nwithMeta(remarkAddOrderInListPlugin.options, {\n displayName: 'RemarkConfig<remarkAddOrderInListPlugin>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to add inline line break for remark AST.\n/// The inline line break should be treated as a `space`.\n/// And the normal line break should be treated as a `LF`.\nexport const remarkLineBreak = $remark(\n 'remarkLineBreak',\n () => () => (tree: Node) => {\n const find = /[\\t ]*(?:\\r?\\n|\\r)/g\n visit(\n tree,\n 'text',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n if (!node.value || typeof node.value !== 'string') return\n\n const result = []\n let start = 0\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n\n if (start !== position)\n result.push({\n type: 'text',\n value: node.value.slice(start, position),\n })\n\n result.push({ type: 'break', data: { isInline: true } })\n start = position + match[0].length\n match = find.exec(node.value)\n }\n\n const hasResultAndIndex =\n result.length > 0 && parent && typeof index === 'number'\n\n if (!hasResultAndIndex) return\n\n if (start < node.value.length)\n result.push({ type: 'text', value: node.value.slice(start) })\n\n parent.children.splice(index, 1, ...result)\n return index + result.length\n }\n )\n }\n)\n\nwithMeta(remarkLineBreak.plugin, {\n displayName: 'Remark<remarkLineBreak>',\n group: 'Remark',\n})\n\nwithMeta(remarkLineBreak.options, {\n displayName: 'RemarkConfig<remarkLineBreak>',\n group: 'Remark',\n})\n", "import { $remark } from '@milkdown/utils'\nimport remarkInlineLinks from 'remark-inline-links'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin wraps [remark-inline-links](https://github.com/remarkjs/remark-inline-links).\nexport const remarkInlineLinkPlugin = $remark(\n 'remarkInlineLink',\n () => remarkInlineLinks\n)\n\nwithMeta(remarkInlineLinkPlugin.plugin, {\n displayName: 'Remark<remarkInlineLinkPlugin>',\n group: 'Remark',\n})\n\nwithMeta(remarkInlineLinkPlugin.options, {\n displayName: 'RemarkConfig<remarkInlineLinkPlugin>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\nconst isParent = (node: Node): node is Node & { children: Node[] } =>\n !!(node as Node & { children: Node[] }).children\nconst isHTML = (\n node: Node\n): node is Node & { children: Node[]; value: unknown } => node.type === 'html'\n\nfunction flatMapWithDepth(\n ast: Node,\n fn: (node: Node, index: number, parent: Node | null) => Node[]\n) {\n return transform(ast, 0, null)[0]\n\n function transform(node: Node, index: number, parent: Node | null) {\n if (isParent(node)) {\n const out = []\n for (let i = 0, n = node.children.length; i < n; i++) {\n const nthChild = node.children[i]\n if (nthChild) {\n const xs = transform(nthChild, i, node)\n if (xs) {\n for (let j = 0, m = xs.length; j < m; j++) {\n const item = xs[j]\n if (item) out.push(item)\n }\n }\n }\n }\n node.children = out\n }\n\n return fn(node, index, parent)\n }\n}\n\n// List of container node types that can contain block-level content\n// and thus may need HTML content to be wrapped in paragraphs\nconst BLOCK_CONTAINER_TYPES = ['root', 'blockquote', 'listItem']\n\n/// @internal\n/// This plugin should be deprecated after we support HTML.\nexport const remarkHtmlTransformer = $remark(\n 'remarkHTMLTransformer',\n () => () => (tree: Node) => {\n flatMapWithDepth(tree, (node, _index, parent) => {\n if (!isHTML(node)) return [node]\n\n // If the parent is a block container that expects block content,\n // wrap the HTML in a paragraph node\n if (parent && BLOCK_CONTAINER_TYPES.includes(parent.type)) {\n node.children = [{ ...node }]\n delete node.value\n ;(node as { type: string }).type = 'paragraph'\n }\n\n return [node]\n })\n }\n)\n\nwithMeta(remarkHtmlTransformer.plugin, {\n displayName: 'Remark<remarkHtmlTransformer>',\n group: 'Remark',\n})\n\nwithMeta(remarkHtmlTransformer.options, {\n displayName: 'RemarkConfig<remarkHtmlTransformer>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to keep the marker (`_` and `*`) of emphasis and strong nodes.\nexport const remarkMarker = $remark(\n 'remarkMarker',\n () => () => (tree, file) => {\n const getMarker = (node: Node) => {\n return (file.value as string).charAt(node.position!.start.offset!)\n }\n visit(\n tree,\n (node: Node) => ['strong', 'emphasis'].includes(node.type),\n (node: Node) => {\n ;(node as Node & { marker: string }).marker = getMarker(node)\n }\n )\n }\n)\n\nwithMeta(remarkMarker.plugin, {\n displayName: 'Remark<remarkMarker>',\n group: 'Remark',\n})\n\nwithMeta(remarkMarker.options, {\n displayName: 'RemarkConfig<remarkMarker>',\n group: 'Remark',\n})\n", "import { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { Decoration, DecorationSet } from '@milkdown/prose/view'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is to solve the [chrome 98 bug](https://discuss.prosemirror.net/t/cursor-jumps-at-the-end-of-line-when-it-betweens-two-inline-nodes/4641).\nexport const inlineNodesCursorPlugin = $prose(() => {\n let lock = false\n const inlineNodesCursorPluginKey = new PluginKey(\n 'MILKDOWN_INLINE_NODES_CURSOR'\n )\n const inlineNodesCursorPlugin: Plugin = new Plugin({\n key: inlineNodesCursorPluginKey,\n state: {\n init() {\n return false\n },\n apply(tr) {\n if (!tr.selection.empty) return false\n\n const pos = tr.selection.$from\n const left = pos.nodeBefore\n const right = pos.nodeAfter\n if (\n left &&\n right &&\n left.isInline &&\n !left.isText &&\n right.isInline &&\n !right.isText\n )\n return true\n\n return false\n },\n },\n props: {\n handleDOMEvents: {\n compositionend: (view, e) => {\n if (lock) {\n lock = false\n requestAnimationFrame(() => {\n const active = inlineNodesCursorPlugin.getState(view.state)\n if (active) {\n const from = view.state.selection.from\n e.preventDefault()\n view.dispatch(view.state.tr.insertText(e.data || '', from))\n }\n })\n\n return true\n }\n return false\n },\n compositionstart: (view) => {\n const active = inlineNodesCursorPlugin.getState(view.state)\n if (active) lock = true\n\n return false\n },\n beforeinput: (view, e) => {\n const active = inlineNodesCursorPlugin.getState(view.state)\n if (active && e instanceof InputEvent && e.data && !lock) {\n const from = view.state.selection.from\n e.preventDefault()\n view.dispatch(view.state.tr.insertText(e.data || '', from))\n\n return true\n }\n\n return false\n },\n },\n decorations(state) {\n const active = inlineNodesCursorPlugin.getState(state)\n if (active) {\n const pos = state.selection.$from\n const position = pos.pos\n const left = document.createElement('span')\n const leftDec = Decoration.widget(position, left, {\n side: -1,\n })\n const right = document.createElement('span')\n const rightDec = Decoration.widget(position, right)\n setTimeout(() => {\n left.contentEditable = 'true'\n right.contentEditable = 'true'\n })\n return DecorationSet.create(state.doc, [leftDec, rightDec])\n }\n return DecorationSet.empty\n },\n },\n })\n\n return inlineNodesCursorPlugin\n})\n\nwithMeta(inlineNodesCursorPlugin, {\n displayName: 'Prose<inlineNodesCursorPlugin>',\n group: 'Prose',\n})\n", "import { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { AddMarkStep, ReplaceStep } from '@milkdown/prose/transform'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { hardbreakSchema } from '../node'\n\n/// This plugin is used to clear the marks around the hardbreak node.\nexport const hardbreakClearMarkPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('MILKDOWN_HARDBREAK_MARKS'),\n appendTransaction: (trs, _oldState, newState) => {\n if (!trs.length) return\n\n const [tr] = trs\n if (!tr) return\n\n const [step] = tr.steps\n\n const isInsertHr = tr.getMeta('hardbreak')\n if (isInsertHr) {\n if (!(step instanceof ReplaceStep)) return\n\n const { from } = step as unknown as { from: number }\n return newState.tr.setNodeMarkup(\n from,\n hardbreakSchema.type(ctx),\n undefined,\n []\n )\n }\n\n const isAddMarkStep = step instanceof AddMarkStep\n if (isAddMarkStep) {\n let _tr = newState.tr\n const { from, to } = step as unknown as { from: number; to: number }\n newState.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === hardbreakSchema.type(ctx))\n _tr = _tr.setNodeMarkup(\n pos,\n hardbreakSchema.type(ctx),\n undefined,\n []\n )\n })\n\n return _tr\n }\n\n return undefined\n },\n })\n})\n\nwithMeta(hardbreakClearMarkPlugin, {\n displayName: 'Prose<hardbreakClearMarkPlugin>',\n group: 'Prose',\n})\n", "import { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $ctx, $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This slice contains the nodes that within which the hardbreak will be ignored.\nexport const hardbreakFilterNodes = $ctx(\n ['table', 'code_block'],\n 'hardbreakFilterNodes'\n)\n\nwithMeta(hardbreakFilterNodes, {\n displayName: 'Ctx<hardbreakFilterNodes>',\n group: 'Prose',\n})\n\n/// This plugin is used to filter the hardbreak node.\n/// If the hardbreak is going to be inserted within a node that is in the `hardbreakFilterNodes`, ignore it.\nexport const hardbreakFilterPlugin = $prose((ctx) => {\n const notIn = ctx.get(hardbreakFilterNodes.key)\n return new Plugin({\n key: new PluginKey('MILKDOWN_HARDBREAK_FILTER'),\n filterTransaction: (tr, state) => {\n const isInsertHr = tr.getMeta('hardbreak')\n const [step] = tr.steps\n if (isInsertHr && step) {\n const { from } = step as unknown as { from: number }\n const $from = state.doc.resolve(from)\n let curDepth = $from.depth\n let canApply = true\n while (curDepth > 0) {\n if (notIn.includes($from.node(curDepth).type.name)) canApply = false\n\n curDepth--\n }\n return canApply\n }\n return true\n },\n })\n})\n\nwithMeta(hardbreakFilterPlugin, {\n displayName: 'Prose<hardbreakFilterPlugin>',\n group: 'Prose',\n})\n", "import type { EditorView } from '@milkdown/prose/view'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { headingIdGenerator, headingSchema } from '../node/heading'\n\n/// This plugin is used to sync the heading id when the heading content changes.\n/// It will use the `headingIdGenerator` to generate the id.\nexport const syncHeadingIdPlugin = $prose((ctx) => {\n const headingIdPluginKey = new PluginKey('MILKDOWN_HEADING_ID')\n\n const updateId = (view: EditorView) => {\n if (view.composing) return\n\n const getId = ctx.get(headingIdGenerator.key)\n const tr = view.state.tr.setMeta('addToHistory', false)\n\n let found = false\n const idMap: Record<string, number> = {}\n\n view.state.doc.descendants((node, pos) => {\n if (node.type === headingSchema.type(ctx)) {\n if (node.textContent.trim().length === 0) return\n\n const attrs = node.attrs\n let id = getId(node)\n if (idMap[id]) {\n idMap[id]! += 1\n id += `-#${idMap[id]}`\n } else {\n idMap[id] = 1\n }\n\n if (attrs.id !== id) {\n found = true\n tr.setMeta(headingIdPluginKey, true).setNodeMarkup(pos, undefined, {\n ...attrs,\n id,\n })\n }\n }\n })\n\n if (found) view.dispatch(tr)\n }\n\n return new Plugin({\n key: headingIdPluginKey,\n view: (view) => {\n updateId(view)\n\n return {\n update: (view, prevState) => {\n if (view.state.doc.eq(prevState.doc)) return\n updateId(view)\n },\n }\n },\n })\n})\n\nwithMeta(syncHeadingIdPlugin, {\n displayName: 'Prose<syncHeadingIdPlugin>',\n group: 'Prose',\n})\n", "import type { Node } from '@milkdown/prose/model'\nimport type { EditorState, Transaction } from '@milkdown/prose/state'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { bulletListSchema } from '../node'\nimport { listItemSchema } from '../node/list-item'\nimport { orderedListSchema } from '../node/ordered-list'\n\n/// This plugin is used to keep the label of list item up to date in ordered list.\nexport const syncListOrderPlugin = $prose((ctx) => {\n const syncOrderLabel = (\n transactions: readonly Transaction[],\n _oldState: EditorState,\n newState: EditorState\n ) => {\n // Skip if composing or not editable\n if (\n !newState.selection ||\n transactions.some(\n (tr) => tr.getMeta('addToHistory') === false || !tr.isGeneric\n )\n )\n return null\n\n const orderedListType = orderedListSchema.type(ctx)\n const bulletListType = bulletListSchema.type(ctx)\n const listItemType = listItemSchema.type(ctx)\n\n const handleNodeItem = (\n attrs: Record<string, any>,\n index: number,\n order: number = 1\n ): boolean => {\n let changed = false\n const expectedLabel = `${index + order}.`\n if (attrs.label !== expectedLabel) {\n attrs.label = expectedLabel\n changed = true\n }\n\n return changed\n }\n\n let tr = newState.tr\n let needDispatch = false\n\n newState.doc.descendants(\n (node: Node, pos: number, parent: Node | null, index: number) => {\n if (node.type === bulletListType) {\n const base = node.maybeChild(0)\n if (\n base?.type === listItemType &&\n base.attrs.listType === 'ordered'\n ) {\n needDispatch = true\n tr.setNodeMarkup(pos, orderedListType, { spread: 'true' })\n\n node.descendants(\n (\n child: Node,\n pos: number,\n _parent: Node | null,\n index: number\n ) => {\n if (child.type === listItemType) {\n const attrs = { ...child.attrs }\n const changed = handleNodeItem(attrs, index)\n if (changed) tr = tr.setNodeMarkup(pos, undefined, attrs)\n }\n return false\n }\n )\n }\n } else if (\n node.type === listItemType &&\n parent?.type === orderedListType\n ) {\n const attrs = { ...node.attrs }\n let changed = false\n if (attrs.listType !== 'ordered') {\n attrs.listType = 'ordered'\n changed = true\n }\n\n const base = parent?.maybeChild(0)\n if (base)\n changed = handleNodeItem(attrs, index, parent?.attrs.order ?? 1)\n\n if (changed) {\n tr = tr.setNodeMarkup(pos, undefined, attrs)\n needDispatch = true\n }\n }\n }\n )\n\n return needDispatch ? tr.setMeta('addToHistory', false) : null\n }\n\n return new Plugin({\n key: new PluginKey('MILKDOWN_KEEP_LIST_ORDER'),\n appendTransaction: syncOrderLabel,\n })\n})\n\nwithMeta(syncListOrderPlugin, {\n displayName: 'Prose<syncListOrderPlugin>',\n group: 'Prose',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n hardbreakClearMarkPlugin,\n hardbreakFilterNodes,\n hardbreakFilterPlugin,\n inlineNodesCursorPlugin,\n remarkAddOrderInListPlugin,\n remarkHtmlTransformer,\n remarkInlineLinkPlugin,\n remarkLineBreak,\n remarkMarker,\n remarkPreserveEmptyLinePlugin,\n syncHeadingIdPlugin,\n syncListOrderPlugin,\n} from '../plugin'\n\n/// @internal\nexport const plugins: MilkdownPlugin[] = [\n hardbreakClearMarkPlugin,\n hardbreakFilterNodes,\n hardbreakFilterPlugin,\n\n inlineNodesCursorPlugin,\n\n remarkAddOrderInListPlugin,\n remarkInlineLinkPlugin,\n remarkLineBreak,\n remarkHtmlTransformer,\n remarkMarker,\n remarkPreserveEmptyLinePlugin,\n\n syncHeadingIdPlugin,\n syncListOrderPlugin,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n commands,\n inputRules,\n keymap,\n markInputRules,\n plugins,\n schema,\n} from './composed'\n\nexport * from './node'\nexport * from './mark'\nexport * from './plugin'\nexport * from './composed'\nexport * from './commands'\n\n/// The commonmark preset, includes all the plugins.\nexport const commonmark: MilkdownPlugin[] = [\n schema,\n inputRules,\n markInputRules,\n commands,\n keymap,\n plugins,\n].flat()\n", "// Because working with row and column-spanning cells is not quite\n// trivial, this code builds up a descriptive structure for a given\n// table node. The structures are cached with the (persistent) table\n// nodes as key, so that they only have to be recomputed when the\n// content of the table changes.\n//\n// This does mean that they have to store table-relative, not\n// document-relative positions. So code that uses them will typically\n// compute the start position of the table and offset positions passed\n// to or gotten from this structure by that amount.\nimport type { Attrs, Node } from 'prosemirror-model';\n\nimport type { CellAttrs } from './util';\n\n/**\n * @public\n */\nexport type ColWidths = number[];\n\n/**\n * @public\n */\nexport type Problem =\n | {\n type: 'colwidth mismatch';\n pos: number;\n colwidth: ColWidths;\n }\n | {\n type: 'collision';\n pos: number;\n row: number;\n n: number;\n }\n | {\n type: 'missing';\n row: number;\n n: number;\n }\n | {\n type: 'overlong_rowspan';\n pos: number;\n n: number;\n }\n | {\n type: 'zero_sized';\n };\n\nlet readFromCache: (key: Node) => TableMap | undefined;\nlet addToCache: (key: Node, value: TableMap) => TableMap;\n\n// Prefer using a weak map to cache table maps. Fall back on a\n// fixed-size cache if that's not supported.\nif (typeof WeakMap != 'undefined') {\n let cache = new WeakMap<Node, TableMap>();\n readFromCache = (key) => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n} else {\n const cache: (Node | TableMap)[] = [];\n const cacheSize = 10;\n let cachePos = 0;\n readFromCache = (key) => {\n for (let i = 0; i < cache.length; i += 2)\n if (cache[i] == key) return cache[i + 1] as TableMap;\n };\n addToCache = (key, value) => {\n if (cachePos == cacheSize) cachePos = 0;\n cache[cachePos++] = key;\n return (cache[cachePos++] = value);\n };\n}\n\n/**\n * @public\n */\nexport interface Rect {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\n/**\n * A table map describes the structure of a given table. To avoid\n * recomputing them all the time, they are cached per table node. To\n * be able to do that, positions saved in the map are relative to the\n * start of the table, rather than the start of the document.\n *\n * @public\n */\nexport class TableMap {\n constructor(\n /**\n * The number of columns\n */\n public width: number,\n /**\n * The number of rows\n */\n public height: number,\n /**\n * A width * height array with the start position of\n * the cell covering that part of the table in each slot\n */\n public map: number[],\n /**\n * An optional array of problems (cell overlap or non-rectangular\n * shape) for the table, used by the table normalizer.\n */\n public problems: Problem[] | null,\n ) {}\n\n // Find the dimensions of the cell at the given position.\n findCell(pos: number): Rect {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos != pos) continue;\n\n const left = i % this.width;\n const top = (i / this.width) | 0;\n let right = left + 1;\n let bottom = top + 1;\n\n for (let j = 1; right < this.width && this.map[i + j] == curPos; j++) {\n right++;\n }\n for (\n let j = 1;\n bottom < this.height && this.map[i + this.width * j] == curPos;\n j++\n ) {\n bottom++;\n }\n\n return { left, top, right, bottom };\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n // Find the left side of the cell at the given position.\n colCount(pos: number): number {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] == pos) {\n return i % this.width;\n }\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos: number, axis: 'horiz' | 'vert', dir: number): null | number {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis == 'horiz') {\n if (dir < 0 ? left == 0 : right == this.width) return null;\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height) return null;\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n\n // Get the rectangle spanning the two given cells.\n rectBetween(a: number, b: number): Rect {\n const {\n left: leftA,\n right: rightA,\n top: topA,\n bottom: bottomA,\n } = this.findCell(a);\n const {\n left: leftB,\n right: rightB,\n top: topB,\n bottom: bottomB,\n } = this.findCell(b);\n return {\n left: Math.min(leftA, leftB),\n top: Math.min(topA, topB),\n right: Math.max(rightA, rightB),\n bottom: Math.max(bottomA, bottomB),\n };\n }\n\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect: Rect): number[] {\n const result: number[] = [];\n const seen: Record<number, boolean> = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col;\n const pos = this.map[index];\n\n if (seen[pos]) continue;\n seen[pos] = true;\n\n if (\n (col == rect.left && col && this.map[index - 1] == pos) ||\n (row == rect.top && row && this.map[index - this.width] == pos)\n ) {\n continue;\n }\n result.push(pos);\n }\n }\n return result;\n }\n\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row: number, col: number, table: Node): number {\n for (let i = 0, rowStart = 0; ; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n let index = col + row * this.width;\n const rowEndIndex = (row + 1) * this.width;\n // Skip past cells from previous rows (via rowspan)\n while (index < rowEndIndex && this.map[index] < rowStart) index++;\n return index == rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n\n // Find the table map for the given table node.\n static get(table: Node): TableMap {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n}\n\n// Compute a table map.\nfunction computeMap(table: Node): TableMap {\n if (table.type.spec.tableRole != 'table')\n throw new RangeError('Not a table node: ' + table.type.name);\n const width = findWidth(table),\n height = table.childCount;\n const map = [];\n let mapPos = 0;\n let problems: Problem[] | null = null;\n const colWidths: ColWidths = [];\n for (let i = 0, e = width * height; i < e; i++) map[i] = 0;\n\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = table.child(row);\n pos++;\n for (let i = 0; ; i++) {\n while (mapPos < map.length && map[mapPos] != 0) mapPos++;\n if (i == rowNode.childCount) break;\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({\n type: 'overlong_rowspan',\n pos,\n n: rowspan - h,\n });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map[start + w] == 0) map[start + w] = pos;\n else\n (problems || (problems = [])).push({\n type: 'collision',\n row,\n pos,\n n: colspan - w,\n });\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = ((start + w) % width) * 2,\n prev = colWidths[widthIndex];\n if (\n prev == null ||\n (prev != colW && colWidths[widthIndex + 1] == 1)\n ) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos) if (map[mapPos++] == 0) missing++;\n if (missing)\n (problems || (problems = [])).push({ type: 'missing', row, n: missing });\n pos++;\n }\n\n if (width === 0 || height === 0)\n (problems || (problems = [])).push({ type: 'zero_sized' });\n\n const tableMap = new TableMap(width, height, map, problems);\n let badWidths = false;\n\n // For columns that have defined widths, but whose widths disagree\n // between rows, fix up the cells whose width doesn't match the\n // computed one.\n for (let i = 0; !badWidths && i < colWidths.length; i += 2)\n if (colWidths[i] != null && colWidths[i + 1] < height) badWidths = true;\n if (badWidths) findBadColWidths(tableMap, colWidths, table);\n\n return tableMap;\n}\n\nfunction findWidth(table: Node): number {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan)\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) rowWidth += cell.attrs.colspan;\n }\n }\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1) hasRowSpan = true;\n }\n if (width == -1) width = rowWidth;\n else if (width != rowWidth) width = Math.max(width, rowWidth);\n }\n return width;\n}\n\nfunction findBadColWidths(\n map: TableMap,\n colWidths: ColWidths,\n table: Node,\n): void {\n if (!map.problems) map.problems = [];\n const seen: Record<number, boolean> = {};\n for (let i = 0; i < map.map.length; i++) {\n const pos = map.map[i];\n if (seen[pos]) continue;\n seen[pos] = true;\n const node = table.nodeAt(pos);\n if (!node) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n let updated = null;\n const attrs = node.attrs as CellAttrs;\n for (let j = 0; j < attrs.colspan; j++) {\n const col = (i + j) % map.width;\n const colWidth = colWidths[col * 2];\n if (\n colWidth != null &&\n (!attrs.colwidth || attrs.colwidth[j] != colWidth)\n )\n (updated || (updated = freshColWidth(attrs)))[j] = colWidth;\n }\n if (updated)\n map.problems.unshift({\n type: 'colwidth mismatch',\n pos,\n colwidth: updated,\n });\n }\n}\n\nfunction freshColWidth(attrs: Attrs): ColWidths {\n if (attrs.colwidth) return attrs.colwidth.slice();\n const result: ColWidths = [];\n for (let i = 0; i < attrs.colspan; i++) result.push(0);\n return result;\n}\n", "// Helper for creating a schema that supports tables.\n\nimport type {\n AttributeSpec,\n Attrs,\n Node,\n NodeSpec,\n NodeType,\n Schema,\n} from 'prosemirror-model';\n\nimport type { CellAttrs, MutableAttrs } from './util';\n\nfunction getCellAttrs(dom: HTMLElement | string, extraAttrs: Attrs): Attrs {\n if (typeof dom === 'string') {\n return {};\n }\n\n const widthAttr = dom.getAttribute('data-colwidth');\n const widths =\n widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr)\n ? widthAttr.split(',').map((s) => Number(s))\n : null;\n const colspan = Number(dom.getAttribute('colspan') || 1);\n const result: MutableAttrs = {\n colspan,\n rowspan: Number(dom.getAttribute('rowspan') || 1),\n colwidth: widths && widths.length == colspan ? widths : null,\n } satisfies CellAttrs;\n for (const prop in extraAttrs) {\n const getter = extraAttrs[prop].getFromDOM;\n const value = getter && getter(dom);\n if (value != null) {\n result[prop] = value;\n }\n }\n return result;\n}\n\nfunction setCellAttrs(node: Node, extraAttrs: Attrs): Attrs {\n const attrs: MutableAttrs = {};\n if (node.attrs.colspan != 1) attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1) attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth)\n attrs['data-colwidth'] = node.attrs.colwidth.join(',');\n for (const prop in extraAttrs) {\n const setter = extraAttrs[prop].setDOMAttr;\n if (setter) setter(node.attrs[prop], attrs);\n }\n return attrs;\n}\n\n/**\n * @public\n */\nexport type getFromDOM = (dom: HTMLElement) => unknown;\n\n/**\n * @public\n */\nexport type setDOMAttr = (value: unknown, attrs: MutableAttrs) => void;\n\n/**\n * @public\n */\nexport interface CellAttributes {\n /**\n * The attribute's default value.\n */\n default: unknown;\n\n /**\n * A function or type name used to validate values of this attribute.\n *\n * See [validate](https://prosemirror.net/docs/ref/#model.AttributeSpec.validate).\n */\n validate?: string | ((value: unknown) => void);\n\n /**\n * A function to read the attribute's value from a DOM node.\n */\n getFromDOM?: getFromDOM;\n\n /**\n * A function to add the attribute's value to an attribute\n * object that's used to render the cell's DOM.\n */\n setDOMAttr?: setDOMAttr;\n}\n\n/**\n * @public\n */\nexport interface TableNodesOptions {\n /**\n * A group name (something like `\"block\"`) to add to the table\n * node type.\n */\n tableGroup?: string;\n\n /**\n * The content expression for table cells.\n */\n cellContent: string;\n\n /**\n * Additional attributes to add to cells. Maps attribute names to\n * objects with the following properties:\n */\n cellAttributes: { [key: string]: CellAttributes };\n}\n\n/**\n * @public\n */\nexport type TableNodes = Record<\n 'table' | 'table_row' | 'table_cell' | 'table_header',\n NodeSpec\n>;\n\nfunction validateColwidth(value: unknown) {\n if (value === null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError('colwidth must be null or an array');\n }\n for (const item of value) {\n if (typeof item !== 'number') {\n throw new TypeError('colwidth must be null or an array of numbers');\n }\n }\n}\n\n/**\n * This function creates a set of [node\n * specs](http://prosemirror.net/docs/ref/#model.SchemaSpec.nodes) for\n * `table`, `table_row`, and `table_cell` nodes types as used by this\n * module. The result can then be added to the set of nodes when\n * creating a schema.\n *\n * @public\n */\nexport function tableNodes(options: TableNodesOptions): TableNodes {\n const extraAttrs = options.cellAttributes || {};\n const cellAttrs: Record<string, AttributeSpec> = {\n colspan: { default: 1, validate: 'number' },\n rowspan: { default: 1, validate: 'number' },\n colwidth: { default: null, validate: validateColwidth },\n };\n for (const prop in extraAttrs)\n cellAttrs[prop] = {\n default: extraAttrs[prop].default,\n validate: extraAttrs[prop].validate,\n };\n\n return {\n table: {\n content: 'table_row+',\n tableRole: 'table',\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{ tag: 'table' }],\n toDOM() {\n return ['table', ['tbody', 0]];\n },\n },\n table_row: {\n content: '(table_cell | table_header)*',\n tableRole: 'row',\n parseDOM: [{ tag: 'tr' }],\n toDOM() {\n return ['tr', 0];\n },\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: 'cell',\n isolating: true,\n parseDOM: [\n { tag: 'td', getAttrs: (dom) => getCellAttrs(dom, extraAttrs) },\n ],\n toDOM(node) {\n return ['td', setCellAttrs(node, extraAttrs), 0];\n },\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: 'header_cell',\n isolating: true,\n parseDOM: [\n { tag: 'th', getAttrs: (dom) => getCellAttrs(dom, extraAttrs) },\n ],\n toDOM(node) {\n return ['th', setCellAttrs(node, extraAttrs), 0];\n },\n },\n };\n}\n\n/**\n * @public\n */\nexport type TableRole = 'table' | 'row' | 'cell' | 'header_cell';\n\n/**\n * @public\n */\nexport function tableNodeTypes(schema: Schema): Record<TableRole, NodeType> {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (const name in schema.nodes) {\n const type = schema.nodes[name],\n role = type.spec.tableRole;\n if (role) result[role] = type;\n }\n }\n return result;\n}\n", "// Various helper function for working with tables\n\nimport type { Attrs, Node, ResolvedPos } from 'prosemirror-model';\nimport type { EditorState, NodeSelection } from 'prosemirror-state';\nimport { PluginKey } from 'prosemirror-state';\n\nimport type { CellSelection } from './cellselection';\nimport { tableNodeTypes } from './schema';\nimport type { Rect } from './tablemap';\nimport { TableMap } from './tablemap';\n\n/**\n * @public\n */\nexport type MutableAttrs = Record<string, unknown>;\n\n/**\n * @public\n */\nexport interface CellAttrs {\n colspan: number;\n rowspan: number;\n colwidth: number[] | null;\n}\n\n/**\n * @public\n */\nexport const tableEditingKey = new PluginKey<number>('selectingCells');\n\n/**\n * @public\n */\nexport function cellAround($pos: ResolvedPos): ResolvedPos | null {\n for (let d = $pos.depth - 1; d > 0; d--)\n if ($pos.node(d).type.spec.tableRole == 'row')\n return $pos.node(0).resolve($pos.before(d + 1));\n return null;\n}\n\nexport function cellWrapping($pos: ResolvedPos): null | Node {\n for (let d = $pos.depth; d > 0; d--) {\n // Sometimes the cell can be in the same depth.\n const role = $pos.node(d).type.spec.tableRole;\n if (role === 'cell' || role === 'header_cell') return $pos.node(d);\n }\n return null;\n}\n\n/**\n * @public\n */\nexport function isInTable(state: EditorState): boolean {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--)\n if ($head.node(d).type.spec.tableRole == 'row') return true;\n return false;\n}\n\n/**\n * @internal\n */\nexport function selectionCell(state: EditorState): ResolvedPos {\n const sel = state.selection as CellSelection | NodeSelection;\n if ('$anchorCell' in sel && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos\n ? sel.$anchorCell\n : sel.$headCell;\n } else if (\n 'node' in sel &&\n sel.node &&\n sel.node.type.spec.tableRole == 'cell'\n ) {\n return sel.$anchor;\n }\n const $cell = cellAround(sel.$head) || cellNear(sel.$head);\n if ($cell) {\n return $cell;\n }\n throw new RangeError(`No cell found around position ${sel.head}`);\n}\n\n/**\n * @public\n */\nexport function cellNear($pos: ResolvedPos): ResolvedPos | undefined {\n for (\n let after = $pos.nodeAfter, pos = $pos.pos;\n after;\n after = after.firstChild, pos++\n ) {\n const role = after.type.spec.tableRole;\n if (role == 'cell' || role == 'header_cell') return $pos.doc.resolve(pos);\n }\n for (\n let before = $pos.nodeBefore, pos = $pos.pos;\n before;\n before = before.lastChild, pos--\n ) {\n const role = before.type.spec.tableRole;\n if (role == 'cell' || role == 'header_cell')\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n}\n\n/**\n * @public\n */\nexport function pointsAtCell($pos: ResolvedPos): boolean {\n return $pos.parent.type.spec.tableRole == 'row' && !!$pos.nodeAfter;\n}\n\n/**\n * @public\n */\nexport function moveCellForward($pos: ResolvedPos): ResolvedPos {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter!.nodeSize);\n}\n\n/**\n * @internal\n */\nexport function inSameTable($cellA: ResolvedPos, $cellB: ResolvedPos): boolean {\n return (\n $cellA.depth == $cellB.depth &&\n $cellA.pos >= $cellB.start(-1) &&\n $cellA.pos <= $cellB.end(-1)\n );\n}\n\n/**\n * @public\n */\nexport function findCell($pos: ResolvedPos): Rect {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1));\n}\n\n/**\n * @public\n */\nexport function colCount($pos: ResolvedPos): number {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1));\n}\n\n/**\n * @public\n */\nexport function nextCell(\n $pos: ResolvedPos,\n axis: 'horiz' | 'vert',\n dir: number,\n): ResolvedPos | null {\n const table = $pos.node(-1);\n const map = TableMap.get(table);\n const tableStart = $pos.start(-1);\n\n const moved = map.nextCell($pos.pos - tableStart, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(tableStart + moved);\n}\n\n/**\n * @public\n */\nexport function removeColSpan(attrs: CellAttrs, pos: number, n = 1): CellAttrs {\n const result: CellAttrs = { ...attrs, colspan: attrs.colspan - n };\n\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some((w) => w > 0)) result.colwidth = null;\n }\n return result;\n}\n\n/**\n * @public\n */\nexport function addColSpan(attrs: CellAttrs, pos: number, n = 1): Attrs {\n const result = { ...attrs, colspan: attrs.colspan + n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++) result.colwidth.splice(pos, 0, 0);\n }\n return result;\n}\n\n/**\n * @public\n */\nexport function columnIsHeader(\n map: TableMap,\n table: Node,\n col: number,\n): boolean {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let row = 0; row < map.height; row++)\n if (table.nodeAt(map.map[col + row * map.width])!.type != headerCell)\n return false;\n return true;\n}\n", "// This file defines a ProseMirror selection subclass that models\n// table cell selections. The table plugin needs to be active to wire\n// in the user interaction part of table selections (so that you\n// actually get such selections when you select across cells).\n\nimport type { Node, ResolvedPos } from 'prosemirror-model';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport {\n NodeSelection,\n Selection,\n SelectionRange,\n TextSelection,\n} from 'prosemirror-state';\nimport type { Mappable } from 'prosemirror-transform';\nimport type { DecorationSource } from 'prosemirror-view';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\n\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport { inSameTable, pointsAtCell, removeColSpan } from './util';\n\n/**\n * @public\n */\nexport interface CellSelectionJSON {\n type: string;\n anchor: number;\n head: number;\n}\n\n/**\n * A [`Selection`](http://prosemirror.net/docs/ref/#state.Selection)\n * subclass that represents a cell selection spanning part of a table.\n * With the plugin enabled, these will be created when the user\n * selects across cells, and will be drawn by giving selected cells a\n * `selectedCell` CSS class.\n *\n * @public\n */\nexport class CellSelection extends Selection {\n // A resolved position pointing _in front of_ the anchor cell (the one\n // that doesn't move when extending the selection).\n public $anchorCell: ResolvedPos;\n\n // A resolved position pointing in front of the head cell (the one\n // moves when extending the selection).\n public $headCell: ResolvedPos;\n\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell: ResolvedPos, $headCell: ResolvedPos = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const rect = map.rectBetween(\n $anchorCell.pos - tableStart,\n $headCell.pos - tableStart,\n );\n\n const doc = $anchorCell.node(0);\n const cells = map\n .cellsInRect(rect)\n .filter((p) => p != $headCell.pos - tableStart);\n // Make the head cell the first range, so that it counts as the\n // primary part of the selection\n cells.unshift($headCell.pos - tableStart);\n const ranges = cells.map((pos) => {\n const cell = table.nodeAt(pos);\n if (!cell) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n const from = tableStart + pos + 1;\n return new SelectionRange(\n doc.resolve(from),\n doc.resolve(from + cell.content.size),\n );\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n this.$anchorCell = $anchorCell;\n this.$headCell = $headCell;\n }\n\n public map(doc: Node, mapping: Mappable): CellSelection | Selection {\n const $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n const $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (\n pointsAtCell($anchorCell) &&\n pointsAtCell($headCell) &&\n inSameTable($anchorCell, $headCell)\n ) {\n const tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n return CellSelection.rowSelection($anchorCell, $headCell);\n else if (tableChanged && this.isColSelection())\n return CellSelection.colSelection($anchorCell, $headCell);\n else return new CellSelection($anchorCell, $headCell);\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n public override content(): Slice {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n\n const rect = map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart,\n );\n const seen: Record<number, boolean> = {};\n const rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n const rowContent = [];\n for (\n let index = row * map.width + rect.left, col = rect.left;\n col < rect.right;\n col++, index++\n ) {\n const pos = map.map[index];\n if (seen[pos]) continue;\n seen[pos] = true;\n\n const cellRect = map.findCell(pos);\n let cell = table.nodeAt(pos);\n if (!cell) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n const extraLeft = rect.left - cellRect.left;\n const extraRight = cellRect.right - rect.right;\n\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs as CellAttrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(\n attrs,\n attrs.colspan - extraRight,\n extraRight,\n );\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n if (!cell) {\n throw new RangeError(\n `Could not create cell with attrs ${JSON.stringify(attrs)}`,\n );\n }\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n const attrs = {\n ...cell.attrs,\n rowspan:\n Math.min(cellRect.bottom, rect.bottom) -\n Math.max(cellRect.top, rect.top),\n };\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs)!;\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n\n const fragment =\n this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n\n public override replace(tr: Transaction, content: Slice = Slice.empty): void {\n const mapFrom = tr.steps.length,\n ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const { $from, $to } = ranges[i],\n mapping = tr.mapping.slice(mapFrom);\n tr.replace(\n mapping.map($from.pos),\n mapping.map($to.pos),\n i ? Slice.empty : content,\n );\n }\n const sel = Selection.findFrom(\n tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)),\n -1,\n );\n if (sel) tr.setSelection(sel);\n }\n\n public override replaceWith(tr: Transaction, node: Node): void {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n\n public forEachCell(f: (node: Node, pos: number) => void): void {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n\n const cells = map.cellsInRect(\n map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart,\n ),\n );\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i])!, tableStart + cells[i]);\n }\n }\n\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n public isColSelection(): boolean {\n const anchorTop = this.$anchorCell.index(-1);\n const headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) return false;\n\n const anchorBottom = anchorTop + this.$anchorCell.nodeAfter!.attrs.rowspan;\n const headBottom = headTop + this.$headCell.nodeAfter!.attrs.rowspan;\n\n return (\n Math.max(anchorBottom, headBottom) == this.$headCell.node(-1).childCount\n );\n }\n\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n public static colSelection(\n $anchorCell: ResolvedPos,\n $headCell: ResolvedPos = $anchorCell,\n ): CellSelection {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n $anchorCell = doc.resolve(tableStart + map.map[anchorRect.left]);\n if (headRect.bottom < map.height)\n $headCell = doc.resolve(\n tableStart +\n map.map[map.width * (map.height - 1) + headRect.right - 1],\n );\n } else {\n if (headRect.top > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.left]);\n if (anchorRect.bottom < map.height)\n $anchorCell = doc.resolve(\n tableStart +\n map.map[map.width * (map.height - 1) + anchorRect.right - 1],\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n\n // True if this selection goes all the way from the left to the\n // right of the table.\n public isRowSelection(): boolean {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n\n const anchorLeft = map.colCount(this.$anchorCell.pos - tableStart);\n const headLeft = map.colCount(this.$headCell.pos - tableStart);\n if (Math.min(anchorLeft, headLeft) > 0) return false;\n\n const anchorRight = anchorLeft + this.$anchorCell.nodeAfter!.attrs.colspan;\n const headRight = headLeft + this.$headCell.nodeAfter!.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width;\n }\n\n public eq(other: unknown): boolean {\n return (\n other instanceof CellSelection &&\n other.$anchorCell.pos == this.$anchorCell.pos &&\n other.$headCell.pos == this.$headCell.pos\n );\n }\n\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n public static rowSelection(\n $anchorCell: ResolvedPos,\n $headCell: ResolvedPos = $anchorCell,\n ): CellSelection {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n $anchorCell = doc.resolve(\n tableStart + map.map[anchorRect.top * map.width],\n );\n if (headRect.right < map.width)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (headRect.top + 1) - 1],\n );\n } else {\n if (headRect.left > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.top * map.width]);\n if (anchorRect.right < map.width)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (anchorRect.top + 1) - 1],\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n\n public toJSON(): CellSelectionJSON {\n return {\n type: 'cell',\n anchor: this.$anchorCell.pos,\n head: this.$headCell.pos,\n };\n }\n\n public static override fromJSON(\n doc: Node,\n json: CellSelectionJSON,\n ): CellSelection {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n\n static create(\n doc: Node,\n anchorCell: number,\n headCell: number = anchorCell,\n ): CellSelection {\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n\n public override getBookmark(): CellBookmark {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n}\n\nCellSelection.prototype.visible = false;\n\nSelection.jsonID('cell', CellSelection);\n\n/**\n * @public\n */\nexport class CellBookmark {\n constructor(\n public anchor: number,\n public head: number,\n ) {}\n\n map(mapping: Mappable): CellBookmark {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n\n resolve(doc: Node): CellSelection | Selection {\n const $anchorCell = doc.resolve(this.anchor),\n $headCell = doc.resolve(this.head);\n if (\n $anchorCell.parent.type.spec.tableRole == 'row' &&\n $headCell.parent.type.spec.tableRole == 'row' &&\n $anchorCell.index() < $anchorCell.parent.childCount &&\n $headCell.index() < $headCell.parent.childCount &&\n inSameTable($anchorCell, $headCell)\n )\n return new CellSelection($anchorCell, $headCell);\n else return Selection.near($headCell, 1);\n }\n}\n\nexport function drawCellSelection(state: EditorState): DecorationSource | null {\n if (!(state.selection instanceof CellSelection)) return null;\n const cells: Decoration[] = [];\n state.selection.forEachCell((node, pos) => {\n cells.push(\n Decoration.node(pos, pos + node.nodeSize, { class: 'selectedCell' }),\n );\n });\n return DecorationSet.create(state.doc, cells);\n}\n\nfunction isCellBoundarySelection({ $from, $to }: TextSelection) {\n if ($from.pos == $to.pos || $from.pos < $to.pos - 6) return false; // Cheap elimination\n let afterFrom = $from.pos;\n let beforeTo = $to.pos;\n let depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n if ($from.after(depth + 1) < $from.end(depth)) break;\n for (let d = $to.depth; d >= 0; d--, beforeTo--)\n if ($to.before(d + 1) > $to.start(d)) break;\n return (\n afterFrom == beforeTo &&\n /row|table/.test($from.node(depth).type.spec.tableRole)\n );\n}\n\nfunction isTextSelectionAcrossCells({ $from, $to }: TextSelection) {\n let fromCellBoundaryNode: Node | undefined;\n let toCellBoundaryNode: Node | undefined;\n\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (\n node.type.spec.tableRole === 'cell' ||\n node.type.spec.tableRole === 'header_cell'\n ) {\n fromCellBoundaryNode = node;\n break;\n }\n }\n\n for (let i = $to.depth; i > 0; i--) {\n const node = $to.node(i);\n if (\n node.type.spec.tableRole === 'cell' ||\n node.type.spec.tableRole === 'header_cell'\n ) {\n toCellBoundaryNode = node;\n break;\n }\n }\n\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0;\n}\n\nexport function normalizeSelection(\n state: EditorState,\n tr: Transaction | undefined,\n allowTableNodeSelection: boolean,\n): Transaction | undefined {\n const sel = (tr || state).selection;\n const doc = (tr || state).doc;\n let normalize: Selection | undefined;\n let role: string | undefined;\n if (sel instanceof NodeSelection && (role = sel.node.type.spec.tableRole)) {\n if (role == 'cell' || role == 'header_cell') {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == 'row') {\n const $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n const map = TableMap.get(sel.node);\n const start = sel.from + 1;\n const lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize) (tr || (tr = state.tr)).setSelection(normalize);\n return tr;\n}\n", "// This file defines helpers for normalizing tables, making sure no\n// cells overlap (which can happen, if you have the wrong col- and\n// rowspans) and that each row has the same width. Uses the problems\n// reported by `TableMap`.\n\nimport type { Node } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport { PluginKey } from 'prosemirror-state';\n\nimport type { TableRole } from './schema';\nimport { tableNodeTypes } from './schema';\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport { removeColSpan } from './util';\n\n/**\n * @public\n */\nexport const fixTablesKey = new PluginKey<{ fixTables: boolean }>('fix-tables');\n\n/**\n * Helper for iterating through the nodes in a document that changed\n * compared to the given previous document. Useful for avoiding\n * duplicate work on each transaction.\n *\n * @public\n */\nfunction changedDescendants(\n old: Node,\n cur: Node,\n offset: number,\n f: (node: Node, pos: number) => void,\n): void {\n const oldSize = old.childCount,\n curSize = cur.childCount;\n outer: for (let i = 0, j = 0; i < curSize; i++) {\n const child = cur.child(i);\n for (let scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer;\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n changedDescendants(old.child(j), child, offset + 1, f);\n else child.nodesBetween(0, child.content.size, f, offset + 1);\n offset += child.nodeSize;\n }\n}\n\n/**\n * Inspect all tables in the given state's document and return a\n * transaction that fixes them, if necessary. If `oldState` was\n * provided, that is assumed to hold a previous, known-good state,\n * which will be used to avoid re-scanning unchanged parts of the\n * document.\n *\n * @public\n */\nexport function fixTables(\n state: EditorState,\n oldState?: EditorState,\n): Transaction | undefined {\n let tr: Transaction | undefined;\n const check = (node: Node, pos: number) => {\n if (node.type.spec.tableRole == 'table')\n tr = fixTable(state, node, pos, tr);\n };\n if (!oldState) state.doc.descendants(check);\n else if (oldState.doc != state.doc)\n changedDescendants(oldState.doc, state.doc, 0, check);\n return tr;\n}\n\n// Fix the given table, if necessary. Will append to the transaction\n// it was given, if non-null, or create a new one if necessary.\nexport function fixTable(\n state: EditorState,\n table: Node,\n tablePos: number,\n tr: Transaction | undefined,\n): Transaction | undefined {\n const map = TableMap.get(table);\n if (!map.problems) return tr;\n if (!tr) tr = state.tr;\n\n // Track which rows we must add cells to, so that we can adjust that\n // when fixing collisions.\n const mustAdd: number[] = [];\n for (let i = 0; i < map.height; i++) mustAdd.push(0);\n for (let i = 0; i < map.problems.length; i++) {\n const prob = map.problems[i];\n if (prob.type == 'collision') {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n const attrs = cell.attrs as CellAttrs;\n for (let j = 0; j < attrs.rowspan; j++) mustAdd[prob.row + j] += prob.n;\n tr.setNodeMarkup(\n tr.mapping.map(tablePos + 1 + prob.pos),\n null,\n removeColSpan(attrs, attrs.colspan - prob.n, prob.n),\n );\n } else if (prob.type == 'missing') {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == 'overlong_rowspan') {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n rowspan: cell.attrs.rowspan - prob.n,\n });\n } else if (prob.type == 'colwidth mismatch') {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n colwidth: prob.colwidth,\n });\n } else if (prob.type == 'zero_sized') {\n const pos = tr.mapping.map(tablePos);\n tr.delete(pos, pos + table.nodeSize);\n }\n }\n let first, last;\n for (let i = 0; i < mustAdd.length; i++)\n if (mustAdd[i]) {\n if (first == null) first = i;\n last = i;\n }\n // Add the necessary cells, using a heuristic for whether to add the\n // cells at the start or end of the rows (if it looks like a 'bite'\n // was taken out of the table, add cells at the start of the row\n // after the bite. Otherwise add them at the end).\n for (let i = 0, pos = tablePos + 1; i < map.height; i++) {\n const row = table.child(i);\n const end = pos + row.nodeSize;\n const add = mustAdd[i];\n if (add > 0) {\n let role: TableRole = 'cell';\n if (row.firstChild) {\n role = row.firstChild.type.spec.tableRole;\n }\n const nodes: Node[] = [];\n for (let j = 0; j < add; j++) {\n const node = tableNodeTypes(state.schema)[role].createAndFill();\n\n if (node) nodes.push(node);\n }\n const side = (i == 0 || first == i - 1) && last == i ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true });\n}\n", "import type { Node } from 'prosemirror-model';\n\nimport { TableMap } from '../tablemap';\n\n/**\n * This function will transform the table node into a matrix of rows and columns\n * respecting merged cells, for example this table:\n *\n * ```\n * ┌──────┬──────┬─────────────┐\n * │ A1 │ B1 │ C1 │\n * ├──────┼──────┴──────┬──────┤\n * │ A2 │ B2 │ │\n * ├──────┼─────────────┤ D1 │\n * │ A3 │ B3 │ C3 │ │\n * └──────┴──────┴──────┴──────┘\n * ```\n *\n * will be converted to the below:\n *\n * ```javascript\n * [\n * [A1, B1, C1, null],\n * [A2, B2, null, D1],\n * [A3, B3, C3, null],\n * ]\n * ```\n * @internal\n */\nexport function convertTableNodeToArrayOfRows(\n tableNode: Node,\n): (Node | null)[][] {\n const map = TableMap.get(tableNode);\n const rows: (Node | null)[][] = [];\n const rowCount = map.height;\n const colCount = map.width;\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row: (Node | null)[] = [];\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\n const cellIndex = rowIndex * colCount + colIndex;\n const cellPos = map.map[cellIndex];\n if (rowIndex > 0) {\n const topCellIndex = cellIndex - colCount;\n const topCellPos = map.map[topCellIndex];\n if (cellPos === topCellPos) {\n row.push(null);\n continue;\n }\n }\n if (colIndex > 0) {\n const leftCellIndex = cellIndex - 1;\n const leftCellPos = map.map[leftCellIndex];\n if (cellPos === leftCellPos) {\n row.push(null);\n continue;\n }\n }\n row.push(tableNode.nodeAt(cellPos));\n }\n rows.push(row);\n }\n\n return rows;\n}\n\n/**\n * Convert an array of rows to a table node.\n *\n * @internal\n */\nexport function convertArrayOfRowsToTableNode(\n tableNode: Node,\n arrayOfNodes: (Node | null)[][],\n): Node {\n const newRows: Node[] = [];\n const map = TableMap.get(tableNode);\n const rowCount = map.height;\n const colCount = map.width;\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const oldRow: Node = tableNode.child(rowIndex);\n const newCells: Node[] = [];\n\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\n const cell = arrayOfNodes[rowIndex][colIndex];\n if (!cell) {\n continue;\n }\n\n const cellPos = map.map[rowIndex * map.width + colIndex];\n const oldCell = tableNode.nodeAt(cellPos);\n if (!oldCell) {\n continue;\n }\n\n const newCell = oldCell.type.createChecked(\n cell.attrs,\n cell.content,\n cell.marks,\n );\n newCells.push(newCell);\n }\n\n const newRow = oldRow.type.createChecked(\n oldRow.attrs,\n newCells,\n oldRow.marks,\n );\n newRows.push(newRow);\n }\n\n const newTable = tableNode.type.createChecked(\n tableNode.attrs,\n newRows,\n tableNode.marks,\n );\n return newTable;\n}\n", "/**\n * Move a row in an array of rows.\n *\n * @internal\n */\nexport function moveRowInArrayOfRows<T>(\n rows: T[],\n indexesOrigin: number[],\n indexesTarget: number[],\n directionOverride: -1 | 1 | 0,\n): T[] {\n const direction = indexesOrigin[0] > indexesTarget[0] ? -1 : 1;\n\n const rowsExtracted = rows.splice(indexesOrigin[0], indexesOrigin.length);\n const positionOffset = rowsExtracted.length % 2 === 0 ? 1 : 0;\n let target: number;\n\n if (directionOverride === -1 && direction === 1) {\n target = indexesTarget[0] - 1;\n } else if (directionOverride === 1 && direction === -1) {\n target = indexesTarget[indexesTarget.length - 1] - positionOffset + 1;\n } else {\n target =\n direction === -1\n ? indexesTarget[0]\n : indexesTarget[indexesTarget.length - 1] - positionOffset;\n }\n\n rows.splice(target, 0, ...rowsExtracted);\n return rows;\n}\n", "import type { Node, ResolvedPos } from 'prosemirror-model';\nimport type { Selection } from 'prosemirror-state';\n\nimport { CellSelection } from '../cellselection';\nimport { cellAround, cellNear, inSameTable } from '../util';\n\n/**\n * Checks if the given object is a `CellSelection` instance.\n *\n * @internal\n */\nfunction isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection;\n}\n\n/**\n * Find the closest table node for a given position.\n *\n * @public\n */\nexport function findTable($pos: ResolvedPos): FindNodeResult | null {\n return findParentNode((node) => node.type.spec.tableRole === 'table', $pos);\n}\n\n/**\n * Try to find the anchor and head cell in the same table by using the given\n * anchor and head as hit points, or fallback to the selection's anchor and\n * head.\n *\n * @public\n */\nexport function findCellRange(\n selection: Selection,\n anchorHit?: number,\n headHit?: number,\n): [ResolvedPos, ResolvedPos] | null {\n if (anchorHit == null && headHit == null && isCellSelection(selection)) {\n return [selection.$anchorCell, selection.$headCell];\n }\n\n const anchor: number = anchorHit ?? headHit ?? selection.anchor;\n const head: number = headHit ?? anchorHit ?? selection.head;\n\n const doc = selection.$head.doc;\n\n const $anchorCell = findCellPos(doc, anchor);\n const $headCell = findCellPos(doc, head);\n\n if ($anchorCell && $headCell && inSameTable($anchorCell, $headCell)) {\n return [$anchorCell, $headCell];\n }\n return null;\n}\n\n/**\n * Try to find a resolved pos of a cell by using the given pos as a hit point.\n *\n * @public\n */\nexport function findCellPos(doc: Node, pos: number): ResolvedPos | undefined {\n const $pos = doc.resolve(pos);\n return cellAround($pos) || cellNear($pos);\n}\n\n/**\n * Result of finding a parent node.\n *\n * @public\n */\nexport interface FindNodeResult {\n /**\n * The closest parent node that satisfies the predicate.\n */\n node: Node;\n\n /**\n * The position directly before the node.\n */\n pos: number;\n\n /**\n * The position at the start of the node.\n */\n start: number;\n\n /**\n * The depth of the node.\n */\n depth: number;\n}\n\n/**\n * Find the closest parent node that satisfies the predicate.\n *\n * @internal\n */\nfunction findParentNode(\n /**\n * The predicate to test the parent node.\n */\n predicate: (node: Node) => boolean,\n /**\n * The position to start searching from.\n */\n $pos: ResolvedPos,\n): FindNodeResult | null {\n for (let depth = $pos.depth; depth >= 0; depth -= 1) {\n const node = $pos.node(depth);\n\n if (predicate(node)) {\n const pos = depth === 0 ? 0 : $pos.before(depth);\n const start = $pos.start(depth);\n return { node, pos, start, depth };\n }\n }\n\n return null;\n}\n", "import type { Selection } from 'prosemirror-state';\n\nimport { TableMap } from '../tablemap';\n\nimport type { FindNodeResult } from './query';\nimport { findTable } from './query';\n\n/**\n * Returns an array of cells in a column at the specified column index.\n *\n * @internal\n */\nexport function getCellsInColumn(\n columnIndex: number,\n selection: Selection,\n): FindNodeResult[] | undefined {\n const table = findTable(selection.$from);\n if (!table) {\n return;\n }\n\n const map = TableMap.get(table.node);\n\n if (columnIndex < 0 || columnIndex > map.width - 1) {\n return;\n }\n\n const cells = map.cellsInRect({\n left: columnIndex,\n right: columnIndex + 1,\n top: 0,\n bottom: map.height,\n });\n\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!;\n const pos = nodePos + table.start;\n return { pos, start: pos + 1, node, depth: table.depth + 2 };\n });\n}\n\n/**\n * Returns an array of cells in a row at the specified row index.\n *\n * @internal\n */\nexport function getCellsInRow(\n rowIndex: number,\n selection: Selection,\n): FindNodeResult[] | undefined {\n const table = findTable(selection.$from);\n if (!table) {\n return;\n }\n\n const map = TableMap.get(table.node);\n\n if (rowIndex < 0 || rowIndex > map.height - 1) {\n return;\n }\n\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: rowIndex,\n bottom: rowIndex + 1,\n });\n\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!;\n const pos = nodePos + table.start;\n return { pos, start: pos + 1, node, depth: table.depth + 2 };\n });\n}\n", "import type { ResolvedPos } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\n\nimport { getCellsInColumn, getCellsInRow } from './get-cells';\n\nexport type CellSelectionRange = {\n $anchor: ResolvedPos;\n $head: ResolvedPos;\n // an array of column/row indexes\n indexes: number[];\n};\n\n/**\n * Returns a range of rectangular selection spanning all merged cells around a\n * column at index `columnIndex`.\n *\n * Original implementation from Atlassian (Apache License 2.0)\n *\n * https://bitbucket.org/atlassian/atlassian-frontend-mirror/src/5f91cb871e8248bc3bae5ddc30bb9fd9200fadbb/editor/editor-tables/src/utils/get-selection-range-in-column.ts#editor/editor-tables/src/utils/get-selection-range-in-column.ts\n *\n * @internal\n */\nexport function getSelectionRangeInColumn(\n tr: Transaction,\n startColIndex: number,\n endColIndex: number = startColIndex,\n): CellSelectionRange | undefined {\n let startIndex = startColIndex;\n let endIndex = endColIndex;\n\n // looking for selection start column (startIndex)\n for (let i = startColIndex; i >= 0; i--) {\n const cells = getCellsInColumn(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.colspan + i - 1;\n if (maybeEndIndex >= startIndex) {\n startIndex = i;\n }\n if (maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n // looking for selection end column (endIndex)\n for (let i = startColIndex; i <= endIndex; i++) {\n const cells = getCellsInColumn(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.colspan + i - 1;\n if (cell.node.attrs.colspan > 1 && maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n\n // filter out columns without cells (where all rows have colspan > 1 in the same column)\n const indexes = [];\n for (let i = startIndex; i <= endIndex; i++) {\n const maybeCells = getCellsInColumn(i, tr.selection);\n if (maybeCells && maybeCells.length > 0) {\n indexes.push(i);\n }\n }\n startIndex = indexes[0];\n endIndex = indexes[indexes.length - 1];\n\n const firstSelectedColumnCells = getCellsInColumn(startIndex, tr.selection);\n const firstRowCells = getCellsInRow(0, tr.selection);\n if (!firstSelectedColumnCells || !firstRowCells) {\n return;\n }\n\n const $anchor = tr.doc.resolve(\n firstSelectedColumnCells[firstSelectedColumnCells.length - 1].pos,\n );\n\n let headCell;\n for (let i = endIndex; i >= startIndex; i--) {\n const columnCells = getCellsInColumn(i, tr.selection);\n if (columnCells && columnCells.length > 0) {\n for (let j = firstRowCells.length - 1; j >= 0; j--) {\n if (firstRowCells[j].pos === columnCells[0].pos) {\n headCell = columnCells[0];\n break;\n }\n }\n if (headCell) {\n break;\n }\n }\n }\n if (!headCell) {\n return;\n }\n\n const $head = tr.doc.resolve(headCell.pos);\n return { $anchor, $head, indexes };\n}\n\n/**\n * Returns a range of rectangular selection spanning all merged cells around a\n * row at index `rowIndex`.\n *\n * Original implementation from Atlassian (Apache License 2.0)\n *\n * https://bitbucket.org/atlassian/atlassian-frontend-mirror/src/5f91cb871e8248bc3bae5ddc30bb9fd9200fadbb/editor/editor-tables/src/utils/get-selection-range-in-row.ts#editor/editor-tables/src/utils/get-selection-range-in-row.ts\n *\n * @internal\n */\nexport function getSelectionRangeInRow(\n tr: Transaction,\n startRowIndex: number,\n endRowIndex: number = startRowIndex,\n): CellSelectionRange | undefined {\n let startIndex = startRowIndex;\n let endIndex = endRowIndex;\n\n // looking for selection start row (startIndex)\n for (let i = startRowIndex; i >= 0; i--) {\n const cells = getCellsInRow(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.rowspan + i - 1;\n if (maybeEndIndex >= startIndex) {\n startIndex = i;\n }\n if (maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n // looking for selection end row (endIndex)\n for (let i = startRowIndex; i <= endIndex; i++) {\n const cells = getCellsInRow(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.rowspan + i - 1;\n if (cell.node.attrs.rowspan > 1 && maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n\n // filter out rows without cells (where all columns have rowspan > 1 in the same row)\n const indexes = [];\n for (let i = startIndex; i <= endIndex; i++) {\n const maybeCells = getCellsInRow(i, tr.selection);\n if (maybeCells && maybeCells.length > 0) {\n indexes.push(i);\n }\n }\n startIndex = indexes[0];\n endIndex = indexes[indexes.length - 1];\n\n const firstSelectedRowCells = getCellsInRow(startIndex, tr.selection);\n const firstColumnCells = getCellsInColumn(0, tr.selection);\n if (!firstSelectedRowCells || !firstColumnCells) {\n return;\n }\n\n const $anchor = tr.doc.resolve(\n firstSelectedRowCells[firstSelectedRowCells.length - 1].pos,\n );\n\n let headCell;\n for (let i = endIndex; i >= startIndex; i--) {\n const rowCells = getCellsInRow(i, tr.selection);\n if (rowCells && rowCells.length > 0) {\n for (let j = firstColumnCells.length - 1; j >= 0; j--) {\n if (firstColumnCells[j].pos === rowCells[0].pos) {\n headCell = rowCells[0];\n break;\n }\n }\n if (headCell) {\n break;\n }\n }\n }\n if (!headCell) {\n return;\n }\n\n const $head = tr.doc.resolve(headCell.pos);\n return { $anchor, $head, indexes };\n}\n", "/**\n * Transposes a 2D array by flipping columns to rows.\n *\n * Transposition is a familiar algebra concept where the matrix is flipped\n * along its diagonal. For more details, see:\n * https://en.wikipedia.org/wiki/Transpose\n *\n * @example\n * ```javascript\n * const arr = [\n * ['a1', 'a2', 'a3'],\n * ['b1', 'b2', 'b3'],\n * ['c1', 'c2', 'c3'],\n * ['d1', 'd2', 'd3'],\n * ];\n *\n * const result = transpose(arr);\n * result === [\n * ['a1', 'b1', 'c1', 'd1'],\n * ['a2', 'b2', 'c2', 'd2'],\n * ['a3', 'b3', 'c3', 'd3'],\n * ]\n * ```\n */\nexport function transpose<T>(array: T[][]): T[][] {\n return array[0].map((_, i) => {\n return array.map((column) => column[i]);\n });\n}\n", "import type { Node } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\n\nimport { CellSelection } from '../cellselection';\nimport { TableMap } from '../tablemap';\n\nimport {\n convertArrayOfRowsToTableNode,\n convertTableNodeToArrayOfRows,\n} from './convert';\nimport { moveRowInArrayOfRows } from './move-row-in-array-of-rows';\nimport { findTable } from './query';\nimport { getSelectionRangeInColumn } from './selection-range';\nimport { transpose } from './transpose';\n\n/**\n * Parameters for moving a column in a table.\n *\n * @internal\n */\nexport interface MoveColumnParams {\n tr: Transaction;\n originIndex: number;\n targetIndex: number;\n select: boolean;\n pos: number;\n}\n\n/**\n * Move a column from index `origin` to index `target`.\n *\n * @internal\n */\nexport function moveColumn(moveColParams: MoveColumnParams): boolean {\n const { tr, originIndex, targetIndex, select, pos } = moveColParams;\n const $pos = tr.doc.resolve(pos);\n const table = findTable($pos);\n if (!table) return false;\n\n const indexesOriginColumn = getSelectionRangeInColumn(\n tr,\n originIndex,\n )?.indexes;\n const indexesTargetColumn = getSelectionRangeInColumn(\n tr,\n targetIndex,\n )?.indexes;\n\n if (!indexesOriginColumn || !indexesTargetColumn) return false;\n\n if (indexesOriginColumn.includes(targetIndex)) return false;\n\n const newTable = moveTableColumn(\n table.node,\n indexesOriginColumn,\n indexesTargetColumn,\n 0,\n );\n\n tr.replaceWith(table.pos, table.pos + table.node.nodeSize, newTable);\n\n if (!select) return true;\n\n const map = TableMap.get(newTable);\n const start = table.start;\n const index = targetIndex;\n const lastCell = map.positionAt(map.height - 1, index, newTable);\n const $lastCell = tr.doc.resolve(start + lastCell);\n\n const firstCell = map.positionAt(0, index, newTable);\n const $firstCell = tr.doc.resolve(start + firstCell);\n\n tr.setSelection(CellSelection.colSelection($lastCell, $firstCell));\n return true;\n}\n\nfunction moveTableColumn(\n table: Node,\n indexesOrigin: number[],\n indexesTarget: number[],\n direction: -1 | 1 | 0,\n) {\n let rows = transpose(convertTableNodeToArrayOfRows(table));\n\n rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);\n rows = transpose(rows);\n\n return convertArrayOfRowsToTableNode(table, rows);\n}\n", "import type { Node } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\n\nimport { CellSelection } from '../cellselection';\nimport { TableMap } from '../tablemap';\n\nimport {\n convertArrayOfRowsToTableNode,\n convertTableNodeToArrayOfRows,\n} from './convert';\nimport { moveRowInArrayOfRows } from './move-row-in-array-of-rows';\nimport { findTable } from './query';\nimport { getSelectionRangeInRow } from './selection-range';\n\n/**\n * Parameters for moving a row in a table.\n *\n * @internal\n */\nexport interface MoveRowParams {\n tr: Transaction;\n originIndex: number;\n targetIndex: number;\n select: boolean;\n pos: number;\n}\n\n/**\n * Move a row from index `origin` to index `target`.\n *\n * @internal\n */\nexport function moveRow(moveRowParams: MoveRowParams): boolean {\n const { tr, originIndex, targetIndex, select, pos } = moveRowParams;\n const $pos = tr.doc.resolve(pos);\n const table = findTable($pos);\n if (!table) return false;\n\n const indexesOriginRow = getSelectionRangeInRow(tr, originIndex)?.indexes;\n const indexesTargetRow = getSelectionRangeInRow(tr, targetIndex)?.indexes;\n\n if (!indexesOriginRow || !indexesTargetRow) return false;\n\n if (indexesOriginRow.includes(targetIndex)) return false;\n\n const newTable = moveTableRow(\n table.node,\n indexesOriginRow,\n indexesTargetRow,\n 0,\n );\n\n tr.replaceWith(table.pos, table.pos + table.node.nodeSize, newTable);\n\n if (!select) return true;\n\n const map = TableMap.get(newTable);\n const start = table.start;\n const index = targetIndex;\n const lastCell = map.positionAt(index, map.width - 1, newTable);\n const $lastCell = tr.doc.resolve(start + lastCell);\n\n const firstCell = map.positionAt(index, 0, newTable);\n const $firstCell = tr.doc.resolve(start + firstCell);\n\n tr.setSelection(CellSelection.rowSelection($lastCell, $firstCell));\n return true;\n}\n\nfunction moveTableRow(\n table: Node,\n indexesOrigin: number[],\n indexesTarget: number[],\n direction: -1 | 1 | 0,\n) {\n let rows = convertTableNodeToArrayOfRows(table);\n\n rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);\n\n return convertArrayOfRowsToTableNode(table, rows);\n}\n", "// This file defines a number of table-related commands.\n\nimport type { Node, NodeType, ResolvedPos } from 'prosemirror-model';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport type { Command, EditorState, Transaction } from 'prosemirror-state';\nimport { TextSelection } from 'prosemirror-state';\n\nimport { CellSelection } from './cellselection';\nimport type { Direction } from './input';\nimport type { TableRole } from './schema';\nimport { tableNodeTypes } from './schema';\nimport type { Rect } from './tablemap';\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport {\n addColSpan,\n cellAround,\n cellWrapping,\n columnIsHeader,\n isInTable,\n moveCellForward,\n removeColSpan,\n selectionCell,\n} from './util';\nimport { moveColumn } from './utils/move-column';\nimport { moveRow } from './utils/move-row';\n\n/**\n * @public\n */\nexport type TableRect = Rect & {\n tableStart: number;\n map: TableMap;\n table: Node;\n};\n\n/**\n * Helper to get the selected rectangle in a table, if any. Adds table\n * map, table node, and table start offset to the object for\n * convenience.\n *\n * @public\n */\nexport function selectedRect(state: EditorState): TableRect {\n const sel = state.selection;\n const $pos = selectionCell(state);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map = TableMap.get(table);\n const rect =\n sel instanceof CellSelection\n ? map.rectBetween(\n sel.$anchorCell.pos - tableStart,\n sel.$headCell.pos - tableStart,\n )\n : map.findCell($pos.pos - tableStart);\n return { ...rect, tableStart, map, table };\n}\n\n/**\n * Add a column at the given position in a table.\n *\n * @public\n */\nexport function addColumn(\n tr: Transaction,\n { map, tableStart, table }: TableRect,\n col: number,\n): Transaction {\n let refColumn: number | null = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn)) {\n refColumn = col == 0 || col == map.width ? null : 0;\n }\n\n for (let row = 0; row < map.height; row++) {\n const index = row * map.width + col;\n // If this position falls inside a col-spanning cell\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n const pos = map.map[index];\n const cell = table.nodeAt(pos)!;\n tr.setNodeMarkup(\n tr.mapping.map(tableStart + pos),\n null,\n addColSpan(cell.attrs as CellAttrs, col - map.colCount(pos)),\n );\n // Skip ahead if rowspan > 1\n row += cell.attrs.rowspan - 1;\n } else {\n const type =\n refColumn == null\n ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refColumn])!.type;\n const pos = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos), type.createAndFill()!);\n }\n }\n return tr;\n}\n\n/**\n * Command to add a column before the column with the selection.\n *\n * @public\n */\nexport function addColumnBefore(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true;\n}\n\n/**\n * Command to add a column after the column with the selection.\n *\n * @public\n */\nexport function addColumnAfter(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true;\n}\n\n/**\n * @public\n */\nexport function removeColumn(\n tr: Transaction,\n { map, table, tableStart }: TableRect,\n col: number,\n) {\n const mapStart = tr.mapping.maps.length;\n for (let row = 0; row < map.height; ) {\n const index = row * map.width + col;\n const pos = map.map[index];\n const cell = table.nodeAt(pos)!;\n const attrs = cell.attrs as CellAttrs;\n // If this is part of a col-spanning cell\n if (\n (col > 0 && map.map[index - 1] == pos) ||\n (col < map.width - 1 && map.map[index + 1] == pos)\n ) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapStart).map(tableStart + pos),\n null,\n removeColSpan(attrs, col - map.colCount(pos)),\n );\n } else {\n const start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += attrs.rowspan;\n }\n}\n\n/**\n * Command function that removes the selected columns from a table.\n *\n * @public\n */\nexport function deleteColumn(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n const tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width) return false;\n for (let i = rect.right - 1; ; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left) break;\n const table = rect.tableStart\n ? tr.doc.nodeAt(rect.tableStart - 1)\n : tr.doc;\n if (!table) {\n throw new RangeError('No table found');\n }\n rect.table = table;\n rect.map = TableMap.get(table);\n }\n dispatch(tr);\n }\n return true;\n}\n\n/**\n * @public\n */\nexport function rowIsHeader(map: TableMap, table: Node, row: number): boolean {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map.width; col++)\n if (table.nodeAt(map.map[col + row * map.width])?.type != headerCell)\n return false;\n return true;\n}\n\n/**\n * @public\n */\nexport function addRow(\n tr: Transaction,\n { map, tableStart, table }: TableRect,\n row: number,\n): Transaction {\n let rowPos = tableStart;\n for (let i = 0; i < row; i++) rowPos += table.child(i).nodeSize;\n const cells = [];\n let refRow: number | null = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n refRow = row == 0 || row == map.height ? null : 0;\n for (let col = 0, index = map.width * row; col < map.width; col++, index++) {\n // Covered by a rowspan cell\n if (\n row > 0 &&\n row < map.height &&\n map.map[index] == map.map[index - map.width]\n ) {\n const pos = map.map[index];\n const attrs = table.nodeAt(pos)!.attrs;\n tr.setNodeMarkup(tableStart + pos, null, {\n ...attrs,\n rowspan: attrs.rowspan + 1,\n });\n col += attrs.colspan - 1;\n } else {\n const type =\n refRow == null\n ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refRow * map.width])?.type;\n const node = type?.createAndFill();\n if (node) cells.push(node);\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n}\n\n/**\n * Add a table row before the selection.\n *\n * @public\n */\nexport function addRowBefore(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n}\n\n/**\n * Add a table row after the selection.\n *\n * @public\n */\nexport function addRowAfter(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n}\n\n/**\n * @public\n */\nexport function removeRow(\n tr: Transaction,\n { map, table, tableStart }: TableRect,\n row: number,\n): void {\n let rowPos = 0;\n for (let i = 0; i < row; i++) rowPos += table.child(i).nodeSize;\n const nextRow = rowPos + table.child(row).nodeSize;\n\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n\n const seen = new Set<number>();\n\n for (let col = 0, index = row * map.width; col < map.width; col++, index++) {\n const pos = map.map[index];\n\n // Skip cells that are checked already\n if (seen.has(pos)) continue;\n seen.add(pos);\n\n if (row > 0 && pos == map.map[index - map.width]) {\n // If this cell starts in the row above, simply reduce its rowspan\n const attrs = table.nodeAt(pos)!.attrs as CellAttrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, {\n ...attrs,\n rowspan: attrs.rowspan - 1,\n });\n col += attrs.colspan - 1;\n } else if (row < map.height && pos == map.map[index + map.width]) {\n // Else, if it continues in the row below, it has to be moved down\n const cell = table.nodeAt(pos)!;\n const attrs = cell.attrs as CellAttrs;\n const copy = cell.type.create(\n { ...attrs, rowspan: cell.attrs.rowspan - 1 },\n cell.content,\n );\n const newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += attrs.colspan - 1;\n }\n }\n}\n\n/**\n * Remove the selected rows from a table.\n *\n * @public\n */\nexport function deleteRow(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state),\n tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height) return false;\n for (let i = rect.bottom - 1; ; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top) break;\n const table = rect.tableStart\n ? tr.doc.nodeAt(rect.tableStart - 1)\n : tr.doc;\n if (!table) {\n throw new RangeError('No table found');\n }\n rect.table = table;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n}\n\nfunction isEmpty(cell: Node): boolean {\n const c = cell.content;\n\n return (\n c.childCount == 1 && c.child(0).isTextblock && c.child(0).childCount == 0\n );\n}\n\nfunction cellsOverlapRectangle({ width, height, map }: TableMap, rect: Rect) {\n let indexTop = rect.top * width + rect.left,\n indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left,\n indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if (\n (rect.left > 0 && map[indexLeft] == map[indexLeft - 1]) ||\n (rect.right < width && map[indexRight] == map[indexRight + 1])\n )\n return true;\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if (\n (rect.top > 0 && map[indexTop] == map[indexTop - width]) ||\n (rect.bottom < height && map[indexBottom] == map[indexBottom + width])\n )\n return true;\n indexTop++;\n indexBottom++;\n }\n return false;\n}\n\n/**\n * Merge the selected cells into a single cell. Only available when\n * the selected cells' outline forms a rectangle.\n *\n * @public\n */\nexport function mergeCells(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const sel = state.selection;\n if (\n !(sel instanceof CellSelection) ||\n sel.$anchorCell.pos == sel.$headCell.pos\n )\n return false;\n const rect = selectedRect(state),\n { map } = rect;\n if (cellsOverlapRectangle(map, rect)) return false;\n if (dispatch) {\n const tr = state.tr;\n const seen: Record<number, boolean> = {};\n let content = Fragment.empty;\n let mergedPos: number | undefined;\n let mergedCell: Node | undefined;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map.map[row * map.width + col];\n const cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos] || !cell) continue;\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell)) content = content.append(cell.content);\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n if (mergedPos == null || mergedCell == null) {\n return true;\n }\n\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, {\n ...addColSpan(\n mergedCell.attrs as CellAttrs,\n mergedCell.attrs.colspan,\n rect.right - rect.left - mergedCell.attrs.colspan,\n ),\n rowspan: rect.bottom - rect.top,\n });\n if (content.size > 0) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(\n new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart)),\n );\n dispatch(tr);\n }\n return true;\n}\n\n/**\n * Split a selected cell, whose rowpan or colspan is greater than one,\n * into smaller cells. Use the first cell type for the new cells.\n *\n * @public\n */\nexport function splitCell(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole as TableRole];\n })(state, dispatch);\n}\n\n/**\n * @public\n */\nexport interface GetCellTypeOptions {\n node: Node;\n row: number;\n col: number;\n}\n\n/**\n * Split a selected cell, whose rowpan or colspan is greater than one,\n * into smaller cells with the cell type (th, td) returned by getType function.\n *\n * @public\n */\nexport function splitCellWithType(\n getCellType: (options: GetCellTypeOptions) => NodeType,\n): Command {\n return (state, dispatch) => {\n const sel = state.selection;\n let cellNode: Node | null | undefined;\n let cellPos: number | undefined;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) return false;\n cellPos = cellAround(sel.$from)?.pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos) return false;\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode == null || cellPos == null) {\n return false;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) baseAttrs = { ...baseAttrs, rowspan: 1 };\n if (baseAttrs.colspan > 1) baseAttrs = { ...baseAttrs, colspan: 1 };\n const rect = selectedRect(state),\n tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++)\n attrs.push(\n colwidth\n ? {\n ...baseAttrs,\n colwidth: colwidth && colwidth[i] ? [colwidth[i]] : null,\n }\n : baseAttrs,\n );\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top) pos += cellNode.nodeSize;\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col == rect.left && row == rect.top) continue;\n tr.insert(\n (lastCell = tr.mapping.map(pos + rect.tableStart, 1)),\n getCellType({ node: cellNode, row, col }).createAndFill(attrs[i])!,\n );\n }\n }\n tr.setNodeMarkup(\n cellPos,\n getCellType({ node: cellNode, row: rect.top, col: rect.left }),\n attrs[0],\n );\n if (sel instanceof CellSelection)\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(sel.$anchorCell.pos),\n lastCell ? tr.doc.resolve(lastCell) : undefined,\n ),\n );\n dispatch(tr);\n }\n return true;\n };\n}\n\n/**\n * Returns a command that sets the given attribute to the given value,\n * and is only available when the currently selected cell doesn't\n * already have that attribute set to that value.\n *\n * @public\n */\nexport function setCellAttr(name: string, value: unknown): Command {\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n const $cell = selectionCell(state);\n if ($cell.nodeAfter!.attrs[name] === value) return false;\n if (dispatch) {\n const tr = state.tr;\n if (state.selection instanceof CellSelection)\n state.selection.forEachCell((node, pos) => {\n if (node.attrs[name] !== value)\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n [name]: value,\n });\n });\n else\n tr.setNodeMarkup($cell.pos, null, {\n ...$cell.nodeAfter!.attrs,\n [name]: value,\n });\n dispatch(tr);\n }\n return true;\n };\n}\n\nfunction deprecated_toggleHeader(type: ToggleHeaderType): Command {\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state),\n tr = state.tr;\n const cells = rect.map.cellsInRect(\n type == 'column'\n ? {\n left: rect.left,\n top: 0,\n right: rect.right,\n bottom: rect.map.height,\n }\n : type == 'row'\n ? {\n left: 0,\n top: rect.top,\n right: rect.map.width,\n bottom: rect.bottom,\n }\n : rect,\n );\n const nodes = cells.map((pos) => rect.table.nodeAt(pos)!);\n for (\n let i = 0;\n i < cells.length;\n i++ // Remove headers, if any\n )\n if (nodes[i].type == types.header_cell)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.cell,\n nodes[i].attrs,\n );\n if (tr.steps.length === 0)\n for (\n let i = 0;\n i < cells.length;\n i++ // No headers removed, add instead\n )\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.header_cell,\n nodes[i].attrs,\n );\n dispatch(tr);\n }\n return true;\n };\n}\n\nfunction isHeaderEnabledByType(\n type: 'row' | 'column',\n rect: TableRect,\n types: Record<string, NodeType>,\n): boolean {\n // Get cell positions for first row or first column\n const cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == 'row' ? rect.map.width : 1,\n bottom: type == 'column' ? rect.map.height : 1,\n });\n\n for (let i = 0; i < cellPositions.length; i++) {\n const cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * @public\n */\nexport type ToggleHeaderType = 'column' | 'row' | 'cell';\n\n/**\n * Toggles between row/column header and normal cells (Only applies to first row/column).\n * For deprecated behavior pass `useDeprecatedLogic` in options with true.\n *\n * @public\n */\nexport function toggleHeader(\n type: ToggleHeaderType,\n options?: { useDeprecatedLogic: boolean },\n): Command {\n options = options || { useDeprecatedLogic: false };\n\n if (options.useDeprecatedLogic) return deprecated_toggleHeader(type);\n\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state),\n tr = state.tr;\n\n const isHeaderRowEnabled = isHeaderEnabledByType('row', rect, types);\n const isHeaderColumnEnabled = isHeaderEnabledByType(\n 'column',\n rect,\n types,\n );\n\n const isHeaderEnabled =\n type === 'column'\n ? isHeaderRowEnabled\n : type === 'row'\n ? isHeaderColumnEnabled\n : false;\n\n const selectionStartsAt = isHeaderEnabled ? 1 : 0;\n\n const cellsRect =\n type == 'column'\n ? {\n left: 0,\n top: selectionStartsAt,\n right: 1,\n bottom: rect.map.height,\n }\n : type == 'row'\n ? {\n left: selectionStartsAt,\n top: 0,\n right: rect.map.width,\n bottom: 1,\n }\n : rect;\n\n const newType =\n type == 'column'\n ? isHeaderColumnEnabled\n ? types.cell\n : types.header_cell\n : type == 'row'\n ? isHeaderRowEnabled\n ? types.cell\n : types.header_cell\n : types.cell;\n\n rect.map.cellsInRect(cellsRect).forEach((relativeCellPos) => {\n const cellPos = relativeCellPos + rect.tableStart;\n const cell = tr.doc.nodeAt(cellPos);\n\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n\n dispatch(tr);\n }\n return true;\n };\n}\n\n/**\n * Toggles whether the selected row contains header cells.\n *\n * @public\n */\nexport const toggleHeaderRow: Command = toggleHeader('row', {\n useDeprecatedLogic: true,\n});\n\n/**\n * Toggles whether the selected column contains header cells.\n *\n * @public\n */\nexport const toggleHeaderColumn: Command = toggleHeader('column', {\n useDeprecatedLogic: true,\n});\n\n/**\n * Toggles whether the selected cells are header cells.\n *\n * @public\n */\nexport const toggleHeaderCell: Command = toggleHeader('cell', {\n useDeprecatedLogic: true,\n});\n\nfunction findNextCell($cell: ResolvedPos, dir: Direction): number | null {\n if (dir < 0) {\n const before = $cell.nodeBefore;\n if (before) return $cell.pos - before.nodeSize;\n for (\n let row = $cell.index(-1) - 1, rowEnd = $cell.before();\n row >= 0;\n row--\n ) {\n const rowNode = $cell.node(-1).child(row);\n const lastChild = rowNode.lastChild;\n if (lastChild) {\n return rowEnd - 1 - lastChild.nodeSize;\n }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) {\n return $cell.pos + $cell.nodeAfter!.nodeSize;\n }\n const table = $cell.node(-1);\n for (\n let row = $cell.indexAfter(-1), rowStart = $cell.after();\n row < table.childCount;\n row++\n ) {\n const rowNode = table.child(row);\n if (rowNode.childCount) return rowStart + 1;\n rowStart += rowNode.nodeSize;\n }\n }\n return null;\n}\n\n/**\n * Returns a command for selecting the next (direction=1) or previous\n * (direction=-1) cell in a table.\n *\n * @public\n */\nexport function goToNextCell(direction: Direction): Command {\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n const cell = findNextCell(selectionCell(state), direction);\n if (cell == null) return false;\n if (dispatch) {\n const $cell = state.doc.resolve(cell);\n dispatch(\n state.tr\n .setSelection(TextSelection.between($cell, moveCellForward($cell)))\n .scrollIntoView(),\n );\n }\n return true;\n };\n}\n\n/**\n * Deletes the table around the selection, if any.\n *\n * @public\n */\nexport function deleteTable(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (node.type.spec.tableRole == 'table') {\n if (dispatch)\n dispatch(\n state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView(),\n );\n return true;\n }\n }\n return false;\n}\n\n/**\n * Deletes the content of the selected cells, if they are not empty.\n *\n * @public\n */\nexport function deleteCellSelection(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const sel = state.selection;\n if (!(sel instanceof CellSelection)) return false;\n if (dispatch) {\n const tr = state.tr;\n const baseContent = tableNodeTypes(state.schema).cell.createAndFill()!\n .content;\n sel.forEachCell((cell, pos) => {\n if (!cell.content.eq(baseContent))\n tr.replace(\n tr.mapping.map(pos + 1),\n tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice(baseContent, 0, 0),\n );\n });\n if (tr.docChanged) dispatch(tr);\n }\n return true;\n}\n\n/**\n * Options for moveTableRow\n *\n * @public\n */\nexport interface MoveTableRowOptions {\n /**\n * The source row index to move from.\n */\n from: number;\n\n /**\n * The destination row index to move to.\n */\n to: number;\n\n /**\n * Whether to select the moved row after the operation.\n *\n * @default true\n */\n select?: boolean;\n\n /**\n * Optional position to resolve table from. If not provided, uses the current selection.\n */\n pos?: number;\n}\n\n/**\n * Move a table row from index `from` to index `to`.\n *\n * @public\n */\nexport function moveTableRow(options: MoveTableRowOptions): Command {\n return (state, dispatch) => {\n const {\n from: originIndex,\n to: targetIndex,\n select = true,\n pos = state.selection.from,\n } = options;\n const tr = state.tr;\n if (moveRow({ tr, originIndex, targetIndex, select, pos })) {\n dispatch?.(tr);\n return true;\n }\n return false;\n };\n}\n\n/**\n * Options for moveTableColumn\n *\n * @public\n */\nexport interface MoveTableColumnOptions {\n /**\n * The source column index to move from.\n */\n from: number;\n\n /**\n * The destination column index to move to.\n */\n to: number;\n\n /**\n * Whether to select the moved column after the operation.\n *\n * @default true\n */\n select?: boolean;\n\n /**\n * Optional position to resolve table from. If not provided, uses the current selection.\n */\n pos?: number;\n}\n\n/**\n * Move a table column from index `from` to index `to`.\n *\n * @public\n */\nexport function moveTableColumn(options: MoveTableColumnOptions): Command {\n return (state, dispatch) => {\n const {\n from: originIndex,\n to: targetIndex,\n select = true,\n pos = state.selection.from,\n } = options;\n const tr = state.tr;\n if (moveColumn({ tr, originIndex, targetIndex, select, pos })) {\n dispatch?.(tr);\n return true;\n }\n return false;\n };\n}\n", "// Utilities used for copy/paste handling.\n//\n// This module handles pasting cell content into tables, or pasting\n// anything into a cell selection, as replacing a block of cells with\n// the content of the selection. When pasting cells into a cell, that\n// involves placing the block of pasted content so that its top left\n// aligns with the selection cell, optionally extending the table to\n// the right or bottom to make sure it is large enough. Pasting into a\n// cell selection is different, here the cells in the selection are\n// clipped to the selection's rectangle, optionally repeating the\n// pasted cells when they are smaller than the selection.\n\nimport type { Node, NodeType, Schema } from 'prosemirror-model';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport { Transform } from 'prosemirror-transform';\n\nimport { CellSelection } from './cellselection';\nimport { tableNodeTypes } from './schema';\nimport type { ColWidths, Rect } from './tablemap';\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport { removeColSpan } from './util';\n\n/**\n * @internal\n */\nexport type Area = { width: number; height: number; rows: Fragment[] };\n\n// Utilities to help with copying and pasting table cells\n\n/**\n * Get a rectangular area of cells from a slice, or null if the outer\n * nodes of the slice aren't table cells or rows.\n *\n * @internal\n */\nexport function pastedCells(slice: Slice): Area | null {\n if (slice.size === 0) return null;\n let { content, openStart, openEnd } = slice;\n while (\n content.childCount == 1 &&\n ((openStart > 0 && openEnd > 0) ||\n content.child(0).type.spec.tableRole == 'table')\n ) {\n openStart--;\n openEnd--;\n content = content.child(0).content;\n }\n const first = content.child(0);\n const role = first.type.spec.tableRole;\n const schema = first.type.schema,\n rows = [];\n if (role == 'row') {\n for (let i = 0; i < content.childCount; i++) {\n let cells = content.child(i).content;\n const left = i ? 0 : Math.max(0, openStart - 1);\n const right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right)\n cells = fitSlice(\n tableNodeTypes(schema).row,\n new Slice(cells, left, right),\n ).content;\n rows.push(cells);\n }\n } else if (role == 'cell' || role == 'header_cell') {\n rows.push(\n openStart || openEnd\n ? fitSlice(\n tableNodeTypes(schema).row,\n new Slice(content, openStart, openEnd),\n ).content\n : content,\n );\n } else {\n return null;\n }\n return ensureRectangular(schema, rows);\n}\n\n// Compute the width and height of a set of cells, and make sure each\n// row has the same number of cells.\nfunction ensureRectangular(schema: Schema, rows: Fragment[]): Area {\n const widths: ColWidths = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n for (let j = row.childCount - 1; j >= 0; j--) {\n const { rowspan, colspan } = row.child(j).attrs;\n for (let r = i; r < i + rowspan; r++)\n widths[r] = (widths[r] || 0) + colspan;\n }\n }\n let width = 0;\n for (let r = 0; r < widths.length; r++) width = Math.max(width, widths[r]);\n for (let r = 0; r < widths.length; r++) {\n if (r >= rows.length) rows.push(Fragment.empty);\n if (widths[r] < width) {\n const empty = tableNodeTypes(schema).cell.createAndFill()!;\n const cells = [];\n for (let i = widths[r]; i < width; i++) {\n cells.push(empty);\n }\n rows[r] = rows[r].append(Fragment.from(cells));\n }\n }\n return { height: rows.length, width, rows };\n}\n\nexport function fitSlice(nodeType: NodeType, slice: Slice): Node {\n const node = nodeType.createAndFill()!;\n const tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc;\n}\n\n/**\n * Clip or extend (repeat) the given set of cells to cover the given\n * width and height. Will clip rowspan/colspan cells at the edges when\n * they stick out.\n *\n * @internal\n */\nexport function clipCells(\n { width, height, rows }: Area,\n newWidth: number,\n newHeight: number,\n): Area {\n if (width != newWidth) {\n const added: number[] = [];\n const newRows: Fragment[] = [];\n for (let row = 0; row < rows.length; row++) {\n const frag = rows[row],\n cells = [];\n for (let col = added[row] || 0, i = 0; col < newWidth; i++) {\n let cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n cell = cell.type.createChecked(\n removeColSpan(\n cell.attrs as CellAttrs,\n cell.attrs.colspan,\n col + cell.attrs.colspan - newWidth,\n ),\n cell.content,\n );\n cells.push(cell);\n col += cell.attrs.colspan;\n for (let j = 1; j < cell.attrs.rowspan; j++)\n added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n\n if (height != newHeight) {\n const newRows = [];\n for (let row = 0, i = 0; row < newHeight; row++, i++) {\n const cells = [],\n source = rows[i % height];\n for (let j = 0; j < source.childCount; j++) {\n let cell = source.child(j);\n if (row + cell.attrs.rowspan > newHeight)\n cell = cell.type.create(\n {\n ...cell.attrs,\n rowspan: Math.max(1, newHeight - cell.attrs.rowspan),\n },\n cell.content,\n );\n cells.push(cell);\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n height = newHeight;\n }\n\n return { width, height, rows };\n}\n\n// Make sure a table has at least the given width and height. Return\n// true if something was changed.\nfunction growTable(\n tr: Transaction,\n map: TableMap,\n table: Node,\n start: number,\n width: number,\n height: number,\n mapFrom: number,\n): boolean {\n const schema = tr.doc.type.schema;\n const types = tableNodeTypes(schema);\n let empty;\n let emptyHead;\n if (width > map.width) {\n for (let row = 0, rowEnd = 0; row < map.height; row++) {\n const rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n const cells: Node[] = [];\n let add: Node;\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n add = empty || (empty = types.cell.createAndFill()!);\n else add = emptyHead || (emptyHead = types.header_cell.createAndFill()!);\n for (let i = map.width; i < width; i++) cells.push(add);\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n const cells = [];\n for (\n let i = 0, start = (map.height - 1) * map.width;\n i < Math.max(map.width, width);\n i++\n ) {\n const header =\n i >= map.width\n ? false\n : table.nodeAt(map.map[start + i])!.type == types.header_cell;\n cells.push(\n header\n ? emptyHead || (emptyHead = types.header_cell.createAndFill()!)\n : empty || (empty = types.cell.createAndFill()!),\n );\n }\n\n const emptyRow = types.row.create(null, Fragment.from(cells)),\n rows = [];\n for (let i = map.height; i < height; i++) rows.push(emptyRow);\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead);\n}\n\n// Make sure the given line (left, top) to (right, top) doesn't cross\n// any rowspan cells by splitting cells that cross it. Return true if\n// something changed.\nfunction isolateHorizontal(\n tr: Transaction,\n map: TableMap,\n table: Node,\n start: number,\n left: number,\n right: number,\n top: number,\n mapFrom: number,\n): boolean {\n if (top == 0 || top == map.height) return false;\n let found = false;\n for (let col = left; col < right; col++) {\n const index = top * map.width + col,\n pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n const cell = table.nodeAt(pos)!;\n const { top: cellTop, left: cellLeft } = map.findCell(pos);\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, {\n ...cell.attrs,\n rowspan: top - cellTop,\n });\n tr.insert(\n tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill({\n ...cell.attrs,\n rowspan: cellTop + cell.attrs.rowspan - top,\n })!,\n );\n col += cell.attrs.colspan - 1;\n }\n }\n return found;\n}\n\n// Make sure the given line (left, top) to (left, bottom) doesn't\n// cross any colspan cells by splitting cells that cross it. Return\n// true if something changed.\nfunction isolateVertical(\n tr: Transaction,\n map: TableMap,\n table: Node,\n start: number,\n top: number,\n bottom: number,\n left: number,\n mapFrom: number,\n): boolean {\n if (left == 0 || left == map.width) return false;\n let found = false;\n for (let row = top; row < bottom; row++) {\n const index = row * map.width + left,\n pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n const cell = table.nodeAt(pos)!;\n const cellLeft = map.colCount(pos);\n const updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(\n updatePos,\n null,\n removeColSpan(\n cell.attrs as CellAttrs,\n left - cellLeft,\n cell.attrs.colspan - (left - cellLeft),\n ),\n );\n tr.insert(\n updatePos + cell.nodeSize,\n cell.type.createAndFill(\n removeColSpan(cell.attrs as CellAttrs, 0, left - cellLeft),\n )!,\n );\n row += cell.attrs.rowspan - 1;\n }\n }\n return found;\n}\n\n/**\n * Insert the given set of cells (as returned by `pastedCells`) into a\n * table, at the position pointed at by rect.\n *\n * @internal\n */\nexport function insertCells(\n state: EditorState,\n dispatch: (tr: Transaction) => void,\n tableStart: number,\n rect: Rect,\n cells: Area,\n): void {\n let table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc;\n if (!table) {\n throw new Error('No table found');\n }\n let map = TableMap.get(table);\n const { top, left } = rect;\n const right = left + cells.width,\n bottom = top + cells.height;\n const tr = state.tr;\n let mapFrom = 0;\n\n function recomp(): void {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n if (!table) {\n throw new Error('No table found');\n }\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n\n // Prepare the table to be large enough and not have any cells\n // crossing the boundaries of the rectangle that we want to\n // insert into. If anything about it changes, recompute the table\n // map so that subsequent operations can see the current shape.\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom)) recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom))\n recomp();\n if (\n isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom)\n )\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom))\n recomp();\n\n for (let row = top; row < bottom; row++) {\n const from = map.positionAt(row, left, table),\n to = map.positionAt(row, right, table);\n tr.replace(\n tr.mapping.slice(mapFrom).map(from + tableStart),\n tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice(cells.rows[row - top], 0, 0),\n );\n }\n recomp();\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table)),\n ),\n );\n dispatch(tr);\n}\n", "// This file defines a number of helpers for wiring up user input to\n// table-related functionality.\n\nimport { keydownHandler } from 'prosemirror-keymap';\nimport type { ResolvedPos, Slice } from 'prosemirror-model';\nimport { Fragment } from 'prosemirror-model';\nimport type { Command, EditorState, Transaction } from 'prosemirror-state';\nimport { Selection, TextSelection } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\n\nimport { CellSelection } from './cellselection';\nimport { deleteCellSelection } from './commands';\nimport { clipCells, fitSlice, insertCells, pastedCells } from './copypaste';\nimport { tableNodeTypes } from './schema';\nimport { TableMap } from './tablemap';\nimport {\n cellAround,\n inSameTable,\n isInTable,\n nextCell,\n selectionCell,\n tableEditingKey,\n} from './util';\n\ntype Axis = 'horiz' | 'vert';\n\n/**\n * @public\n */\nexport type Direction = -1 | 1;\n\nexport const handleKeyDown = keydownHandler({\n ArrowLeft: arrow('horiz', -1),\n ArrowRight: arrow('horiz', 1),\n ArrowUp: arrow('vert', -1),\n ArrowDown: arrow('vert', 1),\n\n 'Shift-ArrowLeft': shiftArrow('horiz', -1),\n 'Shift-ArrowRight': shiftArrow('horiz', 1),\n 'Shift-ArrowUp': shiftArrow('vert', -1),\n 'Shift-ArrowDown': shiftArrow('vert', 1),\n\n Backspace: deleteCellSelection,\n 'Mod-Backspace': deleteCellSelection,\n Delete: deleteCellSelection,\n 'Mod-Delete': deleteCellSelection,\n});\n\nfunction maybeSetSelection(\n state: EditorState,\n dispatch: undefined | ((tr: Transaction) => void),\n selection: Selection,\n): boolean {\n if (selection.eq(state.selection)) return false;\n if (dispatch) dispatch(state.tr.setSelection(selection).scrollIntoView());\n return true;\n}\n\n/**\n * @internal\n */\nexport function arrow(axis: Axis, dir: Direction): Command {\n return (state, dispatch, view) => {\n if (!view) return false;\n const sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(\n state,\n dispatch,\n Selection.near(sel.$headCell, dir),\n );\n }\n if (axis != 'horiz' && !sel.empty) return false;\n const end = atEndOfCell(view, axis, dir);\n if (end == null) return false;\n if (axis == 'horiz') {\n return maybeSetSelection(\n state,\n dispatch,\n Selection.near(state.doc.resolve(sel.head + dir), dir),\n );\n } else {\n const $cell = state.doc.resolve(end);\n const $next = nextCell($cell, axis, dir);\n let newSel;\n if ($next) newSel = Selection.near($next, 1);\n else if (dir < 0)\n newSel = Selection.near(state.doc.resolve($cell.before(-1)), -1);\n else newSel = Selection.near(state.doc.resolve($cell.after(-1)), 1);\n return maybeSetSelection(state, dispatch, newSel);\n }\n };\n}\n\nfunction shiftArrow(axis: Axis, dir: Direction): Command {\n return (state, dispatch, view) => {\n if (!view) return false;\n const sel = state.selection;\n let cellSel: CellSelection;\n if (sel instanceof CellSelection) {\n cellSel = sel;\n } else {\n const end = atEndOfCell(view, axis, dir);\n if (end == null) return false;\n cellSel = new CellSelection(state.doc.resolve(end));\n }\n\n const $head = nextCell(cellSel.$headCell, axis, dir);\n if (!$head) return false;\n return maybeSetSelection(\n state,\n dispatch,\n new CellSelection(cellSel.$anchorCell, $head),\n );\n };\n}\n\nexport function handleTripleClick(view: EditorView, pos: number): boolean {\n const doc = view.state.doc,\n $cell = cellAround(doc.resolve(pos));\n if (!$cell) return false;\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true;\n}\n\n/**\n * @public\n */\nexport function handlePaste(\n view: EditorView,\n _: ClipboardEvent,\n slice: Slice,\n): boolean {\n if (!isInTable(view.state)) return false;\n let cells = pastedCells(slice);\n const sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells)\n cells = {\n width: 1,\n height: 1,\n rows: [\n Fragment.from(\n fitSlice(tableNodeTypes(view.state.schema).cell, slice),\n ),\n ],\n };\n const table = sel.$anchorCell.node(-1);\n const start = sel.$anchorCell.start(-1);\n const rect = TableMap.get(table).rectBetween(\n sel.$anchorCell.pos - start,\n sel.$headCell.pos - start,\n );\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true;\n } else if (cells) {\n const $cell = selectionCell(view.state);\n const start = $cell.start(-1);\n insertCells(\n view.state,\n view.dispatch,\n start,\n TableMap.get($cell.node(-1)).findCell($cell.pos - start),\n cells,\n );\n return true;\n } else {\n return false;\n }\n}\n\nexport function handleMouseDown(\n view: EditorView,\n startEvent: MouseEvent,\n): void {\n // Only handle mouse down events for the main button (usually the left button).\n // This ensures that the cell selection won't be triggered when trying to open\n // the context menu.\n if (startEvent.button != 0) return;\n\n if (startEvent.ctrlKey || startEvent.metaKey) return;\n\n const startDOMCell = domInCell(view, startEvent.target as Node);\n let $anchor;\n if (startEvent.shiftKey && view.state.selection instanceof CellSelection) {\n // Adding to an existing cell selection\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (\n startEvent.shiftKey &&\n startDOMCell &&\n ($anchor = cellAround(view.state.selection.$anchor)) != null &&\n cellUnderMouse(view, startEvent)?.pos != $anchor.pos\n ) {\n // Adding to a selection that starts in another cell (causing a\n // cell selection to be created).\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n // Not in a cell, let the default behavior happen.\n return;\n }\n\n // Create and dispatch a cell selection between the given anchor and\n // the position under the mouse.\n function setCellSelection($anchor: ResolvedPos, event: MouseEvent): void {\n let $head = cellUnderMouse(view, event);\n const starting = tableEditingKey.getState(view.state) == null;\n if (!$head || !inSameTable($anchor, $head)) {\n if (starting) $head = $anchor;\n else return;\n }\n const selection = new CellSelection($anchor, $head);\n if (starting || !view.state.selection.eq(selection)) {\n const tr = view.state.tr.setSelection(selection);\n if (starting) tr.setMeta(tableEditingKey, $anchor.pos);\n view.dispatch(tr);\n }\n }\n\n // Stop listening to mouse motion events.\n function stop(): void {\n view.root.removeEventListener('mouseup', stop);\n view.root.removeEventListener('dragstart', stop);\n view.root.removeEventListener('mousemove', move);\n if (tableEditingKey.getState(view.state) != null)\n view.dispatch(view.state.tr.setMeta(tableEditingKey, -1));\n }\n\n function move(_event: Event): void {\n const event = _event as MouseEvent;\n const anchor = tableEditingKey.getState(view.state);\n let $anchor;\n if (anchor != null) {\n // Continuing an existing cross-cell selection\n $anchor = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target as Node) != startDOMCell) {\n // Moving out of the initial cell -- start a new cell selection\n $anchor = cellUnderMouse(view, startEvent);\n if (!$anchor) return stop();\n }\n if ($anchor) setCellSelection($anchor, event);\n }\n\n view.root.addEventListener('mouseup', stop);\n view.root.addEventListener('dragstart', stop);\n view.root.addEventListener('mousemove', move);\n}\n\n// Check whether the cursor is at the end of a cell (so that further\n// motion would move out of the cell)\nfunction atEndOfCell(view: EditorView, axis: Axis, dir: number): null | number {\n if (!(view.state.selection instanceof TextSelection)) return null;\n const { $head } = view.state.selection;\n for (let d = $head.depth - 1; d >= 0; d--) {\n const parent = $head.node(d),\n index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount)) return null;\n if (\n parent.type.spec.tableRole == 'cell' ||\n parent.type.spec.tableRole == 'header_cell'\n ) {\n const cellPos = $head.before(d);\n const dirStr: 'up' | 'down' | 'left' | 'right' =\n axis == 'vert' ? (dir > 0 ? 'down' : 'up') : dir > 0 ? 'right' : 'left';\n return view.endOfTextblock(dirStr) ? cellPos : null;\n }\n }\n return null;\n}\n\nfunction domInCell(view: EditorView, dom: Node | null): Node | null {\n for (; dom && dom != view.dom; dom = dom.parentNode) {\n if (dom.nodeName == 'TD' || dom.nodeName == 'TH') {\n return dom;\n }\n }\n return null;\n}\n\nfunction cellUnderMouse(\n view: EditorView,\n event: MouseEvent,\n): ResolvedPos | null {\n const mousePos = view.posAtCoords({\n left: event.clientX,\n top: event.clientY,\n });\n if (!mousePos) return null;\n // Prefer `inside` position for better accuracy with merged cells (rowspan/colspan),\n // but fall back to `pos` if `inside` doesn't resolve to a valid cell\n let { inside, pos } = mousePos;\n return (\n (inside >= 0 && cellAround(view.state.doc.resolve(inside))) ||\n cellAround(view.state.doc.resolve(pos))\n );\n}\n", "import type { Node } from 'prosemirror-model';\nimport type { NodeView, ViewMutationRecord } from 'prosemirror-view';\n\nimport type { CellAttrs } from './util';\n\n/**\n * @public\n */\nexport class TableView implements NodeView {\n public dom: HTMLDivElement;\n public table: HTMLTableElement;\n public colgroup: HTMLTableColElement;\n public contentDOM: HTMLTableSectionElement;\n\n constructor(\n public node: Node,\n public defaultCellMinWidth: number,\n ) {\n this.dom = document.createElement('div');\n this.dom.className = 'tableWrapper';\n this.table = this.dom.appendChild(document.createElement('table'));\n this.table.style.setProperty(\n '--default-cell-min-width',\n `${defaultCellMinWidth}px`,\n );\n this.colgroup = this.table.appendChild(document.createElement('colgroup'));\n updateColumnsOnResize(node, this.colgroup, this.table, defaultCellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement('tbody'));\n }\n\n update(node: Node): boolean {\n if (node.type != this.node.type) return false;\n this.node = node;\n updateColumnsOnResize(\n node,\n this.colgroup,\n this.table,\n this.defaultCellMinWidth,\n );\n return true;\n }\n\n ignoreMutation(record: ViewMutationRecord): boolean {\n return (\n record.type == 'attributes' &&\n (record.target == this.table || this.colgroup.contains(record.target))\n );\n }\n}\n\n/**\n * @public\n */\nexport function updateColumnsOnResize(\n node: Node,\n colgroup: HTMLTableColElement,\n table: HTMLTableElement,\n defaultCellMinWidth: number,\n overrideCol?: number,\n overrideValue?: number,\n): void {\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild as HTMLElement;\n const row = node.firstChild;\n if (!row) return;\n\n for (let i = 0, col = 0; i < row.childCount; i++) {\n const { colspan, colwidth } = row.child(i).attrs as CellAttrs;\n for (let j = 0; j < colspan; j++, col++) {\n const hasWidth =\n overrideCol == col ? overrideValue : colwidth && colwidth[j];\n const cssWidth = hasWidth ? hasWidth + 'px' : '';\n totalWidth += hasWidth || defaultCellMinWidth;\n if (!hasWidth) fixedWidth = false;\n if (!nextDOM) {\n const col = document.createElement('col');\n col.style.width = cssWidth;\n colgroup.appendChild(col);\n } else {\n if (nextDOM.style.width != cssWidth) {\n nextDOM.style.width = cssWidth;\n }\n nextDOM = nextDOM.nextSibling as HTMLElement;\n }\n }\n }\n\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n nextDOM.parentNode?.removeChild(nextDOM);\n nextDOM = after as HTMLElement;\n }\n\n if (fixedWidth) {\n table.style.width = totalWidth + 'px';\n table.style.minWidth = '';\n } else {\n table.style.width = '';\n table.style.minWidth = totalWidth + 'px';\n }\n}\n", "import type { Attrs, Node as ProsemirrorNode } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport { Plugin, PluginKey } from 'prosemirror-state';\nimport type { EditorView, NodeView } from 'prosemirror-view';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\n\nimport { tableNodeTypes } from './schema';\nimport { TableMap } from './tablemap';\nimport { TableView, updateColumnsOnResize } from './tableview';\nimport type { CellAttrs } from './util';\nimport { cellAround, pointsAtCell } from './util';\n\n/**\n * @public\n */\nexport const columnResizingPluginKey = new PluginKey<ResizeState>(\n 'tableColumnResizing',\n);\n\n/**\n * @public\n */\nexport type ColumnResizingOptions = {\n handleWidth?: number;\n /**\n * Minimum width of a cell /column. The column cannot be resized smaller than this.\n */\n cellMinWidth?: number;\n /**\n * The default minWidth of a cell / column when it doesn't have an explicit width (i.e.: it has not been resized manually)\n */\n defaultCellMinWidth?: number;\n lastColumnResizable?: boolean;\n /**\n * A custom node view for the rendering table nodes. By default, the plugin\n * uses the {@link TableView} class. You can explicitly set this to `null` to\n * not use a custom node view.\n */\n View?:\n | (new (\n node: ProsemirrorNode,\n cellMinWidth: number,\n view: EditorView,\n ) => NodeView)\n | null;\n};\n\n/**\n * @public\n */\nexport type Dragging = { startX: number; startWidth: number };\n\n/**\n * @public\n */\nexport function columnResizing({\n handleWidth = 5,\n cellMinWidth = 25,\n defaultCellMinWidth = 100,\n View = TableView,\n lastColumnResizable = true,\n}: ColumnResizingOptions = {}): Plugin {\n const plugin = new Plugin<ResizeState>({\n key: columnResizingPluginKey,\n state: {\n init(_, state) {\n const nodeViews = plugin.spec?.props?.nodeViews;\n const tableName = tableNodeTypes(state.schema).table.name;\n if (View && nodeViews) {\n nodeViews[tableName] = (node, view) => {\n return new View(node, defaultCellMinWidth, view);\n };\n }\n return new ResizeState(-1, false);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n },\n },\n props: {\n attributes: (state): Record<string, string> => {\n const pluginState = columnResizingPluginKey.getState(state);\n return pluginState && pluginState.activeHandle > -1\n ? { class: 'resize-cursor' }\n : {};\n },\n\n handleDOMEvents: {\n mousemove: (view, event) => {\n handleMouseMove(view, event, handleWidth, lastColumnResizable);\n },\n mouseleave: (view) => {\n handleMouseLeave(view);\n },\n mousedown: (view, event) => {\n handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth);\n },\n },\n\n decorations: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n if (pluginState && pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n\n nodeViews: {},\n },\n });\n return plugin;\n}\n\n/**\n * @public\n */\nexport class ResizeState {\n constructor(\n public activeHandle: number,\n public dragging: Dragging | false,\n ) {}\n\n apply(tr: Transaction): ResizeState {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const state = this;\n const action = tr.getMeta(columnResizingPluginKey);\n if (action && action.setHandle != null)\n return new ResizeState(action.setHandle, false);\n if (action && action.setDragging !== undefined)\n return new ResizeState(state.activeHandle, action.setDragging);\n if (state.activeHandle > -1 && tr.docChanged) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n return new ResizeState(handle, state.dragging);\n }\n return state;\n }\n}\n\nfunction handleMouseMove(\n view: EditorView,\n event: MouseEvent,\n handleWidth: number,\n lastColumnResizable: boolean,\n): void {\n if (!view.editable) return;\n\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState) return;\n\n if (!pluginState.dragging) {\n const target = domCellAround(event.target as HTMLElement);\n let cell = -1;\n if (target) {\n const { left, right } = target.getBoundingClientRect();\n if (event.clientX - left <= handleWidth)\n cell = edgeCell(view, event, 'left', handleWidth);\n else if (right - event.clientX <= handleWidth)\n cell = edgeCell(view, event, 'right', handleWidth);\n }\n\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $cell.start(-1);\n const col =\n map.colCount($cell.pos - tableStart) +\n $cell.nodeAfter!.attrs.colspan -\n 1;\n\n if (col == map.width - 1) {\n return;\n }\n }\n\n updateHandle(view, cell);\n }\n }\n}\n\nfunction handleMouseLeave(view: EditorView): void {\n if (!view.editable) return;\n\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging)\n updateHandle(view, -1);\n}\n\nfunction handleMouseDown(\n view: EditorView,\n event: MouseEvent,\n cellMinWidth: number,\n defaultCellMinWidth: number,\n): boolean {\n if (!view.editable) return false;\n\n const win = view.dom.ownerDocument.defaultView ?? window;\n\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging)\n return false;\n\n const cell = view.state.doc.nodeAt(pluginState.activeHandle)!;\n const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, {\n setDragging: { startX: event.clientX, startWidth: width },\n }),\n );\n\n function finish(event: MouseEvent) {\n win.removeEventListener('mouseup', finish);\n win.removeEventListener('mousemove', move);\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState?.dragging) {\n updateColumnWidth(\n view,\n pluginState.activeHandle,\n draggedWidth(pluginState.dragging, event, cellMinWidth),\n );\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null }),\n );\n }\n }\n\n function move(event: MouseEvent): void {\n if (!event.which) return finish(event);\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState) return;\n if (pluginState.dragging) {\n const dragged = draggedWidth(pluginState.dragging, event, cellMinWidth);\n displayColumnWidth(\n view,\n pluginState.activeHandle,\n dragged,\n defaultCellMinWidth,\n );\n }\n }\n\n displayColumnWidth(\n view,\n pluginState.activeHandle,\n width,\n defaultCellMinWidth,\n );\n\n win.addEventListener('mouseup', finish);\n win.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\n\nfunction currentColWidth(\n view: EditorView,\n cellPos: number,\n { colspan, colwidth }: Attrs,\n): number {\n const width = colwidth && colwidth[colwidth.length - 1];\n if (width) return width;\n const dom = view.domAtPos(cellPos);\n const node = dom.node.childNodes[dom.offset] as HTMLElement;\n let domWidth = node.offsetWidth,\n parts = colspan;\n if (colwidth)\n for (let i = 0; i < colspan; i++)\n if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n }\n return domWidth / parts;\n}\n\nfunction domCellAround(target: HTMLElement | null): HTMLElement | null {\n while (target && target.nodeName != 'TD' && target.nodeName != 'TH')\n target =\n target.classList && target.classList.contains('ProseMirror')\n ? null\n : (target.parentNode as HTMLElement);\n return target;\n}\n\nfunction edgeCell(\n view: EditorView,\n event: MouseEvent,\n side: 'left' | 'right',\n handleWidth: number,\n): number {\n // posAtCoords returns inconsistent positions when cursor is moving\n // across a collapsed table border. Use an offset to adjust the\n // target viewport coordinates away from the table border.\n const offset = side == 'right' ? -handleWidth : handleWidth;\n const found = view.posAtCoords({\n left: event.clientX + offset,\n top: event.clientY,\n });\n if (!found) return -1;\n const { pos } = found;\n const $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell) return -1;\n if (side == 'right') return $cell.pos;\n const map = TableMap.get($cell.node(-1)),\n start = $cell.start(-1);\n const index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1];\n}\n\nfunction draggedWidth(\n dragging: Dragging,\n event: MouseEvent,\n resizeMinWidth: number,\n): number {\n const offset = event.clientX - dragging.startX;\n return Math.max(resizeMinWidth, dragging.startWidth + offset);\n}\n\nfunction updateHandle(view: EditorView, value: number): void {\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value }),\n );\n}\n\nfunction updateColumnWidth(\n view: EditorView,\n cell: number,\n width: number,\n): void {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1),\n map = TableMap.get(table),\n start = $cell.start(-1);\n const col =\n map.colCount($cell.pos - start) + $cell.nodeAfter!.attrs.colspan - 1;\n const tr = view.state.tr;\n for (let row = 0; row < map.height; row++) {\n const mapIndex = row * map.width + col;\n // Rowspanning cell that has already been handled\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width]) continue;\n const pos = map.map[mapIndex];\n const attrs = table.nodeAt(pos)!.attrs as CellAttrs;\n const index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width) continue;\n const colwidth = attrs.colwidth\n ? attrs.colwidth.slice()\n : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, { ...attrs, colwidth: colwidth });\n }\n if (tr.docChanged) view.dispatch(tr);\n}\n\nfunction displayColumnWidth(\n view: EditorView,\n cell: number,\n width: number,\n defaultCellMinWidth: number,\n): void {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1),\n start = $cell.start(-1);\n const col =\n TableMap.get(table).colCount($cell.pos - start) +\n $cell.nodeAfter!.attrs.colspan -\n 1;\n let dom: Node | null = view.domAtPos($cell.start(-1)).node;\n while (dom && dom.nodeName != 'TABLE') {\n dom = dom.parentNode;\n }\n if (!dom) return;\n updateColumnsOnResize(\n table,\n dom.firstChild as HTMLTableColElement,\n dom as HTMLTableElement,\n defaultCellMinWidth,\n col,\n width,\n );\n}\n\nfunction zeroes(n: number): 0[] {\n return Array(n).fill(0);\n}\n\nexport function handleDecorations(\n state: EditorState,\n cell: number,\n): DecorationSet {\n const decorations = [];\n const $cell = state.doc.resolve(cell);\n const table = $cell.node(-1);\n if (!table) {\n return DecorationSet.empty;\n }\n const map = TableMap.get(table);\n const start = $cell.start(-1);\n const col =\n map.colCount($cell.pos - start) + $cell.nodeAfter!.attrs.colspan - 1;\n for (let row = 0; row < map.height; row++) {\n const index = col + row * map.width;\n // For positions that have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if (\n (col == map.width - 1 || map.map[index] != map.map[index + 1]) &&\n (row == 0 || map.map[index] != map.map[index - map.width])\n ) {\n const cellPos = map.map[index];\n const pos = start + cellPos + table.nodeAt(cellPos)!.nodeSize - 1;\n const dom = document.createElement('div');\n dom.className = 'column-resize-handle';\n if (columnResizingPluginKey.getState(state)?.dragging) {\n decorations.push(\n Decoration.node(\n start + cellPos,\n start + cellPos + table.nodeAt(cellPos)!.nodeSize,\n {\n class: 'column-resize-dragging',\n },\n ),\n );\n }\n\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations);\n}\n", "// This file defines a plugin that handles the drawing of cell\n// selections and the basic user interactions for creating and working\n// with such selections. It also makes sure that, after each\n// transaction, the shapes of tables are normalized to be rectangular\n// and not contain overlapping cells.\n\nimport { Plugin } from 'prosemirror-state';\n\nimport { drawCellSelection, normalizeSelection } from './cellselection';\nimport { fixTables, fixTablesKey } from './fixtables';\nimport {\n handleKeyDown,\n handleMouseDown,\n handlePaste,\n handleTripleClick,\n} from './input';\nimport { tableEditingKey } from './util';\n\nexport { CellBookmark, CellSelection } from './cellselection';\nexport type { CellSelectionJSON } from './cellselection';\nexport {\n columnResizing,\n columnResizingPluginKey,\n ResizeState,\n} from './columnresizing';\nexport type { ColumnResizingOptions, Dragging } from './columnresizing';\nexport * from './commands';\nexport {\n clipCells as __clipCells,\n insertCells as __insertCells,\n pastedCells as __pastedCells,\n} from './copypaste';\nexport type { Area as __Area } from './copypaste';\nexport type { Direction } from './input';\nexport { tableNodes, tableNodeTypes } from './schema';\nexport type {\n CellAttributes,\n getFromDOM,\n setDOMAttr,\n TableNodes,\n TableNodesOptions,\n TableRole,\n} from './schema';\nexport { TableMap } from './tablemap';\nexport type { ColWidths, Problem, Rect } from './tablemap';\nexport { TableView, updateColumnsOnResize } from './tableview';\nexport {\n addColSpan,\n cellAround,\n cellNear,\n colCount,\n columnIsHeader,\n findCell,\n inSameTable,\n isInTable,\n moveCellForward,\n nextCell,\n pointsAtCell,\n removeColSpan,\n selectionCell,\n} from './util';\nexport type { MutableAttrs } from './util';\nexport { findCellPos, findCellRange, findTable } from './utils/query';\nexport type { FindNodeResult } from './utils/query';\nexport { fixTables, fixTablesKey, handlePaste, tableEditingKey };\n\n/**\n * @public\n */\nexport type TableEditingOptions = {\n /**\n * Whether to allow table node selection.\n *\n * By default, any node selection wrapping a table will be converted into a\n * CellSelection wrapping all cells in the table. You can pass `true` to allow\n * the selection to remain a NodeSelection.\n *\n * @default false\n */\n allowTableNodeSelection?: boolean;\n};\n\n/**\n * Creates a [plugin](http://prosemirror.net/docs/ref/#state.Plugin)\n * that, when added to an editor, enables cell-selection, handles\n * cell-based copy/paste, and makes sure tables stay well-formed (each\n * row has the same width, and cells don't overlap).\n *\n * You should probably put this plugin near the end of your array of\n * plugins, since it handles mouse and arrow key events in tables\n * rather broadly, and other plugins, like the gap cursor or the\n * column-width dragging plugin, might want to get a turn first to\n * perform more specific behavior.\n *\n * @public\n */\nexport function tableEditing({\n allowTableNodeSelection = false,\n}: TableEditingOptions = {}): Plugin {\n return new Plugin({\n key: tableEditingKey,\n\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init() {\n return null;\n },\n apply(tr, cur) {\n const set = tr.getMeta(tableEditingKey);\n if (set != null) return set == -1 ? null : set;\n if (cur == null || !tr.docChanged) return cur;\n const { deleted, pos } = tr.mapping.mapResult(cur);\n return deleted ? null : pos;\n },\n },\n\n props: {\n decorations: drawCellSelection,\n\n handleDOMEvents: {\n mousedown: handleMouseDown,\n },\n\n createSelectionBetween(view) {\n return tableEditingKey.getState(view.state) != null\n ? view.state.selection\n : null;\n },\n\n handleTripleClick,\n\n handleKeyDown,\n\n handlePaste,\n },\n\n appendTransaction(_, oldState, state) {\n return normalizeSelection(\n state,\n fixTables(state, oldState),\n allowTableNodeSelection,\n );\n },\n });\n}\n", "// src/index.ts\nimport {\n Plugin,\n PluginKey\n} from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\n// src/browser.ts\nvar nav = typeof navigator != \"undefined\" ? navigator : null;\nvar agent = nav && nav.userAgent || \"\";\nvar ie_edge = /Edge\\/(\\d+)/.exec(agent);\nvar ie_upto10 = /MSIE \\d/.exec(agent);\nvar ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nvar ie = !!(ie_upto10 || ie_11up || ie_edge);\nvar safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n\n// src/index.ts\nvar key = new PluginKey(\"safari-ime-span\");\nvar isComposing = false;\nvar spec = {\n key,\n props: {\n decorations: createDecorations,\n handleDOMEvents: {\n compositionstart: () => {\n isComposing = true;\n },\n compositionend: () => {\n isComposing = false;\n }\n }\n }\n};\nfunction createDecorations(state) {\n const { $from, $to, to } = state.selection;\n if (isComposing && $from.sameParent($to)) {\n const deco = Decoration.widget(to, createSpan, {\n ignoreSelection: true,\n key: \"safari-ime-span\"\n });\n return DecorationSet.create(state.doc, [deco]);\n }\n}\nfunction createSpan(view) {\n const span = view.dom.ownerDocument.createElement(\"span\");\n span.className = \"ProseMirror-safari-ime-span\";\n return span;\n}\nvar imeSpan = new Plugin(safari ? spec : { key });\nexport {\n imeSpan\n};\n", "/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n", "export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n", "/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) \u2014 whole match\n * * `...capture` (`Array<string>`) \u2014 matches from regex capture groups\n * * `match` (`RegExpMatchObject`) \u2014 info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * \u2026or when `false`, do not replace at all\n * * \u2026or when `string`, replace with a text node of that value\n * * \u2026or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array<Nodes> | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parents>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array<Nodes>} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn\u2019t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n", "/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct,\n notInConstruct\n }\n ]\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'link')\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n // If it\u2019s an email, the previous character should not be a slash.\n (!email || code !== 47)\n )\n}\n", "/**\n * @import {\n * CompileContext,\n * Extension as FromMarkdownExtension,\n * Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {ToMarkdownOptions} from 'mdast-util-gfm-footnote'\n * @import {\n * Handle as ToMarkdownHandle,\n * Map,\n * Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n * @import {FootnoteDefinition, FootnoteReference} from 'mdast'\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteReference')\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteDefinition')\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteReference')\n const subexit = state.enter('reference')\n value += tracker.move(\n state.safe(state.associationId(node), {after: ']', before: value})\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteCallString: enterFootnoteCallString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteDefinition: enterFootnoteDefinition\n },\n exit: {\n gfmFootnoteCallString: exitFootnoteCallString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteDefinition: exitFootnoteDefinition\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown(options) {\n // To do: next major: change default.\n let firstLineBlank = false\n\n if (options && options.firstLineBlank) {\n firstLineBlank = true\n }\n\n return {\n handlers: {footnoteDefinition, footnoteReference},\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['label', 'phrasing', 'reference']}]\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\n function footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteDefinition')\n const subexit = state.enter('label')\n value += tracker.move(\n state.safe(state.associationId(node), {before: value, after: ']'})\n )\n subexit()\n\n value += tracker.move(']:')\n\n if (node.children && node.children.length > 0) {\n tracker.shift(4)\n\n value += tracker.move(\n (firstLineBlank ? '\\n' : ' ') +\n state.indentLines(\n state.containerFlow(node, tracker.current()),\n firstLineBlank ? mapAll : mapExceptFirst\n )\n )\n }\n\n exit()\n\n return value\n }\n}\n\n/** @type {Map} */\nfunction mapExceptFirst(line, index, blank) {\n return index === 0 ? line : mapAll(line, index, blank)\n}\n\n/** @type {Map} */\nfunction mapAll(line, index, blank) {\n return (blank ? '' : ' ') + line\n}\n", "/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info)\n const exit = state.enter('strikethrough')\n let value = tracker.move('~~')\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n", "// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n * Configuration.\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n * Whether to align the delimiters (default: `true`);\n * they are aligned by default:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n * How to align columns (default: `''`);\n * one style for all columns or styles for their respective columns;\n * each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n * other values are treated as `''`, which doesn\u2019t place the colon in the\n * alignment row but does align left;\n * *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n * Whether to end each row with the delimiter (default: `true`).\n *\n * > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n * > that aren\u2019t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n * Whether to begin each row with the delimiter (default: `true`).\n *\n * > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n * > that aren\u2019t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean | null | undefined} [padding=true]\n * Whether to add a space of padding between delimiters and cells\n * (default: `true`).\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n * Function to detect the length of table cell content (optional);\n * this is used when aligning the delimiters (`|`) between table cells;\n * full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source;\n * to fix this, you can pass this function,\n * which receives the cell content and returns its \u201Cvisible\u201D size;\n * note that what is and isn\u2019t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['\u4E2D\u6587', 'Charlie'],\n * ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | \u4E2D\u6587 | Charlie |\n * | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['\u4E2D\u6587', 'Charlie'],\n * ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | \u4E2D\u6587 | Charlie |\n * | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n * ```\n */\n\n/**\n * @param {string} value\n * Cell value.\n * @returns {number}\n * Cell size.\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n * Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Result.\n */\nexport function markdownTable(table, options) {\n const settings = options || {}\n // To do: next major: change to spread.\n const align = (settings.align || []).concat()\n const stringLength = settings.stringLength || defaultStringLength\n /** @type {Array<number>} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array<Array<string>>} Cells per row. */\n const cellMatrix = []\n /** @type {Array<Array<number>>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array<number>} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don\u2019t align delimiters, but otherwise we\u2019d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (settings.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n settings.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (settings.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array<string>} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array<string>} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (settings.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (settings.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n settings.padding !== false &&\n // Don\u2019t add the opening space if we\u2019re not aligning and the cell is\n // empty: there will be a closing space.\n !(settings.alignDelimiters === false && cell === '') &&\n (settings.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (settings.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (settings.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (settings.padding !== false) {\n line.push(' ')\n }\n\n if (\n settings.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n settings.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n * Value to serialize.\n * @returns {string}\n * Result.\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n * Value.\n * @returns {number}\n * Alignment.\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n", "/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells (default:\n * `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n const align = token._align\n assert(align, 'expected `_align` on table')\n this.enter(\n {\n type: 'table',\n align: align.map(function (d) {\n return d === 'none' ? null : d\n }),\n children: []\n },\n token\n )\n this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineCode')\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don\u2019t (but can\u2019t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align)\n }\n\n /**\n * This function isn\u2019t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, state, info) {\n const exit = state.enter('tableCell')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array<Array<string>>} matrix\n * @param {Array<string | null | undefined> | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array<Array<string>>} */\n const result = []\n const subexit = state.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableRowAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array<string>} */\n const result = []\n const subexit = state.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(children[index], node, state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, state) {\n let value = defaultHandlers.inlineCode(node, parent, state)\n\n if (state.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n", "/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n // We\u2019re always in a paragraph, in a list item.\n const node = this.stack[this.stack.length - 2]\n assert(node.type === 'listItem')\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2]\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'paragraph')\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = state.createTracker(info)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = defaultHandlers.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n", "/**\n * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'\n * @import {Options} from 'mdast-util-gfm'\n * @import {Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(options),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n }\n}\n", "/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n name: 'wwwAutolink',\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n name: 'protocolAutolink',\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n name: 'emailAutolink',\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n return {\n text\n };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That\u2019s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this;\n /** @type {boolean | undefined} */\n let dot;\n /** @type {boolean} */\n let data;\n return start;\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code);\n }\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkEmail');\n return atext(code);\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code);\n return atext;\n }\n if (code === 64) {\n effects.consume(code);\n return emailDomain;\n }\n return nok(code);\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true;\n effects.consume(code);\n return emailDomain;\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we\u2019d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn\u2019t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code);\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code);\n dot = true;\n return emailDomain;\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail');\n effects.exit('literalAutolink');\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this;\n return wwwStart;\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code);\n }\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkWww');\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww');\n effects.exit('literalAutolink');\n return ok(code);\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this;\n let buffer = '';\n let seen = false;\n return protocolStart;\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkHttp');\n buffer += String.fromCodePoint(code);\n effects.consume(code);\n return protocolPrefixInside;\n }\n return nok(code);\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code);\n effects.consume(code);\n return protocolPrefixInside;\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code);\n return protocolSlashesInside;\n }\n }\n return nok(code);\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code);\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp');\n effects.exit('literalAutolink');\n return ok(code);\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0;\n return wwwPrefixInside;\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++;\n effects.consume(code);\n return wwwPrefixInside;\n }\n if (code === 46 && size === 3) {\n effects.consume(code);\n return wwwPrefixAfter;\n }\n return nok(code);\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code);\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment;\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment;\n /** @type {boolean | undefined} */\n let seen;\n return domainInside;\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.\u9EDE\u770B.com`,\n // so that\u2019s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n return domainAfter(code);\n }\n seen = true;\n effects.consume(code);\n return domainInside;\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true;\n }\n // Otherwise, it\u2019s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = undefined;\n }\n effects.consume(code);\n return domainInside;\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that\u2019s GH says a dot is needed, but it\u2019s not true:\n // <https://github.com/github/cmark-gfm/issues/279>\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code);\n }\n return ok(code);\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++;\n effects.consume(code);\n return pathInside;\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don\u2019t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code);\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n return effects.check(trail, ok, pathAtPunctuation)(code);\n }\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n effects.consume(code);\n return pathInside;\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++;\n }\n effects.consume(code);\n return pathInside;\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail;\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n effects.consume(code);\n return trail;\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code);\n return trailCharacterReferenceStart;\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // <https://github.com/github/cmark-gfm/issues/278>.\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In trail, after `]`.\n *\n * > \uD83D\uDC49 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n return trail(code);\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharacterReferenceStart(code) {\n // When non-alpha, it\u2019s not a trail.\n return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharacterReferenceInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code);\n return trail;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return trailCharacterReferenceInside;\n }\n\n // It\u2019s not a trail.\n return nok(code);\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start;\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code);\n return after;\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code);\n }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash \u201Cinside\u201D atext.\n // The reference code is a bit weird, but that\u2019s what it results in.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n result = true;\n break;\n }\n\n // If we\u2019ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as \u201Cwalked into\u201D w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}", "/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n name: 'gfmFootnoteDefinition',\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n name: 'gfmFootnoteCall',\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n name: 'gfmPotentialFootnoteCall',\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n /** @type {Token} */\n let labelStart;\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n\n // Exit if we\u2019ve walked far enough.\n if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code);\n }\n const id = normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n }));\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code);\n }\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n return ok(code);\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n /** @type {Token | undefined} */\n let labelStart;\n\n // Find an opening.\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n labelStart = events[index][1];\n break;\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n // Increment the end 1 character.\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n /** @type {Token} */\n const chunk = {\n type: \"chunkString\",\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n\n /** @type {Array<Event>} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1], events[index + 2], ['enter', call, context],\n // The `[`\n events[index + 3], events[index + 4],\n // The `^`.\n ['enter', marker, context], ['exit', marker, context],\n // Everything in between.\n ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n /** @type {boolean} */\n let data;\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can\u2019t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start;\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall');\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n return callStart;\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code);\n effects.enter('gfmFootnoteCallMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallMarker');\n effects.enter('gfmFootnoteCallString');\n effects.enter('chunkString').contentType = 'string';\n return callData;\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n code === 93 && !data ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit('chunkString');\n const token = effects.exit('gfmFootnoteCallString');\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code);\n }\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n effects.exit('gfmFootnoteCall');\n return ok;\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true;\n }\n size++;\n effects.consume(code);\n return code === 92 ? callEscape : callData;\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return callData;\n }\n return callData(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n /** @type {string} */\n let identifier;\n let size = 0;\n /** @type {boolean | undefined} */\n let data;\n return start;\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true;\n effects.enter('gfmFootnoteDefinitionLabel');\n effects.enter('gfmFootnoteDefinitionLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionLabelMarker');\n return labelAtMarker;\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionMarker');\n effects.enter('gfmFootnoteDefinitionLabelString');\n effects.enter('chunkString').contentType = 'string';\n return labelInside;\n }\n return nok(code);\n }\n\n /**\n * In label.\n *\n * > \uD83D\uDC49 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n code === 93 && !data ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit('chunkString');\n const token = effects.exit('gfmFootnoteDefinitionLabelString');\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter('gfmFootnoteDefinitionLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionLabelMarker');\n effects.exit('gfmFootnoteDefinitionLabel');\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true;\n }\n size++;\n effects.consume(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > \uD83D\uDC49 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > <https://github.com/github/cmark-gfm/issues/240>\n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker');\n effects.consume(code);\n effects.exit('definitionMarker');\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n }\n return nok(code);\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n }\n}", "/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n name: 'strikethrough',\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === undefined) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n let open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = 'strikethroughSequence';\n events[open][1].type = 'strikethroughSequence';\n\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n\n // Opening.\n /** @type {Array<Event>} */\n const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n // Between.\n splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n }\n\n // Closing.\n splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code);\n }\n effects.enter('strikethroughSequenceTemporary');\n return more(code);\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous);\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code);\n effects.consume(code);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code);\n const token = effects.exit('strikethroughSequenceTemporary');\n const after = classifyCharacter(code);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok(code);\n }\n }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it\u2019s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it\u2019s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array<Change>}\n */\n this.map = [];\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImplementation(this, index, remove, add);\n }\n\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array<Event>} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImplementation(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array<Event>} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function (a, b) {\n return a[0] - b[0];\n });\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return;\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array<Jump>} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length;\n /** @type {Array<Array<Event>>} */\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n // Truncate rest.\n events.length = this.map[index][0];\n }\n vecs.push(events.slice());\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n for (const element of slice) {\n events.push(element);\n }\n slice = vecs.pop();\n }\n\n // Truncate everything.\n this.map.length = 0;\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\nfunction addImplementation(editMap, at, remove, add) {\n let index = 0;\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n\n // To do: before not used by tables, use when moving to micromark.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add);\n // }\n\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array<Event>} events\n// * @param {Array<Jump>} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n * List of events.\n * @param {number} index\n * Table enter event.\n * @returns {Array<Align>}\n * List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n /** @type {Array<Align>} */\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break;\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}", "/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n */\nexport function gfmTable() {\n return {\n flow: {\n null: {\n name: 'table',\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n /** @type {boolean | undefined} */\n let seen;\n return start;\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\") index--;else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n // Don\u2019t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n return next(code);\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead');\n effects.enter('tableRow');\n return headRowStart(code);\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code);\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true;\n // Count the first character, that isn\u2019t a pipe, double.\n sizeB += 1;\n return headRowBreak(code);\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it\u2019s fine.\n if (sizeB > 1) {\n sizeB = 0;\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true;\n effects.exit('tableRow');\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n return nok(code);\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n // Header cell count.\n size += 1;\n }\n if (code === 124) {\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n // Whether a delimiter was seen.\n seen = true;\n return headRowBreak;\n }\n\n // Anything else is cell data.\n effects.enter(\"data\");\n return headRowData(code);\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"data\");\n return headRowBreak(code);\n }\n effects.consume(code);\n return code === 92 ? headRowEscape : headRowData;\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code);\n return headRowData;\n }\n return headRowData(code);\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false;\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n effects.enter('tableDelimiterRow');\n // Track if we\u2019ve seen a `:` or `|`.\n seen = false;\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return headDelimiterBefore(code);\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code);\n }\n if (code === 124) {\n seen = true;\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n return headDelimiterCellBefore;\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code);\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n }\n return headDelimiterValueBefore(code);\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1;\n seen = true;\n effects.enter('tableDelimiterMarker');\n effects.consume(code);\n effects.exit('tableDelimiterMarker');\n return headDelimiterLeftAlignmentAfter;\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1;\n // To do: seems weird that this *isn\u2019t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code);\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code);\n }\n return headDelimiterNok(code);\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller');\n return headDelimiterFiller(code);\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code);\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code);\n return headDelimiterFiller;\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true;\n effects.exit('tableDelimiterFiller');\n effects.enter('tableDelimiterMarker');\n effects.consume(code);\n effects.exit('tableDelimiterMarker');\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit('tableDelimiterFiller');\n return headDelimiterRightAlignmentAfter(code);\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n }\n return headDelimiterCellAfter(code);\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code);\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it\u2019s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code);\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow');\n effects.exit('tableHead');\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code);\n }\n return headDelimiterNok(code);\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n return nok(code);\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we\u2019re here, we\u2019re\n // never at whitespace.\n effects.enter('tableRow');\n return bodyRowBreak(code);\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n return bodyRowBreak;\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow');\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n }\n\n // Anything else is cell content.\n effects.enter(\"data\");\n return bodyRowData(code);\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"data\");\n return bodyRowBreak(code);\n }\n effects.consume(code);\n return code === 92 ? bodyRowEscape : bodyRowData;\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code);\n return bodyRowData;\n }\n return bodyRowData(code);\n }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n /** @type {RowKind} */\n let rowKind = 0;\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0];\n /** @type {Range} */\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n /** @type {Token | undefined} */\n let currentTable;\n /** @type {Token | undefined} */\n let currentBody;\n /** @type {Token | undefined} */\n let currentCell;\n const map = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false;\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n currentBody = undefined;\n lastTableEnd = 0;\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map.add(index, 0, [['enter', currentTable, context]]);\n } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n inFirstCellAwaitingPipe = true;\n currentCell = undefined;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map.add(index, 0, [['enter', currentBody, context]]);\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n }\n // Cell data.\n else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n inFirstCellAwaitingPipe = false;\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n }\n map.consume(context.events);\n\n // To do: move this into `html`, when events are exposed there.\n // That\u2019s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly<TokenizeContext>} context\n * @param {Readonly<Range>} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent';\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map.add(range[0], 0, [['exit', previousCell, context]]);\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map.add(range[1], 0, [['enter', previousCell, context]]);\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map.add(range[2], 0, [['enter', valueToken, context]]);\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map.add(a, b, []);\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two \u201Cbetween\u201D parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map.add(rowEnd, 0, [['exit', previousCell, context]]);\n previousCell = undefined;\n }\n return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n * @param {Readonly<TokenizeContext>} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array<Event>} */\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push(['exit', tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push(['exit', table, context]);\n map.add(index + 1, 0, exits);\n}\n\n/**\n * @param {Readonly<Array<Event>>} events\n * @param {number} index\n * @returns {Readonly<Point>}\n */\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === 'enter' ? 'start' : 'end';\n return event[1][side];\n}", "/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n name: 'tasklistCheck',\n tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this;\n return open;\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there\u2019s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem) {\n return nok(code);\n }\n effects.enter('taskListCheck');\n effects.enter('taskListCheckMarker');\n effects.consume(code);\n effects.exit('taskListCheckMarker');\n return inside;\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked');\n effects.consume(code);\n effects.exit('taskListCheckValueUnchecked');\n return close;\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked');\n effects.consume(code);\n effects.exit('taskListCheckValueChecked');\n return close;\n }\n return nok(code);\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker');\n effects.consume(code);\n effects.exit('taskListCheckMarker');\n effects.exit('taskListCheck');\n return after;\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code);\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check({\n tokenize: spaceThenNonSpace\n }, ok, nok)(code);\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, \"whitespace\");\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there\u2019s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code);\n }\n}", "/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml(),\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml(),\n gfmTableHtml(),\n gfmTagfilterHtml(),\n gfmTaskListItemHtml()\n ])\n}\n", "/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkGfm(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor<Root>} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(gfm(settings))\n fromMarkdownExtensions.push(gfmFromMarkdown())\n toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/preset-gfm',\n ...meta,\n },\n })\n\n return plugin\n}\n", "import { commandsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the strikethrough mark.\nexport const strikethroughAttr = $markAttr('strike_through')\n\nwithMeta(strikethroughAttr, {\n displayName: 'Attr<strikethrough>',\n group: 'Strikethrough',\n})\n\n/// Strikethrough mark schema.\nexport const strikethroughSchema = $markSchema('strike_through', (ctx) => ({\n parseDOM: [\n { tag: 'del' },\n {\n style: 'text-decoration',\n getAttrs: (value) => (value === 'line-through') as false,\n },\n ],\n toDOM: (mark) => ['del', ctx.get(strikethroughAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'delete',\n runner: (state, node, markType) => {\n state.openMark(markType)\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'strike_through',\n runner: (state, mark) => {\n state.withMark(mark, 'delete')\n },\n },\n}))\n\nwithMeta(strikethroughSchema.mark, {\n displayName: 'MarkSchema<strikethrough>',\n group: 'Strikethrough',\n})\n\nwithMeta(strikethroughSchema.ctx, {\n displayName: 'MarkSchemaCtx<strikethrough>',\n group: 'Strikethrough',\n})\n\n/// A command to toggle the strikethrough mark.\nexport const toggleStrikethroughCommand = $command(\n 'ToggleStrikeThrough',\n (ctx) => () => {\n return toggleMark(strikethroughSchema.type(ctx))\n }\n)\n\nwithMeta(toggleStrikethroughCommand, {\n displayName: 'Command<ToggleStrikethrough>',\n group: 'Strikethrough',\n})\n\n/// Input rule to create the strikethrough mark.\nexport const strikethroughInputRule = $inputRule((ctx) => {\n return markRule(\n /(?<![\\w:/])(~{1,2})(.+?)\\1(?!\\w|\\/)/,\n strikethroughSchema.type(ctx)\n )\n})\n\nwithMeta(strikethroughInputRule, {\n displayName: 'InputRule<strikethrough>',\n group: 'Strikethrough',\n})\n\n/// Keymap for the strikethrough mark.\n/// - `Mod-Alt-x` - Toggle the strikethrough mark.\nexport const strikethroughKeymap = $useKeymap('strikeThroughKeymap', {\n ToggleStrikethrough: {\n shortcuts: 'Mod-Alt-x',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleStrikethroughCommand.key)\n },\n },\n})\n\nwithMeta(strikethroughKeymap.ctx, {\n displayName: 'KeymapCtx<strikethrough>',\n group: 'Strikethrough',\n})\n\nwithMeta(strikethroughKeymap.shortcuts, {\n displayName: 'Keymap<strikethrough>',\n group: 'Strikethrough',\n})\n", "import type { NodeType } from '@milkdown/prose/model'\nimport type { MarkdownNode } from '@milkdown/transformer'\n\nimport { tableNodes } from '@milkdown/prose/tables'\nimport { $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\n\nconst originalSchema = tableNodes({\n tableGroup: 'block',\n cellContent: 'paragraph',\n cellAttributes: {\n alignment: {\n default: 'left',\n getFromDOM: (dom) => dom.style.textAlign || 'left',\n setDOMAttr: (value, attrs) => {\n attrs.style = `text-align: ${value || 'left'}`\n },\n },\n },\n})\n\n/// Schema for table node.\nexport const tableSchema = $nodeSchema('table', () => ({\n ...originalSchema.table,\n content: 'table_header_row table_row+',\n disableDropCursor: true,\n parseMarkdown: {\n match: (node) => node.type === 'table',\n runner: (state, node, type) => {\n const align = node.align as (string | null)[]\n const children = (node.children as MarkdownNode[]).map((x, i) => ({\n ...x,\n align,\n isHeader: i === 0,\n }))\n state.openNode(type)\n state.next(children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table',\n runner: (state, node) => {\n const firstLine = node.content.firstChild?.content\n if (!firstLine) return\n\n const align: (string | null)[] = []\n firstLine.forEach((cell) => {\n align.push(cell.attrs.alignment)\n })\n state.openNode('table', undefined, { align })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableSchema.node, {\n displayName: 'NodeSchema<table>',\n group: 'Table',\n})\n\nwithMeta(tableSchema.ctx, {\n displayName: 'NodeSchemaCtx<table>',\n group: 'Table',\n})\n\n/// Schema for table header row node.\nexport const tableHeaderRowSchema = $nodeSchema('table_header_row', () => ({\n ...originalSchema.table_row,\n disableDropCursor: true,\n content: '(table_header)*',\n parseDOM: [\n { tag: 'tr[data-is-header]' },\n {\n tag: 'tr',\n getAttrs: (dom: HTMLElement) => {\n if (dom instanceof HTMLElement) {\n const hasHeader = dom.querySelector('th')\n return hasHeader ? {} : false\n }\n return false\n },\n },\n ],\n toDOM() {\n return ['tr', { 'data-is-header': true }, 0]\n },\n parseMarkdown: {\n match: (node) => Boolean(node.type === 'tableRow' && node.isHeader),\n runner: (state, node, type) => {\n const align = node.align as (string | null)[]\n const children = (node.children as MarkdownNode[]).map((x, i) => ({\n ...x,\n align: align[i],\n isHeader: node.isHeader,\n }))\n state.openNode(type)\n state.next(children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_header_row',\n runner: (state, node) => {\n // if the row is empty, we don't need to create a table row\n // prevent remark from crashing\n if (node.content.size === 0) {\n return\n }\n state.openNode('tableRow', undefined, { isHeader: true })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableHeaderRowSchema.node, {\n displayName: 'NodeSchema<tableHeaderRow>',\n group: 'Table',\n})\n\nwithMeta(tableHeaderRowSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableHeaderRow>',\n group: 'Table',\n})\n\n/// Schema for table row node.\nexport const tableRowSchema = $nodeSchema('table_row', () => ({\n ...originalSchema.table_row,\n disableDropCursor: true,\n content: '(table_cell)*',\n parseMarkdown: {\n match: (node) => node.type === 'tableRow',\n runner: (state, node, type) => {\n const align = node.align as (string | null)[]\n const children = (node.children as MarkdownNode[]).map((x, i) => ({\n ...x,\n align: align[i],\n }))\n state.openNode(type)\n state.next(children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_row',\n runner: (state, node) => {\n // if the row is empty, we don't need to create a table row\n // prevent remark from crashing\n if (node.content.size === 0) {\n return\n }\n state.openNode('tableRow')\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableRowSchema.node, {\n displayName: 'NodeSchema<tableRow>',\n group: 'Table',\n})\n\nwithMeta(tableRowSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableRow>',\n group: 'Table',\n})\n\n/// Schema for table cell node.\nexport const tableCellSchema = $nodeSchema('table_cell', () => ({\n ...originalSchema.table_cell,\n disableDropCursor: true,\n parseMarkdown: {\n match: (node) => node.type === 'tableCell' && !node.isHeader,\n runner: (state, node, type) => {\n const align = node.align as string\n state\n .openNode(type, { alignment: align })\n .openNode(state.schema.nodes.paragraph as NodeType)\n .next(node.children)\n .closeNode()\n .closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_cell',\n runner: (state, node) => {\n state.openNode('tableCell').next(node.content).closeNode()\n },\n },\n}))\n\nwithMeta(tableCellSchema.node, {\n displayName: 'NodeSchema<tableCell>',\n group: 'Table',\n})\n\nwithMeta(tableCellSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableCell>',\n group: 'Table',\n})\n\n/// Schema for table header node.\nexport const tableHeaderSchema = $nodeSchema('table_header', () => ({\n ...originalSchema.table_header,\n disableDropCursor: true,\n parseMarkdown: {\n match: (node) => node.type === 'tableCell' && !!node.isHeader,\n runner: (state, node, type) => {\n const align = node.align as string\n state.openNode(type, { alignment: align })\n state.openNode(state.schema.nodes.paragraph as NodeType)\n state.next(node.children)\n state.closeNode()\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_header',\n runner: (state, node) => {\n state.openNode('tableCell')\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableHeaderSchema.node, {\n displayName: 'NodeSchema<tableHeader>',\n group: 'Table',\n})\n\nwithMeta(tableHeaderSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableHeader>',\n group: 'Table',\n})\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Node } from '@milkdown/prose/model'\n\nimport {\n tableCellSchema,\n tableHeaderRowSchema,\n tableHeaderSchema,\n tableRowSchema,\n tableSchema,\n} from '../schema'\n\n/// @internal\nexport function createTable(ctx: Ctx, rowsCount = 3, colsCount = 3): Node {\n const cells = Array(colsCount)\n .fill(0)\n .map(() => tableCellSchema.type(ctx).createAndFill()!)\n\n const headerCells = Array(colsCount)\n .fill(0)\n .map(() => tableHeaderSchema.type(ctx).createAndFill()!)\n\n const rows = Array(rowsCount)\n .fill(0)\n .map((_, i) =>\n i === 0\n ? tableHeaderRowSchema.type(ctx).create(null, headerCells)\n : tableRowSchema.type(ctx).create(null, cells)\n )\n\n return tableSchema.type(ctx).create(null, rows)\n}\n", "import type { Selection } from '@milkdown/prose/state'\n\nimport { findTable, TableMap } from '@milkdown/prose/tables'\n\nimport type { CellPos } from './types'\n\n/// Get cells in a column of a table.\nexport function getCellsInCol(\n columnIndexes: number | number[],\n selection: Selection\n): CellPos[] | undefined {\n const table = findTable(selection.$from)\n if (!table) return undefined\n\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(columnIndexes) ? columnIndexes : [columnIndexes]\n\n return indexes\n .filter((index) => index >= 0 && index <= map.width - 1)\n .flatMap((index) => {\n const cells = map.cellsInRect({\n left: index,\n right: index + 1,\n top: 0,\n bottom: map.height,\n })\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node, depth: table.depth + 2 }\n })\n })\n}\n", "import type { Selection } from '@milkdown/prose/state'\n\nimport { findTable, TableMap } from '@milkdown/prose/tables'\n\nimport type { CellPos } from './types'\n\n/// Get cells in a row of a table.\nexport function getCellsInRow(\n rowIndex: number | number[],\n selection: Selection\n): CellPos[] | undefined {\n const table = findTable(selection.$from)\n if (!table) {\n return\n }\n\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(rowIndex) ? rowIndex : [rowIndex]\n\n return indexes\n .filter((index) => index >= 0 && index <= map.height - 1)\n .flatMap((index) => {\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: index,\n bottom: index + 1,\n })\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node, depth: table.depth + 2 }\n })\n })\n}\n", "import type { Selection, Transaction } from '@milkdown/prose/state'\n\nimport { cloneTr, findParentNodeClosestToPos } from '@milkdown/prose'\nimport { CellSelection, TableMap } from '@milkdown/prose/tables'\n\n/// @internal\nexport function selectLine(type: 'row' | 'col') {\n return (index: number, pos?: number) => (tr: Transaction) => {\n pos = pos ?? tr.selection.from\n const $pos = tr.doc.resolve(pos)\n const $node = findParentNodeClosestToPos(\n (node) => node.type.name === 'table'\n )($pos)\n const table = $node\n ? {\n node: $node.node,\n from: $node.start,\n }\n : undefined\n\n const isRowSelection = type === 'row'\n if (table) {\n const map = TableMap.get(table.node)\n\n // Check if the index is valid\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n const lastCell = map.positionAt(\n isRowSelection ? index : map.height - 1,\n isRowSelection ? map.width - 1 : index,\n table.node\n )\n const $lastCell = tr.doc.resolve(table.from + lastCell)\n\n const createCellSelection = isRowSelection\n ? // oxlint-disable-next-line typescript/unbound-method\n CellSelection.rowSelection\n : // oxlint-disable-next-line typescript/unbound-method\n CellSelection.colSelection\n\n const firstCell = map.positionAt(\n isRowSelection ? index : 0,\n isRowSelection ? 0 : index,\n table.node\n )\n const $firstCell = tr.doc.resolve(table.from + firstCell)\n return cloneTr(\n tr.setSelection(\n createCellSelection($lastCell, $firstCell) as unknown as Selection\n )\n )\n }\n }\n return tr\n }\n}\n\n/// If the selection is in a table,\n/// select the {index} row.\nexport const selectRow = selectLine('row')\n\n/// If the selection is in a table,\n/// select the {index} column.\nexport const selectCol = selectLine('col')\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Node } from '@milkdown/prose/model'\nimport type { Transaction } from '@milkdown/prose/state'\nimport type { TableRect } from '@milkdown/prose/tables'\n\nimport { tableCellSchema, tableRowSchema } from '../schema'\n\n/// @internal\nexport function addRowWithAlignment(\n ctx: Ctx,\n tr: Transaction,\n { map, tableStart, table }: TableRect,\n row: number\n) {\n const rowPos = Array(row)\n .fill(0)\n .reduce((acc, _, i) => {\n return acc + table.child(i).nodeSize\n }, tableStart)\n\n const cells = Array(map.width)\n .fill(0)\n .map((_, col) => {\n const headerCol = table.nodeAt(map.map[col] as number)\n return tableCellSchema\n .type(ctx)\n .createAndFill({ alignment: headerCol?.attrs.alignment }) as Node\n })\n\n tr.insert(rowPos, tableRowSchema.type(ctx).create(null, cells))\n return tr\n}\n", "import type { Selection } from '@milkdown/prose/state'\n\nimport { findTable, TableMap } from '@milkdown/prose/tables'\n\n/// Get all cells in a table.\nexport function getAllCellsInTable(selection: Selection) {\n const table = findTable(selection.$from)\n if (!table) return\n\n const map = TableMap.get(table.node)\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node }\n })\n}\n", "import type { Transaction } from '@milkdown/prose/state'\n\nimport { cloneTr } from '@milkdown/prose'\nimport { CellSelection } from '@milkdown/prose/tables'\n\nimport { getAllCellsInTable } from './get-all-cells-in-table'\n\n/// Select a possible table in current selection.\nexport function selectTable(tr: Transaction) {\n const cells = getAllCellsInTable(tr.selection)\n if (cells && cells[0]) {\n const $firstCell = tr.doc.resolve(cells[0].pos)\n const last = cells[cells.length - 1]\n if (last) {\n const $lastCell = tr.doc.resolve(last.pos)\n return cloneTr(tr.setSelection(new CellSelection($lastCell, $firstCell)))\n }\n }\n return tr\n}\n", "import { paragraphSchema } from '@milkdown/preset-commonmark'\nimport { findParentNodeType } from '@milkdown/prose'\nimport { Selection } from '@milkdown/prose/state'\nimport {\n CellSelection,\n addColumnAfter,\n addColumnBefore,\n deleteColumn,\n deleteRow,\n deleteTable,\n goToNextCell,\n isInTable,\n selectedRect,\n setCellAttr,\n moveTableRow,\n moveTableColumn,\n} from '@milkdown/prose/tables'\nimport { $command } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\nimport { tableSchema } from './schema'\nimport {\n addRowWithAlignment,\n createTable,\n selectCol,\n selectRow,\n selectTable,\n} from './utils'\n\n/// A command for moving cursor to previous cell.\nexport const goToPrevTableCellCommand = $command(\n 'GoToPrevTableCell',\n () => () => goToNextCell(-1)\n)\n\nwithMeta(goToPrevTableCellCommand, {\n displayName: 'Command<goToPrevTableCellCommand>',\n group: 'Table',\n})\n\n/// A command for moving cursor to next cell.\nexport const goToNextTableCellCommand = $command(\n 'GoToNextTableCell',\n () => () => goToNextCell(1)\n)\n\nwithMeta(goToNextTableCellCommand, {\n displayName: 'Command<goToNextTableCellCommand>',\n group: 'Table',\n})\n\n/// A command for quitting current table and insert a new paragraph node.\nexport const exitTable = $command(\n 'ExitTable',\n (ctx) => () => (state, dispatch) => {\n if (!isInTable(state)) return false\n\n const { $head } = state.selection\n const table = findParentNodeType($head, tableSchema.type(ctx))\n if (!table) return false\n\n const { to } = table\n\n const tr = state.tr.replaceWith(\n to,\n to,\n paragraphSchema.type(ctx).createAndFill()!\n )\n\n tr.setSelection(Selection.near(tr.doc.resolve(to), 1)).scrollIntoView()\n dispatch?.(tr)\n return true\n }\n)\n\nwithMeta(exitTable, {\n displayName: 'Command<breakTableCommand>',\n group: 'Table',\n})\n\n/// A command for inserting a table.\n/// You can specify the number of rows and columns.\n/// By default, it will insert a 3x3 table.\nexport const insertTableCommand = $command(\n 'InsertTable',\n (ctx) =>\n ({ row, col }: { row?: number; col?: number } = {}) =>\n (state, dispatch) => {\n const { selection, tr } = state\n const { from } = selection\n const table = createTable(ctx, row, col)\n const _tr = tr.replaceSelectionWith(table)\n const sel = Selection.findFrom(_tr.doc.resolve(from), 1, true)\n if (sel) _tr.setSelection(sel)\n\n dispatch?.(_tr)\n\n return true\n }\n)\n\nwithMeta(insertTableCommand, {\n displayName: 'Command<insertTableCommand>',\n group: 'Table',\n})\n\n/// A command for moving a row in a table.\n/// You should specify the `from` and `to` index.\nexport const moveRowCommand = $command(\n 'MoveRow',\n () =>\n ({ from, to, pos }: { from?: number; to?: number; pos?: number } = {}) =>\n moveTableRow({\n from: from ?? 0,\n to: to ?? 0,\n pos,\n })\n)\n\nwithMeta(moveRowCommand, {\n displayName: 'Command<moveRowCommand>',\n group: 'Table',\n})\n\n/// A command for moving a column in a table.\n/// You should specify the `from` and `to` index.\nexport const moveColCommand = $command(\n 'MoveCol',\n () =>\n ({ from, to, pos }: { from?: number; to?: number; pos?: number } = {}) =>\n moveTableColumn({\n from: from ?? 0,\n to: to ?? 0,\n pos,\n })\n)\n\nwithMeta(moveColCommand, {\n displayName: 'Command<moveColCommand>',\n group: 'Table',\n})\n\n/// A command for selecting a row.\nexport const selectRowCommand = $command<\n { index: number; pos?: number },\n 'SelectRow'\n>(\n 'SelectRow',\n () =>\n (payload: { index: number; pos?: number } = { index: 0 }) =>\n (state, dispatch) => {\n const { tr } = state\n const result = dispatch?.(selectRow(payload.index, payload.pos)(tr))\n\n return Boolean(result)\n }\n)\n\nwithMeta(selectRowCommand, {\n displayName: 'Command<selectRowCommand>',\n group: 'Table',\n})\n\n/// A command for selecting a column.\nexport const selectColCommand = $command<\n { index: number; pos?: number },\n 'SelectCol'\n>(\n 'SelectCol',\n () =>\n (payload: { index: number; pos?: number } = { index: 0 }) =>\n (state, dispatch) => {\n const { tr } = state\n const result = dispatch?.(selectCol(payload.index, payload.pos)(tr))\n\n return Boolean(result)\n }\n)\n\nwithMeta(selectColCommand, {\n displayName: 'Command<selectColCommand>',\n group: 'Table',\n})\n\n/// A command for selecting a table.\nexport const selectTableCommand = $command(\n 'SelectTable',\n () => () => (state, dispatch) => {\n const { tr } = state\n const result = dispatch?.(selectTable(tr))\n\n return Boolean(result)\n }\n)\n\nwithMeta(selectTableCommand, {\n displayName: 'Command<selectTableCommand>',\n group: 'Table',\n})\n\n/// A command for deleting selected cells.\n/// If the selection is a row or column, the row or column will be deleted.\n/// If all cells are selected, the table will be deleted.\nexport const deleteSelectedCellsCommand = $command(\n 'DeleteSelectedCells',\n () => () => (state, dispatch) => {\n const { selection } = state\n if (!(selection instanceof CellSelection)) return false\n\n const isRow = selection.isRowSelection()\n const isCol = selection.isColSelection()\n\n if (isRow && isCol) return deleteTable(state, dispatch)\n\n if (isCol) return deleteColumn(state, dispatch)\n else return deleteRow(state, dispatch)\n }\n)\n\nwithMeta(deleteSelectedCellsCommand, {\n displayName: 'Command<deleteSelectedCellsCommand>',\n group: 'Table',\n})\n\n/// A command for adding a column before the current column.\nexport const addColBeforeCommand = $command(\n 'AddColBefore',\n () => () => addColumnBefore\n)\n\nwithMeta(addColBeforeCommand, {\n displayName: 'Command<addColBeforeCommand>',\n group: 'Table',\n})\n\n/// A command for adding a column after the current column.\nexport const addColAfterCommand = $command(\n 'AddColAfter',\n () => () => addColumnAfter\n)\n\nwithMeta(addColAfterCommand, {\n displayName: 'Command<addColAfterCommand>',\n group: 'Table',\n})\n\n/// A command for adding a row before the current row.\nexport const addRowBeforeCommand = $command(\n 'AddRowBefore',\n (ctx) => () => (state, dispatch) => {\n if (!isInTable(state)) return false\n if (dispatch) {\n const rect = selectedRect(state)\n dispatch(addRowWithAlignment(ctx, state.tr, rect, rect.top))\n }\n return true\n }\n)\n\nwithMeta(addRowBeforeCommand, {\n displayName: 'Command<addRowBeforeCommand>',\n group: 'Table',\n})\n\n/// A command for adding a row after the current row.\nexport const addRowAfterCommand = $command(\n 'AddRowAfter',\n (ctx) => () => (state, dispatch) => {\n if (!isInTable(state)) return false\n if (dispatch) {\n const rect = selectedRect(state)\n dispatch(addRowWithAlignment(ctx, state.tr, rect, rect.bottom))\n }\n return true\n }\n)\n\nwithMeta(addRowAfterCommand, {\n displayName: 'Command<addRowAfterCommand>',\n group: 'Table',\n})\n\n/// A command for setting alignment property for selected cells.\n/// You can specify the alignment as `left`, `center`, or `right`.\n/// It's `left` by default.\nexport const setAlignCommand = $command<\n 'left' | 'center' | 'right',\n 'SetAlign'\n>(\n 'SetAlign',\n () =>\n (alignment = 'left') =>\n setCellAttr('alignment', alignment)\n)\n\nwithMeta(setAlignCommand, {\n displayName: 'Command<setAlignCommand>',\n group: 'Table',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { paragraphSchema } from '@milkdown/preset-commonmark'\nimport { InputRule } from '@milkdown/prose/inputrules'\nimport {\n type Fragment as FragmentType,\n Fragment,\n type Node as ProsemirrorNode,\n Slice,\n} from '@milkdown/prose/model'\nimport { TextSelection } from '@milkdown/prose/state'\nimport { $inputRule, $pasteRule, $useKeymap } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\nimport {\n exitTable,\n goToNextTableCellCommand,\n goToPrevTableCellCommand,\n} from './command'\nimport {\n tableHeaderRowSchema,\n tableHeaderSchema,\n tableRowSchema,\n tableSchema,\n} from './schema'\nimport { createTable } from './utils'\n\n/// A input rule for creating table.\n/// For example, `|2x2|` will create a 2x2 table.\nexport const insertTableInputRule = $inputRule(\n (ctx) =>\n new InputRule(\n /^\\|(?<col>\\d+)[xX](?<row>\\d+)\\|\\s$/,\n (state, match, start, end) => {\n const $start = state.doc.resolve(start)\n if (\n !$start\n .node(-1)\n .canReplaceWith(\n $start.index(-1),\n $start.indexAfter(-1),\n tableSchema.type(ctx)\n )\n )\n return null\n\n const row = Math.max(Number(match.groups?.row ?? 0), 2)\n\n const tableNode = createTable(ctx, row, Number(match.groups?.col))\n const tr = state.tr.replaceRangeWith(start, end, tableNode)\n return tr\n .setSelection(TextSelection.create(tr.doc, start + 3))\n .scrollIntoView()\n }\n )\n)\n\nwithMeta(insertTableInputRule, {\n displayName: 'InputRule<insertTableInputRule>',\n group: 'Table',\n})\n\n/// A paste rule for fixing tables without header cells.\n/// This is a workaround for some editors (e.g. Google Docs) which allow creating tables without header cells,\n/// which is not supported by Markdown schema.\n/// This paste rule will promote the first data row to header, or add empty header cells as a fallback.\nexport const tablePasteRule = $pasteRule((ctx) => ({\n run: (slice, _view, isPlainText) => {\n if (isPlainText) {\n return slice\n }\n\n function fixTable(node: ProsemirrorNode): ProsemirrorNode {\n const rowsCount = node.childCount\n const colsCount = node.lastChild?.childCount ?? 0\n if (rowsCount === 0 || colsCount === 0) {\n return paragraphSchema.type(ctx).create()\n }\n\n const headerRow = node.firstChild\n const needToFixHeaderRow =\n colsCount > 0 && headerRow && headerRow.childCount === 0\n if (!needToFixHeaderRow) {\n return node\n }\n\n // If there are 2+ data rows (3+ total: empty header + 2+ data rows),\n // promote the first data row to header\n if (rowsCount >= 3) {\n const firstDataRow = node.child(1)\n const headerCells: ProsemirrorNode[] = []\n for (let i = 0; i < firstDataRow.childCount; i++) {\n const cell = firstDataRow.child(i)\n headerCells.push(\n tableHeaderSchema\n .type(ctx)\n .create(cell.attrs, cell.content, cell.marks)\n )\n }\n const newHeaderRow = headerRow.type.create(headerRow.attrs, headerCells)\n\n // Collect remaining data rows (skip promoted row at index 1)\n const remainingRows: ProsemirrorNode[] = []\n for (let i = 2; i < rowsCount; i++) {\n remainingRows.push(node.child(i))\n }\n\n return node.type.create(node.attrs, [newHeaderRow, ...remainingRows])\n }\n\n // Fallback: only 1 data row, can't promote (would leave 0 data rows).\n // Fill the empty header with blank cells.\n const headerCells = Array(colsCount)\n .fill(0)\n .map(() => tableHeaderSchema.type(ctx).createAndFill()!)\n\n const tableCells = new Slice(Fragment.from(headerCells), 0, 0)\n\n const newHeaderRow = headerRow.replace(0, 0, tableCells)\n const newTable = node.replace(\n 0,\n headerRow.nodeSize,\n new Slice(Fragment.from(newHeaderRow), 0, 0)\n )\n return newTable\n }\n\n // Wrap consecutive orphaned table_row nodes (at the top level of a fragment)\n // into a proper table. This happens when ProseMirror's parseSlice breaks\n // a table apart (e.g. when pasting multiple tables from Google Docs).\n function wrapOrphanedRows(fragment: FragmentType): FragmentType {\n const rowType = tableRowSchema.type(ctx)\n const nodes: ProsemirrorNode[] = []\n let pendingRows: ProsemirrorNode[] = []\n let hasOrphans = false\n\n function flushPendingRows() {\n if (pendingRows.length === 0) return\n\n // Create an empty table_header_row, then fixTable will promote the first data row\n const emptyHeaderRow = tableHeaderRowSchema.type(ctx).createAndFill()!\n const table = tableSchema\n .type(ctx)\n .create(null, [emptyHeaderRow, ...pendingRows])\n nodes.push(fixTable(table))\n pendingRows = []\n }\n\n fragment.forEach((node) => {\n if (node.type === rowType) {\n hasOrphans = true\n pendingRows.push(node)\n } else {\n flushPendingRows()\n nodes.push(node)\n }\n })\n flushPendingRows()\n\n return hasOrphans ? Fragment.from(nodes) : fragment\n }\n\n function fixFragment(fragment: FragmentType): FragmentType {\n // First, wrap any orphaned table_row nodes into tables\n let result = wrapOrphanedRows(fragment)\n\n // Then fix existing tables and recurse into children\n let changed = result !== fragment\n const fixed: ProsemirrorNode[] = []\n result.forEach((node) => {\n if (node.type === tableSchema.type(ctx)) {\n const fixedNode = fixTable(node)\n if (fixedNode !== node) changed = true\n fixed.push(fixedNode)\n } else if (node.childCount > 0) {\n const fixedContent = fixFragment(node.content)\n if (fixedContent !== node.content) {\n changed = true\n fixed.push(node.copy(fixedContent))\n } else {\n fixed.push(node)\n }\n } else {\n fixed.push(node)\n }\n })\n return changed ? Fragment.from(fixed) : fragment\n }\n\n // Remove empty paragraphs that directly precede a table\n // (artifacts of broken table parsing from Google Docs)\n function cleanEmptyParagraphs(fragment: FragmentType): FragmentType {\n const nodes: ProsemirrorNode[] = []\n const allNodes: ProsemirrorNode[] = []\n fragment.forEach((node) => allNodes.push(node))\n\n for (let i = 0; i < allNodes.length; i++) {\n const node = allNodes[i]!\n const next = allNodes[i + 1]\n if (\n node.type === paragraphSchema.type(ctx) &&\n node.content.size === 0 &&\n next &&\n next.type === tableSchema.type(ctx)\n ) {\n continue // skip empty paragraph before table\n }\n nodes.push(node)\n }\n\n return nodes.length < allNodes.length ? Fragment.from(nodes) : fragment\n }\n\n let fragment = fixFragment(slice.content)\n fragment = cleanEmptyParagraphs(fragment)\n return new Slice(Fragment.from(fragment), slice.openStart, slice.openEnd)\n },\n}))\n\nwithMeta(tablePasteRule, {\n displayName: 'PasteRule<table>',\n group: 'Table',\n})\n\n/// Keymap for table commands.\n/// - `<Mod-]>`/`<Tab>`: Move to the next cell.\n/// - `<Mod-[>`/`<Shift-Tab>`: Move to the previous cell.\n/// - `<Mod-Enter>`: Exit the table, and break it if possible.\nexport const tableKeymap = $useKeymap('tableKeymap', {\n NextCell: {\n priority: 100,\n shortcuts: ['Mod-]', 'Tab'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n\n return () => commands.call(goToNextTableCellCommand.key)\n },\n },\n PrevCell: {\n shortcuts: ['Mod-[', 'Shift-Tab'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n\n return () => commands.call(goToPrevTableCellCommand.key)\n },\n },\n ExitTable: {\n shortcuts: ['Mod-Enter', 'Enter'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n\n return () => commands.call(exitTable.key)\n },\n },\n})\n\nwithMeta(tableKeymap.ctx, {\n displayName: 'KeymapCtx<table>',\n group: 'Table',\n})\n\nwithMeta(tableKeymap.shortcuts, {\n displayName: 'Keymap<table>',\n group: 'Table',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\n\nconst id = 'footnote_definition'\nconst markdownId = 'footnoteDefinition'\n\n/// Footnote definition node schema.\nexport const footnoteDefinitionSchema = $nodeSchema(\n 'footnote_definition',\n () => ({\n group: 'block',\n content: 'block+',\n defining: true,\n attrs: {\n label: {\n default: '',\n validate: 'string',\n },\n },\n parseDOM: [\n {\n tag: `dl[data-type=\"${id}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n }\n },\n contentElement: 'dd',\n },\n ],\n toDOM: (node) => {\n const label = node.attrs.label\n\n return [\n 'dl',\n {\n // TODO: add a prosemirror plugin to sync label on change\n 'data-label': label,\n 'data-type': id,\n },\n ['dt', label],\n ['dd', 0],\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === markdownId,\n runner: (state, node, type) => {\n state\n .openNode(type, {\n label: node.label as string,\n })\n .next(node.children)\n .closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === id,\n runner: (state, node) => {\n state\n .openNode(markdownId, undefined, {\n label: node.attrs.label,\n identifier: node.attrs.label,\n })\n .next(node.content)\n .closeNode()\n },\n },\n })\n)\n\nwithMeta(footnoteDefinitionSchema.ctx, {\n displayName: 'NodeSchemaCtx<footnodeDef>',\n group: 'footnote',\n})\n\nwithMeta(footnoteDefinitionSchema.node, {\n displayName: 'NodeSchema<footnodeDef>',\n group: 'footnote',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\n\nconst id = 'footnote_reference'\n\n/// Footnote reference node schema.\nexport const footnoteReferenceSchema = $nodeSchema(\n 'footnote_reference',\n () => ({\n group: 'inline',\n inline: true,\n atom: true,\n attrs: {\n label: {\n default: '',\n validate: 'string',\n },\n },\n parseDOM: [\n {\n tag: `sup[data-type=\"${id}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n }\n },\n },\n ],\n toDOM: (node) => {\n const label = node.attrs.label\n return [\n 'sup',\n {\n // TODO: add a prosemirror plugin to sync label on change\n 'data-label': label,\n 'data-type': id,\n },\n label,\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'footnoteReference',\n runner: (state, node, type) => {\n state.addNode(type, {\n label: node.label as string,\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === id,\n runner: (state, node) => {\n state.addNode('footnoteReference', undefined, undefined, {\n label: node.attrs.label,\n identifier: node.attrs.label,\n })\n },\n },\n })\n)\n\nwithMeta(footnoteReferenceSchema.ctx, {\n displayName: 'NodeSchemaCtx<footnodeRef>',\n group: 'footnote',\n})\n\nwithMeta(footnoteReferenceSchema.node, {\n displayName: 'NodeSchema<footnodeRef>',\n group: 'footnote',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { listItemSchema } from '@milkdown/preset-commonmark'\nimport { InputRule } from '@milkdown/prose/inputrules'\nimport { $inputRule } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This schema extends the [list item](/preset-commonmark#list-item) schema and add task list support for it.\nexport const extendListItemSchemaForTask = listItemSchema.extendSchema(\n (prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n attrs: {\n ...baseSchema.attrs,\n checked: {\n default: null,\n validate: 'boolean|null',\n },\n },\n parseDOM: [\n {\n tag: 'li[data-item-type=\"task\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n listType: dom.dataset.listType,\n spread: dom.dataset.spread,\n checked: dom.dataset.checked\n ? dom.dataset.checked === 'true'\n : null,\n }\n },\n },\n ...(baseSchema?.parseDOM || []),\n ],\n toDOM: (node) => {\n if (baseSchema.toDOM && node.attrs.checked == null)\n return baseSchema.toDOM(node)\n\n return [\n 'li',\n {\n 'data-item-type': 'task',\n 'data-label': node.attrs.label,\n 'data-list-type': node.attrs.listType,\n 'data-spread': node.attrs.spread,\n 'data-checked': node.attrs.checked,\n },\n 0,\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'listItem',\n runner: (state, node, type) => {\n if (node.checked == null) {\n baseSchema.parseMarkdown.runner(state, node, type)\n return\n }\n\n const label = node.label != null ? `${node.label}.` : '•'\n const checked = node.checked != null ? Boolean(node.checked) : null\n const listType = node.label != null ? 'ordered' : 'bullet'\n const spread = node.spread != null ? `${node.spread}` : 'true'\n\n state.openNode(type, { label, listType, spread, checked })\n state.next(node.children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'list_item',\n runner: (state, node) => {\n if (node.attrs.checked == null) {\n baseSchema.toMarkdown.runner(state, node)\n return\n }\n\n const label = node.attrs.label\n const listType = node.attrs.listType\n const spread = node.attrs.spread === 'true'\n const checked = node.attrs.checked\n\n state.openNode('listItem', undefined, {\n label,\n listType,\n spread,\n checked,\n })\n state.next(node.content)\n state.closeNode()\n },\n },\n }\n }\n }\n)\n\nwithMeta(extendListItemSchemaForTask.node, {\n displayName: 'NodeSchema<taskListItem>',\n group: 'ListItem',\n})\n\nwithMeta(extendListItemSchemaForTask.ctx, {\n displayName: 'NodeSchemaCtx<taskListItem>',\n group: 'ListItem',\n})\n\n/// Input rule for wrapping a block in task list node.\n/// Users can type `[ ] ` or `[x] ` to wrap the block in task list node with checked status.\nexport const wrapInTaskListInputRule = $inputRule(() => {\n return new InputRule(\n /^\\[(?<checked>\\s|x)\\]\\s$/,\n (state, match, start, end) => {\n const pos = state.doc.resolve(start)\n let depth = 0\n let node = pos.node(depth)\n while (node && node.type.name !== 'list_item') {\n depth--\n node = pos.node(depth)\n }\n\n if (!node || node.attrs.checked != null) return null\n\n const checked = Boolean(match.groups?.checked === 'x')\n\n const finPos = pos.before(depth)\n const tr = state.tr\n\n tr.deleteRange(start, end).setNodeMarkup(finPos, undefined, {\n ...node.attrs,\n checked,\n })\n\n return tr\n }\n )\n})\n\nwithMeta(wrapInTaskListInputRule, {\n displayName: 'InputRule<wrapInTaskListInputRule>',\n group: 'ListItem',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { strikethroughKeymap } from '../mark'\nimport { tableKeymap } from '../node'\n\n/// @internal\nexport const keymap: MilkdownPlugin[] = [\n strikethroughKeymap,\n tableKeymap,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { strikethroughInputRule } from '../mark'\nimport { insertTableInputRule, wrapInTaskListInputRule } from '../node'\n\n/// @internal\nexport const inputRules: MilkdownPlugin[] = [\n insertTableInputRule,\n wrapInTaskListInputRule,\n]\n\nexport const markInputRules: MilkdownPlugin[] = [strikethroughInputRule]\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { tablePasteRule } from '../node'\n\n/// @internal\nexport const pasteRules: MilkdownPlugin[] = [tablePasteRule]\n", "import { $prose } from '@milkdown/utils'\nimport { imeSpan } from 'prosemirror-safari-ime-span'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to fix the bug of IME composing in table in Safari browser.\n/// original discussion in https://discuss.prosemirror.net/t/ime-composing-problems-on-td-or-th-element-in-safari-browser/4501\nexport const autoInsertSpanPlugin = $prose(() => imeSpan)\n\nwithMeta(autoInsertSpanPlugin, {\n displayName: 'Prose<autoInsertSpanPlugin>',\n group: 'Prose',\n})\n", "import { columnResizing } from '@milkdown/prose/tables'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is wrapping the `columnResizing` plugin from [prosemirror-tables](https://github.com/ProseMirror/prosemirror-tables).\nexport const columnResizingPlugin = $prose(() => columnResizing({}))\n\nwithMeta(columnResizingPlugin, {\n displayName: 'Prose<columnResizingPlugin>',\n group: 'Prose',\n})\n", "import { tableEditing } from '@milkdown/prose/tables'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is wrapping the `tableEditing` plugin from [prosemirror-tables](https://github.com/ProseMirror/prosemirror-tables).\nexport const tableEditingPlugin = $prose(() =>\n tableEditing({ allowTableNodeSelection: true })\n)\n\nwithMeta(tableEditingPlugin, {\n displayName: 'Prose<tableEditingPlugin>',\n group: 'Prose',\n})\n", "import type { $Remark } from '@milkdown/utils'\nimport type { Options } from 'remark-gfm'\n\nimport { $remark } from '@milkdown/utils'\nimport remarkGFM from 'remark-gfm'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is wrapping the [remark-gfm](https://github.com/remarkjs/remark-gfm).\nexport const remarkGFMPlugin: $Remark<'remarkGFM', Options | null | undefined> =\n $remark('remarkGFM', () => remarkGFM)\n\nwithMeta(remarkGFMPlugin.plugin, {\n displayName: 'Remark<remarkGFMPlugin>',\n group: 'Remark',\n})\n\nwithMeta(remarkGFMPlugin.options, {\n displayName: 'RemarkConfig<remarkGFMPlugin>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/prose/model'\nimport type { Transaction } from '@milkdown/prose/state'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\nconst pluginKey = new PluginKey('MILKDOWN_KEEP_TABLE_ALIGN_PLUGIN')\n\nfunction getChildIndex(node: Node, parent: Node) {\n let index = 0\n parent.forEach((child, _offset, i) => {\n if (child === node) index = i\n })\n return index\n}\n\nexport const keepTableAlignPlugin = $prose(() => {\n return new Plugin({\n key: pluginKey,\n appendTransaction: (_tr, oldState, state) => {\n let tr: Transaction | undefined\n const check = (node: Node, pos: number) => {\n if (!tr) tr = state.tr\n\n if (node.type.name !== 'table_cell') return\n\n const $pos = state.doc.resolve(pos)\n const tableRow = $pos.node($pos.depth)\n const table = $pos.node($pos.depth - 1)\n const tableHeaderRow = table.firstChild\n // TODO: maybe consider add a header row\n if (!tableHeaderRow) return\n\n const index = getChildIndex(node, tableRow)\n const headerCell = tableHeaderRow.maybeChild(index)\n if (!headerCell) return\n const align = headerCell.attrs.alignment\n const currentAlign = node.attrs.alignment\n if (align === currentAlign) return\n\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, alignment: align })\n }\n if (oldState.doc !== state.doc) state.doc.descendants(check)\n\n return tr\n },\n })\n})\n\nwithMeta(keepTableAlignPlugin, {\n displayName: 'Prose<keepTableAlignPlugin>',\n group: 'Prose',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n autoInsertSpanPlugin,\n keepTableAlignPlugin,\n remarkGFMPlugin,\n tableEditingPlugin,\n} from '../plugin'\n\n/// @internal\nexport const plugins: MilkdownPlugin[] = [\n keepTableAlignPlugin,\n autoInsertSpanPlugin,\n remarkGFMPlugin,\n tableEditingPlugin,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { strikethroughAttr, strikethroughSchema } from '../mark'\nimport {\n extendListItemSchemaForTask,\n footnoteDefinitionSchema,\n footnoteReferenceSchema,\n tableCellSchema,\n tableHeaderRowSchema,\n tableHeaderSchema,\n tableRowSchema,\n tableSchema,\n} from '../node'\n\n/// @internal\nexport const schema: MilkdownPlugin[] = [\n extendListItemSchemaForTask,\n\n tableSchema,\n tableHeaderRowSchema,\n tableRowSchema,\n tableHeaderSchema,\n tableCellSchema,\n\n footnoteDefinitionSchema,\n footnoteReferenceSchema,\n\n strikethroughAttr,\n strikethroughSchema,\n].flat()\n", "import { toggleStrikethroughCommand } from '../mark'\nimport {\n addColAfterCommand,\n addColBeforeCommand,\n addRowAfterCommand,\n addRowBeforeCommand,\n deleteSelectedCellsCommand,\n exitTable,\n goToNextTableCellCommand,\n goToPrevTableCellCommand,\n insertTableCommand,\n moveColCommand,\n moveRowCommand,\n selectColCommand,\n selectRowCommand,\n selectTableCommand,\n setAlignCommand,\n} from '../node'\n\n/// @internal\nexport const commands = [\n goToNextTableCellCommand,\n goToPrevTableCellCommand,\n exitTable,\n insertTableCommand,\n moveRowCommand,\n moveColCommand,\n selectRowCommand,\n selectColCommand,\n selectTableCommand,\n deleteSelectedCellsCommand,\n addRowBeforeCommand,\n addRowAfterCommand,\n addColBeforeCommand,\n addColAfterCommand,\n setAlignCommand,\n\n toggleStrikethroughCommand,\n]\n", "import {\n commands,\n inputRules,\n keymap,\n markInputRules,\n pasteRules,\n plugins,\n schema,\n} from './composed'\n\nexport * from './node'\nexport * from './mark'\nexport * from './plugin'\nexport * from './composed'\n\n/// The GFM preset, includes all the plugins.\nexport const gfm = [\n schema,\n inputRules,\n pasteRules,\n markInputRules,\n keymap,\n commands,\n plugins,\n].flat()\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n", "import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { Node as ProseNode } from '@milkdown/prose/model'\nimport type { Selection, Transaction } from '@milkdown/prose/state'\n\nimport {\n EditorViewReady,\n InitReady,\n SerializerReady,\n prosePluginsCtx,\n serializerCtx,\n} from '@milkdown/core'\nimport { createSlice } from '@milkdown/ctx'\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { debounce } from 'lodash-es'\n\n/// The dictionary of subscribers of each event.\nexport interface Subscribers {\n beforeMount: ((ctx: Ctx) => void)[]\n mounted: ((ctx: Ctx) => void)[]\n updated: ((ctx: Ctx, doc: ProseNode, prevDoc: ProseNode) => void)[]\n markdownUpdated: ((\n ctx: Ctx,\n markdown: string,\n prevMarkdown: string\n ) => void)[]\n blur: ((ctx: Ctx) => void)[]\n focus: ((ctx: Ctx) => void)[]\n destroy: ((ctx: Ctx) => void)[]\n selectionUpdated: ((\n ctx: Ctx,\n selection: Selection,\n prevSelection: Selection | null\n ) => void)[]\n}\n\n/// The manager of listeners. It provides methods to subscribe to events.\nexport class ListenerManager {\n private beforeMountedListeners: Array<(ctx: Ctx) => void> = []\n private mountedListeners: Array<(ctx: Ctx) => void> = []\n private updatedListeners: Array<\n (ctx: Ctx, doc: ProseNode, prevDoc: ProseNode) => void\n > = []\n private selectionUpdatedListeners: Array<\n (ctx: Ctx, selection: Selection, prevDoc: Selection | null) => void\n > = []\n private markdownUpdatedListeners: Array<\n (ctx: Ctx, markdown: string, prevMarkdown: string) => void\n > = []\n private blurListeners: Array<(ctx: Ctx) => void> = []\n private focusListeners: Array<(ctx: Ctx) => void> = []\n private destroyListeners: Array<(ctx: Ctx) => void> = []\n\n /// A getter to get all [subscribers](#interface-subscribers). You should not use this method directly.\n get listeners(): Subscribers {\n return {\n beforeMount: this.beforeMountedListeners,\n mounted: this.mountedListeners,\n updated: this.updatedListeners,\n markdownUpdated: this.markdownUpdatedListeners,\n blur: this.blurListeners,\n focus: this.focusListeners,\n destroy: this.destroyListeners,\n selectionUpdated: this.selectionUpdatedListeners,\n }\n }\n\n /// Subscribe to the beforeMount event.\n /// This event will be triggered before the editor is mounted.\n beforeMount = (fn: (ctx: Ctx) => void) => {\n this.beforeMountedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the mounted event.\n /// This event will be triggered after the editor is mounted.\n mounted = (fn: (ctx: Ctx) => void) => {\n this.mountedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the updated event.\n /// This event will be triggered after the editor state is updated and **the document is changed**.\n /// The second parameter is the current document and the third parameter is the previous document.\n updated = (\n fn: (ctx: Ctx, doc: ProseNode, prevDoc: ProseNode | null) => void\n ) => {\n this.updatedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the markdownUpdated event.\n /// This event will be triggered after the editor state is updated and **the document is changed**.\n /// The second parameter is the current markdown and the third parameter is the previous markdown.\n markdownUpdated(\n fn: (ctx: Ctx, markdown: string, prevMarkdown: string) => void\n ) {\n this.markdownUpdatedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the blur event.\n /// This event will be triggered when the editor is blurred.\n blur(fn: (ctx: Ctx) => void) {\n this.blurListeners.push(fn)\n return this\n }\n\n /// Subscribe to the focus event.\n /// This event will be triggered when the editor is focused.\n focus(fn: (ctx: Ctx) => void) {\n this.focusListeners.push(fn)\n return this\n }\n\n /// Subscribe to the destroy event.\n /// This event will be triggered before the editor is destroyed.\n destroy(fn: (ctx: Ctx) => void) {\n this.destroyListeners.push(fn)\n return this\n }\n\n /// Subscribe to the selectionUpdated event.\n /// This event will be triggered when the editor selection is updated.\n selectionUpdated(\n fn: (\n ctx: Ctx,\n selection: Selection,\n prevSelection: Selection | null\n ) => void\n ) {\n this.selectionUpdatedListeners.push(fn)\n return this\n }\n}\n\n/// The ctx key of the listener manager.\n/// You can use `ctx.get(listenerCtx)` to get the [listener manager](#class-listenermanager).\nexport const listenerCtx = createSlice<ListenerManager>(\n new ListenerManager(),\n 'listener'\n)\n\n/// The plugin key of the listener prosemirror plugin.\nexport const key = new PluginKey('MILKDOWN_LISTENER')\n\n/// The listener plugin.\nexport const listener: MilkdownPlugin = (ctx) => {\n ctx.inject(listenerCtx, new ListenerManager())\n\n return async () => {\n await ctx.wait(InitReady)\n const listener = ctx.get(listenerCtx)\n const { listeners } = listener\n\n listeners.beforeMount.forEach((fn) => fn(ctx))\n\n await ctx.wait(SerializerReady)\n const serializer = ctx.get(serializerCtx)\n\n let prevDoc: ProseNode | null = null\n let prevMarkdown: string | null = null\n let prevSelection: Selection | null = null\n let latestTr: Transaction | null = null\n\n const debouncedHandler = debounce(() => {\n if (!latestTr) return\n const { doc } = latestTr\n\n if (listeners.updated.length > 0 && prevDoc && !prevDoc.eq(doc)) {\n listeners.updated.forEach((fn) => {\n fn(ctx, doc, prevDoc!)\n })\n }\n\n if (listeners.markdownUpdated.length > 0 && prevDoc && !prevDoc.eq(doc)) {\n const markdown = serializer(doc)\n listeners.markdownUpdated.forEach((fn) => {\n fn(ctx, markdown, prevMarkdown!)\n })\n prevMarkdown = markdown\n }\n\n prevDoc = doc\n latestTr = null\n }, 200)\n\n const plugin = new Plugin({\n key,\n view: () => {\n return {\n destroy: () => {\n listeners.destroy.forEach((fn) => fn(ctx))\n },\n }\n },\n props: {\n handleDOMEvents: {\n focus: () => {\n listeners.focus.forEach((fn) => fn(ctx))\n return false\n },\n blur: () => {\n listeners.blur.forEach((fn) => fn(ctx))\n return false\n },\n },\n },\n state: {\n init: (_, instance) => {\n prevDoc = instance.doc\n prevMarkdown = serializer(instance.doc)\n },\n apply: (tr) => {\n const currentSelection = tr.selection\n if (\n (!prevSelection && currentSelection) ||\n (prevSelection && !currentSelection.eq(prevSelection))\n ) {\n listeners.selectionUpdated.forEach((fn) => {\n fn(ctx, currentSelection, prevSelection)\n })\n prevSelection = currentSelection\n }\n\n if (\n !(tr.docChanged || tr.storedMarksSet) ||\n tr.getMeta('addToHistory') === false\n )\n return\n\n latestTr = tr\n debouncedHandler()\n },\n },\n })\n ctx.update(prosePluginsCtx, (x) => x.concat(plugin))\n\n await ctx.wait(EditorViewReady)\n listeners.mounted.forEach((fn) => fn(ctx))\n }\n}\n\nlistener.meta = {\n package: '@milkdown/plugin-listener',\n displayName: 'Listener',\n}\n", "type UnknownRecord = Record<string, unknown>\nexport function isPureText(\n content: UnknownRecord | UnknownRecord[] | undefined | null\n): boolean {\n if (!content) return false\n if (Array.isArray(content)) {\n if (content.length > 1) return false\n return isPureText(content[0])\n }\n\n const child = content.content\n if (child) return isPureText(child as UnknownRecord[])\n\n return content.type === 'text'\n}\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/plugin-clipboard',\n ...meta,\n },\n })\n\n return plugin\n}\n", "import type { EditorView } from '@milkdown/prose/view'\n\nimport {\n editorViewOptionsCtx,\n parserCtx,\n schemaCtx,\n serializerCtx,\n} from '@milkdown/core'\nimport { getNodeFromSchema, isTextOnlySlice } from '@milkdown/prose'\nimport {\n DOMParser,\n DOMSerializer,\n type Node as ProsemirrorNode,\n type Slice,\n} from '@milkdown/prose/model'\nimport { Plugin, PluginKey, TextSelection } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { isPureText } from './__internal__/is-pure-text'\nimport { withMeta } from './__internal__/with-meta'\n\nfunction dispatchPasteSlice(view: EditorView, slice: Slice): boolean {\n const node = isTextOnlySlice(slice)\n if (node) {\n view.dispatch(view.state.tr.replaceSelectionWith(node, true))\n return true\n }\n\n try {\n view.dispatch(view.state.tr.replaceSelection(slice))\n return true\n } catch {\n return false\n }\n}\n\n/// The prosemirror plugin for clipboard.\nexport const clipboard = $prose((ctx) => {\n const schema = ctx.get(schemaCtx)\n\n // Set editable props for https://github.com/Milkdown/milkdown/issues/190\n ctx.update(editorViewOptionsCtx, (prev) => ({\n ...prev,\n editable: prev.editable ?? (() => true),\n transformPastedHTML: (html: string, view: EditorView) => {\n const prevTransform = prev.transformPastedHTML\n if (prevTransform) html = prevTransform(html, view)\n\n // Google Docs wraps pasted content in <b style=\"font-weight:normal;\" id=\"docs-internal-guid-...\">\n // This wrapper causes ProseMirror's parser to fail when parsing multiple tables.\n // Strip it so block content is at the top level.\n if (html.includes('docs-internal-guid')) {\n html = html.replace(\n /<b[^>]*id=\"docs-internal-guid[^\"]*\"[^>]*>([\\s\\S]*)<\\/b>/,\n '$1'\n )\n // Also unwrap <div> elements that wrap tables.\n // Google Docs wraps each table in <div dir=\"ltr\" ...><table>...</table></div>\n // These wrappers interfere with ProseMirror's parseSlice for multiple tables.\n html = html.replace(/<div[^>]*>(<table[\\s\\S]*?<\\/table>)<\\/div>/g, '$1')\n }\n return html\n },\n }))\n\n const key = new PluginKey('MILKDOWN_CLIPBOARD')\n const plugin = new Plugin({\n key,\n props: {\n handlePaste: (view, event, preProcessedSlice) => {\n const parser = ctx.get(parserCtx)\n const editable = view.props.editable?.(view.state)\n const { clipboardData } = event\n if (!editable || !clipboardData) return false\n\n const currentNode = view.state.selection.$from.node()\n if (currentNode.type.spec.code) return false\n\n const text = clipboardData.getData('text/plain')\n\n // if is copied from vscode, try to create a code block\n const vscodeData = clipboardData.getData('vscode-editor-data')\n if (vscodeData) {\n const data = JSON.parse(vscodeData)\n const language = data?.mode\n if (text && language) {\n const { tr } = view.state\n const codeBlock = getNodeFromSchema('code_block', schema)\n\n tr.replaceSelectionWith(codeBlock.create({ language }))\n .setSelection(\n TextSelection.near(\n tr.doc.resolve(Math.max(0, tr.selection.from - 2))\n )\n )\n .insertText(text.replace(/\\r\\n?/g, '\\n'))\n\n view.dispatch(tr)\n return true\n }\n }\n\n const html = clipboardData.getData('text/html')\n if (html.length === 0 && text.length === 0) return false\n\n // When HTML is present, use the pre-processed Slice from ProseMirror.\n // ProseMirror's parseFromClipboard already ran transformPastedHTML\n // (e.g. Google Docs wrapper stripping) and transformPasted (paste rules\n // like table header fix), producing a better Slice than re-parsing here.\n if (html.length > 0 && preProcessedSlice) {\n return dispatchPasteSlice(view, preProcessedSlice)\n }\n\n const domParser = DOMParser.fromSchema(schema)\n let dom: Node\n if (html.length === 0) {\n const slice = parser(text)\n if (!slice || typeof slice === 'string') return false\n\n dom = DOMSerializer.fromSchema(schema).serializeFragment(\n slice.content\n )\n } else {\n const template = document.createElement('template')\n template.innerHTML = html\n dom = template.content.cloneNode(true)\n template.remove()\n }\n\n const slice = domParser.parseSlice(dom)\n return dispatchPasteSlice(view, slice)\n },\n clipboardTextSerializer: (slice) => {\n const serializer = ctx.get(serializerCtx)\n const isText = isPureText(slice.content.toJSON())\n if (isText)\n return (slice.content as unknown as ProsemirrorNode).textBetween(\n 0,\n slice.content.size,\n '\\n\\n'\n )\n\n const doc = schema.topNodeType.createAndFill(undefined, slice.content)\n if (!doc) return ''\n const value = serializer(doc)\n return value\n },\n },\n })\n\n return plugin\n})\n\nwithMeta(clipboard, { displayName: 'Prose<clipboard>' })\n", "var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) \u2192 RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) \u2192 RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) \u2192 T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) \u2192 ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) \u2192 U, ?number, ?number) \u2192 [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) \u2192 RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n", "import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' \u2014 a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nimport { commandsCtx } from '@milkdown/core'\nimport {\n history as prosemirrorHistory,\n redo,\n undo,\n} from '@milkdown/prose/history'\nimport { $command, $ctx, $prose, $useKeymap } from '@milkdown/utils'\n\nfunction withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/plugin-history',\n ...meta,\n },\n })\n\n return plugin\n}\n\n/// The milkdown command wrapper of [undo API](https://prosemirror.net/docs/ref/#history.undo) in [prosemirror-history](https://prosemirror.net/docs/ref/#history).\nexport const undoCommand = $command('Undo', () => () => undo)\n\nwithMeta(undoCommand, {\n displayName: 'Command<undo>',\n})\n\n/// The milkdown command wrapper of [redo API](https://prosemirror.net/docs/ref/#history.redo) in [prosemirror-history](https://prosemirror.net/docs/ref/#history).\nexport const redoCommand = $command('Redo', () => () => redo)\n\nwithMeta(redoCommand, {\n displayName: 'Command<redo>',\n})\n\n/// The [config](https://prosemirror.net/docs/ref/#history.history%5Econfig) of prosemirror history plugin.\nexport const historyProviderConfig = $ctx<\n { depth?: number; newGroupDelay?: number },\n 'historyProviderConfig'\n>({}, 'historyProviderConfig')\n\nwithMeta(historyProviderConfig, {\n displayName: 'Ctx<historyProviderConfig>',\n})\n\n/// The milkdown wrapper of [history API](https://prosemirror.net/docs/ref/#history.history) in [prosemirror-history](https://prosemirror.net/docs/ref/#history).\nexport const historyProviderPlugin = $prose((ctx) =>\n prosemirrorHistory(ctx.get(historyProviderConfig.key))\n)\n\nwithMeta(historyProviderPlugin, {\n displayName: 'Ctx<historyProviderPlugin>',\n})\n\n/// The keymap of history plugin, it's `mod-z` for undo and `mod-y`/`shift-mod-z` for redo.\nexport const historyKeymap = $useKeymap('historyKeymap', {\n Undo: {\n shortcuts: 'Mod-z',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(undoCommand.key)\n },\n },\n Redo: {\n shortcuts: ['Mod-y', 'Shift-Mod-z'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(redoCommand.key)\n },\n },\n})\n\nwithMeta(historyKeymap.ctx, {\n displayName: 'KeymapCtx<history>',\n})\nwithMeta(historyKeymap.shortcuts, {\n displayName: 'Keymap<history>',\n})\n\n/// The milkdown history plugin.\nexport const history: MilkdownPlugin[] = [\n historyProviderConfig,\n historyProviderPlugin,\n historyKeymap,\n undoCommand,\n redoCommand,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\nimport type { Node } from '@milkdown/prose/model'\nimport type { EditorState } from '@milkdown/prose/state'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $ctx, $prose } from '@milkdown/utils'\n\n/// Options for trailing config.\nexport interface TrailingConfigOptions {\n /// A function that returns a boolean value.\n /// If it returns `true`, the plugin will append a node at the end of the document.\n /// By default, it returns `false` if the last node is a heading or a paragraph.\n shouldAppend: (lastNode: Node | null, state: EditorState) => boolean\n /// A function that returns a node.\n /// By default, it returns a paragraph node.\n getNode: (state: EditorState) => Node\n}\n\n/// A slice contains the trailing config.\n/// You can use [TrailingConfigOptions](#TrailingConfigOptions) to customize the behavior of the plugin.\nexport const trailingConfig = $ctx<TrailingConfigOptions, 'trailingConfig'>(\n {\n shouldAppend: (lastNode) => {\n if (!lastNode) return false\n\n if (['heading', 'paragraph'].includes(lastNode.type.name)) return false\n\n return true\n },\n getNode: (state) => state.schema.nodes.paragraph!.create(),\n },\n 'trailingConfig'\n)\n\ntrailingConfig.meta = {\n package: '@milkdown/plugin-trailing',\n displayName: 'Ctx<trailingConfig>',\n}\n\n/// The prosemirror plugin for trailing.\nexport const trailingPlugin = $prose((ctx) => {\n const trailingPluginKey = new PluginKey('MILKDOWN_TRAILING')\n const { shouldAppend, getNode } = ctx.get(trailingConfig.key)\n const plugin = new Plugin({\n key: trailingPluginKey,\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild\n\n return shouldAppend(lastNode, state)\n },\n apply: (tr, value, _, state) => {\n if (!tr.docChanged) return value\n\n const lastNode = tr.doc.lastChild\n\n return shouldAppend(lastNode, state)\n },\n },\n appendTransaction: (_, __, state) => {\n const { doc, tr } = state\n const nodeType = getNode?.(state)\n const shouldInsertNodeAtEnd = plugin.getState(state)\n const endPosition = doc.content.size\n\n if (!shouldInsertNodeAtEnd || !nodeType) return\n\n return tr.insert(endPosition, nodeType)\n },\n })\n\n return plugin\n})\n\ntrailingPlugin.meta = {\n package: '@milkdown/plugin-trailing',\n displayName: 'Prose<trailing>',\n}\n\n/// All plugins exported by this package.\nexport const trailing: MilkdownPlugin[] = [trailingConfig, trailingPlugin]\n", "export const CODE_BLOCK_TONES = [\"auto\", \"light\", \"dark\"] as const;\n\nexport type CodeBlockTone = typeof CODE_BLOCK_TONES[number];\n\nexport interface CodeCopyLabels {\n copyLabel: string;\n copiedLabel: string;\n}\n\nexport interface BlockToneLabels {\n toneLabel: string;\n autoLabel: string;\n lightLabel: string;\n darkLabel: string;\n}\n\nexport const CODE_BLOCK_CLASSES = {\n actionGroup: \"code-actions\",\n block: \"code-block\",\n copyButton: \"copy-code\",\n copySource: \"code-copy-source\",\n diagramBlock: \"diagram-block\",\n language: \"code-language\",\n mathBlock: \"math-block\",\n toneButton: \"code-color-toggle\"\n} as const;\n\nexport function normalizeCodeBlockTone(value: string | undefined): CodeBlockTone {\n return CODE_BLOCK_TONES.includes(value as CodeBlockTone) ? value as CodeBlockTone : \"auto\";\n}\n\nexport function nextCodeBlockTone(value: string | undefined): CodeBlockTone {\n const current = normalizeCodeBlockTone(value);\n const index = CODE_BLOCK_TONES.indexOf(current);\n return CODE_BLOCK_TONES[(index + 1) % CODE_BLOCK_TONES.length];\n}\n\nexport function codeBlockToneLabel(tone: CodeBlockTone, labels: BlockToneLabels): string {\n if (tone === \"light\") {\n return labels.lightLabel;\n }\n if (tone === \"dark\") {\n return labels.darkLabel;\n }\n return labels.autoLabel;\n}\n", "export function escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nexport function escapeAttribute(value: string): string {\n return escapeHtml(value).replace(/'/g, \"'\");\n}\n\nexport function escapeJsonForScript(json: string): string {\n return json.replace(/[<>&\\u2028\\u2029]/g, (character) => {\n switch (character) {\n case \"<\":\n return \"\\\\u003c\";\n case \">\":\n return \"\\\\u003e\";\n case \"&\":\n return \"\\\\u0026\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n default:\n return character;\n }\n });\n}\n\nexport function safeInlineUrl(value: string): string {\n const url = String(value || \"\").trim();\n const scheme = extractUrlScheme(url);\n if (!scheme) {\n return url;\n }\n return [\"http\", \"https\", \"mailto\"].includes(scheme) ? url : \"#\";\n}\n\nfunction extractUrlScheme(url: string): string | undefined {\n const colonIndex = url.indexOf(\":\");\n if (colonIndex <= 0) {\n return undefined;\n }\n const rawScheme = url.slice(0, colonIndex);\n const normalized = Array.from(rawScheme)\n .filter((character) => {\n const code = character.charCodeAt(0);\n return code > 0x20 && code !== 0x7f;\n })\n .join(\"\")\n .toLowerCase();\n return /^[a-z][a-z0-9+.-]*$/.test(normalized) ? normalized : undefined;\n}\n", "import katex from \"katex\";\nimport { escapeAttribute, escapeHtml } from \"../utils/html\";\n\nexport type SafeInlineHtmlTag = \"u\" | \"mark\" | \"kbd\";\n\nexport interface MarkdownFeaturePolicy {\n katexEnabled?: boolean;\n safeInlineHtmlTags?: readonly SafeInlineHtmlTag[];\n}\n\nexport interface RenderMathOptions {\n katexEnabled?: boolean;\n errorColor?: string;\n}\n\nexport interface FootnoteRenderModel {\n id: string;\n normalizedId: string;\n label: string;\n exists: boolean;\n referenceId: string;\n definitionId: string;\n fallbackMarkdown: string;\n}\n\nexport interface BlockquoteAdmonition {\n type: \"note\" | \"tip\" | \"important\" | \"warning\" | \"caution\";\n label: string;\n body: string;\n}\n\nexport const DEFAULT_SAFE_INLINE_HTML_TAGS: readonly SafeInlineHtmlTag[] = [\"u\", \"mark\", \"kbd\"];\n\nexport function renderKatexHtml(expression: string, displayMode: boolean, options: RenderMathOptions = {}): string {\n if (!options.katexEnabled) {\n return `<code>${escapeHtml(displayMode ? `$$\\n${expression}\\n$$` : `$${expression}$`)}</code>`;\n }\n try {\n return katex.renderToString(expression, {\n displayMode,\n throwOnError: false,\n errorColor: options.errorColor || \"#cc0000\"\n });\n } catch {\n return `<code>${escapeHtml(expression)}</code>`;\n }\n}\n\nexport function normalizeFootnoteId(id: string): string {\n return String(id || \"\").trim().replace(/\\s+/g, \"-\").toLowerCase();\n}\n\nexport function resolveFootnoteReference(id: string, footnotes?: ReadonlyMap<string, string>): FootnoteRenderModel {\n const label = String(id || \"\").trim();\n const normalizedId = normalizeFootnoteId(label);\n return {\n id: label,\n normalizedId,\n label,\n exists: footnotes ? hasFootnote(footnotes, label, normalizedId) : true,\n referenceId: `fnref-${normalizedId}`,\n definitionId: `fn-${normalizedId}`,\n fallbackMarkdown: `[^${label}]`\n };\n}\n\nfunction hasFootnote(footnotes: ReadonlyMap<string, string>, label: string, normalizedId: string): boolean {\n if (footnotes.has(label)) {\n return true;\n }\n for (const id of footnotes.keys()) {\n if (normalizeFootnoteId(id) === normalizedId) {\n return true;\n }\n }\n return false;\n}\n\nexport function renderSafeInlineHtmlToken(tag: SafeInlineHtmlTag, innerHtml: string): string {\n return `<${tag}>${innerHtml}</${tag}>`;\n}\n\nexport function isSafeInlineHtmlTag(value: string, policy: MarkdownFeaturePolicy = {}): value is SafeInlineHtmlTag {\n const normalized = value.toLowerCase();\n const allowed = policy.safeInlineHtmlTags || DEFAULT_SAFE_INLINE_HTML_TAGS;\n return allowed.includes(normalized as SafeInlineHtmlTag);\n}\n\nexport function renderInertInlineHtml(value: string): string {\n return `<code class=\"safe-html-source\">${escapeHtml(value)}</code>`;\n}\n\nexport function renderFootnoteReferenceHtml(model: FootnoteRenderModel): string {\n if (!model.exists) {\n return escapeHtml(model.fallbackMarkdown);\n }\n return `<sup id=\"${escapeAttribute(model.referenceId)}\"><a href=\"#${escapeAttribute(model.definitionId)}\">${escapeHtml(model.label)}</a></sup>`;\n}\n\nexport function renderFootnoteDefinitionHtml(model: FootnoteRenderModel, html: string): string {\n return `<li id=\"${escapeAttribute(model.definitionId)}\">${html}</li>`;\n}\n\nexport function detectBlockquoteAdmonition(text: string): BlockquoteAdmonition | null {\n const lines = String(text || \"\").split(/\\r?\\n/);\n const match = lines[0]?.trim().match(/^\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)]\\s*(.*)$/i);\n if (!match) {\n return null;\n }\n const type = match[1].toLowerCase() as BlockquoteAdmonition[\"type\"];\n const rest = match[2] ? [match[2]] : [];\n return {\n type,\n label: match[1].toUpperCase(),\n body: [...rest, ...lines.slice(1)].join(\"\\n\").trim()\n };\n}\n", "//#region src/error.ts\nvar ShikiError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ShikiError\";\n\t}\n};\n\n//#endregion\nexport { ShikiError };", "// src/utils.ts\nfunction clone(something) {\n return doClone(something);\n}\nfunction doClone(something) {\n if (Array.isArray(something)) {\n return cloneArray(something);\n }\n if (something instanceof RegExp) {\n return something;\n }\n if (typeof something === \"object\") {\n return cloneObj(something);\n }\n return something;\n}\nfunction cloneArray(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = doClone(arr[i]);\n }\n return r;\n}\nfunction cloneObj(obj) {\n let r = {};\n for (let key in obj) {\n r[key] = doClone(obj[key]);\n }\n return r;\n}\nfunction mergeObjects(target, ...sources) {\n sources.forEach((source) => {\n for (let key in source) {\n target[key] = source[key];\n }\n });\n return target;\n}\nfunction basename(path) {\n const idx = ~path.lastIndexOf(\"/\") || ~path.lastIndexOf(\"\\\\\");\n if (idx === 0) {\n return path;\n } else if (~idx === path.length - 1) {\n return basename(path.substring(0, path.length - 1));\n } else {\n return path.substr(~idx + 1);\n }\n}\nvar CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/g;\nvar RegexSource = class {\n static hasCaptures(regexSource) {\n if (regexSource === null) {\n return false;\n }\n CAPTURING_REGEX_SOURCE.lastIndex = 0;\n return CAPTURING_REGEX_SOURCE.test(regexSource);\n }\n static replaceCaptures(regexSource, captureSource, captureIndices) {\n return regexSource.replace(CAPTURING_REGEX_SOURCE, (match, index, commandIndex, command) => {\n let capture = captureIndices[parseInt(index || commandIndex, 10)];\n if (capture) {\n let result = captureSource.substring(capture.start, capture.end);\n while (result[0] === \".\") {\n result = result.substring(1);\n }\n switch (command) {\n case \"downcase\":\n return result.toLowerCase();\n case \"upcase\":\n return result.toUpperCase();\n default:\n return result;\n }\n } else {\n return match;\n }\n });\n }\n};\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nfunction strArrCmp(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n let len1 = a.length;\n let len2 = b.length;\n if (len1 === len2) {\n for (let i = 0; i < len1; i++) {\n let res = strcmp(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n }\n return len1 - len2;\n}\nfunction isValidHexColor(hex) {\n if (/^#[0-9a-f]{6}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{8}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{3}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{4}$/i.test(hex)) {\n return true;\n }\n return false;\n}\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n}\nvar CachedFn = class {\n constructor(fn) {\n this.fn = fn;\n }\n cache = /* @__PURE__ */ new Map();\n get(key) {\n if (this.cache.has(key)) {\n return this.cache.get(key);\n }\n const value = this.fn(key);\n this.cache.set(key, value);\n return value;\n }\n};\n\n// src/theme.ts\nvar Theme = class {\n constructor(_colorMap, _defaults, _root) {\n this._colorMap = _colorMap;\n this._defaults = _defaults;\n this._root = _root;\n }\n static createFromRawTheme(source, colorMap) {\n return this.createFromParsedTheme(parseTheme(source), colorMap);\n }\n static createFromParsedTheme(source, colorMap) {\n return resolveParsedThemeRules(source, colorMap);\n }\n _cachedMatchRoot = new CachedFn(\n (scopeName) => this._root.match(scopeName)\n );\n getColorMap() {\n return this._colorMap.getColorMap();\n }\n getDefaults() {\n return this._defaults;\n }\n match(scopePath) {\n if (scopePath === null) {\n return this._defaults;\n }\n const scopeName = scopePath.scopeName;\n const matchingTrieElements = this._cachedMatchRoot.get(scopeName);\n const effectiveRule = matchingTrieElements.find(\n (v) => _scopePathMatchesParentScopes(scopePath.parent, v.parentScopes)\n );\n if (!effectiveRule) {\n return null;\n }\n return new StyleAttributes(\n effectiveRule.fontStyle,\n effectiveRule.foreground,\n effectiveRule.background\n );\n }\n};\nvar ScopeStack = class _ScopeStack {\n constructor(parent, scopeName) {\n this.parent = parent;\n this.scopeName = scopeName;\n }\n static push(path, scopeNames) {\n for (const name of scopeNames) {\n path = new _ScopeStack(path, name);\n }\n return path;\n }\n static from(...segments) {\n let result = null;\n for (let i = 0; i < segments.length; i++) {\n result = new _ScopeStack(result, segments[i]);\n }\n return result;\n }\n push(scopeName) {\n return new _ScopeStack(this, scopeName);\n }\n getSegments() {\n let item = this;\n const result = [];\n while (item) {\n result.push(item.scopeName);\n item = item.parent;\n }\n result.reverse();\n return result;\n }\n toString() {\n return this.getSegments().join(\" \");\n }\n extends(other) {\n if (this === other) {\n return true;\n }\n if (this.parent === null) {\n return false;\n }\n return this.parent.extends(other);\n }\n getExtensionIfDefined(base) {\n const result = [];\n let item = this;\n while (item && item !== base) {\n result.push(item.scopeName);\n item = item.parent;\n }\n return item === base ? result.reverse() : void 0;\n }\n};\nfunction _scopePathMatchesParentScopes(scopePath, parentScopes) {\n if (parentScopes.length === 0) {\n return true;\n }\n for (let index = 0; index < parentScopes.length; index++) {\n let scopePattern = parentScopes[index];\n let scopeMustMatch = false;\n if (scopePattern === \">\") {\n if (index === parentScopes.length - 1) {\n return false;\n }\n scopePattern = parentScopes[++index];\n scopeMustMatch = true;\n }\n while (scopePath) {\n if (_matchesScope(scopePath.scopeName, scopePattern)) {\n break;\n }\n if (scopeMustMatch) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n if (!scopePath) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n return true;\n}\nfunction _matchesScope(scopeName, scopePattern) {\n return scopePattern === scopeName || scopeName.startsWith(scopePattern) && scopeName[scopePattern.length] === \".\";\n}\nvar StyleAttributes = class {\n constructor(fontStyle, foregroundId, backgroundId) {\n this.fontStyle = fontStyle;\n this.foregroundId = foregroundId;\n this.backgroundId = backgroundId;\n }\n};\nfunction parseTheme(source) {\n if (!source) {\n return [];\n }\n if (!source.settings || !Array.isArray(source.settings)) {\n return [];\n }\n let settings = source.settings;\n let result = [], resultLen = 0;\n for (let i = 0, len = settings.length; i < len; i++) {\n let entry = settings[i];\n if (!entry.settings) {\n continue;\n }\n let scopes;\n if (typeof entry.scope === \"string\") {\n let _scope = entry.scope;\n _scope = _scope.replace(/^[,]+/, \"\");\n _scope = _scope.replace(/[,]+$/, \"\");\n scopes = _scope.split(\",\");\n } else if (Array.isArray(entry.scope)) {\n scopes = entry.scope;\n } else {\n scopes = [\"\"];\n }\n let fontStyle = -1 /* NotSet */;\n if (typeof entry.settings.fontStyle === \"string\") {\n fontStyle = 0 /* None */;\n let segments = entry.settings.fontStyle.split(\" \");\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n let segment = segments[j];\n switch (segment) {\n case \"italic\":\n fontStyle = fontStyle | 1 /* Italic */;\n break;\n case \"bold\":\n fontStyle = fontStyle | 2 /* Bold */;\n break;\n case \"underline\":\n fontStyle = fontStyle | 4 /* Underline */;\n break;\n case \"strikethrough\":\n fontStyle = fontStyle | 8 /* Strikethrough */;\n break;\n }\n }\n }\n let foreground = null;\n if (typeof entry.settings.foreground === \"string\" && isValidHexColor(entry.settings.foreground)) {\n foreground = entry.settings.foreground;\n }\n let background = null;\n if (typeof entry.settings.background === \"string\" && isValidHexColor(entry.settings.background)) {\n background = entry.settings.background;\n }\n for (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n let _scope = scopes[j].trim();\n let segments = _scope.split(\" \");\n let scope = segments[segments.length - 1];\n let parentScopes = null;\n if (segments.length > 1) {\n parentScopes = segments.slice(0, segments.length - 1);\n parentScopes.reverse();\n }\n result[resultLen++] = new ParsedThemeRule(\n scope,\n parentScopes,\n i,\n fontStyle,\n foreground,\n background\n );\n }\n }\n return result;\n}\nvar ParsedThemeRule = class {\n constructor(scope, parentScopes, index, fontStyle, foreground, background) {\n this.scope = scope;\n this.parentScopes = parentScopes;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n};\nvar FontStyle = /* @__PURE__ */ ((FontStyle2) => {\n FontStyle2[FontStyle2[\"NotSet\"] = -1] = \"NotSet\";\n FontStyle2[FontStyle2[\"None\"] = 0] = \"None\";\n FontStyle2[FontStyle2[\"Italic\"] = 1] = \"Italic\";\n FontStyle2[FontStyle2[\"Bold\"] = 2] = \"Bold\";\n FontStyle2[FontStyle2[\"Underline\"] = 4] = \"Underline\";\n FontStyle2[FontStyle2[\"Strikethrough\"] = 8] = \"Strikethrough\";\n return FontStyle2;\n})(FontStyle || {});\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n parsedThemeRules.sort((a, b) => {\n let r = strcmp(a.scope, b.scope);\n if (r !== 0) {\n return r;\n }\n r = strArrCmp(a.parentScopes, b.parentScopes);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n let defaultFontStyle = 0 /* None */;\n let defaultForeground = \"#000000\";\n let defaultBackground = \"#ffffff\";\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === \"\") {\n let incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n let colorMap = new ColorMap(_colorMap);\n let defaults = new StyleAttributes(defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n let root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n let rule = parsedThemeRules[i];\n root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new Theme(colorMap, defaults, root);\n}\nvar ColorMap = class {\n _isFrozen;\n _lastColorId;\n _id2color;\n _color2id;\n constructor(_colorMap) {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = /* @__PURE__ */ Object.create(null);\n if (Array.isArray(_colorMap)) {\n this._isFrozen = true;\n for (let i = 0, len = _colorMap.length; i < len; i++) {\n this._color2id[_colorMap[i]] = i;\n this._id2color[i] = _colorMap[i];\n }\n } else {\n this._isFrozen = false;\n }\n }\n getId(color) {\n if (color === null) {\n return 0;\n }\n color = color.toUpperCase();\n let value = this._color2id[color];\n if (value) {\n return value;\n }\n if (this._isFrozen) {\n throw new Error(`Missing color in color map - ${color}`);\n }\n value = ++this._lastColorId;\n this._color2id[color] = value;\n this._id2color[value] = color;\n return value;\n }\n getColorMap() {\n return this._id2color.slice(0);\n }\n};\nvar emptyParentScopes = Object.freeze([]);\nvar ThemeTrieElementRule = class _ThemeTrieElementRule {\n scopeDepth;\n parentScopes;\n fontStyle;\n foreground;\n background;\n constructor(scopeDepth, parentScopes, fontStyle, foreground, background) {\n this.scopeDepth = scopeDepth;\n this.parentScopes = parentScopes || emptyParentScopes;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n clone() {\n return new _ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n }\n static cloneArr(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = arr[i].clone();\n }\n return r;\n }\n acceptOverwrite(scopeDepth, fontStyle, foreground, background) {\n if (this.scopeDepth > scopeDepth) {\n console.log(\"how did this happen?\");\n } else {\n this.scopeDepth = scopeDepth;\n }\n if (fontStyle !== -1 /* NotSet */) {\n this.fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n this.foreground = foreground;\n }\n if (background !== 0) {\n this.background = background;\n }\n }\n};\nvar ThemeTrieElement = class _ThemeTrieElement {\n constructor(_mainRule, rulesWithParentScopes = [], _children = {}) {\n this._mainRule = _mainRule;\n this._children = _children;\n this._rulesWithParentScopes = rulesWithParentScopes;\n }\n _rulesWithParentScopes;\n static _cmpBySpecificity(a, b) {\n if (a.scopeDepth !== b.scopeDepth) {\n return b.scopeDepth - a.scopeDepth;\n }\n let aParentIndex = 0;\n let bParentIndex = 0;\n while (true) {\n if (a.parentScopes[aParentIndex] === \">\") {\n aParentIndex++;\n }\n if (b.parentScopes[bParentIndex] === \">\") {\n bParentIndex++;\n }\n if (aParentIndex >= a.parentScopes.length || bParentIndex >= b.parentScopes.length) {\n break;\n }\n const parentScopeLengthDiff = b.parentScopes[bParentIndex].length - a.parentScopes[aParentIndex].length;\n if (parentScopeLengthDiff !== 0) {\n return parentScopeLengthDiff;\n }\n aParentIndex++;\n bParentIndex++;\n }\n return b.parentScopes.length - a.parentScopes.length;\n }\n match(scope) {\n if (scope !== \"\") {\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n if (this._children.hasOwnProperty(head)) {\n return this._children[head].match(tail);\n }\n }\n const rules = this._rulesWithParentScopes.concat(this._mainRule);\n rules.sort(_ThemeTrieElement._cmpBySpecificity);\n return rules;\n }\n insert(scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n if (scope === \"\") {\n this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n return;\n }\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n let child;\n if (this._children.hasOwnProperty(head)) {\n child = this._children[head];\n } else {\n child = new _ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n this._children[head] = child;\n }\n child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n }\n _doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background) {\n if (parentScopes === null) {\n this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n for (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n let rule = this._rulesWithParentScopes[i];\n if (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n }\n if (fontStyle === -1 /* NotSet */) {\n fontStyle = this._mainRule.fontStyle;\n }\n if (foreground === 0) {\n foreground = this._mainRule.foreground;\n }\n if (background === 0) {\n background = this._mainRule.background;\n }\n this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n }\n};\n\n// src/encodedTokenAttributes.ts\nvar EncodedTokenMetadata = class _EncodedTokenMetadata {\n static toBinaryStr(encodedTokenAttributes) {\n return encodedTokenAttributes.toString(2).padStart(32, \"0\");\n }\n static print(encodedTokenAttributes) {\n const languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n const tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n const fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n const foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n const background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n console.log({\n languageId,\n tokenType,\n fontStyle,\n foreground,\n background\n });\n }\n static getLanguageId(encodedTokenAttributes) {\n return (encodedTokenAttributes & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\n }\n static getTokenType(encodedTokenAttributes) {\n return (encodedTokenAttributes & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\n }\n static containsBalancedBrackets(encodedTokenAttributes) {\n return (encodedTokenAttributes & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;\n }\n static getFontStyle(encodedTokenAttributes) {\n return (encodedTokenAttributes & 30720 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\n }\n static getForeground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 16744448 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;\n }\n static getBackground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 4278190080 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;\n }\n /**\n * Updates the fields in `metadata`.\n * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.\n */\n static set(encodedTokenAttributes, languageId, tokenType, containsBalancedBrackets, fontStyle, foreground, background) {\n let _languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n let _tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n let _containsBalancedBracketsBit = _EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes) ? 1 : 0;\n let _fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n let _foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n let _background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n if (languageId !== 0) {\n _languageId = languageId;\n }\n if (tokenType !== 8 /* NotSet */) {\n _tokenType = fromOptionalTokenType(tokenType);\n }\n if (containsBalancedBrackets !== null) {\n _containsBalancedBracketsBit = containsBalancedBrackets ? 1 : 0;\n }\n if (fontStyle !== -1 /* NotSet */) {\n _fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n _foreground = foreground;\n }\n if (background !== 0) {\n _background = background;\n }\n return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;\n }\n};\nfunction toOptionalTokenType(standardType) {\n return standardType;\n}\nfunction fromOptionalTokenType(standardType) {\n return standardType;\n}\n\n// src/matcher.ts\nfunction createMatchers(selector, matchesName) {\n const results = [];\n const tokenizer = newTokenizer(selector);\n let token = tokenizer.next();\n while (token !== null) {\n let priority = 0;\n if (token.length === 2 && token.charAt(1) === \":\") {\n switch (token.charAt(0)) {\n case \"R\":\n priority = 1;\n break;\n case \"L\":\n priority = -1;\n break;\n default:\n console.log(`Unknown priority ${token} in scope selector`);\n }\n token = tokenizer.next();\n }\n let matcher = parseConjunction();\n results.push({ matcher, priority });\n if (token !== \",\") {\n break;\n }\n token = tokenizer.next();\n }\n return results;\n function parseOperand() {\n if (token === \"-\") {\n token = tokenizer.next();\n const expressionToNegate = parseOperand();\n return (matcherInput) => !!expressionToNegate && !expressionToNegate(matcherInput);\n }\n if (token === \"(\") {\n token = tokenizer.next();\n const expressionInParents = parseInnerExpression();\n if (token === \")\") {\n token = tokenizer.next();\n }\n return expressionInParents;\n }\n if (isIdentifier(token)) {\n const identifiers = [];\n do {\n identifiers.push(token);\n token = tokenizer.next();\n } while (isIdentifier(token));\n return (matcherInput) => matchesName(identifiers, matcherInput);\n }\n return null;\n }\n function parseConjunction() {\n const matchers = [];\n let matcher = parseOperand();\n while (matcher) {\n matchers.push(matcher);\n matcher = parseOperand();\n }\n return (matcherInput) => matchers.every((matcher2) => matcher2(matcherInput));\n }\n function parseInnerExpression() {\n const matchers = [];\n let matcher = parseConjunction();\n while (matcher) {\n matchers.push(matcher);\n if (token === \"|\" || token === \",\") {\n do {\n token = tokenizer.next();\n } while (token === \"|\" || token === \",\");\n } else {\n break;\n }\n matcher = parseConjunction();\n }\n return (matcherInput) => matchers.some((matcher2) => matcher2(matcherInput));\n }\n}\nfunction isIdentifier(token) {\n return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n let regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n let match = regex.exec(input);\n return {\n next: () => {\n if (!match) {\n return null;\n }\n const res = match[0];\n match = regex.exec(input);\n return res;\n }\n };\n}\n\n// src/onigLib.ts\nvar FindOption = /* @__PURE__ */ ((FindOption2) => {\n FindOption2[FindOption2[\"None\"] = 0] = \"None\";\n FindOption2[FindOption2[\"NotBeginString\"] = 1] = \"NotBeginString\";\n FindOption2[FindOption2[\"NotEndString\"] = 2] = \"NotEndString\";\n FindOption2[FindOption2[\"NotBeginPosition\"] = 4] = \"NotBeginPosition\";\n FindOption2[FindOption2[\"DebugCall\"] = 8] = \"DebugCall\";\n return FindOption2;\n})(FindOption || {});\nfunction disposeOnigString(str) {\n if (typeof str.dispose === \"function\") {\n str.dispose();\n }\n}\n\n// src/grammar/grammarDependencies.ts\nvar TopLevelRuleReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n toKey() {\n return this.scopeName;\n }\n};\nvar TopLevelRepositoryRuleReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n toKey() {\n return `${this.scopeName}#${this.ruleName}`;\n }\n};\nvar ExternalReferenceCollector = class {\n _references = [];\n _seenReferenceKeys = /* @__PURE__ */ new Set();\n get references() {\n return this._references;\n }\n visitedRule = /* @__PURE__ */ new Set();\n add(reference) {\n const key = reference.toKey();\n if (this._seenReferenceKeys.has(key)) {\n return;\n }\n this._seenReferenceKeys.add(key);\n this._references.push(reference);\n }\n};\nvar ScopeDependencyProcessor = class {\n constructor(repo, initialScopeName) {\n this.repo = repo;\n this.initialScopeName = initialScopeName;\n this.seenFullScopeRequests.add(this.initialScopeName);\n this.Q = [new TopLevelRuleReference(this.initialScopeName)];\n }\n seenFullScopeRequests = /* @__PURE__ */ new Set();\n seenPartialScopeRequests = /* @__PURE__ */ new Set();\n Q;\n processQueue() {\n const q = this.Q;\n this.Q = [];\n const deps = new ExternalReferenceCollector();\n for (const dep of q) {\n collectReferencesOfReference(dep, this.initialScopeName, this.repo, deps);\n }\n for (const dep of deps.references) {\n if (dep instanceof TopLevelRuleReference) {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n this.seenFullScopeRequests.add(dep.scopeName);\n this.Q.push(dep);\n } else {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n if (this.seenPartialScopeRequests.has(dep.toKey())) {\n continue;\n }\n this.seenPartialScopeRequests.add(dep.toKey());\n this.Q.push(dep);\n }\n }\n }\n};\nfunction collectReferencesOfReference(reference, baseGrammarScopeName, repo, result) {\n const selfGrammar = repo.lookup(reference.scopeName);\n if (!selfGrammar) {\n if (reference.scopeName === baseGrammarScopeName) {\n throw new Error(`No grammar provided for <${baseGrammarScopeName}>`);\n }\n return;\n }\n const baseGrammar = repo.lookup(baseGrammarScopeName);\n if (reference instanceof TopLevelRuleReference) {\n collectExternalReferencesInTopLevelRule({ baseGrammar, selfGrammar }, result);\n } else {\n collectExternalReferencesInTopLevelRepositoryRule(\n reference.ruleName,\n { baseGrammar, selfGrammar, repository: selfGrammar.repository },\n result\n );\n }\n const injections = repo.injections(reference.scopeName);\n if (injections) {\n for (const injection of injections) {\n result.add(new TopLevelRuleReference(injection));\n }\n }\n}\nfunction collectExternalReferencesInTopLevelRepositoryRule(ruleName, context, result) {\n if (context.repository && context.repository[ruleName]) {\n const rule = context.repository[ruleName];\n collectExternalReferencesInRules([rule], context, result);\n }\n}\nfunction collectExternalReferencesInTopLevelRule(context, result) {\n if (context.selfGrammar.patterns && Array.isArray(context.selfGrammar.patterns)) {\n collectExternalReferencesInRules(\n context.selfGrammar.patterns,\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n if (context.selfGrammar.injections) {\n collectExternalReferencesInRules(\n Object.values(context.selfGrammar.injections),\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n}\nfunction collectExternalReferencesInRules(rules, context, result) {\n for (const rule of rules) {\n if (result.visitedRule.has(rule)) {\n continue;\n }\n result.visitedRule.add(rule);\n const patternRepository = rule.repository ? mergeObjects({}, context.repository, rule.repository) : context.repository;\n if (Array.isArray(rule.patterns)) {\n collectExternalReferencesInRules(rule.patterns, { ...context, repository: patternRepository }, result);\n }\n const include = rule.include;\n if (!include) {\n continue;\n }\n const reference = parseInclude(include);\n switch (reference.kind) {\n case 0 /* Base */:\n collectExternalReferencesInTopLevelRule({ ...context, selfGrammar: context.baseGrammar }, result);\n break;\n case 1 /* Self */:\n collectExternalReferencesInTopLevelRule(context, result);\n break;\n case 2 /* RelativeReference */:\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { ...context, repository: patternRepository }, result);\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const selfGrammar = reference.scopeName === context.selfGrammar.scopeName ? context.selfGrammar : reference.scopeName === context.baseGrammar.scopeName ? context.baseGrammar : void 0;\n if (selfGrammar) {\n const newContext = { baseGrammar: context.baseGrammar, selfGrammar, repository: patternRepository };\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, newContext, result);\n } else {\n collectExternalReferencesInTopLevelRule(newContext, result);\n }\n } else {\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n result.add(new TopLevelRepositoryRuleReference(reference.scopeName, reference.ruleName));\n } else {\n result.add(new TopLevelRuleReference(reference.scopeName));\n }\n }\n break;\n }\n }\n}\nvar BaseReference = class {\n kind = 0 /* Base */;\n};\nvar SelfReference = class {\n kind = 1 /* Self */;\n};\nvar RelativeReference = class {\n constructor(ruleName) {\n this.ruleName = ruleName;\n }\n kind = 2 /* RelativeReference */;\n};\nvar TopLevelReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n kind = 3 /* TopLevelReference */;\n};\nvar TopLevelRepositoryReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n kind = 4 /* TopLevelRepositoryReference */;\n};\nfunction parseInclude(include) {\n if (include === \"$base\") {\n return new BaseReference();\n } else if (include === \"$self\") {\n return new SelfReference();\n }\n const indexOfSharp = include.indexOf(\"#\");\n if (indexOfSharp === -1) {\n return new TopLevelReference(include);\n } else if (indexOfSharp === 0) {\n return new RelativeReference(include.substring(1));\n } else {\n const scopeName = include.substring(0, indexOfSharp);\n const ruleName = include.substring(indexOfSharp + 1);\n return new TopLevelRepositoryReference(scopeName, ruleName);\n }\n}\n\n// src/rule.ts\nvar HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nvar BACK_REFERENCING_END = /\\\\(\\d+)/g;\nvar ruleIdSymbol = Symbol(\"RuleId\");\nvar endRuleId = -1;\nvar whileRuleId = -2;\nfunction ruleIdFromNumber(id) {\n return id;\n}\nfunction ruleIdToNumber(id) {\n return id;\n}\nvar Rule = class {\n $location;\n id;\n _nameIsCapturing;\n _name;\n _contentNameIsCapturing;\n _contentName;\n constructor($location, id, name, contentName) {\n this.$location = $location;\n this.id = id;\n this._name = name || null;\n this._nameIsCapturing = RegexSource.hasCaptures(this._name);\n this._contentName = contentName || null;\n this._contentNameIsCapturing = RegexSource.hasCaptures(this._contentName);\n }\n get debugName() {\n const location = this.$location ? `${basename(this.$location.filename)}:${this.$location.line}` : \"unknown\";\n return `${this.constructor.name}#${this.id} @ ${location}`;\n }\n getName(lineText, captureIndices) {\n if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n return this._name;\n }\n return RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n }\n getContentName(lineText, captureIndices) {\n if (!this._contentNameIsCapturing || this._contentName === null) {\n return this._contentName;\n }\n return RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n }\n};\nvar CaptureRule = class extends Rule {\n retokenizeCapturedWithRuleId;\n constructor($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n super($location, id, name, contentName);\n this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n }\n dispose() {\n }\n collectPatterns(grammar, out) {\n throw new Error(\"Not supported!\");\n }\n compile(grammar, endRegexSource) {\n throw new Error(\"Not supported!\");\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n throw new Error(\"Not supported!\");\n }\n};\nvar MatchRule = class extends Rule {\n _match;\n captures;\n _cachedCompiledPatterns;\n constructor($location, id, name, match, captures) {\n super($location, id, name, null);\n this._match = new RegExpSource(match, this.id);\n this.captures = captures;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugMatchRegExp() {\n return `${this._match.source}`;\n }\n collectPatterns(grammar, out) {\n out.push(this._match);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar IncludeOnlyRule = class extends Rule {\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, patterns) {\n super($location, id, name, contentName);\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n collectPatterns(grammar, out) {\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, out);\n }\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginEndRule = class extends Rule {\n _begin;\n beginCaptures;\n _end;\n endHasBackReferences;\n endCaptures;\n applyEndPatternLast;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this._end = new RegExpSource(end ? end : \"\\uFFFF\", -1);\n this.endHasBackReferences = this._end.hasBackReferences;\n this.endCaptures = endCaptures;\n this.applyEndPatternLast = applyEndPatternLast || false;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugEndRegExp() {\n return `${this._end.source}`;\n }\n getEndWithResolvedBackReferences(lineText, captureIndices) {\n return this._end.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n } else {\n this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n }\n if (this._end.hasBackReferences) {\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n } else {\n this._cachedCompiledPatterns.setSource(0, endRegexSource);\n }\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginWhileRule = class extends Rule {\n _begin;\n beginCaptures;\n whileCaptures;\n _while;\n whileHasBackReferences;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n _cachedCompiledWhilePatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this.whileCaptures = whileCaptures;\n this._while = new RegExpSource(_while, whileRuleId);\n this.whileHasBackReferences = this._while.hasBackReferences;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n this._cachedCompiledWhilePatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n if (this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns.dispose();\n this._cachedCompiledWhilePatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugWhileRegExp() {\n return `${this._while.source}`;\n }\n getWhileWithResolvedBackReferences(lineText, captureIndices) {\n return this._while.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n }\n return this._cachedCompiledPatterns;\n }\n compileWhile(grammar, endRegexSource) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compile(grammar);\n }\n compileWhileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledWhilePatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns = new RegExpSourceList();\n this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n }\n if (this._while.hasBackReferences) {\n this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : \"\\uFFFF\");\n }\n return this._cachedCompiledWhilePatterns;\n }\n};\nvar RuleFactory = class _RuleFactory {\n static createCaptureRule(helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n return helper.registerRule((id) => {\n return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n });\n }\n static getCompiledRuleId(desc, helper, repository) {\n if (!desc.id) {\n helper.registerRule((id) => {\n desc.id = id;\n if (desc.match) {\n return new MatchRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.match,\n _RuleFactory._compileCaptures(desc.captures, helper, repository)\n );\n }\n if (typeof desc.begin === \"undefined\") {\n if (desc.repository) {\n repository = mergeObjects({}, repository, desc.repository);\n }\n let patterns = desc.patterns;\n if (typeof patterns === \"undefined\" && desc.include) {\n patterns = [{ include: desc.include }];\n }\n return new IncludeOnlyRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n _RuleFactory._compilePatterns(patterns, helper, repository)\n );\n }\n if (desc.while) {\n return new BeginWhileRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.while,\n _RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository),\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n }\n return new BeginEndRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.end,\n _RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository),\n desc.applyEndPatternLast,\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n });\n }\n return desc.id;\n }\n static _compileCaptures(captures, helper, repository) {\n let r = [];\n if (captures) {\n let maximumCaptureId = 0;\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n if (numericCaptureId > maximumCaptureId) {\n maximumCaptureId = numericCaptureId;\n }\n }\n for (let i = 0; i <= maximumCaptureId; i++) {\n r[i] = null;\n }\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n let retokenizeCapturedWithRuleId = 0;\n if (captures[captureId].patterns) {\n retokenizeCapturedWithRuleId = _RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n }\n r[numericCaptureId] = _RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n }\n }\n return r;\n }\n static _compilePatterns(patterns, helper, repository) {\n let r = [];\n if (patterns) {\n for (let i = 0, len = patterns.length; i < len; i++) {\n const pattern = patterns[i];\n let ruleId = -1;\n if (pattern.include) {\n const reference = parseInclude(pattern.include);\n switch (reference.kind) {\n case 0 /* Base */:\n case 1 /* Self */:\n ruleId = _RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n break;\n case 2 /* RelativeReference */:\n let localIncludedRule = repository[reference.ruleName];\n if (localIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n } else {\n }\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const externalGrammarName = reference.scopeName;\n const externalGrammarInclude = reference.kind === 4 /* TopLevelRepositoryReference */ ? reference.ruleName : null;\n const externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n if (externalGrammar) {\n if (externalGrammarInclude) {\n let externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n if (externalIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n } else {\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n }\n } else {\n }\n break;\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(pattern, helper, repository);\n }\n if (ruleId !== -1) {\n const rule = helper.getRule(ruleId);\n let skipRule = false;\n if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n skipRule = true;\n }\n }\n if (skipRule) {\n continue;\n }\n r.push(ruleId);\n }\n }\n }\n return {\n patterns: r,\n hasMissingPatterns: (patterns ? patterns.length : 0) !== r.length\n };\n }\n};\nvar RegExpSource = class _RegExpSource {\n source;\n ruleId;\n hasAnchor;\n hasBackReferences;\n _anchorCache;\n constructor(regExpSource, ruleId) {\n if (regExpSource && typeof regExpSource === \"string\") {\n const len = regExpSource.length;\n let lastPushedPos = 0;\n let output = [];\n let hasAnchor = false;\n for (let pos = 0; pos < len; pos++) {\n const ch = regExpSource.charAt(pos);\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n const nextCh = regExpSource.charAt(pos + 1);\n if (nextCh === \"z\") {\n output.push(regExpSource.substring(lastPushedPos, pos));\n output.push(\"$(?!\\\\n)(?<!\\\\n)\");\n lastPushedPos = pos + 2;\n } else if (nextCh === \"A\" || nextCh === \"G\") {\n hasAnchor = true;\n }\n pos++;\n }\n }\n }\n this.hasAnchor = hasAnchor;\n if (lastPushedPos === 0) {\n this.source = regExpSource;\n } else {\n output.push(regExpSource.substring(lastPushedPos, len));\n this.source = output.join(\"\");\n }\n } else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n } else {\n this._anchorCache = null;\n }\n this.ruleId = ruleId;\n if (typeof this.source === \"string\") {\n this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n } else {\n this.hasBackReferences = false;\n }\n }\n clone() {\n return new _RegExpSource(this.source, this.ruleId);\n }\n setSource(newSource) {\n if (this.source === newSource) {\n return;\n }\n this.source = newSource;\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n }\n resolveBackReferences(lineText, captureIndices) {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let capturedValues = captureIndices.map((capture) => {\n return lineText.substring(capture.start, capture.end);\n });\n BACK_REFERENCING_END.lastIndex = 0;\n return this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n return escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || \"\");\n });\n }\n _buildAnchorCache() {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let A0_G0_result = [];\n let A0_G1_result = [];\n let A1_G0_result = [];\n let A1_G1_result = [];\n let pos, len, ch, nextCh;\n for (pos = 0, len = this.source.length; pos < len; pos++) {\n ch = this.source.charAt(pos);\n A0_G0_result[pos] = ch;\n A0_G1_result[pos] = ch;\n A1_G0_result[pos] = ch;\n A1_G1_result[pos] = ch;\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n nextCh = this.source.charAt(pos + 1);\n if (nextCh === \"A\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"\\uFFFF\";\n A1_G0_result[pos + 1] = \"A\";\n A1_G1_result[pos + 1] = \"A\";\n } else if (nextCh === \"G\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"G\";\n A1_G0_result[pos + 1] = \"\\uFFFF\";\n A1_G1_result[pos + 1] = \"G\";\n } else {\n A0_G0_result[pos + 1] = nextCh;\n A0_G1_result[pos + 1] = nextCh;\n A1_G0_result[pos + 1] = nextCh;\n A1_G1_result[pos + 1] = nextCh;\n }\n pos++;\n }\n }\n }\n return {\n A0_G0: A0_G0_result.join(\"\"),\n A0_G1: A0_G1_result.join(\"\"),\n A1_G0: A1_G0_result.join(\"\"),\n A1_G1: A1_G1_result.join(\"\")\n };\n }\n resolveAnchors(allowA, allowG) {\n if (!this.hasAnchor || !this._anchorCache || typeof this.source !== \"string\") {\n return this.source;\n }\n if (allowA) {\n if (allowG) {\n return this._anchorCache.A1_G1;\n } else {\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n return this._anchorCache.A0_G1;\n } else {\n return this._anchorCache.A0_G0;\n }\n }\n }\n};\nvar RegExpSourceList = class {\n _items;\n _hasAnchors;\n _cached;\n _anchorCache;\n constructor() {\n this._items = [];\n this._hasAnchors = false;\n this._cached = null;\n this._anchorCache = {\n A0_G0: null,\n A0_G1: null,\n A1_G0: null,\n A1_G1: null\n };\n }\n dispose() {\n this._disposeCaches();\n }\n _disposeCaches() {\n if (this._cached) {\n this._cached.dispose();\n this._cached = null;\n }\n if (this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0.dispose();\n this._anchorCache.A0_G0 = null;\n }\n if (this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1.dispose();\n this._anchorCache.A0_G1 = null;\n }\n if (this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0.dispose();\n this._anchorCache.A1_G0 = null;\n }\n if (this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1.dispose();\n this._anchorCache.A1_G1 = null;\n }\n }\n push(item) {\n this._items.push(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n unshift(item) {\n this._items.unshift(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n length() {\n return this._items.length;\n }\n setSource(index, newSource) {\n if (this._items[index].source !== newSource) {\n this._disposeCaches();\n this._items[index].setSource(newSource);\n }\n }\n compile(onigLib) {\n if (!this._cached) {\n let regExps = this._items.map((e) => e.source);\n this._cached = new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n return this._cached;\n }\n compileAG(onigLib, allowA, allowG) {\n if (!this._hasAnchors) {\n return this.compile(onigLib);\n } else {\n if (allowA) {\n if (allowG) {\n if (!this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G1;\n } else {\n if (!this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n if (!this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G1;\n } else {\n if (!this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G0;\n }\n }\n }\n }\n _resolveAnchors(onigLib, allowA, allowG) {\n let regExps = this._items.map((e) => e.resolveAnchors(allowA, allowG));\n return new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n};\nvar CompiledRule = class {\n constructor(onigLib, regExps, rules) {\n this.regExps = regExps;\n this.rules = rules;\n this.scanner = onigLib.createOnigScanner(regExps);\n }\n scanner;\n dispose() {\n if (typeof this.scanner.dispose === \"function\") {\n this.scanner.dispose();\n }\n }\n toString() {\n const r = [];\n for (let i = 0, len = this.rules.length; i < len; i++) {\n r.push(\" - \" + this.rules[i] + \": \" + this.regExps[i]);\n }\n return r.join(\"\\n\");\n }\n findNextMatchSync(string, startPosition, options) {\n const result = this.scanner.findNextMatchSync(string, startPosition, options);\n if (!result) {\n return null;\n }\n return {\n ruleId: this.rules[result.index],\n captureIndices: result.captureIndices\n };\n }\n};\n\n// src/grammar/basicScopesAttributeProvider.ts\nvar BasicScopeAttributes = class {\n constructor(languageId, tokenType) {\n this.languageId = languageId;\n this.tokenType = tokenType;\n }\n};\nvar BasicScopeAttributesProvider = class _BasicScopeAttributesProvider {\n _defaultAttributes;\n _embeddedLanguagesMatcher;\n constructor(initialLanguageId, embeddedLanguages) {\n this._defaultAttributes = new BasicScopeAttributes(initialLanguageId, 8 /* NotSet */);\n this._embeddedLanguagesMatcher = new ScopeMatcher(Object.entries(embeddedLanguages || {}));\n }\n getDefaultAttributes() {\n return this._defaultAttributes;\n }\n getBasicScopeAttributes(scopeName) {\n if (scopeName === null) {\n return _BasicScopeAttributesProvider._NULL_SCOPE_METADATA;\n }\n return this._getBasicScopeAttributes.get(scopeName);\n }\n static _NULL_SCOPE_METADATA = new BasicScopeAttributes(0, 0);\n _getBasicScopeAttributes = new CachedFn((scopeName) => {\n const languageId = this._scopeToLanguage(scopeName);\n const standardTokenType = this._toStandardTokenType(scopeName);\n return new BasicScopeAttributes(languageId, standardTokenType);\n });\n /**\n * Given a produced TM scope, return the language that token describes or null if unknown.\n * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n */\n _scopeToLanguage(scope) {\n return this._embeddedLanguagesMatcher.match(scope) || 0;\n }\n _toStandardTokenType(scopeName) {\n const m = scopeName.match(_BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 8 /* NotSet */;\n }\n switch (m[1]) {\n case \"comment\":\n return 1 /* Comment */;\n case \"string\":\n return 2 /* String */;\n case \"regex\":\n return 3 /* RegEx */;\n case \"meta.embedded\":\n return 0 /* Other */;\n }\n throw new Error(\"Unexpected match for standard token type!\");\n }\n static STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n};\nvar ScopeMatcher = class {\n values;\n scopesRegExp;\n constructor(values) {\n if (values.length === 0) {\n this.values = null;\n this.scopesRegExp = null;\n } else {\n this.values = new Map(values);\n const escapedScopes = values.map(\n ([scopeName, value]) => escapeRegExpCharacters(scopeName)\n );\n escapedScopes.sort();\n escapedScopes.reverse();\n this.scopesRegExp = new RegExp(\n `^((${escapedScopes.join(\")|(\")}))($|\\\\.)`,\n \"\"\n );\n }\n }\n match(scope) {\n if (!this.scopesRegExp) {\n return void 0;\n }\n const m = scope.match(this.scopesRegExp);\n if (!m) {\n return void 0;\n }\n return this.values.get(m[1]);\n }\n};\n\n// src/debug.ts\nvar DebugFlags = {\n InDebugMode: typeof process !== \"undefined\" && !!process.env[\"VSCODE_TEXTMATE_DEBUG\"]\n};\nvar UseOnigurumaFindOptions = false;\n\n// src/grammar/tokenizeString.ts\nvar TokenizeStringResult = class {\n constructor(stack, stoppedEarly) {\n this.stack = stack;\n this.stoppedEarly = stoppedEarly;\n }\n};\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions, timeLimit) {\n const lineLength = lineText.content.length;\n let STOP = false;\n let anchorPosition = -1;\n if (checkWhileConditions) {\n const whileCheckResult = _checkWhileConditions(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n lineTokens\n );\n stack = whileCheckResult.stack;\n linePos = whileCheckResult.linePos;\n isFirstLine = whileCheckResult.isFirstLine;\n anchorPosition = whileCheckResult.anchorPosition;\n }\n const startTime = Date.now();\n while (!STOP) {\n if (timeLimit !== 0) {\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime > timeLimit) {\n return new TokenizeStringResult(stack, true);\n }\n }\n scanNext();\n }\n return new TokenizeStringResult(stack, false);\n function scanNext() {\n if (false) {\n console.log(\"\");\n console.log(\n `@@scanNext ${linePos}: |${lineText.content.substr(linePos).replace(/\\n$/, \"\\\\n\")}|`\n );\n }\n const r = matchRuleOrInjections(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n anchorPosition\n );\n if (!r) {\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n const captureIndices = r.captureIndices;\n const matchedRuleId = r.matchedRuleId;\n const hasAdvanced = captureIndices && captureIndices.length > 0 ? captureIndices[0].end > linePos : false;\n if (matchedRuleId === endRuleId) {\n const poppedRule = stack.getRule(grammar);\n if (false) {\n console.log(\n \" popping \" + poppedRule.debugName + \" - \" + poppedRule.debugEndRegExp\n );\n }\n lineTokens.produce(stack, captureIndices[0].start);\n stack = stack.withContentNameScopesList(stack.nameScopesList);\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n poppedRule.endCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n const popped = stack;\n stack = stack.parent;\n anchorPosition = popped.getAnchorPos();\n if (!hasAdvanced && popped.getEnterPos() === linePos) {\n if (false) {\n console.error(\n \"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\"\n );\n }\n stack = popped;\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const _rule = grammar.getRule(matchedRuleId);\n lineTokens.produce(stack, captureIndices[0].start);\n const beforePush = stack;\n const scopeName = _rule.getName(lineText.content, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(\n scopeName,\n grammar\n );\n stack = stack.push(\n matchedRuleId,\n linePos,\n anchorPosition,\n captureIndices[0].end === lineLength,\n null,\n nameScopesList,\n nameScopesList\n );\n if (_rule instanceof BeginEndRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\n \" pushing \" + pushedRule.debugName + \" - \" + pushedRule.debugBeginRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.endHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getEndWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else if (_rule instanceof BeginWhileRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\" pushing \" + pushedRule.debugName);\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.whileHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getWhileWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const matchingRule = _rule;\n if (false) {\n console.log(\n \" matched \" + matchingRule.debugName + \" - \" + matchingRule.debugMatchRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n matchingRule.captures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n stack = stack.pop();\n if (!hasAdvanced) {\n if (false) {\n console.error(\n \"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\"\n );\n }\n stack = stack.safePop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n }\n if (captureIndices[0].end > linePos) {\n linePos = captureIndices[0].end;\n isFirstLine = false;\n }\n }\n}\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n let anchorPosition = stack.beginRuleCapturedEOL ? 0 : -1;\n const whileRules = [];\n for (let node = stack; node; node = node.pop()) {\n const nodeRule = node.getRule(grammar);\n if (nodeRule instanceof BeginWhileRule) {\n whileRules.push({\n rule: nodeRule,\n stack: node\n });\n }\n }\n for (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n const { ruleScanner, findOptions } = prepareRuleWhileSearch(whileRule.rule, grammar, whileRule.stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (false) {\n console.log(\" scanning for while rule\");\n console.log(ruleScanner.toString());\n }\n if (r) {\n const matchedRuleId = r.ruleId;\n if (matchedRuleId !== whileRuleId) {\n stack = whileRule.stack.pop();\n break;\n }\n if (r.captureIndices && r.captureIndices.length) {\n lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n anchorPosition = r.captureIndices[0].end;\n if (r.captureIndices[0].end > linePos) {\n linePos = r.captureIndices[0].end;\n isFirstLine = false;\n }\n }\n } else {\n if (false) {\n console.log(\" popping \" + whileRule.rule.debugName + \" - \" + whileRule.rule.debugWhileRegExp);\n }\n stack = whileRule.stack.pop();\n break;\n }\n }\n return { stack, linePos, anchorPosition, isFirstLine };\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n const injections = grammar.getInjections();\n if (injections.length === 0) {\n return matchResult;\n }\n const injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!injectionResult) {\n return matchResult;\n }\n if (!matchResult) {\n return injectionResult;\n }\n const matchResultScore = matchResult.captureIndices[0].start;\n const injectionResultScore = injectionResult.captureIndices[0].start;\n if (injectionResultScore < matchResultScore || injectionResult.priorityMatch && injectionResultScore === matchResultScore) {\n return injectionResult;\n }\n return matchResult;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const rule = stack.getRule(grammar);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (r) {\n return {\n captureIndices: r.captureIndices,\n matchedRuleId: r.ruleId\n };\n }\n return null;\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n let bestMatchRating = Number.MAX_VALUE;\n let bestMatchCaptureIndices = null;\n let bestMatchRuleId;\n let bestMatchResultPriority = 0;\n const scopes = stack.contentNameScopesList.getScopeNames();\n for (let i = 0, len = injections.length; i < len; i++) {\n const injection = injections[i];\n if (!injection.matcher(scopes)) {\n continue;\n }\n const rule = grammar.getRule(injection.ruleId);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, null, isFirstLine, linePos === anchorPosition);\n const matchResult = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (!matchResult) {\n continue;\n }\n if (false) {\n console.log(` matched injection: ${injection.debugSelector}`);\n console.log(ruleScanner.toString());\n }\n const matchRating = matchResult.captureIndices[0].start;\n if (matchRating >= bestMatchRating) {\n continue;\n }\n bestMatchRating = matchRating;\n bestMatchCaptureIndices = matchResult.captureIndices;\n bestMatchRuleId = matchResult.ruleId;\n bestMatchResultPriority = injection.priority;\n if (bestMatchRating === linePos) {\n break;\n }\n }\n if (bestMatchCaptureIndices) {\n return {\n priorityMatch: bestMatchResultPriority === -1,\n captureIndices: bestMatchCaptureIndices,\n matchedRuleId: bestMatchRuleId\n };\n }\n return null;\n}\nfunction prepareRuleSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction prepareRuleWhileSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compileWhile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileWhileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction getFindOptions(allowA, allowG) {\n let options = 0 /* None */;\n if (!allowA) {\n options |= 1 /* NotBeginString */;\n }\n if (!allowG) {\n options |= 4 /* NotBeginPosition */;\n }\n return options;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n if (captures.length === 0) {\n return;\n }\n const lineTextContent = lineText.content;\n const len = Math.min(captures.length, captureIndices.length);\n const localStack = [];\n const maxEnd = captureIndices[0].end;\n for (let i = 0; i < len; i++) {\n const captureRule = captures[i];\n if (captureRule === null) {\n continue;\n }\n const captureIndex = captureIndices[i];\n if (captureIndex.length === 0) {\n continue;\n }\n if (captureIndex.start > maxEnd) {\n break;\n }\n while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n if (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n } else {\n lineTokens.produce(stack, captureIndex.start);\n }\n if (captureRule.retokenizeCapturedWithRuleId) {\n const scopeName = captureRule.getName(lineTextContent, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n const contentName = captureRule.getContentName(lineTextContent, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n const stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n const onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n _tokenizeString(\n grammar,\n onigSubStr,\n isFirstLine && captureIndex.start === 0,\n captureIndex.start,\n stackClone,\n lineTokens,\n false,\n /* no time limit */\n 0\n );\n disposeOnigString(onigSubStr);\n continue;\n }\n const captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n if (captureRuleScopeName !== null) {\n const base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n const captureRuleScopesList = base.pushAttributed(captureRuleScopeName, grammar);\n localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n }\n }\n while (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n}\nvar LocalStackElement = class {\n scopes;\n endPos;\n constructor(scopes, endPos) {\n this.scopes = scopes;\n this.endPos = endPos;\n }\n};\n\n// src/grammar/grammar.ts\nfunction createGrammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib) {\n return new Grammar(\n scopeName,\n grammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n grammarRepository,\n onigLib\n );\n}\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n const matchers = createMatchers(selector, nameMatcher);\n const ruleId = RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n for (const matcher of matchers) {\n result.push({\n debugSelector: selector,\n matcher: matcher.matcher,\n ruleId,\n grammar,\n priority: matcher.priority\n });\n }\n}\nfunction nameMatcher(identifers, scopes) {\n if (scopes.length < identifers.length) {\n return false;\n }\n let lastIndex = 0;\n return identifers.every((identifier) => {\n for (let i = lastIndex; i < scopes.length; i++) {\n if (scopesAreMatching(scopes[i], identifier)) {\n lastIndex = i + 1;\n return true;\n }\n }\n return false;\n });\n}\nfunction scopesAreMatching(thisScopeName, scopeName) {\n if (!thisScopeName) {\n return false;\n }\n if (thisScopeName === scopeName) {\n return true;\n }\n const len = scopeName.length;\n return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === \".\";\n}\nvar Grammar = class {\n constructor(_rootScopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, _onigLib) {\n this._rootScopeName = _rootScopeName;\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._onigLib = _onigLib;\n this._basicScopeAttributesProvider = new BasicScopeAttributesProvider(\n initialLanguage,\n embeddedLanguages\n );\n this._rootId = -1;\n this._lastRuleId = 0;\n this._ruleId2desc = [null];\n this._includedGrammars = {};\n this._grammarRepository = grammarRepository;\n this._grammar = initGrammar(grammar, null);\n this._injections = null;\n this._tokenTypeMatchers = [];\n if (tokenTypes) {\n for (const selector of Object.keys(tokenTypes)) {\n const matchers = createMatchers(selector, nameMatcher);\n for (const matcher of matchers) {\n this._tokenTypeMatchers.push({\n matcher: matcher.matcher,\n type: tokenTypes[selector]\n });\n }\n }\n }\n }\n _rootId;\n _lastRuleId;\n _ruleId2desc;\n _includedGrammars;\n _grammarRepository;\n _grammar;\n _injections;\n _basicScopeAttributesProvider;\n _tokenTypeMatchers;\n get themeProvider() {\n return this._grammarRepository;\n }\n dispose() {\n for (const rule of this._ruleId2desc) {\n if (rule) {\n rule.dispose();\n }\n }\n }\n createOnigScanner(sources) {\n return this._onigLib.createOnigScanner(sources);\n }\n createOnigString(sources) {\n return this._onigLib.createOnigString(sources);\n }\n getMetadataForScope(scope) {\n return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope);\n }\n _collectInjections() {\n const grammarRepository = {\n lookup: (scopeName2) => {\n if (scopeName2 === this._rootScopeName) {\n return this._grammar;\n }\n return this.getExternalGrammar(scopeName2);\n },\n injections: (scopeName2) => {\n return this._grammarRepository.injections(scopeName2);\n }\n };\n const result = [];\n const scopeName = this._rootScopeName;\n const grammar = grammarRepository.lookup(scopeName);\n if (grammar) {\n const rawInjections = grammar.injections;\n if (rawInjections) {\n for (let expression in rawInjections) {\n collectInjections(\n result,\n expression,\n rawInjections[expression],\n this,\n grammar\n );\n }\n }\n const injectionScopeNames = this._grammarRepository.injections(scopeName);\n if (injectionScopeNames) {\n injectionScopeNames.forEach((injectionScopeName) => {\n const injectionGrammar = this.getExternalGrammar(injectionScopeName);\n if (injectionGrammar) {\n const selector = injectionGrammar.injectionSelector;\n if (selector) {\n collectInjections(\n result,\n selector,\n injectionGrammar,\n this,\n injectionGrammar\n );\n }\n }\n });\n }\n }\n result.sort((i1, i2) => i1.priority - i2.priority);\n return result;\n }\n getInjections() {\n if (this._injections === null) {\n this._injections = this._collectInjections();\n }\n return this._injections;\n }\n registerRule(factory) {\n const id = ++this._lastRuleId;\n const result = factory(ruleIdFromNumber(id));\n this._ruleId2desc[id] = result;\n return result;\n }\n getRule(ruleId) {\n return this._ruleId2desc[ruleIdToNumber(ruleId)];\n }\n getExternalGrammar(scopeName, repository) {\n if (this._includedGrammars[scopeName]) {\n return this._includedGrammars[scopeName];\n } else if (this._grammarRepository) {\n const rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n if (rawIncludedGrammar) {\n this._includedGrammars[scopeName] = initGrammar(\n rawIncludedGrammar,\n repository && repository.$base\n );\n return this._includedGrammars[scopeName];\n }\n }\n return void 0;\n }\n tokenizeLine(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, false, timeLimit);\n return {\n tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n tokenizeLine2(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, true, timeLimit);\n return {\n tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n _tokenize(lineText, prevState, emitBinaryTokens, timeLimit) {\n if (this._rootId === -1) {\n this._rootId = RuleFactory.getCompiledRuleId(\n this._grammar.repository.$self,\n this,\n this._grammar.repository\n );\n this.getInjections();\n }\n let isFirstLine;\n if (!prevState || prevState === StateStackImpl.NULL) {\n isFirstLine = true;\n const rawDefaultMetadata = this._basicScopeAttributesProvider.getDefaultAttributes();\n const defaultStyle = this.themeProvider.getDefaults();\n const defaultMetadata = EncodedTokenMetadata.set(\n 0,\n rawDefaultMetadata.languageId,\n rawDefaultMetadata.tokenType,\n null,\n defaultStyle.fontStyle,\n defaultStyle.foregroundId,\n defaultStyle.backgroundId\n );\n const rootScopeName = this.getRule(this._rootId).getName(\n null,\n null\n );\n let scopeList;\n if (rootScopeName) {\n scopeList = AttributedScopeStack.createRootAndLookUpScopeName(\n rootScopeName,\n defaultMetadata,\n this\n );\n } else {\n scopeList = AttributedScopeStack.createRoot(\n \"unknown\",\n defaultMetadata\n );\n }\n prevState = new StateStackImpl(\n null,\n this._rootId,\n -1,\n -1,\n false,\n null,\n scopeList,\n scopeList\n );\n } else {\n isFirstLine = false;\n prevState.reset();\n }\n lineText = lineText + \"\\n\";\n const onigLineText = this.createOnigString(lineText);\n const lineLength = onigLineText.content.length;\n const lineTokens = new LineTokens(\n emitBinaryTokens,\n lineText,\n this._tokenTypeMatchers,\n this.balancedBracketSelectors\n );\n const r = _tokenizeString(\n this,\n onigLineText,\n isFirstLine,\n 0,\n prevState,\n lineTokens,\n true,\n timeLimit\n );\n disposeOnigString(onigLineText);\n return {\n lineLength,\n lineTokens,\n ruleStack: r.stack,\n stoppedEarly: r.stoppedEarly\n };\n }\n};\nfunction initGrammar(grammar, base) {\n grammar = clone(grammar);\n grammar.repository = grammar.repository || {};\n grammar.repository.$self = {\n $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n patterns: grammar.patterns,\n name: grammar.scopeName\n };\n grammar.repository.$base = base || grammar.repository.$self;\n return grammar;\n}\nvar AttributedScopeStack = class _AttributedScopeStack {\n /**\n * Invariant:\n * ```\n * if (parent && !scopePath.extends(parent.scopePath)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, scopePath, tokenAttributes) {\n this.parent = parent;\n this.scopePath = scopePath;\n this.tokenAttributes = tokenAttributes;\n }\n static fromExtension(namesScopeList, contentNameScopesList) {\n let current = namesScopeList;\n let scopeNames = namesScopeList?.scopePath ?? null;\n for (const frame of contentNameScopesList) {\n scopeNames = ScopeStack.push(scopeNames, frame.scopeNames);\n current = new _AttributedScopeStack(current, scopeNames, frame.encodedTokenAttributes);\n }\n return current;\n }\n static createRoot(scopeName, tokenAttributes) {\n return new _AttributedScopeStack(null, new ScopeStack(null, scopeName), tokenAttributes);\n }\n static createRootAndLookUpScopeName(scopeName, tokenAttributes, grammar) {\n const rawRootMetadata = grammar.getMetadataForScope(scopeName);\n const scopePath = new ScopeStack(null, scopeName);\n const rootStyle = grammar.themeProvider.themeMatch(scopePath);\n const resolvedTokenAttributes = _AttributedScopeStack.mergeAttributes(\n tokenAttributes,\n rawRootMetadata,\n rootStyle\n );\n return new _AttributedScopeStack(null, scopePath, resolvedTokenAttributes);\n }\n get scopeName() {\n return this.scopePath.scopeName;\n }\n toString() {\n return this.getScopeNames().join(\" \");\n }\n equals(other) {\n return _AttributedScopeStack.equals(this, other);\n }\n static equals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.scopeName !== b.scopeName || a.tokenAttributes !== b.tokenAttributes) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n static mergeAttributes(existingTokenAttributes, basicScopeAttributes, styleAttributes) {\n let fontStyle = -1 /* NotSet */;\n let foreground = 0;\n let background = 0;\n if (styleAttributes !== null) {\n fontStyle = styleAttributes.fontStyle;\n foreground = styleAttributes.foregroundId;\n background = styleAttributes.backgroundId;\n }\n return EncodedTokenMetadata.set(\n existingTokenAttributes,\n basicScopeAttributes.languageId,\n basicScopeAttributes.tokenType,\n null,\n fontStyle,\n foreground,\n background\n );\n }\n pushAttributed(scopePath, grammar) {\n if (scopePath === null) {\n return this;\n }\n if (scopePath.indexOf(\" \") === -1) {\n return _AttributedScopeStack._pushAttributed(this, scopePath, grammar);\n }\n const scopes = scopePath.split(/ /g);\n let result = this;\n for (const scope of scopes) {\n result = _AttributedScopeStack._pushAttributed(result, scope, grammar);\n }\n return result;\n }\n static _pushAttributed(target, scopeName, grammar) {\n const rawMetadata = grammar.getMetadataForScope(scopeName);\n const newPath = target.scopePath.push(scopeName);\n const scopeThemeMatchResult = grammar.themeProvider.themeMatch(newPath);\n const metadata = _AttributedScopeStack.mergeAttributes(\n target.tokenAttributes,\n rawMetadata,\n scopeThemeMatchResult\n );\n return new _AttributedScopeStack(target, newPath, metadata);\n }\n getScopeNames() {\n return this.scopePath.getSegments();\n }\n getExtensionIfDefined(base) {\n const result = [];\n let self = this;\n while (self && self !== base) {\n result.push({\n encodedTokenAttributes: self.tokenAttributes,\n scopeNames: self.scopePath.getExtensionIfDefined(self.parent?.scopePath ?? null)\n });\n self = self.parent;\n }\n return self === base ? result.reverse() : void 0;\n }\n};\nvar StateStackImpl = class _StateStackImpl {\n /**\n * Invariant:\n * ```\n * if (contentNameScopesList !== nameScopesList && contentNameScopesList?.parent !== nameScopesList) {\n * \tthrow new Error();\n * }\n * if (this.parent && !nameScopesList.extends(this.parent.contentNameScopesList)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n this.parent = parent;\n this.ruleId = ruleId;\n this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n this.endRule = endRule;\n this.nameScopesList = nameScopesList;\n this.contentNameScopesList = contentNameScopesList;\n this.depth = this.parent ? this.parent.depth + 1 : 1;\n this._enterPos = enterPos;\n this._anchorPos = anchorPos;\n }\n _stackElementBrand = void 0;\n // TODO remove me\n static NULL = new _StateStackImpl(\n null,\n 0,\n 0,\n 0,\n false,\n null,\n null,\n null\n );\n /**\n * The position on the current line where this state was pushed.\n * This is relevant only while tokenizing a line, to detect endless loops.\n * Its value is meaningless across lines.\n */\n _enterPos;\n /**\n * The captured anchor position when this stack element was pushed.\n * This is relevant only while tokenizing a line, to restore the anchor position when popping.\n * Its value is meaningless across lines.\n */\n _anchorPos;\n /**\n * The depth of the stack.\n */\n depth;\n equals(other) {\n if (other === null) {\n return false;\n }\n return _StateStackImpl._equals(this, other);\n }\n static _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!this._structuralEquals(a, b)) {\n return false;\n }\n return AttributedScopeStack.equals(a.contentNameScopesList, b.contentNameScopesList);\n }\n /**\n * A structural equals check. Does not take into account `scopes`.\n */\n static _structuralEquals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n clone() {\n return this;\n }\n static _reset(el) {\n while (el) {\n el._enterPos = -1;\n el._anchorPos = -1;\n el = el.parent;\n }\n }\n reset() {\n _StateStackImpl._reset(this);\n }\n pop() {\n return this.parent;\n }\n safePop() {\n if (this.parent) {\n return this.parent;\n }\n return this;\n }\n push(ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n return new _StateStackImpl(\n this,\n ruleId,\n enterPos,\n anchorPos,\n beginRuleCapturedEOL,\n endRule,\n nameScopesList,\n contentNameScopesList\n );\n }\n getEnterPos() {\n return this._enterPos;\n }\n getAnchorPos() {\n return this._anchorPos;\n }\n getRule(grammar) {\n return grammar.getRule(this.ruleId);\n }\n toString() {\n const r = [];\n this._writeString(r, 0);\n return \"[\" + r.join(\",\") + \"]\";\n }\n _writeString(res, outIndex) {\n if (this.parent) {\n outIndex = this.parent._writeString(res, outIndex);\n }\n res[outIndex++] = `(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`;\n return outIndex;\n }\n withContentNameScopesList(contentNameScopeStack) {\n if (this.contentNameScopesList === contentNameScopeStack) {\n return this;\n }\n return this.parent.push(\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n this.endRule,\n this.nameScopesList,\n contentNameScopeStack\n );\n }\n withEndRule(endRule) {\n if (this.endRule === endRule) {\n return this;\n }\n return new _StateStackImpl(\n this.parent,\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n endRule,\n this.nameScopesList,\n this.contentNameScopesList\n );\n }\n // Used to warn of endless loops\n hasSameRuleAs(other) {\n let el = this;\n while (el && el._enterPos === other._enterPos) {\n if (el.ruleId === other.ruleId) {\n return true;\n }\n el = el.parent;\n }\n return false;\n }\n toStateStackFrame() {\n return {\n ruleId: ruleIdToNumber(this.ruleId),\n beginRuleCapturedEOL: this.beginRuleCapturedEOL,\n endRule: this.endRule,\n nameScopesList: this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList ?? null) ?? [],\n contentNameScopesList: this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList) ?? []\n };\n }\n static pushFrame(self, frame) {\n const namesScopeList = AttributedScopeStack.fromExtension(self?.nameScopesList ?? null, frame.nameScopesList);\n return new _StateStackImpl(\n self,\n ruleIdFromNumber(frame.ruleId),\n frame.enterPos ?? -1,\n frame.anchorPos ?? -1,\n frame.beginRuleCapturedEOL,\n frame.endRule,\n namesScopeList,\n AttributedScopeStack.fromExtension(namesScopeList, frame.contentNameScopesList)\n );\n }\n};\nvar BalancedBracketSelectors = class {\n balancedBracketScopes;\n unbalancedBracketScopes;\n allowAny = false;\n constructor(balancedBracketScopes, unbalancedBracketScopes) {\n this.balancedBracketScopes = balancedBracketScopes.flatMap(\n (selector) => {\n if (selector === \"*\") {\n this.allowAny = true;\n return [];\n }\n return createMatchers(selector, nameMatcher).map((m) => m.matcher);\n }\n );\n this.unbalancedBracketScopes = unbalancedBracketScopes.flatMap(\n (selector) => createMatchers(selector, nameMatcher).map((m) => m.matcher)\n );\n }\n get matchesAlways() {\n return this.allowAny && this.unbalancedBracketScopes.length === 0;\n }\n get matchesNever() {\n return this.balancedBracketScopes.length === 0 && !this.allowAny;\n }\n match(scopes) {\n for (const excluder of this.unbalancedBracketScopes) {\n if (excluder(scopes)) {\n return false;\n }\n }\n for (const includer of this.balancedBracketScopes) {\n if (includer(scopes)) {\n return true;\n }\n }\n return this.allowAny;\n }\n};\nvar LineTokens = class {\n constructor(emitBinaryTokens, lineText, tokenTypeOverrides, balancedBracketSelectors) {\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._emitBinaryTokens = emitBinaryTokens;\n this._tokenTypeOverrides = tokenTypeOverrides;\n if (false) {\n this._lineText = lineText;\n } else {\n this._lineText = null;\n }\n this._tokens = [];\n this._binaryTokens = [];\n this._lastTokenEndIndex = 0;\n }\n _emitBinaryTokens;\n /**\n * defined only if `false`.\n */\n _lineText;\n /**\n * used only if `_emitBinaryTokens` is false.\n */\n _tokens;\n /**\n * used only if `_emitBinaryTokens` is true.\n */\n _binaryTokens;\n _lastTokenEndIndex;\n _tokenTypeOverrides;\n produce(stack, endIndex) {\n this.produceFromScopes(stack.contentNameScopesList, endIndex);\n }\n produceFromScopes(scopesList, endIndex) {\n if (this._lastTokenEndIndex >= endIndex) {\n return;\n }\n if (this._emitBinaryTokens) {\n let metadata = scopesList?.tokenAttributes ?? 0;\n let containsBalancedBrackets = false;\n if (this.balancedBracketSelectors?.matchesAlways) {\n containsBalancedBrackets = true;\n }\n if (this._tokenTypeOverrides.length > 0 || this.balancedBracketSelectors && !this.balancedBracketSelectors.matchesAlways && !this.balancedBracketSelectors.matchesNever) {\n const scopes2 = scopesList?.getScopeNames() ?? [];\n for (const tokenType of this._tokenTypeOverrides) {\n if (tokenType.matcher(scopes2)) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n toOptionalTokenType(tokenType.type),\n null,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n }\n if (this.balancedBracketSelectors) {\n containsBalancedBrackets = this.balancedBracketSelectors.match(scopes2);\n }\n }\n if (containsBalancedBrackets) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n 8 /* NotSet */,\n containsBalancedBrackets,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n this._lastTokenEndIndex = endIndex;\n return;\n }\n this._binaryTokens.push(this._lastTokenEndIndex);\n this._binaryTokens.push(metadata);\n this._lastTokenEndIndex = endIndex;\n return;\n }\n const scopes = scopesList?.getScopeNames() ?? [];\n this._tokens.push({\n startIndex: this._lastTokenEndIndex,\n endIndex,\n // value: lineText.substring(lastTokenEndIndex, endIndex),\n scopes\n });\n this._lastTokenEndIndex = endIndex;\n }\n getResult(stack, lineLength) {\n if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n this._tokens.pop();\n }\n if (this._tokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._tokens[this._tokens.length - 1].startIndex = 0;\n }\n return this._tokens;\n }\n getBinaryResult(stack, lineLength) {\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n this._binaryTokens.pop();\n this._binaryTokens.pop();\n }\n if (this._binaryTokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._binaryTokens[this._binaryTokens.length - 2] = 0;\n }\n const result = new Uint32Array(this._binaryTokens.length);\n for (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n result[i] = this._binaryTokens[i];\n }\n return result;\n }\n};\n\n// src/registry.ts\nvar SyncRegistry = class {\n constructor(theme, _onigLib) {\n this._onigLib = _onigLib;\n this._theme = theme;\n }\n _grammars = /* @__PURE__ */ new Map();\n _rawGrammars = /* @__PURE__ */ new Map();\n _injectionGrammars = /* @__PURE__ */ new Map();\n _theme;\n dispose() {\n for (const grammar of this._grammars.values()) {\n grammar.dispose();\n }\n }\n setTheme(theme) {\n this._theme = theme;\n }\n getColorMap() {\n return this._theme.getColorMap();\n }\n /**\n * Add `grammar` to registry and return a list of referenced scope names\n */\n addGrammar(grammar, injectionScopeNames) {\n this._rawGrammars.set(grammar.scopeName, grammar);\n if (injectionScopeNames) {\n this._injectionGrammars.set(grammar.scopeName, injectionScopeNames);\n }\n }\n /**\n * Lookup a raw grammar.\n */\n lookup(scopeName) {\n return this._rawGrammars.get(scopeName);\n }\n /**\n * Returns the injections for the given grammar\n */\n injections(targetScope) {\n return this._injectionGrammars.get(targetScope);\n }\n /**\n * Get the default theme settings\n */\n getDefaults() {\n return this._theme.getDefaults();\n }\n /**\n * Match a scope in the theme.\n */\n themeMatch(scopePath) {\n return this._theme.match(scopePath);\n }\n /**\n * Lookup a grammar.\n */\n grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n if (!this._grammars.has(scopeName)) {\n let rawGrammar = this._rawGrammars.get(scopeName);\n if (!rawGrammar) {\n return null;\n }\n this._grammars.set(scopeName, createGrammar(\n scopeName,\n rawGrammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n this,\n this._onigLib\n ));\n }\n return this._grammars.get(scopeName);\n }\n};\n\n// src/index.ts\nvar Registry = class {\n _options;\n _syncRegistry;\n _ensureGrammarCache;\n constructor(options) {\n this._options = options;\n this._syncRegistry = new SyncRegistry(\n Theme.createFromRawTheme(options.theme, options.colorMap),\n options.onigLib\n );\n this._ensureGrammarCache = /* @__PURE__ */ new Map();\n }\n dispose() {\n this._syncRegistry.dispose();\n }\n /**\n * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n */\n setTheme(theme, colorMap) {\n this._syncRegistry.setTheme(Theme.createFromRawTheme(theme, colorMap));\n }\n /**\n * Returns a lookup array for color ids.\n */\n getColorMap() {\n return this._syncRegistry.getColorMap();\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithEmbeddedLanguages(initialScopeName, initialLanguage, embeddedLanguages) {\n return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithConfiguration(initialScopeName, initialLanguage, configuration) {\n return this._loadGrammar(\n initialScopeName,\n initialLanguage,\n configuration.embeddedLanguages,\n configuration.tokenTypes,\n new BalancedBracketSelectors(\n configuration.balancedBracketSelectors || [],\n configuration.unbalancedBracketSelectors || []\n )\n );\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n */\n loadGrammar(initialScopeName) {\n return this._loadGrammar(initialScopeName, 0, null, null, null);\n }\n _loadGrammar(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n const dependencyProcessor = new ScopeDependencyProcessor(this._syncRegistry, initialScopeName);\n while (dependencyProcessor.Q.length > 0) {\n dependencyProcessor.Q.map((request) => this._loadSingleGrammar(request.scopeName));\n dependencyProcessor.processQueue();\n }\n return this._grammarForScopeName(\n initialScopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n _loadSingleGrammar(scopeName) {\n if (!this._ensureGrammarCache.has(scopeName)) {\n this._doLoadSingleGrammar(scopeName);\n this._ensureGrammarCache.set(scopeName, true);\n }\n }\n _doLoadSingleGrammar(scopeName) {\n const grammar = this._options.loadGrammar(scopeName);\n if (grammar) {\n const injections = typeof this._options.getInjections === \"function\" ? this._options.getInjections(scopeName) : void 0;\n this._syncRegistry.addGrammar(grammar, injections);\n }\n }\n /**\n * Adds a rawGrammar.\n */\n addGrammar(rawGrammar, injections = [], initialLanguage = 0, embeddedLanguages = null) {\n this._syncRegistry.addGrammar(rawGrammar, injections);\n return this._grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages);\n }\n /**\n * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n */\n _grammarForScopeName(scopeName, initialLanguage = 0, embeddedLanguages = null, tokenTypes = null, balancedBracketSelectors = null) {\n return this._syncRegistry.grammarForScopeName(\n scopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n};\nvar INITIAL = StateStackImpl.NULL;\nexport {\n EncodedTokenMetadata,\n FindOption,\n FontStyle,\n INITIAL,\n Registry,\n Theme,\n disposeOnigString\n};\n", "import { ShikiError } from \"@shikijs/types\";\nimport { EncodedTokenMetadata, INITIAL, Registry as Registry$1, Theme } from \"@shikijs/vscode-textmate\";\n\nexport * from \"@shikijs/types\"\n\n//#region src/utils/colors.ts\nfunction resolveColorReplacements(theme, options) {\n\tconst replacements = typeof theme === \"string\" ? {} : { ...theme.colorReplacements };\n\tconst themeName = typeof theme === \"string\" ? theme : theme.name;\n\tfor (const [key, value] of Object.entries(options?.colorReplacements || {})) if (typeof value === \"string\") replacements[key] = value;\n\telse if (key === themeName) Object.assign(replacements, value);\n\treturn replacements;\n}\nfunction applyColorReplacements(color, replacements) {\n\tif (!color) return color;\n\treturn replacements?.[color?.toLowerCase()] || color;\n}\n\n//#endregion\n//#region src/utils/general.ts\nfunction toArray(x) {\n\treturn Array.isArray(x) ? x : [x];\n}\n/**\n* Normalize a getter to a promise.\n*/\nasync function normalizeGetter(p) {\n\treturn Promise.resolve(typeof p === \"function\" ? p() : p).then((r) => r.default || r);\n}\n/**\n* Check if the language is plaintext that is ignored by Shiki.\n*\n* Hard-coded plain text languages: `plaintext`, `txt`, `text`, `plain`.\n*/\nfunction isPlainLang(lang) {\n\treturn !lang || [\n\t\t\"plaintext\",\n\t\t\"txt\",\n\t\t\"text\",\n\t\t\"plain\"\n\t].includes(lang);\n}\n/**\n* Check if the language is specially handled or bypassed by Shiki.\n*\n* Hard-coded languages: `ansi` and plaintexts like `plaintext`, `txt`, `text`, `plain`.\n*/\nfunction isSpecialLang(lang) {\n\treturn lang === \"ansi\" || isPlainLang(lang);\n}\n/**\n* Check if the theme is specially handled or bypassed by Shiki.\n*\n* Hard-coded themes: `none`.\n*/\nfunction isNoneTheme(theme) {\n\treturn theme === \"none\";\n}\n/**\n* Check if the theme is specially handled or bypassed by Shiki.\n*\n* Hard-coded themes: `none`.\n*/\nfunction isSpecialTheme(theme) {\n\treturn isNoneTheme(theme);\n}\n\n//#endregion\n//#region src/utils/strings.ts\n/**\n* Split a string into lines, each line preserves the line ending.\n*\n* @param code - The code string to split into lines\n* @param preserveEnding - Whether to preserve line endings in the result\n* @returns Array of tuples containing [line content, offset index]\n*\n* @example\n* ```ts\n* splitLines('hello\\nworld', false)\n* // => [['hello', 0], ['world', 6]]\n*\n* splitLines('hello\\nworld', true)\n* // => [['hello\\n', 0], ['world', 6]]\n* ```\n*/\nfunction splitLines(code, preserveEnding = false) {\n\tif (code.length === 0) return [[\"\", 0]];\n\tconst parts = code.split(/(\\r?\\n)/g);\n\tlet index = 0;\n\tconst lines = [];\n\tfor (let i = 0; i < parts.length; i += 2) {\n\t\tconst line = preserveEnding ? parts[i] + (parts[i + 1] || \"\") : parts[i];\n\t\tlines.push([line, index]);\n\t\tindex += parts[i].length;\n\t\tindex += parts[i + 1]?.length || 0;\n\t}\n\treturn lines;\n}\n\n//#endregion\n//#region src/textmate/normalize-theme.ts\n/**\n* https://github.com/microsoft/vscode/blob/f7f05dee53fb33fe023db2e06e30a89d3094488f/src/vs/platform/theme/common/colorRegistry.ts#L258-L268\n*/\nconst VSCODE_FALLBACK_EDITOR_FG = {\n\tlight: \"#333333\",\n\tdark: \"#bbbbbb\"\n};\nconst VSCODE_FALLBACK_EDITOR_BG = {\n\tlight: \"#fffffe\",\n\tdark: \"#1e1e1e\"\n};\nconst RESOLVED_KEY = \"__shiki_resolved\";\n/**\n* Normalize a textmate theme to shiki theme\n*/\nfunction normalizeTheme(rawTheme) {\n\tif (rawTheme?.[RESOLVED_KEY]) return rawTheme;\n\tconst theme = { ...rawTheme };\n\tif (theme.tokenColors && !theme.settings) {\n\t\ttheme.settings = theme.tokenColors;\n\t\tdelete theme.tokenColors;\n\t}\n\ttheme.type ||= \"dark\";\n\ttheme.colorReplacements = { ...theme.colorReplacements };\n\ttheme.settings ||= [];\n\tlet { bg, fg } = theme;\n\tif (!bg || !fg) {\n\t\t/**\n\t\t* First try:\n\t\t* Theme might contain a global `tokenColor` without `name` or `scope`\n\t\t* Used as default value for foreground/background\n\t\t*/\n\t\tconst globalSetting = theme.settings ? theme.settings.find((s) => !s.name && !s.scope) : void 0;\n\t\tif (globalSetting?.settings?.foreground) fg = globalSetting.settings.foreground;\n\t\tif (globalSetting?.settings?.background) bg = globalSetting.settings.background;\n\t\t/**\n\t\t* Second try:\n\t\t* If there's no global `tokenColor` without `name` or `scope`\n\t\t* Use `editor.foreground` and `editor.background`\n\t\t*/\n\t\tif (!fg && theme?.colors?.[\"editor.foreground\"]) fg = theme.colors[\"editor.foreground\"];\n\t\tif (!bg && theme?.colors?.[\"editor.background\"]) bg = theme.colors[\"editor.background\"];\n\t\t/**\n\t\t* Last try:\n\t\t* If there's no fg/bg color specified in theme, use default\n\t\t*/\n\t\tif (!fg) fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n\t\tif (!bg) bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n\t\ttheme.fg = fg;\n\t\ttheme.bg = bg;\n\t}\n\tif (!(theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope)) theme.settings.unshift({ settings: {\n\t\tforeground: theme.fg,\n\t\tbackground: theme.bg\n\t} });\n\tlet replacementCount = 0;\n\tconst replacementMap = /* @__PURE__ */ new Map();\n\tfunction getReplacementColor(value) {\n\t\tif (replacementMap.has(value)) return replacementMap.get(value);\n\t\treplacementCount += 1;\n\t\tconst hex = `#${replacementCount.toString(16).padStart(8, \"0\").toLowerCase()}`;\n\t\tif (theme.colorReplacements?.[`#${hex}`]) return getReplacementColor(value);\n\t\treplacementMap.set(value, hex);\n\t\treturn hex;\n\t}\n\ttheme.settings = theme.settings.map((setting) => {\n\t\tconst replaceFg = setting.settings?.foreground && !setting.settings.foreground.startsWith(\"#\");\n\t\tconst replaceBg = setting.settings?.background && !setting.settings.background.startsWith(\"#\");\n\t\tif (!replaceFg && !replaceBg) return setting;\n\t\tconst clone = {\n\t\t\t...setting,\n\t\t\tsettings: { ...setting.settings }\n\t\t};\n\t\tif (replaceFg) {\n\t\t\tconst replacement = getReplacementColor(setting.settings.foreground);\n\t\t\ttheme.colorReplacements[replacement] = setting.settings.foreground;\n\t\t\tclone.settings.foreground = replacement;\n\t\t}\n\t\tif (replaceBg) {\n\t\t\tconst replacement = getReplacementColor(setting.settings.background);\n\t\t\ttheme.colorReplacements[replacement] = setting.settings.background;\n\t\t\tclone.settings.background = replacement;\n\t\t}\n\t\treturn clone;\n\t});\n\tfor (const key of Object.keys(theme.colors || {})) if (key === \"editor.foreground\" || key === \"editor.background\" || key.startsWith(\"terminal.ansi\")) {\n\t\tif (!theme.colors[key]?.startsWith(\"#\")) {\n\t\t\tconst replacement = getReplacementColor(theme.colors[key]);\n\t\t\ttheme.colorReplacements[replacement] = theme.colors[key];\n\t\t\ttheme.colors[key] = replacement;\n\t\t}\n\t}\n\tObject.defineProperty(theme, RESOLVED_KEY, {\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: true\n\t});\n\treturn theme;\n}\n\n//#endregion\n//#region src/textmate/getters-resolve.ts\n/**\n* Resolve\n*/\nasync function resolveLangs(langs) {\n\treturn Array.from(new Set((await Promise.all(langs.filter((l) => !isSpecialLang(l)).map(async (lang) => await normalizeGetter(lang).then((r) => Array.isArray(r) ? r : [r])))).flat()));\n}\nasync function resolveThemes(themes) {\n\treturn (await Promise.all(themes.map(async (theme) => isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))))).filter((i) => !!i);\n}\n\n//#endregion\n//#region src/utils/alias.ts\nfunction resolveLangAlias(name, alias) {\n\tif (!alias) return name;\n\tif (alias[name]) {\n\t\tconst resolved = new Set([name]);\n\t\twhile (alias[name]) {\n\t\t\tname = alias[name];\n\t\t\tif (resolved.has(name)) throw new ShikiError(`Circular alias \\`${Array.from(resolved).join(\" -> \")} -> ${name}\\``);\n\t\t\tresolved.add(name);\n\t\t}\n\t}\n\treturn name;\n}\n\n//#endregion\n//#region src/textmate/registry.ts\nvar Registry = class extends Registry$1 {\n\t_resolvedThemes = /* @__PURE__ */ new Map();\n\t_resolvedGrammars = /* @__PURE__ */ new Map();\n\t_langMap = /* @__PURE__ */ new Map();\n\t_langGraph = /* @__PURE__ */ new Map();\n\t_textmateThemeCache = /* @__PURE__ */ new WeakMap();\n\t_loadedThemesCache = null;\n\t_loadedLanguagesCache = null;\n\tconstructor(_resolver, _themes, _langs, _alias = {}) {\n\t\tsuper(_resolver);\n\t\tthis._resolver = _resolver;\n\t\tthis._themes = _themes;\n\t\tthis._langs = _langs;\n\t\tthis._alias = _alias;\n\t\tthis._themes.map((t) => this.loadTheme(t));\n\t\tthis.loadLanguages(this._langs);\n\t}\n\tgetTheme(theme) {\n\t\tif (typeof theme === \"string\") return this._resolvedThemes.get(theme);\n\t\telse return this.loadTheme(theme);\n\t}\n\tloadTheme(theme) {\n\t\tconst _theme = normalizeTheme(theme);\n\t\tif (_theme.name) {\n\t\t\tthis._resolvedThemes.set(_theme.name, _theme);\n\t\t\tthis._loadedThemesCache = null;\n\t\t}\n\t\treturn _theme;\n\t}\n\tgetLoadedThemes() {\n\t\tif (!this._loadedThemesCache) this._loadedThemesCache = [...this._resolvedThemes.keys()];\n\t\treturn this._loadedThemesCache;\n\t}\n\tsetTheme(theme) {\n\t\tlet textmateTheme = this._textmateThemeCache.get(theme);\n\t\tif (!textmateTheme) {\n\t\t\ttextmateTheme = Theme.createFromRawTheme(theme);\n\t\t\tthis._textmateThemeCache.set(theme, textmateTheme);\n\t\t}\n\t\tthis._syncRegistry.setTheme(textmateTheme);\n\t}\n\tgetGrammar(name) {\n\t\tname = resolveLangAlias(name, this._alias);\n\t\treturn this._resolvedGrammars.get(name);\n\t}\n\tloadLanguage(lang) {\n\t\tif (this.getGrammar(lang.name)) return;\n\t\tconst embeddedLazilyBy = new Set([...this._langMap.values()].filter((i) => i.embeddedLangsLazy?.includes(lang.name)));\n\t\tthis._resolver.addLanguage(lang);\n\t\tconst grammarConfig = {\n\t\t\tbalancedBracketSelectors: lang.balancedBracketSelectors || [\"*\"],\n\t\t\tunbalancedBracketSelectors: lang.unbalancedBracketSelectors || []\n\t\t};\n\t\tthis._syncRegistry._rawGrammars.set(lang.scopeName, lang);\n\t\tconst g = this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);\n\t\tg.name = lang.name;\n\t\tthis._resolvedGrammars.set(lang.name, g);\n\t\tif (lang.aliases) lang.aliases.forEach((alias) => {\n\t\t\tthis._alias[alias] = lang.name;\n\t\t});\n\t\tthis._loadedLanguagesCache = null;\n\t\tif (embeddedLazilyBy.size) for (const e of embeddedLazilyBy) {\n\t\t\tthis._resolvedGrammars.delete(e.name);\n\t\t\tthis._loadedLanguagesCache = null;\n\t\t\tthis._syncRegistry?._injectionGrammars?.delete(e.scopeName);\n\t\t\tthis._syncRegistry?._grammars?.delete(e.scopeName);\n\t\t\tthis.loadLanguage(this._langMap.get(e.name));\n\t\t}\n\t}\n\tdispose() {\n\t\tsuper.dispose();\n\t\tthis._resolvedThemes.clear();\n\t\tthis._resolvedGrammars.clear();\n\t\tthis._langMap.clear();\n\t\tthis._langGraph.clear();\n\t\tthis._loadedThemesCache = null;\n\t}\n\tloadLanguages(langs) {\n\t\tfor (const lang of langs) this.resolveEmbeddedLanguages(lang);\n\t\tconst langsGraphArray = Array.from(this._langGraph.entries());\n\t\tconst missingLangs = langsGraphArray.filter(([_, lang]) => !lang);\n\t\tif (missingLangs.length) {\n\t\t\tconst dependents = langsGraphArray.filter(([_, lang]) => {\n\t\t\t\tif (!lang) return false;\n\t\t\t\treturn (lang.embeddedLanguages || lang.embeddedLangs)?.some((l) => missingLangs.map(([name]) => name).includes(l));\n\t\t\t}).filter((lang) => !missingLangs.includes(lang));\n\t\t\tthrow new ShikiError(`Missing languages ${missingLangs.map(([name]) => `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) => `\\`${name}\\``).join(\", \")}`);\n\t\t}\n\t\tfor (const [_, lang] of langsGraphArray) this._resolver.addLanguage(lang);\n\t\tfor (const [_, lang] of langsGraphArray) this.loadLanguage(lang);\n\t}\n\tgetLoadedLanguages() {\n\t\tif (!this._loadedLanguagesCache) this._loadedLanguagesCache = [...new Set([...this._resolvedGrammars.keys(), ...Object.keys(this._alias)])];\n\t\treturn this._loadedLanguagesCache;\n\t}\n\tresolveEmbeddedLanguages(lang) {\n\t\tthis._langMap.set(lang.name, lang);\n\t\tthis._langGraph.set(lang.name, lang);\n\t\tconst embedded = lang.embeddedLanguages ?? lang.embeddedLangs;\n\t\tif (embedded) for (const embeddedLang of embedded) this._langGraph.set(embeddedLang, this._langMap.get(embeddedLang));\n\t}\n};\n\n//#endregion\n//#region src/textmate/resolver.ts\nvar Resolver = class {\n\t_langs = /* @__PURE__ */ new Map();\n\t_scopeToLang = /* @__PURE__ */ new Map();\n\t_injections = /* @__PURE__ */ new Map();\n\t_onigLib;\n\tconstructor(engine, langs) {\n\t\tthis._onigLib = {\n\t\t\tcreateOnigScanner: (patterns) => engine.createScanner(patterns),\n\t\t\tcreateOnigString: (s) => engine.createString(s)\n\t\t};\n\t\tlangs.forEach((i) => this.addLanguage(i));\n\t}\n\tget onigLib() {\n\t\treturn this._onigLib;\n\t}\n\tgetLangRegistration(langIdOrAlias) {\n\t\treturn this._langs.get(langIdOrAlias);\n\t}\n\tloadGrammar(scopeName) {\n\t\treturn this._scopeToLang.get(scopeName);\n\t}\n\taddLanguage(l) {\n\t\tthis._langs.set(l.name, l);\n\t\tif (l.aliases) l.aliases.forEach((a) => {\n\t\t\tthis._langs.set(a, l);\n\t\t});\n\t\tthis._scopeToLang.set(l.scopeName, l);\n\t\tif (l.injectTo) l.injectTo.forEach((i) => {\n\t\t\tif (!this._injections.get(i)) this._injections.set(i, []);\n\t\t\tthis._injections.get(i).push(l.scopeName);\n\t\t});\n\t}\n\tgetInjections(scopeName) {\n\t\tconst scopeParts = scopeName.split(\".\");\n\t\tlet injections = [];\n\t\tfor (let i = 1; i <= scopeParts.length; i++) {\n\t\t\tconst subScopeName = scopeParts.slice(0, i).join(\".\");\n\t\t\tinjections = [...injections, ...this._injections.get(subScopeName) || []];\n\t\t}\n\t\treturn injections;\n\t}\n};\n\n//#endregion\n//#region src/constructors/primitive.ts\nlet instancesCount = 0;\n/**\n* Get the minimal shiki primitive instance.\n*\n* Requires to provide the engine and all themes and languages upfront.\n*/\nfunction createShikiPrimitive(options) {\n\tinstancesCount += 1;\n\tif (options.warnings !== false && instancesCount >= 10 && instancesCount % 10 === 0) console.warn(`[Shiki] ${instancesCount} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \\`highlighter.dispose()\\` to release unused instances.`);\n\tlet isDisposed = false;\n\tif (!options.engine) throw new ShikiError(\"`engine` option is required for synchronous mode\");\n\tconst langs = (options.langs || []).flat(1);\n\tconst themes = (options.themes || []).flat(1).map(normalizeTheme);\n\tconst _registry = new Registry(new Resolver(options.engine, langs), themes, langs, options.langAlias);\n\tlet _lastTheme;\n\tfunction resolveLangAlias$1(name) {\n\t\treturn resolveLangAlias(name, options.langAlias);\n\t}\n\tfunction getLanguage(name) {\n\t\tensureNotDisposed();\n\t\tconst _lang = _registry.getGrammar(typeof name === \"string\" ? name : name.name);\n\t\tif (!_lang) throw new ShikiError(`Language \\`${name}\\` not found, you may need to load it first`);\n\t\treturn _lang;\n\t}\n\tfunction getTheme(name) {\n\t\tif (name === \"none\") return {\n\t\t\tbg: \"\",\n\t\t\tfg: \"\",\n\t\t\tname: \"none\",\n\t\t\tsettings: [],\n\t\t\ttype: \"dark\"\n\t\t};\n\t\tensureNotDisposed();\n\t\tconst _theme = _registry.getTheme(name);\n\t\tif (!_theme) throw new ShikiError(`Theme \\`${name}\\` not found, you may need to load it first`);\n\t\treturn _theme;\n\t}\n\tfunction setTheme(name) {\n\t\tensureNotDisposed();\n\t\tconst theme = getTheme(name);\n\t\tif (_lastTheme !== name) {\n\t\t\t_registry.setTheme(theme);\n\t\t\t_lastTheme = name;\n\t\t}\n\t\treturn {\n\t\t\ttheme,\n\t\t\tcolorMap: _registry.getColorMap()\n\t\t};\n\t}\n\tfunction getLoadedThemes() {\n\t\tensureNotDisposed();\n\t\treturn _registry.getLoadedThemes();\n\t}\n\tfunction getLoadedLanguages() {\n\t\tensureNotDisposed();\n\t\treturn _registry.getLoadedLanguages();\n\t}\n\tfunction loadLanguageSync(...langs) {\n\t\tensureNotDisposed();\n\t\t_registry.loadLanguages(langs.flat(1));\n\t}\n\tasync function loadLanguage(...langs) {\n\t\treturn loadLanguageSync(await resolveLangs(langs));\n\t}\n\tfunction loadThemeSync(...themes) {\n\t\tensureNotDisposed();\n\t\tfor (const theme of themes.flat(1)) _registry.loadTheme(theme);\n\t}\n\tasync function loadTheme(...themes) {\n\t\tensureNotDisposed();\n\t\treturn loadThemeSync(await resolveThemes(themes));\n\t}\n\tfunction ensureNotDisposed() {\n\t\tif (isDisposed) throw new ShikiError(\"Shiki instance has been disposed\");\n\t}\n\tfunction dispose() {\n\t\tif (isDisposed) return;\n\t\tisDisposed = true;\n\t\t_registry.dispose();\n\t\tinstancesCount -= 1;\n\t}\n\treturn {\n\t\tsetTheme,\n\t\tgetTheme,\n\t\tgetLanguage,\n\t\tgetLoadedThemes,\n\t\tgetLoadedLanguages,\n\t\tresolveLangAlias: resolveLangAlias$1,\n\t\tloadLanguage,\n\t\tloadLanguageSync,\n\t\tloadTheme,\n\t\tloadThemeSync,\n\t\tdispose,\n\t\t[Symbol.dispose]: dispose\n\t};\n}\n/**\n* @deprecated Use `createShikiPrimitive` instead.\n*/\nconst createShikiInternalSync = createShikiPrimitive;\n\n//#endregion\n//#region src/constructors/async.ts\n/**\n* Get the minimal shiki primitive instance.\n*/\nasync function createShikiPrimitiveAsync(options) {\n\tif (!options.engine) console.warn(\"`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.\");\n\tconst [themes, langs, engine] = await Promise.all([\n\t\tresolveThemes(options.themes || []),\n\t\tresolveLangs(options.langs || []),\n\t\toptions.engine\n\t]);\n\treturn createShikiPrimitive({\n\t\t...options,\n\t\tthemes,\n\t\tlangs,\n\t\tengine\n\t});\n}\n/**\n* @deprecated Use `createShikiPrimitiveAsync` instead.\n*/\nconst createShikiInternal = createShikiPrimitiveAsync;\n\n//#endregion\n//#region src/textmate/grammar-state.ts\nconst _grammarStateMap = /* @__PURE__ */ new WeakMap();\nfunction setLastGrammarStateToMap(keys, state) {\n\t_grammarStateMap.set(keys, state);\n}\nfunction getLastGrammarStateFromMap(keys) {\n\treturn _grammarStateMap.get(keys);\n}\n/**\n* GrammarState is a special reference object that holds the state of a grammar.\n*\n* It's used to highlight code snippets that are part of the target language.\n*/\nvar GrammarState = class GrammarState {\n\t/**\n\t* Theme to Stack mapping\n\t*/\n\t_stacks = {};\n\tlang;\n\tget themes() {\n\t\treturn Object.keys(this._stacks);\n\t}\n\tget theme() {\n\t\treturn this.themes[0];\n\t}\n\tget _stack() {\n\t\treturn this._stacks[this.theme];\n\t}\n\t/**\n\t* Static method to create a initial grammar state.\n\t*/\n\tstatic initial(lang, themes) {\n\t\treturn new GrammarState(Object.fromEntries(toArray(themes).map((theme) => [theme, INITIAL])), lang);\n\t}\n\tconstructor(...args) {\n\t\tif (args.length === 2) {\n\t\t\tconst [stacksMap, lang] = args;\n\t\t\tthis.lang = lang;\n\t\t\tthis._stacks = stacksMap;\n\t\t} else {\n\t\t\tconst [stack, lang, theme] = args;\n\t\t\tthis.lang = lang;\n\t\t\tthis._stacks = { [theme]: stack };\n\t\t}\n\t}\n\t/**\n\t* Get the internal stack object.\n\t* @internal\n\t*/\n\tgetInternalStack(theme = this.theme) {\n\t\treturn this._stacks[theme];\n\t}\n\tgetScopes(theme = this.theme) {\n\t\treturn getScopes(this._stacks[theme]);\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tlang: this.lang,\n\t\t\ttheme: this.theme,\n\t\t\tthemes: this.themes,\n\t\t\tscopes: this.getScopes()\n\t\t};\n\t}\n};\nfunction getScopes(stack) {\n\tconst scopes = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tfunction pushScope(stack) {\n\t\tif (visited.has(stack)) return;\n\t\tvisited.add(stack);\n\t\tconst name = stack?.nameScopesList?.scopeName;\n\t\tif (name) scopes.push(name);\n\t\tif (stack.parent) pushScope(stack.parent);\n\t}\n\tpushScope(stack);\n\treturn scopes;\n}\nfunction getGrammarStack(state, theme) {\n\tif (!(state instanceof GrammarState)) throw new ShikiError(\"Invalid grammar state\");\n\treturn state.getInternalStack(theme);\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-base.ts\n/**\n* Code to tokens, with a simple theme.\n*/\nfunction codeToTokensBase(primitive, code, options = {}) {\n\tconst { theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (isPlainLang(primitive.resolveLangAlias(options.lang || \"text\")) || isNoneTheme(themeName)) return splitLines(code).map((line) => [{\n\t\tcontent: line[0],\n\t\toffset: line[1]\n\t}]);\n\tconst { theme, colorMap } = primitive.setTheme(themeName);\n\tconst _grammar = primitive.getLanguage(options.lang || \"text\");\n\tif (options.grammarState) {\n\t\tif (options.grammarState.lang !== _grammar.name) throw new ShikiError(`Grammar state language \"${options.grammarState.lang}\" does not match highlight language \"${_grammar.name}\"`);\n\t\tif (!options.grammarState.themes.includes(theme.name)) throw new ShikiError(`Grammar state themes \"${options.grammarState.themes}\" do not contain highlight theme \"${theme.name}\"`);\n\t}\n\treturn tokenizeWithTheme(code, _grammar, theme, colorMap, options);\n}\nfunction getLastGrammarState(...args) {\n\tif (args.length === 2) return getLastGrammarStateFromMap(args[1]);\n\tconst [primitive, code, options = {}] = args;\n\tconst { lang = \"text\", theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (isPlainLang(lang) || isNoneTheme(themeName)) throw new ShikiError(\"Plain language does not have grammar state\");\n\tif (lang === \"ansi\") throw new ShikiError(\"ANSI language does not have grammar state\");\n\tconst { theme, colorMap } = primitive.setTheme(themeName);\n\tconst _grammar = primitive.getLanguage(lang);\n\treturn new GrammarState(_tokenizeWithTheme(code, _grammar, theme, colorMap, options).stateStack, _grammar.name, theme.name);\n}\nfunction tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n\tconst result = _tokenizeWithTheme(code, grammar, theme, colorMap, options);\n\tconst grammarState = new GrammarState(result.stateStack, grammar.name, theme.name);\n\tsetLastGrammarStateToMap(result.tokens, grammarState);\n\treturn result.tokens;\n}\nfunction _tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n\tconst colorReplacements = resolveColorReplacements(theme, options);\n\tconst { tokenizeMaxLineLength = 0, tokenizeTimeLimit = 500 } = options;\n\tconst lines = splitLines(code);\n\tlet stateStack = options.grammarState ? getGrammarStack(options.grammarState, theme.name) ?? INITIAL : options.grammarContextCode != null ? _tokenizeWithTheme(options.grammarContextCode, grammar, theme, colorMap, {\n\t\t...options,\n\t\tgrammarState: void 0,\n\t\tgrammarContextCode: void 0\n\t}).stateStack : INITIAL;\n\tlet actual = [];\n\tconst final = [];\n\tfor (let i = 0, len = lines.length; i < len; i++) {\n\t\tconst [line, lineOffset] = lines[i];\n\t\tif (line === \"\") {\n\t\t\tactual = [];\n\t\t\tfinal.push([]);\n\t\t\tcontinue;\n\t\t}\n\t\tif (tokenizeMaxLineLength > 0 && line.length >= tokenizeMaxLineLength) {\n\t\t\tactual = [];\n\t\t\tfinal.push([{\n\t\t\t\tcontent: line,\n\t\t\t\toffset: lineOffset,\n\t\t\t\tcolor: \"\",\n\t\t\t\tfontStyle: 0\n\t\t\t}]);\n\t\t\tcontinue;\n\t\t}\n\t\tlet resultWithScopes;\n\t\tlet tokensWithScopes;\n\t\tlet tokensWithScopesIndex;\n\t\tif (options.includeExplanation) {\n\t\t\tresultWithScopes = grammar.tokenizeLine(line, stateStack, tokenizeTimeLimit);\n\t\t\ttokensWithScopes = resultWithScopes.tokens;\n\t\t\ttokensWithScopesIndex = 0;\n\t\t}\n\t\tconst result = grammar.tokenizeLine2(line, stateStack, tokenizeTimeLimit);\n\t\tconst tokensLength = result.tokens.length / 2;\n\t\tfor (let j = 0; j < tokensLength; j++) {\n\t\t\tconst startIndex = result.tokens[2 * j];\n\t\t\tconst nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n\t\t\tif (startIndex === nextStartIndex) continue;\n\t\t\tconst metadata = result.tokens[2 * j + 1];\n\t\t\tconst color = applyColorReplacements(colorMap[EncodedTokenMetadata.getForeground(metadata)], colorReplacements);\n\t\t\tconst fontStyle = EncodedTokenMetadata.getFontStyle(metadata);\n\t\t\tconst token = {\n\t\t\t\tcontent: line.substring(startIndex, nextStartIndex),\n\t\t\t\toffset: lineOffset + startIndex,\n\t\t\t\tcolor,\n\t\t\t\tfontStyle\n\t\t\t};\n\t\t\tif (options.includeExplanation) {\n\t\t\t\tconst themeSettingsSelectors = [];\n\t\t\t\tif (options.includeExplanation !== \"scopeName\") for (const setting of theme.settings) {\n\t\t\t\t\tlet selectors;\n\t\t\t\t\tswitch (typeof setting.scope) {\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tselectors = setting.scope.split(/,/).map((scope) => scope.trim());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tselectors = setting.scope;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: continue;\n\t\t\t\t\t}\n\t\t\t\t\tthemeSettingsSelectors.push({\n\t\t\t\t\t\tsettings: setting,\n\t\t\t\t\t\tselectors: selectors.map((selector) => selector.split(/ /))\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttoken.explanation = [];\n\t\t\t\tlet offset = 0;\n\t\t\t\twhile (startIndex + offset < nextStartIndex) {\n\t\t\t\t\tconst tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n\t\t\t\t\tconst tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);\n\t\t\t\t\toffset += tokenWithScopesText.length;\n\t\t\t\t\ttoken.explanation.push({\n\t\t\t\t\t\tcontent: tokenWithScopesText,\n\t\t\t\t\t\tscopes: options.includeExplanation === \"scopeName\" ? explainThemeScopesNameOnly(tokenWithScopes.scopes) : explainThemeScopesFull(themeSettingsSelectors, tokenWithScopes.scopes)\n\t\t\t\t\t});\n\t\t\t\t\ttokensWithScopesIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tactual.push(token);\n\t\t}\n\t\tfinal.push(actual);\n\t\tactual = [];\n\t\tstateStack = result.ruleStack;\n\t}\n\treturn {\n\t\ttokens: final,\n\t\tstateStack\n\t};\n}\nfunction explainThemeScopesNameOnly(scopes) {\n\treturn scopes.map((scope) => ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n\tconst result = [];\n\tfor (let i = 0, len = scopes.length; i < len; i++) {\n\t\tconst scope = scopes[i];\n\t\tresult[i] = {\n\t\t\tscopeName: scope,\n\t\t\tthemeMatches: explainThemeScope(themeSelectors, scope, scopes.slice(0, i))\n\t\t};\n\t}\n\treturn result;\n}\nfunction matchesOne(selector, scope) {\n\treturn selector === scope || scope.substring(0, selector.length) === selector && scope[selector.length] === \".\";\n}\nfunction matches(selectors, scope, parentScopes) {\n\tif (!matchesOne(selectors[selectors.length - 1], scope)) return false;\n\tlet selectorParentIndex = selectors.length - 2;\n\tlet parentIndex = parentScopes.length - 1;\n\twhile (selectorParentIndex >= 0 && parentIndex >= 0) {\n\t\tif (matchesOne(selectors[selectorParentIndex], parentScopes[parentIndex])) selectorParentIndex -= 1;\n\t\tparentIndex -= 1;\n\t}\n\tif (selectorParentIndex === -1) return true;\n\treturn false;\n}\nfunction explainThemeScope(themeSettingsSelectors, scope, parentScopes) {\n\tconst result = [];\n\tfor (const { selectors, settings } of themeSettingsSelectors) for (const selectorPieces of selectors) if (matches(selectorPieces, scope, parentScopes)) {\n\t\tresult.push(settings);\n\t\tbreak;\n\t}\n\treturn result;\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-themes.ts\n/**\n* Get tokens with multiple themes\n*/\nfunction codeToTokensWithThemes(primitive, code, options, codeToTokensBaseFn = codeToTokensBase) {\n\tconst themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({\n\t\tcolor: i[0],\n\t\ttheme: i[1]\n\t}));\n\tconst themedTokens = themes.map((t) => {\n\t\tconst tokens = codeToTokensBaseFn(primitive, code, {\n\t\t\t...options,\n\t\t\ttheme: t.theme\n\t\t});\n\t\treturn {\n\t\t\ttokens,\n\t\t\tstate: getLastGrammarStateFromMap(tokens),\n\t\t\ttheme: typeof t.theme === \"string\" ? t.theme : t.theme.name\n\t\t};\n\t});\n\tconst tokens = alignThemesTokenization(...themedTokens.map((i) => i.tokens));\n\tconst mergedTokens = tokens[0].map((line, lineIdx) => line.map((_token, tokenIdx) => {\n\t\tconst mergedToken = {\n\t\t\tcontent: _token.content,\n\t\t\tvariants: {},\n\t\t\toffset: _token.offset\n\t\t};\n\t\tif (\"includeExplanation\" in options && options.includeExplanation) mergedToken.explanation = _token.explanation;\n\t\ttokens.forEach((t, themeIdx) => {\n\t\t\tconst { content: _, explanation: __, offset: ___, ...styles } = t[lineIdx][tokenIdx];\n\t\t\tmergedToken.variants[themes[themeIdx].color] = styles;\n\t\t});\n\t\treturn mergedToken;\n\t}));\n\tconst mergedGrammarState = themedTokens[0].state ? new GrammarState(Object.fromEntries(themedTokens.map((s) => [s.theme, s.state?.getInternalStack(s.theme)])), themedTokens[0].state.lang) : void 0;\n\tif (mergedGrammarState) setLastGrammarStateToMap(mergedTokens, mergedGrammarState);\n\treturn mergedTokens;\n}\n/**\n* Break tokens from multiple themes into same tokenization.\n*\n* For example, given two themes that tokenize `console.log(\"hello\")` as:\n*\n* - `console . log (\" hello \")` (6 tokens)\n* - `console .log ( \"hello\" )` (5 tokens)\n*\n* This function will return:\n*\n* - `console . log ( \" hello \" )` (8 tokens)\n* - `console . log ( \" hello \" )` (8 tokens)\n*/\nfunction alignThemesTokenization(...themes) {\n\tconst outThemes = themes.map(() => []);\n\tconst count = themes.length;\n\tfor (let i = 0; i < themes[0].length; i++) {\n\t\tconst lines = themes.map((t) => t[i]);\n\t\tconst outLines = outThemes.map(() => []);\n\t\toutThemes.forEach((t, i) => t.push(outLines[i]));\n\t\tconst indexes = lines.map(() => 0);\n\t\tconst current = lines.map((l) => l[0]);\n\t\twhile (current.every((t) => t)) {\n\t\t\tconst minLength = Math.min(...current.map((t) => t.content.length));\n\t\t\tfor (let n = 0; n < count; n++) {\n\t\t\t\tconst token = current[n];\n\t\t\t\tif (token.content.length === minLength) {\n\t\t\t\t\toutLines[n].push(token);\n\t\t\t\t\tindexes[n] += 1;\n\t\t\t\t\tcurrent[n] = lines[n][indexes[n]];\n\t\t\t\t} else {\n\t\t\t\t\toutLines[n].push({\n\t\t\t\t\t\t...token,\n\t\t\t\t\t\tcontent: token.content.slice(0, minLength)\n\t\t\t\t\t});\n\t\t\t\t\tcurrent[n] = {\n\t\t\t\t\t\t...token,\n\t\t\t\t\t\tcontent: token.content.slice(minLength),\n\t\t\t\t\t\toffset: token.offset + minLength\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn outThemes;\n}\n\n//#endregion\nexport { GrammarState, Registry, Resolver, alignThemesTokenization, applyColorReplacements, codeToTokensBase, codeToTokensWithThemes, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitiveAsync, getGrammarStack, getLastGrammarState, getLastGrammarStateFromMap, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, normalizeGetter, normalizeTheme, resolveColorReplacements, resolveLangAlias, resolveLangs, resolveThemes, setLastGrammarStateToMap, splitLines, toArray, tokenizeWithTheme };", "/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n", "/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n", "/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n", "/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n", "/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n", "let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n", "/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n", "/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n", "import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n", "/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n", "import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n", "import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n", "import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n", "import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n", "import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n", "import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n", "/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n", "// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n", "/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n", "const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n", "const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n", "/**\n * List of legacy HTML named character references that don\u2019t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n", "/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: '\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n Agrave: '\u00C0',\n Aacute: '\u00C1',\n Acirc: '\u00C2',\n Atilde: '\u00C3',\n Auml: '\u00C4',\n Aring: '\u00C5',\n AElig: '\u00C6',\n Ccedil: '\u00C7',\n Egrave: '\u00C8',\n Eacute: '\u00C9',\n Ecirc: '\u00CA',\n Euml: '\u00CB',\n Igrave: '\u00CC',\n Iacute: '\u00CD',\n Icirc: '\u00CE',\n Iuml: '\u00CF',\n ETH: '\u00D0',\n Ntilde: '\u00D1',\n Ograve: '\u00D2',\n Oacute: '\u00D3',\n Ocirc: '\u00D4',\n Otilde: '\u00D5',\n Ouml: '\u00D6',\n times: '\u00D7',\n Oslash: '\u00D8',\n Ugrave: '\u00D9',\n Uacute: '\u00DA',\n Ucirc: '\u00DB',\n Uuml: '\u00DC',\n Yacute: '\u00DD',\n THORN: '\u00DE',\n szlig: '\u00DF',\n agrave: '\u00E0',\n aacute: '\u00E1',\n acirc: '\u00E2',\n atilde: '\u00E3',\n auml: '\u00E4',\n aring: '\u00E5',\n aelig: '\u00E6',\n ccedil: '\u00E7',\n egrave: '\u00E8',\n eacute: '\u00E9',\n ecirc: '\u00EA',\n euml: '\u00EB',\n igrave: '\u00EC',\n iacute: '\u00ED',\n icirc: '\u00EE',\n iuml: '\u00EF',\n eth: '\u00F0',\n ntilde: '\u00F1',\n ograve: '\u00F2',\n oacute: '\u00F3',\n ocirc: '\u00F4',\n otilde: '\u00F5',\n ouml: '\u00F6',\n divide: '\u00F7',\n oslash: '\u00F8',\n ugrave: '\u00F9',\n uacute: '\u00FA',\n ucirc: '\u00FB',\n uuml: '\u00FC',\n yacute: '\u00FD',\n thorn: '\u00FE',\n yuml: '\u00FF',\n fnof: '\u0192',\n Alpha: '\u0391',\n Beta: '\u0392',\n Gamma: '\u0393',\n Delta: '\u0394',\n Epsilon: '\u0395',\n Zeta: '\u0396',\n Eta: '\u0397',\n Theta: '\u0398',\n Iota: '\u0399',\n Kappa: '\u039A',\n Lambda: '\u039B',\n Mu: '\u039C',\n Nu: '\u039D',\n Xi: '\u039E',\n Omicron: '\u039F',\n Pi: '\u03A0',\n Rho: '\u03A1',\n Sigma: '\u03A3',\n Tau: '\u03A4',\n Upsilon: '\u03A5',\n Phi: '\u03A6',\n Chi: '\u03A7',\n Psi: '\u03A8',\n Omega: '\u03A9',\n alpha: '\u03B1',\n beta: '\u03B2',\n gamma: '\u03B3',\n delta: '\u03B4',\n epsilon: '\u03B5',\n zeta: '\u03B6',\n eta: '\u03B7',\n theta: '\u03B8',\n iota: '\u03B9',\n kappa: '\u03BA',\n lambda: '\u03BB',\n mu: '\u03BC',\n nu: '\u03BD',\n xi: '\u03BE',\n omicron: '\u03BF',\n pi: '\u03C0',\n rho: '\u03C1',\n sigmaf: '\u03C2',\n sigma: '\u03C3',\n tau: '\u03C4',\n upsilon: '\u03C5',\n phi: '\u03C6',\n chi: '\u03C7',\n psi: '\u03C8',\n omega: '\u03C9',\n thetasym: '\u03D1',\n upsih: '\u03D2',\n piv: '\u03D6',\n bull: '\u2022',\n hellip: '\u2026',\n prime: '\u2032',\n Prime: '\u2033',\n oline: '\u203E',\n frasl: '\u2044',\n weierp: '\u2118',\n image: '\u2111',\n real: '\u211C',\n trade: '\u2122',\n alefsym: '\u2135',\n larr: '\u2190',\n uarr: '\u2191',\n rarr: '\u2192',\n darr: '\u2193',\n harr: '\u2194',\n crarr: '\u21B5',\n lArr: '\u21D0',\n uArr: '\u21D1',\n rArr: '\u21D2',\n dArr: '\u21D3',\n hArr: '\u21D4',\n forall: '\u2200',\n part: '\u2202',\n exist: '\u2203',\n empty: '\u2205',\n nabla: '\u2207',\n isin: '\u2208',\n notin: '\u2209',\n ni: '\u220B',\n prod: '\u220F',\n sum: '\u2211',\n minus: '\u2212',\n lowast: '\u2217',\n radic: '\u221A',\n prop: '\u221D',\n infin: '\u221E',\n ang: '\u2220',\n and: '\u2227',\n or: '\u2228',\n cap: '\u2229',\n cup: '\u222A',\n int: '\u222B',\n there4: '\u2234',\n sim: '\u223C',\n cong: '\u2245',\n asymp: '\u2248',\n ne: '\u2260',\n equiv: '\u2261',\n le: '\u2264',\n ge: '\u2265',\n sub: '\u2282',\n sup: '\u2283',\n nsub: '\u2284',\n sube: '\u2286',\n supe: '\u2287',\n oplus: '\u2295',\n otimes: '\u2297',\n perp: '\u22A5',\n sdot: '\u22C5',\n lceil: '\u2308',\n rceil: '\u2309',\n lfloor: '\u230A',\n rfloor: '\u230B',\n lang: '\u2329',\n rang: '\u232A',\n loz: '\u25CA',\n spades: '\u2660',\n clubs: '\u2663',\n hearts: '\u2665',\n diams: '\u2666',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: '\u0152',\n oelig: '\u0153',\n Scaron: '\u0160',\n scaron: '\u0161',\n Yuml: '\u0178',\n circ: '\u02C6',\n tilde: '\u02DC',\n ensp: '\u2002',\n emsp: '\u2003',\n thinsp: '\u2009',\n zwnj: '\u200C',\n zwj: '\u200D',\n lrm: '\u200E',\n rlm: '\u200F',\n ndash: '\u2013',\n mdash: '\u2014',\n lsquo: '\u2018',\n rsquo: '\u2019',\n sbquo: '\u201A',\n ldquo: '\u201C',\n rdquo: '\u201D',\n bdquo: '\u201E',\n dagger: '\u2020',\n Dagger: '\u2021',\n permil: '\u2030',\n lsaquo: '\u2039',\n rsaquo: '\u203A',\n euro: '\u20AC'\n}\n", "/**\n * List of legacy (that don\u2019t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n", "import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n", "/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls \u201Cparse errors\u201D but is otherwise still valid HTML \u2014 don\u2019t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don\u2019t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `c` vs `c` (decimal shorter)\n // * `d` vs `d` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n", "/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n", "/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n", "/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\n}\n", "/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n", "/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n", "/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n", "/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it\u2019s a correct child.\n return next\n }\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn\u2019t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // \u201CMay be omitted if the element is empty,\n // or if the first thing inside the head element is an element.\u201D\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it\u2019s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n", "/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don\u2019t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can\u2019t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn\u2019t accept a second argument, but it\u2019s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don\u2019t want unquoted, or if `value` contains character references when\n // unquoted\u2026\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don\u2019t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n", "/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n", "/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n", "/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n", "/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n", "/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > \u26A0\uFE0F **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > \u26A0\uFE0F **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use \u201Cbogus comments\u201D instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it\u2019s followed by another `li`, the last because it\u2019s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > \uD83D\uDC49 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,\u2420`, where `\u2420` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > \uD83D\uDC49 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE\u2026` instead of `<!doctype\u2026` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: It\u2019s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n", "import { ShikiError as ShikiError$1 } from \"@shikijs/types\";\nimport { ShikiError, applyColorReplacements, codeToTokensBase as codeToTokensBase$1, codeToTokensWithThemes, codeToTokensWithThemes as codeToTokensWithThemes$1, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitive as createShikiPrimitive$1, createShikiPrimitiveAsync, createShikiPrimitiveAsync as createShikiPrimitiveAsync$1, getLastGrammarState, getLastGrammarStateFromMap, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, normalizeGetter, normalizeTheme, resolveColorReplacements, setLastGrammarStateToMap, splitLines, splitLines as splitLines$1, toArray, tokenizeWithTheme } from \"@shikijs/primitive\";\nimport { FontStyle } from \"@shikijs/vscode-textmate\";\nimport { toHtml } from \"hast-util-to-html\";\n\nexport * from \"@shikijs/types\"\n\n//#region src/utils/hast.ts\n/**\n* Utility to append class to a hast node\n*\n* If the `property.class` is a string, it will be splitted by space and converted to an array.\n*/\nfunction addClassToHast(node, className) {\n\tif (!className) return node;\n\tnode.properties ||= {};\n\tnode.properties.class ||= [];\n\tif (typeof node.properties.class === \"string\") node.properties.class = node.properties.class.split(/\\s+/g);\n\tif (!Array.isArray(node.properties.class)) node.properties.class = [];\n\tconst targets = Array.isArray(className) ? className : className.split(/\\s+/g);\n\tfor (const c of targets) if (c && !node.properties.class.includes(c)) node.properties.class.push(c);\n\treturn node;\n}\n\n//#endregion\n//#region src/utils/strings.ts\n/**\n* Creates a converter between index and position in a code block.\n*\n* Overflow/underflow are unchecked.\n*/\nfunction createPositionConverter(code) {\n\tconst lines = splitLines$1(code, true).map(([line]) => line);\n\tfunction indexToPos(index) {\n\t\tif (index === code.length) return {\n\t\t\tline: lines.length - 1,\n\t\t\tcharacter: lines[lines.length - 1].length\n\t\t};\n\t\tlet character = index;\n\t\tlet line = 0;\n\t\tfor (const lineText of lines) {\n\t\t\tif (character < lineText.length) break;\n\t\t\tcharacter -= lineText.length;\n\t\t\tline++;\n\t\t}\n\t\treturn {\n\t\t\tline,\n\t\t\tcharacter\n\t\t};\n\t}\n\tfunction posToIndex(line, character) {\n\t\tlet index = 0;\n\t\tfor (let i = 0; i < line; i++) index += lines[i].length;\n\t\tindex += character;\n\t\treturn index;\n\t}\n\treturn {\n\t\tlines,\n\t\tindexToPos,\n\t\tposToIndex\n\t};\n}\n/**\n* Guess embedded languages from given code and highlighter.\n*\n* When highlighter is provided, only bundled languages will be included.\n*\n* @param code - The code string to analyze\n* @param _lang - The primary language of the code (currently unused)\n* @param highlighter - Optional highlighter instance to validate languages\n* @returns Array of detected language identifiers\n*\n* @example\n* ```ts\n* // Detects 'javascript' from Vue SFC\n* guessEmbeddedLanguages('<script lang=\"javascript\">')\n*\n* // Detects 'python' from markdown code block\n* guessEmbeddedLanguages('```python\\nprint(\"hi\")\\n```')\n* ```\n*/\nfunction guessEmbeddedLanguages(code, _lang, highlighter) {\n\tconst langs = /* @__PURE__ */ new Set();\n\tfor (const match of code.matchAll(/:?lang=[\"']([^\"']+)[\"']/g)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(/(?:```|~~~)([\\w-]+)/g)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(/\\\\begin\\{([\\w-]+)\\}/g)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(/<script\\s+(?:type|lang)=[\"']([^\"']+)[\"']/gi)) {\n\t\tconst fullType = match[1].toLowerCase().trim();\n\t\tconst lang = fullType.includes(\"/\") ? fullType.split(\"/\").pop() : fullType;\n\t\tif (lang) langs.add(lang);\n\t}\n\tif (!highlighter) return Array.from(langs);\n\tconst bundle = highlighter.getBundledLanguages();\n\treturn Array.from(langs).filter((l) => l && bundle[l]);\n}\n\n//#endregion\n//#region src/utils/constants.ts\nconst DEFAULT_COLOR_LIGHT_DARK = \"light-dark()\";\nconst COLOR_KEYS = [\"color\", \"background-color\"];\n\n//#endregion\n//#region src/utils/tokens.ts\n/**\n* Split a token into multiple tokens by given offsets.\n*\n* The offsets are relative to the token, and should be sorted.\n*/\nfunction splitToken(token, offsets) {\n\tlet lastOffset = 0;\n\tconst tokens = [];\n\tfor (const offset of offsets) {\n\t\tif (offset > lastOffset) tokens.push({\n\t\t\t...token,\n\t\t\tcontent: token.content.slice(lastOffset, offset),\n\t\t\toffset: token.offset + lastOffset\n\t\t});\n\t\tlastOffset = offset;\n\t}\n\tif (lastOffset < token.content.length) tokens.push({\n\t\t...token,\n\t\tcontent: token.content.slice(lastOffset),\n\t\toffset: token.offset + lastOffset\n\t});\n\treturn tokens;\n}\n/**\n* Split 2D tokens array by given breakpoints.\n*/\nfunction splitTokens(tokens, breakpoints) {\n\tconst sorted = Array.from(breakpoints instanceof Set ? breakpoints : new Set(breakpoints)).sort((a, b) => a - b);\n\tif (!sorted.length) return tokens;\n\treturn tokens.map((line) => {\n\t\treturn line.flatMap((token) => {\n\t\t\tconst breakpointsInToken = sorted.filter((i) => token.offset < i && i < token.offset + token.content.length).map((i) => i - token.offset).sort((a, b) => a - b);\n\t\t\tif (!breakpointsInToken.length) return token;\n\t\t\treturn splitToken(token, breakpointsInToken);\n\t\t});\n\t});\n}\nfunction flatTokenVariants(merged, variantsOrder, cssVariablePrefix, defaultColor, colorsRendering = \"css-vars\") {\n\tconst token = {\n\t\tcontent: merged.content,\n\t\texplanation: merged.explanation,\n\t\toffset: merged.offset\n\t};\n\tconst styles = variantsOrder.map((t) => getTokenStyleObject(merged.variants[t]));\n\tconst styleKeys = new Set(styles.flatMap((t) => Object.keys(t)));\n\tconst mergedStyles = {};\n\tconst varKey = (idx, key) => {\n\t\tconst keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n\t\treturn cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n\t};\n\tstyles.forEach((cur, idx) => {\n\t\tfor (const key of styleKeys) {\n\t\t\tconst value = cur[key] || \"inherit\";\n\t\t\tif (idx === 0 && defaultColor && COLOR_KEYS.includes(key)) if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && styles.length > 1) {\n\t\t\t\tconst lightIndex = variantsOrder.findIndex((t) => t === \"light\");\n\t\t\t\tconst darkIndex = variantsOrder.findIndex((t) => t === \"dark\");\n\t\t\t\tif (lightIndex === -1 || darkIndex === -1) throw new ShikiError$1(\"When using `defaultColor: \\\"light-dark()\\\"`, you must provide both `light` and `dark` themes\");\n\t\t\t\tmergedStyles[key] = `light-dark(${styles[lightIndex][key] || \"inherit\"}, ${styles[darkIndex][key] || \"inherit\"})`;\n\t\t\t\tif (colorsRendering === \"css-vars\") mergedStyles[varKey(idx, key)] = value;\n\t\t\t} else mergedStyles[key] = value;\n\t\t\telse if (colorsRendering === \"css-vars\") mergedStyles[varKey(idx, key)] = value;\n\t\t}\n\t});\n\ttoken.htmlStyle = mergedStyles;\n\treturn token;\n}\nfunction getTokenStyleObject(token) {\n\tconst styles = {};\n\tif (token.color) styles.color = token.color;\n\tif (token.bgColor) styles[\"background-color\"] = token.bgColor;\n\tif (token.fontStyle) {\n\t\tif (token.fontStyle & FontStyle.Italic) styles[\"font-style\"] = \"italic\";\n\t\tif (token.fontStyle & FontStyle.Bold) styles[\"font-weight\"] = \"bold\";\n\t\tconst decorations = [];\n\t\tif (token.fontStyle & FontStyle.Underline) decorations.push(\"underline\");\n\t\tif (token.fontStyle & FontStyle.Strikethrough) decorations.push(\"line-through\");\n\t\tif (decorations.length) styles[\"text-decoration\"] = decorations.join(\" \");\n\t}\n\treturn styles;\n}\nfunction stringifyTokenStyle(token) {\n\tif (typeof token === \"string\") return token;\n\treturn Object.entries(token).map(([key, value]) => `${key}:${value}`).join(\";\");\n}\n\n//#endregion\n//#region src/transformer-decorations.ts\n/**\n* A built-in transformer to add decorations to the highlighted code.\n*/\nfunction transformerDecorations() {\n\tconst map = /* @__PURE__ */ new WeakMap();\n\tfunction getContext(shiki) {\n\t\tif (!map.has(shiki.meta)) {\n\t\t\tconst converter = createPositionConverter(shiki.source);\n\t\t\tfunction normalizePosition(p) {\n\t\t\t\tif (typeof p === \"number\") {\n\t\t\t\t\tif (p < 0 || p > shiki.source.length) throw new ShikiError$1(`Invalid decoration offset: ${p}. Code length: ${shiki.source.length}`);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...converter.indexToPos(p),\n\t\t\t\t\t\toffset: p\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tconst line = converter.lines[p.line];\n\t\t\t\t\tif (line === void 0) throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Lines length: ${converter.lines.length}`);\n\t\t\t\t\tlet character = p.character;\n\t\t\t\t\tif (character < 0) character = line.length + character;\n\t\t\t\t\tif (character < 0 || character > line.length) throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Line ${p.line} length: ${line.length}`);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...p,\n\t\t\t\t\t\tcharacter,\n\t\t\t\t\t\toffset: converter.posToIndex(p.line, character)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst decorations = (shiki.options.decorations || []).map((d) => ({\n\t\t\t\t...d,\n\t\t\t\tstart: normalizePosition(d.start),\n\t\t\t\tend: normalizePosition(d.end)\n\t\t\t}));\n\t\t\tverifyIntersections(decorations);\n\t\t\tmap.set(shiki.meta, {\n\t\t\t\tdecorations,\n\t\t\t\tconverter,\n\t\t\t\tsource: shiki.source\n\t\t\t});\n\t\t}\n\t\treturn map.get(shiki.meta);\n\t}\n\treturn {\n\t\tname: \"shiki:decorations\",\n\t\ttokens(tokens) {\n\t\t\tif (!this.options.decorations?.length) return;\n\t\t\treturn splitTokens(tokens, getContext(this).decorations.flatMap((d) => [d.start.offset, d.end.offset]));\n\t\t},\n\t\tcode(codeEl) {\n\t\t\tif (!this.options.decorations?.length) return;\n\t\t\tconst ctx = getContext(this);\n\t\t\tconst lines = Array.from(codeEl.children).filter((i) => i.type === \"element\" && i.tagName === \"span\");\n\t\t\tif (lines.length !== ctx.converter.lines.length) throw new ShikiError$1(`Number of lines in code element (${lines.length}) does not match the number of lines in the source (${ctx.converter.lines.length}). Failed to apply decorations.`);\n\t\t\tfunction applyLineSection(line, start, end, decoration) {\n\t\t\t\tconst lineEl = lines[line];\n\t\t\t\tlet text = \"\";\n\t\t\t\tlet startIndex = -1;\n\t\t\t\tlet endIndex = -1;\n\t\t\t\tif (start === 0) startIndex = 0;\n\t\t\t\tif (end === 0) endIndex = 0;\n\t\t\t\tif (end === Number.POSITIVE_INFINITY) endIndex = lineEl.children.length;\n\t\t\t\tif (startIndex === -1 || endIndex === -1) for (let i = 0; i < lineEl.children.length; i++) {\n\t\t\t\t\ttext += stringify(lineEl.children[i]);\n\t\t\t\t\tif (startIndex === -1 && text.length === start) startIndex = i + 1;\n\t\t\t\t\tif (endIndex === -1 && text.length === end) endIndex = i + 1;\n\t\t\t\t}\n\t\t\t\tif (startIndex === -1) throw new ShikiError$1(`Failed to find start index for decoration ${JSON.stringify(decoration.start)}`);\n\t\t\t\tif (endIndex === -1) throw new ShikiError$1(`Failed to find end index for decoration ${JSON.stringify(decoration.end)}`);\n\t\t\t\tconst children = lineEl.children.slice(startIndex, endIndex);\n\t\t\t\tif (!decoration.alwaysWrap && children.length === lineEl.children.length) applyDecoration(lineEl, decoration, \"line\");\n\t\t\t\telse if (!decoration.alwaysWrap && children.length === 1 && children[0].type === \"element\") applyDecoration(children[0], decoration, \"token\");\n\t\t\t\telse {\n\t\t\t\t\tconst wrapper = {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\ttagName: \"span\",\n\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\tchildren\n\t\t\t\t\t};\n\t\t\t\t\tapplyDecoration(wrapper, decoration, \"wrapper\");\n\t\t\t\t\tlineEl.children.splice(startIndex, children.length, wrapper);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction applyLine(line, decoration) {\n\t\t\t\tlines[line] = applyDecoration(lines[line], decoration, \"line\");\n\t\t\t}\n\t\t\tfunction applyDecoration(el, decoration, type) {\n\t\t\t\tconst properties = decoration.properties || {};\n\t\t\t\tconst transform = decoration.transform || ((i) => i);\n\t\t\t\tel.tagName = decoration.tagName || \"span\";\n\t\t\t\tel.properties = {\n\t\t\t\t\t...el.properties,\n\t\t\t\t\t...properties,\n\t\t\t\t\tclass: el.properties.class\n\t\t\t\t};\n\t\t\t\tif (decoration.properties?.class) addClassToHast(el, decoration.properties.class);\n\t\t\t\tel = transform(el, type) || el;\n\t\t\t\treturn el;\n\t\t\t}\n\t\t\tconst lineApplies = [];\n\t\t\tconst sorted = ctx.decorations.sort((a, b) => b.start.offset - a.start.offset || a.end.offset - b.end.offset);\n\t\t\tfor (const decoration of sorted) {\n\t\t\t\tconst { start, end } = decoration;\n\t\t\t\tif (start.line === end.line) applyLineSection(start.line, start.character, end.character, decoration);\n\t\t\t\telse if (start.line < end.line) {\n\t\t\t\t\tapplyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n\t\t\t\t\tfor (let i = start.line + 1; i < end.line; i++) lineApplies.unshift(() => applyLine(i, decoration));\n\t\t\t\t\tapplyLineSection(end.line, 0, end.character, decoration);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlineApplies.forEach((i) => i());\n\t\t}\n\t};\n}\nfunction verifyIntersections(items) {\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst foo = items[i];\n\t\tif (foo.start.offset > foo.end.offset) throw new ShikiError$1(`Invalid decoration range: ${JSON.stringify(foo.start)} - ${JSON.stringify(foo.end)}`);\n\t\tfor (let j = i + 1; j < items.length; j++) {\n\t\t\tconst bar = items[j];\n\t\t\tconst isFooHasBarStart = foo.start.offset <= bar.start.offset && bar.start.offset < foo.end.offset;\n\t\t\tconst isFooHasBarEnd = foo.start.offset < bar.end.offset && bar.end.offset <= foo.end.offset;\n\t\t\tconst isBarHasFooStart = bar.start.offset <= foo.start.offset && foo.start.offset < bar.end.offset;\n\t\t\tconst isBarHasFooEnd = bar.start.offset < foo.end.offset && foo.end.offset <= bar.end.offset;\n\t\t\tif (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n\t\t\t\tif (isFooHasBarStart && isFooHasBarEnd) continue;\n\t\t\t\tif (isBarHasFooStart && isBarHasFooEnd) continue;\n\t\t\t\tif (isBarHasFooStart && foo.start.offset === foo.end.offset) continue;\n\t\t\t\tif (isFooHasBarEnd && bar.start.offset === bar.end.offset) continue;\n\t\t\t\tthrow new ShikiError$1(`Decorations ${JSON.stringify(foo.start)} and ${JSON.stringify(bar.start)} intersect.`);\n\t\t\t}\n\t\t}\n\t}\n}\nfunction stringify(el) {\n\tif (el.type === \"text\") return el.value;\n\tif (el.type === \"element\") return el.children.map(stringify).join(\"\");\n\treturn \"\";\n}\n\n//#endregion\n//#region src/highlight/_get-transformers.ts\nconst builtInTransformers = [/* @__PURE__ */ transformerDecorations()];\nfunction getTransformers(options) {\n\tconst transformers = sortTransformersByEnforcement(options.transformers || []);\n\treturn [\n\t\t...transformers.pre,\n\t\t...transformers.normal,\n\t\t...transformers.post,\n\t\t...builtInTransformers\n\t];\n}\nfunction sortTransformersByEnforcement(transformers) {\n\tconst pre = [];\n\tconst post = [];\n\tconst normal = [];\n\tfor (const transformer of transformers) switch (transformer.enforce) {\n\t\tcase \"pre\":\n\t\t\tpre.push(transformer);\n\t\t\tbreak;\n\t\tcase \"post\":\n\t\t\tpost.push(transformer);\n\t\t\tbreak;\n\t\tdefault: normal.push(transformer);\n\t}\n\treturn {\n\t\tpre,\n\t\tpost,\n\t\tnormal\n\t};\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/ansi-sequence-parser@1.1.3/node_modules/ansi-sequence-parser/dist/index.js\nvar namedColors = [\n\t\"black\",\n\t\"red\",\n\t\"green\",\n\t\"yellow\",\n\t\"blue\",\n\t\"magenta\",\n\t\"cyan\",\n\t\"white\",\n\t\"brightBlack\",\n\t\"brightRed\",\n\t\"brightGreen\",\n\t\"brightYellow\",\n\t\"brightBlue\",\n\t\"brightMagenta\",\n\t\"brightCyan\",\n\t\"brightWhite\"\n];\nvar decorations = {\n\t1: \"bold\",\n\t2: \"dim\",\n\t3: \"italic\",\n\t4: \"underline\",\n\t7: \"reverse\",\n\t8: \"hidden\",\n\t9: \"strikethrough\"\n};\nfunction findSequence(value, position) {\n\tconst nextEscape = value.indexOf(\"\\x1B\", position);\n\tif (nextEscape !== -1) {\n\t\tif (value[nextEscape + 1] === \"[\") {\n\t\t\tconst nextClose = value.indexOf(\"m\", nextEscape);\n\t\t\tif (nextClose !== -1) return {\n\t\t\t\tsequence: value.substring(nextEscape + 2, nextClose).split(\";\"),\n\t\t\t\tstartPosition: nextEscape,\n\t\t\t\tposition: nextClose + 1\n\t\t\t};\n\t\t}\n\t}\n\treturn { position: value.length };\n}\nfunction parseColor(sequence) {\n\tconst colorMode = sequence.shift();\n\tif (colorMode === \"2\") {\n\t\tconst rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));\n\t\tif (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x))) return;\n\t\treturn {\n\t\t\ttype: \"rgb\",\n\t\t\trgb\n\t\t};\n\t} else if (colorMode === \"5\") {\n\t\tconst index = sequence.shift();\n\t\tif (index) return {\n\t\t\ttype: \"table\",\n\t\t\tindex: Number(index)\n\t\t};\n\t}\n}\nfunction parseSequence(sequence) {\n\tconst commands = [];\n\twhile (sequence.length > 0) {\n\t\tconst code = sequence.shift();\n\t\tif (!code) continue;\n\t\tconst codeInt = Number.parseInt(code);\n\t\tif (Number.isNaN(codeInt)) continue;\n\t\tif (codeInt === 0) commands.push({ type: \"resetAll\" });\n\t\telse if (codeInt <= 9) {\n\t\t\tif (decorations[codeInt]) commands.push({\n\t\t\t\ttype: \"setDecoration\",\n\t\t\t\tvalue: decorations[codeInt]\n\t\t\t});\n\t\t} else if (codeInt <= 29) {\n\t\t\tconst decoration = decorations[codeInt - 20];\n\t\t\tif (decoration) {\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"resetDecoration\",\n\t\t\t\t\tvalue: decoration\n\t\t\t\t});\n\t\t\t\tif (decoration === \"dim\") commands.push({\n\t\t\t\t\ttype: \"resetDecoration\",\n\t\t\t\t\tvalue: \"bold\"\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (codeInt <= 37) commands.push({\n\t\t\ttype: \"setForegroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 30]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt === 38) {\n\t\t\tconst color = parseColor(sequence);\n\t\t\tif (color) commands.push({\n\t\t\t\ttype: \"setForegroundColor\",\n\t\t\t\tvalue: color\n\t\t\t});\n\t\t} else if (codeInt === 39) commands.push({ type: \"resetForegroundColor\" });\n\t\telse if (codeInt <= 47) commands.push({\n\t\t\ttype: \"setBackgroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 40]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt === 48) {\n\t\t\tconst color = parseColor(sequence);\n\t\t\tif (color) commands.push({\n\t\t\t\ttype: \"setBackgroundColor\",\n\t\t\t\tvalue: color\n\t\t\t});\n\t\t} else if (codeInt === 49) commands.push({ type: \"resetBackgroundColor\" });\n\t\telse if (codeInt === 53) commands.push({\n\t\t\ttype: \"setDecoration\",\n\t\t\tvalue: \"overline\"\n\t\t});\n\t\telse if (codeInt === 55) commands.push({\n\t\t\ttype: \"resetDecoration\",\n\t\t\tvalue: \"overline\"\n\t\t});\n\t\telse if (codeInt >= 90 && codeInt <= 97) commands.push({\n\t\t\ttype: \"setForegroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 90 + 8]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt >= 100 && codeInt <= 107) commands.push({\n\t\t\ttype: \"setBackgroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 100 + 8]\n\t\t\t}\n\t\t});\n\t}\n\treturn commands;\n}\nfunction createAnsiSequenceParser() {\n\tlet foreground = null;\n\tlet background = null;\n\tlet decorations2 = /* @__PURE__ */ new Set();\n\treturn { parse(value) {\n\t\tconst tokens = [];\n\t\tlet position = 0;\n\t\tdo {\n\t\t\tconst findResult = findSequence(value, position);\n\t\t\tconst text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);\n\t\t\tif (text.length > 0) tokens.push({\n\t\t\t\tvalue: text,\n\t\t\t\tforeground,\n\t\t\t\tbackground,\n\t\t\t\tdecorations: new Set(decorations2)\n\t\t\t});\n\t\t\tif (findResult.sequence) {\n\t\t\t\tconst commands = parseSequence(findResult.sequence);\n\t\t\t\tfor (const styleToken of commands) if (styleToken.type === \"resetAll\") {\n\t\t\t\t\tforeground = null;\n\t\t\t\t\tbackground = null;\n\t\t\t\t\tdecorations2.clear();\n\t\t\t\t} else if (styleToken.type === \"resetForegroundColor\") foreground = null;\n\t\t\t\telse if (styleToken.type === \"resetBackgroundColor\") background = null;\n\t\t\t\telse if (styleToken.type === \"resetDecoration\") decorations2.delete(styleToken.value);\n\t\t\t\tfor (const styleToken of commands) if (styleToken.type === \"setForegroundColor\") foreground = styleToken.value;\n\t\t\t\telse if (styleToken.type === \"setBackgroundColor\") background = styleToken.value;\n\t\t\t\telse if (styleToken.type === \"setDecoration\") decorations2.add(styleToken.value);\n\t\t\t}\n\t\t\tposition = findResult.position;\n\t\t} while (position < value.length);\n\t\treturn tokens;\n\t} };\n}\nvar defaultNamedColorsMap = {\n\tblack: \"#000000\",\n\tred: \"#bb0000\",\n\tgreen: \"#00bb00\",\n\tyellow: \"#bbbb00\",\n\tblue: \"#0000bb\",\n\tmagenta: \"#ff00ff\",\n\tcyan: \"#00bbbb\",\n\twhite: \"#eeeeee\",\n\tbrightBlack: \"#555555\",\n\tbrightRed: \"#ff5555\",\n\tbrightGreen: \"#00ff00\",\n\tbrightYellow: \"#ffff55\",\n\tbrightBlue: \"#5555ff\",\n\tbrightMagenta: \"#ff55ff\",\n\tbrightCyan: \"#55ffff\",\n\tbrightWhite: \"#ffffff\"\n};\nfunction createColorPalette(namedColorsMap = defaultNamedColorsMap) {\n\tfunction namedColor(name) {\n\t\treturn namedColorsMap[name];\n\t}\n\tfunction rgbColor(rgb) {\n\t\treturn `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n\t}\n\tlet colorTable;\n\tfunction getColorTable() {\n\t\tif (colorTable) return colorTable;\n\t\tcolorTable = [];\n\t\tfor (let i = 0; i < namedColors.length; i++) colorTable.push(namedColor(namedColors[i]));\n\t\tlet levels = [\n\t\t\t0,\n\t\t\t95,\n\t\t\t135,\n\t\t\t175,\n\t\t\t215,\n\t\t\t255\n\t\t];\n\t\tfor (let r = 0; r < 6; r++) for (let g = 0; g < 6; g++) for (let b = 0; b < 6; b++) colorTable.push(rgbColor([\n\t\t\tlevels[r],\n\t\t\tlevels[g],\n\t\t\tlevels[b]\n\t\t]));\n\t\tlet level = 8;\n\t\tfor (let i = 0; i < 24; i++, level += 10) colorTable.push(rgbColor([\n\t\t\tlevel,\n\t\t\tlevel,\n\t\t\tlevel\n\t\t]));\n\t\treturn colorTable;\n\t}\n\tfunction tableColor(index) {\n\t\treturn getColorTable()[index];\n\t}\n\tfunction value(color) {\n\t\tswitch (color.type) {\n\t\t\tcase \"named\": return namedColor(color.name);\n\t\t\tcase \"rgb\": return rgbColor(color.rgb);\n\t\t\tcase \"table\": return tableColor(color.index);\n\t\t}\n\t}\n\treturn { value };\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-ansi.ts\n/**\n* Default ANSI palette (VSCode compatible fallbacks)\n* Used when the theme does not define terminal.ansi* colors.\n*/\nconst defaultAnsiColors = {\n\tblack: \"#000000\",\n\tred: \"#cd3131\",\n\tgreen: \"#0DBC79\",\n\tyellow: \"#E5E510\",\n\tblue: \"#2472C8\",\n\tmagenta: \"#BC3FBC\",\n\tcyan: \"#11A8CD\",\n\twhite: \"#E5E5E5\",\n\tbrightBlack: \"#666666\",\n\tbrightRed: \"#F14C4C\",\n\tbrightGreen: \"#23D18B\",\n\tbrightYellow: \"#F5F543\",\n\tbrightBlue: \"#3B8EEA\",\n\tbrightMagenta: \"#D670D6\",\n\tbrightCyan: \"#29B8DB\",\n\tbrightWhite: \"#FFFFFF\"\n};\nfunction tokenizeAnsiWithTheme(theme, fileContents, options) {\n\tconst colorReplacements = resolveColorReplacements(theme, options);\n\tconst lines = splitLines(fileContents);\n\tconst colorPalette = createColorPalette(Object.fromEntries(namedColors.map((name) => {\n\t\tconst key = `terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`;\n\t\treturn [name, theme.colors?.[key] || defaultAnsiColors[name]];\n\t})));\n\tconst parser = createAnsiSequenceParser();\n\treturn lines.map((line) => parser.parse(line[0]).map((token) => {\n\t\tlet color;\n\t\tlet bgColor;\n\t\tif (token.decorations.has(\"reverse\")) {\n\t\t\tcolor = token.background ? colorPalette.value(token.background) : theme.bg;\n\t\t\tbgColor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n\t\t} else {\n\t\t\tcolor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n\t\t\tbgColor = token.background ? colorPalette.value(token.background) : void 0;\n\t\t}\n\t\tcolor = applyColorReplacements(color, colorReplacements);\n\t\tbgColor = applyColorReplacements(bgColor, colorReplacements);\n\t\tif (token.decorations.has(\"dim\")) color = dimColor(color);\n\t\tlet fontStyle = FontStyle.None;\n\t\tif (token.decorations.has(\"bold\")) fontStyle |= FontStyle.Bold;\n\t\tif (token.decorations.has(\"italic\")) fontStyle |= FontStyle.Italic;\n\t\tif (token.decorations.has(\"underline\")) fontStyle |= FontStyle.Underline;\n\t\tif (token.decorations.has(\"strikethrough\")) fontStyle |= FontStyle.Strikethrough;\n\t\treturn {\n\t\t\tcontent: token.value,\n\t\t\toffset: line[1],\n\t\t\tcolor,\n\t\t\tbgColor,\n\t\t\tfontStyle\n\t\t};\n\t}));\n}\n/**\n* Adds 50% alpha to a hex color string or the \"-dim\" postfix to a CSS variable\n*/\nfunction dimColor(color) {\n\tconst hexMatch = color.match(/#([0-9a-f]{3,8})/i);\n\tif (hexMatch) {\n\t\tconst hex = hexMatch[1];\n\t\tif (hex.length === 8) {\n\t\t\tconst alpha = Math.round(Number.parseInt(hex.slice(6, 8), 16) / 2).toString(16).padStart(2, \"0\");\n\t\t\treturn `#${hex.slice(0, 6)}${alpha}`;\n\t\t} else if (hex.length === 6) return `#${hex}80`;\n\t\telse if (hex.length === 4) {\n\t\t\tconst r = hex[0];\n\t\t\tconst g = hex[1];\n\t\t\tconst b = hex[2];\n\t\t\tconst a = hex[3];\n\t\t\treturn `#${r}${r}${g}${g}${b}${b}${Math.round(Number.parseInt(`${a}${a}`, 16) / 2).toString(16).padStart(2, \"0\")}`;\n\t\t} else if (hex.length === 3) {\n\t\t\tconst r = hex[0];\n\t\t\tconst g = hex[1];\n\t\t\tconst b = hex[2];\n\t\t\treturn `#${r}${r}${g}${g}${b}${b}80`;\n\t\t}\n\t}\n\tconst cssVarMatch = color.match(/var\\((--[\\w-]+-ansi-[\\w-]+)\\)/);\n\tif (cssVarMatch) return `var(${cssVarMatch[1]}-dim)`;\n\treturn color;\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-base.ts\n/**\n* Code to tokens, with a simple theme.\n* This wraps the tokenizer's implementation to add ANSI support.\n*/\nfunction codeToTokensBase(primitive, code, options = {}) {\n\tconst lang = primitive.resolveLangAlias(options.lang || \"text\");\n\tconst { theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (!isPlainLang(lang) && !isNoneTheme(themeName) && lang === \"ansi\") {\n\t\tconst { theme } = primitive.setTheme(themeName);\n\t\treturn tokenizeAnsiWithTheme(theme, code, options);\n\t}\n\treturn codeToTokensBase$1(primitive, code, options);\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens.ts\n/**\n* High-level code-to-tokens API.\n*\n* It will use `codeToTokensWithThemes` or `codeToTokensBase` based on the options.\n*/\nfunction codeToTokens(primitive, code, options) {\n\tlet bg;\n\tlet fg;\n\tlet tokens;\n\tlet themeName;\n\tlet rootStyle;\n\tlet grammarState;\n\tif (\"themes\" in options) {\n\t\tconst { defaultColor = \"light\", cssVariablePrefix = \"--shiki-\", colorsRendering = \"css-vars\" } = options;\n\t\tconst themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({\n\t\t\tcolor: i[0],\n\t\t\ttheme: i[1]\n\t\t})).sort((a, b) => a.color === defaultColor ? -1 : b.color === defaultColor ? 1 : 0);\n\t\tif (themes.length === 0) throw new ShikiError$1(\"`themes` option must not be empty\");\n\t\tconst themeTokens = codeToTokensWithThemes$1(primitive, code, options, codeToTokensBase);\n\t\tgrammarState = getLastGrammarStateFromMap(themeTokens);\n\t\tif (defaultColor && DEFAULT_COLOR_LIGHT_DARK !== defaultColor && !themes.find((t) => t.color === defaultColor)) throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n\t\tconst themeRegs = themes.map((t) => primitive.getTheme(t.theme));\n\t\tconst themesOrder = themes.map((t) => t.color);\n\t\ttokens = themeTokens.map((line) => line.map((token) => flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n\t\tif (grammarState) setLastGrammarStateToMap(tokens, grammarState);\n\t\tconst themeColorReplacements = themes.map((t) => resolveColorReplacements(t.theme, options));\n\t\tfg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"fg\", colorsRendering);\n\t\tbg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"bg\", colorsRendering);\n\t\tthemeName = `shiki-themes ${themeRegs.map((t) => t.name).join(\" \")}`;\n\t\trootStyle = defaultColor ? void 0 : [fg, bg].join(\";\");\n\t} else if (\"theme\" in options) {\n\t\tconst colorReplacements = resolveColorReplacements(options.theme, options);\n\t\ttokens = codeToTokensBase(primitive, code, options);\n\t\tconst _theme = primitive.getTheme(options.theme);\n\t\tbg = applyColorReplacements(_theme.bg, colorReplacements);\n\t\tfg = applyColorReplacements(_theme.fg, colorReplacements);\n\t\tthemeName = _theme.name;\n\t\tgrammarState = getLastGrammarStateFromMap(tokens);\n\t} else throw new ShikiError$1(\"Invalid options, either `theme` or `themes` must be provided\");\n\treturn {\n\t\ttokens,\n\t\tfg,\n\t\tbg,\n\t\tthemeName,\n\t\trootStyle,\n\t\tgrammarState\n\t};\n}\nfunction mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, property, colorsRendering) {\n\treturn themes.map((t, idx) => {\n\t\tconst value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n\t\tconst cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n\t\tif (idx === 0 && defaultColor) {\n\t\t\tif (defaultColor === DEFAULT_COLOR_LIGHT_DARK && themes.length > 1) {\n\t\t\t\tconst lightIndex = themes.findIndex((t) => t.color === \"light\");\n\t\t\t\tconst darkIndex = themes.findIndex((t) => t.color === \"dark\");\n\t\t\t\tif (lightIndex === -1 || darkIndex === -1) throw new ShikiError$1(\"When using `defaultColor: \\\"light-dark()\\\"`, you must provide both `light` and `dark` themes\");\n\t\t\t\treturn `light-dark(${applyColorReplacements(themeRegs[lightIndex][property], themeColorReplacements[lightIndex]) || \"inherit\"}, ${applyColorReplacements(themeRegs[darkIndex][property], themeColorReplacements[darkIndex]) || \"inherit\"});${cssVar}`;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (colorsRendering === \"css-vars\") return cssVar;\n\t\treturn null;\n\t}).filter((i) => !!i).join(\";\");\n}\n\n//#endregion\n//#region src/highlight/code-to-hast.ts\nfunction codeToHast(primitive, code, options, transformerContext = {\n\tmeta: {},\n\toptions,\n\tcodeToHast: (_code, _options) => codeToHast(primitive, _code, _options),\n\tcodeToTokens: (_code, _options) => codeToTokens(primitive, _code, _options)\n}) {\n\tlet input = code;\n\tfor (const transformer of getTransformers(options)) input = transformer.preprocess?.call(transformerContext, input, options) || input;\n\tlet { tokens, fg, bg, themeName, rootStyle, grammarState } = codeToTokens(primitive, input, options);\n\tconst { mergeWhitespaces = true, mergeSameStyleTokens = false } = options;\n\tif (mergeWhitespaces === true) tokens = mergeWhitespaceTokens(tokens);\n\telse if (mergeWhitespaces === \"never\") tokens = splitWhitespaceTokens(tokens);\n\tif (mergeSameStyleTokens) tokens = mergeAdjacentStyledTokens(tokens);\n\tconst contextSource = {\n\t\t...transformerContext,\n\t\tget source() {\n\t\t\treturn input;\n\t\t}\n\t};\n\tfor (const transformer of getTransformers(options)) tokens = transformer.tokens?.call(contextSource, tokens) || tokens;\n\treturn tokensToHast(tokens, {\n\t\t...options,\n\t\tfg,\n\t\tbg,\n\t\tthemeName,\n\t\trootStyle: options.rootStyle === false ? false : options.rootStyle ?? rootStyle\n\t}, contextSource, grammarState);\n}\nfunction tokensToHast(tokens, options, transformerContext, grammarState = getLastGrammarStateFromMap(tokens)) {\n\tconst transformers = getTransformers(options);\n\tconst lines = [];\n\tconst root = {\n\t\ttype: \"root\",\n\t\tchildren: []\n\t};\n\tconst { structure = \"classic\", tabindex = \"0\" } = options;\n\tconst properties = { class: `shiki ${options.themeName || \"\"}` };\n\tif (options.rootStyle !== false) if (options.rootStyle != null) properties.style = options.rootStyle;\n\telse properties.style = `background-color:${options.bg};color:${options.fg}`;\n\tif (tabindex !== false && tabindex != null) properties.tabindex = tabindex.toString();\n\tfor (const [key, value] of Object.entries(options.meta || {})) if (!key.startsWith(\"_\")) properties[key] = value;\n\tlet preNode = {\n\t\ttype: \"element\",\n\t\ttagName: \"pre\",\n\t\tproperties,\n\t\tchildren: [],\n\t\tdata: options.data\n\t};\n\tlet codeNode = {\n\t\ttype: \"element\",\n\t\ttagName: \"code\",\n\t\tproperties: {},\n\t\tchildren: lines\n\t};\n\tconst lineNodes = [];\n\tconst context = {\n\t\t...transformerContext,\n\t\tstructure,\n\t\taddClassToHast,\n\t\tget source() {\n\t\t\treturn transformerContext.source;\n\t\t},\n\t\tget tokens() {\n\t\t\treturn tokens;\n\t\t},\n\t\tget options() {\n\t\t\treturn options;\n\t\t},\n\t\tget root() {\n\t\t\treturn root;\n\t\t},\n\t\tget pre() {\n\t\t\treturn preNode;\n\t\t},\n\t\tget code() {\n\t\t\treturn codeNode;\n\t\t},\n\t\tget lines() {\n\t\t\treturn lineNodes;\n\t\t}\n\t};\n\ttokens.forEach((line, idx) => {\n\t\tif (idx) {\n\t\t\tif (structure === \"inline\") root.children.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"br\",\n\t\t\t\tproperties: {},\n\t\t\t\tchildren: []\n\t\t\t});\n\t\t\telse if (structure === \"classic\") lines.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: \"\\n\"\n\t\t\t});\n\t\t}\n\t\tlet lineNode = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { class: \"line\" },\n\t\t\tchildren: []\n\t\t};\n\t\tlet col = 0;\n\t\tfor (const token of line) {\n\t\t\tlet tokenNode = {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"span\",\n\t\t\t\tproperties: { ...token.htmlAttrs },\n\t\t\t\tchildren: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tvalue: token.content\n\t\t\t\t}]\n\t\t\t};\n\t\t\tconst style = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n\t\t\tif (style) tokenNode.properties.style = style;\n\t\t\tfor (const transformer of transformers) tokenNode = transformer?.span?.call(context, tokenNode, idx + 1, col, lineNode, token) || tokenNode;\n\t\t\tif (structure === \"inline\") root.children.push(tokenNode);\n\t\t\telse if (structure === \"classic\") lineNode.children.push(tokenNode);\n\t\t\tcol += token.content.length;\n\t\t}\n\t\tif (structure === \"classic\") {\n\t\t\tfor (const transformer of transformers) lineNode = transformer?.line?.call(context, lineNode, idx + 1) || lineNode;\n\t\t\tlineNodes.push(lineNode);\n\t\t\tlines.push(lineNode);\n\t\t} else if (structure === \"inline\") lineNodes.push(lineNode);\n\t});\n\tif (structure === \"classic\") {\n\t\tfor (const transformer of transformers) codeNode = transformer?.code?.call(context, codeNode) || codeNode;\n\t\tpreNode.children.push(codeNode);\n\t\tfor (const transformer of transformers) preNode = transformer?.pre?.call(context, preNode) || preNode;\n\t\troot.children.push(preNode);\n\t} else if (structure === \"inline\") {\n\t\tconst syntheticLines = [];\n\t\tlet currentLine = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { class: \"line\" },\n\t\t\tchildren: []\n\t\t};\n\t\tfor (const child of root.children) if (child.type === \"element\" && child.tagName === \"br\") {\n\t\t\tsyntheticLines.push(currentLine);\n\t\t\tcurrentLine = {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"span\",\n\t\t\t\tproperties: { class: \"line\" },\n\t\t\t\tchildren: []\n\t\t\t};\n\t\t} else if (child.type === \"element\" || child.type === \"text\") currentLine.children.push(child);\n\t\tsyntheticLines.push(currentLine);\n\t\tlet transformedCode = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"code\",\n\t\t\tproperties: {},\n\t\t\tchildren: syntheticLines\n\t\t};\n\t\tfor (const transformer of transformers) transformedCode = transformer?.code?.call(context, transformedCode) || transformedCode;\n\t\troot.children = [];\n\t\tfor (let i = 0; i < transformedCode.children.length; i++) {\n\t\t\tif (i > 0) root.children.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"br\",\n\t\t\t\tproperties: {},\n\t\t\t\tchildren: []\n\t\t\t});\n\t\t\tconst line = transformedCode.children[i];\n\t\t\tif (line.type === \"element\") root.children.push(...line.children);\n\t\t}\n\t}\n\tlet result = root;\n\tfor (const transformer of transformers) result = transformer?.root?.call(context, result) || result;\n\tif (grammarState) setLastGrammarStateToMap(result, grammarState);\n\treturn result;\n}\nfunction mergeWhitespaceTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\tconst newLine = [];\n\t\tlet carryOnContent = \"\";\n\t\tlet firstOffset;\n\t\tline.forEach((token, idx) => {\n\t\t\tconst couldMerge = !(token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough));\n\t\t\tif (couldMerge && token.content.match(/^\\s+$/) && line[idx + 1]) {\n\t\t\t\tif (firstOffset === void 0) firstOffset = token.offset;\n\t\t\t\tcarryOnContent += token.content;\n\t\t\t} else if (carryOnContent) {\n\t\t\t\tif (couldMerge) newLine.push({\n\t\t\t\t\t...token,\n\t\t\t\t\toffset: firstOffset,\n\t\t\t\t\tcontent: carryOnContent + token.content\n\t\t\t\t});\n\t\t\t\telse newLine.push({\n\t\t\t\t\tcontent: carryOnContent,\n\t\t\t\t\toffset: firstOffset\n\t\t\t\t}, token);\n\t\t\t\tfirstOffset = void 0;\n\t\t\t\tcarryOnContent = \"\";\n\t\t\t} else newLine.push(token);\n\t\t});\n\t\treturn newLine;\n\t});\n}\nfunction splitWhitespaceTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\treturn line.flatMap((token) => {\n\t\t\tif (token.content.match(/^\\s+$/)) return token;\n\t\t\tconst match = token.content.match(/^(\\s*)(.*?)(\\s*)$/);\n\t\t\tif (!match) return token;\n\t\t\tconst [, leading, content, trailing] = match;\n\t\t\tif (!leading && !trailing) return token;\n\t\t\tconst expanded = [{\n\t\t\t\t...token,\n\t\t\t\toffset: token.offset + leading.length,\n\t\t\t\tcontent\n\t\t\t}];\n\t\t\tif (leading) expanded.unshift({\n\t\t\t\tcontent: leading,\n\t\t\t\toffset: token.offset\n\t\t\t});\n\t\t\tif (trailing) expanded.push({\n\t\t\t\tcontent: trailing,\n\t\t\t\toffset: token.offset + leading.length + content.length\n\t\t\t});\n\t\t\treturn expanded;\n\t\t});\n\t});\n}\nfunction mergeAdjacentStyledTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\tconst newLine = [];\n\t\tfor (const token of line) {\n\t\t\tif (newLine.length === 0) {\n\t\t\t\tnewLine.push({ ...token });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst prevToken = newLine[newLine.length - 1];\n\t\t\tconst prevStyle = stringifyTokenStyle(prevToken.htmlStyle || getTokenStyleObject(prevToken));\n\t\t\tconst currentStyle = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n\t\t\tconst isPrevDecorated = prevToken.fontStyle && (prevToken.fontStyle & FontStyle.Underline || prevToken.fontStyle & FontStyle.Strikethrough);\n\t\t\tconst isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n\t\t\tif (!isPrevDecorated && !isDecorated && prevStyle === currentStyle) prevToken.content += token.content;\n\t\t\telse newLine.push({ ...token });\n\t\t}\n\t\treturn newLine;\n\t});\n}\n\n//#endregion\n//#region src/highlight/code-to-html.ts\nconst hastToHtml = toHtml;\n/**\n* Get highlighted code in HTML.\n*/\nfunction codeToHtml(primitive, code, options) {\n\tconst context = {\n\t\tmeta: {},\n\t\toptions,\n\t\tcodeToHast: (_code, _options) => codeToHast(primitive, _code, _options),\n\t\tcodeToTokens: (_code, _options) => codeToTokens(primitive, _code, _options)\n\t};\n\tlet result = hastToHtml(codeToHast(primitive, code, options, context));\n\tfor (const transformer of getTransformers(options)) result = transformer.postprocess?.call(context, result, options) || result;\n\treturn result;\n}\n\n//#endregion\n//#region src/constructors/highlighter.ts\n/**\n* Create a Shiki core highlighter instance, with no languages or themes bundled.\n* Wasm and each language and theme must be loaded manually.\n*\n* @see http://shiki.style/guide/bundles#fine-grained-bundle\n*/\nasync function createHighlighterCore(options) {\n\tconst primitive = await createShikiPrimitiveAsync$1(options);\n\treturn {\n\t\tgetLastGrammarState: (...args) => getLastGrammarState(primitive, ...args),\n\t\tcodeToTokensBase: (code, options) => codeToTokensBase(primitive, code, options),\n\t\tcodeToTokensWithThemes: (code, options) => codeToTokensWithThemes$1(primitive, code, options),\n\t\tcodeToTokens: (code, options) => codeToTokens(primitive, code, options),\n\t\tcodeToHast: (code, options) => codeToHast(primitive, code, options),\n\t\tcodeToHtml: (code, options) => codeToHtml(primitive, code, options),\n\t\tgetBundledLanguages: () => ({}),\n\t\tgetBundledThemes: () => ({}),\n\t\t...primitive,\n\t\tgetInternalContext: () => primitive\n\t};\n}\n/**\n* Create a Shiki core highlighter instance, with no languages or themes bundled.\n* Wasm and each language and theme must be loaded manually.\n*\n* Synchronous version of `createHighlighterCore`, which requires to provide the engine and all themes and languages upfront.\n*\n* @see http://shiki.style/guide/bundles#fine-grained-bundle\n*/\nfunction createHighlighterCoreSync(options) {\n\tconst internal = createShikiPrimitive$1(options);\n\treturn {\n\t\tgetLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n\t\tcodeToTokensBase: (code, options) => codeToTokensBase(internal, code, options),\n\t\tcodeToTokensWithThemes: (code, options) => codeToTokensWithThemes$1(internal, code, options),\n\t\tcodeToTokens: (code, options) => codeToTokens(internal, code, options),\n\t\tcodeToHast: (code, options) => codeToHast(internal, code, options),\n\t\tcodeToHtml: (code, options) => codeToHtml(internal, code, options),\n\t\tgetBundledLanguages: () => ({}),\n\t\tgetBundledThemes: () => ({}),\n\t\t...internal,\n\t\tgetInternalContext: () => internal\n\t};\n}\nfunction makeSingletonHighlighterCore(createHighlighter) {\n\tlet _shiki;\n\tasync function getSingletonHighlighterCore(options) {\n\t\tif (!_shiki) {\n\t\t\t_shiki = createHighlighter({\n\t\t\t\t...options,\n\t\t\t\tthemes: options.themes || [],\n\t\t\t\tlangs: options.langs || []\n\t\t\t});\n\t\t\treturn _shiki;\n\t\t} else {\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t}\n\t}\n\treturn getSingletonHighlighterCore;\n}\nconst getSingletonHighlighterCore = /* @__PURE__ */ makeSingletonHighlighterCore(createHighlighterCore);\n\n//#endregion\n//#region src/constructors/bundle-factory.ts\nfunction createBundledHighlighter(options) {\n\tconst bundledLanguages = options.langs;\n\tconst bundledThemes = options.themes;\n\tconst engine = options.engine;\n\tasync function createHighlighter(options) {\n\t\tfunction resolveLang(lang) {\n\t\t\tif (typeof lang === \"string\") {\n\t\t\t\tlang = options.langAlias?.[lang] || lang;\n\t\t\t\tif (isSpecialLang(lang)) return [];\n\t\t\t\tconst bundle = bundledLanguages[lang];\n\t\t\t\tif (!bundle) throw new ShikiError$1(`Language \\`${lang}\\` is not included in this bundle. You may want to load it from external source.`);\n\t\t\t\treturn bundle;\n\t\t\t}\n\t\t\treturn lang;\n\t\t}\n\t\tfunction resolveTheme(theme) {\n\t\t\tif (isSpecialTheme(theme)) return \"none\";\n\t\t\tif (typeof theme === \"string\") {\n\t\t\t\tconst bundle = bundledThemes[theme];\n\t\t\t\tif (!bundle) throw new ShikiError$1(`Theme \\`${theme}\\` is not included in this bundle. You may want to load it from external source.`);\n\t\t\t\treturn bundle;\n\t\t\t}\n\t\t\treturn theme;\n\t\t}\n\t\tconst _themes = (options.themes ?? []).map((i) => resolveTheme(i));\n\t\tconst langs = (options.langs ?? []).map((i) => resolveLang(i));\n\t\tconst core = await createHighlighterCore({\n\t\t\tengine: options.engine ?? engine(),\n\t\t\t...options,\n\t\t\tthemes: _themes,\n\t\t\tlangs\n\t\t});\n\t\treturn {\n\t\t\t...core,\n\t\t\tloadLanguage(...langs) {\n\t\t\t\treturn core.loadLanguage(...langs.map(resolveLang));\n\t\t\t},\n\t\t\tloadTheme(...themes) {\n\t\t\t\treturn core.loadTheme(...themes.map(resolveTheme));\n\t\t\t},\n\t\t\tgetBundledLanguages() {\n\t\t\t\treturn bundledLanguages;\n\t\t\t},\n\t\t\tgetBundledThemes() {\n\t\t\t\treturn bundledThemes;\n\t\t\t}\n\t\t};\n\t}\n\treturn createHighlighter;\n}\nfunction makeSingletonHighlighter(createHighlighter) {\n\tlet _shiki;\n\tasync function getSingletonHighlighter(options = {}) {\n\t\tif (!_shiki) {\n\t\t\t_shiki = createHighlighter({\n\t\t\t\t...options,\n\t\t\t\tthemes: [],\n\t\t\t\tlangs: []\n\t\t\t});\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t} else {\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t}\n\t}\n\treturn getSingletonHighlighter;\n}\nfunction createSingletonShorthands(createHighlighter, config) {\n\tconst getSingletonHighlighter = makeSingletonHighlighter(createHighlighter);\n\tasync function get(code, options) {\n\t\tconst shiki = await getSingletonHighlighter({\n\t\t\tlangs: [options.lang],\n\t\t\tthemes: \"theme\" in options ? [options.theme] : Object.values(options.themes)\n\t\t});\n\t\tconst langs = await config?.guessEmbeddedLanguages?.(code, options.lang, shiki);\n\t\tif (langs) await shiki.loadLanguage(...langs);\n\t\treturn shiki;\n\t}\n\treturn {\n\t\tgetSingletonHighlighter(options) {\n\t\t\treturn getSingletonHighlighter(options);\n\t\t},\n\t\tasync codeToHtml(code, options) {\n\t\t\treturn (await get(code, options)).codeToHtml(code, options);\n\t\t},\n\t\tasync codeToHast(code, options) {\n\t\t\treturn (await get(code, options)).codeToHast(code, options);\n\t\t},\n\t\tasync codeToTokens(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokens(code, options);\n\t\t},\n\t\tasync codeToTokensBase(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokensBase(code, options);\n\t\t},\n\t\tasync codeToTokensWithThemes(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokensWithThemes(code, options);\n\t\t},\n\t\tasync getLastGrammarState(code, options) {\n\t\t\treturn (await getSingletonHighlighter({\n\t\t\t\tlangs: [options.lang],\n\t\t\t\tthemes: [options.theme]\n\t\t\t})).getLastGrammarState(code, options);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/theme-css-variables.ts\n/**\n* A factory function to create a css-variable-based theme\n*\n* @see https://shiki.style/guide/theme-colors#css-variables-theme\n*/\nfunction createCssVariablesTheme(options = {}) {\n\tconst { name = \"css-variables\", variablePrefix = \"--shiki-\", fontStyle = true } = options;\n\tconst variable = (name) => {\n\t\tif (options.variableDefaults?.[name]) return `var(${variablePrefix}${name}, ${options.variableDefaults[name]})`;\n\t\treturn `var(${variablePrefix}${name})`;\n\t};\n\tconst theme = {\n\t\tname,\n\t\ttype: \"dark\",\n\t\tcolors: {\n\t\t\t\"editor.foreground\": variable(\"foreground\"),\n\t\t\t\"editor.background\": variable(\"background\"),\n\t\t\t\"terminal.ansiBlack\": variable(\"ansi-black\"),\n\t\t\t\"terminal.ansiRed\": variable(\"ansi-red\"),\n\t\t\t\"terminal.ansiGreen\": variable(\"ansi-green\"),\n\t\t\t\"terminal.ansiYellow\": variable(\"ansi-yellow\"),\n\t\t\t\"terminal.ansiBlue\": variable(\"ansi-blue\"),\n\t\t\t\"terminal.ansiMagenta\": variable(\"ansi-magenta\"),\n\t\t\t\"terminal.ansiCyan\": variable(\"ansi-cyan\"),\n\t\t\t\"terminal.ansiWhite\": variable(\"ansi-white\"),\n\t\t\t\"terminal.ansiBrightBlack\": variable(\"ansi-bright-black\"),\n\t\t\t\"terminal.ansiBrightRed\": variable(\"ansi-bright-red\"),\n\t\t\t\"terminal.ansiBrightGreen\": variable(\"ansi-bright-green\"),\n\t\t\t\"terminal.ansiBrightYellow\": variable(\"ansi-bright-yellow\"),\n\t\t\t\"terminal.ansiBrightBlue\": variable(\"ansi-bright-blue\"),\n\t\t\t\"terminal.ansiBrightMagenta\": variable(\"ansi-bright-magenta\"),\n\t\t\t\"terminal.ansiBrightCyan\": variable(\"ansi-bright-cyan\"),\n\t\t\t\"terminal.ansiBrightWhite\": variable(\"ansi-bright-white\")\n\t\t},\n\t\ttokenColors: [\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"keyword.operator.accessor\",\n\t\t\t\t\t\"meta.group.braces.round.function.arguments\",\n\t\t\t\t\t\"meta.template.expression\",\n\t\t\t\t\t\"markup.fenced_code meta.embedded.block\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"foreground\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"emphasis\",\n\t\t\t\tsettings: { fontStyle: \"italic\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"strong\",\n\t\t\t\t\t\"markup.heading.markdown\",\n\t\t\t\t\t\"markup.bold.markdown\"\n\t\t\t\t],\n\t\t\t\tsettings: { fontStyle: \"bold\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.italic.markdown\"],\n\t\t\t\tsettings: { fontStyle: \"italic\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"meta.link.inline.markdown\",\n\t\t\t\tsettings: {\n\t\t\t\t\tfontStyle: \"underline\",\n\t\t\t\t\tforeground: variable(\"token-link\")\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"markup.fenced_code\",\n\t\t\t\t\t\"markup.inline\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-string\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"comment\", \"string.quoted.docstring.multi\"],\n\t\t\t\tsettings: { foreground: variable(\"token-comment\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"constant.numeric\",\n\t\t\t\t\t\"constant.language\",\n\t\t\t\t\t\"constant.other.placeholder\",\n\t\t\t\t\t\"constant.character.format.placeholder\",\n\t\t\t\t\t\"variable.language.this\",\n\t\t\t\t\t\"variable.other.object\",\n\t\t\t\t\t\"variable.other.class\",\n\t\t\t\t\t\"variable.other.constant\",\n\t\t\t\t\t\"meta.property-name\",\n\t\t\t\t\t\"meta.property-value\",\n\t\t\t\t\t\"support\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-constant\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"keyword\",\n\t\t\t\t\t\"storage.modifier\",\n\t\t\t\t\t\"storage.type\",\n\t\t\t\t\t\"storage.control.clojure\",\n\t\t\t\t\t\"entity.name.function.clojure\",\n\t\t\t\t\t\"entity.name.tag.yaml\",\n\t\t\t\t\t\"support.function.node\",\n\t\t\t\t\t\"support.type.property-name.json\",\n\t\t\t\t\t\"punctuation.separator.key-value\",\n\t\t\t\t\t\"punctuation.definition.template-expression\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-keyword\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"variable.parameter.function\",\n\t\t\t\tsettings: { foreground: variable(\"token-parameter\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"support.function\",\n\t\t\t\t\t\"entity.name.type\",\n\t\t\t\t\t\"entity.other.inherited-class\",\n\t\t\t\t\t\"meta.function-call\",\n\t\t\t\t\t\"meta.instance.constructor\",\n\t\t\t\t\t\"entity.other.attribute-name\",\n\t\t\t\t\t\"entity.name.function\",\n\t\t\t\t\t\"constant.keyword.clojure\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-function\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"entity.name.tag\",\n\t\t\t\t\t\"string.quoted\",\n\t\t\t\t\t\"string.regexp\",\n\t\t\t\t\t\"string.interpolated\",\n\t\t\t\t\t\"string.template\",\n\t\t\t\t\t\"string.unquoted.plain.out.yaml\",\n\t\t\t\t\t\"keyword.other.template\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-string-expression\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"punctuation.definition.arguments\",\n\t\t\t\t\t\"punctuation.definition.dict\",\n\t\t\t\t\t\"punctuation.separator\",\n\t\t\t\t\t\"meta.function-call.arguments\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-punctuation\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.underline.link\", \"punctuation.definition.metadata.markdown\"],\n\t\t\t\tsettings: { foreground: variable(\"token-link\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"beginning.punctuation.definition.list.markdown\"],\n\t\t\t\tsettings: { foreground: variable(\"token-string\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"punctuation.definition.string.begin.markdown\",\n\t\t\t\t\t\"punctuation.definition.string.end.markdown\",\n\t\t\t\t\t\"string.other.link.title.markdown\",\n\t\t\t\t\t\"string.other.link.description.markdown\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-keyword\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"markup.inserted\",\n\t\t\t\t\t\"meta.diff.header.to-file\",\n\t\t\t\t\t\"punctuation.definition.inserted\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-inserted\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"markup.deleted\",\n\t\t\t\t\t\"meta.diff.header.from-file\",\n\t\t\t\t\t\"punctuation.definition.deleted\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-deleted\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.changed\", \"punctuation.definition.changed\"],\n\t\t\t\tsettings: { foreground: variable(\"token-changed\") }\n\t\t\t}\n\t\t]\n\t};\n\tif (!fontStyle) theme.tokenColors = theme.tokenColors?.map((tokenColor) => {\n\t\tif (tokenColor.settings?.fontStyle) delete tokenColor.settings.fontStyle;\n\t\treturn tokenColor;\n\t});\n\treturn theme;\n}\n\n//#endregion\nexport { ShikiError, addClassToHast, applyColorReplacements, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createBundledHighlighter, createCssVariablesTheme, createHighlighterCore, createHighlighterCoreSync, createPositionConverter, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitiveAsync, createSingletonShorthands, flatTokenVariants, getLastGrammarState, getSingletonHighlighterCore, getTokenStyleObject, guessEmbeddedLanguages, hastToHtml, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, makeSingletonHighlighter, makeSingletonHighlighterCore, normalizeGetter, normalizeTheme, resolveColorReplacements, splitLines, splitToken, splitTokens, stringifyTokenStyle, toArray, tokenizeAnsiWithTheme, tokenizeWithTheme, tokensToHast, transformerDecorations };", "//#region src/scanner.ts\nconst MAX = 4294967295;\nvar JavaScriptScanner = class {\n\tregexps;\n\tconstructor(patterns, options = {}) {\n\t\tthis.patterns = patterns;\n\t\tthis.options = options;\n\t\tconst { forgiving = false, cache, regexConstructor } = options;\n\t\tif (!regexConstructor) throw new Error(\"Option `regexConstructor` is not provided\");\n\t\tthis.regexps = patterns.map((p) => {\n\t\t\tif (typeof p !== \"string\") return p;\n\t\t\tconst cached = cache?.get(p);\n\t\t\tif (cached) {\n\t\t\t\tif (cached instanceof RegExp) return cached;\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow cached;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst regex = regexConstructor(p);\n\t\t\t\tcache?.set(p, regex);\n\t\t\t\treturn regex;\n\t\t\t} catch (e) {\n\t\t\t\tcache?.set(p, e);\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t});\n\t}\n\tfindNextMatchSync(string, startPosition, _options) {\n\t\tconst str = typeof string === \"string\" ? string : string.content;\n\t\tconst pending = [];\n\t\tfunction toResult(index, match, offset = 0) {\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tcaptureIndices: match.indices.map((indice) => {\n\t\t\t\t\tif (indice == null) return {\n\t\t\t\t\t\tstart: MAX,\n\t\t\t\t\t\tend: MAX,\n\t\t\t\t\t\tlength: 0\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstart: indice[0] + offset,\n\t\t\t\t\t\tend: indice[1] + offset,\n\t\t\t\t\t\tlength: indice[1] - indice[0]\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t\tfor (let i = 0; i < this.regexps.length; i++) {\n\t\t\tconst regexp = this.regexps[i];\n\t\t\tif (!regexp) continue;\n\t\t\ttry {\n\t\t\t\tregexp.lastIndex = startPosition;\n\t\t\t\tconst match = regexp.exec(str);\n\t\t\t\tif (!match) continue;\n\t\t\t\tif (match.index === startPosition) return toResult(i, match, 0);\n\t\t\t\tpending.push([\n\t\t\t\t\ti,\n\t\t\t\t\tmatch,\n\t\t\t\t\t0\n\t\t\t\t]);\n\t\t\t} catch (e) {\n\t\t\t\tif (this.options.forgiving) continue;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t\tif (pending.length) {\n\t\t\tconst minIndex = Math.min(...pending.map((m) => m[1].index));\n\t\t\tfor (const [i, match, offset] of pending) if (match.index === minIndex) return toResult(i, match, offset);\n\t\t}\n\t\treturn null;\n\t}\n};\n\n//#endregion\nexport { JavaScriptScanner as t };", "function cpOf(char: string): number {\n // Count code point length\n if ([...char].length !== 1) {\n throw new Error(`Expected \"${char}\" to be a single code point`);\n }\n return char.codePointAt(0)!;\n}\n\nfunction getOrInsert<Key, Value>(map: Map<Key, Value>, key: Key, defaultValue: Value): Value {\n if (!map.has(key)) {\n map.set(key, defaultValue);\n }\n return map.get(key)!;\n}\n\nconst PosixClassNames = new Set([\n 'alnum',\n 'alpha',\n 'ascii',\n 'blank',\n 'cntrl',\n 'digit',\n 'graph',\n 'lower',\n 'print',\n 'punct',\n 'space',\n 'upper',\n 'word',\n 'xdigit',\n]);\n\nconst r = String.raw;\n\nfunction throwIfNullish<Value>(value: Value, msg?: string): NonNullable<Value> {\n if (value == null) {\n throw new Error(msg ?? 'Value expected');\n }\n return value;\n}\n\nexport {\n cpOf,\n getOrInsert,\n PosixClassNames,\n r,\n throwIfNullish,\n};\n", "import {cpOf, PosixClassNames, r, throwIfNullish} from '../utils.js';\n\ntype Token =\n AlternatorToken |\n AssertionToken |\n BackreferenceToken |\n CharacterToken |\n CharacterClassCloseToken |\n CharacterClassHyphenToken |\n CharacterClassIntersectorToken |\n CharacterClassOpenToken |\n CharacterSetToken |\n DirectiveToken |\n GroupCloseToken |\n GroupOpenToken |\n NamedCalloutToken |\n QuantifierToken |\n SubroutineToken;\n\ntype IntermediateToken =\n EscapedNumberToken;\n\ntype TokenCharacterSetKind =\n 'any' |\n 'digit' |\n 'dot' |\n 'hex' |\n 'newline' |\n 'posix' |\n 'property' |\n 'space' |\n 'text_segment' |\n 'word';\n\ntype TokenDirectiveKind =\n 'flags' |\n 'keep';\n\ntype TokenGroupOpenKind =\n 'absence_repeater' |\n 'atomic' |\n 'capturing' |\n 'group' |\n 'lookahead' |\n 'lookbehind';\n\ntype TokenQuantifierKind =\n 'greedy' |\n 'lazy' |\n 'possessive';\n\ntype TokenNamedCalloutKind =\n 'count' |\n 'cmp' |\n 'error' |\n 'fail' |\n 'max' |\n 'mismatch' |\n 'skip' |\n 'total_count' |\n 'custom';\n\nconst charClassOpenPattern = r`\\[\\^?`;\nconst sharedEscapesPattern = `${\n // Control char\n 'c.? | C(?:-.?)?'\n}|${\n // Unicode property; Onig considers `\\p` an identity escape, but e.g. `\\p{`, `\\p{ ^L}`, and\n // `\\p{gc=L}` are invalid\n r`[pP]\\{(?:\\^?[-\\x20_]*[A-Za-z][-\\x20\\w]*\\})?`\n}|${\n // Hex encoded byte sequence; attempt match before other `\\xNN` hex char\n r`x[89A-Fa-f]\\p{AHex}(?:\\\\x[89A-Fa-f]\\p{AHex})*`\n}|${\n // Hex char\n r`u(?:\\p{AHex}{4})? | x\\{[^\\}]*\\}? | x\\p{AHex}{0,2}`\n}|${\n // Enclosed octal code point\n r`o\\{[^\\}]*\\}?`\n}|${\n // Escaped number\n r`\\d{1,3}`\n}`;\n// Even with flag x, Onig doesn't allow whitespace to separate a quantifier from the `?` or `+`\n// that makes it lazy or possessive. Possessive suffixes don't apply to interval quantifiers\nconst quantifierRe = /[?*+][?+]?|\\{(?:\\d+(?:,\\d*)?|,\\d+)\\}\\??/;\nconst tokenRe = new RegExp(r`\n \\\\ (?:\n ${sharedEscapesPattern}\n | [gk]<[^>]*>?\n | [gk]'[^']*'?\n | .\n )\n | \\( (?:\n \\? (?:\n [:=!>({]\n | <[=!]\n | <[^>]*>\n | '[^']*'\n | ~\\|?\n | #(?:[^)\\\\]|\\\\.?)*\n | [^:)]*[:)]\n )?\n | \\*[^\\)]*\\)?\n )?\n | (?:${quantifierRe.source})+\n | ${charClassOpenPattern}\n | .\n`.replace(/\\s+/g, ''), 'gsu');\nconst charClassTokenRe = new RegExp(r`\n \\\\ (?:\n ${sharedEscapesPattern}\n | .\n )\n | \\[:(?:\\^?\\p{Alpha}+|\\^):\\]\n | ${charClassOpenPattern}\n | &&\n | .\n`.replace(/\\s+/g, ''), 'gsu');\n\ntype Context = {\n captureGroup: boolean;\n getCurrentModX(): boolean;\n numOpenGroups: number;\n popModX(): void;\n pushModX(isXOn: boolean): void;\n replaceCurrentModX(isXOn: boolean): void;\n singleline: boolean;\n};\n\ntype TokenizeOptions = {\n flags?: string;\n rules?: {\n captureGroup?: boolean;\n singleline?: boolean;\n };\n};\n\nfunction tokenize(pattern: string, options: TokenizeOptions = {}): {\n tokens: Array<Token>;\n flags: FlagProperties;\n} {\n const opts = {\n flags: '',\n ...options,\n rules: {\n captureGroup: false, // `ONIG_OPTION_CAPTURE_GROUP`\n singleline: false, // `ONIG_OPTION_SINGLELINE`\n ...options.rules,\n },\n };\n if (typeof pattern !== 'string') {\n throw new Error('String expected as pattern');\n }\n const flagProperties = getFlagProperties(opts.flags);\n const xStack = [flagProperties.extended];\n const context: Context = {\n captureGroup: opts.rules.captureGroup,\n // Always at least has the top-level flag x\n getCurrentModX() {return xStack.at(-1)!},\n numOpenGroups: 0,\n popModX() {xStack.pop()},\n pushModX(isXOn) {xStack.push(isXOn)},\n replaceCurrentModX(isXOn) {xStack[xStack.length - 1] = isXOn},\n singleline: opts.rules.singleline,\n };\n let tokens: Array<Token | IntermediateToken> = [];\n let match: RegExpExecArray | null;\n tokenRe.lastIndex = 0;\n while ((match = tokenRe.exec(pattern))) {\n const result = getTokenWithDetails(context, pattern, match[0], tokenRe.lastIndex);\n if (result.tokens) {\n tokens.push(...result.tokens);\n } else if (result.token) {\n tokens.push(result.token);\n }\n if (result.lastIndex !== undefined) {\n tokenRe.lastIndex = result.lastIndex;\n }\n }\n\n const potentialUnnamedCaptureTokens: Array<GroupOpenToken> = [];\n let numNamedAndOptInUnnamedCaptures = 0;\n tokens.filter(t => t.type === 'GroupOpen').forEach(t => {\n if (t.kind === 'capturing') {\n t.number = ++numNamedAndOptInUnnamedCaptures;\n } else if (t.raw === '(') {\n potentialUnnamedCaptureTokens.push(t);\n }\n });\n // Enable unnamed capturing groups if no named captures (when `captureGroup` not enabled)\n if (!numNamedAndOptInUnnamedCaptures) {\n potentialUnnamedCaptureTokens.forEach((t, i) => {\n t.kind = 'capturing';\n t.number = i + 1;\n });\n }\n const numCaptures = numNamedAndOptInUnnamedCaptures || potentialUnnamedCaptureTokens.length;\n // Can now split escaped nums accurately, accounting for number of captures\n const tokensWithoutIntermediate = tokens.map(\n t => t.type === 'EscapedNumber' ? splitEscapedNumberToken(t, numCaptures) : t\n ).flat();\n\n return {\n tokens: tokensWithoutIntermediate,\n flags: flagProperties,\n };\n}\n\nfunction getTokenWithDetails(context: Context, pattern: string, m: string, lastIndex: number): {\n token: Token | IntermediateToken;\n tokens?: never;\n lastIndex?: number;\n} | {\n token?: never;\n tokens: Array<Token | IntermediateToken>;\n lastIndex?: number;\n} | {\n token?: never;\n tokens?: never;\n lastIndex: number;\n} {\n const [m0, m1] = m;\n\n if (m === '[' || m === '[^') {\n const result = getAllTokensForCharClass(pattern, m, lastIndex);\n return {\n // Array of all of the char class's tokens\n tokens: result.tokens,\n // Jump forward to the end of the char class\n lastIndex: result.lastIndex,\n };\n }\n\n if (m0 === '\\\\') {\n if ('AbBGyYzZ'.includes(m1)) {\n return {\n token: createAssertionToken(m, m),\n };\n }\n if (/^\\\\g[<']/.test(m)) {\n if (!/^\\\\g(?:<[^>]+>|'[^']+')$/.test(m)) {\n throw new Error(`Invalid group name \"${m}\"`);\n }\n return {\n token: createSubroutineToken(m),\n };\n }\n if (/^\\\\k[<']/.test(m)) {\n if (!/^\\\\k(?:<[^>]+>|'[^']+')$/.test(m)) {\n throw new Error(`Invalid group name \"${m}\"`);\n }\n return {\n token: createBackreferenceToken(m),\n };\n }\n if (m1 === 'K') {\n return {\n token: createDirectiveToken('keep', m),\n };\n }\n if (m1 === 'N' || m1 === 'R') {\n return {\n token: createCharacterSetToken('newline', m, {\n // `\\N` and `\\R` are not actually opposites since the former only excludes `\\n`\n negate: m1 === 'N',\n }),\n };\n }\n if (m1 === 'O') {\n return {\n token: createCharacterSetToken('any', m),\n };\n }\n if (m1 === 'X') {\n return {\n token: createCharacterSetToken('text_segment', m),\n };\n }\n // Run last since it assumes an identity escape as final condition\n const result = tokenizeSharedEscape(m, {inCharClass: false});\n return Array.isArray(result) ? {tokens: result} : {token: result};\n }\n\n if (m0 === '(') {\n if (m1 === '*') {\n return {\n token: tokenizeNamedCallout(m),\n };\n }\n if (m === '(?{') {\n throw new Error(`Unsupported callout \"${m}\"`);\n }\n // Comment group\n if (m.startsWith('(?#')) {\n // Everything except the closing unescaped `)` is included in the match\n if (pattern[lastIndex] !== ')') {\n throw new Error('Unclosed comment group \"(?#\"');\n }\n return {\n // Jump forward to after the closing paren\n lastIndex: lastIndex + 1,\n };\n }\n // Flag modifier (directive or group opener)\n if (/^\\(\\?[-imx]+[:)]$/.test(m)) {\n return {\n token: tokenizeFlagModifier(m, context),\n };\n }\n // --- Remaining group types all reuse current flag x status ---\n context.pushModX(context.getCurrentModX());\n context.numOpenGroups++;\n if (\n // Unnamed capture if no named captures present and `captureGroup` not enabled, else\n // noncapturing group\n (m === '(' && !context.captureGroup) ||\n // Noncapturing group\n m === '(?:'\n ) {\n return {\n // For `(`, will later change to `capturing` and add `number` prop if no named captures\n token: createGroupOpenToken('group', m),\n };\n }\n // Atomic group\n if (m === '(?>') {\n return {\n token: createGroupOpenToken('atomic', m),\n };\n }\n // Lookaround\n if (m === '(?=' || m === '(?!' || m === '(?<=' || m === '(?<!') {\n return {\n token: createGroupOpenToken(m[2] === '<' ? 'lookbehind' : 'lookahead', m, {\n negate: m.endsWith('!'),\n }),\n };\n }\n // Unnamed capture when `captureGroup` enabled, or named capture (checked after lookbehind due\n // to similar syntax)\n if (\n (m === '(' && context.captureGroup) ||\n (m.startsWith('(?<') && m.endsWith('>')) ||\n (m.startsWith(\"(?'\") && m.endsWith(\"'\"))\n ) {\n return {\n token: createGroupOpenToken('capturing', m, {\n // Will add `number` prop in a second pass\n ...(m !== '(' && {name: m.slice(3, -1)}),\n }),\n };\n }\n if (m.startsWith('(?~')) {\n if (m === '(?~|') {\n throw new Error(`Unsupported absence function kind \"${m}\"`);\n }\n return {\n token: createGroupOpenToken('absence_repeater', m),\n };\n }\n if (m === '(?(') {\n // TODO: Add support\n throw new Error(`Unsupported conditional \"${m}\"`);\n }\n throw new Error(`Invalid or unsupported group option \"${m}\"`);\n }\n if (m === ')') {\n context.popModX();\n context.numOpenGroups--;\n if (context.numOpenGroups < 0) {\n throw new Error('Unmatched \")\"');\n }\n return {\n token: createGroupCloseToken(m),\n };\n }\n\n if (context.getCurrentModX()) {\n if (m === '#') {\n // Onig's only line break char is line feed\n const end = pattern.indexOf('\\n', lastIndex);\n return {\n // Jump forward to the end of the comment\n lastIndex: end === -1 ? pattern.length : end,\n };\n }\n if (/^\\s$/.test(m)) {\n const re = /\\s+/y;\n re.lastIndex = lastIndex;\n const rest = re.exec(pattern);\n return {\n // Jump forward to the end of the whitespace\n lastIndex: rest ? re.lastIndex : lastIndex,\n };\n }\n }\n\n if (m === '.') {\n return {\n token: createCharacterSetToken('dot', m),\n };\n }\n\n if (m === '^' || m === '$') {\n const kind = context.singleline ? {\n '^': r`\\A`,\n '$': r`\\Z`,\n }[m] : m;\n return {\n token: createAssertionToken(kind, m),\n };\n }\n\n if (m === '|') {\n return {\n token: createAlternatorToken(m),\n };\n }\n\n if (quantifierRe.test(m)) {\n return {\n tokens: splitQuantifierMatch(m),\n };\n }\n\n // `cpOf` asserts that it's a single code point\n return {\n token: createCharacterToken(cpOf(m), m),\n };\n}\n\nfunction getAllTokensForCharClass(pattern: string, opener: CharacterClassOpener, lastIndex: number): {\n tokens: Array<Token | IntermediateToken>;\n lastIndex: number;\n} {\n const tokens: Array<Token | IntermediateToken> = [createCharacterClassOpenToken(opener[1] === '^', opener)];\n let numCharClassesOpen = 1;\n let match: RegExpExecArray | null;\n charClassTokenRe.lastIndex = lastIndex;\n while ((match = charClassTokenRe.exec(pattern))) {\n const m = match[0];\n // Start of nested char class\n // POSIX classes are handled as a single token; not as a nested char class\n if (m[0] === '[' && m[1] !== ':') {\n numCharClassesOpen++;\n tokens.push(createCharacterClassOpenToken(m[1] === '^', m as CharacterClassOpener));\n } else if (m === ']') {\n // Always at least includes the char class opener\n if (tokens.at(-1)!.type === 'CharacterClassOpen') {\n // Allow unescaped `]` as leading char\n tokens.push(createCharacterToken(93, m));\n } else {\n numCharClassesOpen--;\n tokens.push(createCharacterClassCloseToken(m));\n if (!numCharClassesOpen) {\n break;\n }\n }\n } else {\n const result = tokenizeAnyTokenWithinCharClass(m);\n if (Array.isArray(result)) {\n tokens.push(...result);\n } else {\n tokens.push(result);\n }\n }\n }\n return {\n tokens,\n lastIndex: charClassTokenRe.lastIndex || pattern.length,\n };\n}\n\nfunction tokenizeAnyTokenWithinCharClass(raw: string): Token | IntermediateToken | Array<Token> {\n if (raw[0] === '\\\\') {\n // Assumes an identity escape as final condition\n return tokenizeSharedEscape(raw, {inCharClass: true});\n }\n // POSIX class: `[:name:]` or `[:^name:]`\n if (raw[0] === '[') {\n const posix = /\\[:(?<negate>\\^?)(?<name>[a-z]+):\\]/.exec(raw);\n if (!posix || !PosixClassNames.has(posix.groups!.name)) {\n throw new Error(`Invalid POSIX class \"${raw}\"`);\n }\n return createCharacterSetToken('posix', raw, {\n value: posix.groups!.name,\n negate: !!posix.groups!.negate,\n });\n }\n // Range (possibly invalid) or literal hyphen\n if (raw === '-') {\n return createCharacterClassHyphenToken(raw);\n }\n if (raw === '&&') {\n return createCharacterClassIntersectorToken(raw);\n }\n // `cpOf` asserts that it's a single code point\n return createCharacterToken(cpOf(raw), raw);\n}\n\n// Tokens shared by base syntax and char class syntax that start with `\\`\nfunction tokenizeSharedEscape(raw: string, {inCharClass}: {inCharClass: boolean}): Token | IntermediateToken | Array<Token> {\n const char1 = raw[1];\n if (char1 === 'c' || char1 === 'C') {\n return tokenizeControlCharacter(raw);\n }\n if ('dDhHsSwW'.includes(char1)) {\n return tokenizeShorthand(raw);\n }\n if (raw.startsWith(r`\\o{`)) {\n throw new Error(`Incomplete, invalid, or unsupported octal code point \"${raw}\"`);\n }\n if (/^\\\\[pP]\\{/.test(raw)) {\n if (raw.length === 3) {\n throw new Error(`Incomplete or invalid Unicode property \"${raw}\"`);\n }\n return tokenizeUnicodeProperty(raw);\n }\n // Hex UTF-8 encoded byte sequence\n if (/^\\\\x[89A-Fa-f]\\p{AHex}/u.test(raw)) {\n try {\n const bytes = raw.split(/\\\\x/).slice(1).map(hex => parseInt(hex, 16));\n const decoded = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true,\n }).decode(new Uint8Array(bytes));\n const encoder = new TextEncoder();\n const tokens = [...decoded].map(char => {\n // Since this regenerates `raw`, it might have different casing for hex A-F than the input\n const raw = [...encoder.encode(char)].map(byte => `\\\\x${byte.toString(16)}`).join('');\n return createCharacterToken(cpOf(char), raw);\n });\n return tokens;\n } catch {\n throw new Error(`Multibyte code \"${raw}\" incomplete or invalid in Oniguruma`);\n }\n }\n if (char1 === 'u' || char1 === 'x') {\n return createCharacterToken(getValidatedHexCharCode(raw), raw);\n }\n if (EscapeCharCodes.has(char1)) {\n return createCharacterToken(EscapeCharCodes.get(char1)!, raw);\n }\n // Escaped number: backref (possibly invalid), null, octal, or identity escape, possibly followed\n // by 1-2 literal digits\n if (/\\d/.test(char1)) {\n return createEscapedNumberToken(inCharClass, raw);\n }\n if (raw === '\\\\') {\n throw new Error(r`Incomplete escape \"\\\"`);\n }\n // Meta `\\M-x` and `\\M-\\C-x` are unsupported; avoid treating as an identity escape\n if (char1 === 'M') {\n // TODO: Add support. See:\n // - <github.com/kkos/oniguruma/blob/master/doc/SYNTAX.md#12-onig_syn_op2_esc_capital_m_bar_meta-enable-m-x>\n // - <github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/regparse.c#L4695>\n // - <github.com/ammar/regexp_parser/blob/8851030feda68223d74f502335fb254a20d77016/lib/regexp_parser/expression/classes/escape_sequence.rb#L75>\n throw new Error(`Unsupported meta \"${raw}\"`);\n }\n // Identity escape; count code point length\n if ([...raw].length === 2) {\n return createCharacterToken(raw.codePointAt(1)!, raw);\n }\n throw new Error(`Unexpected escape \"${raw}\"`);\n}\n\n// --------------------------------\n// --- Token creation and types ---\n// --------------------------------\n\ntype AlternatorToken = {\n type: 'Alternator';\n raw: '|';\n};\nfunction createAlternatorToken(raw: '|'): AlternatorToken {\n return {\n type: 'Alternator',\n raw,\n };\n}\n\ntype AssertionToken = {\n type: 'Assertion';\n kind: string;\n raw: string;\n};\nfunction createAssertionToken(kind: string, raw: string): AssertionToken {\n return {\n type: 'Assertion',\n kind,\n raw,\n };\n}\n\ntype BackreferenceToken = {\n type: 'Backreference';\n raw: string;\n};\nfunction createBackreferenceToken(raw: string): BackreferenceToken {\n return {\n type: 'Backreference',\n raw,\n };\n}\n\ntype CharacterToken = {\n type: 'Character';\n value: number;\n raw: string;\n};\nfunction createCharacterToken(value: number, raw: string): CharacterToken {\n return {\n type: 'Character',\n value,\n raw,\n };\n}\n\ntype CharacterClassCloseToken = {\n type: 'CharacterClassClose';\n raw: ']';\n};\nfunction createCharacterClassCloseToken(raw: ']'): CharacterClassCloseToken {\n return {\n type: 'CharacterClassClose',\n raw,\n };\n}\n\ntype CharacterClassHyphenToken = {\n type: 'CharacterClassHyphen';\n raw: '-';\n};\nfunction createCharacterClassHyphenToken(raw: '-'): CharacterClassHyphenToken {\n return {\n type: 'CharacterClassHyphen',\n raw,\n };\n}\n\ntype CharacterClassIntersectorToken = {\n type: 'CharacterClassIntersector';\n raw: '&&';\n};\nfunction createCharacterClassIntersectorToken(raw: '&&'): CharacterClassIntersectorToken {\n return {\n type: 'CharacterClassIntersector',\n raw,\n };\n}\n\ntype CharacterClassOpenToken = {\n type: 'CharacterClassOpen';\n negate: boolean;\n raw: CharacterClassOpener;\n};\ntype CharacterClassOpener = '[' | '[^';\nfunction createCharacterClassOpenToken(negate: boolean, raw: CharacterClassOpener): CharacterClassOpenToken {\n return {\n type: 'CharacterClassOpen',\n negate,\n raw,\n };\n}\n\ntype CharacterSetToken = {\n type: 'CharacterSet';\n kind: TokenCharacterSetKind;\n value?: string;\n negate?: boolean;\n raw: string;\n};\nfunction createCharacterSetToken(\n kind: TokenCharacterSetKind,\n raw: string,\n options: {\n value?: string;\n negate?: boolean;\n } = {}\n): CharacterSetToken {\n return {\n type: 'CharacterSet',\n kind,\n ...options,\n raw,\n };\n}\n\ntype DirectiveToken = {\n type: 'Directive';\n raw: string;\n} & ({\n kind: 'keep';\n flags?: never;\n} | {\n kind: 'flags';\n flags: FlagGroupModifiers;\n});\nfunction createDirectiveToken(kind: TokenDirectiveKind, raw: string, options: {flags?: FlagGroupModifiers} = {}): DirectiveToken {\n if (kind === 'keep') {\n return {\n type: 'Directive',\n kind,\n raw,\n };\n }\n return {\n type: 'Directive',\n kind,\n flags: throwIfNullish(options.flags),\n raw,\n };\n}\n\ntype EscapedNumberToken = {\n type: 'EscapedNumber';\n inCharClass: boolean;\n raw: string;\n};\n/**\nIntermediate representation only; will become a `Backreference` or one or more `Character`s.\n*/\nfunction createEscapedNumberToken(inCharClass: boolean, raw: string): EscapedNumberToken {\n return {\n type: 'EscapedNumber',\n inCharClass,\n raw,\n };\n}\n\ntype GroupCloseToken = {\n type: 'GroupClose';\n raw: ')';\n};\nfunction createGroupCloseToken(raw: ')'): GroupCloseToken {\n return {\n type: 'GroupClose',\n raw,\n };\n}\n\ntype GroupOpenToken = {\n type: 'GroupOpen';\n kind: TokenGroupOpenKind;\n flags?: FlagGroupModifiers;\n name?: string;\n number?: number;\n negate?: boolean;\n raw: string;\n};\nfunction createGroupOpenToken(\n kind: TokenGroupOpenKind,\n raw: string,\n options: {\n flags?: FlagGroupModifiers;\n name?: string;\n number?: number;\n negate?: boolean;\n } = {}\n): GroupOpenToken {\n return {\n type: 'GroupOpen',\n kind,\n ...options,\n raw,\n };\n}\n\ntype NamedCalloutToken = {\n type: 'NamedCallout';\n kind: TokenNamedCalloutKind;\n tag: string | null;\n arguments: Array<string | number> | null;\n raw: string;\n};\nfunction createNamedCalloutToken(\n kind: TokenNamedCalloutKind,\n tag: string | null,\n args: Array<string | number> | null,\n raw: string\n): NamedCalloutToken {\n return {\n type: 'NamedCallout',\n kind,\n tag,\n arguments: args,\n raw,\n };\n};\n\ntype QuantifierToken = {\n type: 'Quantifier';\n kind: TokenQuantifierKind;\n min: number;\n max: number;\n raw: string;\n};\nfunction createQuantifierToken(\n kind: TokenQuantifierKind,\n min: number,\n max: number,\n raw: string\n): QuantifierToken {\n return {\n type: 'Quantifier',\n kind,\n min,\n max,\n raw,\n };\n}\n\ntype SubroutineToken = {\n type: 'Subroutine';\n raw: string;\n};\nfunction createSubroutineToken(raw: string): SubroutineToken {\n return {\n type: 'Subroutine',\n raw,\n };\n}\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\ntype FlagProperties = {\n ignoreCase: boolean;\n dotAll: boolean;\n extended: boolean;\n digitIsAscii: boolean;\n posixIsAscii: boolean;\n spaceIsAscii: boolean;\n wordIsAscii: boolean;\n textSegmentMode: 'grapheme' | 'word' | null;\n};\n\ntype FlagGroupModifiers = {\n enable?: FlagGroupSwitches;\n disable?: FlagGroupSwitches;\n};\n\ntype FlagGroupSwitches = {\n ignoreCase?: true;\n dotAll?: true;\n extended?: true;\n};\n\nconst CalloutNames = new Set<Uppercase<Exclude<TokenNamedCalloutKind, 'custom'>>>([\n 'COUNT',\n 'CMP',\n 'ERROR',\n 'FAIL',\n 'MAX',\n 'MISMATCH',\n 'SKIP',\n 'TOTAL_COUNT',\n]);\n\nconst EscapeCharCodes = new Map([\n ['a', 7], // alert/bell (Not available in JS)\n ['b', 8], // backspace (only in char classes)\n ['e', 27], // escape (Not available in JS)\n ['f', 12], // form feed\n ['n', 10], // line feed\n ['r', 13], // carriage return\n ['t', 9], // horizontal tab\n ['v', 11], // vertical tab\n]);\n\n// Expects `\\cx` or `\\C-x`\nfunction tokenizeControlCharacter(raw: string): CharacterToken {\n const char = raw[1] === 'c' ? raw[2] : raw[3];\n if (!char || !/[A-Za-z]/.test(char)) {\n // Unlike JS, Onig allows any char to follow `\\c` or `\\C-`, but this is an extreme edge case\n // TODO: Add support. See:\n // - <github.com/kkos/oniguruma/blob/master/doc/SYNTAX.md#11-onig_syn_op2_esc_capital_c_bar_control-enable-c-x>\n // - <github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/regparse.c#L4695>\n throw new Error(`Unsupported control character \"${raw}\"`);\n }\n return createCharacterToken(cpOf(char.toUpperCase()) - 64, raw);\n}\n\nfunction tokenizeFlagModifier(raw: string, context: Context): DirectiveToken | GroupOpenToken {\n // Allows multiple `-` and solo `-` without `on` or `off` flags\n let {on, off} = /^\\(\\?(?<on>[imx]*)(?:-(?<off>[-imx]*))?/.exec(raw)!.groups as {on: string, off: string | undefined};\n off ??= '';\n // Flag x is used directly by the tokenizer since it changes how to interpret the pattern\n const isXOn = (context.getCurrentModX() || on.includes('x')) && !off.includes('x');\n const enabledFlags = getFlagGroupSwitches(on);\n const disabledFlags = getFlagGroupSwitches(off);\n const flagChanges: FlagGroupModifiers = {};\n enabledFlags && (flagChanges.enable = enabledFlags);\n disabledFlags && (flagChanges.disable = disabledFlags);\n // Flag directive; ex: `(?im-x)`\n if (raw.endsWith(')')) {\n // Replace flag x value until the end of the current group\n context.replaceCurrentModX(isXOn);\n // Can't remove flag directives without flags like `(?-)`; they affect following quantifiers\n return createDirectiveToken('flags', raw, {\n flags: flagChanges,\n });\n }\n // Flag group opener; ex: `(?im-x:`\n if (raw.endsWith(':')) {\n context.pushModX(isXOn);\n context.numOpenGroups++;\n return createGroupOpenToken('group', raw, {\n ...((enabledFlags || disabledFlags) && {flags: flagChanges}),\n });\n }\n throw new Error(`Unexpected flag modifier \"${raw}\"`);\n}\n\nfunction tokenizeNamedCallout(raw: string): NamedCalloutToken {\n const callout = /\\(\\*(?<name>[A-Za-z_]\\w*)?(?:\\[(?<tag>(?:[A-Za-z_]\\w*)?)\\])?(?:\\{(?<args>[^}]*)\\})?\\)/.exec(raw);\n if (!callout) {\n throw new Error(`Incomplete or invalid named callout \"${raw}\"`);\n }\n const {name, tag, args} = callout.groups as Partial<{\n name: string;\n tag: string;\n args: string;\n }>;\n if (!name) {\n throw new Error(`Invalid named callout \"${raw}\"`);\n }\n if (tag === '') {\n throw new Error(`Named callout tag with empty value not allowed \"${raw}\"`);\n }\n const argsArray: Array<string | number> = args ?\n args.split(',').\n // Onig skips over/ignores redundant/unnecessary commas\n filter(arg => arg !== '').\n map(arg => /^[+-]?\\d+$/.test(arg) ? +arg : arg) :\n [];\n const [arg0, arg1, arg2] = argsArray;\n const kind: TokenNamedCalloutKind = CalloutNames.has(name as Uppercase<Exclude<TokenNamedCalloutKind, 'custom'>>) ?\n name.toLowerCase() as TokenNamedCalloutKind :\n 'custom';\n switch (kind) {\n case 'fail':\n case 'mismatch':\n case 'skip':\n if (argsArray.length > 0) {\n throw new Error(`Named callout arguments not allowed \"${argsArray}\"`);\n }\n break;\n case 'error':\n if (argsArray.length > 1) {\n throw new Error(`Named callout allows only one argument \"${argsArray}\"`);\n }\n if (typeof arg0 === 'string') {\n throw new Error(`Named callout argument must be a number \"${arg0}\"`);\n }\n break;\n case 'max':\n if (!argsArray.length || argsArray.length > 2) {\n throw new Error(`Named callout must have one or two arguments \"${argsArray}\"`);\n }\n if (typeof arg0 === 'string' && !/^[A-Za-z_]\\w*$/.test(arg0)) {\n throw new Error(`Named callout argument one must be a tag or number \"${arg0}\"`);\n }\n if (argsArray.length === 2 && (typeof arg1 === 'number' || !/^[<>X]$/.test(arg1))) {\n throw new Error(`Named callout optional argument two must be '<', '>', or 'X' \"${arg1}\"`);\n }\n break;\n case 'count':\n case 'total_count':\n if (argsArray.length > 1) {\n throw new Error(`Named callout allows only one argument \"${argsArray}\"`);\n }\n if (argsArray.length === 1 && (typeof arg0 === 'number' || !/^[<>X]$/.test(arg0))) {\n throw new Error(`Named callout optional argument must be '<', '>', or 'X' \"${arg0}\"`);\n }\n break;\n case 'cmp':\n if (argsArray.length !== 3) {\n throw new Error(`Named callout must have three arguments \"${argsArray}\"`);\n }\n if (typeof arg0 === 'string' && !/^[A-Za-z_]\\w*$/.test(arg0)) {\n throw new Error(`Named callout argument one must be a tag or number \"${arg0}\"`);\n }\n if (typeof arg1 === 'number' || !/^(?:[<>!=]=|[<>])$/.test(arg1)) {\n throw new Error(`Named callout argument two must be '==', '!=', '>', '<', '>=', or '<=' \"${arg1}\"`);\n }\n if (typeof arg2 === 'string' && !/^[A-Za-z_]\\w*$/.test(arg2)) {\n throw new Error(`Named callout argument three must be a tag or number \"${arg2}\"`);\n }\n break;\n case 'custom':\n // TODO: Can support custom callout names via a new option that allows providing a list of\n // allowed, non-built-in names\n throw new Error(`Undefined callout name \"${name}\"`);\n default:\n throw new Error(`Unexpected named callout kind \"${kind}\"`);\n }\n // TODO: If supporting custom callout names in the future (with an added `name` property for\n // `NamedCalloutToken`), will need to set `name` to `null` if `kind` isn't `'custom'`\n return createNamedCalloutToken(kind, tag ?? null, args?.split(',') ?? null, raw);\n}\n\nfunction tokenizeQuantifier(raw: string): QuantifierToken {\n let kind: TokenQuantifierKind = null!;\n let min: number;\n let max: number;\n if (raw[0] === '{') {\n const {minStr, maxStr} =\n /^\\{(?<minStr>\\d*)(?:,(?<maxStr>\\d*))?/.exec(raw)!.groups as {minStr: string, maxStr: string | undefined};\n const limit = 100_000;\n if (+minStr > limit || (maxStr && +maxStr > limit)) {\n throw new Error('Quantifier value unsupported in Oniguruma');\n }\n min = +minStr;\n max = maxStr === undefined ? +minStr : (maxStr === '' ? Infinity : +maxStr);\n // By default, Onig doesn't support making interval quantifiers possessive with a `+` suffix;\n // uses reversed range instead\n if (min > max) {\n kind = 'possessive';\n [min, max] = [max, min];\n }\n if (raw.endsWith('?')) {\n if (kind === 'possessive') {\n // TODO: <github.com/slevithan/oniguruma-parser/issues/10>\n throw new Error('Unsupported possessive interval quantifier chain with \"?\"');\n }\n kind = 'lazy';\n } else if (!kind) {\n kind = 'greedy';\n }\n } else {\n min = raw[0] === '+' ? 1 : 0;\n max = raw[0] === '?' ? 1 : Infinity;\n kind = raw[1] === '+' ? 'possessive' : (raw[1] === '?' ? 'lazy' : 'greedy');\n }\n return createQuantifierToken(kind, min, max, raw);\n}\n\nfunction tokenizeShorthand(raw: string): CharacterSetToken {\n const lower = raw[1].toLowerCase();\n return createCharacterSetToken({\n 'd': 'digit',\n 'h': 'hex',\n 's': 'space',\n 'w': 'word',\n }[lower] as TokenCharacterSetKind, raw, {\n negate: raw[1] !== lower,\n });\n}\n\nfunction tokenizeUnicodeProperty(raw: string): CharacterSetToken {\n const {p, neg, value} = /^\\\\(?<p>[pP])\\{(?<neg>\\^?)(?<value>[^}]+)/.exec(raw)!.groups!;\n const negate = (p === 'P' && !neg) || (p === 'p' && !!neg);\n return createCharacterSetToken('property', raw, {\n value,\n negate,\n });\n}\n\nfunction getFlagGroupSwitches(flags: string): FlagGroupSwitches | null {\n // Don't include `false` for flags that aren't included\n const obj: FlagGroupSwitches = {};\n if (flags.includes('i')) {\n obj.ignoreCase = true;\n }\n if (flags.includes('m')) {\n // Onig flag m is equivalent to JS flag s\n obj.dotAll = true;\n }\n if (flags.includes('x')) {\n obj.extended = true;\n }\n return Object.keys(obj).length ? obj : null;\n}\n\nfunction getFlagProperties(flags: string): FlagProperties {\n const flagProperties: FlagProperties = {\n ignoreCase: false,\n dotAll: false,\n extended: false,\n digitIsAscii: false,\n posixIsAscii: false,\n spaceIsAscii: false,\n wordIsAscii: false,\n textSegmentMode: null,\n };\n for (let i = 0; i < flags.length; i++) {\n const char = flags[i];\n if (!'imxDPSWy'.includes(char)) {\n throw new Error(`Invalid flag \"${char}\"`);\n }\n // Flags y{g}, y{w} are currently only supported via the top-level `flags` option\n if (char === 'y') {\n if (!/^y{[gw]}/.test(flags.slice(i))) {\n throw new Error('Invalid or unspecified flag \"y\" mode');\n }\n // If text segment mode flags appear multiple times, use the last one\n flagProperties.textSegmentMode = flags[i + 2] === 'g' ? 'grapheme' : 'word';\n i += 3;\n continue;\n }\n flagProperties[{\n i: 'ignoreCase',\n // Flag m is called `multiline` in Onig, but that has a different meaning in JS. Onig flag m\n // is equivalent to JS flag s\n m: 'dotAll',\n // Flag x is fully handled during tokenization\n x: 'extended',\n // Flags D, P, S, W are currently only supported via the top-level `flags` option\n D: 'digitIsAscii',\n P: 'posixIsAscii',\n S: 'spaceIsAscii',\n W: 'wordIsAscii',\n }[char] as Exclude<keyof FlagProperties, 'textSegmentMode'>] = true;\n }\n return flagProperties;\n}\n\n// - Unenclosed `\\xNN` above 0x7F is handled elsewhere as a UTF-8 encoded byte sequence\n// - Enclosed `\\x{}` with value above 0x10FFFF is allowed here; handled in the parser\nfunction getValidatedHexCharCode(raw: string): number {\n // Note: Onig 6.9.10 and earlier have a bug where pattern-terminating `\\u` and `\\x` are treated\n // as identity escapes; see <github.com/kkos/oniguruma/issues/343>. Don't emulate these bugs.\n // Additionally, Onig treats bare `\\x` as equivalent to `\\0`, and treats incomplete `\\x{` (with\n // the brace but not immediately followed by a hex digit) as an identity escape, so e.g. `\\x{`\n // matches `x{` and `^\\x{,2}$` matches `xx`, but `\\x{2,}` and `\\x{0,2}` are errors. Currently,\n // this library treats all such cases as errors\n if (/^(?:\\\\u(?!\\p{AHex}{4})|\\\\x(?!\\p{AHex}{1,2}|\\{\\p{AHex}{1,8}\\}))/u.test(raw)) {\n throw new Error(`Incomplete or invalid escape \"${raw}\"`);\n }\n // Might include leading 0s\n const hex = raw[2] === '{' ?\n /^\\\\x\\{\\s*(?<hex>\\p{AHex}+)/u.exec(raw)!.groups!.hex :\n raw.slice(2);\n return parseInt(hex, 16);\n}\n\n// Value is 1-3 digits, which can be a backref (possibly invalid), null, octal, or identity escape,\n// possibly followed by 1-2 literal digits\nfunction splitEscapedNumberToken(token: EscapedNumberToken, numCaptures: number): Array<BackreferenceToken> | Array<CharacterToken> {\n const {raw, inCharClass} = token;\n // Keep any leading 0s since they indicate octal\n const value = raw.slice(1);\n // Backref (possibly invalid)\n if (\n !inCharClass &&\n ( // Single digit 1-9 outside a char class is always treated as a backref\n (value !== '0' && value.length === 1) ||\n // Leading 0 makes it octal; backrefs can't include following literal digits\n (value[0] !== '0' && +value <= numCaptures)\n )\n ) {\n return [createBackreferenceToken(raw)];\n }\n const tokens: Array<CharacterToken> = [];\n // Returns 1-3 matches; the first (only) might be octal\n const matches = value.match(/^[0-7]+|\\d/g)!;\n for (let i = 0; i < matches.length; i++) {\n const m = matches[i];\n let value: number;\n // Octal digits are 0-7\n if (i === 0 && m !== '8' && m !== '9') {\n value = parseInt(m, 8);\n if (value > 0o177) {\n // Octal UTF-8 encoded byte sequence; not yet supported\n throw new Error(r`Octal encoded byte above 177 unsupported \"${raw}\"`);\n }\n } else {\n value = cpOf(m);\n }\n tokens.push(createCharacterToken(value, (i === 0 ? '\\\\' : '') + m));\n }\n return tokens;\n}\n\nfunction splitQuantifierMatch(str: string): Array<QuantifierToken> {\n const tokens: Array<QuantifierToken> = [];\n // `str` is one or more quantifiers in a chain. It can't be split by a regex because of one edge\n // case where we have to compare numeric values: although `{1,2}?` is a single, lazy quantifier,\n // a reversed (possessive) interval quantifier like `{2,1}` can't be both possessive and lazy, so\n // any following `?`, `??`, or `?+` is a second, chained quantifier (i.e., `{2,1}?` is equivalent\n // to `{2,1}{0,1}` or `{2,0}`)\n const withG = new RegExp(quantifierRe, 'gy');\n let match: RegExpExecArray | null;\n while ((match = withG.exec(str))) {\n const m = match[0];\n if (m[0] === '{') {\n // Doesn't need to handle fixed `{n}`, infinite max `{n,}`, or implicit zero min `{,n}`\n // since, according to Onig syntax rules, those can't be possessive\n const parts = /^\\{(?<min>\\d+),(?<max>\\d+)\\}\\??$/.exec(m);\n if (parts) {\n const {min, max} = parts.groups as {min: string, max: string};\n if (+min > +max && m.endsWith('?')) {\n // Leave the trailing `?` for the next match\n withG.lastIndex--;\n tokens.push(tokenizeQuantifier(m.slice(0, -1)));\n continue;\n }\n }\n }\n tokens.push(tokenizeQuantifier(m));\n }\n return tokens;\n}\n\nexport {\n type AlternatorToken,\n type AssertionToken,\n type BackreferenceToken,\n type CharacterToken,\n type CharacterClassCloseToken,\n type CharacterClassHyphenToken,\n type CharacterClassIntersectorToken,\n type CharacterClassOpenToken,\n type CharacterSetToken,\n type DirectiveToken,\n type FlagGroupModifiers,\n type FlagProperties,\n type GroupCloseToken,\n type GroupOpenToken,\n type NamedCalloutToken,\n type QuantifierToken,\n type SubroutineToken,\n type Token,\n type TokenCharacterSetKind,\n type TokenDirectiveKind,\n type TokenNamedCalloutKind,\n type TokenQuantifierKind,\n tokenize,\n};\n", "import type {AlternativeContainerNode, Node, ParentNode, QuantifiableNode} from './parse.js';\n\ntype KeysOfUnion<T> = T extends T ? keyof T: never;\ntype Props = {[key in KeysOfUnion<Node>]?: any} & {type?: Node['type']};\n\nfunction hasOnlyChild(node: ParentNode & {body: Array<Node>}, props?: Props): boolean {\n if (!Array.isArray(node.body)) {\n throw new Error('Expected node with body array');\n }\n if (node.body.length !== 1) {\n return false;\n }\n const kid = node.body[0] as Props;\n return !props || Object.keys(props).every(key => props[key as keyof Props] === kid[key as keyof Props]);\n}\n\nfunction isAlternativeContainer(node: Node): node is AlternativeContainerNode {\n if (\n !alternativeContainerTypes.has(node.type) ||\n (node.type === 'AbsenceFunction' && node.kind !== 'repeater')\n ) {\n return false;\n }\n return true;\n}\nconst alternativeContainerTypes = new Set<Node['type']>([\n 'AbsenceFunction',\n 'CapturingGroup',\n 'Group',\n 'LookaroundAssertion',\n 'Regex',\n]);\n\nfunction isQuantifiable(node: Node): node is QuantifiableNode {\n return quantifiableTypes.has(node.type);\n}\nconst quantifiableTypes = new Set<Node['type']>([\n 'AbsenceFunction',\n 'Backreference',\n 'CapturingGroup',\n 'Character',\n 'CharacterClass',\n 'CharacterSet',\n 'Group',\n 'Quantifier',\n 'Subroutine',\n]);\n\nexport {\n hasOnlyChild,\n isAlternativeContainer,\n isQuantifiable,\n};\n", "import type {AssertionToken, BackreferenceToken, CharacterClassHyphenToken, CharacterClassOpenToken, CharacterSetToken, FlagGroupModifiers, FlagProperties, GroupOpenToken, QuantifierToken, SubroutineToken, Token, TokenCharacterSetKind, TokenDirectiveKind, TokenNamedCalloutKind, TokenQuantifierKind} from '../tokenizer/tokenize.js';\nimport {tokenize} from '../tokenizer/tokenize.js';\nimport {cpOf, getOrInsert, PosixClassNames, r, throwIfNullish} from '../utils.js';\nimport {hasOnlyChild, isAlternativeContainer, isQuantifiable} from './node-utils.js';\n\n// Watch out for the DOM `Node` interface!\ntype Node =\n AbsenceFunctionNode |\n AlternativeNode |\n AssertionNode |\n BackreferenceNode |\n CapturingGroupNode |\n CharacterNode |\n CharacterClassNode |\n CharacterClassRangeNode |\n CharacterSetNode |\n DirectiveNode |\n FlagsNode |\n GroupNode |\n LookaroundAssertionNode |\n NamedCalloutNode |\n QuantifierNode |\n RegexNode |\n SubroutineNode;\n\ntype OnigurumaAst = RegexNode;\n\ntype ParentNode =\n AlternativeContainerNode |\n AlternativeNode |\n CharacterClassNode |\n CharacterClassRangeNode |\n QuantifierNode;\n\n// See also `isAlternativeContainer`\ntype AlternativeContainerNode =\n AbsenceFunctionNode | // Some sub-kinds aren't alternative containers\n CapturingGroupNode |\n GroupNode |\n LookaroundAssertionNode |\n RegexNode;\n\ntype AlternativeElementNode =\n AbsenceFunctionNode |\n AssertionNode |\n BackreferenceNode |\n CapturingGroupNode |\n CharacterNode |\n CharacterClassNode |\n CharacterSetNode |\n DirectiveNode |\n GroupNode |\n LookaroundAssertionNode |\n NamedCalloutNode |\n QuantifierNode |\n SubroutineNode;\n\ntype CharacterClassElementNode =\n CharacterNode |\n CharacterClassNode |\n CharacterClassRangeNode |\n CharacterSetNode;\n\n// See also `isQuantifiable`\ntype QuantifiableNode =\n AbsenceFunctionNode |\n BackreferenceNode |\n CapturingGroupNode |\n CharacterNode |\n CharacterClassNode |\n CharacterSetNode |\n GroupNode |\n QuantifierNode |\n SubroutineNode;\n\n// TODO: Support remaining kinds; see <github.com/slevithan/oniguruma-to-es/issues/13>\ntype NodeAbsenceFunctionKind =\n 'repeater';\n\ntype NodeAssertionKind =\n 'line_end' |\n 'line_start' |\n 'search_start' |\n 'string_end' |\n 'string_end_newline' |\n 'string_start' |\n 'text_segment_boundary' |\n 'word_boundary';\n\ntype NodeCharacterClassKind =\n 'union' |\n 'intersection';\n\ntype NodeCharacterSetKind = TokenCharacterSetKind;\n\ntype NodeDirectiveKind = TokenDirectiveKind;\n\ntype NodeLookaroundAssertionKind =\n 'lookahead' |\n 'lookbehind';\n\ntype NodeNamedCalloutKind = TokenNamedCalloutKind;\n\ntype NodeQuantifierKind = TokenQuantifierKind;\n\ntype UnicodePropertyMap = Map<string, string>;\n\ntype Context = {\n capturingGroups: Array<CapturingGroupNode>;\n hasNumberedRef: boolean;\n namedGroupsByName: Map<string, Array<CapturingGroupNode>>;\n nextIndex: number;\n normalizeUnknownPropertyNames: boolean;\n parent: ParentNode;\n skipBackrefValidation: boolean;\n skipLookbehindValidation: boolean;\n skipPropertyNameValidation: boolean;\n subroutines: Array<SubroutineNode>;\n tokens: Array<Token>;\n unicodePropertyMap: UnicodePropertyMap | null;\n walk: (parent: ParentNode, state: State) => Node;\n};\n\n// Top-level `walk` calls are given empty state; nested calls can add data specific to their `walk`\ntype State = {\n isCheckingRangeEnd?: boolean;\n isInAbsenceFunction?: boolean;\n isInLookbehind?: boolean;\n isInNegLookbehind?: boolean;\n};\n\ntype ParseOptions = {\n flags?: string;\n normalizeUnknownPropertyNames?: boolean;\n rules?: {\n captureGroup?: boolean;\n singleline?: boolean;\n };\n skipBackrefValidation?: boolean;\n skipLookbehindValidation?: boolean;\n skipPropertyNameValidation?: boolean;\n unicodePropertyMap?: UnicodePropertyMap | null;\n};\n\nfunction parse(pattern: string, options: ParseOptions = {}): OnigurumaAst {\n const opts: Required<ParseOptions> = {\n flags: '',\n normalizeUnknownPropertyNames: false,\n skipBackrefValidation: false,\n skipLookbehindValidation: false,\n skipPropertyNameValidation: false,\n // `toOnigurumaAst` provides `OnigUnicodePropertyMap`, but it can be custom or `null`\n unicodePropertyMap: null,\n ...options,\n rules: {\n captureGroup: false, // `ONIG_OPTION_CAPTURE_GROUP`\n singleline: false, // `ONIG_OPTION_SINGLELINE`\n ...options.rules,\n },\n };\n const tokenized = tokenize(pattern, {\n // Limit to the tokenizer's options\n flags: opts.flags,\n rules: {\n captureGroup: opts.rules.captureGroup,\n singleline: opts.rules.singleline,\n },\n });\n const walk: Context['walk'] = (parent, state) => {\n const token = tokenized.tokens[context.nextIndex];\n context.parent = parent;\n // Advance for the next iteration\n context.nextIndex++;\n switch (token.type) {\n case 'Alternator':\n // Top-level only; groups handle their own alternators\n return createAlternative();\n case 'Assertion':\n return parseAssertion(token);\n case 'Backreference':\n return parseBackreference(token, context);\n case 'Character':\n return createCharacter(token.value, {useLastValid: !!state.isCheckingRangeEnd});\n case 'CharacterClassHyphen':\n return parseCharacterClassHyphen(token, context, state);\n case 'CharacterClassOpen':\n return parseCharacterClassOpen(token, context, state);\n case 'CharacterSet':\n return parseCharacterSet(token, context);\n case 'Directive':\n return createDirective(token.kind, {flags: token.flags});\n case 'GroupOpen':\n return parseGroupOpen(token, context, state);\n case 'NamedCallout':\n return createNamedCallout(token.kind, token.tag, token.arguments);\n case 'Quantifier':\n return parseQuantifier(token, context);\n case 'Subroutine':\n return parseSubroutine(token, context);\n default:\n throw new Error(`Unexpected token type \"${token.type}\"`);\n }\n }\n const context: Context = {\n capturingGroups: [],\n hasNumberedRef: false,\n namedGroupsByName: new Map(),\n nextIndex: 0,\n normalizeUnknownPropertyNames: opts.normalizeUnknownPropertyNames,\n parent: null!, // Assigned by `walk`\n skipBackrefValidation: opts.skipBackrefValidation,\n skipLookbehindValidation: opts.skipLookbehindValidation,\n skipPropertyNameValidation: opts.skipPropertyNameValidation,\n subroutines: [],\n tokens: tokenized.tokens,\n unicodePropertyMap: opts.unicodePropertyMap,\n walk,\n };\n\n // ## AST construction from tokens\n const ast = createRegex(createFlags(tokenized.flags));\n let top = ast.body[0]; // First alt\n while (context.nextIndex < tokenized.tokens.length) {\n const node = walk(top, {});\n if (node.type === 'Alternative') {\n ast.body.push(node);\n top = node;\n } else {\n top.body.push(node as AlternativeElementNode);\n }\n }\n\n // ## Validation that requires knowledge about the complete pattern\n // `context` updated by the preceding `walk` loop\n const {capturingGroups, hasNumberedRef, namedGroupsByName, subroutines} = context;\n if (hasNumberedRef && namedGroupsByName.size && !opts.rules.captureGroup) {\n throw new Error('Numbered backref/subroutine not allowed when using named capture');\n }\n for (const {ref} of subroutines) {\n if (typeof ref === 'number') {\n // Relative nums are already resolved\n if (ref > capturingGroups.length) {\n throw new Error(`Subroutine uses a group number that's not defined`);\n }\n if (ref) {\n capturingGroups[ref - 1].isSubroutined = true;\n }\n } else if (!namedGroupsByName.has(ref)) {\n throw new Error(r`Subroutine uses a group name that's not defined \"\\g<${ref}>\"`);\n } else if (namedGroupsByName.get(ref)!.length > 1) {\n throw new Error(r`Subroutine uses a duplicate group name \"\\g<${ref}>\"`);\n } else {\n namedGroupsByName.get(ref)![0].isSubroutined = true;\n }\n }\n\n return ast;\n}\n\nfunction parseAssertion({kind}: AssertionToken): AssertionNode {\n return createAssertion(\n throwIfNullish({\n '^': 'line_start',\n '$': 'line_end',\n '\\\\A': 'string_start',\n '\\\\b': 'word_boundary',\n '\\\\B': 'word_boundary',\n '\\\\G': 'search_start',\n '\\\\y': 'text_segment_boundary',\n '\\\\Y': 'text_segment_boundary',\n '\\\\z': 'string_end',\n '\\\\Z': 'string_end_newline',\n }[kind], `Unexpected assertion kind \"${kind}\"`) as NodeAssertionKind,\n {negate: kind === r`\\B` || kind === r`\\Y`}\n );\n}\n\n// Supported (if the backref appears to the right of the reffed capture's opening paren):\n// - `\\k<name>`, `\\k'name'`\n// - When named capture not used:\n// - `\\n`, `\\nn`, `\\nnn`\n// - `\\k<n>`, `\\k'n'\n// - `\\k<-n>`, `\\k'-n'`\n// Unsupported:\n// - `\\k<+n>`, `\\k'+n'` - Note that, Unlike Oniguruma, Onigmo doesn't support this as special\n// syntax and therefore considers it a valid group name.\n// - Backref with recursion level (with num or name): `\\k<n+level>`, `\\k<n-level>`, etc.\n// (Onigmo also supports `\\k<-n+level>`, `\\k<-n-level>`, etc.)\n// Backrefs in Onig use multiplexing for duplicate group names (the rules can be complicated when\n// overlapping with subroutines), but a `Backreference`'s simple `ref` prop doesn't capture these\n// details so multiplexed ref pointers need to be derived when working with the AST\nfunction parseBackreference({raw}: BackreferenceToken, context: Context): BackreferenceNode {\n const hasKWrapper = /^\\\\k[<']/.test(raw);\n const ref = hasKWrapper ? raw.slice(3, -1) : raw.slice(1);\n const fromNum = (num: number, isRelative = false) => {\n const numCapturesToLeft = context.capturingGroups.length;\n let orphan = false;\n // Note: It's not an error for numbered backrefs to come before their referenced group in Onig,\n // but it's currently an error in this library.\n // - Most such placements are mistakes and can never match, due to Onig's behavior for backrefs\n // to nonparticipating groups.\n // - The edge cases where they're matchable rely on rules for backref resetting within\n // quantified groups that are different in JS (thus not emulatable in `oniguruma-to-es`).\n // - Erroring matches the correct behavior of named backrefs.\n // - For unenclosed backrefs, this only affects `\\1`-`\\9` since it's not a backref in the first\n // place if using `\\10` or higher and not as many capturing groups are defined to the left\n // (it's an octal or identity escape).\n // TODO: Ideally this would be refactored to include the backref in the AST when it's not an\n // error in Onig (due to the reffed group being defined to the right), and the error handling\n // would move to the `oniguruma-to-es` transformer\n if (num > numCapturesToLeft) {\n // Skipping the error breaks assumptions and might create edge case issues, since backrefs\n // are required to come after their captures; unfortunately this option is needed for\n // TextMate grammars\n if (context.skipBackrefValidation) {\n orphan = true;\n } else {\n throw new Error(`Not enough capturing groups defined to the left \"${raw}\"`);\n }\n }\n context.hasNumberedRef = true;\n return createBackreference(isRelative ? numCapturesToLeft + 1 - num : num, {orphan});\n };\n if (hasKWrapper) {\n const numberedRef = /^(?<sign>-?)0*(?<num>[1-9]\\d*)$/.exec(ref);\n if (numberedRef) {\n return fromNum(+numberedRef.groups!.num, !!numberedRef.groups!.sign);\n }\n // Invalid in a backref name even when valid in a group name\n if (/[-+]/.test(ref)) {\n throw new Error(`Invalid backref name \"${raw}\"`);\n }\n if (!context.namedGroupsByName.has(ref)) {\n throw new Error(`Group name not defined to the left \"${raw}\"`);\n }\n return createBackreference(ref);\n }\n return fromNum(+ref);\n}\n\nfunction parseCharacterClassHyphen(_: CharacterClassHyphenToken, context: Context, state: State): CharacterNode | CharacterClassRangeNode {\n const {tokens, walk} = context;\n const parent = context.parent as CharacterClassNode;\n const prevSiblingNode = parent.body.at(-1);\n const nextToken = tokens[context.nextIndex];\n if (\n !state.isCheckingRangeEnd &&\n prevSiblingNode &&\n prevSiblingNode.type !== 'CharacterClass' &&\n prevSiblingNode.type !== 'CharacterClassRange' &&\n nextToken &&\n nextToken.type !== 'CharacterClassOpen' &&\n nextToken.type !== 'CharacterClassClose' &&\n nextToken.type !== 'CharacterClassIntersector'\n ) {\n const nextNode = walk(parent, {\n ...state,\n isCheckingRangeEnd: true,\n });\n if (prevSiblingNode.type === 'Character' && nextNode.type === 'Character') {\n parent.body.pop();\n return createCharacterClassRange(prevSiblingNode, nextNode);\n }\n throw new Error('Invalid character class range');\n }\n return createCharacter(cpOf('-'));\n}\n\nfunction parseCharacterClassOpen({negate}: CharacterClassOpenToken, context: Context, state: State): CharacterClassNode {\n const {tokens, walk} = context;\n const intersections = [createCharacterClass()];\n const ccFirstToken = tokens[context.nextIndex];\n let nextToken = throwIfUnclosedCharacterClass(ccFirstToken);\n while (nextToken.type !== 'CharacterClassClose') {\n if (nextToken.type === 'CharacterClassIntersector') {\n intersections.push(createCharacterClass());\n // Skip the intersector\n context.nextIndex++;\n } else {\n const cc = intersections.at(-1)!; // Always at least one\n cc.body.push(walk(cc, state) as CharacterClassElementNode);\n }\n nextToken = throwIfUnclosedCharacterClass(tokens[context.nextIndex], ccFirstToken);\n }\n const node = createCharacterClass({negate});\n if (intersections.length === 1) {\n node.body = intersections[0].body;\n } else {\n node.kind = 'intersection';\n node.body = intersections.map(cc => cc.body.length === 1 ? cc.body[0] : cc);\n }\n // Skip the closing square bracket\n context.nextIndex++;\n return node;\n}\n\nfunction parseCharacterSet({kind, negate, value}: CharacterSetToken, context: Context): CharacterSetNode {\n const {normalizeUnknownPropertyNames, skipPropertyNameValidation, unicodePropertyMap} = context;\n if (kind === 'property') {\n const normalized = slug(value!);\n // Don't treat as POSIX if it's in the provided list of Unicode property names\n if (PosixClassNames.has(normalized) && !unicodePropertyMap?.has(normalized)) {\n kind = 'posix';\n value = normalized;\n } else {\n return createUnicodeProperty(value!, {\n negate,\n normalizeUnknownPropertyNames,\n skipPropertyNameValidation,\n unicodePropertyMap,\n });\n }\n }\n if (kind === 'posix') {\n return createPosixClass(value!, {negate});\n }\n return createCharacterSet(kind, {negate});\n}\n\nfunction parseGroupOpen(token: GroupOpenToken, context: Context, state: State): AbsenceFunctionNode | CapturingGroupNode | GroupNode | LookaroundAssertionNode {\n const {tokens, capturingGroups, namedGroupsByName, skipLookbehindValidation, walk} = context;\n const node = createByGroupKind(token);\n const isThisAbsenceFunction = node.type === 'AbsenceFunction';\n const isThisLookbehind = isLookbehind(node);\n const isThisNegLookbehind = isThisLookbehind && node.negate;\n // Track capturing group details for backrefs and subroutines (before parsing the group's\n // contents so nested groups with the same name are tracked in order)\n if (node.type === 'CapturingGroup') {\n capturingGroups.push(node);\n if (node.name) {\n getOrInsert(namedGroupsByName, node.name, []).push(node);\n }\n }\n // Don't allow nested absence functions\n if (isThisAbsenceFunction && state.isInAbsenceFunction) {\n // Is officially unsupported in Onig but doesn't throw, gives strange results\n throw new Error('Nested absence function not supported by Oniguruma');\n }\n let nextToken = throwIfUnclosedGroup(tokens[context.nextIndex]);\n while (nextToken.type !== 'GroupClose') {\n if (nextToken.type === 'Alternator') {\n node.body.push(createAlternative());\n // Skip the alternator\n context.nextIndex++;\n } else {\n const alt = node.body.at(-1)!; // Always at least one\n const child = walk(alt, {\n ...state,\n isInAbsenceFunction: state.isInAbsenceFunction || isThisAbsenceFunction,\n isInLookbehind: state.isInLookbehind || isThisLookbehind,\n isInNegLookbehind: state.isInNegLookbehind || isThisNegLookbehind,\n }) as AlternativeElementNode;\n alt.body.push(child);\n // Centralized validation of lookbehind contents\n if ((isThisLookbehind || state.isInLookbehind) && !skipLookbehindValidation) {\n // JS supports all features within lookbehind, but Onig doesn't. Absence functions of form\n // `(?~|)` and `(?~|\u2026)` are also invalid in lookbehind (the `(?~\u2026)` and `(?~|\u2026|\u2026)` forms\n // are allowed), but all forms with `(?~|` throw since they aren't yet supported\n const msg = 'Lookbehind includes a pattern not allowed by Oniguruma';\n if (isThisNegLookbehind || state.isInNegLookbehind) {\n // - Invalid: `(?=\u2026)`, `(?!\u2026)`, capturing groups\n // - Valid: `(?<=\u2026)`, `(?<!\u2026)`\n if (isLookahead(child) || child.type === 'CapturingGroup') {\n throw new Error(msg);\n }\n } else {\n // - Invalid: `(?=\u2026)`, `(?!\u2026)`, `(?<!\u2026)`\n // - Valid: `(?<=\u2026)`, capturing groups\n if (isLookahead(child) || (isLookbehind(child) && child.negate)) {\n throw new Error(msg);\n }\n }\n }\n }\n nextToken = throwIfUnclosedGroup(tokens[context.nextIndex]);\n }\n // Skip the closing parenthesis\n context.nextIndex++;\n return node;\n}\n\nfunction parseQuantifier({kind, min, max}: QuantifierToken, context: Context): QuantifierNode {\n const parent = context.parent as AlternativeNode;\n const quantifiedNode = parent.body.at(-1);\n if (!quantifiedNode || !isQuantifiable(quantifiedNode)) {\n throw new Error('Quantifier requires a repeatable token');\n }\n const node = createQuantifier(kind, min, max, quantifiedNode);\n parent.body.pop();\n return node;\n}\n\n// Onig subroutine behavior:\n// - Subroutines can appear before the groups they reference; ex: `\\g<1>(a)` is valid.\n// - Multiple subroutines can reference the same group.\n// - Subroutines can reference groups that themselves contain subroutines, followed to any depth.\n// - Subroutines can be used recursively, and `\\g<0>` recursively references the whole pattern.\n// - Subroutines can use relative references (backward or forward); ex: `\\g<+1>(.)\\g<-1>`.\n// - Subroutines don't get their own capturing group numbers; ex: `(.)\\g<1>\\2` is invalid.\n// - Subroutines use the flags that apply to their referenced group, so e.g.\n// `(?-i)(?<a>a)(?i)\\g<a>` is fully case sensitive.\n// - Differences from PCRE/Perl/Regex+ subroutines:\n// - Subroutines can't reference duplicate group names (though duplicate names are valid if no\n// subroutines reference them).\n// - Subroutines can't use absolute or relative numbers if named capture is used anywhere.\n// - Named backrefs must be to the right of their group definition, so the backref in\n// `\\g<a>\\k<a>(?<a>)` is invalid (not directly related to subroutines).\n// - Subroutines don't restore capturing group match values (for backrefs) upon exit, so e.g.\n// `(?<a>(?<b>[ab]))\\g<a>\\k<b>` matches `abb` but not `aba`; same for numbered.\n// The interaction of backref multiplexing (an Onig-specific feature) and subroutines is complex:\n// - Only the most recent value matched by a capturing group and its subroutines is considered for\n// backref multiplexing, and this also applies to capturing groups nested within a group that's\n// referenced by a subroutine.\n// - Although a subroutine can't reference a group with a duplicate name, it can reference a group\n// with a nested capture whose name is duplicated (e.g. outside of the referenced group).\n// - These duplicate names can then multiplex; but only the most recent value matched from within\n// the outer group (or the subroutines that reference it) is available for multiplexing.\n// - Ex: With `(?<a>(?<b>[123]))\\g<a>\\g<a>(?<b>0)\\k<b>`, the backref `\\k<b>` can only match `0`\n// or whatever was matched by the most recently matched subroutine. If you took out `(?<b>0)`,\n// no multiplexing would occur.\nfunction parseSubroutine({raw}: SubroutineToken, context: Context): SubroutineNode {\n const {capturingGroups, subroutines} = context;\n let ref: string | number = raw.slice(3, -1);\n const numberedRef = /^(?<sign>[-+]?)0*(?<num>[1-9]\\d*)$/.exec(ref);\n if (numberedRef) {\n const num = +numberedRef.groups!.num;\n const numCapturesToLeft = capturingGroups.length;\n context.hasNumberedRef = true;\n ref = {\n '': num,\n '+': numCapturesToLeft + num,\n '-': numCapturesToLeft + 1 - num,\n }[numberedRef.groups!.sign]!;\n if (ref < 1) {\n throw new Error('Invalid subroutine number');\n }\n // Special case for full-pattern recursion; can't be `+0`, `-0`, `00`, etc.\n } else if (ref === '0') {\n ref = 0;\n }\n const node = createSubroutine(ref);\n subroutines.push(node);\n return node;\n}\n\n// -------------------------------\n// --- Node creation and types ---\n// -------------------------------\n\ntype AbsenceFunctionNode = {\n type: 'AbsenceFunction';\n kind: NodeAbsenceFunctionKind;\n body: Array<AlternativeNode>;\n};\nfunction createAbsenceFunction(kind: NodeAbsenceFunctionKind, options?: {\n body?: Array<AlternativeNode>;\n}): AbsenceFunctionNode {\n if (kind !== 'repeater') {\n throw new Error(`Unexpected absence function kind \"${kind}\"`);\n }\n return {\n type: 'AbsenceFunction',\n kind,\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype AlternativeNode = {\n type: 'Alternative';\n body: Array<AlternativeElementNode>;\n};\nfunction createAlternative(options?: {\n body?: Array<AlternativeElementNode>;\n}): AlternativeNode {\n return {\n type: 'Alternative',\n body: getBodyForElementContainer(options?.body) as Array<AlternativeElementNode>,\n };\n}\n\ntype AssertionNode = {\n type: 'Assertion';\n kind: NodeAssertionKind;\n negate?: boolean;\n};\nfunction createAssertion(kind: NodeAssertionKind, options?: {\n negate?: boolean;\n}): AssertionNode {\n const node: AssertionNode = {\n type: 'Assertion',\n kind,\n };\n if (kind === 'word_boundary' || kind === 'text_segment_boundary') {\n node.negate = !!options?.negate;\n }\n return node;\n}\n\ntype BackreferenceNode = {\n type: 'Backreference';\n ref: string | number;\n orphan?: boolean;\n};\nfunction createBackreference(ref: string | number, options?: {\n orphan?: boolean;\n}): BackreferenceNode {\n const orphan = !!options?.orphan;\n return {\n type: 'Backreference',\n ref,\n ...(orphan && {orphan}),\n };\n}\n\ntype CapturingGroupNode = {\n type: 'CapturingGroup';\n kind?: never;\n number: number;\n name?: string;\n // One or more subroutines in the regex reference this group\n isSubroutined?: boolean;\n body: Array<AlternativeNode>;\n};\nfunction createCapturingGroup(number: number, options?: {\n name?: string;\n isSubroutined?: boolean;\n body?: Array<AlternativeNode>;\n}): CapturingGroupNode {\n const opts = {\n name: undefined,\n isSubroutined: false,\n ...options,\n };\n if (opts.name !== undefined && !isValidGroupName(opts.name)) {\n throw new Error(`Group name \"${opts.name}\" invalid in Oniguruma`);\n }\n return {\n type: 'CapturingGroup',\n number,\n ...(opts.name && {name: opts.name}),\n ...(opts.isSubroutined && {isSubroutined: opts.isSubroutined}),\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype CharacterNode = {\n type: 'Character';\n value: number;\n};\nfunction createCharacter(charCode: number, options?: {\n useLastValid?: boolean;\n}): CharacterNode {\n const opts = {\n useLastValid: false,\n ...options,\n };\n if (charCode > 0x10FFFF) {\n const hex = charCode.toString(16);\n if (opts.useLastValid) {\n charCode = 0x10FFFF;\n } else if (charCode > 0x13FFFF) {\n throw new Error(`Invalid code point out of range \"\\\\x{${hex}}\"`);\n } else {\n throw new Error(`Invalid code point out of range in JS \"\\\\x{${hex}}\"`);\n }\n }\n return {\n type: 'Character',\n value: charCode,\n };\n}\n\ntype CharacterClassNode = {\n type: 'CharacterClass';\n kind: NodeCharacterClassKind;\n negate: boolean;\n body: Array<CharacterClassElementNode>;\n};\nfunction createCharacterClass(options?: {\n kind?: NodeCharacterClassKind;\n negate?: boolean;\n body?: Array<CharacterClassElementNode>;\n}): CharacterClassNode {\n const opts = {\n kind: 'union' as NodeCharacterClassKind,\n negate: false,\n ...options,\n };\n return {\n type: 'CharacterClass',\n kind: opts.kind,\n negate: opts.negate,\n body: getBodyForElementContainer(options?.body) as Array<CharacterClassElementNode>,\n };\n}\n\ntype CharacterClassRangeNode = {\n type: 'CharacterClassRange';\n min: CharacterNode;\n max: CharacterNode;\n};\nfunction createCharacterClassRange(min: CharacterNode, max: CharacterNode): CharacterClassRangeNode {\n if (max.value < min.value) {\n throw new Error('Character class range out of order');\n }\n return {\n type: 'CharacterClassRange',\n min,\n max,\n };\n}\n\ntype NamedCharacterSetNode = {\n type: 'CharacterSet';\n kind: 'posix' | 'property';\n value: string;\n negate: boolean;\n variableLength?: never;\n};\ntype UnnamedCharacterSetNode = {\n type: 'CharacterSet';\n kind: Exclude<NodeCharacterSetKind, NamedCharacterSetNode['kind']>;\n value?: never;\n negate?: boolean;\n variableLength?: boolean;\n};\ntype CharacterSetNode = NamedCharacterSetNode | UnnamedCharacterSetNode;\n/**\nUse `createUnicodeProperty` and `createPosixClass` for `kind` values `'property'` and `'posix'`.\n*/\nfunction createCharacterSet(kind: UnnamedCharacterSetNode['kind'], options?: {\n negate?: boolean;\n}): UnnamedCharacterSetNode {\n const negate = !!options?.negate;\n const node: UnnamedCharacterSetNode = {\n type: 'CharacterSet',\n kind,\n };\n if (\n kind === 'digit' ||\n kind === 'hex' ||\n kind === 'newline' ||\n kind === 'space' ||\n kind === 'word'\n ) {\n node.negate = negate;\n }\n if (\n kind === 'text_segment' ||\n (kind === 'newline' && !negate)\n ) {\n node.variableLength = true;\n }\n return node;\n}\n\ntype DirectiveNode = {\n type: 'Directive';\n} & ({\n kind: 'keep';\n flags?: never;\n} | {\n kind: 'flags';\n flags: FlagGroupModifiers;\n});\nfunction createDirective(kind: NodeDirectiveKind, options: {flags?: FlagGroupModifiers} = {}): DirectiveNode {\n if (kind === 'keep') {\n return {\n type: 'Directive',\n kind,\n };\n }\n if (kind === 'flags') {\n // Note: Flag effects might extend across alternation; ex: `a(?i)b|c` is equivalent to\n // `a(?i:b)|(?i:c)`, not `a(?i:b|c)`\n return {\n type: 'Directive',\n kind,\n flags: throwIfNullish(options.flags),\n };\n }\n throw new Error(`Unexpected directive kind \"${kind}\"`);\n}\n\ntype FlagsNode = {\n type: 'Flags';\n} & FlagProperties;\nfunction createFlags(flags: FlagProperties): FlagsNode {\n return {\n type: 'Flags',\n ...flags,\n };\n}\n\ntype GroupNode = {\n type: 'Group';\n kind?: never;\n atomic?: boolean;\n flags?: FlagGroupModifiers;\n body: Array<AlternativeNode>;\n};\nfunction createGroup(options?: {\n atomic?: boolean;\n flags?: FlagGroupModifiers;\n body?: Array<AlternativeNode>;\n}): GroupNode {\n const atomic = options?.atomic;\n const flags = options?.flags;\n if (atomic && flags) {\n throw new Error('Atomic group cannot have flags');\n }\n return {\n type: 'Group',\n ...(atomic && {atomic}),\n ...(flags && {flags}),\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype LookaroundAssertionNode = {\n type: 'LookaroundAssertion';\n kind: NodeLookaroundAssertionKind;\n negate: boolean;\n body: Array<AlternativeNode>;\n};\nfunction createLookaroundAssertion(options?: {\n behind?: boolean;\n negate?: boolean;\n body?: Array<AlternativeNode>;\n}): LookaroundAssertionNode {\n const opts = {\n behind: false,\n negate: false,\n ...options,\n };\n return {\n type: 'LookaroundAssertion',\n kind: opts.behind ? 'lookbehind' : 'lookahead',\n negate: opts.negate,\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype NamedCalloutNode = {\n type: 'NamedCallout';\n kind: NodeNamedCalloutKind;\n tag: string | null;\n arguments: Array<string | number> | null;\n};\nfunction createNamedCallout(\n kind: NodeNamedCalloutKind,\n tag: string | null,\n args: Array<string | number> | null\n): NamedCalloutNode {\n return {\n type: 'NamedCallout',\n kind,\n tag,\n arguments: args,\n };\n}\n\nfunction createPosixClass(name: string, options?: {\n negate?: boolean;\n}): NamedCharacterSetNode & {kind: 'posix'} {\n const negate = !!options?.negate;\n if (!PosixClassNames.has(name)) {\n throw new Error(`Invalid POSIX class \"${name}\"`);\n }\n return {\n type: 'CharacterSet',\n kind: 'posix',\n value: name,\n negate,\n };\n}\n\ntype QuantifierNode = {\n type: 'Quantifier';\n kind: NodeQuantifierKind;\n min: number;\n max: number;\n body: QuantifiableNode;\n};\nfunction createQuantifier(kind: NodeQuantifierKind, min: number, max: number, body: QuantifiableNode): QuantifierNode {\n if (min > max) {\n throw new Error('Invalid reversed quantifier range');\n }\n return {\n type: 'Quantifier',\n kind,\n min,\n max,\n body,\n };\n}\n\ntype RegexNode = {\n type: 'Regex';\n body: Array<AlternativeNode>;\n flags: FlagsNode;\n};\nfunction createRegex(flags: FlagsNode, options?: {\n body?: Array<AlternativeNode>;\n}): RegexNode {\n return {\n type: 'Regex',\n body: getBodyForAlternativeContainer(options?.body),\n flags,\n };\n}\n\ntype SubroutineNode = {\n type: 'Subroutine';\n ref: string | number;\n};\nfunction createSubroutine(ref: string | number): SubroutineNode {\n return {\n type: 'Subroutine',\n ref,\n };\n}\n\ntype CreateUnicodePropertyOptions = {\n negate?: boolean;\n normalizeUnknownPropertyNames?: boolean;\n skipPropertyNameValidation?: boolean;\n unicodePropertyMap?: UnicodePropertyMap | null;\n};\nfunction createUnicodeProperty(name: string, options?: CreateUnicodePropertyOptions): NamedCharacterSetNode & {kind: 'property'} {\n const opts: Required<CreateUnicodePropertyOptions> = {\n negate: false,\n normalizeUnknownPropertyNames: false,\n skipPropertyNameValidation: false,\n unicodePropertyMap: null,\n ...options,\n };\n let normalized = opts.unicodePropertyMap?.get(slug(name));\n if (!normalized) {\n if (opts.normalizeUnknownPropertyNames) {\n normalized = normalizeUnicodePropertyName(name);\n // Let the name through as-is if no map provided and normalization not requested\n } else if (opts.unicodePropertyMap && !opts.skipPropertyNameValidation) {\n throw new Error(r`Invalid Unicode property \"\\p{${name}}\"`);\n }\n }\n return {\n type: 'CharacterSet',\n kind: 'property',\n value: normalized ?? name,\n negate: opts.negate,\n };\n}\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\nfunction createByGroupKind({flags, kind, name, negate, number}: GroupOpenToken): AbsenceFunctionNode | CapturingGroupNode | GroupNode | LookaroundAssertionNode {\n switch (kind) {\n case 'absence_repeater':\n return createAbsenceFunction('repeater');\n case 'atomic':\n return createGroup({atomic: true});\n case 'capturing':\n return createCapturingGroup(number!, {name});\n case 'group':\n return createGroup({flags});\n case 'lookahead':\n case 'lookbehind':\n return createLookaroundAssertion({\n behind: kind === 'lookbehind',\n negate,\n });\n default:\n throw new Error(`Unexpected group kind \"${kind}\"`);\n }\n}\n\nfunction getBodyForAlternativeContainer(body: unknown): Array<AlternativeNode> {\n if (body === undefined) {\n body = [createAlternative()];\n } else if (!Array.isArray(body) || !body.length || !body.every(node => (node as Node).type === 'Alternative')) {\n throw new Error('Invalid body; expected array of one or more Alternative nodes');\n }\n return body as Array<AlternativeNode>;\n}\n\nfunction getBodyForElementContainer(body: unknown): Array<Node> {\n if (body === undefined) {\n body = [];\n } else if (!Array.isArray(body) || !body.every(node => !!(node as Node).type)) {\n throw new Error('Invalid body; expected array of nodes');\n }\n return body as Array<Node>;\n}\n\nfunction isLookahead(node: Node): node is (LookaroundAssertionNode & {kind: 'lookahead'}) {\n return node.type === 'LookaroundAssertion' && node.kind === 'lookahead';\n}\n\nfunction isLookbehind(node: Node): node is (LookaroundAssertionNode & {kind: 'lookbehind'}) {\n return node.type === 'LookaroundAssertion' && node.kind === 'lookbehind';\n}\n\nfunction isValidGroupName(name: string): boolean {\n // Note that backrefs and subroutines might contextually use `-` and `+` to indicate relative\n // index or recursion level\n return /^[\\p{Alpha}\\p{Pc}][^)]*$/u.test(name);\n}\n\nfunction normalizeUnicodePropertyName(name: string): string {\n // In Onig, Unicode property names ignore case, spaces, hyphens, and underscores. Use best effort\n // to reformat the name to follow official values (covers a lot, but isn't able to map for all\n // possible formatting differences)\n return name.\n trim().\n replace(/[- _]+/g, '_').\n replace(/[A-Z][a-z]+(?=[A-Z])/g, '$&_'). // `PropertyName` to `Property_Name`\n replace(/[A-Za-z]+/g, m => m[0].toUpperCase() + m.slice(1).toLowerCase());\n}\n\n/**\nGenerates a Unicode property lookup name: lowercase, without spaces, hyphens, or underscores.\n*/\nfunction slug(name: string): string {\n return name.replace(/[- _]+/g, '').toLowerCase();\n}\n\nfunction throwIfUnclosedCharacterClass<T>(token: T, ccFirstToken?: Token): NonNullable<T> {\n const first = ccFirstToken;\n return throwIfNullish(token, `Unclosed character class${\n // Help avoid confusion since e.g. `[]abc` is unclosed but looks like it has an empty class\n first?.type === 'Character' && first.value === 93 && first.raw === ']' ? ' (started with \"]\")' : ''\n }`);\n}\n\nfunction throwIfUnclosedGroup<T>(token: T): NonNullable<T> {\n return throwIfNullish(token, 'Unclosed group');\n}\n\nexport {\n type AbsenceFunctionNode,\n type AlternativeNode,\n type AlternativeContainerNode,\n type AlternativeElementNode,\n type AssertionNode,\n type BackreferenceNode,\n type CapturingGroupNode,\n type CharacterClassElementNode,\n type CharacterClassNode,\n type CharacterClassRangeNode,\n type CharacterNode,\n type CharacterSetNode,\n type DirectiveNode,\n type FlagsNode,\n type GroupNode,\n type LookaroundAssertionNode,\n type NamedCalloutNode,\n type Node,\n type NodeAbsenceFunctionKind,\n type NodeAssertionKind,\n type NodeCharacterClassKind,\n type NodeCharacterSetKind,\n type NodeDirectiveKind,\n type NodeLookaroundAssertionKind,\n type NodeQuantifierKind,\n type OnigurumaAst,\n type ParentNode,\n type ParseOptions,\n type QuantifiableNode,\n type QuantifierNode,\n type RegexNode,\n type SubroutineNode,\n type UnicodePropertyMap,\n createAbsenceFunction,\n createAlternative,\n createAssertion,\n createBackreference,\n createCapturingGroup,\n createCharacter,\n createCharacterClass,\n createCharacterClassRange,\n createCharacterSet,\n createDirective,\n createFlags,\n createGroup,\n createLookaroundAssertion,\n createNamedCallout,\n createPosixClass,\n createQuantifier,\n createRegex,\n createSubroutine,\n createUnicodeProperty,\n hasOnlyChild,\n isAlternativeContainer,\n isQuantifiable,\n parse,\n slug,\n};\n", "import type {AlternativeElementNode, AlternativeNode, CharacterClassElementNode, Node, ParentNode, RegexNode} from '../parser/parse.js';\nimport {throwIfNullish} from '../utils.js';\n\ntype ContainerElementNode =\n // Used within the `body` container of any `AlternativeContainerNode`\n AlternativeNode |\n // Any node type used within the `body` container of an `AlternativeNode`\n AlternativeElementNode |\n // Any node type used within the `body` container of a `CharacterClassNode`\n CharacterClassElementNode;\n\ntype Path<N = Node, Root = RegexNode> = {\n // The current node being traversed\n node: N;\n // Parent node of the current node\n parent: N extends RegexNode ? null : ParentNode;\n // String property where the current node in held by the parent node, or numeric index in the\n // parent's `container` array\n key: N extends RegexNode ? null : number | string;\n // Container array holding the current node in the parent node; `null` if the parent isn't a type\n // that contains a list of nodes\n container: N extends RegexNode ? null : Array<ContainerElementNode> | null;\n // Starting node of the AST being traversed; usually a `RegexNode` but can be any node type if\n // traversing from a midpoint\n root: Root;\n // Removes the current node; its kids won't be traversed\n remove: () => void;\n // Removes all siblings to the right of the current node, without traversing them; returns the\n // removed nodes\n removeAllNextSiblings: () => Array<Node>;\n // Removes all siblings to the left of the current node, which have already been traversed;\n // returns the removed nodes\n removeAllPrevSiblings: () => Array<Node>;\n // Replaces the current node with a new node; kids of the replaced node won't be traversed;\n // optionally traverses the new node\n replaceWith: (newNode: Node, options?: {traverse?: boolean}) => void;\n // Replaces the current node with multiple new nodes; kids of the replaced node won't be\n // traversed; optionally traverses the new nodes\n replaceWithMultiple: (newNodes: Array<Node>, options?: {traverse?: boolean}) => void;\n // Skips traversing kids of the current node\n skip: () => void;\n};\n\n// `VisitorNodeFn() {\u2026}` is shorthand for `VisitorNodeFn: {enter() {\u2026}}`.\ntype Visitor<State extends object | null = null, Root extends Node = RegexNode> = {\n [N in Node as N['type']]?: VisitorNodeFn<Path<N, Root>, State> | {\n enter?: VisitorNodeFn<Path<N, Root>, State>;\n exit?: VisitorNodeFn<Path<N, Root>, State>;\n };\n} & {\n '*'?: VisitorNodeFn<Path<Node, Root>, State> | {\n enter?: VisitorNodeFn<Path<Node, Root>, State>;\n exit?: VisitorNodeFn<Path<Node, Root>, State>;\n };\n};\n\ntype VisitorNodeFn<P, State> = (path: P, state: State) => void;\n\n/**\nTraverses an AST and calls the provided `visitor`'s node function for each node. Returns the same\nobject, possibly modified.\n\nVisitor node functions can modify the AST in place and use methods on the `path` (provided as their\nfirst argument) to help modify the AST. Provided `state` is passed through to all visitor node\nfunctions as their second argument.\n\nVisitor node functions are called in the following order:\n1. `enter` function of the `'*'` node type (if any)\n2. `enter` function of the given node's type (if any)\n3. [The node's kids (if any) are traversed recursively, unless `skip` is called]\n4. `exit` function of the given node's type (if any)\n5. `exit` function of the `'*'` node type (if any)\n*/\nfunction traverse<State extends object | null = null, Root extends Node = RegexNode>(\n root: Root,\n visitor: Visitor<State, Root>,\n state: State | null = null\n): Root {\n function traverseArray(array: NonNullable<Path['container']>, parent: Path['parent']) {\n for (let i = 0; i < array.length; i++) {\n const keyShift = traverseNode(array[i], parent, i, array);\n i = Math.max(-1, i + keyShift);\n }\n }\n function traverseNode(\n node: Path['node'],\n parent: Path['parent'] = null,\n key: Path['key'] = null,\n container: Path['container'] = null\n ): number {\n let keyShift = 0;\n let skipTraversingKidsOfPath = false;\n const path: Path = {\n node,\n parent,\n key,\n container,\n root: root as RegexNode,\n remove() {\n arrayContainer(container).splice(Math.max(0, numericKey(key) + keyShift), 1);\n keyShift--;\n skipTraversingKidsOfPath = true;\n },\n removeAllNextSiblings() {\n return arrayContainer(container).splice(numericKey(key) + 1);\n },\n removeAllPrevSiblings() {\n const shifted = numericKey(key) + keyShift;\n keyShift -= shifted;\n return arrayContainer(container).splice(0, Math.max(0, shifted));\n },\n replaceWith(newNode, options = {}) {\n const traverseNew = !!options.traverse;\n if (container) {\n container[Math.max(0, numericKey(key) + keyShift)] = newNode as ContainerElementNode;\n } else {\n // `key` will be one of:\n // - For `CharacterClassRangeNode`: 'min', 'max'\n // - For `QuantifierNode`: 'body'\n // - For `RegexNode`: 'flags'\n // @ts-expect-error\n throwIfNullish(parent, `Can't replace root node`)[key as string] = newNode;\n }\n if (traverseNew) {\n traverseNode(newNode, parent, key, container);\n }\n skipTraversingKidsOfPath = true;\n },\n replaceWithMultiple(newNodes, options = {}) {\n const traverseNew = !!options.traverse;\n arrayContainer(container).splice(Math.max(0, numericKey(key) + keyShift), 1, ...newNodes);\n keyShift += newNodes.length - 1;\n if (traverseNew) {\n let keyShiftInLoop = 0;\n for (let i = 0; i < newNodes.length; i++) {\n keyShiftInLoop += traverseNode(newNodes[i], parent, numericKey(key) + i + keyShiftInLoop, container);\n }\n }\n skipTraversingKidsOfPath = true;\n },\n skip() {\n skipTraversingKidsOfPath = true;\n },\n };\n\n const {type} = node;\n const anyTypeVisitor = visitor['*'];\n const thisTypeVisitor = visitor[type];\n const enterAllFn = typeof anyTypeVisitor === 'function' ? anyTypeVisitor : anyTypeVisitor?.enter;\n const enterThisFn = typeof thisTypeVisitor === 'function' ? thisTypeVisitor : thisTypeVisitor?.enter;\n // Type args are too complex to avoid TS errors here, but `VisitorNodeFn`s get correct types\n // @ts-expect-error\n enterAllFn?.(path, state);\n // @ts-expect-error\n enterThisFn?.(path, state);\n\n if (!skipTraversingKidsOfPath) {\n switch (type) {\n case 'AbsenceFunction':\n case 'Alternative':\n case 'CapturingGroup':\n case 'CharacterClass':\n case 'Group':\n case 'LookaroundAssertion':\n traverseArray(node.body, node);\n break;\n case 'Assertion':\n case 'Backreference':\n case 'Character':\n case 'CharacterSet':\n case 'Directive':\n case 'Flags':\n case 'NamedCallout':\n case 'Subroutine':\n break;\n case 'CharacterClassRange':\n traverseNode(node.min, node, 'min');\n traverseNode(node.max, node, 'max');\n break;\n case 'Quantifier':\n traverseNode(node.body, node, 'body');\n break;\n case 'Regex':\n traverseArray(node.body, node);\n traverseNode(node.flags, node, 'flags');\n break;\n default:\n throw new Error(`Unexpected node type \"${type}\"`);\n }\n }\n\n // @ts-expect-error\n (thisTypeVisitor as Exclude<typeof thisTypeVisitor, Function>)?.exit?.(path, state);\n // @ts-expect-error\n (anyTypeVisitor as Exclude<typeof anyTypeVisitor, Function>)?.exit?.(path, state);\n return keyShift;\n }\n traverseNode(root);\n return root;\n}\n\nfunction arrayContainer(value: unknown): Array<Node> {\n if (!Array.isArray(value)) {\n throw new Error('Container expected');\n }\n return value;\n}\n\nfunction numericKey(value: unknown): number {\n if (typeof value !== 'number') {\n throw new Error('Numeric key expected');\n }\n return value;\n}\n\nexport {\n type Path,\n type Visitor,\n traverse,\n};\n", "// Separating some utils for improved tree shaking of the `./internals` export\n\nconst noncapturingDelim = String.raw`\\(\\?(?:[:=!>A-Za-z\\-]|<[=!]|\\(DEFINE\\))`;\n\n/**\nUpdates the array in place by incrementing each value greater than or equal to the threshold.\n@param {Array<number>} arr\n@param {number} threshold\n*/\nfunction incrementIfAtLeast(arr, threshold) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] >= threshold) {\n arr[i]++;\n }\n }\n}\n\n/**\n@param {string} str\n@param {number} pos\n@param {string} oldValue\n@param {string} newValue\n@returns {string}\n*/\nfunction spliceStr(str, pos, oldValue, newValue) {\n return str.slice(0, pos) + newValue + str.slice(pos + oldValue.length);\n}\n\nexport {\n incrementIfAtLeast,\n noncapturingDelim,\n spliceStr,\n};\n", "// Constant properties for tracking regex syntax context\nexport const Context = Object.freeze({\n DEFAULT: 'DEFAULT',\n CHAR_CLASS: 'CHAR_CLASS',\n});\n\n/**\nReplaces all unescaped instances of a regex pattern in the given context, using a replacement\nstring or callback.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {string | (match: RegExpExecArray, details: {\n context: 'DEFAULT' | 'CHAR_CLASS';\n negated: boolean;\n}) => string} replacement\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {string} Updated expression\n@example\nconst str = '.\\\\.\\\\\\\\.[[\\\\.].].';\nreplaceUnescaped(str, '\\\\.', '@');\n// \u2192 '@\\\\.\\\\\\\\@[[\\\\.]@]@'\nreplaceUnescaped(str, '\\\\.', '@', Context.DEFAULT);\n// \u2192 '@\\\\.\\\\\\\\@[[\\\\.].]@'\nreplaceUnescaped(str, '\\\\.', '@', Context.CHAR_CLASS);\n// \u2192 '.\\\\.\\\\\\\\.[[\\\\.]@].'\n*/\nexport function replaceUnescaped(expression, needle, replacement, context) {\n const re = new RegExp(String.raw`${needle}|(?<$skip>\\[\\^?|\\\\?.)`, 'gsu');\n const negated = [false];\n let numCharClassesOpen = 0;\n let result = '';\n for (const match of expression.matchAll(re)) {\n const {0: m, groups: {$skip}} = match;\n if (!$skip && (!context || (context === Context.DEFAULT) === !numCharClassesOpen)) {\n if (replacement instanceof Function) {\n result += replacement(match, {\n context: numCharClassesOpen ? Context.CHAR_CLASS : Context.DEFAULT,\n negated: negated[negated.length - 1],\n });\n } else {\n result += replacement;\n }\n continue;\n }\n if (m[0] === '[') {\n numCharClassesOpen++;\n negated.push(m[1] === '^');\n } else if (m === ']' && numCharClassesOpen) {\n numCharClassesOpen--;\n negated.pop();\n }\n result += m;\n }\n return result;\n}\n\n/**\nRuns a callback for each unescaped instance of a regex pattern in the given context.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {(match: RegExpExecArray, details: {\n context: 'DEFAULT' | 'CHAR_CLASS';\n negated: boolean;\n}) => void} callback\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n*/\nexport function forEachUnescaped(expression, needle, callback, context) {\n // Do this the easy way\n replaceUnescaped(expression, needle, callback, context);\n}\n\n/**\nReturns a match object for the first unescaped instance of a regex pattern in the given context, or\n`null`.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {number} [pos] Offset to start the search\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {RegExpExecArray | null}\n*/\nexport function execUnescaped(expression, needle, pos = 0, context) {\n // Quick partial test; avoid the loop if not needed\n if (!(new RegExp(needle, 'su').test(expression))) {\n return null;\n }\n const re = new RegExp(`${needle}|(?<$skip>\\\\\\\\?.)`, 'gsu');\n re.lastIndex = pos;\n let numCharClassesOpen = 0;\n let match;\n while (match = re.exec(expression)) {\n const {0: m, groups: {$skip}} = match;\n if (!$skip && (!context || (context === Context.DEFAULT) === !numCharClassesOpen)) {\n return match;\n }\n if (m === '[') {\n numCharClassesOpen++;\n } else if (m === ']' && numCharClassesOpen) {\n numCharClassesOpen--;\n }\n // Avoid an infinite loop on zero-length matches\n if (re.lastIndex == match.index) {\n re.lastIndex++;\n }\n }\n return null;\n}\n\n/**\nChecks whether an unescaped instance of a regex pattern appears in the given context.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {boolean} Whether the pattern was found\n*/\nexport function hasUnescaped(expression, needle, context) {\n // Do this the easy way\n return !!execUnescaped(expression, needle, 0, context);\n}\n\n/**\nExtracts the full contents of a group (subpattern) from the given expression, accounting for\nescaped characters, nested groups, and character classes. The group is identified by the position\nwhere its contents start (the string index just after the group's opening delimiter). Returns the\nrest of the string if the group is unclosed.\n\nAssumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {number} contentsStartPos\n@returns {string}\n*/\nexport function getGroupContents(expression, contentsStartPos) {\n const token = /\\\\?./gsu;\n token.lastIndex = contentsStartPos;\n let contentsEndPos = expression.length;\n let numCharClassesOpen = 0;\n // Starting search within an open group, after the group's opening\n let numGroupsOpen = 1;\n let match;\n while (match = token.exec(expression)) {\n const [m] = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n if (m === '(') {\n numGroupsOpen++;\n } else if (m === ')') {\n numGroupsOpen--;\n if (!numGroupsOpen) {\n contentsEndPos = match.index;\n break;\n }\n }\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n return expression.slice(contentsStartPos, contentsEndPos);\n}\n", "import {incrementIfAtLeast, noncapturingDelim, spliceStr} from './utils-internals.js';\nimport {Context, replaceUnescaped} from 'regex-utilities';\n/**\n@import {PluginData, PluginResult} from './regex.js';\n*/\n\nconst atomicPluginToken = new RegExp(String.raw`(?<noncapturingStart>${noncapturingDelim})|(?<capturingStart>\\((?:\\?<[^>]+>)?)|\\\\?.`, 'gsu');\n\n/**\nApply transformations for atomic groups: `(?>\u2026)`.\n@param {string} expression\n@param {PluginData} [data]\n@returns {Required<PluginResult>}\n*/\nfunction atomic(expression, data) {\n const hiddenCaptures = data?.hiddenCaptures ?? [];\n // Capture transfer is used by <github.com/slevithan/oniguruma-to-es>\n let captureTransfers = data?.captureTransfers ?? new Map();\n if (!/\\(\\?>/.test(expression)) {\n return {\n pattern: expression,\n captureTransfers,\n hiddenCaptures,\n };\n }\n\n const aGDelim = '(?>';\n const emulatedAGDelim = '(?:(?=(';\n const captureNumMap = [0];\n const addedHiddenCaptures = [];\n let numCapturesBeforeAG = 0;\n let numAGs = 0;\n let aGPos = NaN;\n let hasProcessedAG;\n do {\n hasProcessedAG = false;\n let numCharClassesOpen = 0;\n let numGroupsOpenInAG = 0;\n let inAG = false;\n let match;\n atomicPluginToken.lastIndex = Number.isNaN(aGPos) ? 0 : aGPos + emulatedAGDelim.length;\n while (match = atomicPluginToken.exec(expression)) {\n const {0: m, index, groups: {capturingStart, noncapturingStart}} = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n\n if (m === aGDelim && !inAG) {\n aGPos = index;\n inAG = true;\n } else if (inAG && noncapturingStart) {\n numGroupsOpenInAG++;\n } else if (capturingStart) {\n if (inAG) {\n numGroupsOpenInAG++;\n } else {\n numCapturesBeforeAG++;\n captureNumMap.push(numCapturesBeforeAG + numAGs);\n }\n } else if (m === ')' && inAG) {\n if (!numGroupsOpenInAG) {\n numAGs++;\n const addedCaptureNum = numCapturesBeforeAG + numAGs;\n // Replace `expression` and use `<$$N>` as a temporary wrapper for the backref so it\n // can avoid backref renumbering afterward. Wrap the whole substitution (including the\n // lookahead and following backref) in a noncapturing group to handle following\n // quantifiers and literal digits\n expression = `${expression.slice(0, aGPos)}${emulatedAGDelim}${\n expression.slice(aGPos + aGDelim.length, index)\n }))<$$${addedCaptureNum}>)${expression.slice(index + 1)}`;\n hasProcessedAG = true;\n addedHiddenCaptures.push(addedCaptureNum);\n incrementIfAtLeast(hiddenCaptures, addedCaptureNum);\n if (captureTransfers.size) {\n const newCaptureTransfers = new Map();\n captureTransfers.forEach((from, to) => {\n newCaptureTransfers.set(\n to >= addedCaptureNum ? to + 1 : to,\n from.map(f => f >= addedCaptureNum ? f + 1 : f)\n );\n });\n captureTransfers = newCaptureTransfers;\n }\n break;\n }\n numGroupsOpenInAG--;\n }\n\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n // Start over from the beginning of the atomic group's contents, in case the processed group\n // contains additional atomic groups\n } while (hasProcessedAG);\n\n hiddenCaptures.push(...addedHiddenCaptures);\n\n // Second pass to adjust numbered backrefs\n expression = replaceUnescaped(\n expression,\n String.raw`\\\\(?<backrefNum>[1-9]\\d*)|<\\$\\$(?<wrappedBackrefNum>\\d+)>`,\n ({0: m, groups: {backrefNum, wrappedBackrefNum}}) => {\n if (backrefNum) {\n const bNum = +backrefNum;\n if (bNum > captureNumMap.length - 1) {\n throw new Error(`Backref \"${m}\" greater than number of captures`);\n }\n return `\\\\${captureNumMap[bNum]}`;\n }\n return `\\\\${wrappedBackrefNum}`;\n },\n Context.DEFAULT\n );\n\n return {\n pattern: expression,\n captureTransfers,\n hiddenCaptures,\n };\n}\n\nconst baseQuantifier = String.raw`(?:[?*+]|\\{\\d+(?:,\\d*)?\\})`;\n// Complete tokenizer for base syntax; doesn't (need to) know about character-class-only syntax\nconst possessivePluginToken = new RegExp(String.raw`\n\\\\(?: \\d+\n | c[A-Za-z]\n | [gk]<[^>]+>\n | [pPu]\\{[^\\}]+\\}\n | u[A-Fa-f\\d]{4}\n | x[A-Fa-f\\d]{2}\n )\n| \\((?: \\? (?: [:=!>]\n | <(?:[=!]|[^>]+>)\n | [A-Za-z\\-]+:\n | \\(DEFINE\\)\n ))?\n| (?<qBase>${baseQuantifier})(?<qMod>[?+]?)(?<invalidQ>[?*+\\{]?)\n| \\\\?.\n`.replace(/\\s+/g, ''), 'gsu');\n\n/**\nTransform posessive quantifiers into atomic groups. The posessessive quantifiers are:\n`?+`, `*+`, `++`, `{N}+`, `{N,}+`, `{N,N}+`.\nThis follows Java, PCRE, Perl, and Python.\nPossessive quantifiers in Oniguruma and Onigmo are only: `?+`, `*+`, `++`.\n@param {string} expression\n@returns {PluginResult}\n*/\nfunction possessive(expression) {\n if (!(new RegExp(`${baseQuantifier}\\\\+`).test(expression))) {\n return {\n pattern: expression,\n };\n }\n\n const openGroupIndices = [];\n let lastGroupIndex = null;\n let lastCharClassIndex = null;\n let lastToken = '';\n let numCharClassesOpen = 0;\n let match;\n possessivePluginToken.lastIndex = 0;\n while (match = possessivePluginToken.exec(expression)) {\n const {0: m, index, groups: {qBase, qMod, invalidQ}} = match;\n if (m === '[') {\n if (!numCharClassesOpen) {\n lastCharClassIndex = index;\n }\n numCharClassesOpen++;\n } else if (m === ']') {\n if (numCharClassesOpen) {\n numCharClassesOpen--;\n // Unmatched `]`\n } else {\n lastCharClassIndex = null;\n }\n } else if (!numCharClassesOpen) {\n\n if (qMod === '+' && lastToken && !lastToken.startsWith('(')) {\n // Invalid following quantifier would become valid via the wrapping group\n if (invalidQ) {\n throw new Error(`Invalid quantifier \"${m}\"`);\n }\n let charsAdded = -1; // -1 for removed trailing `+`\n // Possessivizing fixed repetition quantifiers like `{2}` does't change their behavior, so\n // avoid doing so (convert them to greedy)\n if (/^\\{\\d+\\}$/.test(qBase)) {\n expression = spliceStr(expression, index + qBase.length, qMod, '');\n } else {\n if (lastToken === ')' || lastToken === ']') {\n const nodeIndex = lastToken === ')' ? lastGroupIndex : lastCharClassIndex;\n // Unmatched `)` would break out of the wrapping group and mess with handling.\n // Unmatched `]` wouldn't be a problem, but it's unnecessary to have dedicated support\n // for unescaped `]++` since this won't work with flag u or v anyway\n if (nodeIndex === null) {\n throw new Error(`Invalid unmatched \"${lastToken}\"`);\n }\n expression = `${expression.slice(0, nodeIndex)}(?>${expression.slice(nodeIndex, index)}${qBase})${expression.slice(index + m.length)}`;\n } else {\n expression = `${expression.slice(0, index - lastToken.length)}(?>${lastToken}${qBase})${expression.slice(index + m.length)}`;\n }\n charsAdded += 4; // `(?>)`\n }\n possessivePluginToken.lastIndex += charsAdded;\n } else if (m[0] === '(') {\n openGroupIndices.push(index);\n } else if (m === ')') {\n lastGroupIndex = openGroupIndices.length ? openGroupIndices.pop() : null;\n }\n\n }\n lastToken = m;\n }\n\n return {\n pattern: expression,\n };\n}\n\nexport {\n atomic,\n possessive,\n};\n", "import {Context, forEachUnescaped, getGroupContents, hasUnescaped, replaceUnescaped} from 'regex-utilities';\n\nconst r = String.raw;\nconst gRToken = r`\\\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`;\nconst recursiveToken = r`\\(\\?R=(?<rDepth>[^\\)]+)\\)|${gRToken}`;\nconst namedCaptureDelim = r`\\(\\?<(?![=!])(?<captureName>[^>]+)>`;\nconst captureDelim = r`${namedCaptureDelim}|(?<unnamed>\\()(?!\\?)`;\nconst token = new RegExp(r`${namedCaptureDelim}|${recursiveToken}|\\(\\?|\\\\?.`, 'gsu');\nconst overlappingRecursionMsg = 'Cannot use multiple overlapping recursions';\n\n/**\n@param {string} pattern\n@param {{\n flags?: string;\n captureTransfers?: Map<number, Array<number>>;\n hiddenCaptures?: Array<number>;\n mode?: 'plugin' | 'external';\n}} [data]\n@returns {{\n pattern: string;\n captureTransfers: Map<number, Array<number>>;\n hiddenCaptures: Array<number>;\n}}\n*/\nfunction recursion(pattern, data) {\n const {hiddenCaptures, mode} = {\n hiddenCaptures: [],\n mode: 'plugin',\n ...data,\n };\n // Capture transfer is used by <github.com/slevithan/oniguruma-to-es>\n let captureTransfers = data?.captureTransfers ?? new Map();\n // Keep the initial fail-check (which avoids unneeded processing) as fast as possible by testing\n // without the accuracy improvement of using `hasUnescaped` with `Context.DEFAULT`\n if (!(new RegExp(recursiveToken, 'su').test(pattern))) {\n return {\n pattern,\n captureTransfers,\n hiddenCaptures,\n };\n }\n if (mode === 'plugin' && hasUnescaped(pattern, r`\\(\\?\\(DEFINE\\)`, Context.DEFAULT)) {\n throw new Error('DEFINE groups cannot be used with recursion');\n }\n\n const addedHiddenCaptures = [];\n const hasNumberedBackref = hasUnescaped(pattern, r`\\\\[1-9]`, Context.DEFAULT);\n const groupContentsStartPos = new Map();\n const openGroups = [];\n let hasRecursed = false;\n let numCharClassesOpen = 0;\n let numCapturesPassed = 0;\n let match;\n token.lastIndex = 0;\n while ((match = token.exec(pattern))) {\n const {0: m, groups: {captureName, rDepth, gRNameOrNum, gRDepth}} = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n\n // `(?R=N)`\n if (rDepth) {\n assertMaxInBounds(rDepth);\n if (hasRecursed) {\n throw new Error(overlappingRecursionMsg);\n }\n if (hasNumberedBackref) {\n // Could add support for numbered backrefs with extra effort, but it's probably not worth\n // it. To trigger this error, the regex must include recursion and one of the following:\n // - An interpolated regex that contains a numbered backref (since other numbered\n // backrefs are prevented by implicit flag n).\n // - A numbered backref, when flag n is explicitly disabled.\n // Note that Regex+'s extended syntax (atomic groups and sometimes subroutines) can also\n // add numbered backrefs, but those work fine because external plugins like this one run\n // *before* the transformation of built-in syntax extensions\n throw new Error(\n // When used in `external` mode by transpilers other than Regex+, backrefs might have\n // gone through conversion from named to numbered, so avoid a misleading error\n `${mode === 'external' ? 'Backrefs' : 'Numbered backrefs'} cannot be used with global recursion`\n );\n }\n const left = pattern.slice(0, match.index);\n const right = pattern.slice(token.lastIndex);\n if (hasUnescaped(right, recursiveToken, Context.DEFAULT)) {\n throw new Error(overlappingRecursionMsg);\n }\n const reps = +rDepth - 1;\n pattern = makeRecursive(\n left,\n right,\n reps,\n false,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n );\n captureTransfers = mapCaptureTransfers(\n captureTransfers,\n left,\n reps,\n addedHiddenCaptures.length,\n 0,\n numCapturesPassed\n );\n // No need to parse further\n break;\n // `\\g<name&R=N>`, `\\g<number&R=N>`\n } else if (gRNameOrNum) {\n assertMaxInBounds(gRDepth);\n let isWithinReffedGroup = false;\n for (const g of openGroups) {\n if (g.name === gRNameOrNum || g.num === +gRNameOrNum) {\n isWithinReffedGroup = true;\n if (g.hasRecursedWithin) {\n throw new Error(overlappingRecursionMsg);\n }\n break;\n }\n }\n if (!isWithinReffedGroup) {\n throw new Error(r`Recursive \\g cannot be used outside the referenced group \"${\n mode === 'external' ? gRNameOrNum : r`\\g<${gRNameOrNum}&R=${gRDepth}>`\n }\"`);\n }\n const startPos = groupContentsStartPos.get(gRNameOrNum);\n const groupContents = getGroupContents(pattern, startPos);\n if (\n hasNumberedBackref &&\n hasUnescaped(groupContents, r`${namedCaptureDelim}|\\((?!\\?)`, Context.DEFAULT)\n ) {\n throw new Error(\n // When used in `external` mode by transpilers other than Regex+, backrefs might have\n // gone through conversion from named to numbered, so avoid a misleading error\n `${mode === 'external' ? 'Backrefs' : 'Numbered backrefs'} cannot be used with recursion of capturing groups`\n );\n }\n const groupContentsLeft = pattern.slice(startPos, match.index);\n const groupContentsRight = groupContents.slice(groupContentsLeft.length + m.length);\n const numAddedHiddenCapturesPreExpansion = addedHiddenCaptures.length;\n const reps = +gRDepth - 1;\n const expansion = makeRecursive(\n groupContentsLeft,\n groupContentsRight,\n reps,\n true,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n );\n captureTransfers = mapCaptureTransfers(\n captureTransfers,\n groupContentsLeft,\n reps,\n addedHiddenCaptures.length - numAddedHiddenCapturesPreExpansion,\n numAddedHiddenCapturesPreExpansion,\n numCapturesPassed\n );\n const pre = pattern.slice(0, startPos);\n const post = pattern.slice(startPos + groupContents.length);\n // Modify the string we're looping over\n pattern = `${pre}${expansion}${post}`;\n // Step forward for the next loop iteration\n token.lastIndex += expansion.length - m.length - groupContentsLeft.length - groupContentsRight.length;\n openGroups.forEach(g => g.hasRecursedWithin = true);\n hasRecursed = true;\n } else if (captureName) {\n numCapturesPassed++;\n groupContentsStartPos.set(String(numCapturesPassed), token.lastIndex);\n groupContentsStartPos.set(captureName, token.lastIndex);\n openGroups.push({\n num: numCapturesPassed,\n name: captureName,\n });\n } else if (m[0] === '(') {\n const isUnnamedCapture = m === '(';\n if (isUnnamedCapture) {\n numCapturesPassed++;\n groupContentsStartPos.set(String(numCapturesPassed), token.lastIndex);\n }\n openGroups.push(isUnnamedCapture ? {num: numCapturesPassed} : {});\n } else if (m === ')') {\n openGroups.pop();\n }\n\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n\n hiddenCaptures.push(...addedHiddenCaptures);\n\n return {\n pattern,\n captureTransfers,\n hiddenCaptures,\n };\n}\n\n/**\n@param {string} max\n*/\nfunction assertMaxInBounds(max) {\n const errMsg = `Max depth must be integer between 2 and 100; used ${max}`;\n if (!/^[1-9]\\d*$/.test(max)) {\n throw new Error(errMsg);\n }\n max = +max;\n if (max < 2 || max > 100) {\n throw new Error(errMsg);\n }\n}\n\n/**\n@param {string} left\n@param {string} right\n@param {number} reps\n@param {boolean} isSubpattern\n@param {Array<number>} hiddenCaptures\n@param {Array<number>} addedHiddenCaptures\n@param {number} numCapturesPassed\n@returns {string}\n*/\nfunction makeRecursive(\n left,\n right,\n reps,\n isSubpattern,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n) {\n const namesInRecursed = new Set();\n // Can skip this work if not needed\n if (isSubpattern) {\n forEachUnescaped(left + right, namedCaptureDelim, ({groups: {captureName}}) => {\n namesInRecursed.add(captureName);\n }, Context.DEFAULT);\n }\n const rest = [\n reps,\n isSubpattern ? namesInRecursed : null,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed,\n ];\n // Depth 2: 'left(?:left(?:)right)right'\n // Depth 3: 'left(?:left(?:left(?:)right)right)right'\n // Empty group in the middle separates tokens and absorbs a following quantifier if present\n return `${left}${\n repeatWithDepth(`(?:${left}`, 'forward', ...rest)\n }(?:)${\n repeatWithDepth(`${right})`, 'backward', ...rest)\n }${right}`;\n}\n\n/**\n@param {string} pattern\n@param {'forward' | 'backward'} direction\n@param {number} reps\n@param {Set<string> | null} namesInRecursed\n@param {Array<number>} hiddenCaptures\n@param {Array<number>} addedHiddenCaptures\n@param {number} numCapturesPassed\n@returns {string}\n*/\nfunction repeatWithDepth(\n pattern,\n direction,\n reps,\n namesInRecursed,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n) {\n const startNum = 2;\n const getDepthNum = i => direction === 'forward' ? (i + startNum) : (reps - i + startNum - 1);\n let result = '';\n for (let i = 0; i < reps; i++) {\n const depthNum = getDepthNum(i);\n result += replaceUnescaped(\n pattern,\n r`${captureDelim}|\\\\k<(?<backref>[^>]+)>`,\n ({0: m, groups: {captureName, unnamed, backref}}) => {\n if (backref && namesInRecursed && !namesInRecursed.has(backref)) {\n // Don't alter backrefs to groups outside the recursed subpattern\n return m;\n }\n const suffix = `_$${depthNum}`;\n if (unnamed || captureName) {\n const addedCaptureNum = numCapturesPassed + addedHiddenCaptures.length + 1;\n addedHiddenCaptures.push(addedCaptureNum);\n incrementIfAtLeast(hiddenCaptures, addedCaptureNum);\n return unnamed ? m : `(?<${captureName}${suffix}>`;\n }\n return r`\\k<${backref}${suffix}>`;\n },\n Context.DEFAULT\n );\n }\n return result;\n}\n\n/**\nUpdates the array in place by incrementing each value greater than or equal to the threshold.\n@param {Array<number>} arr\n@param {number} threshold\n*/\nfunction incrementIfAtLeast(arr, threshold) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] >= threshold) {\n arr[i]++;\n }\n }\n}\n\n/**\n@param {Map<number, Array<number>>} captureTransfers\n@param {string} left\n@param {number} reps\n@param {number} numCapturesAddedInExpansion\n@param {number} numAddedHiddenCapturesPreExpansion\n@param {number} numCapturesPassed\n@returns {Map<number, Array<number>>}\n*/\nfunction mapCaptureTransfers(captureTransfers, left, reps, numCapturesAddedInExpansion, numAddedHiddenCapturesPreExpansion, numCapturesPassed) {\n if (captureTransfers.size && numCapturesAddedInExpansion) {\n let numCapturesInLeft = 0;\n forEachUnescaped(left, captureDelim, () => numCapturesInLeft++, Context.DEFAULT);\n // Is 0 for global recursion\n const recursionDelimCaptureNum = numCapturesPassed - numCapturesInLeft + numAddedHiddenCapturesPreExpansion;\n const newCaptureTransfers = new Map();\n captureTransfers.forEach((from, to) => {\n const numCapturesInRight = (numCapturesAddedInExpansion - (numCapturesInLeft * reps)) / reps;\n const numCapturesAddedInLeft = numCapturesInLeft * reps;\n const newTo = to > (recursionDelimCaptureNum + numCapturesInLeft) ? to + numCapturesAddedInExpansion : to;\n const newFrom = [];\n for (const f of from) {\n // Before the recursed subpattern\n if (f <= recursionDelimCaptureNum) {\n newFrom.push(f);\n // After the recursed subpattern\n } else if (f > (recursionDelimCaptureNum + numCapturesInLeft + numCapturesInRight)) {\n newFrom.push(f + numCapturesAddedInExpansion);\n // Within the recursed subpattern, on the left of the recursion token\n } else if (f <= (recursionDelimCaptureNum + numCapturesInLeft)) {\n for (let i = 0; i <= reps; i++) {\n newFrom.push(f + (numCapturesInLeft * i));\n }\n // Within the recursed subpattern, on the right of the recursion token\n } else {\n for (let i = 0; i <= reps; i++) {\n newFrom.push(f + numCapturesAddedInLeft + (numCapturesInRight * i));\n }\n }\n }\n newCaptureTransfers.set(newTo, newFrom);\n });\n return newCaptureTransfers;\n }\n return captureTransfers;\n}\n\nexport {\n recursion,\n};\n", "import {EsVersion, Target} from './options.js';\n\nconst cp = String.fromCodePoint;\nconst r = String.raw;\n\nconst envFlags = {};\n// Use `globalThis` to prevent env-testing fns from being replaced with constants during bundling\n// with Rolldown; see <github.com/slevithan/oniguruma-to-es/issues/42>\nconst globalRegExp = globalThis.RegExp;\nenvFlags.flagGroups = (() => {\n try {\n new globalRegExp('(?i:)');\n } catch {\n return false;\n }\n return true;\n})();\nenvFlags.unicodeSets = (() => {\n try {\n // Check for flag v support and also that nested classes can be parsed\n // See <github.com/slevithan/oniguruma-to-es/pull/41>\n new globalRegExp('[[]]', 'v');\n } catch {\n return false;\n }\n return true;\n})();\n// Detect WebKit bug: <github.com/slevithan/oniguruma-to-es/issues/30>\nenvFlags.bugFlagVLiteralHyphenIsRange = envFlags.unicodeSets ? (() => {\n try {\n new globalRegExp(r`[\\d\\-a]`, 'v');\n } catch {\n return true;\n }\n return false;\n})() : false;\n// Detect WebKit bug: <github.com/slevithan/oniguruma-to-es/issues/38>\nenvFlags.bugNestedClassIgnoresNegation = envFlags.unicodeSets && new globalRegExp('[[^a]]', 'v').test('a');\n\nfunction getNewCurrentFlags(current, {enable, disable}) {\n return {\n dotAll: !disable?.dotAll && !!(enable?.dotAll || current.dotAll),\n ignoreCase: !disable?.ignoreCase && !!(enable?.ignoreCase || current.ignoreCase),\n };\n}\n\nfunction getOrInsert(map, key, defaultValue) {\n if (!map.has(key)) {\n map.set(key, defaultValue);\n }\n return map.get(key);\n}\n\n/**\n@param {keyof Target} target\n@param {keyof Target} min\n@returns {boolean}\n*/\nfunction isMinTarget(target, min) {\n return EsVersion[target] >= EsVersion[min];\n}\n\nfunction throwIfNullish(value, msg) {\n if (value == null) {\n throw new Error(msg ?? 'Value expected');\n }\n return value;\n}\n\nexport {\n cp,\n envFlags,\n getNewCurrentFlags,\n getOrInsert,\n isMinTarget,\n r,\n throwIfNullish,\n};\n", "import {envFlags} from './utils.js';\n/**\n@import {ToRegExpOptions} from './index.js';\n*/\n\nconst Accuracy = /** @type {const} */ ({\n default: 'default',\n strict: 'strict',\n});\n\nconst EsVersion = {\n ES2025: 2025,\n ES2024: 2024,\n ES2018: 2018,\n};\n\nconst Target = /** @type {const} */ ({\n auto: 'auto',\n ES2025: 'ES2025',\n ES2024: 'ES2024',\n ES2018: 'ES2018',\n});\n\n/**\nReturns a complete set of options, with default values set for options that weren't provided.\n@param {ToRegExpOptions} [options]\n@returns {Required<ToRegExpOptions>}\n*/\nfunction getOptions(options = {}) {\n if ({}.toString.call(options) !== '[object Object]') {\n throw new Error('Unexpected options');\n }\n if (options.target !== undefined && !Target[options.target]) {\n throw new Error(`Unexpected target \"${options.target}\"`)\n }\n // Set default values\n const opts = {\n // Sets the level of emulation rigor/strictness.\n accuracy: 'default',\n // Disables advanced emulation that relies on returning a `RegExp` subclass, resulting in\n // certain patterns not being emulatable.\n avoidSubclass: false,\n // Oniguruma flags; a string with `i`, `m`, `x`, `D`, `S`, `W`, `y{g}` in any order (all\n // optional). Oniguruma's `m` is equivalent to JavaScript's `s` (`dotAll`).\n flags: '',\n // Include JavaScript flag `g` (`global`) in the result.\n global: false,\n // Include JavaScript flag `d` (`hasIndices`) in the result.\n hasIndices: false,\n // Delay regex construction until first use if the transpiled pattern is at least this length.\n lazyCompileLength: Infinity,\n // JavaScript version used for generated regexes. Using `auto` detects the best value based on\n // your environment. Later targets allow faster processing, simpler generated source, and\n // support for additional features.\n target: 'auto',\n // Disables minifications that simplify the pattern without changing the meaning.\n verbose: false,\n ...options,\n // Advanced options that override standard behavior, error checking, and flags when enabled.\n rules: {\n // Useful with TextMate grammars that merge backreferences across patterns.\n allowOrphanBackrefs: false,\n // Use ASCII `\\b` and `\\B`, which increases search performance of generated regexes.\n asciiWordBoundaries: false,\n // Allow unnamed captures and numbered calls (backreferences and subroutines) when using\n // named capture. This is Oniguruma option `ONIG_OPTION_CAPTURE_GROUP`; on by default in\n // `vscode-oniguruma`.\n captureGroup: false,\n // Change the recursion depth limit from Oniguruma's `20` to an integer `2`\u2013`20`.\n recursionLimit: 20,\n // `^` as `\\A`; `$` as`\\Z`. Improves search performance of generated regexes without changing\n // the meaning if searching line by line. This is Oniguruma option `ONIG_OPTION_SINGLELINE`.\n singleline: false,\n ...options.rules,\n },\n };\n if (opts.target === 'auto') {\n opts.target = envFlags.flagGroups ? 'ES2025' : (envFlags.unicodeSets ? 'ES2024' : 'ES2018');\n }\n return opts;\n}\n\nexport {\n Accuracy,\n EsVersion,\n getOptions,\n Target,\n};\n", "import {cp, r} from './utils.js';\nimport {slug} from 'oniguruma-parser/parser';\n\n// `\\t\\n\\v\\f\\r\\x20`\nconst asciiSpaceChar = '[\\t-\\r ]';\n\nconst CharsWithoutIgnoreCaseExpansion = new Set([\n cp(0x130), // \u0130\n cp(0x131), // \u0131\n]);\n\n// Different than `PosixClassMap`'s `word`\nconst defaultWordChar = r`[\\p{L}\\p{M}\\p{N}\\p{Pc}]`;\n\nfunction getIgnoreCaseMatchChars(char) {\n // Some chars should not match the chars they case swap to\n if (CharsWithoutIgnoreCaseExpansion.has(char)) {\n return [char];\n }\n const set = new Set();\n const lower = char.toLowerCase();\n // Everything else is based on `lower`\n const upper = lower.toUpperCase();\n const title = LowerToTitleCaseMap.get(lower);\n const altLower = LowerToAlternativeLowerCaseMap.get(lower);\n const altUpper = LowerToAlternativeUpperCaseMap.get(lower);\n // Exclude ucase if multiple chars; count code point length. Excludes ucase versions of German\n // es-zed '\u00DF', ligatures like '\uFB00', and chars with no precomposed ucase like '\u0149'. See\n // <unicode.org/Public/UNIDATA/SpecialCasing.txt>\n if ([...upper].length === 1) {\n set.add(upper);\n }\n altUpper && set.add(altUpper);\n title && set.add(title);\n // Lcase of '\u0130' is multiple chars, but it's excluded by `CharsWithoutIgnoreCaseExpansion`\n set.add(lower);\n altLower && set.add(altLower);\n return [...set];\n}\n\n// The following set includes:\n// - All ES2024 general categories and their aliases (all are supported by Oniguruma). See\n// <github.com/mathiasbynens/unicode-match-property-value-ecmascript/blob/main/data/mappings.js>\n// - All ES2024 binary properties and their aliases (all are supported by Oniguruma). See\n// <tc39.es/ecma262/multipage/text-processing.html#table-binary-unicode-properties>\n// Unicode properties must be mapped to property names supported by JS, and must also apply JS's\n// stricter rules for casing, whitespace, hyphens, and underscores in Unicode property names. In\n// order to remain lightweight, this library assumes properties not in this list are Unicode script\n// names (which require a `Script=` or `sc=` prefix in JS). Unlike JS, Oniguruma doesn't support\n// script extensions, and it supports some properties that aren't supported in JS (including blocks\n// with an `In_` prefix). See also:\n// - Properties supported in Oniguruma: <github.com/kkos/oniguruma/blob/master/doc/UNICODE_PROPERTIES>\n// - Properties supported in JS by spec version: <github.com/eslint-community/regexpp/blob/main/src/unicode/properties.ts>\nconst JsUnicodePropertyMap = /* @__PURE__ */ new Map(\n`C Other\nCc Control cntrl\nCf Format\nCn Unassigned\nCo Private_Use\nCs Surrogate\nL Letter\nLC Cased_Letter\nLl Lowercase_Letter\nLm Modifier_Letter\nLo Other_Letter\nLt Titlecase_Letter\nLu Uppercase_Letter\nM Mark Combining_Mark\nMc Spacing_Mark\nMe Enclosing_Mark\nMn Nonspacing_Mark\nN Number\nNd Decimal_Number digit\nNl Letter_Number\nNo Other_Number\nP Punctuation punct\nPc Connector_Punctuation\nPd Dash_Punctuation\nPe Close_Punctuation\nPf Final_Punctuation\nPi Initial_Punctuation\nPo Other_Punctuation\nPs Open_Punctuation\nS Symbol\nSc Currency_Symbol\nSk Modifier_Symbol\nSm Math_Symbol\nSo Other_Symbol\nZ Separator\nZl Line_Separator\nZp Paragraph_Separator\nZs Space_Separator\nASCII\nASCII_Hex_Digit AHex\nAlphabetic Alpha\nAny\nAssigned\nBidi_Control Bidi_C\nBidi_Mirrored Bidi_M\nCase_Ignorable CI\nCased\nChanges_When_Casefolded CWCF\nChanges_When_Casemapped CWCM\nChanges_When_Lowercased CWL\nChanges_When_NFKC_Casefolded CWKCF\nChanges_When_Titlecased CWT\nChanges_When_Uppercased CWU\nDash\nDefault_Ignorable_Code_Point DI\nDeprecated Dep\nDiacritic Dia\nEmoji\nEmoji_Component EComp\nEmoji_Modifier EMod\nEmoji_Modifier_Base EBase\nEmoji_Presentation EPres\nExtended_Pictographic ExtPict\nExtender Ext\nGrapheme_Base Gr_Base\nGrapheme_Extend Gr_Ext\nHex_Digit Hex\nIDS_Binary_Operator IDSB\nIDS_Trinary_Operator IDST\nID_Continue IDC\nID_Start IDS\nIdeographic Ideo\nJoin_Control Join_C\nLogical_Order_Exception LOE\nLowercase Lower\nMath\nNoncharacter_Code_Point NChar\nPattern_Syntax Pat_Syn\nPattern_White_Space Pat_WS\nQuotation_Mark QMark\nRadical\nRegional_Indicator RI\nSentence_Terminal STerm\nSoft_Dotted SD\nTerminal_Punctuation Term\nUnified_Ideograph UIdeo\nUppercase Upper\nVariation_Selector VS\nWhite_Space space\nXID_Continue XIDC\nXID_Start XIDS`.\n split(/\\s/).\n map(p => [slug(p), p])\n);\n\nconst LowerToAlternativeLowerCaseMap = new Map([\n ['s', cp(0x17F)], // s, \u017F\n [cp(0x17F), 's'], // \u017F, s\n]);\n\nconst LowerToAlternativeUpperCaseMap = new Map([\n [cp(0xDF), cp(0x1E9E)], // \u00DF, \u1E9E\n [cp(0x6B), cp(0x212A)], // k, \u212A (Kelvin)\n [cp(0xE5), cp(0x212B)], // \u00E5, \u212B (Angstrom)\n [cp(0x3C9), cp(0x2126)], // \u03C9, \u2126 (Ohm)\n]);\n\n// See <github.com/node-unicode/unicode-16.0.0/tree/main/General_Category/Titlecase_Letter>\nconst LowerToTitleCaseMap = new Map([\n titleEntry(0x1C5),\n titleEntry(0x1C8),\n titleEntry(0x1CB),\n titleEntry(0x1F2),\n ...titleRange(0x1F88, 0x1F8F),\n ...titleRange(0x1F98, 0x1F9F),\n ...titleRange(0x1FA8, 0x1FAF),\n titleEntry(0x1FBC),\n titleEntry(0x1FCC),\n titleEntry(0x1FFC),\n]);\n\n// Unlike Onig's Unicode properties via `\\p` and `\\P`, these names are case sensitive and don't\n// allow inserting whitespace and underscores. Definitions at\n// <github.com/kkos/oniguruma/blob/master/doc/RE> (see: POSIX bracket: Unicode Case)\n// Note: Handling in the transformer assumes all values here are a single, negateable node that's\n// not pre-negated at the top level. It also uses ASCII versions of `graph` and `print` for target\n// `ES2018` (which doesn't allow intersection) if `accuracy` isn't `strict`\nconst PosixClassMap = new Map([\n ['alnum', r`[\\p{Alpha}\\p{Nd}]`],\n ['alpha', r`\\p{Alpha}`],\n ['ascii', r`\\p{ASCII}`],\n ['blank', r`[\\p{Zs}\\t]`],\n ['cntrl', r`\\p{Cc}`],\n ['digit', r`\\p{Nd}`],\n ['graph', r`[\\P{space}&&\\P{Cc}&&\\P{Cn}&&\\P{Cs}]`],\n ['lower', r`\\p{Lower}`],\n ['print', r`[[\\P{space}&&\\P{Cc}&&\\P{Cn}&&\\P{Cs}]\\p{Zs}]`],\n ['punct', r`[\\p{P}\\p{S}]`], // Updated value from Onig 6.9.9; changed from Unicode `\\p{punct}`\n ['space', r`\\p{space}`],\n ['upper', r`\\p{Upper}`],\n ['word', r`[\\p{Alpha}\\p{M}\\p{Nd}\\p{Pc}]`],\n ['xdigit', r`\\p{AHex}`],\n]);\n\nfunction range(start, end) {\n // const range = Array.from(Array(end + 1 - start), (_, i) => i + start);\n // const range = Array(end + 1 - start).fill(start).map((x, i) => x + i);\n const range = [];\n for (let i = start; i <= end; i++) {\n range.push(i);\n }\n return range;\n}\n\nfunction titleEntry(codePoint) {\n const char = cp(codePoint);\n return [char.toLowerCase(), char];\n}\n\nfunction titleRange(start, end) {\n return range(start, end).map(codePoint => titleEntry(codePoint));\n}\n\nconst UnicodePropertiesWithSpecificCase = new Set([\n 'Lower', 'Lowercase',\n 'Upper', 'Uppercase',\n 'Ll', 'Lowercase_Letter',\n 'Lt', 'Titlecase_Letter',\n 'Lu', 'Uppercase_Letter',\n // The `Changes_When_*` properties (and their aliases) could be included, but they're very rare.\n // Some other properties include a handful of chars with specific cases only, but these chars are\n // generally extreme edge cases and using such properties case insensitively generally produces\n // undesired behavior anyway\n]);\n\nexport {\n asciiSpaceChar,\n defaultWordChar,\n getIgnoreCaseMatchChars,\n JsUnicodePropertyMap,\n PosixClassMap,\n UnicodePropertiesWithSpecificCase,\n};\n", "import {Accuracy, Target} from './options.js';\nimport {asciiSpaceChar, defaultWordChar, JsUnicodePropertyMap, PosixClassMap} from './unicode.js';\nimport {cp, getNewCurrentFlags, getOrInsert, isMinTarget, r} from './utils.js';\nimport {createAlternative, createAssertion, createBackreference, createCapturingGroup, createCharacter, createCharacterClass, createCharacterSet, createGroup, createLookaroundAssertion, createQuantifier, createSubroutine, createUnicodeProperty, hasOnlyChild, parse, slug} from 'oniguruma-parser/parser';\nimport {traverse} from 'oniguruma-parser/traverser';\n/**\n@import {CapturingGroupNode, OnigurumaAst, Node} from 'oniguruma-parser/parser';\n@import {Visitor} from 'oniguruma-parser/traverser';\n*/\n\n/**\n@typedef {\n OnigurumaAst & {\n options: {\n disable: {[key: string]: boolean};\n force: {[key: string]: boolean};\n };\n _originMap: Map<CapturingGroupNode, CapturingGroupNode>;\n _strategy: string | null;\n }\n} RegexPlusAst\n*/\n/**\nTransforms an Oniguruma AST in-place to a [Regex+](https://github.com/slevithan/regex) AST.\nAssumes target ES2025, expecting the generator to down-convert to the desired JS target version.\n\nRegex+'s syntax and behavior is a strict superset of native JavaScript, so the AST is very close\nto representing native ES2025 `RegExp` but with some added features (atomic groups, possessive\nquantifiers, recursion). The AST doesn't use some of Regex+'s extended features like flag x or\nsubroutines because they follow PCRE behavior and work somewhat differently than in Oniguruma. The\nAST represents what's needed to precisely reproduce Oniguruma behavior using Regex+.\n@param {OnigurumaAst} ast\n@param {{\n accuracy?: keyof Accuracy;\n asciiWordBoundaries?: boolean;\n avoidSubclass?: boolean;\n bestEffortTarget?: keyof Target;\n}} [options]\n@returns {RegexPlusAst}\n*/\nfunction transform(ast, options) {\n const opts = {\n // A couple edge cases exist where options `accuracy` and `bestEffortTarget` are used:\n // - `CharacterSet` kind `text_segment` (`\\X`): An exact representation would require heavy\n // Unicode data; a best-effort approximation requires knowing the target.\n // - `CharacterSet` kind `posix` with values `graph` and `print`: Their complex Unicode\n // representations would be hard to change to ASCII versions after the fact in the generator\n // based on `target`/`accuracy`, so produce the appropriate structure here.\n accuracy: 'default',\n asciiWordBoundaries: false,\n avoidSubclass: false,\n bestEffortTarget: 'ES2025',\n ...options,\n };\n // Add `parent` properties to all nodes to help during traversal; also expected by the generator\n addParentProperties(ast);\n const firstPassState = {\n accuracy: opts.accuracy,\n asciiWordBoundaries: opts.asciiWordBoundaries,\n avoidSubclass: opts.avoidSubclass,\n flagDirectivesByAlt: new Map(),\n jsGroupNameMap: new Map(),\n minTargetEs2024: isMinTarget(opts.bestEffortTarget, 'ES2024'),\n passedLookbehind: false,\n strategy: null,\n // Subroutines can appear before the groups they ref, so collect reffed nodes for a second pass \n subroutineRefMap: new Map(),\n supportedGNodes: new Set(),\n digitIsAscii: ast.flags.digitIsAscii,\n spaceIsAscii: ast.flags.spaceIsAscii,\n wordIsAscii: ast.flags.wordIsAscii,\n };\n traverse(ast, FirstPassVisitor, firstPassState);\n // Global flags modified by the first pass\n const globalFlags = {\n dotAll: ast.flags.dotAll,\n ignoreCase: ast.flags.ignoreCase,\n };\n // The interplay of subroutines (with Onig's unique rules/behavior for them; see comments in the\n // parser for details) with backref multiplexing (a unique Onig feature), flag modifiers, and\n // duplicate group names (which might be indirectly referenced by subroutines even though\n // subroutines can't directly reference duplicate names) is extremely complicated to emulate in\n // JS in a way that handles all edge cases, so we need multiple passes to do it\n const secondPassState = {\n currentFlags: globalFlags,\n prevFlags: null,\n globalFlags,\n groupOriginByCopy: new Map(),\n groupsByName: new Map(),\n multiplexCapturesToLeftByRef: new Map(),\n openRefs: new Map(),\n reffedNodesByReferencer: new Map(),\n subroutineRefMap: firstPassState.subroutineRefMap,\n };\n traverse(ast, SecondPassVisitor, secondPassState);\n const thirdPassState = {\n groupsByName: secondPassState.groupsByName,\n highestOrphanBackref: 0,\n numCapturesToLeft: 0,\n reffedNodesByReferencer: secondPassState.reffedNodesByReferencer,\n };\n traverse(ast, ThirdPassVisitor, thirdPassState);\n ast._originMap = secondPassState.groupOriginByCopy;\n ast._strategy = firstPassState.strategy;\n return ast;\n}\n\nconst /** @type {Visitor} */ FirstPassVisitor = {\n AbsenceFunction({node, parent, replaceWith}) {\n const {body, kind} = node;\n if (kind === 'repeater') {\n // Convert `(?~\u2026)` to `(?:(?:(?!\u2026)\\p{Any})*)`\n const innerGroup = createGroup();\n innerGroup.body[0].body.push(\n // Insert own alts as `body`\n createLookaroundAssertion({negate: true, body}),\n createUnicodeProperty('Any')\n );\n const outerGroup = createGroup();\n outerGroup.body[0].body.push(\n createQuantifier('greedy', 0, Infinity, innerGroup)\n );\n replaceWith(setParentDeep(outerGroup, parent), {traverse: true});\n } else {\n throw new Error(`Unsupported absence function \"(?~|\"`);\n }\n },\n\n Alternative: {\n enter({node, parent, key}, {flagDirectivesByAlt}) {\n // Look for own-level flag directives when entering an alternative because after traversing\n // the directive itself, any subsequent flag directives will no longer be at the same level\n const flagDirectives = node.body.filter(el => el.kind === 'flags');\n for (let i = key + 1; i < parent.body.length; i++) {\n const forwardSiblingAlt = parent.body[i];\n getOrInsert(flagDirectivesByAlt, forwardSiblingAlt, []).push(...flagDirectives);\n }\n },\n exit({node}, {flagDirectivesByAlt}) {\n // Wait until exiting to wrap an alternative's nodes with flag groups that extend flag\n // directives from prior sibling alternatives, because doing this at the end allows inner\n // nodes to accurately check their level in the tree\n if (flagDirectivesByAlt.get(node)?.length) {\n const flags = getCombinedFlagModsFromFlagNodes(flagDirectivesByAlt.get(node));\n if (flags) {\n const flagGroup = createGroup({flags});\n flagGroup.body[0].body = node.body;\n node.body = [setParentDeep(flagGroup, node)];\n }\n }\n },\n },\n\n Assertion({node, parent, key, container, root, remove, replaceWith}, state) {\n const {kind, negate} = node;\n const {asciiWordBoundaries, avoidSubclass, supportedGNodes, wordIsAscii} = state;\n if (kind === 'text_segment_boundary') {\n // Supported by the parser but not yet for transpilation\n throw new Error(`Unsupported text segment boundary \"\\\\${negate ? 'Y' : 'y'}\"`);\n } else if (kind === 'line_end') {\n replaceWith(setParentDeep(createLookaroundAssertion({body: [\n createAlternative({body: [createAssertion('string_end')]}),\n createAlternative({body: [createCharacter(10)]}), // `\\n`\n ]}), parent));\n } else if (kind === 'line_start') {\n // Onig's `^` doesn't match after a string-terminating line feed\n replaceWith(setParentDeep(parseFragment(r`(?<=\\A|\\n(?!\\z))`, {skipLookbehindValidation: true}), parent));\n } else if (kind === 'search_start') {\n if (supportedGNodes.has(node)) {\n root.flags.sticky = true;\n remove();\n } else {\n const prev = container[key - 1]; // parent.body[key - 1]\n // Not all ways of blocking the `\\G` from matching are covered here (ex: a node prior to\n // the `prev` node could block), but blocked `\\G` is an edge case and it's okay if some\n // blocked cases result in the standard error for being unsupported without a subclass\n if (prev && isAlwaysNonZeroLength(prev)) {\n replaceWith(setParentDeep(createLookaroundAssertion({negate: true}), parent));\n } else if (avoidSubclass) {\n throw new Error(r`Uses \"\\G\" in a way that requires a subclass`);\n } else {\n replaceWith(setParent(createAssertion('string_start'), parent));\n state.strategy = 'clip_search';\n }\n }\n } else if (kind === 'string_end' || kind === 'string_start') {\n // Don't need transformation since JS flag m isn't used\n } else if (kind === 'string_end_newline') {\n replaceWith(setParentDeep(parseFragment(r`(?=\\n?\\z)`), parent));\n } else if (kind === 'word_boundary') {\n if (!wordIsAscii && !asciiWordBoundaries) {\n const b = `(?:(?<=${defaultWordChar})(?!${defaultWordChar})|(?<!${defaultWordChar})(?=${defaultWordChar}))`;\n const B = `(?:(?<=${defaultWordChar})(?=${defaultWordChar})|(?<!${defaultWordChar})(?!${defaultWordChar}))`;\n replaceWith(setParentDeep(parseFragment(negate ? B : b), parent));\n }\n } else {\n throw new Error(`Unexpected assertion kind \"${kind}\"`);\n }\n },\n\n Backreference({node}, {jsGroupNameMap}) {\n let {ref} = node;\n if (typeof ref === 'string' && !isValidJsGroupName(ref)) {\n ref = getAndStoreJsGroupName(ref, jsGroupNameMap);\n node.ref = ref;\n }\n },\n\n CapturingGroup({node}, {jsGroupNameMap, subroutineRefMap}) {\n let {name} = node;\n if (name && !isValidJsGroupName(name)) {\n name = getAndStoreJsGroupName(name, jsGroupNameMap);\n node.name = name;\n }\n subroutineRefMap.set(node.number, node);\n if (name) {\n subroutineRefMap.set(name, node);\n }\n },\n\n CharacterClassRange({node, parent, replaceWith}) {\n if (parent.kind === 'intersection') {\n // JS doesn't allow intersection with ranges without a wrapper class\n const cc = createCharacterClass({body: [node]});\n replaceWith(setParentDeep(cc, parent), {traverse: true});\n }\n },\n\n CharacterSet({node, parent, replaceWith}, {accuracy, minTargetEs2024, digitIsAscii, spaceIsAscii, wordIsAscii}) {\n const {kind, negate, value} = node;\n // Flag D with `\\d`, `\\p{Digit}`, `[[:digit:]]`\n if (digitIsAscii && (kind === 'digit' || value === 'digit')) {\n replaceWith(setParent(createCharacterSet('digit', {negate}), parent));\n return;\n }\n // Flag S with `\\s`, `\\p{Space}`, `[[:space:]]`\n if (spaceIsAscii && (kind === 'space' || value === 'space')) {\n replaceWith(setParentDeep(setNegate(parseFragment(asciiSpaceChar), negate), parent));\n return;\n }\n // Flag W with `\\w`, `\\p{Word}`, `[[:word:]]`\n if (wordIsAscii && (kind === 'word' || value === 'word')) {\n replaceWith(setParent(createCharacterSet('word', {negate}), parent));\n return;\n }\n if (kind === 'any') {\n replaceWith(setParent(createUnicodeProperty('Any'), parent));\n } else if (kind === 'digit') {\n replaceWith(setParent(createUnicodeProperty('Nd', {negate}), parent));\n } else if (kind === 'dot') {\n // No-op; doesn't need transformation\n } else if (kind === 'text_segment') {\n if (accuracy === 'strict') {\n throw new Error(r`Use of \"\\X\" requires non-strict accuracy`);\n }\n // Emoji pattern based on <github.com/slevithan/emoji-regex-xs> but adapted for our use case\n // Note: Not using raw strings to work around Bun \u2264 1.1.34 issue <github.com/oven-sh/bun/issues/7540>\n const eBase = '\\\\p{Emoji}(?:\\\\p{EMod}|\\\\uFE0F\\\\u20E3?|[\\\\x{E0020}-\\\\x{E007E}]+\\\\x{E007F})?';\n const emoji = r`\\p{RI}{2}|${eBase}(?:\\u200D${eBase})*`;\n replaceWith(setParentDeep(parseFragment(\n // Close approximation of an extended grapheme cluster; see <unicode.org/reports/tr29/>\n r`(?>\\r\\n|${minTargetEs2024 ? r`\\p{RGI_Emoji}` : emoji}|\\P{M}\\p{M}*)`,\n // Allow JS property `RGI_Emoji` through\n {skipPropertyNameValidation: true}\n ), parent));\n } else if (kind === 'hex') {\n replaceWith(setParent(createUnicodeProperty('AHex', {negate}), parent));\n } else if (kind === 'newline') {\n replaceWith(setParentDeep(parseFragment(negate ? '[^\\n]' : '(?>\\r\\n?|[\\n\\v\\f\\x85\\u2028\\u2029])'), parent));\n } else if (kind === 'posix') {\n if (!minTargetEs2024 && (value === 'graph' || value === 'print')) {\n if (accuracy === 'strict') {\n throw new Error(`POSIX class \"${value}\" requires min target ES2024 or non-strict accuracy`);\n }\n let ascii = {\n graph: '!-~',\n print: ' -~',\n }[value];\n if (negate) {\n // POSIX classes are always nested in a char class; manually invert the range rather than\n // using `[^\u2026]` so it can be unwrapped since ES2018 doesn't support nested classes\n ascii = `\\0-${cp(ascii.codePointAt(0) - 1)}${cp(ascii.codePointAt(2) + 1)}-\\u{10FFFF}`;\n }\n replaceWith(setParentDeep(parseFragment(`[${ascii}]`), parent));\n } else {\n replaceWith(setParentDeep(setNegate(parseFragment(PosixClassMap.get(value)), negate), parent));\n }\n } else if (kind === 'property') {\n if (!JsUnicodePropertyMap.has(slug(value))) {\n // Assume it's a script; no error checking is the price for avoiding heavyweight Unicode\n // data for all script names\n node.key = 'sc';\n }\n } else if (kind === 'space') {\n // Can't use JS's Unicode `\\s` since unlike Onig it includes `\\uFEFF` and excludes `\\x85`\n replaceWith(setParent(createUnicodeProperty('space', {negate}), parent));\n } else if (kind === 'word') {\n replaceWith(setParentDeep(setNegate(parseFragment(defaultWordChar), negate), parent));\n } else {\n throw new Error(`Unexpected character set kind \"${kind}\"`);\n }\n },\n\n Directive({node, parent, root, remove, replaceWith, removeAllPrevSiblings, removeAllNextSiblings}) {\n const {kind, flags} = node;\n if (kind === 'flags') {\n if (!flags.enable && !flags.disable) {\n // Flag directive without flags; ex: `(?-)`, `(?--)`\n remove();\n } else {\n const flagGroup = createGroup({flags});\n flagGroup.body[0].body = removeAllNextSiblings();\n replaceWith(setParentDeep(flagGroup, parent), {traverse: true});\n }\n } else if (kind === 'keep') {\n const firstAlt = root.body[0];\n // Supporting a full-pattern wrapper around `\\K` enables use with flag modifiers\n const hasWrapperGroup =\n root.body.length === 1 &&\n // Not emulatable if within a `CapturingGroup`\n hasOnlyChild(firstAlt, {type: 'Group'}) &&\n firstAlt.body[0].body.length === 1;\n const topLevel = hasWrapperGroup ? firstAlt.body[0] : root;\n if (parent.parent !== topLevel || topLevel.body.length > 1) {\n throw new Error(r`Uses \"\\K\" in a way that's unsupported`);\n }\n const lookbehind = createLookaroundAssertion({behind: true});\n lookbehind.body[0].body = removeAllPrevSiblings();\n replaceWith(setParentDeep(lookbehind, parent));\n } else {\n throw new Error(`Unexpected directive kind \"${kind}\"`);\n }\n },\n\n Flags({node, parent}) {\n // Throw for flags supported by the parser but not yet for transpilation\n if (node.posixIsAscii) {\n throw new Error('Unsupported flag \"P\"');\n }\n if (node.textSegmentMode === 'word') {\n throw new Error('Unsupported flag \"y{w}\"');\n }\n // Remove Onig flags that aren't available in JS\n [ 'digitIsAscii', // Flag D\n 'extended', // Flag x\n 'posixIsAscii', // Flag P\n 'spaceIsAscii', // Flag S\n 'wordIsAscii', // Flag W\n 'textSegmentMode', // Flag y{g} or y{w}\n ].forEach(f => delete node[f]);\n Object.assign(node, {\n // JS flag g; no Onig equiv\n global: false,\n // JS flag d; no Onig equiv\n hasIndices: false,\n // JS flag m; no Onig equiv but its behavior is always on in Onig. Onig's only line break\n // char is line feed, unlike JS, so this flag isn't used since it would produce inaccurate\n // results (also allows `^` and `$` to be used in the generator for string start and end)\n multiline: false,\n // JS flag y; no Onig equiv, but used for `\\G` emulation\n sticky: node.sticky ?? false,\n // Note: Regex+ doesn't allow explicitly adding flags it handles implicitly, so leave out\n // properties `unicode` (JS flag u) and `unicodeSets` (JS flag v). Keep the existing values\n // for `ignoreCase` (flag i) and `dotAll` (JS flag s, but Onig flag m)\n });\n // Options accepted by Regex+; see <github.com/slevithan/regex#-options>\n parent.options = {\n disable: {\n // Onig uses different rules for flag x than Regex+, so disable the implicit flag\n x: true,\n // Onig has no flag to control \"named capture only\" mode but contextually applies its\n // behavior when named capturing is used, so disable Regex+'s implicit flag for it\n n: true,\n },\n force: {\n // Always add flag v because we're generating an AST that relies on it (it enables JS\n // support for Onig features nested classes, intersection, Unicode properties, etc.).\n // However, the generator might disable flag v based on its `target` option\n v: true,\n },\n };\n },\n\n Group({node}) {\n if (!node.flags) {\n return;\n }\n const {enable, disable} = node.flags;\n // Onig's flag x (`extended`) isn't available in JS\n enable?.extended && delete enable.extended;\n disable?.extended && delete disable.extended;\n // JS doesn't support flag groups that enable and disable the same flag; ex: `(?i-i:)`\n enable?.dotAll && disable?.dotAll && delete enable.dotAll;\n enable?.ignoreCase && disable?.ignoreCase && delete enable.ignoreCase;\n // Cleanup\n enable && !Object.keys(enable).length && delete node.flags.enable;\n disable && !Object.keys(disable).length && delete node.flags.disable;\n !node.flags.enable && !node.flags.disable && delete node.flags;\n },\n\n LookaroundAssertion({node}, state) {\n const {kind} = node;\n if (kind === 'lookbehind') {\n state.passedLookbehind = true;\n }\n },\n\n NamedCallout({node, parent, replaceWith}) {\n const {kind} = node;\n if (kind === 'fail') {\n replaceWith(setParentDeep(createLookaroundAssertion({negate: true}), parent));\n } else {\n throw new Error(`Unsupported named callout \"(*${kind.toUpperCase()}\"`);\n }\n },\n\n Quantifier({node}) {\n if (node.body.type === 'Quantifier') {\n // Change e.g. `a**` to `(?:a*)*`\n const group = createGroup();\n group.body[0].body.push(node.body);\n node.body = setParentDeep(group, node);\n }\n },\n\n Regex: {\n enter({node}, {supportedGNodes}) {\n // For `\\G` to be accurately emulatable using JS flag y, it must be at (and only at) the start\n // of every top-level alternative (with complex rules for what determines being at the start).\n // Additional `\\G` error checking in `Assertion` visitor\n const leadingGs = [];\n let hasAltWithLeadG = false;\n let hasAltWithoutLeadG = false;\n for (const alt of node.body) {\n if (alt.body.length === 1 && alt.body[0].kind === 'search_start') {\n // Remove the `\\G` (leaving behind an empty alternative, and without adding JS flag y)\n // since a top-level alternative that includes only `\\G` always matches at the start of the\n // match attempt. Note that this is based on Oniguruma's rules, and is different than other\n // regex flavors where `\\G` matches at the end of the previous match (a subtle distinction\n // that's relevant after zero-length matches)\n alt.body.pop();\n } else {\n const leadingG = getLeadingG(alt.body);\n if (leadingG) {\n hasAltWithLeadG = true;\n Array.isArray(leadingG) ?\n leadingGs.push(...leadingG) :\n leadingGs.push(leadingG);\n } else {\n hasAltWithoutLeadG = true;\n }\n }\n }\n if (hasAltWithLeadG && !hasAltWithoutLeadG) {\n // Supported `\\G` nodes will be removed (and add flag y) when traversed\n leadingGs.forEach(g => supportedGNodes.add(g));\n }\n },\n exit(_, {accuracy, passedLookbehind, strategy}) {\n if (accuracy === 'strict' && passedLookbehind && strategy) {\n throw new Error(r`Uses \"\\G\" in a way that requires non-strict accuracy`);\n }\n },\n },\n\n Subroutine({node}, {jsGroupNameMap}) {\n let {ref} = node;\n if (typeof ref === 'string' && !isValidJsGroupName(ref)) {\n ref = getAndStoreJsGroupName(ref, jsGroupNameMap);\n node.ref = ref;\n }\n },\n};\n\nconst /** @type {Visitor} */ SecondPassVisitor = {\n Backreference({node}, {multiplexCapturesToLeftByRef, reffedNodesByReferencer}) {\n const {orphan, ref} = node;\n if (!orphan) {\n // Copy the current state for later multiplexing expansion. That's done in a subsequent pass\n // because backref numbers need to be recalculated after subroutine expansion\n reffedNodesByReferencer.set(node, [...multiplexCapturesToLeftByRef.get(ref).map(({node}) => node)]);\n }\n },\n\n CapturingGroup: {\n enter(\n { node,\n parent,\n replaceWith,\n skip,\n },\n { groupOriginByCopy,\n groupsByName,\n multiplexCapturesToLeftByRef,\n openRefs,\n reffedNodesByReferencer,\n }\n ) {\n // Has value if we're within a subroutine expansion\n const origin = groupOriginByCopy.get(node);\n\n // ## Handle recursion; runs after subroutine expansion\n if (origin && openRefs.has(node.number)) {\n // Recursive subroutines don't affect any following backrefs to their `ref` (unlike other\n // subroutines), so don't wrap with a capture. The reffed group might have its name removed\n // due to later subroutine expansion\n const recursion = setParent(createRecursion(node.number), parent);\n reffedNodesByReferencer.set(recursion, openRefs.get(node.number));\n replaceWith(recursion);\n return;\n }\n openRefs.set(node.number, node);\n\n // ## Track data for backref multiplexing\n multiplexCapturesToLeftByRef.set(node.number, []);\n if (node.name) {\n getOrInsert(multiplexCapturesToLeftByRef, node.name, []);\n }\n const multiplexNodes = multiplexCapturesToLeftByRef.get(node.name ?? node.number);\n for (let i = 0; i < multiplexNodes.length; i++) {\n // Captures added via subroutine expansion (maybe indirectly because they were descendant\n // captures of the reffed group or in a nested subroutine expansion) form a set with their\n // origin group and any other copies of it added via subroutines. Only the most recently\n // matched within this set is added to backref multiplexing. So search the list of already-\n // tracked multiplexed nodes for this group name or number to see if there's a node being\n // replaced by this capture\n const multiplex = multiplexNodes[i];\n if (\n // This group is from subroutine expansion, and there's a multiplex value from either the\n // origin node or a prior subroutine expansion group with the same origin\n (origin === multiplex.node || (origin && origin === multiplex.origin)) ||\n // This group is not from subroutine expansion, and it comes after a subroutine expansion\n // group that refers to this group\n node === multiplex.origin\n ) {\n multiplexNodes.splice(i, 1);\n break;\n }\n }\n multiplexCapturesToLeftByRef.get(node.number).push({node, origin});\n if (node.name) {\n multiplexCapturesToLeftByRef.get(node.name).push({node, origin});\n }\n\n // ## Track data for duplicate names\n // Pre-ES2025 doesn't allow duplicate names, but ES2025 allows duplicate names that are\n // unique per mutually exclusive alternation path. However, Oniguruma's handling for named\n // subpatterns on match results means we can't use this ES2025 feature even when in an ES2025\n // env. So, if using a duplicate name, remove the name from all but the first instance that\n // wasn't created by subroutine expansion\n if (node.name) {\n const groupsWithSameName = getOrInsert(groupsByName, node.name, new Map());\n let hasDuplicateNameToRemove = false;\n if (origin) {\n // Subroutines and their child captures shouldn't hold duplicate names in the final state\n hasDuplicateNameToRemove = true;\n } else {\n for (const groupInfo of groupsWithSameName.values()) {\n if (!groupInfo.hasDuplicateNameToRemove) {\n // Will change to an unnamed capture in a later pass\n hasDuplicateNameToRemove = true;\n break;\n }\n }\n }\n groupsByName.get(node.name).set(node, {node, hasDuplicateNameToRemove});\n }\n },\n exit({node}, {openRefs}) {\n // During `enter`, ownership of `openRefs` isn't claimed when recursive clones are replaced,\n // so only the node that inserted the current entry should clear it on exit\n if (openRefs.get(node.number) === node) {\n openRefs.delete(node.number);\n }\n },\n },\n\n Group: {\n enter({node}, state) {\n // Flag directives have already been converted to flag groups by the previous pass\n state.prevFlags = state.currentFlags;\n if (node.flags) {\n state.currentFlags = getNewCurrentFlags(state.currentFlags, node.flags);\n }\n },\n exit(_, state) {\n state.currentFlags = state.prevFlags;\n },\n },\n\n Subroutine({node, parent, replaceWith}, state) {\n const {isRecursive, ref} = node;\n\n // Subroutine nodes with `isRecursive` are created during the current traversal; they're only\n // traversed here if a recursive subroutine created during traversal is then copied by a\n // subroutine expansion, e.g. with `(?<a>\\g<a>)\\g<a>`\n if (isRecursive) {\n // Immediate parent is an alternative or quantifier; can skip\n let reffed = parent;\n while ((reffed = reffed.parent)) {\n if (reffed.type === 'CapturingGroup' && (reffed.name === ref || reffed.number === ref)) {\n break;\n }\n }\n // Track the referenced node because `ref`s are rewritten in a subsequent pass; capturing\n // group names and numbers might change due to subroutine expansion and duplicate group names\n state.reffedNodesByReferencer.set(node, reffed);\n return;\n }\n\n const reffedGroupNode = state.subroutineRefMap.get(ref);\n // Other forms of recursion are handled by the `CapturingGroup` visitor\n const isGlobalRecursion = ref === 0;\n const expandedSubroutine = isGlobalRecursion ?\n createRecursion(0) :\n // The reffed group might itself contain subroutines, which are expanded during sub-traversal\n cloneCapturingGroup(reffedGroupNode, state.groupOriginByCopy, null);\n let replacement = expandedSubroutine;\n if (!isGlobalRecursion) {\n // Subroutines take their flags from the reffed group, not the flags surrounding themselves\n const reffedGroupFlagMods = getCombinedFlagModsFromFlagNodes(getAllParents(\n reffedGroupNode,\n p => p.type === 'Group' && !!p.flags\n ));\n const reffedGroupFlags = reffedGroupFlagMods ?\n getNewCurrentFlags(state.globalFlags, reffedGroupFlagMods) :\n state.globalFlags;\n if (!areFlagsEqual(reffedGroupFlags, state.currentFlags)) {\n replacement = createGroup({\n flags: getFlagModsFromFlags(reffedGroupFlags),\n });\n replacement.body[0].body.push(expandedSubroutine);\n }\n }\n replaceWith(setParentDeep(replacement, parent), {traverse: !isGlobalRecursion});\n },\n};\n\nconst /** @type {Visitor} */ ThirdPassVisitor = {\n Backreference({node, parent, replaceWith}, state) {\n if (node.orphan) {\n state.highestOrphanBackref = Math.max(state.highestOrphanBackref, node.ref);\n // Don't renumber; used with `allowOrphanBackrefs`\n return;\n }\n const reffedNodes = state.reffedNodesByReferencer.get(node);\n const participants = reffedNodes.filter(reffed => canParticipateWithNode(reffed, node));\n // For the backref's `ref`, use `number` rather than `name` because group names might have been\n // removed if they're duplicates within their alternation path, or they might be removed later\n // by the generator (depending on target) if they're duplicates within the overall pattern.\n // Backrefs must come after groups they ref, so reffed node `number`s are already recalculated\n if (!participants.length) {\n // If no participating capture, convert backref to to `(?!)`; backrefs to nonparticipating\n // groups can't match in Onig but match the empty string in JS\n replaceWith(setParentDeep(createLookaroundAssertion({negate: true}), parent));\n } else if (participants.length > 1) {\n // Multiplex for backrefs to duplicate capture names; try them in reverse order\n const group = createGroup({\n atomic: true,\n body: participants.reverse().map(reffed => createAlternative({\n body: [createBackreference(reffed.number)],\n })),\n });\n replaceWith(setParentDeep(group, parent));\n } else {\n node.ref = participants[0].number;\n }\n },\n\n CapturingGroup({node}, state) {\n // Recalculate the number since the current value might be wrong due to subroutine expansion\n node.number = ++state.numCapturesToLeft;\n if (node.name) {\n // Removing duplicate names here rather than in an earlier pass avoids extra complexity when\n // handling subroutine expansion and backref multiplexing\n if (state.groupsByName.get(node.name).get(node).hasDuplicateNameToRemove) {\n delete node.name;\n }\n }\n },\n\n Regex: {\n exit({node}, state) {\n // HACK: Add unnamed captures to the end of the regex if needed to allow orphaned backrefs\n // to be valid in JS with flag u/v. This is needed to support TextMate grammars, which\n // replace numbered backrefs in their `end` pattern with values matched by captures in their\n // `begin` pattern! See <github.com/microsoft/vscode-textmate/blob/7e0ea282f4f25fef12a6c84fa4fa7266f67b58dc/src/rule.ts#L661-L663>\n // An `end` pattern, prior to this substitution, might have backrefs to a group that doesn't\n // exist within `end`. This presents a dilemma since both Oniguruma and JS (with flag u/v)\n // error for backrefs to undefined captures. So adding captures to the end is a solution that\n // doesn't change what the regex matches, and lets invalid numbered backrefs through. Note:\n // Orphan backrefs are only allowed if `allowOrphanBackrefs` is enabled\n const numCapsNeeded = Math.max(state.highestOrphanBackref - state.numCapturesToLeft, 0);\n for (let i = 0; i < numCapsNeeded; i++) {\n const emptyCapture = createCapturingGroup();\n node.body.at(-1).body.push(emptyCapture);\n }\n },\n },\n\n Subroutine({node}, state) {\n if (!node.isRecursive || node.ref === 0) {\n return;\n }\n // For the recursion's `ref`, use `number` rather than `name` because group names might have\n // been removed if they're duplicates within their alternation path, or they might be removed\n // later by the generator (depending on target) if they're duplicates within the overall\n // pattern. Since recursion appears within the group it refs, the reffed node's `number` has\n // already been recalculated\n node.ref = state.reffedNodesByReferencer.get(node).number;\n },\n};\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\nfunction addParentProperties(root) {\n traverse(root, {\n '*'({node, parent}) {\n node.parent = parent;\n },\n });\n}\n\nfunction areFlagsEqual(a, b) {\n return a.dotAll === b.dotAll && a.ignoreCase === b.ignoreCase;\n}\n\nfunction canParticipateWithNode(capture, node) {\n // Walks to the left (prev siblings), down (sibling descendants), up (parent), then back down\n // (parent's prev sibling descendants) the tree in a loop\n let rightmostPoint = node;\n do {\n if (rightmostPoint.type === 'Regex') {\n // End of the line; capture is not in node's alternation path\n return false;\n }\n if (rightmostPoint.type === 'Alternative') {\n // Skip past alts to their parent because we don't want to look at the kids of preceding alts\n continue;\n }\n if (rightmostPoint === capture) {\n // Capture is ancestor of node\n return false;\n }\n const kidsOfParent = getKids(rightmostPoint.parent);\n for (const kid of kidsOfParent) {\n if (kid === rightmostPoint) {\n // Reached rightmost node in sibling list that we want to consider; break to parent loop\n break;\n }\n if (kid === capture || isAncestorOf(kid, capture)) {\n return true;\n }\n }\n } while ((rightmostPoint = rightmostPoint.parent));\n throw new Error('Unexpected path');\n}\n\n// Creates a deep copy of the provided node, with special handling:\n// - Make `parent` props point to their parent in the copy\n// - Update the provided `originMap` for each cloned capturing group (outer and nested)\nfunction cloneCapturingGroup(obj, originMap, up, up2) {\n const store = Array.isArray(obj) ? [] : {};\n for (const [key, value] of Object.entries(obj)) {\n if (key === 'parent') {\n // If the last cloned item was a container array (for holding kids), use the object above it\n store.parent = Array.isArray(up) ? up2 : up;\n } else if (value && typeof value === 'object') {\n store[key] = cloneCapturingGroup(value, originMap, store, up);\n } else {\n if (key === 'type' && value === 'CapturingGroup') {\n // Key is the copied node, value is the origin node\n originMap.set(store, originMap.get(obj) ?? obj);\n }\n store[key] = value;\n }\n }\n return store;\n}\n\nfunction createRecursion(ref) {\n const node = createSubroutine(ref);\n // In the future, the parser will set a `recursive` property on subroutines:\n // <github.com/slevithan/oniguruma-parser/issues/3>. When that's available, this function won't\n // be needed and the related logic in this transformer should change (simplify) to use it\n node.isRecursive = true;\n return node;\n}\n\nfunction getAllParents(node, filterFn) {\n const results = [];\n while ((node = node.parent)) {\n if (!filterFn || filterFn(node)) {\n results.push(node);\n }\n }\n return results;\n}\n\n// See also `isValidJsGroupName`\nfunction getAndStoreJsGroupName(name, map) {\n if (map.has(name)) {\n return map.get(name);\n }\n // Onig group names can't start with `$`, but JS names can\n const jsName = `$${map.size}_${name.replace(/^[^$_\\p{IDS}]|[^$\\u200C\\u200D\\p{IDC}]/ug, '_')}`;\n map.set(name, jsName);\n return jsName;\n}\n\nfunction getCombinedFlagModsFromFlagNodes(flagNodes) {\n const flagProps = ['dotAll', 'ignoreCase'];\n const combinedFlags = {enable: {}, disable: {}};\n flagNodes.forEach(({flags}) => {\n flagProps.forEach(prop => {\n if (flags.enable?.[prop]) {\n // Need to remove `disable` since disabled flags take precedence\n delete combinedFlags.disable[prop];\n combinedFlags.enable[prop] = true;\n }\n if (flags.disable?.[prop]) {\n combinedFlags.disable[prop] = true;\n }\n });\n });\n if (!Object.keys(combinedFlags.enable).length) {\n delete combinedFlags.enable;\n }\n if (!Object.keys(combinedFlags.disable).length) {\n delete combinedFlags.disable;\n }\n if (combinedFlags.enable || combinedFlags.disable) {\n return combinedFlags;\n }\n return null;\n}\n\nfunction getFlagModsFromFlags({dotAll, ignoreCase}) {\n const mods = {};\n if (dotAll || ignoreCase) {\n mods.enable = {};\n dotAll && (mods.enable.dotAll = true);\n ignoreCase && (mods.enable.ignoreCase = true);\n }\n if (!dotAll || !ignoreCase) {\n mods.disable = {};\n !dotAll && (mods.disable.dotAll = true);\n !ignoreCase && (mods.disable.ignoreCase = true);\n }\n return mods;\n}\n\nfunction getKids(node) {\n if (!node) {\n throw new Error('Node expected');\n }\n // NOTE: Not handling `CharacterClassRange`'s `min`/`max` and `Regex`'s `flags`, only because\n // they haven't been needed by current callers\n const {body} = node;\n return Array.isArray(body) ? body : (body ? [body] : null);\n}\n\nfunction getLeadingG(els) {\n const firstToConsider = els.find(el => (\n el.kind === 'search_start' ||\n isLoneGLookaround(el, {negate: false}) ||\n !isAlwaysZeroLength(el)\n ));\n if (!firstToConsider) {\n return null;\n }\n if (firstToConsider.kind === 'search_start') {\n return firstToConsider;\n }\n if (firstToConsider.type === 'LookaroundAssertion') {\n return firstToConsider.body[0].body[0];\n }\n if (firstToConsider.type === 'CapturingGroup' || firstToConsider.type === 'Group') {\n const gNodesForGroup = [];\n // Recursively find `\\G` nodes for all alternatives in the group\n for (const alt of firstToConsider.body) {\n const leadingG = getLeadingG(alt.body);\n if (!leadingG) {\n // Don't return `gNodesForGroup` collected so far since this alt didn't qualify\n return null;\n }\n Array.isArray(leadingG) ?\n gNodesForGroup.push(...leadingG) :\n gNodesForGroup.push(leadingG);\n }\n return gNodesForGroup;\n }\n return null;\n}\n\nfunction isAncestorOf(node, descendant) {\n const kids = getKids(node) ?? [];\n for (const kid of kids) {\n if (kid === descendant || isAncestorOf(kid, descendant)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isAlwaysZeroLength({type}) {\n return (\n type === 'Assertion' ||\n type === 'Directive' ||\n type === 'LookaroundAssertion'\n );\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isAlwaysNonZeroLength(node) {\n const types = [\n 'Character',\n 'CharacterClass',\n 'CharacterSet',\n ];\n return types.includes(node.type) || (\n node.type === 'Quantifier' &&\n node.min &&\n types.includes(node.body.type)\n );\n}\n\nfunction isLoneGLookaround(node, options) {\n const opts = {\n negate: null,\n ...options,\n };\n return (\n node.type === 'LookaroundAssertion' &&\n (opts.negate === null || node.negate === opts.negate) &&\n node.body.length === 1 &&\n hasOnlyChild(node.body[0], {\n type: 'Assertion',\n kind: 'search_start',\n })\n );\n}\n\n// See also `getAndStoreJsGroupName`\nfunction isValidJsGroupName(name) {\n // JS group names are more restrictive than Onig; see\n // <developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers>\n return /^[$_\\p{IDS}][$\\u200C\\u200D\\p{IDC}]*$/u.test(name);\n}\n\n// Returns a single node, either the given node or all nodes wrapped in a noncapturing group\nfunction parseFragment(pattern, options) {\n const ast = parse(pattern, {\n ...options,\n // Providing a custom set of Unicode property names avoids converting some JS Unicode\n // properties (ex: `\\p{Alpha}`) to Onig POSIX classes\n unicodePropertyMap: JsUnicodePropertyMap,\n });\n const alts = ast.body;\n if (alts.length > 1 || alts[0].body.length > 1) {\n return createGroup({body: alts});\n }\n return alts[0].body[0];\n}\n\nfunction setNegate(node, negate) {\n node.negate = negate;\n return node;\n}\n\nfunction setParent(node, parent) {\n node.parent = parent;\n return node;\n}\n\nfunction setParentDeep(node, parent) {\n addParentProperties(node);\n node.parent = parent;\n return node;\n}\n\nexport {\n transform,\n};\n", "import {getOptions} from './options.js';\nimport {getIgnoreCaseMatchChars, UnicodePropertiesWithSpecificCase} from './unicode.js';\nimport {cp, envFlags, getNewCurrentFlags, getOrInsert, isMinTarget, r, throwIfNullish} from './utils.js';\nimport {createAlternative, createCharacter, createGroup} from 'oniguruma-parser/parser';\nimport {traverse} from 'oniguruma-parser/traverser';\n/**\n@import {ToRegExpOptions} from './index.js';\n@import {RegexPlusAst} from './transform.js';\n@import {AlternativeNode, AssertionNode, BackreferenceNode, CapturingGroupNode, CharacterClassNode, CharacterClassRangeNode, CharacterNode, CharacterSetNode, FlagsNode, GroupNode, LookaroundAssertionNode, Node, QuantifierNode, SubroutineNode} from 'oniguruma-parser/parser';\n@import {Visitor} from 'oniguruma-parser/traverser';\n*/\n\n/**\nGenerates a Regex+ compatible `pattern`, `flags`, and `options` from a Regex+ AST.\n@param {RegexPlusAst} ast\n@param {ToRegExpOptions} [options]\n@returns {{\n pattern: string;\n flags: string;\n options: Object;\n _captureTransfers: Map<number, Array<number>>;\n _hiddenCaptures: Array<number>;\n}}\n*/\nfunction generate(ast, options) {\n const opts = getOptions(options);\n const minTargetEs2024 = isMinTarget(opts.target, 'ES2024');\n const minTargetEs2025 = isMinTarget(opts.target, 'ES2025');\n const recursionLimit = opts.rules.recursionLimit;\n if (!Number.isInteger(recursionLimit) || recursionLimit < 2 || recursionLimit > 20) {\n throw new Error('Invalid recursionLimit; use 2-20');\n }\n\n // If the output can't use flag groups, we need a pre-pass to check for the use of chars with\n // case in case sensitive/insensitive states. This minimizes the need for case expansions (though\n // expansions are lossless, even given Unicode case complexities) and allows supporting case\n // insensitive backrefs in more cases\n // TODO: Consider gathering this data in the transformer's final traversal to avoid work here\n let hasCaseInsensitiveNode = null;\n let hasCaseSensitiveNode = null;\n if (!minTargetEs2025) {\n const iStack = [ast.flags.ignoreCase];\n traverse(ast, FlagModifierVisitor, {\n getCurrentModI: () => iStack.at(-1),\n popModI() {iStack.pop()},\n pushModI(isIOn) {iStack.push(isIOn)},\n setHasCasedChar() {\n if (iStack.at(-1)) {\n hasCaseInsensitiveNode = true;\n } else {\n hasCaseSensitiveNode = true;\n }\n },\n });\n }\n\n const appliedGlobalFlags = {\n dotAll: ast.flags.dotAll,\n // - Turn global flag i on if a case insensitive node was used and no case sensitive nodes were\n // used (to avoid unnecessary node expansion).\n // - Turn global flag i off if a case sensitive node was used (since case sensitivity can't be\n // forced without the use of ES2025 flag groups)\n ignoreCase: !!((ast.flags.ignoreCase || hasCaseInsensitiveNode) && !hasCaseSensitiveNode),\n };\n let /** @type {Node} */ lastNode = ast;\n const state = {\n accuracy: opts.accuracy,\n appliedGlobalFlags,\n captureMap: new Map(),\n currentFlags: {\n dotAll: ast.flags.dotAll,\n ignoreCase: ast.flags.ignoreCase,\n },\n inCharClass: false,\n lastNode,\n originMap: ast._originMap,\n recursionLimit,\n useAppliedIgnoreCase: !!(!minTargetEs2025 && hasCaseInsensitiveNode && hasCaseSensitiveNode),\n useFlagMods: minTargetEs2025,\n useFlagV: minTargetEs2024,\n verbose: opts.verbose,\n };\n function gen(/** @type {Node} */ node) {\n state.lastNode = lastNode;\n lastNode = node; // For the next iteration\n const fn = throwIfNullish(generator[node.type], `Unexpected node type \"${node.type}\"`);\n return fn(node, state, gen);\n }\n\n const result = {\n pattern: ast.body.map(gen).join('|'),\n // Could reset `lastNode` at this point via `lastNode = ast`, but it isn't needed by flags\n flags: gen(ast.flags),\n options: {...ast.options},\n };\n if (!minTargetEs2024) {\n // Switch from flag v to u; Regex+ implicitly chooses by default\n delete result.options.force.v;\n result.options.disable.v = true;\n result.options.unicodeSetsPlugin = null;\n }\n result._captureTransfers = new Map();\n result._hiddenCaptures = [];\n state.captureMap.forEach((value, key) => {\n if (value.hidden) {\n result._hiddenCaptures.push(key);\n }\n if (value.transferTo) {\n getOrInsert(result._captureTransfers, value.transferTo, []).push(key);\n }\n });\n\n return result;\n}\n\nconst /** @type {Visitor} */ FlagModifierVisitor = {\n '*': {\n enter({node}, state) {\n if (isAnyGroup(node)) {\n const currentModI = state.getCurrentModI();\n state.pushModI(\n node.flags ?\n getNewCurrentFlags({ignoreCase: currentModI}, node.flags).ignoreCase :\n currentModI\n );\n }\n },\n exit({node}, state) {\n if (isAnyGroup(node)) {\n state.popModI();\n }\n },\n },\n Backreference(_, state) {\n // Can't know for sure, so assume the backref will include chars with case (best that could be\n // done is not calling `setHasCasedChar` if the reffed group doesn't contain a char with case\n // or most kinds of char sets)\n state.setHasCasedChar();\n },\n Character({node}, state) {\n if (charHasCase(cp(node.value))) {\n state.setHasCasedChar();\n }\n },\n CharacterClassRange({node, skip}, state) {\n skip();\n if (getCasesOutsideCharClassRange(node, {firstOnly: true}).length) {\n state.setHasCasedChar();\n }\n },\n CharacterSet({node}, state) {\n if (\n node.kind === 'property' &&\n UnicodePropertiesWithSpecificCase.has(node.value)\n ) {\n state.setHasCasedChar();\n }\n },\n};\n\n// `AbsenceFunction`, `Directive`, and `NamedCallout` nodes aren't included in transformer output\nconst generator = {\n /**\n @param {AlternativeNode} node\n */\n Alternative({body}, _, gen) {\n return body.map(gen).join('');\n },\n\n /**\n @param {AssertionNode} node\n */\n Assertion({kind, negate}) {\n // Can always use `^` and `$` for string boundaries since JS flag m is never used (Onig uses\n // different line break chars)\n if (kind === 'string_end') {\n return '$';\n }\n if (kind === 'string_start') {\n return '^';\n }\n // If a word boundary came through the transformer unaltered, that means `wordIsAscii` or\n // `asciiWordBoundaries` is enabled\n if (kind === 'word_boundary') {\n return negate ? r`\\B` : r`\\b`;\n }\n // Kinds `line_end`, `line_start`, `search_start`, `string_end_newline`, and\n // `text_segment_boundary` are never included in transformer output\n throw new Error(`Unexpected assertion kind \"${kind}\"`);\n },\n\n /**\n @param {BackreferenceNode} node\n */\n Backreference({ref}, state) {\n if (typeof ref !== 'number') {\n throw new Error('Unexpected named backref in transformed AST');\n }\n if (\n !state.useFlagMods &&\n state.accuracy === 'strict' &&\n state.currentFlags.ignoreCase &&\n !state.captureMap.get(ref).ignoreCase\n ) {\n throw new Error('Use of case-insensitive backref to case-sensitive group requires target ES2025 or non-strict accuracy');\n }\n return '\\\\' + ref;\n },\n\n /**\n @param {CapturingGroupNode} node\n */\n CapturingGroup(node, state, gen) {\n const {body, name, number} = node;\n const data = {ignoreCase: state.currentFlags.ignoreCase};\n // Has origin if the capture is from an expanded subroutine\n const origin = state.originMap.get(node);\n if (origin) {\n // All captures from/within expanded subroutines are marked as hidden\n data.hidden = true;\n // If a subroutine (or descendant capture) occurs after its origin group, it's marked to have\n // its captured value transferred to the origin's capture slot. `number` and `origin.number`\n // are the capture numbers *after* subroutine expansion\n if (number > origin.number) {\n data.transferTo = origin.number;\n }\n }\n state.captureMap.set(number, data);\n return `(${name ? `?<${name}>` : ''}${body.map(gen).join('|')})`;\n },\n\n /**\n @param {CharacterNode} node\n */\n Character({value}, state) {\n const char = cp(value);\n const escaped = getCharEscape(value, {\n escDigit: state.lastNode.type === 'Backreference',\n inCharClass: state.inCharClass,\n useFlagV: state.useFlagV,\n });\n if (escaped !== char) {\n return escaped;\n }\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase && charHasCase(char)) {\n const cases = getIgnoreCaseMatchChars(char);\n return state.inCharClass ?\n cases.join('') :\n (cases.length > 1 ? `[${cases.join('')}]` : cases[0]);\n }\n return char;\n },\n\n /**\n @param {CharacterClassNode} node\n */\n CharacterClass(node, state, gen) {\n const {kind, negate, parent} = node;\n let {body} = node;\n if (kind === 'intersection' && !state.useFlagV) {\n throw new Error('Use of character class intersection requires min target ES2024');\n }\n // Work around a WebKit parser bug by moving literal hyphens to the beginning of the class; see\n // <github.com/slevithan/oniguruma-to-es/issues/30>\n if (envFlags.bugFlagVLiteralHyphenIsRange && state.useFlagV && body.some(isLiteralHyphen)) {\n body = [createCharacter(45), ...body.filter(kid => !isLiteralHyphen(kid))];\n }\n const genClass = () => `[${negate ? '^' : ''}${\n body.map(gen).join(kind === 'intersection' ? '&&' : '')\n }]`;\n if (!state.inCharClass) {\n // HACK: Transform the AST to support top-level-nested, negated classes in non-negated\n // classes (ex: `[\u2026[^\u2026]]`) with pre-ES2024 `target`, via `(?:[\u2026]|[^\u2026])` or `(?:[^\u2026])`,\n // possibly with multiple alts that contain negated classes. Would be better to do this in\n // the transformer, but it doesn't have true `target` since that's supposed to be a concern\n // of the generator\n if (\n // Already established `kind !== 'intersection'` if `!state.useFlagV`; don't check again\n (!state.useFlagV || envFlags.bugNestedClassIgnoresNegation) &&\n !negate\n ) {\n const negatedChildClasses = body.filter(\n kid => kid.type === 'CharacterClass' && kid.kind === 'union' && kid.negate\n );\n if (negatedChildClasses.length) {\n const group = createGroup();\n const groupFirstAlt = group.body[0];\n group.parent = parent;\n groupFirstAlt.parent = group;\n body = body.filter(kid => !negatedChildClasses.includes(kid));\n node.body = body;\n if (body.length) {\n node.parent = groupFirstAlt;\n groupFirstAlt.body.push(node);\n } else {\n // Remove the group's only alt thus far, but since the class's `body` is empty, that\n // implies there's at least one negated class we removed from it, so we'll add at least\n // one alt back to the group, next\n group.body.pop();\n }\n negatedChildClasses.forEach(cc => {\n const newAlt = createAlternative({body: [cc]});\n cc.parent = newAlt;\n newAlt.parent = group;\n group.body.push(newAlt);\n });\n return gen(group);\n }\n }\n // For the outermost char class, set state\n state.inCharClass = true;\n const result = genClass();\n state.inCharClass = false;\n return result;\n }\n // No first element for implicit class in empty intersection like `[&&]`\n const firstEl = body[0];\n if (\n // Already established that the parent is a char class via `inCharClass`; don't check again\n kind === 'union' &&\n !negate &&\n firstEl &&\n (\n ( // Allows many nested classes to work with `target` ES2018 which doesn't support nesting\n (!state.useFlagV || !state.verbose) &&\n parent.kind === 'union' &&\n !(envFlags.bugFlagVLiteralHyphenIsRange && state.useFlagV)\n ) ||\n ( !state.verbose &&\n parent.kind === 'intersection' &&\n // JS doesn't allow intersection with union or ranges\n body.length === 1 &&\n firstEl.type !== 'CharacterClassRange'\n )\n )\n ) {\n // Remove unnecessary nesting; unwrap kids into the parent char class\n return body.map(gen).join('');\n }\n if (!state.useFlagV && parent.type === 'CharacterClass') {\n throw new Error('Uses nested character class in a way that requires min target ES2024');\n }\n return genClass();\n },\n\n /**\n @param {CharacterClassRangeNode} node\n */\n CharacterClassRange(node, state) {\n const min = node.min.value;\n const max = node.max.value;\n const escOpts = {\n escDigit: false,\n inCharClass: true,\n useFlagV: state.useFlagV,\n };\n const minStr = getCharEscape(min, escOpts);\n const maxStr = getCharEscape(max, escOpts);\n const extraChars = new Set();\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase) {\n // TODO: Avoid duplication by considering other chars in the parent char class when expanding\n const charsOutsideRange = getCasesOutsideCharClassRange(node);\n const ranges = getCodePointRangesFromChars(charsOutsideRange);\n ranges.forEach(value => {\n extraChars.add(\n Array.isArray(value) ?\n `${getCharEscape(value[0], escOpts)}-${getCharEscape(value[1], escOpts)}` :\n getCharEscape(value, escOpts)\n );\n });\n }\n // Create the range without calling `gen` on the `min`/`max` kids\n return `${minStr}-${maxStr}${[...extraChars].join('')}`;\n },\n\n /**\n @param {CharacterSetNode} node\n */\n CharacterSet({kind, negate, value, key}, state) {\n if (kind === 'dot') {\n return state.currentFlags.dotAll ?\n ((state.appliedGlobalFlags.dotAll || state.useFlagMods) ? '.' : '[^]') :\n // Onig's only line break char is line feed, unlike JS\n r`[^\\n]`;\n }\n if (kind === 'digit') {\n return negate ? r`\\D` : r`\\d`;\n }\n if (kind === 'property') {\n if (\n state.useAppliedIgnoreCase &&\n state.currentFlags.ignoreCase &&\n UnicodePropertiesWithSpecificCase.has(value)\n ) {\n // Support for this would require heavy Unicode data. Could change e.g. `\\p{Lu}` to\n // `\\p{LC}` if not using strict `accuracy` (since it's close but not 100%), but this\n // wouldn't work for e.g. `\\p{Lt}`, and in any case, it's probably user error if using\n // these case-specific props case-insensitively\n throw new Error(`Unicode property \"${value}\" can't be case-insensitive when other chars have specific case`);\n }\n return `${negate ? r`\\P` : r`\\p`}{${key ? `${key}=` : ''}${value}}`;\n }\n if (kind === 'word') {\n return negate ? r`\\W` : r`\\w`;\n }\n // Kinds `any`, `hex`, `newline`, `posix`, `space`, and `text_segment` are never included in\n // transformer output\n throw new Error(`Unexpected character set kind \"${kind}\"`);\n },\n\n /**\n @param {FlagsNode} node\n */\n Flags(node, state) {\n return (\n // The transformer should never turn on the properties for flags d, g, m since Onig doesn't\n // have equivs. Flag m is never used since Onig uses different line break chars than JS\n // (node.hasIndices ? 'd' : '') +\n // (node.global ? 'g' : '') +\n // (node.multiline ? 'm' : '') +\n (state.appliedGlobalFlags.ignoreCase ? 'i' : '') +\n (node.dotAll ? 's' : '') +\n (node.sticky ? 'y' : '')\n // Regex+ doesn't allow explicitly adding flags it handles implicitly, so there are no\n // `unicode` (flag u) or `unicodeSets` (flag v) props; those flags are added separately\n );\n },\n\n /**\n @param {GroupNode} node\n */\n Group({atomic, body, flags, parent}, state, gen) {\n const currentFlags = state.currentFlags;\n if (flags) {\n state.currentFlags = getNewCurrentFlags(currentFlags, flags);\n }\n const contents = body.map(gen).join('|');\n const result = (\n !state.verbose &&\n body.length === 1 && // Single alt\n parent.type !== 'Quantifier' &&\n !atomic &&\n (!state.useFlagMods || !flags)\n ) ? contents : `(?${getGroupPrefix(atomic, flags, state.useFlagMods)}${contents})`;\n state.currentFlags = currentFlags;\n return result;\n },\n\n /**\n @param {LookaroundAssertionNode} node\n */\n LookaroundAssertion({body, kind, negate}, _, gen) {\n const prefix = `${kind === 'lookahead' ? '' : '<'}${negate ? '!' : '='}`;\n return `(?${prefix}${body.map(gen).join('|')})`;\n },\n\n /**\n @param {QuantifierNode} node\n */\n Quantifier(node, _, gen) {\n return gen(node.body) + getQuantifierStr(node);\n },\n\n /**\n @param {SubroutineNode & {isRecursive: true}} node\n */\n Subroutine({isRecursive, ref}, state) {\n if (!isRecursive) {\n throw new Error('Unexpected non-recursive subroutine in transformed AST');\n }\n const limit = state.recursionLimit;\n // Using the syntax supported by `regex-recursion`\n return ref === 0 ? `(?R=${limit})` : r`\\g<${ref}&R=${limit}>`;\n },\n};\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\nconst BaseEscapeChars = new Set([\n '$', '(', ')', '*', '+', '.', '?', '[', '\\\\', ']', '^', '{', '|', '}',\n]);\n\nconst CharClassEscapeChars = new Set([\n '-', '\\\\', ']', '^',\n // Literal `[` doesn't require escaping with flag u, but this can help work around regex source\n // linters and regex syntax processors that expect unescaped `[` to create a nested class\n '[',\n]);\n\nconst CharClassEscapeCharsFlagV = new Set([\n '(', ')', '-', '/', '[', '\\\\', ']', '^', '{', '|', '}',\n // Double punctuators; also includes already-listed `-` and `^`\n '!', '#', '$', '%', '&', '*', '+', ',', '.', ':', ';', '<', '=', '>', '?', '@', '`', '~',\n]);\n\nconst CharCodeEscapeMap = new Map([\n [ 9, r`\\t`], // horizontal tab\n [10, r`\\n`], // line feed\n [11, r`\\v`], // vertical tab\n [12, r`\\f`], // form feed\n [13, r`\\r`], // carriage return\n [0x2028, r`\\u2028`], // line separator\n [0x2029, r`\\u2029`], // paragraph separator\n [0xFEFF, r`\\uFEFF`], // ZWNBSP/BOM\n]);\n\nconst casedRe = /^\\p{Cased}$/u;\nfunction charHasCase(char) {\n return casedRe.test(char);\n}\n\n/**\nGiven a `CharacterClassRange` node, returns an array of chars that are a case variant of a char in\nthe range, and aren't already in the range.\n*/\nfunction getCasesOutsideCharClassRange(node, options) {\n const firstOnly = !!options?.firstOnly;\n const min = node.min.value;\n const max = node.max.value;\n const found = [];\n // Avoid unneeded work. Assumptions (per Unicode 16):\n // - No case variants cross the Basic Multilingual Plane boundary\n // - No cased chars appear beyond the Supplementary Multilingual Plane\n if ((min < 65 && (max === 0xFFFF || max >= 0x1FFFF)) || (min === 0x10000 && max >= 0x1FFFF)) {\n return found;\n }\n for (let i = min; i <= max; i++) {\n const char = cp(i);\n if (!charHasCase(char)) {\n continue;\n }\n const charsOutsideRange = getIgnoreCaseMatchChars(char).filter(caseOfChar => {\n const num = caseOfChar.codePointAt(0);\n return num < min || num > max;\n });\n if (charsOutsideRange.length) {\n found.push(...charsOutsideRange);\n if (firstOnly) {\n break;\n }\n }\n }\n return found;\n}\n\n// This shouldn't modifiy any char that has case\nfunction getCharEscape(codePoint, {escDigit, inCharClass, useFlagV}) {\n if (CharCodeEscapeMap.has(codePoint)) {\n return CharCodeEscapeMap.get(codePoint);\n }\n if (\n // Control chars, etc.; condition modeled on the Chrome developer console's display for strings\n codePoint < 32 || (codePoint > 126 && codePoint < 160) ||\n // Unicode planes 4-16; unassigned, special purpose, and private use area\n codePoint > 0x3FFFF ||\n // Avoid corrupting a preceding backref by immediately following it with a literal digit\n (escDigit && isDigitCharCode(codePoint))\n ) {\n // Don't convert codePoint `0` to `\\0` since that's corruptible by following literal digits\n // Note: Not using raw strings to work around Bun \u2264 1.1.34 issue <github.com/oven-sh/bun/issues/7540>\n return codePoint > 0xFF ?\n `\\\\u{${codePoint.toString(16).toUpperCase()}}` :\n `\\\\x${codePoint.toString(16).toUpperCase().padStart(2, '0')}`;\n }\n const escapeChars = inCharClass ?\n (useFlagV ? CharClassEscapeCharsFlagV : CharClassEscapeChars) :\n BaseEscapeChars;\n const char = cp(codePoint);\n return (escapeChars.has(char) ? '\\\\' : '') + char;\n}\n\nfunction getCodePointRangesFromChars(chars) {\n const codePoints = chars.map(char => char.codePointAt(0)).sort((a, b) => a - b);\n const values = [];\n let start = null;\n for (let i = 0; i < codePoints.length; i++) {\n if (codePoints[i + 1] === codePoints[i] + 1) {\n start ??= codePoints[i];\n } else if (start === null) {\n values.push(codePoints[i]);\n } else {\n values.push([start, codePoints[i]]);\n start = null;\n }\n }\n return values;\n}\n\nfunction getGroupPrefix(atomic, flagMods, useFlagMods) {\n if (atomic) {\n return '>';\n }\n let mods = '';\n if (flagMods && useFlagMods) {\n const {enable, disable} = flagMods;\n mods =\n (enable?.ignoreCase ? 'i' : '') +\n (enable?.dotAll ? 's' : '') +\n (disable ? '-' : '') +\n (disable?.ignoreCase ? 'i' : '') +\n (disable?.dotAll ? 's' : '');\n }\n return `${mods}:`;\n}\n\n/**\n@param {QuantifierNode} node\n@returns {string}\n*/\nfunction getQuantifierStr({kind, max, min}) {\n let base;\n if (!min && max === 1) {\n base = '?';\n } else if (!min && max === Infinity) {\n base = '*';\n } else if (min === 1 && max === Infinity) {\n base = '+';\n } else if (min === max) {\n base = `{${min}}`;\n } else {\n base = `{${min},${max === Infinity ? '' : max}}`;\n }\n return base + {\n greedy: '',\n lazy: '?',\n possessive: '+',\n }[kind];\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isAnyGroup({type}) {\n return type === 'CapturingGroup' ||\n type === 'Group' ||\n type === 'LookaroundAssertion';\n}\n\nfunction isDigitCharCode(value) {\n return value > 47 && value < 58;\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isLiteralHyphen({type, value}) {\n return type === 'Character' && value === 45;\n}\n\nexport {\n generate,\n};\n", "import {getOrInsert} from './utils.js';\n\n/**\n@typedef {{\n hiddenCaptures?: Array<number>;\n lazyCompile?: boolean;\n strategy?: string | null;\n transfers?: Array<[number, Array<number>]>;\n}} EmulatedRegExpOptions\n*/\n\n/**\nWorks the same as JavaScript's native `RegExp` constructor in all contexts, but can be given\nresults from `toRegExpDetails` to produce the same result as `toRegExp`.\n*/\nclass EmulatedRegExp extends RegExp {\n /**\n @type {Map<number, {\n hidden?: true;\n transferTo?: number;\n }>}\n */\n #captureMap = new Map();\n\n /**\n @type {RegExp | EmulatedRegExp | null}\n */\n #compiled = null;\n\n /**\n @type {string}\n */\n #pattern;\n\n /**\n @type {Map<number, string>?}\n */\n #nameMap = null;\n\n /**\n @type {string?}\n */\n #strategy = null;\n\n /**\n Can be used to serialize the instance.\n @type {EmulatedRegExpOptions}\n */\n rawOptions = {};\n\n // Override the getter with one that works with lazy-compiled regexes\n get source() {\n return this.#pattern || '(?:)';\n }\n\n /**\n @overload\n @param {string} pattern\n @param {string} [flags]\n @param {EmulatedRegExpOptions} [options]\n */\n /**\n @overload\n @param {EmulatedRegExp} pattern\n @param {string} [flags]\n */\n constructor(pattern, flags, options) {\n const lazyCompile = !!options?.lazyCompile;\n if (pattern instanceof RegExp) {\n // Argument `options` isn't provided when regexes are copied, including as part of the\n // internal handling of string methods `matchAll` and `split`\n if (options) {\n throw new Error('Cannot provide options when copying a regexp');\n }\n const re = pattern; // Alias for readability\n super(re, flags);\n this.#pattern = re.source;\n if (re instanceof EmulatedRegExp) {\n this.#captureMap = re.#captureMap;\n this.#nameMap = re.#nameMap;\n this.#strategy = re.#strategy;\n this.rawOptions = re.rawOptions;\n }\n } else {\n const opts = {\n hiddenCaptures: [],\n strategy: null,\n transfers: [],\n ...options,\n };\n super(lazyCompile ? '' : pattern, flags);\n this.#pattern = pattern;\n this.#captureMap = createCaptureMap(opts.hiddenCaptures, opts.transfers);\n this.#strategy = opts.strategy;\n // Don't add default values from `opts` since this gets serialized\n this.rawOptions = options ?? {};\n }\n if (!lazyCompile) {\n this.#compiled = this;\n }\n }\n\n /**\n Called internally by all String/RegExp methods that use regexes.\n @override\n @param {string} str\n @returns {RegExpExecArray?}\n */\n exec(str) {\n // Lazy compilation\n if (!this.#compiled) {\n const {lazyCompile, ...rest} = this.rawOptions;\n this.#compiled = new EmulatedRegExp(this.#pattern, this.flags, rest);\n }\n\n const useLastIndex = this.global || this.sticky;\n const pos = this.lastIndex;\n\n if (this.#strategy === 'clip_search' && useLastIndex && pos) {\n // Reset since this tests on a sliced string that we want to match at the start of\n this.lastIndex = 0;\n // Slicing the string can lead to mismatches when three edge cases are stacked on each other:\n // 1. An uncommon use of `\\G` that relies on `clip_search`, combined with...\n // 2. Lookbehind that searches behind the search start (not match start) position...\n // 3. During a search when the regex's `lastIndex` isn't `0`.\n // The `clip_search` strategy is therefore only allowed when lookbehind isn't present, if\n // using strict `accuracy`\n const match = this.#execCore(str.slice(pos));\n if (match) {\n adjustMatchDetailsForOffset(match, pos, str, this.hasIndices);\n this.lastIndex += pos;\n }\n return match;\n }\n\n return this.#execCore(str);\n }\n\n /**\n Adds support for hidden and transfer captures.\n @param {string} str\n @returns\n */\n #execCore(str) {\n // Support lazy compilation\n this.#compiled.lastIndex = this.lastIndex;\n const match = super.exec.call(this.#compiled, str);\n this.lastIndex = this.#compiled.lastIndex;\n\n if (!match || !this.#captureMap.size) {\n return match;\n }\n\n const matchCopy = [...match];\n // Empty all but the first value of the array while preserving its other properties\n match.length = 1;\n let indicesCopy;\n if (this.hasIndices) {\n indicesCopy = [...match.indices];\n match.indices.length = 1;\n }\n const mappedNums = [0];\n for (let i = 1; i < matchCopy.length; i++) {\n const {hidden, transferTo} = this.#captureMap.get(i) ?? {};\n if (hidden) {\n mappedNums.push(null);\n } else {\n mappedNums.push(match.length);\n match.push(matchCopy[i]);\n if (this.hasIndices) {\n match.indices.push(indicesCopy[i]);\n }\n }\n\n // Only transfer if the capture participated in the match\n if (transferTo && matchCopy[i] !== undefined) {\n const to = mappedNums[transferTo];\n if (!to) {\n throw new Error(`Invalid capture transfer to \"${to}\"`);\n }\n match[to] = matchCopy[i];\n if (this.hasIndices) {\n match.indices[to] = indicesCopy[i];\n }\n if (match.groups) {\n if (!this.#nameMap) {\n // Generate and cache the first time it's needed\n this.#nameMap = createNameMap(this.source);\n }\n const name = this.#nameMap.get(transferTo);\n if (name) {\n match.groups[name] = matchCopy[i];\n if (this.hasIndices) {\n match.indices.groups[name] = indicesCopy[i];\n }\n }\n }\n }\n }\n\n return match;\n }\n}\n\nfunction adjustMatchDetailsForOffset(match, offset, input, hasIndices) {\n match.index += offset;\n match.input = input;\n if (hasIndices) {\n const indices = match.indices;\n for (let i = 0; i < indices.length; i++) {\n const arr = indices[i];\n if (arr) {\n // Replace the array rather than updating values since the keys of `match.indices` and\n // `match.indices.groups` share their value arrays by reference. Need to be precise in case\n // they were previously altered separately\n indices[i] = [arr[0] + offset, arr[1] + offset];\n }\n }\n const groupIndices = indices.groups;\n if (groupIndices) {\n Object.keys(groupIndices).forEach(key => {\n const arr = groupIndices[key];\n if (arr) {\n groupIndices[key] = [arr[0] + offset, arr[1] + offset];\n }\n });\n }\n }\n}\n\n/**\nBuild the capturing group map, with hidden/transfer groups marked to indicate their submatches\nshould get special handling in match results.\n@param {Array<number>} hiddenCaptures\n@param {Array<[number, Array<number>]>} transfers\n@returns {Map<number, {\n hidden?: true;\n transferTo?: number;\n}>}\n*/\nfunction createCaptureMap(hiddenCaptures, transfers) {\n const captureMap = new Map();\n for (const num of hiddenCaptures) {\n captureMap.set(num, {\n hidden: true,\n });\n }\n for (const [to, from] of transfers) {\n for (const num of from) {\n getOrInsert(captureMap, num, {}).transferTo = to;\n }\n }\n return captureMap;\n}\n\n/**\n@param {string} pattern\n@returns {Map<number, string>}\n*/\nfunction createNameMap(pattern) {\n const re = /(?<capture>\\((?:\\?<(?![=!])(?<name>[^>]+)>|(?!\\?)))|\\\\?./gsu;\n const map = new Map();\n let numCharClassesOpen = 0;\n let numCaptures = 0;\n let match;\n while ((match = re.exec(pattern))) {\n const {0: m, groups: {capture, name}} = match;\n // Relies on no unescaped literal `[` in char classes (valid in JS if not using flag v), but\n // this library's generator never produces unescaped literal `[` even with `target` ES2018 (see\n // `CharClassEscapeChars`)\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n if (capture) {\n numCaptures++;\n if (name) {\n map.set(numCaptures, name);\n }\n }\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n return map;\n}\n\nexport {\n EmulatedRegExp,\n};\n", "import {transform} from './transform.js';\nimport {generate} from './generate.js';\nimport {Accuracy, getOptions, Target} from './options.js';\nimport {EmulatedRegExp} from './subclass.js';\nimport {JsUnicodePropertyMap} from './unicode.js';\nimport {parse} from 'oniguruma-parser/parser';\nimport {atomic, possessive} from 'regex/internals';\nimport {recursion} from 'regex-recursion';\n/**\n@import {EmulatedRegExpOptions} from './subclass.js';\n*/\n\n// The validation and transformation for Oniguruma's unique syntax and behavior differences\n// compared to native JS RegExp is layered into all steps of the compilation process:\n// 1. Parser: Uses `oniguruma-parser` to build an Oniguruma AST, which accounts for many\n// differences between Oniguruma and JS.\n// 2. Transformer: Converts the Oniguruma AST to a Regex+ AST that preserves all Oniguruma\n// behavior. This is true even in cases of non-native-JS features that are supported by both\n// Regex+ and Oniguruma but with subtly different behavior in each (subroutines, flag x).\n// 3. Generator: Converts the Regex+ AST to a Regex+ pattern, flags, and options.\n// 4. Postprocessing: Regex+ internals and plugins are used to transpile several remaining features\n// (atomic groups, possessive quantifiers, recursion). Regex+ uses a strict superset of JS\n// RegExp syntax, so using it allows this library to benefit from not reinventing the wheel for\n// complex features that Regex+ already knows how to transpile to JS.\n\n/**\n@typedef {{\n accuracy?: keyof Accuracy;\n avoidSubclass?: boolean;\n flags?: string;\n global?: boolean;\n hasIndices?: boolean;\n lazyCompileLength?: number;\n rules?: {\n allowOrphanBackrefs?: boolean;\n asciiWordBoundaries?: boolean;\n captureGroup?: boolean;\n recursionLimit?: number;\n singleline?: boolean;\n };\n target?: keyof Target;\n verbose?: boolean;\n}} ToRegExpOptions\n*/\n\n/**\nAccepts an Oniguruma pattern and returns an equivalent JavaScript `RegExp`.\n@param {string} pattern Oniguruma regex pattern.\n@param {ToRegExpOptions} [options]\n@returns {RegExp | EmulatedRegExp}\n*/\nfunction toRegExp(pattern, options) {\n const d = toRegExpDetails(pattern, options);\n if (d.options) {\n return new EmulatedRegExp(d.pattern, d.flags, d.options);\n }\n return new RegExp(d.pattern, d.flags);\n}\n\n/**\nAccepts an Oniguruma pattern and returns the details for an equivalent JavaScript `RegExp`.\n@param {string} pattern Oniguruma regex pattern.\n@param {ToRegExpOptions} [options]\n@returns {{\n pattern: string;\n flags: string;\n options?: EmulatedRegExpOptions;\n}}\n*/\nfunction toRegExpDetails(pattern, options) {\n const opts = getOptions(options);\n const onigurumaAst = parse(pattern, {\n flags: opts.flags,\n normalizeUnknownPropertyNames: true,\n rules: {\n captureGroup: opts.rules.captureGroup,\n singleline: opts.rules.singleline,\n },\n skipBackrefValidation: opts.rules.allowOrphanBackrefs,\n unicodePropertyMap: JsUnicodePropertyMap,\n });\n const regexPlusAst = transform(onigurumaAst, {\n accuracy: opts.accuracy,\n asciiWordBoundaries: opts.rules.asciiWordBoundaries,\n avoidSubclass: opts.avoidSubclass,\n bestEffortTarget: opts.target,\n });\n const generated = generate(regexPlusAst, opts);\n const recursionResult = recursion(generated.pattern, {\n captureTransfers: generated._captureTransfers,\n hiddenCaptures: generated._hiddenCaptures,\n mode: 'external',\n });\n const possessiveResult = possessive(recursionResult.pattern);\n const atomicResult = atomic(possessiveResult.pattern, {\n captureTransfers: recursionResult.captureTransfers,\n hiddenCaptures: recursionResult.hiddenCaptures,\n });\n const details = {\n pattern: atomicResult.pattern,\n flags: `${opts.hasIndices ? 'd' : ''}${opts.global ? 'g' : ''}${generated.flags}${generated.options.disable.v ? 'u' : 'v'}`,\n };\n if (opts.avoidSubclass) {\n if (opts.lazyCompileLength !== Infinity) {\n throw new Error('Lazy compilation requires subclass');\n }\n } else {\n // Sort isn't required; only for readability when serialized\n const hiddenCaptures = atomicResult.hiddenCaptures.sort((a, b) => a - b);\n // Change the map to the `EmulatedRegExp` format, serializable as JSON\n const transfers = Array.from(atomicResult.captureTransfers);\n const strategy = regexPlusAst._strategy;\n const lazyCompile = details.pattern.length >= opts.lazyCompileLength;\n if (hiddenCaptures.length || transfers.length || strategy || lazyCompile) {\n details.options = {\n ...(hiddenCaptures.length && {hiddenCaptures}),\n ...(transfers.length && {transfers}),\n ...(strategy && {strategy}),\n ...(lazyCompile && {lazyCompile}),\n };\n }\n }\n return details;\n}\n\n// function toOnigurumaAst(pattern, options) {\n// return parse(pattern, {\n// flags: options?.flags ?? '',\n// normalizeUnknownPropertyNames: true,\n// rules: options?.rules ?? {},\n// unicodePropertyMap: JsUnicodePropertyMap,\n// });\n// }\n\n// function toRegexPlusAst(pattern, options) {\n// return transform(toOnigurumaAst(pattern, options));\n// }\n\nexport {\n EmulatedRegExp,\n toRegExp,\n toRegExpDetails,\n // toOnigurumaAst,\n // toRegexPlusAst,\n};\n", "import { t as JavaScriptScanner } from \"./scanner-BFcBmQR1.mjs\";\nimport { toRegExp } from \"oniguruma-to-es\";\n\n//#region src/engine-compile.ts\n/**\n* The default regex constructor for the JavaScript RegExp engine.\n*/\nfunction defaultJavaScriptRegexConstructor(pattern, options) {\n\treturn toRegExp(pattern, {\n\t\tglobal: true,\n\t\thasIndices: true,\n\t\tlazyCompileLength: 3e3,\n\t\trules: {\n\t\t\tallowOrphanBackrefs: true,\n\t\t\tasciiWordBoundaries: true,\n\t\t\tcaptureGroup: true,\n\t\t\trecursionLimit: 5,\n\t\t\tsingleline: true\n\t\t},\n\t\t...options\n\t});\n}\n/**\n* Use the modern JavaScript RegExp engine to implement the OnigScanner.\n*\n* As Oniguruma supports some features that can't be emulated using native JavaScript regexes, some\n* patterns are not supported. Errors will be thrown when parsing TextMate grammars with\n* unsupported patterns, and when the grammar includes patterns that use invalid Oniguruma syntax.\n* Set `forgiving` to `true` to ignore these errors and skip any unsupported or invalid patterns.\n*/\nfunction createJavaScriptRegexEngine(options = {}) {\n\tconst _options = Object.assign({\n\t\ttarget: \"auto\",\n\t\tcache: /* @__PURE__ */ new Map()\n\t}, options);\n\t_options.regexConstructor ||= (pattern) => defaultJavaScriptRegexConstructor(pattern, { target: _options.target });\n\treturn {\n\t\tcreateScanner(patterns) {\n\t\t\treturn new JavaScriptScanner(patterns, _options);\n\t\t},\n\t\tcreateString(s) {\n\t\t\treturn { content: s };\n\t\t}\n\t};\n}\n\n//#endregion\nexport { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor };", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"CSS\\\",\\\"name\\\":\\\"css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#combinators\\\"},{\\\"include\\\":\\\"#selector\\\"},{\\\"include\\\":\\\"#at-rules\\\"},{\\\"include\\\":\\\"#rule-list\\\"}],\\\"repository\\\":{\\\"at-rules\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\A\\\\\\\\uFEFF?(?i:(?=\\\\\\\\s*@charset\\\\\\\\b))\\\",\\\"end\\\":\\\";|(?=$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.charset.css\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.not-lowercase.charset.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.leading-whitespace.charset.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.no-whitespace.charset.css\\\"},\\\"4\\\":{\\\"name\\\":\\\"invalid.illegal.whitespace.charset.css\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.not-double-quoted.charset.css\\\"},\\\"6\\\":{\\\"name\\\":\\\"invalid.illegal.unclosed-string.charset.css\\\"},\\\"7\\\":{\\\"name\\\":\\\"invalid.illegal.unexpected-characters.charset.css\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?!@charset)@\\\\\\\\w+)|\\\\\\\\G(\\\\\\\\s+)|(@charset\\\\\\\\S[^;]*)|(?<=@charset)( {2,}|\\\\\\\\t+)|(?<=@charset )([^\\\\\\\";]+)|(\\\\\\\"[^\\\\\\\"]+)$|(?<=\\\\\\\")([^;]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.charset.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"match\\\":\\\"((@)charset)(?=\\\\\\\\s)\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\"|$\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.double.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?:\\\\\\\\G|^)(?=[^\\\\\\\"]+$)\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"invalid.illegal.unclosed.string.css\\\"}]}]},{\\\"begin\\\":\\\"(?i)((@)import)(?:\\\\\\\\s+|$|(?=[\\\\\\\"']|/\\\\\\\\*))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.import.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\";\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.import.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\\\\\\s*(?=/\\\\\\\\*)\\\",\\\"end\\\":\\\"(?<=\\\\\\\\*/)\\\\\\\\s*\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"}]},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#url\\\"},{\\\"include\\\":\\\"#media-query-list\\\"}]},{\\\"begin\\\":\\\"(?i)((@)font-face)(?=\\\\\\\\s*|\\\\\\\\{|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.font-face.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.at-rule.font-face.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#rule-list\\\"}]},{\\\"begin\\\":\\\"(?i)(@)page(?=[:{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.page.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*($|[:;{]))\\\",\\\"name\\\":\\\"meta.at-rule.page.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#rule-list\\\"}]},{\\\"begin\\\":\\\"(?i)(?=@media([(\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)media\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.media.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.media.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#media-query-list\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.media.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.media.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.media.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@counter-style([\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)counter-style\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.counter-style.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"name\\\":\\\"meta.at-rule.counter-style.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.parameter.style-name.css\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.counter-style.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#rule-list-innards\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@document([\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)document\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.document.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.document.header.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(url-prefix|domain|regexp)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.document-rule.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.document-rule.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"[^\\\\\\\"')\\\\\\\\s]+\\\",\\\"name\\\":\\\"variable.parameter.document-rule.css\\\"}]},{\\\"include\\\":\\\"#url\\\"},{\\\"include\\\":\\\"#commas\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.document.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.document.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.document.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.keyframes.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"name\\\":\\\"meta.at-rule.keyframes.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.parameter.keyframe-list.css\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.keyframes.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.keyframes.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.keyframes.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.keyframe-offset.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.other.keyframe-offset.percentage.css\\\"}},\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(from|to)(?![-\\\\\\\\w])|([-+]?(?:\\\\\\\\d+(?:\\\\\\\\.\\\\\\\\d+)?|\\\\\\\\.\\\\\\\\d+)%)\\\"},{\\\"include\\\":\\\"#rule-list\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@supports([(\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)|(?=;)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)supports\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.supports.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.supports.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#feature-query-operators\\\"},{\\\"include\\\":\\\"#feature-query\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.supports.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.supports.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.supports.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"begin\\\":\\\"(?i)((@)(-(ms|o)-)?viewport)(?=[\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.viewport.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;@{])\\\",\\\"name\\\":\\\"meta.at-rule.viewport.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"(?i)((@)font-feature-values)(?=[\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.font-feature-values.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"contentName\\\":\\\"variable.parameter.font-name.css\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[;@{])\\\",\\\"name\\\":\\\"meta.at-rule.font-features.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"include\\\":\\\"#font-features\\\"},{\\\"begin\\\":\\\"(?i)((@)namespace)(?=[\\\\\\\"';\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.namespace.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\";|(?=[@{])\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.namespace.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#url\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.namespace-prefix.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(?i)(?:\\\\\\\\G|^|(?<=\\\\\\\\s))(?=(?<=\\\\\\\\s|^)[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\s*/\\\\\\\\*(?:[^*]|\\\\\\\\*[^/])*\\\\\\\\*/)(.*?)([-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*)\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?i)(?=@[-\\\\\\\\w]+[^;]+;s*$)\\\",\\\"end\\\":\\\"(?<=;)(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)[-\\\\\\\\w]+\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\";\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.header.css\\\"}]},{\\\"begin\\\":\\\"(?i)(?=@[-\\\\\\\\w]+([({\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)[-\\\\\\\\w]+\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.header.css\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]}]},\\\"color-keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.color.w3c-standard-color-name.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.color.w3c-extended-color-name.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])currentColor(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.color.current.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"invalid.deprecated.color.system.css\\\"}]},\\\"combinators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"/deep/|>>>\\\",\\\"name\\\":\\\"invalid.deprecated.combinator.css\\\"},{\\\"match\\\":\\\">>|[+>~]\\\",\\\"name\\\":\\\"keyword.operator.combinator.css\\\"}]},\\\"commas\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.list.comma.css\\\"},\\\"comment-block\\\":{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.css\\\"}},\\\"name\\\":\\\"comment.block.css\\\"},\\\"escapes\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\h{1,6}\\\",\\\"name\\\":\\\"constant.character.escape.codepoint.css\\\"},{\\\"begin\\\":\\\"\\\\\\\\\\\\\\\\$\\\\\\\\s*\\\",\\\"end\\\":\\\"^(?<!\\\\\\\\G)\\\",\\\"name\\\":\\\"constant.character.escape.newline.css\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.css\\\"}]},\\\"feature-query\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.condition.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.condition.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.feature-query.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#feature-query-operators\\\"},{\\\"include\\\":\\\"#feature-query\\\"}]},\\\"feature-query-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<=[()\\\\\\\\s]|^|\\\\\\\\*/)(and|not|or)(?=[()\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.logical.feature.$1.css\\\"},{\\\"include\\\":\\\"#rule-list-innards\\\"}]},\\\"font-features\\\":{\\\"begin\\\":\\\"(?i)((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))(?=[\\\\\\\"';@{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.${3:/downcase}.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.at-rule.${3:/downcase}.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.property-list.font-feature.css\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.font-feature.css\\\"},{\\\"include\\\":\\\"#rule-list-innards\\\"}]}]},\\\"functional-pseudo-classes\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)((:)dir)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(ltr|rtl)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.text-direction.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)((:)lang)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=[(,\\\\\\\\s])[A-Za-z]+(-[0-9A-Za-z]*|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*(?=[),\\\\\\\\s])\\\",\\\"name\\\":\\\"support.constant.language-range.css\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.double.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"(?<=[\\\\\\\"\\\\\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=[\\\\\\\"\\\\\\\\s])\\\",\\\"name\\\":\\\"support.constant.language-range.css\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.single.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"(?<=['\\\\\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=['\\\\\\\\s])\\\",\\\"name\\\":\\\"support.constant.language-range.css\\\"}]},{\\\"include\\\":\\\"#commas\\\"}]},{\\\"begin\\\":\\\"(?i)((:)(?:not|has|matches|where|is))(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#selector-innards\\\"}]},{\\\"begin\\\":\\\"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)[-+]?(\\\\\\\\d+n?|n)(\\\\\\\\s*[-+]\\\\\\\\s*\\\\\\\\d+)?\\\",\\\"name\\\":\\\"constant.numeric.css\\\"},{\\\"match\\\":\\\"(?i)even|odd\\\",\\\"name\\\":\\\"support.constant.parity.css\\\"}]}]},\\\"functions\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(calc)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.calc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.calc.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"[*/]|(?<=\\\\\\\\s|^)[-+](?=\\\\\\\\s|$)\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(rgba?|hsla?|hwb|lab|oklab|lch|oklch|color)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.misc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.color.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])((?:-(?:webkit-|moz-|o-))?(?:repeating-)?(?:linear|radial|conic)-gradient)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.gradient.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.gradient.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(from|to|at|in|hue)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"keyword.operator.gradient.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(-webkit-gradient)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.deprecated.gradient.function.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.gradient.invalid.deprecated.gradient.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(from|to|color-stop)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.deprecated.function.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate|color-mix|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia|styleset|stylistic|swash|symbols|cos|sin|tan|acos|asin|atan2??|hypot|sqrt|pow|log|exp|abs|sign)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.misc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.misc.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<=[\\\\\\\",\\\\\\\\s]|\\\\\\\\*/|^)\\\\\\\\d+x(?=[\\\\\\\"'),\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"constant.numeric.other.density.css\\\"},{\\\"include\\\":\\\"#property-values\\\"},{\\\"match\\\":\\\"[^\\\\\\\"'),\\\\\\\\s]+\\\",\\\"name\\\":\\\"variable.parameter.misc.css\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(circle|ellipse|inset|polygon|rect)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.shape.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.shape.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<=\\\\\\\\s|^|\\\\\\\\*/)(at|round)(?=\\\\\\\\s|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.shape.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(cubic-bezier|steps)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.timing-function.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.timing-function.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(start|end)(?=\\\\\\\\s*\\\\\\\\)|$)\\\",\\\"name\\\":\\\"support.constant.step-direction.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])((?:translate|scale|rotate)(?:[XYZ]|3D)?|matrix(?:3D)?|skew[XY]?|perspective)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.transform.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"include\\\":\\\"#url\\\"},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(var)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.misc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.variable.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"--[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.argument.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]}]},\\\"media-feature-keywords\\\":{\\\"match\\\":\\\"(?i)(?<=^|[:\\\\\\\\s]|\\\\\\\\*/)(?:portrait|landscape|progressive|interlace|fullscreen|standalone|minimal-ui|browser|hover)(?=[)\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"support.constant.property-value.css\\\"},\\\"media-features\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.property-name.media.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.property-name.media.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.type.vendored.property-name.media.css\\\"}},\\\"match\\\":\\\"(?i)(?<=^|[(\\\\\\\\s]|\\\\\\\\*/)(?:((?:m(?:in-|ax-))?(?:height|width|aspect-ratio|color|color-index|monochrome|resolution)|grid|scan|orientation|display-mode|hover)|((?:m(?:in-|ax-))?device-(?:height|width|aspect-ratio))|((?:[-_](?:webkit|apple|khtml|epub|moz|ms|o|xv|ah|rim|atsc|hp|tc|wap|ro)|(?:mso|prince))-[-\\\\\\\\w]+(?=\\\\\\\\s*(?:/\\\\\\\\*(?:[^*]|\\\\\\\\*[^/])*\\\\\\\\*/)?\\\\\\\\s*[):])))(?=\\\\\\\\s|$|[):<=>]|/\\\\\\\\*)\\\"},\\\"media-query\\\":{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#media-types\\\"},{\\\"match\\\":\\\"(?i)(?<=\\\\\\\\s|^|,|\\\\\\\\*/)(only|not)(?=[{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.logical.$1.media.css\\\"},{\\\"match\\\":\\\"(?i)(?<=\\\\\\\\s|^|\\\\\\\\*/|\\\\\\\\))and(?=\\\\\\\\s|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.logical.and.media.css\\\"},{\\\"match\\\":\\\",(?:(?:\\\\\\\\s*,)+|(?=\\\\\\\\s*[);{]))\\\",\\\"name\\\":\\\"invalid.illegal.comma.css\\\"},{\\\"include\\\":\\\"#commas\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#media-features\\\"},{\\\"include\\\":\\\"#media-feature-keywords\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.css\\\"},{\\\"match\\\":\\\">=|<=|[<=>]\\\",\\\"name\\\":\\\"keyword.operator.comparison.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.css\\\"}},\\\"match\\\":\\\"(\\\\\\\\d+)\\\\\\\\s*(/)\\\\\\\\s*(\\\\\\\\d+)\\\",\\\"name\\\":\\\"meta.ratio.css\\\"},{\\\"include\\\":\\\"#numeric-values\\\"},{\\\"include\\\":\\\"#comment-block\\\"}]}]},\\\"media-query-list\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\s*[^;{])\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#media-query\\\"}]},\\\"media-types\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.constant.media.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.constant.media.css\\\"}},\\\"match\\\":\\\"(?i)(?<=^|[,\\\\\\\\s]|\\\\\\\\*/)(?:(all|print|screen|speech)|(aural|braille|embossed|handheld|projection|tty|tv))(?=$|[,;{\\\\\\\\s]|/\\\\\\\\*)\\\"},\\\"numeric-values\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.css\\\"}},\\\"match\\\":\\\"(#)(?:\\\\\\\\h{3,4}|\\\\\\\\h{6}|\\\\\\\\h{8})\\\\\\\\b\\\",\\\"name\\\":\\\"constant.other.color.rgb-value.hex.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.unit.percentage.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.unit.${2:/downcase}.css\\\"}},\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])[-+]?(?:[0-9]+(?:\\\\\\\\.[0-9]+)?|\\\\\\\\.[0-9]+)(?:(?<=[0-9])E[-+]?[0-9]+)?(?:(%)|(deg|grad|rad|turn|Hz|kHz|ch|cm|em|ex|fr|in|mm|mozmm|pc|pt|px|q|rem|rch|rex|rlh|ic|ric|rcap|vh|vw|vb|vi|svh|svw|svb|svi|dvh|dvw|dvb|dvi|lvh|lvw|lvb|lvi|vmax|vmin|cqw|cqi|cqh|cqb|cqmin|cqmax|dpi|dpcm|dppx|s|ms)\\\\\\\\b)?\\\",\\\"name\\\":\\\"constant.numeric.css\\\"}]},\\\"property-keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse|always|antialiased|auto|auto-fill|auto-fit|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow|flow-root|forwards|freeze|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83|jis90|justify|justify-all|kannada|keep-all|landscape|larger??|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]|reset-size|reverse|revert|revert-layer|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.property-value.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman|urdu)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.property-value.list-style-type.css\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+\\\",\\\"name\\\":\\\"support.constant.vendored.property-value.css\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.font-name.css\\\"}]},\\\"property-names\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(?:accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|aspect-ratio|backdrop-filter|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border|border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color|border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end|border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius|border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|container|container-name|container-type|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align|inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation|justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset|mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position|offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline|overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]|pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin|place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align|ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start|scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right|scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom|scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right|scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type|scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size|speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright|text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style|text-decoration-thickness|text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation|text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform|transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom|alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile|color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity|glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid|marker-start|rx??|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|[xy]|adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break|balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length|bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction|box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column|column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break|delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position|flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust|initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count|justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group|orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range|play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim|radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness|right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color|rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral|speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch|string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height|text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style|top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range|voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.type.property-name.css\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+\\\",\\\"name\\\":\\\"support.type.vendored.property-name.css\\\"}]},\\\"property-values\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#commas\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#property-keywords\\\"},{\\\"include\\\":\\\"#unicode-range\\\"},{\\\"include\\\":\\\"#numeric-values\\\"},{\\\"include\\\":\\\"#color-keywords\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"!\\\\\\\\s*important(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"keyword.other.important.css\\\"}]},\\\"pseudo-classes\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.colon.css\\\"}},\\\"match\\\":\\\"(?i)(:)(:*)(?:active|any-link|checked|default|disabled|empty|enabled|first|(?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover|in-range|indeterminate|invalid|left|link|optional|out-of-range|read-only|read-write|required|right|root|scope|target|unresolved|valid|visited)(?![-\\\\\\\\w]|\\\\\\\\s*[;}])\\\",\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"pseudo-elements\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"}},\\\"match\\\":\\\"(?i)(?:(::?)(?:after|before|first-letter|first-line|(?:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-a-z]+)|(::)(?:backdrop|content|grammar-error|marker|placeholder|selection|shadow|spelling-error))(?![-\\\\\\\\w]|\\\\\\\\s*[;}])\\\",\\\"name\\\":\\\"entity.other.attribute-name.pseudo-element.css\\\"},\\\"rule-list\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.property-list.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#rule-list-innards\\\"}]},\\\"rule-list-innards\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#font-features\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])--[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.css\\\"},{\\\"begin\\\":\\\"(?<![-A-Za-z])(?=[-A-Za-z])\\\",\\\"end\\\":\\\"$|(?![-A-Za-z])\\\",\\\"name\\\":\\\"meta.property-name.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#property-names\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.css\\\"}},\\\"contentName\\\":\\\"meta.property-value.css\\\",\\\"end\\\":\\\"\\\\\\\\s*(;)|\\\\\\\\s*(?=[)}])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}]},\\\"selector\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\|?(?:[-#*.:A-\\\\\\\\[_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.)))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[)/@{])\\\",\\\"name\\\":\\\"meta.selector.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#selector-innards\\\"}]},\\\"selector-innards\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#commas\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#combinators\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.namespace-prefix.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.css\\\"}},\\\"match\\\":\\\"(?:^|(?<=[(,;}\\\\\\\\s]))(?![-*\\\\\\\\w]+\\\\\\\\|(?![-#*.:A-\\\\\\\\[_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]))([-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*|\\\\\\\\*)?(\\\\\\\\|)\\\"},{\\\"include\\\":\\\"#tag-names\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"entity.name.tag.wildcard.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(?<![-@\\\\\\\\w])([#.])((?:-?[0-9]|-(?=$|[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*)|(?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*(?:[]!\\\\\\\"%-(*;<?@^`|}]|/(?!\\\\\\\\*))+)(?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*)\\\",\\\"name\\\":\\\"invalid.illegal.bad-identifier.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(\\\\\\\\.)((?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*)\\\",\\\"name\\\":\\\"entity.other.attribute-name.class.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(#)(-?(?![0-9])(?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*)\\\",\\\"name\\\":\\\"entity.other.attribute-name.id.css\\\"},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.entity.begin.bracket.square.css\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.entity.end.bracket.square.css\\\"}},\\\"name\\\":\\\"meta.attribute-selector.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ignore-case.css\\\"}},\\\"match\\\":\\\"(?<=[\\\\\\\"'\\\\\\\\s]|^|\\\\\\\\*/)\\\\\\\\s*([Ii])\\\\\\\\s*(?=[]\\\\\\\\s]|/\\\\\\\\*|$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.attribute-value.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(?<==)\\\\\\\\s*((?!/\\\\\\\\*)(?:[^]\\\\\\\"'\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\.)+)\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"[$*^|~]?=\\\",\\\"name\\\":\\\"keyword.operator.pattern.css\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"punctuation.separator.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.namespace-prefix.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(-?(?!\\\\\\\\d)(?:[-\\\\\\\\w[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+|\\\\\\\\*)(?=\\\\\\\\|(?![=\\\\\\\\s]|$|])(?:-?(?!\\\\\\\\d)|[-\\\\\\\\\\\\\\\\\\\\\\\\w[^\\\\\\\\x00-\\\\\\\\x7F]]))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(-?(?!\\\\\\\\d)(?>[-\\\\\\\\w[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+)\\\\\\\\s*(?=[]$*=^|~]|/\\\\\\\\*)\\\"}]},{\\\"include\\\":\\\"#pseudo-classes\\\"},{\\\"include\\\":\\\"#pseudo-elements\\\"},{\\\"include\\\":\\\"#functional-pseudo-classes\\\"},{\\\"match\\\":\\\"(?<![-@\\\\\\\\w])(?=[a-z]\\\\\\\\w*-)(?:(?![A-Z])[-\\\\\\\\w])+(?![-(\\\\\\\\w])\\\",\\\"name\\\":\\\"entity.name.tag.custom.css\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\"|(?<!\\\\\\\\\\\\\\\\)(?=$|\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.double.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?:\\\\\\\\G|^)(?=(?:[^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+$)\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"invalid.illegal.unclosed.string.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"'|(?<!\\\\\\\\\\\\\\\\)(?=$|\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.single.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?:\\\\\\\\G|^)(?=(?:[^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+$)\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"invalid.illegal.unclosed.string.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"include\\\":\\\"#escapes\\\"}]}]},\\\"tag-names\\\":{\\\"match\\\":\\\"(?i)(?<![-:\\\\\\\\w])(?:a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound|big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i|iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark|marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rtc??|ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong|style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|ul??|var|video|wbr|xmp|altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern|annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced|mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot|mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup|msup|mtable|mtd|mtext|mtr|munder|munderover|semantics)(?=[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"entity.name.tag.css\\\"},\\\"unicode-range\\\":{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.other.unicode-range.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.dash.unicode-range.css\\\"}},\\\"match\\\":\\\"(?<![-\\\\\\\\w])[Uu]\\\\\\\\+[?\\\\\\\\h]{1,6}(?:(-)\\\\\\\\h{1,6})?(?![-\\\\\\\\w])\\\"},\\\"url\\\":{\\\"begin\\\":\\\"(?i)(?<![-@\\\\\\\\w])(url)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.url.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.url.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"[^\\\\\\\"')\\\\\\\\s]+\\\",\\\"name\\\":\\\"variable.parameter.url.css\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"scopeName\\\":\\\"source.css\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Go\\\",\\\"name\\\":\\\"go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}],\\\"repository\\\":{\\\"after_control_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\brange\\\\\\\\b|;|\\\\\\\\bif\\\\\\\\b|\\\\\\\\bfor\\\\\\\\b|[<>]|<=|>=|==|!=|\\\\\\\\w[-%*+/]|\\\\\\\\w[-%*+/]=|\\\\\\\\|\\\\\\\\||&&)\\\\\\\\s*((?![]\\\\\\\\[]+)[-\\\\\\\\]!%*+./:<=>\\\\\\\\[_[:alnum:]]+)\\\\\\\\s*(?=\\\\\\\\{)\\\"},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},\\\"built_in_functions\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(append|cap|close|complex|copy|delete|imag|len|panic|print|println|real|recover|min|max|clear)\\\\\\\\b(?=\\\\\\\\()\\\",\\\"name\\\":\\\"entity.name.function.support.builtin.go\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(new)\\\\\\\\b(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.support.builtin.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(make)\\\\\\\\b(\\\\\\\\()((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?[]*\\\\\\\\[]+{0,1}(?:(?!\\\\\\\\bmap\\\\\\\\b)[.\\\\\\\\w]+)?(\\\\\\\\[(?:\\\\\\\\S+(?:,\\\\\\\\s*\\\\\\\\S+)*)?])?,?)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.support.builtin.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(/\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.go\\\"}},\\\"end\\\":\\\"(\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.go\\\"}},\\\"name\\\":\\\"comment.block.go\\\"},{\\\"begin\\\":\\\"(//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.go\\\"}},\\\"end\\\":\\\"\\\\\\\\n|$\\\",\\\"name\\\":\\\"comment.line.double-slash.go\\\"}]},\\\"const_assignment\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.constant.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\bconst\\\\\\\\b)\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\bconst\\\\\\\\b)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.constant.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"delimiters\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.other.comma.go\\\"},{\\\"match\\\":\\\"\\\\\\\\.(?!\\\\\\\\.\\\\\\\\.)\\\",\\\"name\\\":\\\"punctuation.other.period.go\\\"},{\\\"match\\\":\\\":(?!=)\\\",\\\"name\\\":\\\"punctuation.other.colon.go\\\"}]},\\\"double_parentheses_types\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<!\\\\\\\\w)(\\\\\\\\([]*\\\\\\\\[]+{0,1}[.\\\\\\\\w]+(?:\\\\\\\\[(?:[]*.\\\\\\\\[{}\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[{}\\\\\\\\w]+)*)?])?\\\\\\\\))(?=\\\\\\\\()\\\"},\\\"function_declaration\\\":{\\\"begin\\\":\\\"^\\\\\\\\b(func)\\\\\\\\b\\\\\\\\s*(\\\\\\\\([^)]+\\\\\\\\)\\\\\\\\s*)?(?:(\\\\\\\\w+)(?=[(\\\\\\\\[]))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.function.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(\\\\\\\\w+\\\\\\\\s+)?([*.\\\\\\\\w]+(?:\\\\\\\\[(?:[*.\\\\\\\\w]+(?:,\\\\\\\\s+)?)+{0,1}])?)\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.function.go\\\"}]}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*((?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b)[-\\\\\\\\]*.\\\\\\\\[\\\\\\\\w]+)?\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[-\\\\\\\\]*.<>\\\\\\\\[\\\\\\\\w]+\\\\\\\\s*(?:/[*/].*)?)$\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"function_param_types\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+(?=(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b\\\\\\\\s*\\\\\\\\{)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"(?:(?<=\\\\\\\\()|^\\\\\\\\s*)((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+(?:/[*/].*)?)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?:[]*.\\\\\\\\[\\\\\\\\w]+{0,1}(?:\\\\\\\\bfunc\\\\\\\\b\\\\\\\\([^)]+{0,1}\\\\\\\\)(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*)+(?:[]*.\\\\\\\\[\\\\\\\\w]+|\\\\\\\\([^)]+{0,1}\\\\\\\\))?|(?:[]*\\\\\\\\[]+{0,1}[*.\\\\\\\\w]+(?:\\\\\\\\[[^]]+])?[*.\\\\\\\\w]+{0,1})+))\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"([.\\\\\\\\w]+)\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"functions\\\":{\\\"begin\\\":\\\"\\\\\\\\b(func)\\\\\\\\b(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.function.go\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))(\\\\\\\\s*(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+)?(\\\\\\\\s*(?:[]*\\\\\\\\[]+{0,1}[*.\\\\\\\\w]+)?(?:\\\\\\\\[(?:[*.\\\\\\\\w]+{0,1}(?:\\\\\\\\[[^]]+{0,1}])?(?:,\\\\\\\\s+)?)+]|\\\\\\\\([^)]+{0,1}\\\\\\\\))?[*.\\\\\\\\w]+{0,1}\\\\\\\\s*(?=\\\\\\\\{)|\\\\\\\\s*(?:[]*\\\\\\\\[]+{0,1}(?!\\\\\\\\bfunc\\\\\\\\b)[*.\\\\\\\\w]+(?:\\\\\\\\[(?:[*.\\\\\\\\w]+{0,1}(?:\\\\\\\\[[^]]+{0,1}])?(?:,\\\\\\\\s+)?)+])?[*.\\\\\\\\w]+{0,1}|\\\\\\\\([^)]+{0,1}\\\\\\\\)))?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-variable-types\\\"}]},\\\"functions_inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.function.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b(func)\\\\\\\\b(\\\\\\\\([^/]*?\\\\\\\\)\\\\\\\\s+\\\\\\\\([^/]*?\\\\\\\\))\\\\\\\\s+(?=\\\\\\\\{)\\\"},\\\"generic_param_types\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+(?=(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b\\\\\\\\s*\\\\\\\\{)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"(?:(?<=\\\\\\\\()|^\\\\\\\\s*)((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+(?:/[*/].*)?)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?:[]*.\\\\\\\\[\\\\\\\\w]+{0,1}(?:\\\\\\\\bfunc\\\\\\\\b\\\\\\\\([^)]+{0,1}\\\\\\\\)(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*)+(?:[*.\\\\\\\\w]+|\\\\\\\\([^)]+{0,1}\\\\\\\\))?|(?:(?:[*.~\\\\\\\\w]+|\\\\\\\\[(?:[*.\\\\\\\\w]+{0,1}(?:\\\\\\\\[[^]]+{0,1}])?(?:,\\\\\\\\s+)?)+])[*.\\\\\\\\w]+{0,1})+))\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b([.\\\\\\\\w]+)\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"generic_types\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-variable-types\\\"}]}},\\\"match\\\":\\\"([*.\\\\\\\\w]+)(\\\\\\\\[[^]]+{0,1}])\\\"},\\\"group-functions\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#function_declaration\\\"},{\\\"include\\\":\\\"#functions_inline\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#built_in_functions\\\"},{\\\"include\\\":\\\"#support_functions\\\"}]},\\\"group-types\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#other_struct_interface_expressions\\\"},{\\\"include\\\":\\\"#type_assertion_inline\\\"},{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#single_type\\\"},{\\\"include\\\":\\\"#multi_types\\\"},{\\\"include\\\":\\\"#struct_interface_declaration\\\"},{\\\"include\\\":\\\"#double_parentheses_types\\\"},{\\\"include\\\":\\\"#switch_types\\\"},{\\\"include\\\":\\\"#type-declarations\\\"}]},\\\"group-variables\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#const_assignment\\\"},{\\\"include\\\":\\\"#var_assignment\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"include\\\":\\\"#label_loop_variables\\\"},{\\\"include\\\":\\\"#slice_index_variables\\\"},{\\\"include\\\":\\\"#property_variables\\\"},{\\\"include\\\":\\\"#switch_variables\\\"},{\\\"include\\\":\\\"#other_variables\\\"}]},\\\"hover\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\binvalid\\\\\\\\b\\\\\\\\s+\\\\\\\\btype\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.field.go\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=^\\\\\\\\bfield\\\\\\\\b)\\\\\\\\s+([*.\\\\\\\\w]+)\\\\\\\\s+([\\\\\\\\s\\\\\\\\S]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=^\\\\\\\\breturns\\\\\\\\b)\\\\\\\\s+([\\\\\\\\s\\\\\\\\S]+)\\\"}]},\\\"import\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(import)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.go\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#imports\\\"}]}]},\\\"imports\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.import.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"string.quoted.double.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.import.go\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"match\\\":\\\"(\\\\\\\\s*[.\\\\\\\\w]+)?\\\\\\\\s*((\\\\\\\")([^\\\\\\\"]*)(\\\\\\\"))\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.imports.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.imports.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#imports\\\"}]},{\\\"include\\\":\\\"$self\\\"}]},\\\"interface_variables_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(interface)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.interface.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#interface_variables_types_field\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"interface_variables_types_field\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"([.\\\\\\\\w]+)\\\"}]},\\\"keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bchan\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.channel.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bconst\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.const.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bvar\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.var.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bfunc\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.function.go\\\"},{\\\"match\\\":\\\"\\\\\\\\binterface\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.interface.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bmap\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.map.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bstruct\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.struct.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bimport\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.import.go\\\"},{\\\"match\\\":\\\"\\\\\\\\btype\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.type.go\\\"}]},\\\"label_loop_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.label.go\\\"}]}},\\\"match\\\":\\\"^(\\\\\\\\s*\\\\\\\\w+:\\\\\\\\s*|\\\\\\\\s*\\\\\\\\b(?:break|goto|continue)\\\\\\\\b\\\\\\\\s+\\\\\\\\w+(?:\\\\\\\\s*/[*/]\\\\\\\\s*.*)?)$\\\"},\\\"language_constants\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.boolean.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.language.null.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.iota.go\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?:(true|false)|(nil)|(iota))\\\\\\\\b\\\"},\\\"map_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(map)\\\\\\\\b(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.map.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"(])((?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:func|struct|map)\\\\\\\\b)[]*\\\\\\\\[]+{0,1}[.\\\\\\\\w]+(?:\\\\\\\\[(?:[]*.\\\\\\\\[{}\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[{}\\\\\\\\w]+)*)?])?)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"multi_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"numeric_literals\\\":{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=.)\\\",\\\"end\\\":\\\"\\\\\\\\n|$\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.decimal.point.go\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.decimal.go\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.decimal.go\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.decimal.go\\\"},\\\"9\\\":{\\\"name\\\":\\\"constant.numeric.exponent.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"10\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"11\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"12\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.decimal.go\\\"},\\\"14\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.decimal.go\\\"},\\\"15\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.decimal.go\\\"},\\\"16\\\":{\\\"name\\\":\\\"constant.numeric.exponent.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"17\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"18\\\":{\\\"name\\\":\\\"constant.numeric.decimal.point.go\\\"},\\\"19\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"20\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"21\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.decimal.go\\\"},\\\"22\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.decimal.go\\\"},\\\"23\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.decimal.go\\\"},\\\"24\\\":{\\\"name\\\":\\\"constant.numeric.exponent.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"25\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"26\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"27\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"28\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"29\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\"},\\\"30\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"31\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"32\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.hexadecimal.go\\\"},\\\"33\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.hexadecimal.go\\\"},\\\"34\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.hexadecimal.go\\\"},\\\"35\\\":{\\\"name\\\":\\\"constant.numeric.exponent.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"36\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"37\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"38\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"39\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"40\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.hexadecimal.go\\\"},\\\"41\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.hexadecimal.go\\\"},\\\"42\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.hexadecimal.go\\\"},\\\"43\\\":{\\\"name\\\":\\\"constant.numeric.exponent.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"44\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"45\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"46\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\"},\\\"47\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"48\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"49\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.hexadecimal.go\\\"},\\\"50\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.hexadecimal.go\\\"},\\\"51\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.hexadecimal.go\\\"},\\\"52\\\":{\\\"name\\\":\\\"constant.numeric.exponent.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"53\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"}},\\\"match\\\":\\\"\\\\\\\\G(?:(?:(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)((?<=[0-9])\\\\\\\\.|\\\\\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)?(?:(?<!_)([Ee])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*))?(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$)|(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?<!_)([Ee])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|((?<=[0-9])\\\\\\\\.|\\\\\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?:(?<!_)([Ee])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*))?(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])_?(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)((?<=\\\\\\\\h)\\\\\\\\.|\\\\\\\\.(?=\\\\\\\\h))(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)?(?<!_)([Pp])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])_?(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?<!_)([Pp])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])((?<=\\\\\\\\h)\\\\\\\\.|\\\\\\\\.(?=\\\\\\\\h))(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?<!_)([Pp])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.other.unit.binary.go\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.numeric.binary.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.other.unit.octal.go\\\"},\\\"9\\\":{\\\"name\\\":\\\"constant.numeric.octal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"10\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"11\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"13\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"14\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"15\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"}},\\\"match\\\":\\\"\\\\\\\\G(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$)|(0[Bb])_?([01](?:[01]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Oo]?)_?((?:[0-7]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))+)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])_?(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))\\\"},{\\\"match\\\":\\\"(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])+\\\",\\\"name\\\":\\\"invalid.illegal.constant.numeric.go\\\"}]}]}},\\\"match\\\":\\\"(?<!\\\\\\\\w)\\\\\\\\.?\\\\\\\\d(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])*\\\"},\\\"operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)[\\\\\\\\&*]+(?!\\\\\\\\d)(?=[]\\\\\\\\[\\\\\\\\w]|<-)\\\",\\\"name\\\":\\\"keyword.operator.address.go\\\"},{\\\"match\\\":\\\"<-\\\",\\\"name\\\":\\\"keyword.operator.channel.go\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.go\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.go\\\"},{\\\"match\\\":\\\"(==|!=|<=|>=|<(?!<)|>(?!>))\\\",\\\"name\\\":\\\"keyword.operator.comparison.go\\\"},{\\\"match\\\":\\\"(&&|\\\\\\\\|\\\\\\\\||!)\\\",\\\"name\\\":\\\"keyword.operator.logical.go\\\"},{\\\"match\\\":\\\"((?:|[-%*+/:^|]|<<|>>|&\\\\\\\\^?)=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.go\\\"},{\\\"match\\\":\\\"([-%*+/])\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.go\\\"},{\\\"match\\\":\\\"(&(?!\\\\\\\\^)|[\\\\\\\\^|]|&\\\\\\\\^|<<|>>|~)\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.bitwise.go\\\"},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.ellipsis.go\\\"}]},\\\"other_struct_interface_expressions\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#after_control_variables\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b(?!(?:struct|interface)\\\\\\\\b)([.\\\\\\\\w]+)(?<brackets>\\\\\\\\[(?:[^]\\\\\\\\[]|\\\\\\\\g<brackets>)*])?(?=\\\\\\\\{)\\\"}]},\\\"other_variables\\\":{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"},\\\"package_name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(package)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.package.go\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.package.go\\\"}]}]},\\\"parameter-variable-types\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]}]},\\\"property_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b([.\\\\\\\\w]+:(?!=))\\\"},\\\"raw_string_literals\\\":{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"}},\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"name\\\":\\\"string.quoted.raw.go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_placeholder\\\"}]},\\\"runes\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"name\\\":\\\"string.quoted.rune.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G(\\\\\\\\\\\\\\\\([0-7]{3}|[\\\\\\\"'\\\\\\\\\\\\\\\\abfnrtv]|x\\\\\\\\h{2}|u\\\\\\\\h{4}|U\\\\\\\\h{8})|.)(?=')\\\",\\\"name\\\":\\\"constant.other.rune.go\\\"},{\\\"match\\\":\\\"[^']+\\\",\\\"name\\\":\\\"invalid.illegal.unknown-rune.go\\\"}]}]},\\\"single_type\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*([*.\\\\\\\\w]+)\\\\\\\\s+(?!(?:=\\\\\\\\s*)?[]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b)([\\\\\\\\s\\\\\\\\S]+)\\\"},{\\\"begin\\\":\\\"(?:^|\\\\\\\\s+)\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*([*.\\\\\\\\w]+)(?=\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"end\\\":\\\"(?<=])(\\\\\\\\s+(?:=\\\\\\\\s*)?(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface|func)\\\\\\\\b)[-\\\\\\\\]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}]},\\\"slice_index_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\w\\\\\\\\[)((?:\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+:|:\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+)(?:\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+)?(?::\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+)?)(?=])\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#package_name\\\"},{\\\"include\\\":\\\"#import\\\"},{\\\"include\\\":\\\"#syntax_errors\\\"},{\\\"include\\\":\\\"#group-functions\\\"},{\\\"include\\\":\\\"#group-types\\\"},{\\\"include\\\":\\\"#group-variables\\\"},{\\\"include\\\":\\\"#hover\\\"}]},\\\"storage_types\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\bbool\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.boolean.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bbyte\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.byte.go\\\"},{\\\"match\\\":\\\"\\\\\\\\berror\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.error.go\\\"},{\\\"match\\\":\\\"\\\\\\\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.numeric.go\\\"},{\\\"match\\\":\\\"\\\\\\\\brune\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.rune.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bstring\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.string.go\\\"},{\\\"match\\\":\\\"\\\\\\\\buintptr\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.uintptr.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bany\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.any.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bcomparable\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.comparable.go\\\"}]},\\\"string_escaped_char\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|[\\\\\\\"'\\\\\\\\\\\\\\\\abfnrtv]|x\\\\\\\\h{2}|u\\\\\\\\h{4}|U\\\\\\\\h{8})\\\",\\\"name\\\":\\\"constant.character.escape.go\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[^\\\\\\\"'0-7Uabfnrtuvx]\\\",\\\"name\\\":\\\"invalid.illegal.unknown-escape.go\\\"}]},\\\"string_literals\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"name\\\":\\\"string.quoted.double.go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_escaped_char\\\"},{\\\"include\\\":\\\"#string_placeholder\\\"}]}]},\\\"string_placeholder\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"%(\\\\\\\\[\\\\\\\\d+])?([- #+0]{0,2}((\\\\\\\\d+|\\\\\\\\*)?(\\\\\\\\.?(\\\\\\\\d+|\\\\\\\\*|(\\\\\\\\[\\\\\\\\d+])\\\\\\\\*?)?(\\\\\\\\[\\\\\\\\d+])?)?))?[%EFGTUXb-gopqstvwx]\\\",\\\"name\\\":\\\"constant.other.placeholder.go\\\"}]},\\\"struct_interface_declaration\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*([.\\\\\\\\w]+)\\\"},\\\"struct_variable_types_fields_multi\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*[]*\\\\\\\\[]+{0,1})\\\\\\\\b(struct)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"keyword.struct.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types_fields\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*[]*\\\\\\\\[]+{0,1})\\\\\\\\b(interface)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"keyword.interface.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#interface_variables_types_field\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*[]*\\\\\\\\[]+{0,1})\\\\\\\\b(func)\\\\\\\\b\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"keyword.function.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"include\\\":\\\"#parameter-variable-types\\\"}]},\\\"struct_variables_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(struct)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.struct.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types_fields\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"struct_variables_types_fields\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variable_types_fields_multi\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\{)\\\\\\\\s*((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*.\\\\\\\\[\\\\\\\\w]+)\\\\\\\\s*(?=})\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\{)\\\\\\\\s*((?:\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\w+\\\\\\\\s+)((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*.\\\\\\\\[\\\\\\\\w]+)\\\\\\\\s*(?=})\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\w+\\\\\\\\s+)?((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[^\\\\\\\"/`\\\\\\\\s]+;?)\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\{)((?:\\\\\\\\s*(?:(?:\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\w+\\\\\\\\s+)?(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[^\\\\\\\"/`\\\\\\\\s]+;?)+)\\\\\\\\s*(?=})\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[*.\\\\\\\\w]+\\\\\\\\s*)(?:(?=[\\\\\\\"/`])|$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:\\\\\\\\s*,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*)\\\\\\\\s*([^\\\\\\\"/`]+)\\\"}]},\\\"support_functions\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.support.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.function.support.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?:((?<=\\\\\\\\.)\\\\\\\\b\\\\\\\\w+)|\\\\\\\\b(\\\\\\\\w+))(?<brackets>\\\\\\\\[(?:[^]\\\\\\\\[]|\\\\\\\\g<brackets>)*])?(?=\\\\\\\\()\\\"},\\\"switch_types\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\bswitch\\\\\\\\b)\\\\\\\\s*(\\\\\\\\w+\\\\\\\\s*:=)?\\\\\\\\s*([-\\\\\\\\]%\\\\\\\\&(-+./<>\\\\\\\\[|\\\\\\\\w]+)(\\\\\\\\.\\\\\\\\(\\\\\\\\btype\\\\\\\\b\\\\\\\\)\\\\\\\\s*)(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#operators\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\btype\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.type.go\\\"}]},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.other.colon.go\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(case)\\\\\\\\b\\\\\\\\s+([!*,.<=>\\\\\\\\w\\\\\\\\s]+)(:)(\\\\\\\\s*/[*/]\\\\\\\\s*.*)?$\\\"},{\\\"begin\\\":\\\"\\\\\\\\bcase\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.go\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.other.colon.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},{\\\"include\\\":\\\"$self\\\"}]},\\\"switch_variables\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(case)\\\\\\\\b\\\\\\\\s+([\\\\\\\\s\\\\\\\\S]+:\\\\\\\\s*(?:/[*/].*)?)$\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\bswitch\\\\\\\\b)\\\\\\\\s*((?:[.\\\\\\\\w]+(?:\\\\\\\\s*[-!%\\\\\\\\&+,/:<=>|]+\\\\\\\\s*[.\\\\\\\\w]+)*\\\\\\\\s*[-!%\\\\\\\\&+,/:<=>|]+)?\\\\\\\\s*[-\\\\\\\\]%\\\\\\\\&(-+./<>\\\\\\\\[|\\\\\\\\w]+{0,1}\\\\\\\\s*(?:;\\\\\\\\s*[-\\\\\\\\]%\\\\\\\\&(-+./<>\\\\\\\\[|\\\\\\\\w]+\\\\\\\\s*)?)(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\bcase\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.go\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.other.colon.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"syntax_errors\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.slice.go\\\"}},\\\"match\\\":\\\"\\\\\\\\[](\\\\\\\\s+)\\\"},{\\\"match\\\":\\\"\\\\\\\\b0[0-7]*[89]\\\\\\\\d*\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.illegal.numeric.go\\\"}]},\\\"terminators\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.go\\\"},\\\"type-declarations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#language_constants\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#map_types\\\"},{\\\"include\\\":\\\"#brackets\\\"},{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"include\\\":\\\"#runes\\\"},{\\\"include\\\":\\\"#storage_types\\\"},{\\\"include\\\":\\\"#raw_string_literals\\\"},{\\\"include\\\":\\\"#string_literals\\\"},{\\\"include\\\":\\\"#numeric_literals\\\"},{\\\"include\\\":\\\"#terminators\\\"}]},\\\"type-declarations-without-brackets\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#language_constants\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#map_types\\\"},{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"include\\\":\\\"#runes\\\"},{\\\"include\\\":\\\"#storage_types\\\"},{\\\"include\\\":\\\"#raw_string_literals\\\"},{\\\"include\\\":\\\"#string_literals\\\"},{\\\"include\\\":\\\"#numeric_literals\\\"},{\\\"include\\\":\\\"#terminators\\\"}]},\\\"type_assertion_inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\.\\\\\\\\()(?:\\\\\\\\b(type)\\\\\\\\b|((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*\\\\\\\\[]+{0,1}[.\\\\\\\\w]+(?:\\\\\\\\[(?:[]*.\\\\\\\\[{}\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[{}\\\\\\\\w]+)*)?])?))(?=\\\\\\\\))\\\"},\\\"var_assignment\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\bvar\\\\\\\\b)\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\bvar\\\\\\\\b)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"variable_assignment\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\w+)*(?=\\\\\\\\s*:=)\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b[*.\\\\\\\\w]+(?:,\\\\\\\\s*[*.\\\\\\\\w]+)*(?=\\\\\\\\s*=(?!=))\\\"}]}},\\\"scopeName\\\":\\\"source.go\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JavaScript\\\",\\\"name\\\":\\\"javascript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.objectliteral.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"name\\\":\\\"meta.array.literal.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.js\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.js\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.js\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"name\\\":\\\"comment.block.documentation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"name\\\":\\\"comment.block.js\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.js\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.js\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.js\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.js\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.block.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.readwrite.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.js\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js\\\"}},\\\"name\\\":\\\"meta.tag.js\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.js\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.js\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.js\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.js\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.js\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.js\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.js\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.js\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.js\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.js\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.js\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.js\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.js\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.js\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.js entity.name.function.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.js variable.object.property.js\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.js\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.js punctuation.accessor.optional.js\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.js keyword.operator.definiteassignment.js\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.js\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.js entity.name.function.js\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.js entity.name.function.js\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.js entity.name.function.js\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.js\\\"}},\\\"name\\\":\\\"meta.parameters.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.js\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.js\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js\\\"}},\\\"name\\\":\\\"string.regexp.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.js\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"name\\\":\\\"meta.import-equals.external.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.js\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.js\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.js\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.block.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.js\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.js\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.js\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.js\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.js\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.js\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.js\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.js\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"jsx\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes-in-expression\\\"},{\\\"include\\\":\\\"#jsx-tag-in-expression\\\"}]},\\\"jsx-children\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"},{\\\"include\\\":\\\"#jsx-tag\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js\\\"}},\\\"match\\\":\\\"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+)(;)\\\",\\\"name\\\":\\\"constant.character.entity.js\\\"}]},\\\"jsx-evaluated-code\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.js\\\"}},\\\"contentName\\\":\\\"meta.embedded.expression.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"jsx-string-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"}},\\\"name\\\":\\\"string.quoted.double.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-string-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"}},\\\"name\\\":\\\"string.quoted.single.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-tag\\\":{\\\"begin\\\":\\\"(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(/>)|(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.component.js\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"name\\\":\\\"meta.tag.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js\\\"}},\\\"end\\\":\\\"(?=/?>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes\\\"}]},{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js\\\",\\\"end\\\":\\\"(?=</)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]}]},\\\"jsx-tag-attribute-assignment\\\":{\\\"match\\\":\\\"=(?=\\\\\\\\s*(?:[\\\\\\\"'{]|/\\\\\\\\*|//|\\\\\\\\n))\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"jsx-tag-attribute-name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.namespace.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.attribute-name.js\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\\\\\s]|/?>|/\\\\\\\\*|//)\\\"},\\\"jsx-tag-attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s+\\\",\\\"end\\\":\\\"(?=/?>)\\\",\\\"name\\\":\\\"meta.tag.attributes.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-name\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-assignment\\\"},{\\\"include\\\":\\\"#jsx-string-double-quoted\\\"},{\\\"include\\\":\\\"#jsx-string-single-quoted\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes-illegal\\\"}]},\\\"jsx-tag-attributes-illegal\\\":{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.attribute.js\\\"},\\\"jsx-tag-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?!<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\\\\\s+extends\\\\\\\\s+[^=>])|,))(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag\\\"}]},\\\"jsx-tag-without-attributes\\\":{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js\\\",\\\"end\\\":\\\"(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"name\\\":\\\"meta.tag.without-attributes.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]},\\\"jsx-tag-without-attributes-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.js entity.name.function.js\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.js\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.js\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.js\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.js\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.js\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.objectliteral.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.js meta.object-literal.key.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.js meta.object-literal.key.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js meta.object-literal.key.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js punctuation.separator.key-value.js\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js\\\"}},\\\"contentName\\\":\\\"meta.arrow.js meta.return.type.arrow.js\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.js\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.js\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js\\\"}},\\\"name\\\":\\\"string.quoted.double.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js\\\"}},\\\"name\\\":\\\"string.quoted.single.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js\\\"}},\\\"name\\\":\\\"string.regexp.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js\\\"}},\\\"name\\\":\\\"string.regexp.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.js\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.js\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.js\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"switch-statement.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"name\\\":\\\"switch-expression.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.js punctuation.definition.section.case-statement.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.js punctuation.definition.block.js\\\"}},\\\"contentName\\\":\\\"meta.block.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.js punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.js punctuation.definition.section.case-statement.js\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.begin.js\\\"}},\\\"contentName\\\":\\\"string.template.js\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js\\\"}},\\\"name\\\":\\\"meta.template.expression.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.begin.js\\\"}},\\\"contentName\\\":\\\"string.template.js\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js\\\"}},\\\"name\\\":\\\"meta.template.expression.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.js\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.js\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.js\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js\\\"}},\\\"name\\\":\\\"meta.type.parameters.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.js\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.js storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.js keyword.control.new.js\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.js\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.begin.js\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.begin.js\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.js\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.object.type.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.js\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js\\\"}},\\\"name\\\":\\\"meta.type.parameters.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.js\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.js\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.js\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"name\\\":\\\"meta.type.tuple.js\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.js\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.js\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js entity.name.function.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js entity.name.function.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.readwrite.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.js\\\",\\\"aliases\\\":[\\\"js\\\",\\\"cjs\\\",\\\"mjs\\\"]}\"))\n\nexport default [\nlang\n]\n", "import javascript from './javascript.mjs'\nimport css from './css.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"HTML\\\",\\\"injections\\\":{\\\"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#xml-processing\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#doctype\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"include\\\":\\\"#tags-valid\\\"},{\\\"include\\\":\\\"#tags-invalid\\\"},{\\\"include\\\":\\\"#entities\\\"}],\\\"repository\\\":{\\\"attribute\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"style(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.style.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.html\\\"}},\\\"end\\\":\\\"(?<=[^=\\\\\\\\s])(?!\\\\\\\\s*=)|(?=/?>)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=[^/<=>`\\\\\\\\s]|/(?!>))\\\",\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.embedded.line.css\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.css\\\"}},\\\"match\\\":\\\"([^\\\\\\\"'/<=>`\\\\\\\\s]|/(?!>))+\\\",\\\"name\\\":\\\"string.unquoted.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.css\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.css\\\"}},\\\"name\\\":\\\"string.quoted.double.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.css\\\",\\\"end\\\":\\\"(')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.css\\\"}},\\\"name\\\":\\\"string.quoted.single.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]}]},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"invalid.illegal.unexpected-equals-sign.html\\\"}]}]},{\\\"begin\\\":\\\"on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o((?:n|ff)line)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d((?:|meta)data)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.event-handler.$1.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.html\\\"}},\\\"end\\\":\\\"(?<=[^=\\\\\\\\s])(?!\\\\\\\\s*=)|(?=/?>)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=[^/<=>`\\\\\\\\s]|/(?!>))\\\",\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.embedded.line.js\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.js\\\"},\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}]}},\\\"match\\\":\\\"(([^\\\\\\\"'/<=>`\\\\\\\\s]|/(?!>))+)\\\",\\\"name\\\":\\\"string.unquoted.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.js\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.js\\\"}},\\\"name\\\":\\\"string.quoted.double.html\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}]}},\\\"match\\\":\\\"([^\\\\\\\\n\\\\\\\"/]|/(?![*/]))+\\\"},{\\\"begin\\\":\\\"//\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\")|\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\")|\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.js\\\"}},\\\"name\\\":\\\"comment.block.js\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.js\\\",\\\"end\\\":\\\"(')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.js\\\"}},\\\"name\\\":\\\"string.quoted.single.html\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}]}},\\\"match\\\":\\\"([^\\\\\\\\n'/]|/(?![*/]))+\\\"},{\\\"begin\\\":\\\"//\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=')|\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.js\\\"}},\\\"end\\\":\\\"(?=')|\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.js\\\"}},\\\"name\\\":\\\"comment.block.js\\\"}]}]},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"invalid.illegal.unexpected-equals-sign.html\\\"}]}]},{\\\"begin\\\":\\\"(data-[-a-z]+)(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.data-x.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"(align|bgcolor|border)(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"invalid.deprecated.entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"([^\\\\\\\\x00- \\\\\\\"'/<=>\\\\\\\\x7F-\\\\\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\uD83F\uDFFE\uD83F\uDFFF\uD87F\uDFFE\uD87F\uDFFF\uD8BF\uDFFE\uD8BF\uDFFF\\\\\\\\x{4FFFE}\\\\\\\\x{4FFFF}\\\\\\\\x{5FFFE}\\\\\\\\x{5FFFF}\\\\\\\\x{6FFFE}\\\\\\\\x{6FFFF}\\\\\\\\x{7FFFE}\\\\\\\\x{7FFFF}\\\\\\\\x{8FFFE}\\\\\\\\x{8FFFF}\\\\\\\\x{9FFFE}\\\\\\\\x{9FFFF}\\\\\\\\x{AFFFE}\\\\\\\\x{AFFFF}\\\\\\\\x{BFFFE}\\\\\\\\x{BFFFF}\\\\\\\\x{CFFFE}\\\\\\\\x{CFFFF}\\\\\\\\x{DFFFE}\\\\\\\\x{DFFFF}\\\\\\\\x{EFFFE}\\\\\\\\x{EFFFF}\\\\\\\\x{FFFFE}\\\\\\\\x{FFFFF}\\\\\\\\x{10FFFE}\\\\\\\\x{10FFFF}]+)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.unrecognized.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"invalid.illegal.character-not-allowed-here.html\\\"}]},\\\"attribute-interior\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.html\\\"}},\\\"end\\\":\\\"(?<=[^=\\\\\\\\s])(?!\\\\\\\\s*=)|(?=/?>)\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"([^\\\\\\\"'/<=>`\\\\\\\\s]|/(?!>))+\\\",\\\"name\\\":\\\"string.unquoted.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"}},\\\"name\\\":\\\"string.quoted.double.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"}},\\\"name\\\":\\\"string.quoted.single.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"invalid.illegal.unexpected-equals-sign.html\\\"}]}]},\\\"cdata\\\":{\\\"begin\\\":\\\"<!\\\\\\\\[CDATA\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"}},\\\"contentName\\\":\\\"string.other.inline-data.html\\\",\\\"end\\\":\\\"]]>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.cdata.html\\\"},\\\"comment\\\":{\\\"begin\\\":\\\"<!--\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.html\\\"}},\\\"end\\\":\\\"-->\\\",\\\"name\\\":\\\"comment.block.html\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G-?>\\\",\\\"name\\\":\\\"invalid.illegal.characters-not-allowed-here.html\\\"},{\\\"match\\\":\\\"<!-(?:-(?!>)|(?=-->))\\\",\\\"name\\\":\\\"invalid.illegal.characters-not-allowed-here.html\\\"},{\\\"match\\\":\\\"--!>\\\",\\\"name\\\":\\\"invalid.illegal.characters-not-allowed-here.html\\\"}]},\\\"core-minus-invalid\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#xml-processing\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#doctype\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"include\\\":\\\"#tags-valid\\\"},{\\\"include\\\":\\\"#entities\\\"}]},\\\"doctype\\\":{\\\"begin\\\":\\\"<!(?=(?i:DOCTYPE\\\\\\\\s))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.doctype.html\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G(?i:DOCTYPE)\\\",\\\"name\\\":\\\"entity.name.tag.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"name\\\":\\\"string.quoted.double.html\\\"},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}]},\\\"entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"},\\\"912\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"}},\\\"match\\\":\\\"(&)(?=[A-Za-z])((a(s(ymp(eq)?|cr|t)|n(d(slope|[dv]|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a([a-h]))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|[Ee]|acir)?|elig|f(r)?|w((?:con|)int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))|(B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h([DUdu])?|times|H([DUdu])?|d([LRlr])|u([LRlr])|plus|D([LRlr])|v([HLRhlr])?|U([LRlr])|V([HLRhlr])?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1([24])|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))|(c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr([lr])|p(s|c([au]p)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w((?:con|)int)|lubs(uit)?|a(cute|p(s|c([au]p)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly((?:Double|)Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))|(d(s(c([ry])|trok|ol)|har([lr])|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up((?:Down|)Arrow)|VerticalBar|L(ong(RightArrow|Left((?:Right|)Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))|(e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t([ah])|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(D??ot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1([34]))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty((?:|Very)SmallSquare)|acr)))|(f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(l??ig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1([2-68])|78|2([35])|3([458])|45|5([68])))))|F(scr|cy|illed((?:|Very)SmallSquare)|o(uriertrf|pf|rAll)|fr))|(G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im([el])?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(q?less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l([Eaj])?|a(cute|p|mma(d)?)|rave|g(g)?|breve))|(h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok((?:lef|righ)tarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks([ew]arow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))|(i(s(cr|in(s(v)?|dot|[Ev])?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(i??nt)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f([fr])|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))|(j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))|(k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))|(l(s(h|cr|trok|im([eg])?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(d??il)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i([ef])?|Par))?|Har|o(ng(left((?:|right)arrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r((?:d|us)har))|ur((?:ds|u)har)|jcy|par(lt)?|e(s(s(sim|dot|eq(q?gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left((?:|right)arrow)|rightarrow|Left((?:Right|)Arrow))|pf|wer((?:Righ|Lef)tArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))|(M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u((?:lti|)map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))|(n(s(hort(parallel|mid)|c(cue|[er])?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|[Ee])?|b(set(eq(q)?)?|[Ee])?)|par|qsu([bp]e)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v([abc]))?|in(dot|v([abc])|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g([et]))|fr|w(near|ar(hk|r(ow)?)|Arr)|V([Dd]ash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft((?:|right)arrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr([cw])?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft((?:|right)arrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes((?:Slant|)Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi((?:n|ck)Space)|VeryThinSpace))|Jcy|fr|acute))|(o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|[fm])?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly((?:Double|)Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))|(p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d([ou])|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))|(q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))|(R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(d??il)|aron)|Barr|t(hree|imes|ri([ef]|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng([de]|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr)))|(s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma([fv])?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot([be])?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n([Ee])|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|n([Ee])|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar([ef]))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort((?:Right|Down|Up|Left)Arrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))|(t(s(hcy|c([ry])|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead((?:lef|righ)tarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i((?:n|ck)Space)|e(ta|refore))|c(y|edil|aron)|S(H??cy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a([bu])|ripleDot))|(u(scr|h(ar([lr])|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per((?:Righ|Lef)tArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))|(v(s(cr|u(pn([Ee])|bn([Ee])))|nsu([bp])|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))|(w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))|(X(scr|i|opf|fr)|x(s(cr|qcup)|h([Aa]rr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l([Aa]rr)|r([Aa]rr)|map))|(y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))|(z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(n?j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)))(;)\\\",\\\"name\\\":\\\"constant.character.entity.named.$2.html\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"}},\\\"match\\\":\\\"(&)#[0-9]+(;)\\\",\\\"name\\\":\\\"constant.character.entity.numeric.decimal.html\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"}},\\\"match\\\":\\\"(&)#[Xx]\\\\\\\\h+(;)\\\",\\\"name\\\":\\\"constant.character.entity.numeric.hexadecimal.html\\\"},{\\\"match\\\":\\\"&(?=[0-9A-Za-z]+;)\\\",\\\"name\\\":\\\"invalid.illegal.ambiguous-ampersand.html\\\"}]},\\\"math\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(<)(math)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]}],\\\"repository\\\":{\\\"attribute\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u([bp]scriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"([^\\\\\\\\x00- \\\\\\\"'/<=>\\\\\\\\x7F-\\\\\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\uD83F\uDFFE\uD83F\uDFFF\uD87F\uDFFE\uD87F\uDFFF\uD8BF\uDFFE\uD8BF\uDFFF\\\\\\\\x{4FFFE}\\\\\\\\x{4FFFF}\\\\\\\\x{5FFFE}\\\\\\\\x{5FFFF}\\\\\\\\x{6FFFE}\\\\\\\\x{6FFFF}\\\\\\\\x{7FFFE}\\\\\\\\x{7FFFF}\\\\\\\\x{8FFFE}\\\\\\\\x{8FFFF}\\\\\\\\x{9FFFE}\\\\\\\\x{9FFFF}\\\\\\\\x{AFFFE}\\\\\\\\x{AFFFF}\\\\\\\\x{BFFFE}\\\\\\\\x{BFFFF}\\\\\\\\x{CFFFE}\\\\\\\\x{CFFFF}\\\\\\\\x{DFFFE}\\\\\\\\x{DFFFF}\\\\\\\\x{EFFFE}\\\\\\\\x{EFFFF}\\\\\\\\x{FFFFE}\\\\\\\\x{FFFFF}\\\\\\\\x{10FFFE}\\\\\\\\x{10FFFF}]+)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.unrecognized.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"invalid.illegal.character-not-allowed-here.html\\\"}]},\\\"tags\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.math.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.structure.math.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.math.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.math.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.math.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.math.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.inline.math.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.math.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.math.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.inline.math.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.math.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(mglyph)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.object.math.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(mglyph)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.math.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.math.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.object.math.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(([:\\\\\\\\w]+))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.other.invalid.html\\\"},{\\\"begin\\\":\\\"(?i)(<)((\\\\\\\\w[^>\\\\\\\\s]*))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)((\\\\\\\\2))\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.other.invalid.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"include\\\":\\\"#tags-invalid\\\"}]}}},\\\"svg\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(<)(svg)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]}],\\\"repository\\\":{\\\"attribute\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em([hv])|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y([12]|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS((?:cript|tyle)Type)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget([XY])?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At([XYZ]))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-([xy])|adv-y)))|alues)|k([123]|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f([XY]|errerPolicy)|l)|adius|x)?|g([12]|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x([12]|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk((?:Content|)Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"([^\\\\\\\\x00- \\\\\\\"'/<=>\\\\\\\\x7F-\\\\\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\uD83F\uDFFE\uD83F\uDFFF\uD87F\uDFFE\uD87F\uDFFF\uD8BF\uDFFE\uD8BF\uDFFF\\\\\\\\x{4FFFE}\\\\\\\\x{4FFFF}\\\\\\\\x{5FFFE}\\\\\\\\x{5FFFF}\\\\\\\\x{6FFFE}\\\\\\\\x{6FFFF}\\\\\\\\x{7FFFE}\\\\\\\\x{7FFFF}\\\\\\\\x{8FFFE}\\\\\\\\x{8FFFF}\\\\\\\\x{9FFFE}\\\\\\\\x{9FFFF}\\\\\\\\x{AFFFE}\\\\\\\\x{AFFFF}\\\\\\\\x{BFFFE}\\\\\\\\x{BFFFF}\\\\\\\\x{CFFFE}\\\\\\\\x{CFFFF}\\\\\\\\x{DFFFE}\\\\\\\\x{DFFFF}\\\\\\\\x{EFFFE}\\\\\\\\x{EFFFF}\\\\\\\\x{FFFFE}\\\\\\\\x{FFFFF}\\\\\\\\x{10FFFE}\\\\\\\\x{10FFFF}]+)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.unrecognized.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"invalid.illegal.character-not-allowed-here.html\\\"}]},\\\"tags\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.metadata.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.metadata.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.structure.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.inline.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.inline.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.object.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.object.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.other.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)((\\\\\\\\2))\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.other.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(([:\\\\\\\\w]+))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.other.invalid.html\\\"},{\\\"begin\\\":\\\"(?i)(<)((\\\\\\\\w[^>\\\\\\\\s]*))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)((\\\\\\\\2))\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.other.invalid.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"include\\\":\\\"#tags-invalid\\\"}]}}},\\\"tags-invalid\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(</?)((\\\\\\\\w[^>\\\\\\\\s]*))(?<!/)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"}},\\\"end\\\":\\\"((?: ?/)?>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.$2.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]}]},\\\"tags-valid\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=<(?i:style)\\\\\\\\b(?!-))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.leading.html\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)([\\\\\\\\t ]*$\\\\\\\\n?)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.trailing.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(<)(style)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.style.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"(?i)((<)/)(style)\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.style.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"source.css-ignored-vscode\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.embedded.block.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"name\\\":\\\"meta.tag.metadata.style.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?!\\\\\\\\G)\\\",\\\"end\\\":\\\"(?=</(?i:style))\\\",\\\"name\\\":\\\"source.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css\\\"}]}]}]},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=<(?i:script)\\\\\\\\b(?!-))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.leading.html\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)([\\\\\\\\t ]*$\\\\\\\\n?)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.trailing.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)((?i:script))\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"(/)((?i:script))(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.embedded.block.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"((<))(?=/(?i:script))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"source.js-ignored-vscode\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?=</(?i:script))\\\",\\\"name\\\":\\\"source.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"//\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=</script)|\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"}]},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*/|(?=</script)\\\",\\\"name\\\":\\\"comment.block.js\\\"},{\\\"include\\\":\\\"source.js\\\"}]}]},{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?i:(?=>|type(?=[=\\\\\\\\s])(?!\\\\\\\\s*=\\\\\\\\s*(''|\\\\\\\"\\\\\\\"|([\\\\\\\"']?)(text/(javascript(1\\\\\\\\.[0-5])?|x-javascript|jscript|livescript|(x-)?ecmascript|babel)|application/((?:(x-)?jav|(x-)?ecm)ascript)|module)[\\\\\\\"'>\\\\\\\\s]))))\\\",\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i:(?=type\\\\\\\\s*=\\\\\\\\s*([\\\\\\\"']?)text/(x-handlebars|(x-(handlebars-)?|ng-)?template|html)[\\\\\\\"'>\\\\\\\\s]))\\\",\\\"end\\\":\\\"((<))(?=/(?i:script))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"text.html.basic\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?!\\\\\\\\G)\\\",\\\"end\\\":\\\"(?=</(?i:script))\\\",\\\"name\\\":\\\"text.html.basic\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.basic\\\"}]}]},{\\\"begin\\\":\\\"(?=(?i:type))\\\",\\\"end\\\":\\\"(<)(?=/(?i:script))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?!\\\\\\\\G)\\\",\\\"end\\\":\\\"(?=</(?i:script))\\\",\\\"name\\\":\\\"source.unknown\\\"}]}]}]}]},{\\\"begin\\\":\\\"(?i)(<)(base|link|meta)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(noscript|title)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(noscript|title)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(col|hr|input)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(area|br|wbr)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(embed|img|param|source|track)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((basefont|isindex))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((center|frameset|noembed|noframes))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((center|frameset|noembed|noframes))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((frame))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((applet))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((applet))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.no-longer-supported.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.no-longer-supported.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#math\\\"},{\\\"include\\\":\\\"#svg\\\"},{\\\"begin\\\":\\\"(<)([A-Za-z][.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.custom.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(</)([A-Za-z][.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.custom.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]}]},\\\"xml-processing\\\":{\\\"begin\\\":\\\"(<\\\\\\\\?)(xml)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"(\\\\\\\\?>)\\\",\\\"name\\\":\\\"meta.tag.metadata.processing.xml.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]}},\\\"scopeName\\\":\\\"text.html.basic\\\",\\\"embeddedLangs\\\":[\\\"javascript\\\",\\\"css\\\"]}\"))\n\nexport default [\n...javascript,\n...css,\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JSON\\\",\\\"name\\\":\\\"json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"}],\\\"repository\\\":{\\\"array\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.begin.json\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.end.json\\\"}},\\\"name\\\":\\\"meta.structure.array.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.array.json\\\"},{\\\"match\\\":\\\"[^]\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-array-separator.json\\\"}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.documentation.json\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.json\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json\\\"}},\\\"match\\\":\\\"(//).*$\\\\\\\\n?\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"}]},\\\"constant\\\":{\\\"match\\\":\\\"\\\\\\\\b(?:true|false|null)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.json\\\"},\\\"number\\\":{\\\"match\\\":\\\"-?(?:0|[1-9]\\\\\\\\d*)(?:(?:\\\\\\\\.\\\\\\\\d+)?(?:[Ee][-+]?\\\\\\\\d+)?)?\\\",\\\"name\\\":\\\"constant.numeric.json\\\"},\\\"object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dictionary.begin.json\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dictionary.end.json\\\"}},\\\"name\\\":\\\"meta.structure.dictionary.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#objectkey\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.dictionary.key-value.json\\\"}},\\\"end\\\":\\\"(,)|(?=})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.dictionary.pair.json\\\"}},\\\"name\\\":\\\"meta.structure.dictionary.value.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"},{\\\"match\\\":\\\"[^,\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-dictionary-separator.json\\\"}]},{\\\"match\\\":\\\"[^}\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-dictionary-separator.json\\\"}]},\\\"objectkey\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.support.type.property-name.begin.json\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.support.type.property-name.end.json\\\"}},\\\"name\\\":\\\"string.json support.type.property-name.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#stringcontent\\\"}]},\\\"string\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.json\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.json\\\"}},\\\"name\\\":\\\"string.quoted.double.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#stringcontent\\\"}]},\\\"stringcontent\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[\\\\\\\"/\\\\\\\\\\\\\\\\bfnrt]|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.escape.json\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"invalid.illegal.unrecognized-string-escape.json\\\"}]},\\\"value\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#constant\\\"},{\\\"include\\\":\\\"#number\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array\\\"},{\\\"include\\\":\\\"#object\\\"},{\\\"include\\\":\\\"#comments\\\"}]}},\\\"scopeName\\\":\\\"source.json\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JSX\\\",\\\"name\\\":\\\"jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"name\\\":\\\"meta.array.literal.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.js.jsx\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js.jsx\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.js.jsx\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.js.jsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"name\\\":\\\"comment.block.documentation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"name\\\":\\\"comment.block.js.jsx\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js.jsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js.jsx\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.js.jsx\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.js.jsx\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.block.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.js.jsx\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js.jsx\\\"}},\\\"name\\\":\\\"meta.tag.js.jsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.js.jsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.js.jsx\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js.jsx\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js.jsx\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.js.jsx\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.js.jsx\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.js.jsx\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.js.jsx\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.js.jsx\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.js.jsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.js.jsx\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.js.jsx entity.name.function.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.js.jsx variable.object.property.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.js.jsx\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.js.jsx entity.name.function.js.jsx\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.js.jsx entity.name.function.js.jsx\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.js.jsx entity.name.function.js.jsx\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.parameters.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js.jsx\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.js.jsx\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js.jsx\\\"}},\\\"name\\\":\\\"string.regexp.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.js.jsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"name\\\":\\\"meta.import-equals.external.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.js.jsx\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.block.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.js.jsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.js.jsx\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.js.jsx\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.js.jsx\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.js.jsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"jsx\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes-in-expression\\\"},{\\\"include\\\":\\\"#jsx-tag-in-expression\\\"}]},\\\"jsx-children\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"},{\\\"include\\\":\\\"#jsx-tag\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js.jsx\\\"}},\\\"match\\\":\\\"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+)(;)\\\",\\\"name\\\":\\\"constant.character.entity.js.jsx\\\"}]},\\\"jsx-evaluated-code\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.expression.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"jsx-string-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.double.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-string-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.single.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-tag\\\":{\\\"begin\\\":\\\"(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(/>)|(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.tag.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"}},\\\"end\\\":\\\"(?=/?>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes\\\"}]},{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js.jsx\\\",\\\"end\\\":\\\"(?=</)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]}]},\\\"jsx-tag-attribute-assignment\\\":{\\\"match\\\":\\\"=(?=\\\\\\\\s*(?:[\\\\\\\"'{]|/\\\\\\\\*|//|\\\\\\\\n))\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"jsx-tag-attribute-name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.namespace.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.attribute-name.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\\\\\s]|/?>|/\\\\\\\\*|//)\\\"},\\\"jsx-tag-attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s+\\\",\\\"end\\\":\\\"(?=/?>)\\\",\\\"name\\\":\\\"meta.tag.attributes.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-name\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-assignment\\\"},{\\\"include\\\":\\\"#jsx-string-double-quoted\\\"},{\\\"include\\\":\\\"#jsx-string-single-quoted\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes-illegal\\\"}]},\\\"jsx-tag-attributes-illegal\\\":{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.attribute.js.jsx\\\"},\\\"jsx-tag-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?!<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\\\\\s+extends\\\\\\\\s+[^=>])|,))(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag\\\"}]},\\\"jsx-tag-without-attributes\\\":{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js.jsx\\\",\\\"end\\\":\\\"(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.tag.without-attributes.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]},\\\"jsx-tag-without-attributes-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.js.jsx entity.name.function.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.js.jsx\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.js.jsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js.jsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.js.jsx\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.js.jsx\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx meta.object-literal.key.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx meta.object-literal.key.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx meta.object-literal.key.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js.jsx\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js.jsx\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.arrow.js.jsx meta.return.type.arrow.js.jsx\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.js.jsx\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.double.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.single.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js.jsx\\\"}},\\\"name\\\":\\\"string.regexp.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js.jsx\\\"}},\\\"name\\\":\\\"string.regexp.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.js.jsx\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js.jsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js.jsx\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.js.jsx\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.js.jsx\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js.jsx\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"switch-statement.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"name\\\":\\\"switch-expression.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js.jsx\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.js.jsx punctuation.definition.block.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.block.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.js.jsx punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"string.template.js.jsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.template.expression.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"string.template.js.jsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.template.expression.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.js.jsx\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.js.jsx\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.js.jsx storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.js.jsx keyword.control.new.js.jsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js.jsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js.jsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.js.jsx\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.js.jsx\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.object.type.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.js.jsx\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js.jsx\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.js.jsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js.jsx\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.js.jsx\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.js.jsx\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.tuple.js.jsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.js.jsx\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.js.jsx\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx entity.name.function.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.js.jsx\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Markdown\\\",\\\"name\\\":\\\"markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#frontMatter\\\"},{\\\"include\\\":\\\"#block\\\"}],\\\"repository\\\":{\\\"ampersand\\\":{\\\"match\\\":\\\"&(?!([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+);)\\\",\\\"name\\\":\\\"meta.other.valid-ampersand.markdown\\\"},\\\"block\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#separator\\\"},{\\\"include\\\":\\\"#heading\\\"},{\\\"include\\\":\\\"#blockquote\\\"},{\\\"include\\\":\\\"#lists\\\"},{\\\"include\\\":\\\"#fenced_code_block\\\"},{\\\"include\\\":\\\"#raw_block\\\"},{\\\"include\\\":\\\"#link-def\\\"},{\\\"include\\\":\\\"#html\\\"},{\\\"include\\\":\\\"#table\\\"},{\\\"include\\\":\\\"#paragraph\\\"}]},\\\"blockquote\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G) {0,3}(>) ?\\\",\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.quote.begin.markdown\\\"}},\\\"name\\\":\\\"markup.quote.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)\\\\\\\\s*(>) ?\\\"},\\\"bold\\\":{\\\"begin\\\":\\\"(?<open>(\\\\\\\\*\\\\\\\\*(?=\\\\\\\\w)|(?<!\\\\\\\\w)\\\\\\\\*\\\\\\\\*|(?<!\\\\\\\\w)\\\\\\\\b__))(?=\\\\\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\\\\\k<raw>(?!`))`)*+\\\\\\\\k<raw>|\\\\\\\\\\\\\\\\[-\\\\\\\\]!#(-+.>\\\\\\\\[\\\\\\\\\\\\\\\\_`{}]?+|\\\\\\\\[((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+](( ?\\\\\\\\[[^]]*+])|(\\\\\\\\([\\\\\\\\t ]*+<?(.*?)>?[\\\\\\\\t ]*+((?<title>[\\\\\\\"'])(.*?)\\\\\\\\k<title>)?\\\\\\\\))))|(?!(?<=\\\\\\\\S)\\\\\\\\k<open>).)++(?<=\\\\\\\\S)(?=__\\\\\\\\b|\\\\\\\\*\\\\\\\\*)\\\\\\\\k<open>)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bold.markdown\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(\\\\\\\\1)\\\",\\\"name\\\":\\\"markup.bold.markdown\\\",\\\"patterns\\\":[{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"(?=<[^>]*?>)\\\",\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"},{\\\"include\\\":\\\"#strikethrough\\\"}]},\\\"bracket\\\":{\\\"match\\\":\\\"<(?![!$/?A-Za-z])\\\",\\\"name\\\":\\\"meta.other.valid-bracket.markdown\\\"},\\\"escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[-\\\\\\\\]!#(-+.>\\\\\\\\[\\\\\\\\\\\\\\\\_`{}]\\\",\\\"name\\\":\\\"constant.character.escape.markdown\\\"},\\\"fenced_code_block\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#fenced_code_block_css\\\"},{\\\"include\\\":\\\"#fenced_code_block_basic\\\"},{\\\"include\\\":\\\"#fenced_code_block_ini\\\"},{\\\"include\\\":\\\"#fenced_code_block_java\\\"},{\\\"include\\\":\\\"#fenced_code_block_lua\\\"},{\\\"include\\\":\\\"#fenced_code_block_makefile\\\"},{\\\"include\\\":\\\"#fenced_code_block_perl\\\"},{\\\"include\\\":\\\"#fenced_code_block_r\\\"},{\\\"include\\\":\\\"#fenced_code_block_ruby\\\"},{\\\"include\\\":\\\"#fenced_code_block_php\\\"},{\\\"include\\\":\\\"#fenced_code_block_sql\\\"},{\\\"include\\\":\\\"#fenced_code_block_vs_net\\\"},{\\\"include\\\":\\\"#fenced_code_block_xml\\\"},{\\\"include\\\":\\\"#fenced_code_block_xsl\\\"},{\\\"include\\\":\\\"#fenced_code_block_yaml\\\"},{\\\"include\\\":\\\"#fenced_code_block_dosbatch\\\"},{\\\"include\\\":\\\"#fenced_code_block_clojure\\\"},{\\\"include\\\":\\\"#fenced_code_block_coffee\\\"},{\\\"include\\\":\\\"#fenced_code_block_c\\\"},{\\\"include\\\":\\\"#fenced_code_block_cpp\\\"},{\\\"include\\\":\\\"#fenced_code_block_diff\\\"},{\\\"include\\\":\\\"#fenced_code_block_dockerfile\\\"},{\\\"include\\\":\\\"#fenced_code_block_git_commit\\\"},{\\\"include\\\":\\\"#fenced_code_block_git_rebase\\\"},{\\\"include\\\":\\\"#fenced_code_block_go\\\"},{\\\"include\\\":\\\"#fenced_code_block_groovy\\\"},{\\\"include\\\":\\\"#fenced_code_block_pug\\\"},{\\\"include\\\":\\\"#fenced_code_block_ignore\\\"},{\\\"include\\\":\\\"#fenced_code_block_js\\\"},{\\\"include\\\":\\\"#fenced_code_block_js_regexp\\\"},{\\\"include\\\":\\\"#fenced_code_block_json\\\"},{\\\"include\\\":\\\"#fenced_code_block_jsonc\\\"},{\\\"include\\\":\\\"#fenced_code_block_jsonl\\\"},{\\\"include\\\":\\\"#fenced_code_block_less\\\"},{\\\"include\\\":\\\"#fenced_code_block_objc\\\"},{\\\"include\\\":\\\"#fenced_code_block_swift\\\"},{\\\"include\\\":\\\"#fenced_code_block_scss\\\"},{\\\"include\\\":\\\"#fenced_code_block_perl6\\\"},{\\\"include\\\":\\\"#fenced_code_block_powershell\\\"},{\\\"include\\\":\\\"#fenced_code_block_python\\\"},{\\\"include\\\":\\\"#fenced_code_block_julia\\\"},{\\\"include\\\":\\\"#fenced_code_block_regexp_python\\\"},{\\\"include\\\":\\\"#fenced_code_block_rust\\\"},{\\\"include\\\":\\\"#fenced_code_block_scala\\\"},{\\\"include\\\":\\\"#fenced_code_block_shell\\\"},{\\\"include\\\":\\\"#fenced_code_block_ts\\\"},{\\\"include\\\":\\\"#fenced_code_block_tsx\\\"},{\\\"include\\\":\\\"#fenced_code_block_csharp\\\"},{\\\"include\\\":\\\"#fenced_code_block_fsharp\\\"},{\\\"include\\\":\\\"#fenced_code_block_dart\\\"},{\\\"include\\\":\\\"#fenced_code_block_handlebars\\\"},{\\\"include\\\":\\\"#fenced_code_block_markdown\\\"},{\\\"include\\\":\\\"#fenced_code_block_log\\\"},{\\\"include\\\":\\\"#fenced_code_block_erlang\\\"},{\\\"include\\\":\\\"#fenced_code_block_elixir\\\"},{\\\"include\\\":\\\"#fenced_code_block_latex\\\"},{\\\"include\\\":\\\"#fenced_code_block_bibtex\\\"},{\\\"include\\\":\\\"#fenced_code_block_twig\\\"},{\\\"include\\\":\\\"#fenced_code_block_yang\\\"},{\\\"include\\\":\\\"#fenced_code_block_abap\\\"},{\\\"include\\\":\\\"#fenced_code_block_restructuredtext\\\"},{\\\"include\\\":\\\"#fenced_code_block_unknown\\\"}]},\\\"fenced_code_block_abap\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(abap)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.abap\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.abap\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_basic\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(html?|shtml|xhtml|inc|tmpl|tpl)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.basic\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_bibtex\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(bibtex)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.bibtex\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.bibtex\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_c\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:([ch])((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.c\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.c\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_clojure\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(cl(?:js??|ojure))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.clojure\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.clojure\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_coffee\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.coffee\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.coffee\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_cpp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(c(?:pp|\\\\\\\\+\\\\\\\\+|xx))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.cpp source.cpp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.cpp\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_csharp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(c(?:s|sharp|#))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.csharp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.cs\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_css\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(css(?:|.erb))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_dart\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(dart)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.dart\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.dart\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_diff\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(patch|diff|rej)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.diff\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.diff\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_dockerfile\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:([Dd]ockerfile)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.dockerfile\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.dockerfile\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_dosbatch\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(bat(?:|ch))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.dosbatch\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.batchfile\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_elixir\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(elixir)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.elixir\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.elixir\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_erlang\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(erlang)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.erlang\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.erlang\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_fsharp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(f(?:s|sharp|#))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.fsharp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.fsharp\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_git_commit\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:COMMIT_EDIT|MERGE_)MSG)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.git_commit\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.git-commit\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_git_rebase\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(git-rebase-todo)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.git_rebase\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.git-rebase\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_go\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(go(?:|lang))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.go\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_groovy\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(g(?:roovy|vy))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.groovy\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.groovy\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_handlebars\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(h(?:andlebars|bs))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.handlebars\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.handlebars\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ignore\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:git|)ignore)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.ignore\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ignore\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ini\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(ini|conf)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.ini\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ini\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_java\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(java|bsh)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.java\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.java\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_js\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jsx??|javascript|es6|mjs|cjs|dataviewjs|\\\\\\\\{\\\\\\\\.js.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.javascript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_js_regexp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(regexp)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.js_regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.js.regexp\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_json\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(json5??|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.json\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_jsonc\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jsonc)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.jsonc\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.json.comments\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_jsonl\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jsonl(?:|ines))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.jsonl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.json.lines\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_julia\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(julia|\\\\\\\\{\\\\\\\\.julia.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.julia\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.julia\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_latex\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:la|)tex)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.latex\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.tex.latex\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_less\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(less)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.less\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css.less\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_log\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(log)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.log\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.log\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_lua\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(lua)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.lua\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.lua\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_makefile\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:[Mm]|GNUm|OCamlM)akefile)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.makefile\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.makefile\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_markdown\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(m(?:arkdown|d))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.markdown\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_objc\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|[hm])((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.objc\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.objc\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_perl\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.perl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.perl\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_perl6\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.perl6\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.perl.6\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_php\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(php3??|php4|php5|phpt|phtml|aw|ctp)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.php\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.basic\\\"},{\\\"include\\\":\\\"source.php\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_powershell\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(p(?:owershell|s1|sm1|sd1|wsh))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.powershell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.powershell\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_pug\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jade|pug)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.pug\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.pug\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_python\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(python|py3??|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gypi??|\\\\\\\\{\\\\\\\\.python.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.python\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_r\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:([RSrs]|Rprofile|\\\\\\\\{\\\\\\\\.r.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.r\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.r\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_regexp_python\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(re)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.regexp_python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.regexp.python\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_restructuredtext\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(r(?:estructuredtext|st))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.restructuredtext\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.rst\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ruby\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(ruby|rbx??|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.ruby\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ruby\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_rust\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(rust|rs|\\\\\\\\{\\\\\\\\.rust.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.rust\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.rust\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_scala\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(s(?:cala|bt))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.scala\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.scala\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_scss\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(scss)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.scss\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css.scss\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_shell\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\\\\\{\\\\\\\\.bash.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.shellscript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.shell\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_sql\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(sql|ddl|dml)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.sql\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_swift\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(swift)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.swift\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.swift\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ts\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(t(?:ypescript|s))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.typescript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_tsx\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(tsx)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.typescriptreact\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.tsx\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_twig\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(twig)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.twig\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.twig\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_unknown\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?=([^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\"},\\\"fenced_code_block_vs_net\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(vb)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.vs_net\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.asp.vb.net\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_xml\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.xml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.xml\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_xsl\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(xslt??)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.xsl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.xml.xsl\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_yaml\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(ya?ml)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.yaml\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_yang\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(yang)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.yang\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.yang\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"frontMatter\\\":{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"\\\\\\\\A(?=(-{3,}))\\\",\\\"end\\\":\\\"^(?: {0,3}\\\\\\\\1-*[\\\\\\\\t ]*|[\\\\\\\\t ]*\\\\\\\\.{3})$\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.frontmatter\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\A(-{3,})(.*)$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.begin.frontmatter\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.frontmatter\\\"}},\\\"contentName\\\":\\\"meta.embedded.block.frontmatter\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.yaml\\\"}],\\\"while\\\":\\\"^(?!(?: {0,3}\\\\\\\\1-*[\\\\\\\\t ]*|[\\\\\\\\t ]*\\\\\\\\.{3})$)\\\"}]},\\\"heading\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{6})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.6.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{5})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.5.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{4})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.4.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{3})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.3.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{2})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.2.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{1})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.1.markdown\\\"}]}},\\\"match\\\":\\\"(?:^|\\\\\\\\G) {0,3}(#{1,6}\\\\\\\\s+(.*?)(\\\\\\\\s+#{1,6})?\\\\\\\\s*)$\\\",\\\"name\\\":\\\"markup.heading.markdown\\\"},\\\"heading-setext\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"^(={3,})(?=[\\\\\\\\t ]*$\\\\\\\\n?)\\\",\\\"name\\\":\\\"markup.heading.setext.1.markdown\\\"},{\\\"match\\\":\\\"^(-{3,})(?=[\\\\\\\\t ]*$\\\\\\\\n?)\\\",\\\"name\\\":\\\"markup.heading.setext.2.markdown\\\"}]},\\\"html\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)\\\\\\\\s*(<!--)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.comment.html\\\"}},\\\"end\\\":\\\"(-->)\\\",\\\"name\\\":\\\"comment.block.html\\\"},{\\\"begin\\\":\\\"(?i)(^|\\\\\\\\G)\\\\\\\\s*(?=<(script|style|pre)(\\\\\\\\s|$|>)(?!.*?</(script|style|pre)>))\\\",\\\"end\\\":\\\"(?i)(.*)((</)(script|style|pre)(>))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"meta.tag.structure.$4.end.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"(\\\\\\\\s*|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}],\\\"while\\\":\\\"(?i)^(?!.*</(script|style|pre)>)\\\"}]},{\\\"begin\\\":\\\"(?i)(^|\\\\\\\\G)\\\\\\\\s*(?=</?[A-Za-z]+[^\\\\\\\\&/;gt\\\\\\\\s]*(\\\\\\\\s|$|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}],\\\"while\\\":\\\"^(?!\\\\\\\\s*$)\\\"},{\\\"begin\\\":\\\"(^|\\\\\\\\G)\\\\\\\\s*(?=(<(?:[-0-9A-Za-z](/?>|\\\\\\\\s.*?>)|/[-0-9A-Za-z]>))\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}],\\\"while\\\":\\\"^(?!\\\\\\\\s*$)\\\"}]},\\\"image-inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.description.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"8\\\":{\\\"name\\\":\\\"markup.underline.link.image.markdown\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"10\\\":{\\\"name\\\":\\\"markup.underline.link.image.markdown\\\"},\\\"12\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"13\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"14\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"16\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"17\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"18\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"19\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"20\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"21\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"}},\\\"match\\\":\\\"(!\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(])(\\\\\\\\()[\\\\\\\\t ]*((<)((?:\\\\\\\\\\\\\\\\[<>]|[^\\\\\\\\n<>])*)(>)|((?<url>(?>[^()\\\\\\\\s]+)|\\\\\\\\(\\\\\\\\g<url>*\\\\\\\\))*))[\\\\\\\\t ]*(?:((\\\\\\\\().+?(\\\\\\\\)))|((\\\\\\\").+?(\\\\\\\"))|((').+?(')))?\\\\\\\\s*(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.image.inline.markdown\\\"},\\\"image-ref\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.description.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.other.reference.link.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"}},\\\"match\\\":\\\"(!\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(]) ?(\\\\\\\\[)(.*?)(])\\\",\\\"name\\\":\\\"meta.image.reference.markdown\\\"},\\\"inline\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#strikethrough\\\"},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"}]},\\\"italic\\\":{\\\"begin\\\":\\\"(?<open>(\\\\\\\\*(?=\\\\\\\\w)|(?<!\\\\\\\\w)\\\\\\\\*|(?<!\\\\\\\\w)\\\\\\\\b_))(?=\\\\\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\\\\\k<raw>(?!`))`)*+\\\\\\\\k<raw>|\\\\\\\\\\\\\\\\[-\\\\\\\\]!#(-+.>\\\\\\\\[\\\\\\\\\\\\\\\\_`{}]?+|\\\\\\\\[((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+](( ?\\\\\\\\[[^]]*+])|(\\\\\\\\([\\\\\\\\t ]*+<?(.*?)>?[\\\\\\\\t ]*+((?<title>[\\\\\\\"'])(.*?)\\\\\\\\k<title>)?\\\\\\\\))))|\\\\\\\\k<open>\\\\\\\\k<open>|(?!(?<=\\\\\\\\S)\\\\\\\\k<open>).)++(?<=\\\\\\\\S)(?=_\\\\\\\\b|\\\\\\\\*)\\\\\\\\k<open>)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.italic.markdown\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(\\\\\\\\1)((?!\\\\\\\\1)|(?=\\\\\\\\1\\\\\\\\1))\\\",\\\"name\\\":\\\"markup.italic.markdown\\\",\\\"patterns\\\":[{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"(?=<[^>]*?>)\\\",\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"},{\\\"include\\\":\\\"#strikethrough\\\"}]},\\\"link-def\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.other.reference.link.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"8\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"9\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"10\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"11\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"12\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"13\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"14\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"16\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"17\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(\\\\\\\\[)([^]]+?)(])(:)[\\\\\\\\t ]*(?:(<)((?:\\\\\\\\\\\\\\\\[<>]|[^\\\\\\\\n<>])*)(>)|(\\\\\\\\S+?))[\\\\\\\\t ]*(?:((\\\\\\\\().+?(\\\\\\\\)))|((\\\\\\\").+?(\\\\\\\"))|((').+?(')))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"meta.link.reference.def.markdown\\\"},\\\"link-email\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"}},\\\"match\\\":\\\"(<)((?:mailto:)?[!#-'*+\\\\\\\\--9=?A-Z^-~]+@[-0-9A-Za-z]+(?:\\\\\\\\.[-0-9A-Za-z]+)*)(>)\\\",\\\"name\\\":\\\"meta.link.email.lt-gt.markdown\\\"},\\\"link-inet\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"}},\\\"match\\\":\\\"(<)((?:https?|ftp)://.*?)(>)\\\",\\\"name\\\":\\\"meta.link.inet.markdown\\\"},\\\"link-inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#strikethrough\\\"},{\\\"include\\\":\\\"#image-inline\\\"}]},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"8\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"10\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"12\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"13\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"14\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"16\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"17\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"18\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"19\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"20\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"21\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(])(\\\\\\\\()[\\\\\\\\t ]*((<)((?:\\\\\\\\\\\\\\\\[<>]|[^\\\\\\\\n<>])*)(>)|((?<url>(?>[^()\\\\\\\\s]+)|\\\\\\\\(\\\\\\\\g<url>*\\\\\\\\))*))[\\\\\\\\t ]*(?:((\\\\\\\\()[^()]*(\\\\\\\\)))|((\\\\\\\")[^\\\\\\\"]*(\\\\\\\"))|((')[^']*(')))?\\\\\\\\s*(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.link.inline.markdown\\\"},\\\"link-ref\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#strikethrough\\\"},{\\\"include\\\":\\\"#image-inline\\\"}]},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.constant.begin.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.other.reference.link.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.constant.end.markdown\\\"}},\\\"match\\\":\\\"(?<![]\\\\\\\\\\\\\\\\])(\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(])(\\\\\\\\[)([^]]*+)(])\\\",\\\"name\\\":\\\"meta.link.reference.markdown\\\"},\\\"link-ref-literal\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.constant.begin.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.constant.end.markdown\\\"}},\\\"match\\\":\\\"(?<![]\\\\\\\\\\\\\\\\])(\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(]) ?(\\\\\\\\[)(])\\\",\\\"name\\\":\\\"meta.link.reference.literal.markdown\\\"},\\\"link-ref-shortcut\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"}},\\\"match\\\":\\\"(?<![]\\\\\\\\\\\\\\\\])(\\\\\\\\[)((?:[^]\\\\\\\\[\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\[]\\\\\\\\[])+?)((?<!\\\\\\\\\\\\\\\\)])\\\",\\\"name\\\":\\\"meta.link.reference.markdown\\\"},\\\"list_paragraph\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(?=\\\\\\\\S)(?![*->]\\\\\\\\s|[0-9]+\\\\\\\\.\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.paragraph.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"},{\\\"include\\\":\\\"#heading-setext\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*$|#| {0,3}([-*>_] {2,}){3,}[\\\\\\\\t ]*$\\\\\\\\n?| {0,3}[*->]| {0,3}[0-9]+\\\\\\\\.)\\\"},\\\"lists\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)( {0,3})([-*+])([\\\\\\\\t ])\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.list.begin.markdown\\\"}},\\\"name\\\":\\\"markup.list.unnumbered.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block\\\"},{\\\"include\\\":\\\"#list_paragraph\\\"}],\\\"while\\\":\\\"((^|\\\\\\\\G)( {2,4}|\\\\\\\\t))|^([\\\\\\\\t ]*)$\\\"},{\\\"begin\\\":\\\"(^|\\\\\\\\G)( {0,3})([0-9]+[).])([\\\\\\\\t ])\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.list.begin.markdown\\\"}},\\\"name\\\":\\\"markup.list.numbered.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block\\\"},{\\\"include\\\":\\\"#list_paragraph\\\"}],\\\"while\\\":\\\"((^|\\\\\\\\G)( {2,4}|\\\\\\\\t))|^([\\\\\\\\t ]*)$\\\"}]},\\\"paragraph\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G) {0,3}(?=[^\\\\\\\\t\\\\\\\\n ])\\\",\\\"name\\\":\\\"meta.paragraph.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"},{\\\"include\\\":\\\"#heading-setext\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)((?=\\\\\\\\s*[-=]{3,}\\\\\\\\s*$)| {4,}(?=[^\\\\\\\\t\\\\\\\\n ]))\\\"},\\\"raw\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.raw.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.raw.markdown\\\"}},\\\"match\\\":\\\"(`+)((?:[^`]|(?!(?<!`)\\\\\\\\1(?!`))`)*+)(\\\\\\\\1)\\\",\\\"name\\\":\\\"markup.inline.raw.string.markdown\\\"},\\\"raw_block\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)( {4}|\\\\\\\\t)\\\",\\\"name\\\":\\\"markup.raw.block.markdown\\\",\\\"while\\\":\\\"(^|\\\\\\\\G)( {4}|\\\\\\\\t)\\\"},\\\"separator\\\":{\\\"match\\\":\\\"(^|\\\\\\\\G) {0,3}([-*_])( {0,2}\\\\\\\\2){2,}[\\\\\\\\t ]*$\\\\\\\\n?\\\",\\\"name\\\":\\\"meta.separator.markdown\\\"},\\\"strikethrough\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.strikethrough.markdown\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"(?=<[^>]*?>)\\\",\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.strikethrough.markdown\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\\\\\\\\\)(~{2,})(?!(?<=\\\\\\\\w~~)_)((?:[^~]|(?!(?<![\\\\\\\\\\\\\\\\~])\\\\\\\\1(?!~))~)*+)(\\\\\\\\1)(?!(?<=_\\\\\\\\1)\\\\\\\\w)\\\",\\\"name\\\":\\\"markup.strikethrough.markdown\\\"},\\\"table\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\|)(?=[^|].+\\\\\\\\|\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.table.markdown\\\"}},\\\"name\\\":\\\"markup.table.markdown\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"punctuation.definition.table.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.table.markdown\\\"}},\\\"match\\\":\\\"(?<=\\\\\\\\|)\\\\\\\\s*(:?-+:?)\\\\\\\\s*(?=\\\\\\\\|)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\|)\\\\\\\\s*(?=\\\\\\\\S)((\\\\\\\\\\\\\\\\\\\\\\\\||[^|])+)(?<=\\\\\\\\S)\\\\\\\\s*(?=\\\\\\\\|)\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?=\\\\\\\\|)\\\"}},\\\"scopeName\\\":\\\"text.html.markdown\\\",\\\"embeddedLangs\\\":[],\\\"aliases\\\":[\\\"md\\\"],\\\"embeddedLangsLazy\\\":[\\\"css\\\",\\\"html\\\",\\\"ini\\\",\\\"java\\\",\\\"lua\\\",\\\"make\\\",\\\"perl\\\",\\\"r\\\",\\\"ruby\\\",\\\"php\\\",\\\"sql\\\",\\\"vb\\\",\\\"xml\\\",\\\"xsl\\\",\\\"yaml\\\",\\\"bat\\\",\\\"clojure\\\",\\\"coffee\\\",\\\"c\\\",\\\"cpp\\\",\\\"diff\\\",\\\"docker\\\",\\\"git-commit\\\",\\\"git-rebase\\\",\\\"go\\\",\\\"groovy\\\",\\\"pug\\\",\\\"javascript\\\",\\\"json\\\",\\\"jsonc\\\",\\\"jsonl\\\",\\\"less\\\",\\\"objective-c\\\",\\\"swift\\\",\\\"scss\\\",\\\"raku\\\",\\\"powershell\\\",\\\"python\\\",\\\"julia\\\",\\\"regexp\\\",\\\"rust\\\",\\\"scala\\\",\\\"shellscript\\\",\\\"typescript\\\",\\\"tsx\\\",\\\"csharp\\\",\\\"fsharp\\\",\\\"dart\\\",\\\"handlebars\\\",\\\"log\\\",\\\"erlang\\\",\\\"elixir\\\",\\\"latex\\\",\\\"bibtex\\\",\\\"abap\\\",\\\"rst\\\",\\\"html-derivative\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Python\\\",\\\"name\\\":\\\"python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statement\\\"},{\\\"include\\\":\\\"#expression\\\"}],\\\"repository\\\":{\\\"annotated-parameter\\\":{\\\"begin\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.annotation.python\\\"}},\\\"end\\\":\\\"(,)|(?=\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"match\\\":\\\"=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}]},\\\"assignment-operator\\\":{\\\"match\\\":\\\"<<=|>>=|//=|\\\\\\\\*\\\\\\\\*=|\\\\\\\\+=|-=|/=|@=|\\\\\\\\*=|%=|~=|\\\\\\\\^=|&=|\\\\\\\\|=|=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"},\\\"backticks\\\":{\\\"begin\\\":\\\"`\\\",\\\"end\\\":\\\"`|(?<!\\\\\\\\\\\\\\\\)(\\\\\\\\n)\\\",\\\"name\\\":\\\"invalid.deprecated.backtick.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"builtin-callables\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#builtin-exceptions\\\"},{\\\"include\\\":\\\"#builtin-functions\\\"},{\\\"include\\\":\\\"#builtin-types\\\"}]},\\\"builtin-exceptions\\\":{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b((Arithmetic|Assertion|Attribute|Buffer|BlockingIO|BrokenPipe|ChildProcess|(Connection(Aborted|Refused|Reset)?)|EOF|Environment|FileExists|FileNotFound|FloatingPoint|IO|Import|Indentation|Index|Interrupted|IsADirectory|NotADirectory|Permission|ProcessLookup|Timeout|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow|Reference|Runtime|Recursion|Syntax|System|Tab|Type|UnboundLocal|Unicode(Encode|Decode|Translate)?|Value|Windows|ZeroDivision|ModuleNotFound)Error|((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes|Resource)?Warning|SystemExit|Stop(Async)?Iteration|KeyboardInterrupt|GeneratorExit|(Base)?Exception)\\\\\\\\b\\\",\\\"name\\\":\\\"support.type.exception.python\\\"},\\\"builtin-functions\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(__import__|abs|aiter|all|any|anext|ascii|bin|breakpoint|callable|chr|compile|copyright|credits|delattr|dir|divmod|enumerate|eval|exec|exit|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|license|locals|map|max|memoryview|min|next|oct|open|ord|pow|print|quit|range|reload|repr|reversed|round|setattr|sorted|sum|vars|zip)\\\\\\\\b\\\",\\\"name\\\":\\\"support.function.builtin.python\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(file|reduce|intern|raw_input|unicode|cmp|basestring|execfile|long|xrange)\\\\\\\\b\\\",\\\"name\\\":\\\"variable.legacy.builtin.python\\\"}]},\\\"builtin-possible-callables\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#builtin-callables\\\"},{\\\"include\\\":\\\"#magic-names\\\"}]},\\\"builtin-types\\\":{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(bool|bytearray|bytes|classmethod|complex|dict|float|frozenset|int|list|object|property|set|slice|staticmethod|str|tuple|type|super)\\\\\\\\b\\\",\\\"name\\\":\\\"support.type.python\\\"},\\\"call-wrapper-inheritance\\\":{\\\"begin\\\":\\\"\\\\\\\\b(?=([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(\\\\\\\\())\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"name\\\":\\\"meta.function-call.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inheritance-name\\\"},{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"class-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\s*(class)\\\\\\\\s+(?=[_[:alpha:]]\\\\\\\\w*\\\\\\\\s*([(:]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.python\\\"}},\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.class.begin.python\\\"}},\\\"name\\\":\\\"meta.class.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-name\\\"},{\\\"include\\\":\\\"#class-inheritance\\\"}]}]},\\\"class-inheritance\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.inheritance.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.inheritance.end.python\\\"}},\\\"name\\\":\\\"meta.class.inheritance.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(\\\\\\\\*\\\\\\\\*?)\\\",\\\"name\\\":\\\"keyword.operator.unpacking.arguments.python\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.inheritance.python\\\"},{\\\"match\\\":\\\"=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"},{\\\"match\\\":\\\"\\\\\\\\bmetaclass\\\\\\\\b\\\",\\\"name\\\":\\\"support.type.metaclass.python\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#class-kwarg\\\"},{\\\"include\\\":\\\"#call-wrapper-inheritance\\\"},{\\\"include\\\":\\\"#expression-base\\\"},{\\\"include\\\":\\\"#member-access-class\\\"},{\\\"include\\\":\\\"#inheritance-identifier\\\"}]},\\\"class-kwarg\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.python variable.parameter.class.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(=)(?!=)\\\"},\\\"class-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.class.python\\\"}]},\\\"codetags\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.codetag.notation.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\\\\\b\\\"},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\\\\\\s*(type:)\\\\\\\\s*+(?!$|#)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.typehint.comment.python\\\"},\\\"1\\\":{\\\"name\\\":\\\"comment.typehint.directive.notation.python\\\"}},\\\"contentName\\\":\\\"meta.typehint.comment.python\\\",\\\"end\\\":\\\"$|(?=#)\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\Gignore(?=\\\\\\\\s*(?:$|#))\\\",\\\"name\\\":\\\"comment.typehint.ignore.notation.python\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(bool|bytes|float|int|object|str|List|Dict|Iterable|Sequence|Set|FrozenSet|Callable|Union|Tuple|Any|None)\\\\\\\\b\\\",\\\"name\\\":\\\"comment.typehint.type.notation.python\\\"},{\\\"match\\\":\\\"([]()*,.=\\\\\\\\[]|(->))\\\",\\\"name\\\":\\\"comment.typehint.punctuation.notation.python\\\"},{\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)\\\",\\\"name\\\":\\\"comment.typehint.variable.notation.python\\\"}]},{\\\"include\\\":\\\"#comments-base\\\"}]},\\\"comments-base\\\":{\\\"begin\\\":\\\"(#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.python\\\"}},\\\"end\\\":\\\"$()\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"comments-string-double-three\\\":{\\\"begin\\\":\\\"(#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.python\\\"}},\\\"end\\\":\\\"($|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"comments-string-single-three\\\":{\\\"begin\\\":\\\"(#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.python\\\"}},\\\"end\\\":\\\"($|(?='''))\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"curly-braces\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dict.begin.python\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dict.end.python\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.dict.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"^\\\\\\\\s*((@))\\\\\\\\s*(?=[_[:alpha:]]\\\\\\\\w*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.decorator.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.decorator.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\))(.*?)(?=\\\\\\\\s*(?:#|$))|(?=[\\\\\\\\n#])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.decorator.python\\\"}},\\\"name\\\":\\\"meta.function.decorator.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator-name\\\"},{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"decorator-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#builtin-callables\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.period.python\\\"}},\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)|(\\\\\\\\.)\\\",\\\"name\\\":\\\"entity.name.function.decorator.python\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.decorator.python\\\"}},\\\"match\\\":\\\"\\\\\\\\s*([^#(.\\\\\\\\\\\\\\\\_[:alpha:]\\\\\\\\s].*?)(?=#|$)\\\",\\\"name\\\":\\\"invalid.illegal.decorator.python\\\"}]},\\\"docstring\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\1)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docstring-prompt\\\"},{\\\"include\\\":\\\"#codetags\\\"},{\\\"include\\\":\\\"#docstring-guts-unicode\\\"}]},{\\\"begin\\\":\\\"([Rr])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.raw.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#docstring-prompt\\\"},{\\\"include\\\":\\\"#codetags\\\"}]},{\\\"begin\\\":\\\"([\\\\\\\"'])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\1)|(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"},{\\\"include\\\":\\\"#docstring-guts-unicode\\\"}]},{\\\"begin\\\":\\\"([Rr])([\\\\\\\"'])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.raw.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#codetags\\\"}]}]},\\\"docstring-guts-unicode\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"}]},\\\"docstring-prompt\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"match\\\":\\\"(?:^|\\\\\\\\G)\\\\\\\\s*((?:>>>|\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s)(?=\\\\\\\\s*\\\\\\\\S)\\\"},\\\"docstring-statement\\\":{\\\"begin\\\":\\\"^(?=\\\\\\\\s*[Rr]?('''|\\\\\\\"\\\\\\\"\\\\\\\"|[\\\\\\\"']))\\\",\\\"end\\\":\\\"((?<=\\\\\\\\1)|^)(?!\\\\\\\\s*[Rr]?('''|\\\\\\\"\\\\\\\"\\\\\\\"|[\\\\\\\"']))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docstring\\\"}]},\\\"double-one-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"double-one-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"double-one-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#double-one-regexp-character-set\\\"},{\\\"include\\\":\\\"#double-one-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#double-one-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookahead\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#double-one-regexp-conditional\\\"},{\\\"include\\\":\\\"#double-one-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#double-one-regexp-parentheses\\\"}]},\\\"double-one-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-three-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"double-three-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"double-three-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#double-three-regexp-character-set\\\"},{\\\"include\\\":\\\"#double-three-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#double-three-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookahead\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#double-three-regexp-conditional\\\"},{\\\"include\\\":\\\"#double-three-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#double-three-regexp-parentheses\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"ellipsis\\\":{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.ellipsis.python\\\"},\\\"escape-sequence\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|[0-7]{1,3}|[\\\\\\\"'\\\\\\\\\\\\\\\\abfnrtv])\\\",\\\"name\\\":\\\"constant.character.escape.python\\\"},\\\"escape-sequence-unicode\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(u\\\\\\\\h{4}|U\\\\\\\\h{8}|N\\\\\\\\{[\\\\\\\\w\\\\\\\\s]+?})\\\",\\\"name\\\":\\\"constant.character.escape.python\\\"}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-base\\\"},{\\\"include\\\":\\\"#member-access\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\"}]},\\\"expression-bare\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#backticks\\\"},{\\\"include\\\":\\\"#illegal-anno\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#regexp\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#lambda\\\"},{\\\"include\\\":\\\"#generator\\\"},{\\\"include\\\":\\\"#illegal-operator\\\"},{\\\"include\\\":\\\"#operator\\\"},{\\\"include\\\":\\\"#curly-braces\\\"},{\\\"include\\\":\\\"#item-access\\\"},{\\\"include\\\":\\\"#list\\\"},{\\\"include\\\":\\\"#odd-function-call\\\"},{\\\"include\\\":\\\"#round-braces\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#builtin-functions\\\"},{\\\"include\\\":\\\"#builtin-types\\\"},{\\\"include\\\":\\\"#builtin-exceptions\\\"},{\\\"include\\\":\\\"#magic-names\\\"},{\\\"include\\\":\\\"#special-names\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#special-variables\\\"},{\\\"include\\\":\\\"#ellipsis\\\"},{\\\"include\\\":\\\"#punctuation\\\"},{\\\"include\\\":\\\"#line-continuation\\\"}]},\\\"expression-base\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#expression-bare\\\"},{\\\"include\\\":\\\"#line-continuation\\\"}]},\\\"f-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-bare\\\"},{\\\"include\\\":\\\"#member-access\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\"}]},\\\"fregexp-base-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#fregexp-quantifier\\\"},{\\\"include\\\":\\\"#fstring-formatting-braces\\\"},{\\\"match\\\":\\\"\\\\\\\\{.*?}\\\"},{\\\"include\\\":\\\"#regexp-base-common\\\"}]},\\\"fregexp-quantifier\\\":{\\\"match\\\":\\\"\\\\\\\\{\\\\\\\\{(\\\\\\\\d+|\\\\\\\\d+,(\\\\\\\\d+)?|,\\\\\\\\d+)}}\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},\\\"fstring-fnorm-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Ff])([BUbu])?('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.multi.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-core\\\"}]},\\\"fstring-fnorm-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Ff])([BUbu])?(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.single.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-core\\\"}]},\\\"fstring-formatting\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-formatting-braces\\\"},{\\\"include\\\":\\\"#fstring-formatting-singe-brace\\\"}]},\\\"fstring-formatting-braces\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.brace.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\{)(\\\\\\\\s*?)(})\\\"},{\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\{|}})\\\",\\\"name\\\":\\\"constant.character.escape.python\\\"}]},\\\"fstring-formatting-singe-brace\\\":{\\\"match\\\":\\\"(}(?!}))\\\",\\\"name\\\":\\\"invalid.illegal.brace.python\\\"},\\\"fstring-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"},{\\\"include\\\":\\\"#fstring-formatting\\\"}]},\\\"fstring-illegal-multi-brace\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#impossible\\\"}]},\\\"fstring-illegal-single-brace\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)(?=[^\\\\\\\\n}]*$\\\\\\\\n?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"end\\\":\\\"(})|(?=\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-terminator-single\\\"},{\\\"include\\\":\\\"#f-expression\\\"}]},\\\"fstring-multi-brace\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"end\\\":\\\"(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-terminator-multi\\\"},{\\\"include\\\":\\\"#f-expression\\\"}]},\\\"fstring-multi-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|'''|\\\\\\\"\\\\\\\"\\\\\\\"))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.multi.python\\\"},\\\"fstring-normf-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([BUbu])([Ff])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.multi.python storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.multi.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-core\\\"}]},\\\"fstring-normf-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([BUbu])([Ff])(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.single.python storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.single.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-core\\\"}]},\\\"fstring-raw-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#fstring-formatting\\\"}]},\\\"fstring-raw-multi-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|'''|\\\\\\\"\\\\\\\"\\\\\\\"))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.multi.python\\\"},\\\"fstring-raw-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Rr][Ff]|[Ff][Rr])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.raw.multi.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-raw-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-raw-multi-core\\\"}]},\\\"fstring-raw-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Rr][Ff]|[Ff][Rr])(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.single.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.raw.single.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-raw-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"include\\\":\\\"#fstring-raw-single-core\\\"}]},\\\"fstring-raw-single-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.single.python\\\"},\\\"fstring-single-brace\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"end\\\":\\\"(})|(?=\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-terminator-single\\\"},{\\\"include\\\":\\\"#f-expression\\\"}]},\\\"fstring-single-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.single.python\\\"},\\\"fstring-terminator-multi\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(=(![ars])?)(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(=?![ars])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(=?(?:![ars])?)(:\\\\\\\\w?[<=>^]?[- +]?#?\\\\\\\\d*,?(\\\\\\\\.\\\\\\\\d+)?[%EFGXb-gnosx]?)(?=})\\\"},{\\\"include\\\":\\\"#fstring-terminator-multi-tail\\\"}]},\\\"fstring-terminator-multi-tail\\\":{\\\"begin\\\":\\\"(=?(?:![ars])?)(:)(?=.*?\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"match\\\":\\\"([%EFGXb-gnosx])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\.\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(,)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(#)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([- +])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([<=>^])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\w)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"}]},\\\"fstring-terminator-single\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(=(![ars])?)(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(=?![ars])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(=?(?:![ars])?)(:\\\\\\\\w?[<=>^]?[- +]?#?\\\\\\\\d*,?(\\\\\\\\.\\\\\\\\d+)?[%EFGXb-gnosx]?)(?=})\\\"},{\\\"include\\\":\\\"#fstring-terminator-single-tail\\\"}]},\\\"fstring-terminator-single-tail\\\":{\\\"begin\\\":\\\"(=?(?:![ars])?)(:)(?=.*?\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"end\\\":\\\"(?=})|(?=\\\\\\\\n)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"match\\\":\\\"([%EFGXb-gnosx])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\.\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(,)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(#)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([- +])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([<=>^])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\w)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"}]},\\\"function-arguments\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.begin.python\\\"}},\\\"contentName\\\":\\\"meta.function-call.arguments.python\\\",\\\"end\\\":\\\"(?=\\\\\\\\))(?!\\\\\\\\)\\\\\\\\s*\\\\\\\\()\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(,)\\\",\\\"name\\\":\\\"punctuation.separator.arguments.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.unpacking.arguments.python\\\"}},\\\"match\\\":\\\"(?:(?<=[(,])|^)\\\\\\\\s*(\\\\\\\\*{1,2})\\\"},{\\\"include\\\":\\\"#lambda-incomplete\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function-call.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(=)(?!=)\\\"},{\\\"match\\\":\\\"=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.begin.python\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(\\\\\\\\))\\\\\\\\s*(\\\\\\\\()\\\"}]},\\\"function-call\\\":{\\\"begin\\\":\\\"\\\\\\\\b(?=([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(\\\\\\\\())\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"name\\\":\\\"meta.function-call.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#special-variables\\\"},{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\b(def)\\\\\\\\s+(?=[_[:alpha:]]\\\\\\\\p{word}*\\\\\\\\s*\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.async.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.python\\\"}},\\\"end\\\":\\\"(:|(?=[\\\\\\\\n\\\\\\\"#']))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.python\\\"}},\\\"name\\\":\\\"meta.function.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-def-name\\\"},{\\\"include\\\":\\\"#parameters\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"include\\\":\\\"#return-annotation\\\"}]},\\\"function-def-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.function.python\\\"}]},\\\"function-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"meta.function-call.generic.python\\\"}]},\\\"generator\\\":{\\\"begin\\\":\\\"\\\\\\\\bfor\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"end\\\":\\\"\\\\\\\\bin\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"illegal-anno\\\":{\\\"match\\\":\\\"->\\\",\\\"name\\\":\\\"invalid.illegal.annotation.python\\\"},\\\"illegal-names\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.import.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?:(and|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|in|is|(?<=\\\\\\\\.)lambda|lambda(?=\\\\\\\\s*[.=])|nonlocal|not|or|pass|raise|return|try|while|with|yield)|(as|import))\\\\\\\\b\\\"},\\\"illegal-object-name\\\":{\\\"match\\\":\\\"\\\\\\\\b(True|False|None)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.illegal.name.python\\\"},\\\"illegal-operator\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"&&|\\\\\\\\|\\\\\\\\||--|\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"invalid.illegal.operator.python\\\"},{\\\"match\\\":\\\"[$?]\\\",\\\"name\\\":\\\"invalid.illegal.operator.python\\\"},{\\\"match\\\":\\\"!\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.illegal.operator.python\\\"}]},\\\"import\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(from)\\\\\\\\b(?=.+import)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.python\\\"}},\\\"end\\\":\\\"$|(?=import)\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.+\\\",\\\"name\\\":\\\"punctuation.separator.period.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(import)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.python\\\"}},\\\"end\\\":\\\"$\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)as\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.import.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"impossible\\\":{\\\"match\\\":\\\"$.^\\\"},\\\"inheritance-identifier\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\"},\\\"inheritance-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#lambda-incomplete\\\"},{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"include\\\":\\\"#inheritance-identifier\\\"}]},\\\"item-access\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(?=[_[:alpha:]]\\\\\\\\w*\\\\\\\\s*\\\\\\\\[)\\\",\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"name\\\":\\\"meta.item-access.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#item-name\\\"},{\\\"include\\\":\\\"#item-index\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"item-index\\\":{\\\"begin\\\":\\\"(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.begin.python\\\"}},\\\"contentName\\\":\\\"meta.item-access.arguments.python\\\",\\\"end\\\":\\\"(?=])\\\",\\\"patterns\\\":[{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.slice.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"item-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#special-variables\\\"},{\\\"include\\\":\\\"#builtin-functions\\\"},{\\\"include\\\":\\\"#special-names\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"meta.indexed-name.python\\\"}]},\\\"lambda\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"match\\\":\\\"((?<=\\\\\\\\.)lambda|lambda(?=\\\\\\\\s*[.=]))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.lambda.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(lambda)\\\\\\\\s*?(?=[\\\\\\\\n,]|$)\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(lambda)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.lambda.python\\\"}},\\\"contentName\\\":\\\"meta.function.lambda.parameters.python\\\",\\\"end\\\":\\\"(:)|(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.function.lambda.begin.python\\\"}},\\\"name\\\":\\\"meta.lambda-function.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"/\\\",\\\"name\\\":\\\"keyword.operator.positional.parameter.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\*\\\\\\\\*?)\\\",\\\"name\\\":\\\"keyword.operator.unpacking.parameter.python\\\"},{\\\"include\\\":\\\"#lambda-nested-incomplete\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(?:(,)|(?=:|$))\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#backticks\\\"},{\\\"include\\\":\\\"#illegal-anno\\\"},{\\\"include\\\":\\\"#lambda-parameter-with-default\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"include\\\":\\\"#illegal-operator\\\"}]}]},\\\"lambda-incomplete\\\":{\\\"match\\\":\\\"\\\\\\\\blambda(?=\\\\\\\\s*[),])\\\",\\\"name\\\":\\\"storage.type.function.lambda.python\\\"},\\\"lambda-nested-incomplete\\\":{\\\"match\\\":\\\"\\\\\\\\blambda(?=\\\\\\\\s*[),:])\\\",\\\"name\\\":\\\"storage.type.function.lambda.python\\\"},\\\"lambda-parameter-with-default\\\":{\\\"begin\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.python\\\"}},\\\"end\\\":\\\"(,)|(?=:|$)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"line-continuation\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.continuation.line.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.line.continuation.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\)\\\\\\\\s*(\\\\\\\\S.*$\\\\\\\\n?)\\\"},{\\\"begin\\\":\\\"(\\\\\\\\\\\\\\\\)\\\\\\\\s*$\\\\\\\\n?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.continuation.line.python\\\"}},\\\"end\\\":\\\"(?=^\\\\\\\\s*$)|(?!(\\\\\\\\s*[Rr]?('''|\\\\\\\"\\\\\\\"\\\\\\\"|[\\\\\\\"']))|\\\\\\\\G()$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"list\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.list.begin.python\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.list.end.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(True|False|None|NotImplemented|Ellipsis)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.python\\\"},{\\\"include\\\":\\\"#number\\\"}]},\\\"loose-default\\\":{\\\"begin\\\":\\\"(=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.python\\\"}},\\\"end\\\":\\\"(,)|(?=\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"magic-function-names\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.magic.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(__(?:abs|add|aenter|aexit|aiter|and|anext|await|bool|call|ceil|class_getitem|cmp|coerce|complex|contains|copy|deepcopy|del|delattr|delete|delitem|delslice|dir|div|divmod|enter|eq|exit|float|floor|floordiv|format|get??|getattr|getattribute|getinitargs|getitem|getnewargs|getslice|getstate|gt|hash|hex|iadd|iand|idiv|ifloordiv||ilshift|imod|imul|index|init|instancecheck|int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|len??|long|lshift|lt|missing|mod|mul|neg??|new|next|nonzero|oct|or|pos|pow|radd|rand|rdiv|rdivmod|reduce|reduce_ex|repr|reversed|rfloordiv||rlshift|rmod|rmul|ror|round|rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|set_name|setslice|setstate|sizeof|str|sub|subclasscheck|truediv|trunc|unicode|xor|matmul|rmatmul|imatmul|init_subclass|set_name|fspath|bytes|prepare|length_hint)__)\\\\\\\\b\\\"},\\\"magic-names\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#magic-function-names\\\"},{\\\"include\\\":\\\"#magic-variable-names\\\"}]},\\\"magic-variable-names\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.variable.magic.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(__(?:all|annotations|bases|builtins|class|closure|code|debug|defaults|dict|doc|file|func|globals|kwdefaults|match_args|members|metaclass|methods|module|mro|mro_entries|name|qualname|post_init|self|signature|slots|subclasses|version|weakref|wrapped|classcell|spec|path|package|future|traceback)__)\\\\\\\\b\\\"},\\\"member-access\\\":{\\\"begin\\\":\\\"(\\\\\\\\.)\\\\\\\\s*(?!\\\\\\\\.)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.period.python\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(?=\\\\\\\\W)|(^|(?<=\\\\\\\\s))(?=[^\\\\\\\\\\\\\\\\\\\\\\\\w\\\\\\\\s])|$\\\",\\\"name\\\":\\\"meta.member.access.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#member-access-base\\\"},{\\\"include\\\":\\\"#member-access-attribute\\\"}]},\\\"member-access-attribute\\\":{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"meta.attribute.python\\\"},\\\"member-access-base\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#magic-names\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#special-names\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"include\\\":\\\"#item-access\\\"}]},\\\"member-access-class\\\":{\\\"begin\\\":\\\"(\\\\\\\\.)\\\\\\\\s*(?!\\\\\\\\.)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.period.python\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(?=\\\\\\\\W)|$\\\",\\\"name\\\":\\\"meta.member.access.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#call-wrapper-inheritance\\\"},{\\\"include\\\":\\\"#member-access-base\\\"},{\\\"include\\\":\\\"#inheritance-identifier\\\"}]},\\\"number\\\":{\\\"name\\\":\\\"constant.numeric.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#number-float\\\"},{\\\"include\\\":\\\"#number-dec\\\"},{\\\"include\\\":\\\"#number-hex\\\"},{\\\"include\\\":\\\"#number-oct\\\"},{\\\"include\\\":\\\"#number-bin\\\"},{\\\"include\\\":\\\"#number-long\\\"},{\\\"match\\\":\\\"\\\\\\\\b[0-9]+\\\\\\\\w+\\\",\\\"name\\\":\\\"invalid.illegal.name.python\\\"}]},\\\"number-bin\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(0[Bb])(_?[01])+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.bin.python\\\"},\\\"number-dec\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.imaginary.number.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.dec.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(?:[1-9](?:_?[0-9])*|0+|[0-9](?:_?[0-9])*([Jj])|0([0-9]+)(?![.Ee]))\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.dec.python\\\"},\\\"number-float\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.imaginary.number.python\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:(?:\\\\\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\\\\\.)(?:[Ee][-+]?[0-9](?:_?[0-9])*)?|[0-9](?:_?[0-9])*[Ee][-+]?[0-9](?:_?[0-9])*)([Jj])?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.python\\\"},\\\"number-hex\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(0[Xx])(_?\\\\\\\\h)+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.hex.python\\\"},\\\"number-long\\\":{\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])([1-9][0-9]*|0)([Ll])\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.bin.python\\\"},\\\"number-oct\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(0[Oo])(_?[0-7])+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.oct.python\\\"},\\\"odd-function-call\\\":{\\\"begin\\\":\\\"(?<=[])])\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"operator\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.bitwise.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.comparison.python\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(?:(and|or|not|in|is)|(for|if|else|await|yield(?:\\\\\\\\s+from)?))(?!\\\\\\\\s*:)\\\\\\\\b|(<<|>>|[\\\\\\\\&^|~])|(\\\\\\\\*\\\\\\\\*|[-%*+]|//|[/@])|(!=|==|>=|<=|[<>])|(:=)\\\"},\\\"parameter-special\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.function.language.special.self.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.function.language.special.cls.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b((self)|(cls))\\\\\\\\b\\\\\\\\s*(?:(,)|(?=\\\\\\\\)))\\\"},\\\"parameters\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.python\\\"}},\\\"name\\\":\\\"meta.function.parameters.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"/\\\",\\\"name\\\":\\\"keyword.operator.positional.parameter.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\*\\\\\\\\*?)\\\",\\\"name\\\":\\\"keyword.operator.unpacking.parameter.python\\\"},{\\\"include\\\":\\\"#lambda-incomplete\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#parameter-special\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(?:(,)|(?=[\\\\\\\\n#)=]))\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#loose-default\\\"},{\\\"include\\\":\\\"#annotated-parameter\\\"}]},\\\"punctuation\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.colon.python\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.element.python\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-single-three-line\\\"},{\\\"include\\\":\\\"#regexp-double-three-line\\\"},{\\\"include\\\":\\\"#regexp-single-one-line\\\"},{\\\"include\\\":\\\"#regexp-double-one-line\\\"}]},\\\"regexp-backreference\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.backreference.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp\\\"}},\\\"match\\\":\\\"(\\\\\\\\()(\\\\\\\\?P=\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?)(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.backreference.named.regexp\\\"},\\\"regexp-backreference-number\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag.backreference.regexp\\\"}},\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\[1-9]\\\\\\\\d?)\\\",\\\"name\\\":\\\"meta.backreference.regexp\\\"},\\\"regexp-base-common\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\",\\\"name\\\":\\\"support.other.match.any.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\^\\\",\\\"name\\\":\\\"support.other.match.begin.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\$\\\",\\\"name\\\":\\\"support.other.match.end.regexp\\\"},{\\\"match\\\":\\\"[*+?]\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.disjunction.regexp\\\"},{\\\"include\\\":\\\"#regexp-escape-sequence\\\"}]},\\\"regexp-base-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-quantifier\\\"},{\\\"include\\\":\\\"#regexp-base-common\\\"}]},\\\"regexp-charecter-set-escapes\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\\\\\\\\\abfnrtv]\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},{\\\"include\\\":\\\"#regexp-escape-special\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{1,3})\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},{\\\"include\\\":\\\"#regexp-escape-character\\\"},{\\\"include\\\":\\\"#regexp-escape-unicode\\\"},{\\\"include\\\":\\\"#regexp-escape-catchall\\\"}]},\\\"regexp-double-one-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\")|(?<!\\\\\\\\\\\\\\\\)(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"regexp-double-three-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"}]},\\\"regexp-escape-catchall\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(.|\\\\\\\\n)\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},\\\"regexp-escape-character\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|0[0-7]{1,2}|[0-7]{3})\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},\\\"regexp-escape-sequence\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-escape-special\\\"},{\\\"include\\\":\\\"#regexp-escape-character\\\"},{\\\"include\\\":\\\"#regexp-escape-unicode\\\"},{\\\"include\\\":\\\"#regexp-backreference-number\\\"},{\\\"include\\\":\\\"#regexp-escape-catchall\\\"}]},\\\"regexp-escape-special\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([ABDSWZbdsw])\\\",\\\"name\\\":\\\"support.other.escape.special.regexp\\\"},\\\"regexp-escape-unicode\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(u\\\\\\\\h{4}|U\\\\\\\\h{8})\\\",\\\"name\\\":\\\"constant.character.unicode.regexp\\\"},\\\"regexp-flags\\\":{\\\"match\\\":\\\"\\\\\\\\(\\\\\\\\?[Laimsux]+\\\\\\\\)\\\",\\\"name\\\":\\\"storage.modifier.flag.regexp\\\"},\\\"regexp-quantifier\\\":{\\\"match\\\":\\\"\\\\\\\\{(\\\\\\\\d+|\\\\\\\\d+,(\\\\\\\\d+)?|,\\\\\\\\d+)}\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},\\\"regexp-single-one-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(')\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(')|(?<!\\\\\\\\\\\\\\\\)(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"regexp-single-three-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(''')\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(''')\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"}]},\\\"return-annotation\\\":{\\\"begin\\\":\\\"(->)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.annotation.result.python\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"round-braces\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.parenthesis.begin.python\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.parenthesis.end.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"semicolon\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\";$\\\",\\\"name\\\":\\\"invalid.deprecated.semicolon.python\\\"}]},\\\"single-one-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"single-one-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"single-one-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#single-one-regexp-character-set\\\"},{\\\"include\\\":\\\"#single-one-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#single-one-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookahead\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#single-one-regexp-conditional\\\"},{\\\"include\\\":\\\"#single-one-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#single-one-regexp-parentheses\\\"}]},\\\"single-one-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-three-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"single-three-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"single-three-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#single-three-regexp-character-set\\\"},{\\\"include\\\":\\\"#single-three-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#single-three-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookahead\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#single-three-regexp-conditional\\\"},{\\\"include\\\":\\\"#single-three-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#single-three-regexp-parentheses\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"special-names\\\":{\\\"match\\\":\\\"\\\\\\\\b(_*\\\\\\\\p{upper}[_\\\\\\\\d]*\\\\\\\\p{upper})[[:upper:]\\\\\\\\d]*(_\\\\\\\\w*)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.other.caps.python\\\"},\\\"special-variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.language.special.self.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.language.special.cls.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(?:(self)|(cls))\\\\\\\\b\\\"},\\\"statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#import\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#generator\\\"},{\\\"include\\\":\\\"#statement-keyword\\\"},{\\\"include\\\":\\\"#assignment-operator\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#docstring-statement\\\"},{\\\"include\\\":\\\"#semicolon\\\"}]},\\\"statement-keyword\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b((async\\\\\\\\s+)?\\\\\\\\s*def)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.function.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)as\\\\\\\\b(?=.*[:\\\\\\\\\\\\\\\\])\\\",\\\"name\\\":\\\"keyword.control.flow.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)as\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.import.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(async|continue|del|assert|break|finally|for|from|elif|else|if|except|pass|raise|return|try|while|with)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.flow.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(global|nonlocal)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.modifier.declaration.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(class)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(case|match)(?=\\\\\\\\s*([-\\\\\\\"#'(+:\\\\\\\\[{\\\\\\\\w\\\\\\\\d]|$))\\\\\\\\b\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-quoted-single-line\\\"},{\\\"include\\\":\\\"#string-bin-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-bin-quoted-single-line\\\"},{\\\"include\\\":\\\"#string-raw-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-raw-quoted-single-line\\\"},{\\\"include\\\":\\\"#string-raw-bin-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-raw-bin-quoted-single-line\\\"},{\\\"include\\\":\\\"#fstring-fnorm-quoted-multi-line\\\"},{\\\"include\\\":\\\"#fstring-fnorm-quoted-single-line\\\"},{\\\"include\\\":\\\"#fstring-normf-quoted-multi-line\\\"},{\\\"include\\\":\\\"#fstring-normf-quoted-single-line\\\"},{\\\"include\\\":\\\"#fstring-raw-quoted-multi-line\\\"},{\\\"include\\\":\\\"#fstring-raw-quoted-single-line\\\"}]},\\\"string-bin-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Bb])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.binary.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-bin-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Bb])(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.binary.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-brace-formatting\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\{|}}|\\\\\\\\{\\\\\\\\w*(\\\\\\\\.[_[:alpha:]]\\\\\\\\w*|\\\\\\\\[[^]\\\\\\\"']+])*(![ars])?(:\\\\\\\\w?[<=>^]?[- +]?#?\\\\\\\\d*,?(\\\\\\\\.\\\\\\\\d+)?[%EFGXb-gnosx]?)?})\\\",\\\"name\\\":\\\"meta.format.brace.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\w*(\\\\\\\\.[_[:alpha:]]\\\\\\\\w*|\\\\\\\\[[^]\\\\\\\"']+])*(![ars])?(:)[^\\\\\\\\n\\\\\\\"'{}]*(?:\\\\\\\\{[^\\\\\\\\n\\\\\\\"'}]*?}[^\\\\\\\\n\\\\\\\"'{}]*)*})\\\",\\\"name\\\":\\\"meta.format.brace.python\\\"}]},\\\"string-consume-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"'\\\\\\\\\\\\\\\\]\\\"},\\\"string-entity\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-formatting\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"match\\\":\\\"(%(\\\\\\\\([\\\\\\\\w\\\\\\\\s]*\\\\\\\\))?[- #+0]*(\\\\\\\\d+|\\\\\\\\*)?(\\\\\\\\.(\\\\\\\\d+|\\\\\\\\*))?([Lhl])?[%EFGXa-giorsux])\\\",\\\"name\\\":\\\"meta.format.percent.python\\\"},\\\"string-line-continuation\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\$\\\",\\\"name\\\":\\\"constant.language.python\\\"},\\\"string-multi-bad-brace1-formatting-raw\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\"))%})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"}]},\\\"string-multi-bad-brace1-formatting-unicode\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\"))%})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"}]},\\\"string-multi-bad-brace2-formatting-raw\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-multi-bad-brace2-formatting-unicode\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-quoted-multi-line\\\":{\\\"begin\\\":\\\"(?:\\\\\\\\b([Rr])(?=[Uu]))?([Uu])?('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-multi-bad-brace1-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-multi-bad-brace2-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-unicode-guts\\\"}]},\\\"string-quoted-single-line\\\":{\\\"begin\\\":\\\"(?:\\\\\\\\b([Rr])(?=[Uu]))?([Uu])?(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-single-bad-brace1-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-single-bad-brace2-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-unicode-guts\\\"}]},\\\"string-raw-bin-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-raw-bin-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(R[Bb]|[Bb]R)('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.binary.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-raw-bin-guts\\\"}]},\\\"string-raw-bin-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(R[Bb]|[Bb]R)(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.binary.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-raw-bin-guts\\\"}]},\\\"string-raw-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"},{\\\"include\\\":\\\"#string-brace-formatting\\\"}]},\\\"string-raw-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]R)|(R))('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\4)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-multi-bad-brace1-formatting-raw\\\"},{\\\"include\\\":\\\"#string-multi-bad-brace2-formatting-raw\\\"},{\\\"include\\\":\\\"#string-raw-guts\\\"}]},\\\"string-raw-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]R)|(R))(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\4)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-single-bad-brace1-formatting-raw\\\"},{\\\"include\\\":\\\"#string-single-bad-brace2-formatting-raw\\\"},{\\\"include\\\":\\\"#string-raw-guts\\\"}]},\\\"string-single-bad-brace1-formatting-raw\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))%})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"}]},\\\"string-single-bad-brace1-formatting-unicode\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))%})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"}]},\\\"string-single-bad-brace2-formatting-raw\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-single-bad-brace2-formatting-unicode\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-unicode-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#string-entity\\\"},{\\\"include\\\":\\\"#string-brace-formatting\\\"}]}},\\\"scopeName\\\":\\\"source.python\\\",\\\"aliases\\\":[\\\"py\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Shell\\\",\\\"name\\\":\\\"shellscript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}],\\\"repository\\\":{\\\"alias_statement\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+(alias)[\\\\\\\\t ]*+((?:((?<!\\\\\\\\w)-\\\\\\\\w+)\\\\\\\\b[\\\\\\\\t ]*+)*)[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.alias.shell\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)-\\\\\\\\w+\\\\\\\\b\\\",\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"9\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"10\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"11\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\t ]|$)|(?:(?:(?:(;)|(&&))|(\\\\\\\\|\\\\\\\\|))|(&))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.statement.semicolon.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.statement.and.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.statement.or.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.statement.background.shell\\\"}},\\\"name\\\":\\\"meta.expression.assignment.alias.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"argument\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]++(?![\\\\\\\\n#\\\\\\\\&(\\\\\\\\[|]|$|;)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\t \\\\\\\\&;|]|$|[\\\\\\\\n)`])\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.argument.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#argument_context\\\"},{\\\"include\\\":\\\"#line_continuation\\\"}]},\\\"argument_context\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"variable.language.special.wildcard.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#numeric_literal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.$1.shell\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\w)\\\\\\\\b(true|false)\\\\\\\\b(?!\\\\\\\\w)\\\"}]}},\\\"match\\\":\\\"[\\\\\\\\t ]*+([^\\\\\\\\t\\\\\\\\n \\\\\\\"$\\\\\\\\&-);<>\\\\\\\\\\\\\\\\`|]+(?!>))\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"arithmetic_double\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.double.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\\\\\\s*\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.double.shell\\\"}},\\\"name\\\":\\\"meta.arithmetic.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#math\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"arithmetic_no_dollar\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.single.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.single.shell\\\"}},\\\"name\\\":\\\"meta.arithmetic.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#math\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"array_access_inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.array.shell\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#special_expansion\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.array.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)([^]\\\\\\\\[]+)(])\\\"},\\\"array_value\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))[\\\\\\\\t ]*+(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.definition.array.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.array.shell entity.other.attribute-name.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell punctuation.definition.assignment.shell\\\"}},\\\"match\\\":\\\"((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(=)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.named-array.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.shell entity.other.attribute-name.bracket.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.named-array.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.assignment.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)(.+?)(])(=)\\\"},{\\\"include\\\":\\\"#normal_context\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"}]},\\\"assignment_statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#array_value\\\"},{\\\"include\\\":\\\"#modified_assignment_statement\\\"},{\\\"include\\\":\\\"#normal_assignment_statement\\\"}]},\\\"basic_command_name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.$1.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:continue|return|break)(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"keyword.control.$0.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\\\\\w)(?!-)\\\",\\\"name\\\":\\\"support.function.builtin.shell\\\"},{\\\"include\\\":\\\"#variable\\\"}]}},\\\"match\\\":\\\"(?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;])(?!nocorrect |nocorrect\\\\\\\\t|nocorrect$|readonly |readonly\\\\\\\\t|readonly$|function |function\\\\\\\\t|function$|foreach |foreach\\\\\\\\t|foreach$|coproc |coproc\\\\\\\\t|coproc$|logout |logout\\\\\\\\t|logout$|export |export\\\\\\\\t|export$|select |select\\\\\\\\t|select$|repeat |repeat\\\\\\\\t|repeat$|pushd |pushd\\\\\\\\t|pushd$|until |until\\\\\\\\t|until$|while |while\\\\\\\\t|while$|local |local\\\\\\\\t|local$|case |case\\\\\\\\t|case$|done |done\\\\\\\\t|done$|elif |elif\\\\\\\\t|elif$|else |else\\\\\\\\t|else$|esac |esac\\\\\\\\t|esac$|popd |popd\\\\\\\\t|popd$|then |then\\\\\\\\t|then$|time |time\\\\\\\\t|time$|for |for\\\\\\\\t|for$|end |end\\\\\\\\t|end$|fi |fi\\\\\\\\t|fi$|do |do\\\\\\\\t|do$|in |in\\\\\\\\t|in$|if |if\\\\\\\\t|if$)(?:((?<=^|[\\\\\\\\t \\\\\\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\\\\\t \\\\\\\\&;]|$))|((?![\\\\\\\"']|\\\\\\\\\\\\\\\\\\\\\\\\n?$)[^\\\\\\\\t\\\\\\\\n\\\\\\\\r !\\\\\\\"'<>]+?))(?:(?=[\\\\\\\\t ])|(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\))\\\",\\\"name\\\":\\\"meta.statement.command.name.basic.shell\\\"},\\\"block_comment\\\":{\\\"begin\\\":\\\"\\\\\\\\s*+(/\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.shell\\\"}},\\\"name\\\":\\\"comment.block.shell\\\"},\\\"boolean\\\":{\\\"match\\\":\\\"\\\\\\\\b(?:true|false)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.$0.shell\\\"},\\\"case_statement\\\":{\\\"begin\\\":\\\"\\\\\\\\b(case)\\\\\\\\b[\\\\\\\\t ]*+(.+?)[\\\\\\\\t ]*+\\\\\\\\b(in)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.case.shell\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.in.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\besac\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.esac.shell\\\"}},\\\"name\\\":\\\"meta.case.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.pattern.case.default.shell\\\"}},\\\"match\\\":\\\"[\\\\\\\\t ]*+(\\\\\\\\* *\\\\\\\\))\\\"},{\\\"begin\\\":\\\"(?<!\\\\\\\\))(?![\\\\\\\\t ]*+(?:esac\\\\\\\\b|$))\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=\\\\\\\\besac\\\\\\\\b)|(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.pattern.case.shell\\\"}},\\\"name\\\":\\\"meta.case.entry.pattern.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#case_statement_context\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(;;)|(?=\\\\\\\\besac\\\\\\\\b)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.statement.case.shell\\\"}},\\\"name\\\":\\\"meta.case.entry.body.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#typical_statements\\\"},{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"case_statement_context\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"variable.language.special.quantifier.star.shell keyword.operator.quantifier.star.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\",\\\"name\\\":\\\"variable.language.special.quantifier.plus.shell keyword.operator.quantifier.plus.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"variable.language.special.quantifier.question.shell keyword.operator.quantifier.question.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell\\\"},{\\\"match\\\":\\\"@\\\",\\\"name\\\":\\\"variable.language.special.at.shell keyword.operator.at.shell punctuation.definition.regex.at.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.orvariable.language.special.or.shell keyword.operator.alternation.ruby.shell punctuation.definition.regex.alternation.shell punctuation.separator.regex.alternation.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"match\\\":\\\"(?<=\\\\\\\\tin| in|[\\\\\\\\t ]|;;)\\\\\\\\(\\\",\\\"name\\\":\\\"keyword.operator.pattern.case.shell\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\S)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.definition.regex.group.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.definition.regex.group.shell\\\"}},\\\"name\\\":\\\"meta.parenthese.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#case_statement_context\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.shell\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.shell\\\"}},\\\"name\\\":\\\"string.regexp.character-class.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"}]},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[^\\\\\\\\t\\\\\\\\n )*?@\\\\\\\\[|]\\\",\\\"name\\\":\\\"string.unquoted.pattern.shell string.regexp.unquoted.shell\\\"}]},\\\"command_name_range\\\":{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\t \\\\\\\\&;|]|$|[\\\\\\\\n)`])|(?=<)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.command.name.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:continue|return|break)(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell keyword.control.$0.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\\\\\w)(?!-)\\\",\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell support.function.builtin.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\w)(?<=\\\\\\\\G|[\\\\\\\"')}])([^\\\\\\\\t\\\\\\\\n\\\\\\\\r \\\\\\\"\\\\\\\\&');->`{|]+)\\\"},{\\\"begin\\\":\\\"(?:\\\\\\\\G|(?<![\\\\\\\\t\\\\\\\\n #\\\\\\\\&;{|]))(\\\\\\\\$?)((\\\\\\\")|('))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.statement.command.name.quoted.shell punctuation.definition.string.shell entity.name.function.call.shell entity.name.command.shell\\\"},\\\"2\\\":{},\\\"3\\\":{\\\"name\\\":\\\"meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell\\\"}},\\\"end\\\":\\\"(?<!\\\\\\\\G)(?<=\\\\\\\\2)\\\",\\\"endCaptures\\\":{},\\\"patterns\\\":[{\\\"include\\\":\\\"#continuation_of_single_quoted_command_name\\\"},{\\\"include\\\":\\\"#continuation_of_double_quoted_command_name\\\"}]},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"}]},\\\"command_statement\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+(?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;])(?!nocorrect |nocorrect\\\\\\\\t|nocorrect$|readonly |readonly\\\\\\\\t|readonly$|function |function\\\\\\\\t|function$|foreach |foreach\\\\\\\\t|foreach$|coproc |coproc\\\\\\\\t|coproc$|logout |logout\\\\\\\\t|logout$|export |export\\\\\\\\t|export$|select |select\\\\\\\\t|select$|repeat |repeat\\\\\\\\t|repeat$|pushd |pushd\\\\\\\\t|pushd$|until |until\\\\\\\\t|until$|while |while\\\\\\\\t|while$|local |local\\\\\\\\t|local$|case |case\\\\\\\\t|case$|done |done\\\\\\\\t|done$|elif |elif\\\\\\\\t|elif$|else |else\\\\\\\\t|else$|esac |esac\\\\\\\\t|esac$|popd |popd\\\\\\\\t|popd$|then |then\\\\\\\\t|then$|time |time\\\\\\\\t|time$|for |for\\\\\\\\t|for$|end |end\\\\\\\\t|end$|fi |fi\\\\\\\\t|fi$|do |do\\\\\\\\t|do$|in |in\\\\\\\\t|in$|if |if\\\\\\\\t|if$)(?!\\\\\\\\\\\\\\\\\\\\\\\\n?$)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.command.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#command_name_range\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#option\\\"},{\\\"include\\\":\\\"#argument\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#heredoc\\\"}]},\\\"comment\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line.number-sign.shell meta.shebang.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shebang.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"comment.line.number-sign.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shell\\\"}},\\\"match\\\":\\\"(?:^|[\\\\\\\\t ]++)(?:((#!).*)|((#).*))\\\"},\\\"comments\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block_comment\\\"},{\\\"include\\\":\\\"#line_comment\\\"}]},\\\"compound-command\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"name\\\":\\\"meta.scope.logical-expression.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#logical-expression\\\"},{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\s|^)\\\\\\\\{(?=\\\\\\\\s|$)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"end\\\":\\\"(?<=^|;)\\\\\\\\s*(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"name\\\":\\\"meta.scope.group.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"continuation_of_double_quoted_command_name\\\":{\\\"begin\\\":\\\"\\\\\\\\G(?<=\\\\\\\")\\\",\\\"beginCaptures\\\":{},\\\"contentName\\\":\\\"meta.statement.command.name.continuation string.quoted.double entity.name.function.call entity.name.command\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.double.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},\\\"continuation_of_single_quoted_command_name\\\":{\\\"begin\\\":\\\"\\\\\\\\G(?<=')\\\",\\\"beginCaptures\\\":{},\\\"contentName\\\":\\\"meta.statement.command.name.continuation string.quoted.single entity.name.function.call entity.name.command\\\",\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.single.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell\\\"}}},\\\"custom_command_names\\\":{\\\"patterns\\\":[]},\\\"custom_commands\\\":{\\\"patterns\\\":[]},\\\"double_quote_context\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},\\\"double_quote_escape_char\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},\\\"floating_keyword\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\t \\\\\\\\&;])(?:then|elif|else|done|end|do|if|fi)(?=[\\\\\\\\t \\\\\\\\&;]|$)\\\",\\\"name\\\":\\\"keyword.control.$0.shell\\\"}]},\\\"for_statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(for)\\\\\\\\b[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))[\\\\\\\\t ]*+\\\\\\\\b(in)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.for.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.for.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.in.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.for.in.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(for)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.for.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.for.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arithmetic_double\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]}]},\\\"function_definition\\\":{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"[\\\\\\\\t ]*+(?:\\\\\\\\b(function)\\\\\\\\b[\\\\\\\\t ]*+([^\\\\\\\\t\\\\\\\\n\\\\\\\\r \\\\\\\"'()=]+)(?:(\\\\\\\\()[\\\\\\\\t ]*+(\\\\\\\\)))?|([^\\\\\\\\t\\\\\\\\n\\\\\\\\r \\\\\\\"'()=]+)[\\\\\\\\t ]*+(\\\\\\\\()[\\\\\\\\t ]*+(\\\\\\\\)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.function.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"}},\\\"end\\\":\\\"(?<=[)}])\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.function.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G[\\\\\\\\t\\\\\\\\n ]\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"name\\\":\\\"meta.function.body.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"name\\\":\\\"meta.function.body.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"include\\\":\\\"#initial_context\\\"}]},\\\"heredoc\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"((?<!<)<<-)[\\\\\\\\t ]*+([\\\\\\\"'])[\\\\\\\\t ]*+([^\\\\\\\"']+?)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(\\\\\\\\2)(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"5\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.quoted.heredoc.indent.$3\\\",\\\"end\\\":\\\"^\\\\\\\\t*\\\\\\\\3(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.$0.shell\\\"}},\\\"patterns\\\":[]},{\\\"begin\\\":\\\"((?<!<)<<(?!<))[\\\\\\\\t ]*+([\\\\\\\"'])[\\\\\\\\t ]*+([^\\\\\\\"']+?)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(\\\\\\\\2)(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"5\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.quoted.heredoc.no-indent.$3\\\",\\\"end\\\":\\\"^\\\\\\\\3(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"}},\\\"patterns\\\":[]},{\\\"begin\\\":\\\"((?<!<)<<-)[\\\\\\\\t ]*+([^\\\\\\\\t \\\\\\\"']+)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.unquoted.heredoc.indent.$2\\\",\\\"end\\\":\\\"^\\\\\\\\t*\\\\\\\\2(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double_quote_escape_char\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},{\\\"begin\\\":\\\"((?<!<)<<(?!<))[\\\\\\\\t ]*+([^\\\\\\\\t \\\\\\\"']+)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.unquoted.heredoc.no-indent.$2\\\",\\\"end\\\":\\\"^\\\\\\\\2(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double_quote_escape_char\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]}]},\\\"herestring\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(<<<)\\\\\\\\s*(('))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.herestring.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.quoted.single.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"contentName\\\":\\\"string.quoted.single.shell\\\",\\\"end\\\":\\\"(')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.single.shell\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"meta.herestring.shell\\\"},{\\\"begin\\\":\\\"(<<<)\\\\\\\\s*((\\\\\\\"))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.herestring.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.quoted.double.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"contentName\\\":\\\"string.quoted.double.shell\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.double.shell\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"meta.herestring.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double_quote_context\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.herestring.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.herestring.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}},\\\"match\\\":\\\"(<<<)\\\\\\\\s*(([^)\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\.)+)\\\",\\\"name\\\":\\\"meta.herestring.shell\\\"}]},\\\"initial_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#pipeline\\\"},{\\\"include\\\":\\\"#normal_statement_seperator\\\"},{\\\"include\\\":\\\"#logical_expression_double\\\"},{\\\"include\\\":\\\"#logical_expression_single\\\"},{\\\"include\\\":\\\"#assignment_statement\\\"},{\\\"include\\\":\\\"#case_statement\\\"},{\\\"include\\\":\\\"#for_statement\\\"},{\\\"include\\\":\\\"#loop\\\"},{\\\"include\\\":\\\"#function_definition\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#arithmetic_double\\\"},{\\\"include\\\":\\\"#misc_ranges\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#redirection\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#alias_statement\\\"},{\\\"include\\\":\\\"#normal_statement\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#support\\\"}]},\\\"inline_comment\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block.shell punctuation.definition.comment.begin.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.block.shell\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.shell punctuation.definition.comment.end.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"comment.block.shell\\\"}]}},\\\"match\\\":\\\"(/\\\\\\\\*)((?:[^*]|\\\\\\\\*++[^/])*+(\\\\\\\\*++/))\\\"},\\\"interpolation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#arithmetic_dollar\\\"},{\\\"include\\\":\\\"#subshell_dollar\\\"},{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.evaluation.backticks.shell\\\"}},\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.evaluation.backticks.shell\\\"}},\\\"name\\\":\\\"string.interpolated.backtick.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\W)(?=#)(?!#\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.shell\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shell\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"name\\\":\\\"comment.line.number-sign.shell\\\"}]},{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"keyword\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(then|else|elif|fi|for|in|do|done|select|continue|esac|while|until|return)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"keyword.control.shell\\\"},{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(?:export|declare|typeset|local|readonly)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"storage.modifier.shell\\\"}]},\\\"line_comment\\\":{\\\"begin\\\":\\\"\\\\\\\\s*+(//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shell\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\n)(?<!\\\\\\\\\\\\\\\\\\\\\\\\n)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"comment.line.double-slash.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#line_continuation_character\\\"}]},\\\"line_continuation\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?=\\\\\\\\n)\\\",\\\"name\\\":\\\"constant.character.escape.line-continuation.shell\\\"},\\\"logical-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#arithmetic_no_dollar\\\"},{\\\"match\\\":\\\"=[=~]?|!=?|[<>]|&&|\\\\\\\\|\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.logical.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\S)-(nt|ot|ef|eq|ne|l[et]|g[et]|[GLNOSa-hknopr-uwxz])\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.operator.logical.shell\\\"}]},\\\"logical_expression_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_comparison\\\"},{\\\"include\\\":\\\"#arithmetic_no_dollar\\\"},{\\\"include\\\":\\\"#logical-expression\\\"},{\\\"include\\\":\\\"#logical_expression_single\\\"},{\\\"include\\\":\\\"#logical_expression_double\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#boolean\\\"},{\\\"include\\\":\\\"#redirect_number\\\"},{\\\"include\\\":\\\"#numeric_literal\\\"},{\\\"include\\\":\\\"#pipeline\\\"},{\\\"include\\\":\\\"#normal_statement_seperator\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#support\\\"}]},\\\"logical_expression_double\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"end\\\":\\\"]]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"name\\\":\\\"meta.scope.logical-expression.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#logical_expression_context\\\"}]},\\\"logical_expression_single\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"name\\\":\\\"meta.scope.logical-expression.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#logical_expression_context\\\"}]},\\\"loop\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(for)\\\\\\\\s+(.+?)\\\\\\\\s+(in)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.loop.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])done(?=[\\\\\\\\&;\\\\\\\\s]|$|\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"name\\\":\\\"meta.scope.for-in-loop.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(while|until)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])done(?=[\\\\\\\\&;\\\\\\\\s]|$|\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"name\\\":\\\"meta.scope.while-loop.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(select)\\\\\\\\s+((?:[^\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\.)+)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.loop.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(done)(?=[\\\\\\\\&;\\\\\\\\s]|$|\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"name\\\":\\\"meta.scope.select-block.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])if(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.if.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])fi(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.fi.shell\\\"}},\\\"name\\\":\\\"meta.scope.if-block.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"math\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#variable\\\"},{\\\"match\\\":\\\"\\\\\\\\+{1,2}|-{1,2}|[!~]|\\\\\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\\\\\&*+/^|]=|<<=|>>=\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.shell\\\"},{\\\"match\\\":\\\"0[Xx]\\\\\\\\h+\\\",\\\"name\\\":\\\"constant.numeric.hex.shell\\\"},{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.separator.semicolon.range\\\"},{\\\"match\\\":\\\"0\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.octal.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d{1,2}#[0-9@-Z_a-z]+\\\",\\\"name\\\":\\\"constant.numeric.other.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.integer.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)[0-9A-Z_a-z]+(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"variable.other.normal.shell\\\"}]},\\\"math_operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\+{1,2}|-{1,2}|[!~]|\\\\\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\\\\\&*+/^|]=|<<=|>>=\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.shell\\\"},{\\\"match\\\":\\\"0[Xx]\\\\\\\\h+\\\",\\\"name\\\":\\\"constant.numeric.hex.shell\\\"},{\\\"match\\\":\\\"0\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.octal.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d{1,2}#[0-9@-Z_a-z]+\\\",\\\"name\\\":\\\"constant.numeric.other.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.integer.shell\\\"}]},\\\"misc_ranges\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#logical_expression_single\\\"},{\\\"include\\\":\\\"#logical_expression_double\\\"},{\\\"include\\\":\\\"#subshell_dollar\\\"},{\\\"begin\\\":\\\"(?<![^\\\\\\\\t ])(\\\\\\\\{)(?![$\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"name\\\":\\\"meta.scope.group.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"modified_assignment_statement\\\":{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\t \\\\\\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\\\\\t \\\\\\\\&;]|$)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.modifier.$0.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.shell meta.expression.assignment.modified.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)-\\\\\\\\w+\\\\\\\\b\\\",\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"},{\\\"include\\\":\\\"#array_value\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"9\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.hex.shell\\\"},\\\"10\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.octal.shell\\\"},\\\"11\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.other.shell\\\"},\\\"12\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.decimal.shell\\\"},\\\"13\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.version.shell\\\"},\\\"14\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"}},\\\"match\\\":\\\"((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))?(?:(?<=[\\\\\\\\t =]|^|[(\\\\\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\\\\\h+)|(0\\\\\\\\d+))|(\\\\\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\\\\\d+\\\\\\\\.\\\\\\\\d+))|(-?\\\\\\\\d+(?:\\\\\\\\.\\\\\\\\d+)+))|(-?\\\\\\\\d+))(?=[\\\\\\\\t ]|$|[);}]))?\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"modifiers\\\":{\\\"match\\\":\\\"(?<=^|[\\\\\\\\t \\\\\\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\\\\\t \\\\\\\\&;]|$)\\\",\\\"name\\\":\\\"storage.modifier.$0.shell\\\"},\\\"normal_assignment_statement\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.expression.assignment.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#normal_assignment_statement\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\t ])(?![\\\\\\\\t ]|\\\\\\\\w+=)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.command.env.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#command_name_range\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#option\\\"},{\\\"include\\\":\\\"#argument\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"include\\\":\\\"#simple_unquoted\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"normal_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#pipeline\\\"},{\\\"include\\\":\\\"#normal_statement_seperator\\\"},{\\\"include\\\":\\\"#misc_ranges\\\"},{\\\"include\\\":\\\"#boolean\\\"},{\\\"include\\\":\\\"#redirect_number\\\"},{\\\"include\\\":\\\"#numeric_literal\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#redirection\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#support\\\"},{\\\"include\\\":\\\"#parenthese\\\"}]},\\\"normal_statement\\\":{\\\"begin\\\":\\\"(?!^[\\\\\\\\t ]*+$)(?:(?<=(?:^until| until|\\\\\\\\tuntil|^while| while|\\\\\\\\twhile|^elif| elif|\\\\\\\\telif|^else| else|\\\\\\\\telse|^then| then|\\\\\\\\tthen|^do| do|\\\\\\\\tdo|^if| if|\\\\\\\\tif) )|(?<=^|[!\\\\\\\\&(;`{|]))[\\\\\\\\t ]*+(?!nocorrect\\\\\\\\W|nocorrect\\\\\\\\$|function\\\\\\\\W|function\\\\\\\\$|foreach\\\\\\\\W|foreach\\\\\\\\$|repeat\\\\\\\\W|repeat\\\\\\\\$|logout\\\\\\\\W|logout\\\\\\\\$|coproc\\\\\\\\W|coproc\\\\\\\\$|select\\\\\\\\W|select\\\\\\\\$|while\\\\\\\\W|while\\\\\\\\$|pushd\\\\\\\\W|pushd\\\\\\\\$|until\\\\\\\\W|until\\\\\\\\$|case\\\\\\\\W|case\\\\\\\\$|done\\\\\\\\W|done\\\\\\\\$|elif\\\\\\\\W|elif\\\\\\\\$|else\\\\\\\\W|else\\\\\\\\$|esac\\\\\\\\W|esac\\\\\\\\$|popd\\\\\\\\W|popd\\\\\\\\$|then\\\\\\\\W|then\\\\\\\\$|time\\\\\\\\W|time\\\\\\\\$|for\\\\\\\\W|for\\\\\\\\$|end\\\\\\\\W|end\\\\\\\\$|fi\\\\\\\\W|fi\\\\\\\\$|do\\\\\\\\W|do\\\\\\\\$|in\\\\\\\\W|in\\\\\\\\$|if\\\\\\\\W|if\\\\\\\\$)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#typical_statements\\\"}]},\\\"normal_statement_seperator\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.statement.semicolon.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.statement.and.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.statement.or.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.statement.background.shell\\\"}},\\\"match\\\":\\\"(?:(?:(;)|(&&))|(\\\\\\\\|\\\\\\\\|))|(&)\\\"},\\\"numeric_literal\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.hex.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.octal.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.other.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.decimal.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.version.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"}},\\\"match\\\":\\\"(?<=[\\\\\\\\t =]|^|[(\\\\\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\\\\\h+)|(0\\\\\\\\d+))|(\\\\\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\\\\\d+\\\\\\\\.\\\\\\\\d+))|(-?\\\\\\\\d+(?:\\\\\\\\.\\\\\\\\d+)+))|(-?\\\\\\\\d+))(?=[\\\\\\\\t ]|$|[);}])\\\"},\\\"option\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]++(-)((?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.dash.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"}},\\\"contentName\\\":\\\"string.unquoted.argument constant.other.option\\\",\\\"end\\\":\\\"(?=[\\\\\\\\t ])|(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"patterns\\\":[{\\\"include\\\":\\\"#option_context\\\"}]},\\\"option_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#misc_ranges\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#redirection\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#support\\\"}]},\\\"parenthese\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.parenthese.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.parenthese.shell\\\"}},\\\"name\\\":\\\"meta.parenthese.group.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"pathname\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=[:=\\\\\\\\s]|^)~\\\",\\\"name\\\":\\\"keyword.operator.tilde.shell\\\"},{\\\"match\\\":\\\"[*?]\\\",\\\"name\\\":\\\"keyword.operator.glob.shell\\\"},{\\\"begin\\\":\\\"([!*+?@])(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.extglob.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.extglob.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.extglob.shell\\\"}},\\\"name\\\":\\\"meta.structure.extglob.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"pipeline\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(time)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"keyword.other.shell\\\"},{\\\"match\\\":\\\"[!|]\\\",\\\"name\\\":\\\"keyword.operator.pipe.shell\\\"}]},\\\"redirect_fix\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.redirect.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell\\\"}},\\\"match\\\":\\\"(>>?)[\\\\\\\\t ]*+([^\\\\\\\\t\\\\\\\\n \\\\\\\"$\\\\\\\\&-);<>\\\\\\\\\\\\\\\\`|]+)\\\"},\\\"redirect_number\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.redirect.stdout.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.redirect.stderr.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.redirect.$3.shell\\\"}},\\\"match\\\":\\\"(?<=[\\\\\\\\t ])(?:(1)|(2)|(\\\\\\\\d+))(?=>)\\\"},\\\"redirection\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"[<>]\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.interpolated.process-substitution.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"match\\\":\\\"(?<![<>])(&>|\\\\\\\\d*>&\\\\\\\\d*|\\\\\\\\d*(>>|[<>])|\\\\\\\\d*<&|\\\\\\\\d*<>)(?![<>])\\\",\\\"name\\\":\\\"keyword.operator.redirect.shell\\\"}]},\\\"regex_comparison\\\":{\\\"match\\\":\\\"=~\\\",\\\"name\\\":\\\"keyword.operator.logical.regex.shell\\\"},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\".+\\\"}]},\\\"simple_options\\\":{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.dash.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"}},\\\"match\\\":\\\"[\\\\\\\\t ]++(-)(\\\\\\\\w+)\\\"}]}},\\\"match\\\":\\\"(?:[\\\\\\\\t ]++-\\\\\\\\w+)*\\\"},\\\"simple_unquoted\\\":{\\\"match\\\":\\\"[^\\\\\\\\t\\\\\\\\n \\\\\\\"$\\\\\\\\&-);<>\\\\\\\\\\\\\\\\`|]\\\",\\\"name\\\":\\\"string.unquoted.shell\\\"},\\\"special_expansion\\\":{\\\"match\\\":\\\"!|:[-=?]?|[*@]|##?|%%|[%/]\\\",\\\"name\\\":\\\"keyword.operator.expansion.shell\\\"},\\\"start_of_command\\\":{\\\"match\\\":\\\"[\\\\\\\\t ]*+(?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;])(?!nocorrect |nocorrect\\\\\\\\t|nocorrect$|readonly |readonly\\\\\\\\t|readonly$|function |function\\\\\\\\t|function$|foreach |foreach\\\\\\\\t|foreach$|coproc |coproc\\\\\\\\t|coproc$|logout |logout\\\\\\\\t|logout$|export |export\\\\\\\\t|export$|select |select\\\\\\\\t|select$|repeat |repeat\\\\\\\\t|repeat$|pushd |pushd\\\\\\\\t|pushd$|until |until\\\\\\\\t|until$|while |while\\\\\\\\t|while$|local |local\\\\\\\\t|local$|case |case\\\\\\\\t|case$|done |done\\\\\\\\t|done$|elif |elif\\\\\\\\t|elif$|else |else\\\\\\\\t|else$|esac |esac\\\\\\\\t|esac$|popd |popd\\\\\\\\t|popd$|then |then\\\\\\\\t|then$|time |time\\\\\\\\t|time$|for |for\\\\\\\\t|for$|end |end\\\\\\\\t|end$|fi |fi\\\\\\\\t|fi$|do |do\\\\\\\\t|do$|in |in\\\\\\\\t|in$|if |if\\\\\\\\t|if$)(?!\\\\\\\\\\\\\\\\\\\\\\\\n?$)\\\"},\\\"string\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.quoted.single.shell\\\"},{\\\"begin\\\":\\\"\\\\\\\\$?\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.quoted.double.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\$'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.quoted.single.dollar.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\['\\\\\\\\\\\\\\\\abefnrtv]\\\",\\\"name\\\":\\\"constant.character.escape.ansi-c.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[0-9]{3}\\\\\\\"\\\",\\\"name\\\":\\\"constant.character.escape.octal.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\x\\\\\\\\h{2}\\\\\\\"\\\",\\\"name\\\":\\\"constant.character.escape.hex.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c.\\\\\\\"\\\",\\\"name\\\":\\\"constant.character.escape.control-char.shell\\\"}]}]},\\\"subshell_dollar\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.subshell.single.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.subshell.single.shell\\\"}},\\\"name\\\":\\\"meta.scope.subshell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parenthese\\\"},{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"support\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])[.:](?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"support.function.builtin.shell\\\"}]},\\\"typical_statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#assignment_statement\\\"},{\\\"include\\\":\\\"#case_statement\\\"},{\\\"include\\\":\\\"#for_statement\\\"},{\\\"include\\\":\\\"#while_statement\\\"},{\\\"include\\\":\\\"#function_definition\\\"},{\\\"include\\\":\\\"#command_statement\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#arithmetic_double\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"variable\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.parameter.positional.all.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.positional.all.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)(@(?!\\\\\\\\w))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.parameter.positional.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.positional.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)([0-9](?!\\\\\\\\w))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.language.special.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.language.special.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)([-!#$*0?_](?!\\\\\\\\w))\\\"},{\\\"begin\\\":\\\"(\\\\\\\\$)(\\\\\\\\{)[\\\\\\\\t ]*+(?=\\\\\\\\d)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.parameter.positional.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell variable.parameter.positional.shell\\\"}},\\\"contentName\\\":\\\"meta.parameter-expansion\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell variable.parameter.positional.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#special_expansion\\\"},{\\\"include\\\":\\\"#array_access_inline\\\"},{\\\"match\\\":\\\"[0-9]+\\\",\\\"name\\\":\\\"variable.parameter.positional.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"variable.other.normal.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\$)(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell\\\"}},\\\"contentName\\\":\\\"meta.parameter-expansion\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#special_expansion\\\"},{\\\"include\\\":\\\"#array_access_inline\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"variable.other.normal.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.other.normal.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.normal.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)(\\\\\\\\w+(?!\\\\\\\\w))\\\"}]},\\\"while_statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(while)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.while.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.while.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#math_operators\\\"},{\\\"include\\\":\\\"#option\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"},{\\\"include\\\":\\\"#normal_context\\\"},{\\\"include\\\":\\\"#string\\\"}]}]}},\\\"scopeName\\\":\\\"source.shell\\\",\\\"aliases\\\":[\\\"bash\\\",\\\"sh\\\",\\\"shell\\\",\\\"zsh\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"SQL\\\",\\\"name\\\":\\\"sql\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"((?<!@)@)\\\\\\\\b(\\\\\\\\w+)\\\\\\\\b\\\",\\\"name\\\":\\\"text.variable\\\"},{\\\"match\\\":\\\"(\\\\\\\\[)[^]]*(])\\\",\\\"name\\\":\\\"text.bracketed\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.sql\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.function.sql\\\"}},\\\"match\\\":\\\"(?i:^\\\\\\\\s*(create(?:\\\\\\\\s+or\\\\\\\\s+replace)?)\\\\\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\\\\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\\\\\s+)([\\\\\\\"'`]?)(\\\\\\\\w+)\\\\\\\\4\\\",\\\"name\\\":\\\"meta.create.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.sql\\\"}},\\\"match\\\":\\\"(?i:^\\\\\\\\s*(drop)\\\\\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))\\\",\\\"name\\\":\\\"meta.drop.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.table.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.sql\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.other.cascade.sql\\\"}},\\\"match\\\":\\\"(?i:\\\\\\\\s*(drop)\\\\\\\\s+(table)\\\\\\\\s+(\\\\\\\\w+)(\\\\\\\\s+cascade)?\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.drop.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.table.sql\\\"}},\\\"match\\\":\\\"(?i:^\\\\\\\\s*(alter)\\\\\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\\\\\s+)\\\",\\\"name\\\":\\\"meta.alter.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"8\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"10\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"12\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"14\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"15\\\":{\\\"name\\\":\\\"storage.type.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\\\\\\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\\\\\\\b|\\\\\\\\b(bit\\\\\\\\svarying|character\\\\\\\\s(?:varying)?|tinyint|var\\\\\\\\schar|float|interval)\\\\\\\\((\\\\\\\\d+)\\\\\\\\)|\\\\\\\\b(char|number|varchar\\\\\\\\d?)\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+)\\\\\\\\))?|\\\\\\\\b(numeric|decimal)\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+),(\\\\\\\\d+)\\\\\\\\))?|\\\\\\\\b(times?)\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+)\\\\\\\\))?(\\\\\\\\swith(?:out)?\\\\\\\\stime\\\\\\\\szone\\\\\\\\b)?|\\\\\\\\b(timestamp)(s|tz)?\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+)\\\\\\\\))?(\\\\\\\\s(with(?:|out))\\\\\\\\stime\\\\\\\\szone\\\\\\\\b)?\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b((?:primary|foreign)\\\\\\\\s+key|references|on\\\\\\\\s+(delete|update)(\\\\\\\\s+cascade)?|nocheck|check|constraint|collate|default)\\\\\\\\b)\\\",\\\"name\\\":\\\"storage.modifier.sql\\\"},{\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(select(\\\\\\\\s+(all|distinct))?|insert\\\\\\\\s+(ignore\\\\\\\\s+)?into|update|delete|from|set|where|group\\\\\\\\s+by|or|like|and|union(\\\\\\\\s+all)?|having|order\\\\\\\\s+by|limit|cross\\\\\\\\s+join|join|straight_join|(inner|(left|right|full)(\\\\\\\\s+outer)?)\\\\\\\\s+join|natural(\\\\\\\\s+(inner|(left|right|full)(\\\\\\\\s+outer)?))?\\\\\\\\s+join)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.DML.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(on|off|((is\\\\\\\\s+)?not\\\\\\\\s+)?null)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.DDL.create.II.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\bvalues\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.DML.II.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(begin(\\\\\\\\s+work)?|start\\\\\\\\s+transaction|commit(\\\\\\\\s+work)?|rollback(\\\\\\\\s+work)?)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.LUW.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(grant(\\\\\\\\swith\\\\\\\\sgrant\\\\\\\\soption)?|revoke)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.authorization.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\bin\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.data-integrity.sql\\\"},{\\\"match\\\":\\\"(?i:^\\\\\\\\s*(comment\\\\\\\\s+on\\\\\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\\\\\s+)\\\",\\\"name\\\":\\\"keyword.other.object-comments.sql\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\bAS\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.alias.sql\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\b(DESC|ASC)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.order.sql\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.operator.star.sql\\\"},{\\\"match\\\":\\\"[!<>]?=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.comparison.sql\\\"},{\\\"match\\\":\\\"[-+/]\\\",\\\"name\\\":\\\"keyword.operator.math.sql\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.concatenator.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.aggregate.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(approx_count_distinct|approx_percentile_cont|approx_percentile_disc|avg|checksum_agg|count|count_big|group|grouping|grouping_id|max|min|sum|stdevp??|varp??)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.analytic.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.bitmanipulation.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b((?:bit_coun|get_bi|left_shif|right_shif|set_bi)t)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.conversion.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.collation.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(collationproperty|tertiary_weights)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.cryptographic.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.cursor.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(cursor_status)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.datetime.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|datetrunc|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.datatype.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.expression.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(coalesce|nullif)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.globalvar.sql\\\"}},\\\"match\\\":\\\"(?<!@)@@(?i)\\\\\\\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.json.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.logical.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(choose|iif|greatest|least)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.mathematical.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.metadata.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.ranking.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(rank|dense_rank|ntile|row_number)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.rowset.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.security.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.string.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.system.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.textimage.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(patindex|textptr|textvalid)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.vector.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(vector_(?:distance|norm|normalize))\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.other.database-name.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.other.table-name.sql\\\"}},\\\"match\\\":\\\"(\\\\\\\\w+?)\\\\\\\\.(\\\\\\\\w+)\\\"},{\\\"include\\\":\\\"#strings\\\"},{\\\"include\\\":\\\"#regexps\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_drop|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blockers|blocksize|bmk|both|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|checksum|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|connection|containment|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\\\\\\\\\\\\\s+or\\\\\\\\\\\\\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime2??|datetimeoffset|day(s)?|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_fulltext_language|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filegrowth|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|for|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hour(s)?|http|identity|identity_value|if|ifnull|ignore|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|incremental|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|leading|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|log|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|match|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minute(s)?|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|month|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|nested_triggers|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|nulls|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|quarter|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replace|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|respect|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|scalar|schema|schemabinding|scoped|scroll|scroll_locks|sddl|second|secexpr|seconds|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|sessions??|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|shortest_path|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablockx??|take|tape|target|target_index|target_partition|target_recovery_time|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|top??|torn_page_detection|track_columns_updated|trailing|tran|transaction|transfer|transform_noise_words|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|two_digit_year_cutoff|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|values??|varbinary|varchar|vector|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|wait_at_low_priority|waitfor|webmethod|week|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|windows??|with|within|within group|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|year|zone)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.scope.begin.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.scope.end.sql\\\"}},\\\"match\\\":\\\"(\\\\\\\\()(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.block.sql\\\"}],\\\"repository\\\":{\\\"comment-block\\\":{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.sql\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=--)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.sql\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"--\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.sql\\\"}},\\\"end\\\":\\\"\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-dash.sql\\\"}]},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.sql\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[]},{\\\"include\\\":\\\"#comment-block\\\"}]},\\\"regexps\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/(?=\\\\\\\\S.*/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.regexp.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\/\\\",\\\"name\\\":\\\"constant.character.escape.slash.sql\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.regexp.modr.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"}]}]},\\\"string_escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.sql\\\"},\\\"string_interpolation\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(#\\\\\\\\{)([^}]*)(})\\\",\\\"name\\\":\\\"string.interpolated.sql\\\"},\\\"strings\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(N)?(')[^']*(')\\\",\\\"name\\\":\\\"string.quoted.single.sql\\\"},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.quoted.single.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_escape\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(`)[^\\\\\\\\\\\\\\\\`]*(`)\\\",\\\"name\\\":\\\"string.quoted.other.backtick.sql\\\"},{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.quoted.other.backtick.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_escape\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(\\\\\\\")[^\\\\\\\"#]*(\\\\\\\")\\\",\\\"name\\\":\\\"string.quoted.double.sql\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.quoted.double.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"}]},{\\\"begin\\\":\\\"%\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.other.quoted.brackets.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"}]}]}},\\\"scopeName\\\":\\\"source.sql\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"TSX\\\",\\\"name\\\":\\\"tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"name\\\":\\\"meta.array.literal.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.tsx\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.tsx\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.tsx\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.tsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"name\\\":\\\"comment.block.documentation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"name\\\":\\\"comment.block.tsx\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.tsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.tsx\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.tsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.tsx\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.tsx\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.block.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.tsx\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.readwrite.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.tsx\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.tsx\\\"}},\\\"name\\\":\\\"meta.tag.tsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.tsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.tsx\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.tsx\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.tsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.tsx\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.tsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.tsx\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.tsx\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.tsx\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.tsx\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.tsx\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.tsx\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.tsx\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.tsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.tsx\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.tsx entity.name.function.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.tsx variable.object.property.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.tsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.tsx punctuation.accessor.optional.tsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.tsx keyword.operator.definiteassignment.tsx\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tsx\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.tsx entity.name.function.tsx\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.tsx entity.name.function.tsx\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.tsx entity.name.function.tsx\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.tsx\\\"}},\\\"name\\\":\\\"meta.parameters.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.tsx\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.tsx\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.tsx\\\"}},\\\"name\\\":\\\"string.regexp.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.tsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"name\\\":\\\"meta.import-equals.external.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.tsx\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.block.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.tsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.tsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.tsx\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.tsx\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.tsx\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.tsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.tsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"jsx\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes-in-expression\\\"},{\\\"include\\\":\\\"#jsx-tag-in-expression\\\"}]},\\\"jsx-children\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"},{\\\"include\\\":\\\"#jsx-tag\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.tsx\\\"}},\\\"match\\\":\\\"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+)(;)\\\",\\\"name\\\":\\\"constant.character.entity.tsx\\\"}]},\\\"jsx-evaluated-code\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.expression.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"jsx-string-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"}},\\\"name\\\":\\\"string.quoted.double.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-string-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"}},\\\"name\\\":\\\"string.quoted.single.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-tag\\\":{\\\"begin\\\":\\\"(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(/>)|(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"name\\\":\\\"meta.tag.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"}},\\\"end\\\":\\\"(?=/?>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes\\\"}]},{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.tsx\\\",\\\"end\\\":\\\"(?=</)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]}]},\\\"jsx-tag-attribute-assignment\\\":{\\\"match\\\":\\\"=(?=\\\\\\\\s*(?:[\\\\\\\"'{]|/\\\\\\\\*|//|\\\\\\\\n))\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"jsx-tag-attribute-name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.namespace.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.attribute-name.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\\\\\s]|/?>|/\\\\\\\\*|//)\\\"},\\\"jsx-tag-attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s+\\\",\\\"end\\\":\\\"(?=/?>)\\\",\\\"name\\\":\\\"meta.tag.attributes.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-name\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-assignment\\\"},{\\\"include\\\":\\\"#jsx-string-double-quoted\\\"},{\\\"include\\\":\\\"#jsx-string-single-quoted\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes-illegal\\\"}]},\\\"jsx-tag-attributes-illegal\\\":{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.attribute.tsx\\\"},\\\"jsx-tag-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?!<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\\\\\s+extends\\\\\\\\s+[^=>])|,))(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag\\\"}]},\\\"jsx-tag-without-attributes\\\":{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.tsx\\\",\\\"end\\\":\\\"(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"name\\\":\\\"meta.tag.without-attributes.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]},\\\"jsx-tag-without-attributes-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.tsx entity.name.function.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.tsx\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.tsx\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.tsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.tsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.tsx\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.tsx\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.tsx meta.object-literal.key.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.tsx meta.object-literal.key.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.tsx meta.object-literal.key.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.tsx\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.tsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.tsx\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx punctuation.separator.key-value.tsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx\\\"}},\\\"contentName\\\":\\\"meta.arrow.tsx meta.return.type.arrow.tsx\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.tsx\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.tsx\\\"}},\\\"name\\\":\\\"string.quoted.double.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.tsx\\\"}},\\\"name\\\":\\\"string.quoted.single.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.tsx\\\"}},\\\"name\\\":\\\"string.regexp.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.tsx\\\"}},\\\"name\\\":\\\"string.regexp.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.tsx\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.tsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.tsx\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.tsx\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.tsx\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.tsx\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"switch-statement.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"name\\\":\\\"switch-expression.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.tsx\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.tsx punctuation.definition.block.tsx\\\"}},\\\"contentName\\\":\\\"meta.block.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.tsx punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.begin.tsx\\\"}},\\\"contentName\\\":\\\"string.template.tsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.tsx\\\"}},\\\"name\\\":\\\"meta.template.expression.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.begin.tsx\\\"}},\\\"contentName\\\":\\\"string.template.tsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.tsx\\\"}},\\\"name\\\":\\\"meta.template.expression.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.tsx\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.tsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.tsx\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.tsx storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.tsx keyword.control.new.tsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.tsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.tsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.tsx\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.tsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.tsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.tsx\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.object.type.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.tsx\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.tsx\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.tsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.tsx\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.tsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.tsx\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.tsx\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.tsx\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"name\\\":\\\"meta.type.tuple.tsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.tsx\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.tsx\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx entity.name.function.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.readwrite.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.tsx\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"TypeScript\\\",\\\"name\\\":\\\"typescript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.objectliteral.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"name\\\":\\\"meta.array.literal.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.ts\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.ts\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.ts\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(<)\\\\\\\\s*(const)\\\\\\\\s*(>)\\\",\\\"name\\\":\\\"cast.expr.ts\\\"},{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=^return|[^$._[:alnum:]]return|^throw|[^$._[:alnum:]]throw|^yield|[^$._[:alnum:]]yield|^await|[^$._[:alnum:]]await|^default|[^$._[:alnum:]]default|[\\\\\\\\&(*,:=>?^|]|[^$_[:alnum:]](?:\\\\\\\\+\\\\\\\\+|--)|[^+]\\\\\\\\+|[^-]-)\\\\\\\\s*(<)(?!<?=)(?!\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"name\\\":\\\"cast.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?<=^)\\\\\\\\s*(<)(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"name\\\":\\\"cast.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.ts\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"name\\\":\\\"comment.block.documentation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"name\\\":\\\"comment.block.ts\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.ts\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.ts\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.ts\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.ts\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.ts\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.block.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.ts\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.readwrite.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.ts\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.ts\\\"}},\\\"name\\\":\\\"meta.tag.ts\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.ts\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.ts\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.ts\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.ts\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.ts\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.ts\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.ts\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.ts\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.ts\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.ts\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.ts\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.ts\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.ts\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.ts\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.ts\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.ts entity.name.function.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.ts variable.object.property.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.ts\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.ts\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.ts punctuation.accessor.optional.ts\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.ts keyword.operator.definiteassignment.ts\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.ts\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.ts entity.name.function.ts\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.ts entity.name.function.ts\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.ts entity.name.function.ts\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.ts\\\"}},\\\"name\\\":\\\"meta.parameters.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.ts\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.ts\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.ts\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.ts\\\"}},\\\"name\\\":\\\"string.regexp.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.ts\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"name\\\":\\\"meta.import-equals.external.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.ts\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.ts\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.ts\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.block.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.ts\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.ts\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.ts\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.ts\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.ts\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.ts\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.ts\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.ts entity.name.function.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.ts\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.ts\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.ts\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.ts\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.ts\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.ts\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.ts\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.objectliteral.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.ts meta.object-literal.key.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.ts meta.object-literal.key.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.ts meta.object-literal.key.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.ts\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.ts\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.ts\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts punctuation.separator.key-value.ts\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts\\\"}},\\\"contentName\\\":\\\"meta.arrow.ts meta.return.type.arrow.ts\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.ts\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.ts\\\"}},\\\"name\\\":\\\"string.quoted.double.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.ts\\\"}},\\\"name\\\":\\\"string.quoted.single.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.ts\\\"}},\\\"name\\\":\\\"string.regexp.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.ts\\\"}},\\\"name\\\":\\\"string.regexp.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.ts\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.ts\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.ts\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.ts\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.ts\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.ts\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"switch-statement.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"name\\\":\\\"switch-expression.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.ts\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.ts punctuation.definition.section.case-statement.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.ts punctuation.definition.block.ts\\\"}},\\\"contentName\\\":\\\"meta.block.ts\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.ts punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.ts punctuation.definition.section.case-statement.ts\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.begin.ts\\\"}},\\\"contentName\\\":\\\"string.template.ts\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.ts\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.ts\\\"}},\\\"name\\\":\\\"meta.template.expression.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.begin.ts\\\"}},\\\"contentName\\\":\\\"string.template.ts\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.ts\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.ts\\\"}},\\\"name\\\":\\\"meta.template.expression.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.ts\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.ts\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.ts\\\"}},\\\"name\\\":\\\"meta.type.parameters.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.ts\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.ts storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.ts keyword.control.new.ts\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.ts\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.ts\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.ts\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.ts\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.ts\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.ts\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.object.type.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.ts\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.ts\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.ts\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.ts\\\"}},\\\"name\\\":\\\"meta.type.parameters.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.ts\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.ts\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.ts\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.ts\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.ts\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"name\\\":\\\"meta.type.tuple.ts\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.ts\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.ts\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts entity.name.function.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.readwrite.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.ts\\\",\\\"aliases\\\":[\\\"ts\\\",\\\"cts\\\",\\\"mts\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"YAML\\\",\\\"fileTypes\\\":[\\\"yaml\\\",\\\"yml\\\",\\\"rviz\\\",\\\"reek\\\",\\\"clang-format\\\",\\\"yaml-tmlanguage\\\",\\\"syntax\\\",\\\"sublime-syntax\\\"],\\\"firstLineMatch\\\":\\\"^%YAML( ?1.\\\\\\\\d+)?\\\",\\\"name\\\":\\\"yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#property\\\"},{\\\"include\\\":\\\"#directive\\\"},{\\\"match\\\":\\\"^---\\\",\\\"name\\\":\\\"entity.other.document.begin.yaml\\\"},{\\\"match\\\":\\\"^\\\\\\\\.{3}\\\",\\\"name\\\":\\\"entity.other.document.end.yaml\\\"},{\\\"include\\\":\\\"#node\\\"}],\\\"repository\\\":{\\\"block-collection\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block-sequence\\\"},{\\\"include\\\":\\\"#block-mapping\\\"}]},\\\"block-mapping\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block-pair\\\"}]},\\\"block-node\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"include\\\":\\\"#block-scalar\\\"},{\\\"include\\\":\\\"#block-collection\\\"},{\\\"include\\\":\\\"#flow-scalar-plain-out\\\"},{\\\"include\\\":\\\"#flow-node\\\"}]},\\\"block-pair\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.key-value.begin.yaml\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\?)|^ *(:)|(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.expected-newline.yaml\\\"}},\\\"name\\\":\\\"meta.block-mapping.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block-node\\\"}]},{\\\"begin\\\":\\\"(?=(?:[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?]\\\\\\\\S)([^:\\\\\\\\s]|:\\\\\\\\S|\\\\\\\\s+(?![#\\\\\\\\s]))*\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-out-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?]\\\\\\\\S\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.yaml\\\"}},\\\"contentName\\\":\\\"entity.name.tag.yaml\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"name\\\":\\\"string.unquoted.plain.out.yaml\\\"}]},{\\\"match\\\":\\\":(?=\\\\\\\\s|$)\\\",\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"}]},\\\"block-scalar\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\|)|(>))([1-9])?([-+])?(.*\\\\\\\\n?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.block-scalar.literal.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.flow.block-scalar.folded.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.indentation-indicator.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.chomping-indicator.yaml\\\"},\\\"5\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\".+\\\",\\\"name\\\":\\\"invalid.illegal.expected-comment-or-newline.yaml\\\"}]}},\\\"end\\\":\\\"^(?=\\\\\\\\S)|(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"^( +)(?! )\\\",\\\"end\\\":\\\"^(?!\\\\\\\\1|\\\\\\\\s*$)\\\",\\\"name\\\":\\\"string.unquoted.block.yaml\\\"}]},\\\"block-sequence\\\":{\\\"match\\\":\\\"(-)(?!\\\\\\\\S)\\\",\\\"name\\\":\\\"punctuation.definition.block.sequence.item.yaml\\\"},\\\"comment\\\":{\\\"begin\\\":\\\"(?:^([\\\\\\\\t ]*)|[\\\\\\\\t ]+)(?=#\\\\\\\\p{print}*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.yaml\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.yaml\\\"}},\\\"end\\\":\\\"\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.number-sign.yaml\\\"}]},\\\"directive\\\":{\\\"begin\\\":\\\"^%\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.directive.begin.yaml\\\"}},\\\"end\\\":\\\"(?=$|[\\\\\\\\t ]+($|#))\\\",\\\"name\\\":\\\"meta.directive.yaml\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.directive.yaml.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.numeric.yaml-version.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G(YAML)[\\\\\\\\t ]+(\\\\\\\\d+\\\\\\\\.\\\\\\\\d+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.directive.tag.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.tag-handle.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.type.tag-prefix.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G(TAG)(?:[\\\\\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\\\\\t ]+(!(?:%\\\\\\\\h{2}|[]!#$\\\\\\\\&-;=?-\\\\\\\\[_a-z~])*|(?![]!,\\\\\\\\[{}])(?:%\\\\\\\\h{2}|[]!#$\\\\\\\\&-;=?-\\\\\\\\[_a-z~])+))?)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.directive.reserved.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.directive-name.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.unquoted.directive-parameter.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G(\\\\\\\\w+)(?:[\\\\\\\\t ]+(\\\\\\\\w+)(?:[\\\\\\\\t ]+(\\\\\\\\w+))?)?\\\"},{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.unrecognized.yaml\\\"}]},\\\"flow-alias\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.alias.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.alias.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.alias.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"invalid.illegal.character.anchor.yaml\\\"}},\\\"match\\\":\\\"((\\\\\\\\*))([^],/\\\\\\\\[{}\\\\\\\\s]+)([^],}\\\\\\\\s]\\\\\\\\S*)?\\\"},\\\"flow-collection\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-sequence\\\"},{\\\"include\\\":\\\"#flow-mapping\\\"}]},\\\"flow-mapping\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.mapping.begin.yaml\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.mapping.end.yaml\\\"}},\\\"name\\\":\\\"meta.flow-mapping.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.mapping.yaml\\\"},{\\\"include\\\":\\\"#flow-pair\\\"}]},\\\"flow-node\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"include\\\":\\\"#flow-alias\\\"},{\\\"include\\\":\\\"#flow-collection\\\"},{\\\"include\\\":\\\"#flow-scalar\\\"}]},\\\"flow-pair\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.key-value.begin.yaml\\\"}},\\\"end\\\":\\\"(?=[],}])\\\",\\\"name\\\":\\\"meta.flow-pair.explicit.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"include\\\":\\\"#flow-pair\\\"},{\\\"include\\\":\\\"#flow-node\\\"},{\\\"begin\\\":\\\":(?=\\\\\\\\s|$|[],\\\\\\\\[{}])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"}},\\\"end\\\":\\\"(?=[],}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-value\\\"}]}]},{\\\"begin\\\":\\\"(?=(?:[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?][^],\\\\\\\\[{}\\\\\\\\s])([^],:\\\\\\\\[{}\\\\\\\\s]|:[^],\\\\\\\\[{}\\\\\\\\s]|\\\\\\\\s+(?![#\\\\\\\\s]))*\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\",\\\"name\\\":\\\"meta.flow-pair.key.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-in-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?][^],\\\\\\\\[{}\\\\\\\\s]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.yaml\\\"}},\\\"contentName\\\":\\\"entity.name.tag.yaml\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\",\\\"name\\\":\\\"string.unquoted.plain.in.yaml\\\"}]},{\\\"include\\\":\\\"#flow-node\\\"},{\\\"begin\\\":\\\":(?=\\\\\\\\s|$|[],\\\\\\\\[{}])\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"}},\\\"end\\\":\\\"(?=[],}])\\\",\\\"name\\\":\\\"meta.flow-pair.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-value\\\"}]}]},\\\"flow-scalar\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-double-quoted\\\"},{\\\"include\\\":\\\"#flow-scalar-single-quoted\\\"},{\\\"include\\\":\\\"#flow-scalar-plain-in\\\"}]},\\\"flow-scalar-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.yaml\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.yaml\\\"}},\\\"name\\\":\\\"string.quoted.double.yaml\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([ \\\\\\\"/0LN\\\\\\\\\\\\\\\\_abefnprtv]|x\\\\\\\\d\\\\\\\\d|u\\\\\\\\d{4}|U\\\\\\\\d{8})\\\",\\\"name\\\":\\\"constant.character.escape.yaml\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\n\\\",\\\"name\\\":\\\"constant.character.escape.double-quoted.newline.yaml\\\"}]},\\\"flow-scalar-plain-in\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-in-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?][^],\\\\\\\\[{}\\\\\\\\s]\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\",\\\"name\\\":\\\"string.unquoted.plain.in.yaml\\\"}]},\\\"flow-scalar-plain-in-implicit-type\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.null.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.language.boolean.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.integer.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.float.yaml\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.timestamp.yaml\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.language.value.yaml\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.language.merge.yaml\\\"}},\\\"match\\\":\\\"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\\\\\.[0-9_]*|[-+]?\\\\\\\\.(?:inf|Inf|INF)|\\\\\\\\.(?:nan|NaN|NAN))|(\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2}|\\\\\\\\d{4}-\\\\\\\\d{1,2}-\\\\\\\\d{1,2}(?:[Tt]|[\\\\\\\\t ]+)\\\\\\\\d{1,2}:\\\\\\\\d{2}:\\\\\\\\d{2}(?:\\\\\\\\.\\\\\\\\d*)?(?:[\\\\\\\\t ]*Z|[-+]\\\\\\\\d{1,2}(?::\\\\\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\"}]},\\\"flow-scalar-plain-out\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-out-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?]\\\\\\\\S\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"name\\\":\\\"string.unquoted.plain.out.yaml\\\"}]},\\\"flow-scalar-plain-out-implicit-type\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.null.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.language.boolean.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.integer.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.float.yaml\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.timestamp.yaml\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.language.value.yaml\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.language.merge.yaml\\\"}},\\\"match\\\":\\\"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\\\\\.[0-9_]*|[-+]?\\\\\\\\.(?:inf|Inf|INF)|\\\\\\\\.(?:nan|NaN|NAN))|(\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2}|\\\\\\\\d{4}-\\\\\\\\d{1,2}-\\\\\\\\d{1,2}(?:[Tt]|[\\\\\\\\t ]+)\\\\\\\\d{1,2}:\\\\\\\\d{2}:\\\\\\\\d{2}(?:\\\\\\\\.\\\\\\\\d*)?(?:[\\\\\\\\t ]*Z|[-+]\\\\\\\\d{1,2}(?::\\\\\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\"}]},\\\"flow-scalar-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.yaml\\\"}},\\\"end\\\":\\\"'(?!')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.yaml\\\"}},\\\"name\\\":\\\"string.quoted.single.yaml\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"''\\\",\\\"name\\\":\\\"constant.character.escape.single-quoted.yaml\\\"}]},\\\"flow-sequence\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.sequence.begin.yaml\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.sequence.end.yaml\\\"}},\\\"name\\\":\\\"meta.flow-sequence.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.sequence.yaml\\\"},{\\\"include\\\":\\\"#flow-pair\\\"},{\\\"include\\\":\\\"#flow-node\\\"}]},\\\"flow-value\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(?![],}])\\\",\\\"end\\\":\\\"(?=[],}])\\\",\\\"name\\\":\\\"meta.flow-pair.value.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-node\\\"}]}]},\\\"node\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block-node\\\"}]},\\\"property\\\":{\\\"begin\\\":\\\"(?=[!\\\\\\\\&])\\\",\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.property.yaml\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.property.anchor.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.anchor.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.anchor.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"invalid.illegal.character.anchor.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G((&))([^],/\\\\\\\\[{}\\\\\\\\s]+)(\\\\\\\\S+)?\\\"},{\\\"match\\\":\\\"\\\\\\\\G!(?:<(?:%\\\\\\\\h{2}|[]!#$\\\\\\\\&-;=?-\\\\\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\\\\\h{2}|[#$\\\\\\\\&-+\\\\\\\\--;=?-Z_a-z~])+|)(?=[\\\\\\\\t ]|$)\\\",\\\"name\\\":\\\"storage.type.tag-handle.yaml\\\"},{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.tag-handle.yaml\\\"}]},\\\"prototype\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#property\\\"}]}},\\\"scopeName\\\":\\\"source.yaml\\\",\\\"aliases\\\":[\\\"yml\\\"]}\"))\n\nexport default [\nlang\n]\n", "/* Theme: dark-plus */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"actionBar.toggledBackground\\\":\\\"#383a49\\\",\\\"activityBarBadge.background\\\":\\\"#007ACC\\\",\\\"checkbox.border\\\":\\\"#6B6B6B\\\",\\\"editor.background\\\":\\\"#1E1E1E\\\",\\\"editor.foreground\\\":\\\"#D4D4D4\\\",\\\"editor.inactiveSelectionBackground\\\":\\\"#3A3D41\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#ADD6FF26\\\",\\\"editorIndentGuide.activeBackground1\\\":\\\"#707070\\\",\\\"editorIndentGuide.background1\\\":\\\"#404040\\\",\\\"input.placeholderForeground\\\":\\\"#A6A6A6\\\",\\\"list.activeSelectionIconForeground\\\":\\\"#FFF\\\",\\\"list.dropBackground\\\":\\\"#383B3D\\\",\\\"menu.background\\\":\\\"#252526\\\",\\\"menu.border\\\":\\\"#454545\\\",\\\"menu.foreground\\\":\\\"#CCCCCC\\\",\\\"menu.selectionBackground\\\":\\\"#0078d4\\\",\\\"menu.separatorBackground\\\":\\\"#454545\\\",\\\"ports.iconRunningProcessForeground\\\":\\\"#369432\\\",\\\"sideBarSectionHeader.background\\\":\\\"#0000\\\",\\\"sideBarSectionHeader.border\\\":\\\"#ccc3\\\",\\\"sideBarTitle.foreground\\\":\\\"#BBBBBB\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#16825D\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#FFF\\\",\\\"tab.lastPinnedBorder\\\":\\\"#ccc3\\\",\\\"tab.selectedBackground\\\":\\\"#222222\\\",\\\"tab.selectedForeground\\\":\\\"#ffffffa0\\\",\\\"terminal.inactiveSelectionBackground\\\":\\\"#3A3D41\\\",\\\"widget.border\\\":\\\"#303031\\\"},\\\"displayName\\\":\\\"Dark Plus\\\",\\\"name\\\":\\\"dark-plus\\\",\\\"semanticHighlighting\\\":true,\\\"semanticTokenColors\\\":{\\\"customLiteral\\\":\\\"#DCDCAA\\\",\\\"newOperator\\\":\\\"#C586C0\\\",\\\"numberLiteral\\\":\\\"#b5cea8\\\",\\\"stringLiteral\\\":\\\"#ce9178\\\"},\\\"tokenColors\\\":[{\\\"scope\\\":[\\\"meta.embedded\\\",\\\"source.groovy.embedded\\\",\\\"string meta.image.inline.markdown\\\",\\\"variable.legacy.builtin.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#D4D4D4\\\"}},{\\\"scope\\\":\\\"emphasis\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"strong\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\"}},{\\\"scope\\\":\\\"header\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000080\\\"}},{\\\"scope\\\":\\\"comment\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"}},{\\\"scope\\\":\\\"constant.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"constant.numeric\\\",\\\"variable.other.enummember\\\",\\\"keyword.operator.plus.exponent\\\",\\\"keyword.operator.minus.exponent\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":\\\"constant.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#646695\\\"}},{\\\"scope\\\":\\\"entity.name.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"entity.name.tag.css\\\",\\\"entity.name.tag.less\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":\\\"entity.other.attribute-name\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name.class.css\\\",\\\"source.css entity.other.attribute-name.class\\\",\\\"entity.other.attribute-name.id.css\\\",\\\"entity.other.attribute-name.parent-selector.css\\\",\\\"entity.other.attribute-name.parent.less\\\",\\\"source.css entity.other.attribute-name.pseudo-class\\\",\\\"entity.other.attribute-name.pseudo-element.css\\\",\\\"source.css.less entity.other.attribute-name.id\\\",\\\"entity.other.attribute-name.scss\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":\\\"invalid\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#f44747\\\"}},{\\\"scope\\\":\\\"markup.underline\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"}},{\\\"scope\\\":\\\"markup.bold\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"markup.heading\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"markup.italic\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"markup.strikethrough\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"strikethrough\\\"}},{\\\"scope\\\":\\\"markup.inserted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":\\\"markup.deleted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"markup.changed\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"punctuation.definition.quote.begin.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"}},{\\\"scope\\\":\\\"punctuation.definition.list.begin.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#6796e6\\\"}},{\\\"scope\\\":\\\"markup.inline.raw\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"punctuation.definition.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#808080\\\"}},{\\\"scope\\\":[\\\"meta.preprocessor\\\",\\\"entity.name.function.preprocessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.string\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.numeric\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":\\\"meta.structure.dictionary.key.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":\\\"meta.diff.header\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"storage\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"storage.type\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"storage.modifier\\\",\\\"keyword.operator.noexcept\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"string\\\",\\\"meta.embedded.assembly\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"string.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"string.value\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"string.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.template-expression.begin\\\",\\\"punctuation.definition.template-expression.end\\\",\\\"punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"meta.template.expression\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"}},{\\\"scope\\\":[\\\"support.type.vendored.property-name\\\",\\\"support.type.property-name\\\",\\\"source.css variable\\\",\\\"source.coffee.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":\\\"keyword\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"keyword.control\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"keyword.operator\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"}},{\\\"scope\\\":[\\\"keyword.operator.new\\\",\\\"keyword.operator.expression\\\",\\\"keyword.operator.cast\\\",\\\"keyword.operator.sizeof\\\",\\\"keyword.operator.alignof\\\",\\\"keyword.operator.typeid\\\",\\\"keyword.operator.alignas\\\",\\\"keyword.operator.instanceof\\\",\\\"keyword.operator.logical.python\\\",\\\"keyword.operator.wordlike\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"keyword.other.unit\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":[\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.end.php\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"support.function.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":\\\"constant.sha.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":[\\\"storage.modifier.import.java\\\",\\\"variable.language.wildcard.java\\\",\\\"storage.modifier.package.java\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"}},{\\\"scope\\\":\\\"variable.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"entity.name.function\\\",\\\"support.function\\\",\\\"support.constant.handlebars\\\",\\\"source.powershell variable.other.member\\\",\\\"entity.name.operator.custom-literal\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"}},{\\\"scope\\\":[\\\"support.class\\\",\\\"support.type\\\",\\\"entity.name.type\\\",\\\"entity.name.namespace\\\",\\\"entity.other.attribute\\\",\\\"entity.name.scope-resolution\\\",\\\"entity.name.class\\\",\\\"storage.type.numeric.go\\\",\\\"storage.type.byte.go\\\",\\\"storage.type.boolean.go\\\",\\\"storage.type.string.go\\\",\\\"storage.type.uintptr.go\\\",\\\"storage.type.error.go\\\",\\\"storage.type.rune.go\\\",\\\"storage.type.cs\\\",\\\"storage.type.generic.cs\\\",\\\"storage.type.modifier.cs\\\",\\\"storage.type.variable.cs\\\",\\\"storage.type.annotation.java\\\",\\\"storage.type.generic.java\\\",\\\"storage.type.java\\\",\\\"storage.type.object.array.java\\\",\\\"storage.type.primitive.array.java\\\",\\\"storage.type.primitive.java\\\",\\\"storage.type.token.java\\\",\\\"storage.type.groovy\\\",\\\"storage.type.annotation.groovy\\\",\\\"storage.type.parameters.groovy\\\",\\\"storage.type.generic.groovy\\\",\\\"storage.type.object.array.groovy\\\",\\\"storage.type.primitive.array.groovy\\\",\\\"storage.type.primitive.groovy\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"}},{\\\"scope\\\":[\\\"meta.type.cast.expr\\\",\\\"meta.type.new.expr\\\",\\\"support.constant.math\\\",\\\"support.constant.dom\\\",\\\"support.constant.json\\\",\\\"entity.other.inherited-class\\\",\\\"punctuation.separator.namespace.ruby\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"}},{\\\"scope\\\":[\\\"keyword.control\\\",\\\"source.cpp keyword.operator.new\\\",\\\"keyword.operator.delete\\\",\\\"keyword.other.using\\\",\\\"keyword.other.directive.using\\\",\\\"keyword.other.operator\\\",\\\"entity.name.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C586C0\\\"}},{\\\"scope\\\":[\\\"variable\\\",\\\"meta.definition.variable.name\\\",\\\"support.variable\\\",\\\"entity.name.variable\\\",\\\"constant.other.placeholder\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"}},{\\\"scope\\\":[\\\"variable.other.constant\\\",\\\"variable.other.enummember\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4FC1FF\\\"}},{\\\"scope\\\":[\\\"meta.object-literal.key\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"}},{\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.group.regexp\\\",\\\"punctuation.definition.group.assertion.regexp\\\",\\\"punctuation.definition.character-class.regexp\\\",\\\"punctuation.character.set.begin.regexp\\\",\\\"punctuation.character.set.end.regexp\\\",\\\"keyword.operator.negation.regexp\\\",\\\"support.other.parenthesis.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"}},{\\\"scope\\\":[\\\"constant.character.character-class.regexp\\\",\\\"constant.other.character-class.set.regexp\\\",\\\"constant.other.character-class.regexp\\\",\\\"constant.character.set.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"}},{\\\"scope\\\":[\\\"keyword.operator.or.regexp\\\",\\\"keyword.control.anchor.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"}},{\\\"scope\\\":\\\"keyword.operator.quantifier.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":[\\\"constant.character\\\",\\\"constant.other.option\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"constant.character.escape\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":\\\"entity.name.label\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#C8C8C8\\\"}}],\\\"type\\\":\\\"dark\\\"}\"))\n", "/* Theme: light-plus */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"actionBar.toggledBackground\\\":\\\"#dddddd\\\",\\\"activityBarBadge.background\\\":\\\"#007ACC\\\",\\\"checkbox.border\\\":\\\"#919191\\\",\\\"diffEditor.unchangedRegionBackground\\\":\\\"#f8f8f8\\\",\\\"editor.background\\\":\\\"#FFFFFF\\\",\\\"editor.foreground\\\":\\\"#000000\\\",\\\"editor.inactiveSelectionBackground\\\":\\\"#E5EBF1\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#ADD6FF80\\\",\\\"editorIndentGuide.activeBackground1\\\":\\\"#939393\\\",\\\"editorIndentGuide.background1\\\":\\\"#D3D3D3\\\",\\\"editorSuggestWidget.background\\\":\\\"#F3F3F3\\\",\\\"input.placeholderForeground\\\":\\\"#767676\\\",\\\"list.activeSelectionIconForeground\\\":\\\"#FFF\\\",\\\"list.focusAndSelectionOutline\\\":\\\"#90C2F9\\\",\\\"list.hoverBackground\\\":\\\"#E8E8E8\\\",\\\"menu.border\\\":\\\"#D4D4D4\\\",\\\"notebook.cellBorderColor\\\":\\\"#E8E8E8\\\",\\\"notebook.selectedCellBackground\\\":\\\"#c8ddf150\\\",\\\"ports.iconRunningProcessForeground\\\":\\\"#369432\\\",\\\"searchEditor.textInputBorder\\\":\\\"#CECECE\\\",\\\"settings.numberInputBorder\\\":\\\"#CECECE\\\",\\\"settings.textInputBorder\\\":\\\"#CECECE\\\",\\\"sideBarSectionHeader.background\\\":\\\"#0000\\\",\\\"sideBarSectionHeader.border\\\":\\\"#61616130\\\",\\\"sideBarTitle.foreground\\\":\\\"#6F6F6F\\\",\\\"statusBarItem.errorBackground\\\":\\\"#c72e0f\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#16825D\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#FFF\\\",\\\"tab.lastPinnedBorder\\\":\\\"#61616130\\\",\\\"tab.selectedBackground\\\":\\\"#ffffffa5\\\",\\\"tab.selectedForeground\\\":\\\"#333333b3\\\",\\\"terminal.inactiveSelectionBackground\\\":\\\"#E5EBF1\\\",\\\"widget.border\\\":\\\"#d4d4d4\\\"},\\\"displayName\\\":\\\"Light Plus\\\",\\\"name\\\":\\\"light-plus\\\",\\\"semanticHighlighting\\\":true,\\\"semanticTokenColors\\\":{\\\"customLiteral\\\":\\\"#795E26\\\",\\\"newOperator\\\":\\\"#AF00DB\\\",\\\"numberLiteral\\\":\\\"#098658\\\",\\\"stringLiteral\\\":\\\"#a31515\\\"},\\\"tokenColors\\\":[{\\\"scope\\\":[\\\"meta.embedded\\\",\\\"source.groovy.embedded\\\",\\\"string meta.image.inline.markdown\\\",\\\"variable.legacy.builtin.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#000000ff\\\"}},{\\\"scope\\\":\\\"emphasis\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"strong\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\"}},{\\\"scope\\\":\\\"meta.diff.header\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000080\\\"}},{\\\"scope\\\":\\\"comment\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#008000\\\"}},{\\\"scope\\\":\\\"constant.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"constant.numeric\\\",\\\"variable.other.enummember\\\",\\\"keyword.operator.plus.exponent\\\",\\\"keyword.operator.minus.exponent\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":\\\"constant.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#811f3f\\\"}},{\\\"scope\\\":\\\"entity.name.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"entity.name.selector\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"entity.other.attribute-name\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#e50000\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name.class.css\\\",\\\"source.css entity.other.attribute-name.class\\\",\\\"entity.other.attribute-name.id.css\\\",\\\"entity.other.attribute-name.parent-selector.css\\\",\\\"entity.other.attribute-name.parent.less\\\",\\\"source.css entity.other.attribute-name.pseudo-class\\\",\\\"entity.other.attribute-name.pseudo-element.css\\\",\\\"source.css.less entity.other.attribute-name.id\\\",\\\"entity.other.attribute-name.scss\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"invalid\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#cd3131\\\"}},{\\\"scope\\\":\\\"markup.underline\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"}},{\\\"scope\\\":\\\"markup.bold\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#000080\\\"}},{\\\"scope\\\":\\\"markup.heading\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"markup.italic\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"markup.strikethrough\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"strikethrough\\\"}},{\\\"scope\\\":\\\"markup.inserted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":\\\"markup.deleted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#a31515\\\"}},{\\\"scope\\\":\\\"markup.changed\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.quote.begin.markdown\\\",\\\"punctuation.definition.list.begin.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"markup.inline.raw\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"punctuation.definition.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":[\\\"meta.preprocessor\\\",\\\"entity.name.function.preprocessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.string\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#a31515\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.numeric\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":\\\"meta.structure.dictionary.key.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"storage\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"storage.type\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"storage.modifier\\\",\\\"keyword.operator.noexcept\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"string\\\",\\\"meta.embedded.assembly\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#a31515\\\"}},{\\\"scope\\\":[\\\"string.comment.buffered.block.pug\\\",\\\"string.quoted.pug\\\",\\\"string.interpolated.pug\\\",\\\"string.unquoted.plain.in.yaml\\\",\\\"string.unquoted.plain.out.yaml\\\",\\\"string.unquoted.block.yaml\\\",\\\"string.quoted.single.yaml\\\",\\\"string.quoted.double.xml\\\",\\\"string.quoted.single.xml\\\",\\\"string.unquoted.cdata.xml\\\",\\\"string.quoted.double.html\\\",\\\"string.quoted.single.html\\\",\\\"string.unquoted.html\\\",\\\"string.quoted.single.handlebars\\\",\\\"string.quoted.double.handlebars\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"string.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#811f3f\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.template-expression.begin\\\",\\\"punctuation.definition.template-expression.end\\\",\\\"punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"meta.template.expression\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":[\\\"support.type.vendored.property-name\\\",\\\"support.type.property-name\\\",\\\"source.css variable\\\",\\\"source.coffee.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#e50000\\\"}},{\\\"scope\\\":[\\\"support.type.property-name.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"keyword\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"keyword.control\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"keyword.operator\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"keyword.operator.new\\\",\\\"keyword.operator.expression\\\",\\\"keyword.operator.cast\\\",\\\"keyword.operator.sizeof\\\",\\\"keyword.operator.alignof\\\",\\\"keyword.operator.typeid\\\",\\\"keyword.operator.alignas\\\",\\\"keyword.operator.instanceof\\\",\\\"keyword.operator.logical.python\\\",\\\"keyword.operator.wordlike\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"keyword.other.unit\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":[\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.end.php\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"support.function.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"constant.sha.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":[\\\"storage.modifier.import.java\\\",\\\"variable.language.wildcard.java\\\",\\\"storage.modifier.package.java\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":\\\"variable.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"entity.name.function\\\",\\\"support.function\\\",\\\"support.constant.handlebars\\\",\\\"source.powershell variable.other.member\\\",\\\"entity.name.operator.custom-literal\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#795E26\\\"}},{\\\"scope\\\":[\\\"support.class\\\",\\\"support.type\\\",\\\"entity.name.type\\\",\\\"entity.name.namespace\\\",\\\"entity.other.attribute\\\",\\\"entity.name.scope-resolution\\\",\\\"entity.name.class\\\",\\\"storage.type.numeric.go\\\",\\\"storage.type.byte.go\\\",\\\"storage.type.boolean.go\\\",\\\"storage.type.string.go\\\",\\\"storage.type.uintptr.go\\\",\\\"storage.type.error.go\\\",\\\"storage.type.rune.go\\\",\\\"storage.type.cs\\\",\\\"storage.type.generic.cs\\\",\\\"storage.type.modifier.cs\\\",\\\"storage.type.variable.cs\\\",\\\"storage.type.annotation.java\\\",\\\"storage.type.generic.java\\\",\\\"storage.type.java\\\",\\\"storage.type.object.array.java\\\",\\\"storage.type.primitive.array.java\\\",\\\"storage.type.primitive.java\\\",\\\"storage.type.token.java\\\",\\\"storage.type.groovy\\\",\\\"storage.type.annotation.groovy\\\",\\\"storage.type.parameters.groovy\\\",\\\"storage.type.generic.groovy\\\",\\\"storage.type.object.array.groovy\\\",\\\"storage.type.primitive.array.groovy\\\",\\\"storage.type.primitive.groovy\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#267f99\\\"}},{\\\"scope\\\":[\\\"meta.type.cast.expr\\\",\\\"meta.type.new.expr\\\",\\\"support.constant.math\\\",\\\"support.constant.dom\\\",\\\"support.constant.json\\\",\\\"entity.other.inherited-class\\\",\\\"punctuation.separator.namespace.ruby\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#267f99\\\"}},{\\\"scope\\\":[\\\"keyword.control\\\",\\\"source.cpp keyword.operator.new\\\",\\\"source.cpp keyword.operator.delete\\\",\\\"keyword.other.using\\\",\\\"keyword.other.directive.using\\\",\\\"keyword.other.operator\\\",\\\"entity.name.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#AF00DB\\\"}},{\\\"scope\\\":[\\\"variable\\\",\\\"meta.definition.variable.name\\\",\\\"support.variable\\\",\\\"entity.name.variable\\\",\\\"constant.other.placeholder\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#001080\\\"}},{\\\"scope\\\":[\\\"variable.other.constant\\\",\\\"variable.other.enummember\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0070C1\\\"}},{\\\"scope\\\":[\\\"meta.object-literal.key\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#001080\\\"}},{\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.group.regexp\\\",\\\"punctuation.definition.group.assertion.regexp\\\",\\\"punctuation.definition.character-class.regexp\\\",\\\"punctuation.character.set.begin.regexp\\\",\\\"punctuation.character.set.end.regexp\\\",\\\"keyword.operator.negation.regexp\\\",\\\"support.other.parenthesis.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"}},{\\\"scope\\\":[\\\"constant.character.character-class.regexp\\\",\\\"constant.other.character-class.set.regexp\\\",\\\"constant.other.character-class.regexp\\\",\\\"constant.character.set.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#811f3f\\\"}},{\\\"scope\\\":\\\"keyword.operator.quantifier.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"keyword.operator.or.regexp\\\",\\\"keyword.control.anchor.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#EE0000\\\"}},{\\\"scope\\\":[\\\"constant.character\\\",\\\"constant.other.option\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"constant.character.escape\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#EE0000\\\"}},{\\\"scope\\\":\\\"entity.name.label\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}}],\\\"type\\\":\\\"light\\\"}\"))\n", "export const SHIKI_LIGHT_THEME = \"light-plus\";\nexport const SHIKI_DARK_THEME = \"dark-plus\";\n\nconst LANGUAGE_ALIASES: Record<string, string> = {\n bash: \"sh\",\n golang: \"go\",\n javascript: \"js\",\n markdown: \"md\",\n plaintext: \"text\",\n py: \"python\",\n shell: \"sh\",\n text: \"text\",\n ts: \"ts\",\n typescript: \"ts\",\n xml: \"html\",\n yml: \"yaml\",\n zsh: \"sh\"\n};\n\nconst SUPPORTED_LANGUAGES = new Set([\n \"css\",\n \"go\",\n \"html\",\n \"js\",\n \"jsx\",\n \"json\",\n \"md\",\n \"python\",\n \"sh\",\n \"sql\",\n \"text\",\n \"tsx\",\n \"ts\",\n \"yaml\"\n]);\n\nexport function normalizeCodeLanguage(language: string | undefined): string {\n const raw = (language || \"text\").trim().toLowerCase().split(/\\s+/)[0] || \"text\";\n const normalized = LANGUAGE_ALIASES[raw] || raw;\n return SUPPORTED_LANGUAGES.has(normalized) ? normalized : \"text\";\n}\n", "import { createHighlighterCore, type HighlighterCore } from \"shiki/core\";\nimport { createJavaScriptRegexEngine } from \"shiki/engine/javascript\";\nimport css from \"@shikijs/langs/css\";\nimport go from \"@shikijs/langs/go\";\nimport html from \"@shikijs/langs/html\";\nimport javascript from \"@shikijs/langs/javascript\";\nimport json from \"@shikijs/langs/json\";\nimport jsx from \"@shikijs/langs/jsx\";\nimport markdown from \"@shikijs/langs/md\";\nimport python from \"@shikijs/langs/python\";\nimport shell from \"@shikijs/langs/sh\";\nimport sql from \"@shikijs/langs/sql\";\nimport tsx from \"@shikijs/langs/tsx\";\nimport typescript from \"@shikijs/langs/typescript\";\nimport yaml from \"@shikijs/langs/yaml\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport { normalizeCodeLanguage, SHIKI_DARK_THEME, SHIKI_LIGHT_THEME } from \"../../src/markdown/highlightLanguage\";\nimport { escapeHtml } from \"../../src/utils/html\";\n\nlet highlighterPromise: Promise<HighlighterCore> | undefined;\n\nexport { normalizeCodeLanguage, SHIKI_DARK_THEME, SHIKI_LIGHT_THEME };\n\nexport async function highlightCodeBlockHtml(code: string, language: string | undefined): Promise<string> {\n const normalizedLanguage = normalizeCodeLanguage(language);\n try {\n const highlighter = await getHighlighter();\n const html = highlighter.codeToHtml(code, {\n lang: normalizedLanguage,\n themes: {\n light: SHIKI_LIGHT_THEME,\n dark: SHIKI_DARK_THEME\n },\n defaultColor: false\n });\n return extractCodeHtml(html, code);\n } catch {\n return renderPlainCodeLinesHtml(code);\n }\n}\n\nfunction renderPlainCodeLinesHtml(code: string): string {\n const normalized = code.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n return normalized\n .split(\"\\n\")\n .map((line) => `<span class=\"line\">${escapeHtml(line)}</span>`)\n .join(\"\\n\");\n}\n\nfunction getHighlighter(): Promise<HighlighterCore> {\n if (!highlighterPromise) {\n highlighterPromise = createHighlighterCore({\n themes: [lightPlus, darkPlus],\n langs: [\n css,\n go,\n html,\n javascript,\n json,\n jsx,\n markdown,\n python,\n shell,\n sql,\n tsx,\n typescript,\n yaml\n ],\n engine: createJavaScriptRegexEngine()\n });\n }\n return highlighterPromise;\n}\n\nfunction extractCodeHtml(html: string, fallbackCode: string): string {\n const match = html.match(/<code>([\\s\\S]*)<\\/code>\\s*<\\/pre>$/);\n return match ? match[1] : renderPlainCodeLinesHtml(fallbackCode);\n}\n", "export interface ToolbarGroup {\n name: string;\n actions: string[];\n}\n\nexport const TOOLBAR_GROUPS: ToolbarGroup[] = [\n { name: \"text\", actions: [\"bold\", \"italic\", \"underline\", \"strike\", \"highlight\"] },\n { name: \"structure\", actions: [\"heading\", \"hr\", \"quote\", \"list\", \"ordered-list\", \"task\", \"task-checked\"] },\n { name: \"insert\", actions: [\"link\", \"image\", \"inline-code\", \"code\", \"table\"] },\n { name: \"advanced\", actions: [\"math\", \"mermaid\", \"toc\", \"organizeMarkdown\", \"more\"] },\n { name: \"help\", actions: [\"switchBackgroundTheme\", \"help\"] }\n];\n\nexport const HEADING_MENU_ACTIONS = [\"heading-1\", \"heading-2\", \"heading-3\", \"heading-4\", \"heading-5\", \"heading-6\"];\n\nexport const MORE_MENU_ACTIONS = [\"export-html\", \"export-pdf\", \"export-all\"];\n\nexport const HOST_TOOLBAR_ACTIONS = new Set([\n \"toc\",\n \"organizeMarkdown\",\n \"switchBackgroundTheme\",\n \"help\",\n \"export-html\",\n \"export-pdf\",\n \"export-all\"\n]);\n\nexport const SUPER_MARKDOWN_ISSUES_URL = \"https://github.com/SivanCola/super-markdown/issues\";\n\nconst TOOLBAR_CODICON_ACTIONS: Record<string, string> = {\n bold: \"bold\",\n italic: \"italic\",\n strike: \"strikethrough\",\n heading: \"text-size\",\n \"heading-1\": \"text-size\",\n \"heading-2\": \"text-size\",\n \"heading-3\": \"text-size\",\n \"heading-4\": \"text-size\",\n \"heading-5\": \"text-size\",\n \"heading-6\": \"text-size\",\n hr: \"horizontal-rule\",\n quote: \"quote\",\n list: \"list-unordered\",\n \"ordered-list\": \"list-ordered\",\n task: \"tasklist\",\n \"task-checked\": \"check-all\",\n link: \"link\",\n image: \"file-media\",\n \"inline-code\": \"code\",\n code: \"file-code\",\n table: \"table\",\n toc: \"list-tree\",\n organizeMarkdown: \"tools\",\n switchBackgroundTheme: \"color-mode\",\n help: \"question\",\n more: \"more\",\n \"export-html\": \"export\",\n \"export-pdf\": \"export\",\n \"export-all\": \"export\"\n};\n\nconst TOOLBAR_CUSTOM_ICONS: Record<string, string> = {\n underline: customSvg('<path d=\"M7 4v5a5 5 0 0 0 10 0V4\"/><path d=\"M5 20h14\"/>'),\n highlight: customSvg('<path d=\"m5 15 8.8-8.8 2 2L7 17H5v-2Z\"/><path d=\"m12.5 7.5 2 2\"/><path d=\"M4 20h16\"/>'),\n math: customSvg('<path d=\"M17 5H7l5 7-5 7h10\"/>'),\n mermaid: customSvg('<path d=\"M12 4v5\"/><path d=\"M6 15v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2\"/><rect x=\"9\" y=\"3\" width=\"6\" height=\"4\" rx=\"1\"/><rect x=\"3\" y=\"11\" width=\"6\" height=\"4\" rx=\"1\"/><rect x=\"15\" y=\"11\" width=\"6\" height=\"4\" rx=\"1\"/><path d=\"M12 9H6v2\"/><path d=\"M12 9h6v2\"/>')\n};\n\nexport function renderToolbarIcon(action: string): string {\n const customIcon = TOOLBAR_CUSTOM_ICONS[action];\n if (customIcon) {\n return customIcon;\n }\n const codicon = TOOLBAR_CODICON_ACTIONS[action] || \"question\";\n return `<span class=\"codicon codicon-${codicon}\"></span>`;\n}\n\nfunction customSvg(content: string): string {\n return `<svg class=\"toolbar-custom-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">${content}</svg>`;\n}\n", "import { Editor, defaultValueCtx, editorViewCtx, nodeViewCtx, rootCtx } from \"@milkdown/kit/core\";\nimport type { Node as ProseNode } from \"@milkdown/kit/prose/model\";\nimport type { NodeView } from \"@milkdown/kit/prose/view\";\nimport remarkMath from \"remark-math\";\nimport {\n commonmark,\n createCodeBlockCommand,\n insertHrCommand,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleLinkCommand,\n toggleStrongCommand,\n wrapInBlockquoteCommand,\n wrapInBulletListCommand,\n wrapInHeadingCommand,\n wrapInOrderedListCommand\n} from \"@milkdown/kit/preset/commonmark\";\nimport { gfm, insertTableCommand, toggleStrikethroughCommand } from \"@milkdown/kit/preset/gfm\";\nimport { listener, listenerCtx } from \"@milkdown/kit/plugin/listener\";\nimport { clipboard } from \"@milkdown/kit/plugin/clipboard\";\nimport { history } from \"@milkdown/kit/plugin/history\";\nimport { trailing } from \"@milkdown/kit/plugin/trailing\";\nimport { $nodeSchema, $remark, callCommand, getMarkdown, insert, replaceAll, replaceRange } from \"@milkdown/kit/utils\";\nimport {\n CODE_BLOCK_CLASSES,\n codeBlockToneLabel,\n nextCodeBlockTone,\n normalizeCodeBlockTone,\n type BlockToneLabels,\n type CodeCopyLabels\n} from \"../../src/markdown/codeBlockActions\";\nimport {\n detectBlockquoteAdmonition,\n isSafeInlineHtmlTag,\n renderInertInlineHtml,\n renderKatexHtml,\n resolveFootnoteReference,\n type SafeInlineHtmlTag\n} from \"../../src/markdown/features\";\nimport { highlightCodeBlockHtml, normalizeCodeLanguage } from \"./highlight-runtime\";\nimport { HEADING_MENU_ACTIONS, MORE_MENU_ACTIONS, renderToolbarIcon, SUPER_MARKDOWN_ISSUES_URL, TOOLBAR_GROUPS } from \"../../src/wysiwyg/toolbar\";\nimport type { ImageResource } from \"../../src/wysiwyg/protocol\";\n\ndeclare const acquireVsCodeApi: () => {\n postMessage(message: unknown): void;\n getState(): unknown;\n setState(state: unknown): void;\n};\n\ntype PreviewState = {\n markdown: string;\n html: string;\n headings: Array<{ level: number; text: string; slug?: string; line: number }>;\n};\n\ntype Payload = {\n text?: string;\n mode?: string;\n layout?: string;\n mermaidScript?: string;\n preview?: PreviewState;\n imageResources?: ImageResource[];\n katexEnabled?: boolean;\n translations?: {\n toolbar?: Record<string, string>;\n noHeadings?: string;\n copiedCode?: string;\n copyCode?: string;\n\t codeTheme?: string;\n\t codeThemeAuto?: string;\n\t codeThemeLight?: string;\n\t codeThemeDark?: string;\n\t editLanguage?: string;\n\t mathEdit?: string;\n\t mathDone?: string;\n\t rawHtmlEscaped?: string;\n\t };\n\t};\n\nconst vscode = acquireVsCodeApi();\nconst payloadElement = document.getElementById(\"payload\") as HTMLElement | null;\nconst templatePayload = payloadElement instanceof HTMLTemplateElement ? payloadElement.content.textContent : undefined;\nconst payloadText = payloadElement ? templatePayload || payloadElement.textContent || \"{}\" : \"{}\";\nconst payload = JSON.parse(payloadText) as Payload;\nconst translations = payload.translations || {};\nconst toolbarText = translations.toolbar || {};\nconst codeCopyLabels: CodeCopyLabels = {\n copyLabel: translations.copyCode || \"Copy code\",\n copiedLabel: translations.copiedCode || \"Copied\"\n};\n\ntype MermaidRuntime = {\n initialize(options: { startOnLoad: boolean; securityLevel: string }): void;\n run(options: { nodes: NodeListOf<HTMLElement> }): Promise<void> | void;\n};\n\ndeclare global {\n interface Window {\n mermaid?: MermaidRuntime;\n }\n}\nconst codeToneLabels: BlockToneLabels = {\n toneLabel: translations.codeTheme || \"Block colors\",\n autoLabel: translations.codeThemeAuto || \"Auto\",\n lightLabel: translations.codeThemeLight || \"Light\",\n darkLabel: translations.codeThemeDark || \"Dark\"\n};\nconst visualLabels = {\n editLanguage: translations.editLanguage || \"Edit language\",\n mathEdit: translations.mathEdit || \"Edit\",\n mathDone: translations.mathDone || \"Done\",\n rawHtmlEscaped: translations.rawHtmlEscaped || \"Raw HTML escaped\"\n};\nconst mathRenderOptions = { katexEnabled: payload.katexEnabled !== false };\nconst sourceEditor = mustElement<HTMLTextAreaElement>(\"source-editor\");\nconst visualEditor = mustElement<HTMLElement>(\"visual-editor\");\nconst previewElement = mustElement<HTMLElement>(\"preview\");\nconst toolbarElement = mustElement<HTMLElement>(\"editor-toolbar-slot\");\nconst sidePanelElement = mustElement<HTMLElement>(\"side-panel\");\nconst sidePanelToggleElement = mustElement<HTMLButtonElement>(\"side-panel-toggle\");\nconst sidePanelCollapseElement = document.getElementById(\"side-panel-collapse\") as HTMLButtonElement | null;\nconst outlineCurrentElement = document.getElementById(\"outline-current\") as HTMLButtonElement | null;\nconst outlineElement = mustElement<HTMLElement>(\"outline\");\nconst searchElement = mustElement<HTMLInputElement>(\"outline-search\");\n\nlet currentMarkdown = payload.text || \"\";\nlet currentMode = normalizeMode(payload.mode || \"source\");\nlet currentLayout = normalizeLayout(payload.layout || \"workbench\");\nlet previewState = normalizePreviewState(payload.preview);\nlet imageResources = normalizeImageResources(payload.imageResources);\nlet milkdownEditor: Editor | null = null;\nlet milkdownReady = false;\nlet milkdownReadyPromise: Promise<void> | null = null;\nlet visualImageObserver: MutationObserver | null = null;\nlet mermaidRuntimePromise: Promise<MermaidRuntime> | null = null;\nlet mermaidRenderQueue: Promise<void> = Promise.resolve();\nlet applyingHostUpdate = false;\nlet applyingMilkdownUpdate = false;\nlet scrollSyncSuppressTarget = \"\";\nlet editorScrollFrame = 0;\nlet scrollSyncReleaseTimer = 0;\nlet activeSourceSelection = { start: 0, end: 0 };\nlet sidePanelOpen = false;\nlet currentOutlineHeadings: PreviewState[\"headings\"] = [];\nlet activeOutlineId = \"\";\n\nasync function boot(): Promise<void> {\n try {\n renderToolbar();\n sourceEditor.value = currentMarkdown;\n renderPreview();\n renderSidePanels(currentMarkdown);\n bindEvents();\n applyLayout();\n setScriptState(\"runtime-ready\", \"ready\");\n post(\"ready\");\n } catch (error) {\n setScriptError(error);\n post(\"error\", { message: getErrorMessage(error) });\n }\n}\n\nfunction mustElement<T extends HTMLElement>(id: string): T {\n const element = document.getElementById(id);\n if (!element) {\n throw new Error(`Missing webview element: ${id}`);\n }\n return element as T;\n}\n\nfunction post(type: string, body?: Record<string, unknown>): void {\n vscode.postMessage(Object.assign({ type }, body || {}));\n}\n\nfunction debounce<T extends (...args: never[]) => void>(fn: T, delay: number): T {\n let timer: number | undefined;\n return function (this: unknown, ...args: never[]) {\n window.clearTimeout(timer);\n timer = window.setTimeout(() => fn.apply(this, args), delay);\n } as T;\n}\n\nconst syncToHost = debounce(function () {\n if (applyingHostUpdate) {\n return;\n }\n previewState = null;\n post(\"edit\", { text: currentMarkdown });\n}, 180);\n\nfunction normalizeMode(mode: string): string {\n if (mode === \"wysiwyg\" || mode === \"ir\") {\n return \"wysiwyg\";\n }\n if (mode === \"preview\") {\n return \"preview\";\n }\n if (mode === \"split\") {\n return \"split\";\n }\n return \"source\";\n}\n\nfunction normalizeLayout(layout: string): string {\n return [\"workbench\", \"editorOnly\", \"splitEdit\", \"previewOnly\"].includes(layout) ? layout : \"workbench\";\n}\n\nfunction normalizePreviewState(value: unknown): PreviewState | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n const candidate = value as Partial<PreviewState>;\n return {\n markdown: typeof candidate.markdown === \"string\" ? candidate.markdown : currentMarkdown,\n html: typeof candidate.html === \"string\" ? candidate.html : \"\",\n headings: Array.isArray(candidate.headings) ? candidate.headings : []\n };\n}\n\nfunction normalizeImageResources(value: unknown): ImageResource[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .filter((item): item is ImageResource => {\n const candidate = item as Partial<ImageResource>;\n return typeof candidate.source === \"string\" && typeof candidate.resolved === \"string\";\n })\n .map((item) => ({ source: item.source, resolved: item.resolved }));\n}\n\nfunction setScriptState(state: string, diag: string): void {\n document.body.dataset.scriptState = state;\n document.body.dataset.scriptDiag = diag;\n toolbarElement.dataset.scriptDiag = diag;\n}\n\nfunction setScriptError(error: unknown): void {\n const message = getErrorMessage(error);\n document.body.dataset.scriptState = \"error\";\n document.body.dataset.scriptError = message;\n toolbarElement.dataset.scriptError = message;\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.name && error.name !== \"Error\" ? `${error.name}: ${error.message}` : error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error && typeof error === \"object\") {\n const candidate = error as { message?: unknown; name?: unknown; error?: unknown; stack?: unknown };\n const parts = [\n typeof candidate.name === \"string\" ? candidate.name : \"\",\n typeof candidate.message === \"string\" ? candidate.message : \"\",\n typeof candidate.error === \"string\" ? candidate.error : \"\",\n typeof candidate.stack === \"string\" ? candidate.stack.split(/\\r?\\n/)[0] : \"\"\n ].filter(Boolean);\n if (parts.length > 0) {\n return Array.from(new Set(parts)).join(\": \");\n }\n try {\n return JSON.stringify(error);\n } catch {\n return Object.prototype.toString.call(error);\n }\n }\n return String(error || \"Unknown error\");\n}\n\nfunction label(name: string, fallback: string): string {\n return typeof toolbarText[name] === \"string\" ? toolbarText[name] : fallback;\n}\n\nfunction escapeHtml(value: unknown): string {\n return String(value)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nfunction escapeAttribute(value: unknown): string {\n return escapeHtml(value).replace(/'/g, \"'\");\n}\n\nfunction closestElement(target: EventTarget | null, selector: string): HTMLElement | null {\n const element = target && target instanceof Element ? target : (target as Node | null)?.parentElement;\n return element?.closest?.(selector) as HTMLElement | null;\n}\n\nfunction renderToolbar(): void {\n toolbarElement.innerHTML = TOOLBAR_GROUPS\n .map((group) => `<div class=\"toolbar-group toolbar-group-${group.name}\">${group.actions.map(renderToolbarItem).join(\"\")}</div>`)\n .join(\"\");\n}\n\nfunction renderToolbarItem(action: string): string {\n if (action === \"heading\") {\n return toolbarMenu(action, toolbarTitle(action), toolbarIcon(action), HEADING_MENU_ACTIONS, \"toolbar-heading-menu\");\n }\n if (action === \"more\") {\n return toolbarMenu(action, toolbarTitle(action), toolbarIcon(action), MORE_MENU_ACTIONS, \"toolbar-more-menu\");\n }\n return toolbarButton(action, toolbarTitle(action), toolbarIcon(action));\n}\n\nfunction toolbarButton(action: string, title: string, icon: string): string {\n return `<button type=\"button\" class=\"toolbar-button\" data-action=\"${action}\" title=\"${escapeAttribute(title)}\" aria-label=\"${escapeAttribute(title)}\"><span class=\"toolbar-icon\" aria-hidden=\"true\">${icon}</span></button>`;\n}\n\nfunction toolbarMenu(action: string, title: string, icon: string, menuActions: string[], className: string): string {\n return `<div class=\"toolbar-menu-wrapper ${className}\">\n <button type=\"button\" class=\"toolbar-button toolbar-menu-toggle\" data-menu-toggle=\"${action}\" title=\"${escapeAttribute(title)}\" aria-label=\"${escapeAttribute(title)}\" aria-expanded=\"false\">\n <span class=\"toolbar-icon\" aria-hidden=\"true\">${icon}</span>\n <span class=\"toolbar-caret codicon codicon-arrow-small-down\" aria-hidden=\"true\"></span>\n </button>\n <div class=\"toolbar-menu\" data-menu=\"${action}\" hidden>\n ${menuActions.map(toolbarMenuButton).join(\"\")}\n </div>\n </div>`;\n}\n\nfunction toolbarMenuButton(action: string): string {\n const title = toolbarTitle(action);\n return `<button type=\"button\" class=\"toolbar-menu-button\" data-action=\"${action}\" title=\"${escapeAttribute(title)}\" aria-label=\"${escapeAttribute(title)}\">\n <span class=\"toolbar-menu-icon\" aria-hidden=\"true\">${toolbarIcon(action)}</span>\n <span class=\"toolbar-menu-label\">${escapeHtml(title)}</span>\n </button>`;\n}\n\nfunction toolbarIcon(action: string): string {\n return renderToolbarIcon(action);\n}\n\nfunction toolbarTitle(action: string): string {\n const heading = action.match(/^heading-([1-6])$/);\n if (heading) {\n return `${label(\"heading\", \"Heading\")} ${heading[1]}`;\n }\n const titles: Record<string, string> = {\n bold: label(\"bold\", \"Bold\"),\n italic: label(\"italic\", \"Italic\"),\n underline: label(\"underline\", \"Underline\"),\n highlight: label(\"highlight\", \"Highlight\"),\n strike: label(\"strike\", \"Strike\"),\n heading: label(\"heading\", \"Heading\"),\n hr: label(\"hr\", \"Rule\"),\n quote: label(\"quote\", \"Quote\"),\n list: label(\"list\", \"List\"),\n \"ordered-list\": label(\"orderedList\", \"Ordered list\"),\n task: label(\"task\", \"Task\"),\n \"task-checked\": label(\"taskChecked\", \"Checked task\"),\n link: label(\"link\", \"Link\"),\n image: label(\"image\", \"Image\"),\n \"inline-code\": label(\"inlineCode\", \"Inline code\"),\n code: label(\"code\", \"Code block\"),\n table: label(\"table\", \"Table\"),\n math: label(\"math\", \"Math\"),\n mermaid: label(\"mermaid\", \"Mermaid\"),\n toc: label(\"toc\", \"Table of contents\"),\n more: label(\"more\", \"More\"),\n organizeMarkdown: label(\"organizeMarkdown\", \"Organize Markdown\"),\n switchBackgroundTheme: label(\"switchBackgroundTheme\", \"Switch Reading Theme\"),\n help: label(\"help\", \"Help\"),\n \"export-html\": `${label(\"export\", \"Export\")} HTML`,\n \"export-pdf\": `${label(\"export\", \"Export\")} PDF`,\n \"export-all\": `${label(\"export\", \"Export\")} ${label(\"all\", \"All\")}`\n };\n return titles[action] || action;\n}\n\nfunction bindEvents(): void {\n sourceEditor.addEventListener(\"input\", () => {\n rememberSourceSelection();\n currentMarkdown = sourceEditor.value;\n renderSidePanels(currentMarkdown);\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n });\n for (const eventName of [\"focus\", \"select\", \"click\", \"keyup\", \"mouseup\"]) {\n sourceEditor.addEventListener(eventName, rememberSourceSelection);\n }\n toolbarElement.addEventListener(\"mousedown\", (event) => {\n if (closestElement(event.target, \".toolbar-button, .toolbar-menu-button\")) {\n event.preventDefault();\n }\n });\n toolbarElement.addEventListener(\"click\", (event) => {\n const menuToggle = closestElement(event.target, \"[data-menu-toggle]\");\n if (menuToggle) {\n event.preventDefault();\n toggleToolbarMenu(menuToggle.dataset.menuToggle || \"\");\n return;\n }\n const buttonElement = closestElement(event.target, \"[data-action]\");\n if (buttonElement) {\n event.preventDefault();\n closeToolbarMenus();\n void handleToolbarAction(buttonElement.dataset.action || \"\");\n }\n });\n previewElement.addEventListener(\"click\", handleCodeBlockActionClick);\n visualEditor.addEventListener(\"click\", handleCodeBlockActionClick);\n sidePanelToggleElement.addEventListener(\"click\", toggleSidePanelFromEvent);\n sidePanelCollapseElement?.addEventListener(\"click\", () => setSidePanelOpen(false));\n outlineCurrentElement?.addEventListener(\"click\", revealActiveOutlineItem);\n searchElement.addEventListener(\"input\", () => renderSidePanels(currentMarkdown));\n outlineElement.addEventListener(\"click\", handleOutlineClick);\n document.addEventListener(\"click\", (event) => {\n if (!toolbarElement.contains(event.target as Node)) {\n closeToolbarMenus();\n }\n });\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n closeToolbarMenus();\n }\n });\n window.addEventListener(\"message\", handleHostMessage);\n}\n\nfunction handleHostMessage(event: MessageEvent): void {\n const message = event.data || {};\n if (message.type === \"setMarkdown\" && typeof message.text === \"string\") {\n applyingHostUpdate = true;\n setMarkdown(message.text, message.preview, message.imageResources);\n applyingHostUpdate = false;\n } else if (message.type === \"setEditorState\") {\n if (typeof message.layout === \"string\") {\n currentLayout = normalizeLayout(message.layout);\n }\n if (typeof message.mode === \"string\") {\n currentMode = normalizeMode(message.mode);\n }\n applyLayout();\n } else if (message.type === \"uploadImagesResult\") {\n if (Array.isArray(message.images)) {\n insertMarkdown(message.images.map((image: { markdown?: string }) => image.markdown).filter(Boolean).join(\"\\n\"));\n } else if (message.error !== undefined) {\n insertMarkdown(\"![alt](image.png)\");\n post(\"error\", { message: getErrorMessage(message.error) });\n }\n }\n}\n\nfunction setMarkdown(markdown: string, preview: unknown, nextImageResources?: unknown): void {\n currentMarkdown = markdown;\n previewState = normalizePreviewState(preview);\n imageResources = normalizeImageResources(nextImageResources);\n if (sourceEditor.value !== markdown) {\n sourceEditor.value = markdown;\n }\n renderPreview();\n renderSidePanels(markdown);\n syncMilkdownFromMarkdown(markdown);\n resolveVisualImagesSoon();\n}\n\nfunction renderPreview(): void {\n if (previewState && previewState.markdown === currentMarkdown && previewState.html) {\n previewElement.innerHTML = `<article class=\"markdown-body\">${previewState.html}</article>`;\n } else {\n previewElement.innerHTML = `<article class=\"markdown-body\"><pre class=\"static-preview-source\">${escapeHtml(currentMarkdown)}</pre></article>`;\n }\n void runMermaid();\n bindEditorScrollSync();\n}\n\nfunction resolveVisualImagesSoon(): void {\n if (!imageResources.length) {\n return;\n }\n window.requestAnimationFrame(resolveVisualImages);\n window.setTimeout(resolveVisualImages, 50);\n window.setTimeout(resolveVisualImages, 250);\n}\n\nfunction resolveVisualImages(): void {\n if (!imageResources.length) {\n return;\n }\n const resources = new Map<string, string>();\n for (const resource of imageResources) {\n for (const key of imageSourceKeys(resource.source)) {\n resources.set(key, resource.resolved);\n }\n }\n visualEditor.querySelectorAll<HTMLImageElement>(\"img\").forEach((image) => {\n const rawSource = image.getAttribute(\"src\") || \"\";\n const resolved = resolveImageResource(rawSource, resources);\n if (resolved && image.src !== resolved) {\n image.dataset.superMarkdownSource = rawSource;\n image.setAttribute(\"src\", resolved);\n image.src = resolved;\n }\n });\n}\n\nfunction resolveImageResource(source: string, resources: Map<string, string>): string | undefined {\n const candidates = imageSourceKeys(source);\n for (const candidate of candidates) {\n const resolved = resources.get(candidate);\n if (resolved) {\n return resolved;\n }\n }\n return undefined;\n}\n\nfunction imageSourceKeys(source: string): string[] {\n const normalized = stripHashAndQuery(String(source || \"\").trim());\n const decoded = decodeUriSafe(normalized);\n const componentDecoded = decodeUriComponentSafe(normalized);\n const encoded = encodeURI(decoded);\n const withoutDot = decoded.replace(/^\\.\\//, \"\");\n return Array.from(new Set([\n source,\n normalized,\n decoded,\n componentDecoded,\n encoded,\n `./${decoded}`,\n `./${componentDecoded}`,\n `./${encoded}`,\n withoutDot,\n componentDecoded.replace(/^\\.\\//, \"\"),\n encodeURI(withoutDot)\n ].filter(Boolean)));\n}\n\nfunction decodeUriSafe(value: string): string {\n try {\n return decodeURI(value);\n } catch {\n return value;\n }\n}\n\nfunction decodeUriComponentSafe(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction stripHashAndQuery(value: string): string {\n return value.split(\"#\")[0].split(\"?\")[0];\n}\n\nfunction startVisualImageObserver(): void {\n if (visualImageObserver) {\n return;\n }\n visualImageObserver = new MutationObserver((mutations) => {\n if (!imageResources.length) {\n return;\n }\n const changedImages = mutations.some((mutation) => {\n if (mutation.type === \"attributes\") {\n return mutation.target instanceof HTMLImageElement && mutation.attributeName === \"src\";\n }\n return Array.from(mutation.addedNodes).some((node) => {\n if (node instanceof HTMLImageElement) {\n return true;\n }\n return node instanceof Element && Boolean(node.querySelector(\"img\"));\n });\n });\n if (changedImages) {\n resolveVisualImagesSoon();\n }\n });\n visualImageObserver.observe(visualEditor, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\"src\"]\n });\n}\n\nfunction createCodeBlockCopyButton(): HTMLButtonElement {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = CODE_BLOCK_CLASSES.copyButton;\n button.dataset.copyLabel = codeCopyLabels.copyLabel;\n button.dataset.copiedLabel = codeCopyLabels.copiedLabel;\n button.textContent = codeCopyLabels.copyLabel;\n return button;\n}\n\nfunction createCodeBlockToneButton(tone: string | undefined): HTMLButtonElement {\n const normalizedTone = normalizeCodeBlockTone(tone);\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = CODE_BLOCK_CLASSES.toneButton;\n button.dataset.blockTone = normalizedTone;\n button.dataset.toneLabel = codeToneLabels.toneLabel;\n button.dataset.toneAutoLabel = codeToneLabels.autoLabel;\n button.dataset.toneLightLabel = codeToneLabels.lightLabel;\n button.dataset.toneDarkLabel = codeToneLabels.darkLabel;\n button.textContent = codeBlockToneLabel(normalizedTone, codeToneLabels);\n updateToneButtonTitle(button, normalizedTone);\n return button;\n}\n\nfunction createCodeBlockNodeView(node: ProseNode, view: unknown, getPos: (() => number) | boolean): NodeView {\n let currentNode = node;\n let highlightVersion = 0;\n let mermaidVersion = 0;\n const dom = document.createElement(\"figure\");\n dom.className = `${CODE_BLOCK_CLASSES.block} visual-code-node-view`;\n dom.dataset.renderBlockTone = \"auto\";\n\n const caption = document.createElement(\"figcaption\");\n caption.contentEditable = \"false\";\n\n const languageField = document.createElement(\"span\");\n languageField.className = \"visual-code-language-field\";\n languageField.contentEditable = \"false\";\n\n const language = document.createElement(\"button\");\n language.type = \"button\";\n language.className = `${CODE_BLOCK_CLASSES.language} visual-code-language-button`;\n language.title = visualLabels.editLanguage;\n language.setAttribute(\"aria-label\", visualLabels.editLanguage);\n\n const languageInput = document.createElement(\"input\");\n languageInput.className = \"visual-code-language-input\";\n languageInput.hidden = true;\n languageInput.spellcheck = false;\n languageInput.setAttribute(\"aria-label\", visualLabels.editLanguage);\n languageField.append(language, languageInput);\n\n const actions = document.createElement(\"span\");\n actions.className = CODE_BLOCK_CLASSES.actionGroup;\n actions.contentEditable = \"false\";\n const copyButton = createCodeBlockCopyButton();\n const toneButton = createCodeBlockToneButton(dom.dataset.renderBlockTone);\n bindCodeBlockActionButton(copyButton, copyCodeFromButton);\n bindCodeBlockActionButton(toneButton, cycleCodeBlockTone);\n actions.append(copyButton, toneButton);\n\n const pre = document.createElement(\"pre\");\n pre.className = \"visual-code-editor\";\n const code = document.createElement(\"code\");\n code.spellcheck = false;\n pre.append(code);\n const highlightPre = document.createElement(\"pre\");\n highlightPre.className = \"visual-code-highlight\";\n highlightPre.setAttribute(\"aria-hidden\", \"true\");\n highlightPre.contentEditable = \"false\";\n const highlightCode = document.createElement(\"code\");\n highlightPre.append(highlightCode);\n const codeFrame = document.createElement(\"div\");\n codeFrame.className = \"visual-code-frame\";\n codeFrame.append(highlightPre, pre);\n const mermaidPreview = document.createElement(\"div\");\n mermaidPreview.className = \"visual-mermaid-preview\";\n mermaidPreview.contentEditable = \"false\";\n mermaidPreview.tabIndex = 0;\n const mermaidSource = document.createElement(\"pre\");\n mermaidSource.className = \"mermaid\";\n mermaidSource.contentEditable = \"false\";\n mermaidPreview.append(mermaidSource);\n caption.append(languageField, actions);\n dom.append(caption, mermaidPreview, codeFrame);\n\n const updateLanguage = (nextNode: ProseNode) => {\n const rawLanguage = getCodeBlockLanguage(nextNode);\n const isMermaid = isMermaidCodeBlock(nextNode);\n const nextLanguage = isMermaid ? \"mermaid\" : normalizeCodeLanguage(rawLanguage);\n const displayLanguage = rawLanguage || nextLanguage;\n language.textContent = displayLanguage;\n languageInput.value = rawLanguage || nextLanguage;\n pre.dataset.language = nextLanguage;\n dom.classList.toggle(\"visual-mermaid-node-view\", isMermaid);\n dom.classList.toggle(CODE_BLOCK_CLASSES.diagramBlock, isMermaid);\n code.className = `language-${toLanguageClassName(nextLanguage)}`;\n highlightCode.className = `shiki shiki-themes light-plus dark-plus language-${toLanguageClassName(nextLanguage)}`;\n };\n\n const updateHighlight = () => {\n if (isMermaidCodeBlock(currentNode)) {\n highlightVersion += 1;\n highlightCode.textContent = \"\";\n dom.classList.remove(\"is-highlight-ready\");\n return;\n }\n const version = ++highlightVersion;\n const codeText = currentNode.textContent;\n const codeLanguage = normalizeCodeLanguage(getCodeBlockLanguage(currentNode));\n void highlightCodeBlockHtml(codeText, codeLanguage).then((html) => {\n if (version !== highlightVersion) {\n return;\n }\n highlightCode.innerHTML = html || \"<span class=\\\"line\\\"></span>\";\n dom.classList.add(\"is-highlight-ready\");\n });\n };\n\n const updateMermaidPreview = () => {\n const version = ++mermaidVersion;\n if (!isMermaidCodeBlock(currentNode)) {\n mermaidSource.textContent = \"\";\n return;\n }\n resetMermaidElement(mermaidSource, currentNode.textContent);\n void queueMermaidElementRender(mermaidSource).then(() => {\n if (version !== mermaidVersion) {\n resetMermaidElement(mermaidSource, currentNode.textContent);\n void queueMermaidElementRender(mermaidSource);\n }\n });\n };\n\n const openMermaidSource = () => {\n if (!isMermaidCodeBlock(currentNode)) {\n return;\n }\n dom.classList.add(\"is-editing\");\n };\n\n const closeLanguageEditor = (commit: boolean) => {\n languageInput.hidden = true;\n language.hidden = false;\n if (commit) {\n updateNodeAttrs(view, getPos, { language: languageInput.value.trim() || \"text\" });\n syncCurrentMarkdownFromMilkdownSoon();\n } else {\n languageInput.value = getCodeBlockLanguage(currentNode);\n }\n language.focus();\n };\n\n language.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n language.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n language.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n language.hidden = true;\n languageInput.hidden = false;\n languageInput.value = getCodeBlockLanguage(currentNode);\n languageInput.focus();\n languageInput.select();\n });\n languageInput.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n languageInput.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n languageInput.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n closeLanguageEditor(true);\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n closeLanguageEditor(false);\n }\n });\n languageInput.addEventListener(\"blur\", () => {\n if (!languageInput.hidden) {\n closeLanguageEditor(true);\n }\n });\n mermaidPreview.addEventListener(\"dblclick\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n openMermaidSource();\n });\n mermaidPreview.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n openMermaidSource();\n }\n });\n codeFrame.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\" && isMermaidCodeBlock(currentNode)) {\n dom.classList.remove(\"is-editing\");\n mermaidPreview.focus();\n }\n });\n updateLanguage(currentNode);\n updateHighlight();\n updateMermaidPreview();\n\n return {\n dom,\n contentDOM: code,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n currentNode = nextNode;\n updateLanguage(nextNode);\n updateHighlight();\n updateMermaidPreview();\n return true;\n },\n stopEvent(event) {\n return Boolean(\n closestElement(event.target, `.${CODE_BLOCK_CLASSES.actionGroup}`) ||\n languageField.contains(event.target as Node) ||\n mermaidPreview.contains(event.target as Node)\n );\n },\n ignoreMutation(mutation) {\n return mutation.target instanceof Node && (\n mutation.target === dom ||\n caption.contains(mutation.target) ||\n mermaidPreview.contains(mutation.target) ||\n highlightPre.contains(mutation.target)\n );\n }\n };\n}\n\nfunction isMermaidCodeBlock(node: ProseNode): boolean {\n return getCodeBlockLanguage(node).toLowerCase() === \"mermaid\";\n}\n\nfunction getCodeBlockLanguage(node: ProseNode): string {\n const rawLanguage = String(node.attrs.language || node.attrs.lang || \"\");\n return rawLanguage.trim().split(/\\s+/)[0] || \"\";\n}\n\nfunction toLanguageClassName(language: string): string {\n return language.replace(/[^\\w+-]/g, \"-\");\n}\n\nfunction bindCodeBlockActionButton(buttonElement: HTMLElement, handler: (buttonElement: HTMLElement) => void): void {\n buttonElement.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n buttonElement.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n buttonElement.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n handler(buttonElement);\n });\n}\n\nfunction stopCodeBlockActionEvent(event: Event): void {\n event.stopPropagation();\n}\n\ntype MarkdownAstNode = {\n type?: string;\n value?: string;\n tag?: string;\n label?: string;\n children?: MarkdownAstNode[];\n [key: string]: unknown;\n};\n\nconst remarkMathPlugin = $remark(\"superMarkdownMath\", () => remarkMath);\n\nconst remarkSafeInlineHtmlPlugin = $remark(\"superMarkdownSafeInlineHtml\", () => () => (tree: MarkdownAstNode) => {\n transformSafeInlineHtmlTree(tree);\n});\n\nconst mathInlineSchema = $nodeSchema(\"math_inline\", () => ({\n group: \"inline\",\n inline: true,\n atom: true,\n attrs: {\n value: {\n default: \"\",\n validate: \"string\"\n }\n },\n parseDOM: [{\n tag: 'span[data-type=\"math_inline\"]',\n getAttrs: (dom: HTMLElement) => ({ value: dom.dataset.value || dom.textContent || \"\" })\n }],\n toDOM: (node: ProseNode) => [\n \"span\",\n {\n \"data-type\": \"math_inline\",\n \"data-value\": node.attrs.value\n },\n node.attrs.value\n ],\n parseMarkdown: {\n match: (node: MarkdownAstNode) => node.type === \"inlineMath\",\n runner: (state, node: MarkdownAstNode, type) => {\n state.addNode(type, { value: String(node.value || \"\") });\n }\n },\n toMarkdown: {\n match: (node: ProseNode) => node.type.name === \"math_inline\",\n runner: (state, node: ProseNode) => {\n state.addNode(\"inlineMath\", undefined, String(node.attrs.value || \"\"));\n }\n }\n}));\n\nconst mathBlockSchema = $nodeSchema(\"math_block\", () => ({\n group: \"block\",\n atom: true,\n attrs: {\n value: {\n default: \"\",\n validate: \"string\"\n }\n },\n parseDOM: [{\n tag: 'figure[data-type=\"math_block\"]',\n getAttrs: (dom: HTMLElement) => ({ value: dom.dataset.value || dom.textContent || \"\" })\n }],\n toDOM: (node: ProseNode) => [\n \"figure\",\n {\n \"data-type\": \"math_block\",\n \"data-value\": node.attrs.value\n },\n node.attrs.value\n ],\n parseMarkdown: {\n match: (node: MarkdownAstNode) => node.type === \"math\",\n runner: (state, node: MarkdownAstNode, type) => {\n state.addNode(type, { value: String(node.value || \"\") });\n }\n },\n toMarkdown: {\n match: (node: ProseNode) => node.type.name === \"math_block\",\n runner: (state, node: ProseNode) => {\n state.addNode(\"math\", undefined, String(node.attrs.value || \"\"));\n }\n }\n}));\n\nconst safeHtmlInlineSchema = $nodeSchema(\"safe_html_inline\", () => ({\n group: \"inline\",\n inline: true,\n content: \"inline*\",\n attrs: {\n tag: {\n default: \"kbd\",\n validate: \"string\"\n }\n },\n parseDOM: [\n \"u\",\n \"mark\",\n \"kbd\"\n ].map((tag) => ({\n tag,\n getAttrs: () => ({ tag })\n })),\n toDOM: (node: ProseNode) => {\n const tag = normalizeSafeHtmlTag(node.attrs.tag);\n return [tag, { \"data-type\": \"safe_html_inline\", \"data-tag\": tag }, 0];\n },\n parseMarkdown: {\n match: (node: MarkdownAstNode) => node.type === \"safeHtmlInline\",\n runner: (state, node: MarkdownAstNode, type) => {\n state.openNode(type, { tag: normalizeSafeHtmlTag(node.tag) }).next(node.children).closeNode();\n }\n },\n toMarkdown: {\n match: (node: ProseNode) => node.type.name === \"safe_html_inline\",\n runner: (state, node: ProseNode) => {\n const tag = normalizeSafeHtmlTag(node.attrs.tag);\n state.addNode(\"html\", undefined, `<${tag}>`);\n state.next(node.content);\n state.addNode(\"html\", undefined, `</${tag}>`);\n }\n }\n}));\n\nfunction transformSafeInlineHtmlTree(node: MarkdownAstNode): void {\n if (!Array.isArray(node.children)) {\n return;\n }\n node.children = transformSafeInlineHtmlChildren(node.children);\n node.children.forEach(transformSafeInlineHtmlTree);\n}\n\nfunction transformSafeInlineHtmlChildren(children: MarkdownAstNode[]): MarkdownAstNode[] {\n const next: MarkdownAstNode[] = [];\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n const tag = getOpeningSafeHtmlTag(child);\n if (!tag) {\n next.push(child);\n continue;\n }\n const closeIndex = findClosingSafeHtmlTag(children, index + 1, tag);\n if (closeIndex < 0) {\n next.push(child);\n continue;\n }\n next.push({\n type: \"safeHtmlInline\",\n tag,\n children: children.slice(index + 1, closeIndex)\n });\n index = closeIndex;\n }\n return next;\n}\n\nfunction getOpeningSafeHtmlTag(node: MarkdownAstNode): SafeInlineHtmlTag | null {\n if (node.type !== \"html\" || typeof node.value !== \"string\") {\n return null;\n }\n const match = node.value.trim().match(/^<([a-z][a-z0-9-]*)>$/i);\n if (!match) {\n return null;\n }\n const tag = match[1].toLowerCase();\n return isSafeInlineHtmlTag(tag) ? tag : null;\n}\n\nfunction findClosingSafeHtmlTag(children: MarkdownAstNode[], startIndex: number, tag: SafeInlineHtmlTag): number {\n let depth = 0;\n const openPattern = new RegExp(`^<${tag}>$`, \"i\");\n const closePattern = new RegExp(`^</${tag}>$`, \"i\");\n for (let index = startIndex; index < children.length; index += 1) {\n const child = children[index];\n if (child.type !== \"html\" || typeof child.value !== \"string\") {\n continue;\n }\n const value = child.value.trim();\n if (openPattern.test(value)) {\n depth += 1;\n } else if (closePattern.test(value)) {\n if (depth === 0) {\n return index;\n }\n depth -= 1;\n }\n }\n return -1;\n}\n\nfunction normalizeSafeHtmlTag(value: unknown): SafeInlineHtmlTag {\n const tag = String(value || \"\").toLowerCase();\n return isSafeInlineHtmlTag(tag) ? tag : \"kbd\";\n}\n\nfunction createMathInlineNodeView(node: ProseNode, view: unknown, getPos: (() => number) | boolean): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"span\");\n dom.className = \"visual-math-inline-node\";\n dom.contentEditable = \"false\";\n dom.tabIndex = 0;\n const preview = document.createElement(\"span\");\n preview.className = \"visual-math-inline-preview\";\n const input = document.createElement(\"input\");\n input.className = \"visual-math-inline-input\";\n input.hidden = true;\n input.spellcheck = false;\n input.setAttribute(\"aria-label\", visualLabels.mathEdit);\n dom.append(preview, input);\n\n const setEditing = (editing: boolean) => {\n dom.classList.toggle(\"is-editing\", editing);\n preview.hidden = editing;\n input.hidden = !editing;\n if (editing) {\n input.value = getNodeTextAttribute(currentNode, \"value\");\n window.setTimeout(() => {\n input.focus();\n input.select();\n }, 0);\n }\n };\n\n const commitInlineMath = () => {\n const value = input.value;\n setEditing(false);\n updateNodeAttrs(view, getPos, { value });\n syncCurrentMarkdownFromMilkdownSoon();\n dom.focus();\n };\n\n dom.addEventListener(\"dblclick\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n setEditing(true);\n });\n dom.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n setEditing(true);\n }\n });\n const handleInlineMathKey = (event: KeyboardEvent) => {\n if (input.hidden) {\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n event.stopPropagation();\n commitInlineMath();\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n setEditing(false);\n dom.focus();\n }\n };\n input.addEventListener(\"keydown\", handleInlineMathKey);\n input.addEventListener(\"keyup\", handleInlineMathKey);\n input.addEventListener(\"blur\", () => {\n if (!input.hidden) {\n commitInlineMath();\n }\n });\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const value = getNodeTextAttribute(nextNode, \"value\");\n dom.dataset.value = value;\n dom.title = value;\n preview.innerHTML = renderKatexHtml(value, false, mathRenderOptions);\n if (!dom.classList.contains(\"is-editing\")) {\n input.value = value;\n }\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent() {\n return true;\n },\n ignoreMutation() {\n return true;\n }\n };\n}\n\nfunction createMathBlockNodeView(node: ProseNode, view: unknown, getPos: (() => number) | boolean): NodeView {\n let currentNode = node;\n let updateTimer: number | undefined;\n const dom = document.createElement(\"figure\");\n dom.className = \"visual-math-node-view\";\n dom.contentEditable = \"false\";\n dom.tabIndex = 0;\n\n const preview = document.createElement(\"div\");\n preview.className = \"visual-math-preview\";\n\n const controls = document.createElement(\"div\");\n controls.className = \"visual-math-controls\";\n controls.contentEditable = \"false\";\n const editButton = document.createElement(\"button\");\n editButton.type = \"button\";\n editButton.className = \"visual-math-edit\";\n editButton.textContent = visualLabels.mathEdit;\n editButton.setAttribute(\"aria-label\", visualLabels.mathEdit);\n const doneButton = document.createElement(\"button\");\n doneButton.type = \"button\";\n doneButton.className = \"visual-math-done\";\n doneButton.textContent = visualLabels.mathDone;\n doneButton.setAttribute(\"aria-label\", visualLabels.mathDone);\n controls.append(editButton, doneButton);\n\n const source = document.createElement(\"textarea\");\n source.className = \"visual-math-source\";\n source.spellcheck = false;\n source.rows = 3;\n source.addEventListener(\"input\", () => {\n window.clearTimeout(updateTimer);\n updateTimer = window.setTimeout(() => {\n updateNodeAttrs(view, getPos, { value: source.value });\n }, 160);\n preview.innerHTML = renderKatexHtml(source.value, true, mathRenderOptions);\n });\n\n const setEditing = (editing: boolean) => {\n dom.classList.toggle(\"is-editing\", editing);\n source.hidden = !editing;\n editButton.hidden = editing;\n doneButton.hidden = !editing;\n if (editing) {\n window.setTimeout(() => source.focus(), 0);\n }\n };\n\n const showEditor = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n setEditing(true);\n };\n\n const hideEditor = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n setEditing(false);\n dom.focus();\n };\n\n preview.addEventListener(\"dblclick\", showEditor);\n dom.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\" && !dom.classList.contains(\"is-editing\")) {\n event.preventDefault();\n setEditing(true);\n } else if (event.key === \"Escape\" && dom.classList.contains(\"is-editing\")) {\n event.preventDefault();\n setEditing(false);\n dom.focus();\n }\n });\n source.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setEditing(false);\n dom.focus();\n }\n });\n editButton.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n editButton.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n editButton.addEventListener(\"click\", showEditor);\n doneButton.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n doneButton.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n doneButton.addEventListener(\"click\", hideEditor);\n\n dom.append(controls, preview, source);\n setEditing(false);\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const value = getNodeTextAttribute(nextNode, \"value\");\n dom.dataset.value = value;\n if (source.value !== value) {\n source.value = value;\n }\n preview.innerHTML = renderKatexHtml(value, true, mathRenderOptions);\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent(event) {\n return source.contains(event.target as Node) || controls.contains(event.target as Node);\n },\n ignoreMutation() {\n return true;\n },\n destroy() {\n window.clearTimeout(updateTimer);\n }\n };\n}\n\nfunction createFootnoteReferenceNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"sup\");\n dom.className = \"visual-footnote-reference\";\n dom.contentEditable = \"false\";\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const model = resolveFootnoteReference(getNodeTextAttribute(nextNode, \"label\"));\n dom.id = model.referenceId;\n dom.dataset.label = model.label;\n dom.textContent = model.label;\n dom.title = `Footnote ${model.label}`;\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent() {\n return true;\n },\n ignoreMutation() {\n return true;\n }\n };\n}\n\nfunction createFootnoteDefinitionNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"dl\");\n dom.className = \"visual-footnote-definition\";\n const label = document.createElement(\"dt\");\n label.contentEditable = \"false\";\n const content = document.createElement(\"dd\");\n dom.append(label, content);\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const model = resolveFootnoteReference(getNodeTextAttribute(nextNode, \"label\"));\n dom.id = model.definitionId;\n dom.dataset.label = model.label;\n label.textContent = model.label;\n };\n update(currentNode);\n\n return {\n dom,\n contentDOM: content,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n ignoreMutation(mutation) {\n return mutation.target instanceof Node && label.contains(mutation.target);\n }\n };\n}\n\nfunction createHtmlNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"span\");\n dom.className = \"visual-html-source\";\n dom.contentEditable = \"false\";\n const label = document.createElement(\"span\");\n label.className = \"visual-html-label\";\n label.textContent = visualLabels.rawHtmlEscaped;\n const source = document.createElement(\"span\");\n source.className = \"visual-html-code\";\n dom.append(label, source);\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const value = getNodeTextAttribute(nextNode, \"value\");\n dom.dataset.value = value;\n dom.title = `${visualLabels.rawHtmlEscaped}: ${value}`;\n source.innerHTML = renderInertInlineHtml(value);\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent() {\n return true;\n },\n ignoreMutation() {\n return true;\n }\n };\n}\n\nfunction createSafeHtmlInlineNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n let tag = normalizeSafeHtmlTag(node.attrs.tag);\n let dom = document.createElement(tag);\n dom.className = `visual-safe-html-inline visual-safe-html-${tag}`;\n dom.dataset.tag = tag;\n\n return {\n dom,\n contentDOM: dom,\n update(nextNode) {\n const nextTag = normalizeSafeHtmlTag(nextNode.attrs.tag);\n if (nextNode.type !== currentNode.type || nextTag !== tag) {\n return false;\n }\n currentNode = nextNode;\n tag = nextTag;\n dom.dataset.tag = tag;\n return true;\n }\n };\n}\n\nfunction createBlockquoteNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"blockquote\");\n dom.className = \"visual-blockquote-node-view\";\n const title = document.createElement(\"p\");\n title.className = \"visual-admonition-title\";\n title.contentEditable = \"false\";\n title.hidden = true;\n const renderedBody = document.createElement(\"div\");\n renderedBody.className = \"visual-admonition-body\";\n renderedBody.contentEditable = \"false\";\n renderedBody.hidden = true;\n const content = document.createElement(\"div\");\n content.className = \"visual-blockquote-content\";\n dom.append(title, renderedBody, content);\n\n const renderAdmonitionBody = (body: string) => {\n renderedBody.replaceChildren();\n const paragraph = document.createElement(\"p\");\n paragraph.textContent = body || \"\";\n renderedBody.append(paragraph);\n };\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const admonition = detectBlockquoteAdmonition(nextNode.textContent || \"\");\n dom.className = \"visual-blockquote-node-view\";\n title.hidden = true;\n title.textContent = \"\";\n renderedBody.hidden = true;\n renderedBody.replaceChildren();\n content.classList.remove(\"visual-admonition-source\");\n delete dom.dataset.admonition;\n if (admonition) {\n dom.classList.add(\"admonition\", `admonition-${admonition.type}`);\n dom.dataset.admonition = admonition.type;\n title.hidden = false;\n title.textContent = admonition.label;\n renderedBody.hidden = false;\n renderAdmonitionBody(admonition.body);\n content.classList.add(\"visual-admonition-source\");\n }\n };\n update(currentNode);\n\n return {\n dom,\n contentDOM: content,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n }\n };\n}\n\nfunction getNodeTextAttribute(node: ProseNode, name: string): string {\n return String(node.attrs[name] || \"\");\n}\n\nfunction updateNodeAttrs(view: unknown, getPos: (() => number) | boolean, attrs: Record<string, unknown>): void {\n if (typeof getPos !== \"function\") {\n return;\n }\n const candidate = view as {\n state?: {\n doc?: {\n nodeAt(pos: number): ProseNode | null;\n };\n tr?: {\n setNodeMarkup(pos: number, type: unknown, attrs: Record<string, unknown>): unknown;\n };\n };\n dispatch?: (transaction: unknown) => void;\n };\n let pos = 0;\n try {\n pos = getPos();\n } catch {\n return;\n }\n const node = candidate.state?.doc?.nodeAt(pos);\n const transaction = node && candidate.state?.tr?.setNodeMarkup(pos, undefined, { ...node.attrs, ...attrs });\n if (transaction) {\n candidate.dispatch?.(transaction);\n }\n}\n\nfunction registerVisualNodeViews(\n views: Array<[string, (node: ProseNode, view: unknown, getPos: (() => number) | boolean) => NodeView]>\n): Array<[string, (node: ProseNode, view: unknown, getPos: (() => number) | boolean) => NodeView]> {\n const visualNodeViews: Array<[string, (node: ProseNode, view: unknown, getPos: (() => number) | boolean) => NodeView]> = [\n [\"code_block\", createCodeBlockNodeView],\n [\"math_inline\", createMathInlineNodeView],\n [\"math_block\", createMathBlockNodeView],\n [\"footnote_reference\", createFootnoteReferenceNodeView],\n [\"footnote_definition\", createFootnoteDefinitionNodeView],\n [\"html\", createHtmlNodeView],\n [\"safe_html_inline\", createSafeHtmlInlineNodeView],\n [\"blockquote\", createBlockquoteNodeView]\n ];\n const ids = new Set(visualNodeViews.map(([id]) => id));\n return [\n ...views.filter(([nodeId]) => !ids.has(nodeId)),\n ...visualNodeViews\n ];\n}\n\nsetScriptState(\"runtime-loading\", \"bundle-started\");\nvoid boot();\n\nasync function runMermaid(): Promise<void> {\n const nodes = Array.from(previewElement.querySelectorAll<HTMLElement>(\".mermaid\"));\n if (!nodes.length) {\n return;\n }\n for (const node of nodes) {\n resetMermaidElement(node, node.textContent || \"\");\n await queueMermaidElementRender(node);\n }\n}\n\nfunction queueMermaidElementRender(node: HTMLElement): Promise<void> {\n const render = mermaidRenderQueue.catch(() => undefined).then(async () => {\n let mermaid: MermaidRuntime;\n try {\n mermaid = await loadMermaid();\n mermaid.initialize({ startOnLoad: false, securityLevel: \"strict\" });\n } catch (error) {\n markMermaidRenderError(node, error);\n return;\n }\n await renderMermaidNode(mermaid, node);\n });\n mermaidRenderQueue = render;\n return render;\n}\n\nasync function renderMermaidNode(mermaid: MermaidRuntime, node: HTMLElement): Promise<void> {\n if (node.dataset.superMarkdownMermaidError) {\n return;\n }\n const source = node.dataset.superMarkdownMermaidSource || node.textContent || \"\";\n node.dataset.superMarkdownMermaidSource = source;\n try {\n await mermaid.run({ nodes: [node] as unknown as NodeListOf<HTMLElement> });\n } catch (error) {\n markMermaidRenderError(node, error, source);\n }\n}\n\nfunction markMermaidRenderError(node: HTMLElement, error: unknown, source = node.dataset.superMarkdownMermaidSource || node.textContent || \"\"): void {\n const message = getErrorMessage(error);\n node.dataset.superMarkdownMermaidError = message;\n node.classList.add(\"mermaid-render-error\");\n node.title = message;\n node.textContent = source ? `${message}\\n\\n${source}` : message;\n}\n\nfunction resetMermaidElement(node: HTMLElement, source: string): void {\n node.classList.remove(\"mermaid-render-error\");\n node.removeAttribute(\"data-processed\");\n delete node.dataset.superMarkdownMermaidError;\n delete node.dataset.superMarkdownMermaidSource;\n node.title = \"\";\n node.textContent = source;\n}\n\nasync function loadMermaid(): Promise<MermaidRuntime> {\n if (window.mermaid) {\n return window.mermaid;\n }\n if (mermaidRuntimePromise) {\n return mermaidRuntimePromise;\n }\n const src = payload.mermaidScript;\n if (!src) {\n throw new Error(\"Missing Mermaid runtime URI\");\n }\n mermaidRuntimePromise = new Promise<MermaidRuntime>((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.async = true;\n script.dataset.superMarkdownMermaid = \"true\";\n script.addEventListener(\"load\", () => {\n if (window.mermaid) {\n resolve(window.mermaid);\n } else {\n reject(new Error(\"Mermaid runtime did not initialize\"));\n }\n }, { once: true });\n script.addEventListener(\"error\", () => {\n reject(new Error(\"Failed to load Mermaid runtime\"));\n }, { once: true });\n document.head.append(script);\n }).catch((error) => {\n mermaidRuntimePromise = null;\n throw error;\n });\n return mermaidRuntimePromise;\n}\n\nfunction applyLayout(): void {\n document.body.classList.remove(\"layout-workbench\", \"layout-editorOnly\", \"layout-splitEdit\", \"layout-previewOnly\");\n document.body.classList.add(`layout-${currentLayout}`);\n if (currentLayout === \"previewOnly\") {\n setMode(\"preview\", false);\n } else if (currentLayout === \"splitEdit\") {\n setMode(\"split\", false);\n } else if (currentMode === \"preview\" || currentMode === \"split\") {\n setMode(\"source\", false);\n } else {\n applyMode();\n }\n}\n\nfunction setMode(mode: string, notify: boolean): void {\n currentMode = normalizeMode(mode);\n if (currentMode === \"split\") {\n currentLayout = \"splitEdit\";\n }\n if (currentMode === \"preview\") {\n currentLayout = \"previewOnly\";\n }\n applyMode();\n if (notify) {\n post(\"setMode\", { mode: currentMode });\n }\n}\n\nfunction applyMode(): void {\n document.body.classList.remove(\"mode-source\", \"mode-wysiwyg\", \"mode-preview\", \"mode-split\");\n document.body.classList.add(`mode-${currentMode}`);\n if (currentMode === \"wysiwyg\") {\n void ensureMilkdown().catch(() => undefined);\n }\n bindEditorScrollSync();\n}\n\nasync function ensureMilkdown(): Promise<void> {\n if (milkdownReady) {\n return;\n }\n if (milkdownReadyPromise) {\n return milkdownReadyPromise;\n }\n visualEditor.innerHTML = \"\";\n milkdownReadyPromise = (async () => {\n milkdownEditor = Editor.make()\n .config((ctx) => {\n ctx.set(rootCtx, visualEditor);\n ctx.set(defaultValueCtx, currentMarkdown);\n ctx.get(listenerCtx).markdownUpdated((_ctx, markdown) => {\n if (applyingMilkdownUpdate) {\n return;\n }\n currentMarkdown = markdown;\n sourceEditor.value = markdown;\n renderSidePanels(markdown);\n syncToHost();\n });\n ctx.update(nodeViewCtx, registerVisualNodeViews);\n })\n .use(commonmark)\n .use(gfm)\n .use(remarkMathPlugin)\n .use(remarkSafeInlineHtmlPlugin)\n .use(mathInlineSchema)\n .use(mathBlockSchema)\n .use(safeHtmlInlineSchema)\n .use(listener)\n .use(clipboard)\n .use(history)\n .use(trailing);\n await milkdownEditor.create();\n milkdownReady = true;\n startVisualImageObserver();\n resolveVisualImagesSoon();\n })().catch((error) => {\n milkdownEditor = null;\n milkdownReady = false;\n milkdownReadyPromise = null;\n setScriptError(error);\n post(\"error\", { message: getErrorMessage(error) });\n throw error;\n });\n return milkdownReadyPromise;\n}\n\nfunction syncMilkdownFromMarkdown(markdown: string): void {\n if (!milkdownEditor || !milkdownReady) {\n return;\n }\n applyingMilkdownUpdate = true;\n try {\n milkdownEditor.action(replaceAll(markdown, true));\n } finally {\n window.setTimeout(() => {\n applyingMilkdownUpdate = false;\n resolveVisualImagesSoon();\n }, 0);\n }\n}\n\nasync function handleToolbarAction(action: string): Promise<void> {\n if (action === \"organizeMarkdown\") {\n post(\"runHostCommand\", { command: \"organizeMarkdown\" });\n return;\n }\n if (action === \"help\") {\n post(\"openLink\", { href: SUPER_MARKDOWN_ISSUES_URL });\n return;\n }\n if (action === \"toc\") {\n post(\"toolbarCommand\", { action });\n return;\n }\n if (action === \"switchBackgroundTheme\") {\n post(\"toolbarCommand\", { action });\n return;\n }\n if (action.startsWith(\"export-\")) {\n post(\"export\", { format: action.replace(\"export-\", \"\") });\n return;\n }\n if (action === \"image\") {\n await chooseImagesForInsert();\n return;\n }\n if (currentMode !== \"wysiwyg\") {\n applySourceToolbarAction(action);\n return;\n }\n await ensureMilkdown();\n applyMilkdownToolbarAction(action);\n}\n\nfunction applyMilkdownToolbarAction(action: string): void {\n if (!milkdownEditor) {\n return;\n }\n const heading = action.match(/^heading-([1-6])$/);\n if (heading) {\n milkdownEditor.action(callCommand(wrapInHeadingCommand.key, Number(heading[1])));\n return;\n }\n const commands: Record<string, () => void> = {\n bold: () => milkdownEditor?.action(callCommand(toggleStrongCommand.key)),\n italic: () => milkdownEditor?.action(callCommand(toggleEmphasisCommand.key)),\n strike: () => milkdownEditor?.action(callCommand(toggleStrikethroughCommand.key)),\n \"inline-code\": () => milkdownEditor?.action(callCommand(toggleInlineCodeCommand.key)),\n link: () => milkdownEditor?.action(callCommand(toggleLinkCommand.key, { href: \"https://example.com\" })),\n hr: () => milkdownEditor?.action(callCommand(insertHrCommand.key)),\n quote: () => milkdownEditor?.action(callCommand(wrapInBlockquoteCommand.key)),\n list: () => milkdownEditor?.action(callCommand(wrapInBulletListCommand.key)),\n \"ordered-list\": () => milkdownEditor?.action(callCommand(wrapInOrderedListCommand.key)),\n code: () => milkdownEditor?.action(callCommand(createCodeBlockCommand.key)),\n table: () => milkdownEditor?.action(callCommand(insertTableCommand.key, { row: 3, col: 3 }))\n };\n if (commands[action]) {\n commands[action]();\n return;\n }\n if (action === \"underline\") {\n surroundMilkdownSelection(\"<u>\", \"</u>\", \"text\");\n } else if (action === \"highlight\") {\n surroundMilkdownSelection(\"==\", \"==\", \"text\");\n } else if (action === \"task\") {\n insertMarkdown(\"* [ ] Task\");\n } else if (action === \"task-checked\") {\n insertMarkdown(\"* [x] Task\");\n } else if (action === \"math\") {\n insertMarkdown(\"$$\\nx = y\\n$$\");\n } else if (action === \"mermaid\") {\n insertMarkdown(\"```mermaid\\ngraph TD\\n A --> B\\n```\");\n }\n}\n\nfunction surroundMilkdownSelection(prefix: string, suffix: string, fallback: string): void {\n if (!milkdownEditor) {\n return;\n }\n const domSelection = window.getSelection()?.toString().trim() || \"\";\n if (domSelection && replaceMarkdownTextSelection(domSelection, prefix, suffix)) {\n return;\n }\n try {\n milkdownEditor.action((ctx) => {\n const view = ctx.get(editorViewCtx);\n const { from, to, empty } = view.state.selection;\n const selected = empty ? fallback : milkdownEditor!.action(getMarkdown({ from, to })).trim() || fallback;\n milkdownEditor!.action(replaceRange(`${prefix}${selected}${suffix}`, { from, to }));\n syncCurrentMarkdownFromMilkdownSoon();\n });\n } catch {\n insertMarkdown(`${prefix}${fallback}${suffix}`);\n }\n}\n\nfunction insertMarkdown(markdown: string): void {\n if (!markdown) {\n return;\n }\n if (currentMode === \"wysiwyg\" && milkdownEditor) {\n insertMarkdownSnippetFromVisualSelection(markdown);\n } else {\n insertSourceSnippet(markdown);\n }\n}\n\nfunction replaceMarkdownTextSelection(selected: string, prefix: string, suffix: string): boolean {\n const index = currentMarkdown.indexOf(selected);\n if (index < 0) {\n return false;\n }\n currentMarkdown = `${currentMarkdown.slice(0, index)}${prefix}${selected}${suffix}${currentMarkdown.slice(index + selected.length)}`;\n sourceEditor.value = currentMarkdown;\n syncMilkdownFromMarkdown(currentMarkdown);\n renderSidePanels(currentMarkdown);\n syncToHost();\n return true;\n}\n\nfunction insertMarkdownSnippetFromVisualSelection(snippet: string): void {\n const selected = window.getSelection()?.toString().trim() || \"\";\n const selectedIndex = selected ? currentMarkdown.indexOf(selected) : -1;\n if (selectedIndex >= 0) {\n currentMarkdown = `${currentMarkdown.slice(0, selectedIndex)}${snippet}${currentMarkdown.slice(selectedIndex + selected.length)}`;\n } else {\n const trimmed = currentMarkdown.replace(/\\s+$/u, \"\");\n const prefix = trimmed ? \"\\n\\n\" : \"\";\n currentMarkdown = `${trimmed}${prefix}${snippet}`;\n }\n sourceEditor.value = currentMarkdown;\n syncMilkdownFromMarkdown(currentMarkdown);\n renderSidePanels(currentMarkdown);\n syncToHost();\n}\n\nfunction syncCurrentMarkdownFromMilkdownSoon(): void {\n window.setTimeout(() => {\n if (!milkdownEditor || applyingMilkdownUpdate) {\n return;\n }\n try {\n const markdown = milkdownEditor.action(getMarkdown());\n currentMarkdown = markdown;\n sourceEditor.value = markdown;\n renderSidePanels(markdown);\n syncToHost();\n } catch {\n // The listener path is still the primary sync mechanism.\n }\n }, 0);\n}\n\nfunction applySourceToolbarAction(action: string): void {\n const heading = action.match(/^heading-([1-6])$/);\n if (heading) {\n replaceSourceSelection(`${\"#\".repeat(Number(heading[1]))} `, \"\", \"Heading\");\n return;\n }\n const wrappers: Record<string, [string, string, string]> = {\n bold: [\"**\", \"**\", \"text\"],\n italic: [\"*\", \"*\", \"text\"],\n underline: [\"<u>\", \"</u>\", \"text\"],\n strike: [\"~~\", \"~~\", \"text\"],\n highlight: [\"==\", \"==\", \"text\"],\n \"inline-code\": [\"`\", \"`\", \"code\"],\n link: [\"[\", \"](https://example.com)\", \"link text\"]\n };\n if (wrappers[action]) {\n replaceSourceSelection(...wrappers[action]);\n return;\n }\n const snippets: Record<string, string> = {\n hr: \"---\",\n quote: \"> Quote\",\n list: \"- List item\",\n \"ordered-list\": \"1. List item\",\n task: \"- [ ] Task\",\n \"task-checked\": \"- [x] Task\",\n code: \"```text\\ncode\\n```\",\n table: \"| Column | Value |\\n| --- | --- |\\n| Item | Value |\",\n math: \"$$\\nx = y\\n$$\",\n mermaid: \"```mermaid\\ngraph TD\\n A --> B\\n```\"\n };\n if (snippets[action]) {\n insertSourceSnippet(snippets[action]);\n }\n}\n\nfunction replaceSourceSelection(prefix: string, suffix: string, fallback: string): void {\n const selection = getSourceSelection();\n const selected = sourceEditor.value.slice(selection.start, selection.end) || fallback;\n const insertion = `${prefix}${selected}${suffix}`;\n sourceEditor.setRangeText(insertion, selection.start, selection.end, \"end\");\n currentMarkdown = sourceEditor.value;\n rememberSourceSelection();\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n}\n\nfunction insertSourceSnippet(snippet: string): void {\n const selection = getSourceSelection();\n const selected = sourceEditor.value.slice(selection.start, selection.end);\n const insertion = selected ? snippet.replace(/text|code|Task|Quote|List item/, selected) : snippet;\n const prefix = needsBlockPadding(selection.start) ? \"\\n\\n\" : \"\";\n sourceEditor.setRangeText(`${prefix}${insertion}`, selection.start, selection.end, \"end\");\n currentMarkdown = sourceEditor.value;\n rememberSourceSelection();\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n}\n\nfunction needsBlockPadding(position: number): boolean {\n return position > 0 && !sourceEditor.value.slice(0, position).endsWith(\"\\n\\n\");\n}\n\nfunction rememberSourceSelection(): void {\n activeSourceSelection = {\n start: sourceEditor.selectionStart || 0,\n end: sourceEditor.selectionEnd || sourceEditor.selectionStart || 0\n };\n}\n\nfunction getSourceSelection(): { start: number; end: number } {\n if (document.activeElement === sourceEditor) {\n rememberSourceSelection();\n }\n const max = sourceEditor.value.length;\n return {\n start: Math.max(0, Math.min(activeSourceSelection.start, max)),\n end: Math.max(0, Math.min(activeSourceSelection.end, max))\n };\n}\n\nasync function chooseImagesForInsert(): Promise<void> {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \"image/*\";\n input.multiple = true;\n input.style.position = \"fixed\";\n input.style.left = \"-9999px\";\n input.style.top = \"0\";\n input.onchange = async () => {\n try {\n const files = Array.from(input.files || []);\n if (!files.length) {\n return;\n }\n const images = await Promise.all(files.map(readImageFileData));\n post(\"uploadImages\", { requestId: Date.now(), images });\n } finally {\n input.remove();\n }\n };\n document.body.append(input);\n input.click();\n}\n\nfunction readImageFileData(file: File): Promise<{ id: string; name: string; dataUrl: string }> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error || new Error(\"Failed to read image\"));\n reader.onload = () => resolve({\n id: `${Date.now()}-${Math.random().toString(16).slice(2)}`,\n name: file.name,\n dataUrl: String(reader.result || \"\")\n });\n reader.readAsDataURL(file);\n });\n}\n\nfunction toggleToolbarMenu(name: string): void {\n const wrapper = toolbarElement.querySelector(`[data-menu-toggle=\"${name}\"]`)?.closest(\".toolbar-menu-wrapper\") as HTMLElement | null;\n if (!wrapper) {\n return;\n }\n const open = !wrapper.classList.contains(\"is-open\");\n closeToolbarMenus();\n wrapper.classList.toggle(\"is-open\", open);\n const menu = wrapper.querySelector(\".toolbar-menu\") as HTMLElement | null;\n const toggle = wrapper.querySelector(\".toolbar-menu-toggle\") as HTMLElement | null;\n if (menu) {\n menu.hidden = !open;\n }\n toggle?.setAttribute(\"aria-expanded\", String(open));\n if (open) {\n positionToolbarMenu(wrapper);\n }\n}\n\nfunction positionToolbarMenu(wrapper: HTMLElement): void {\n const toggle = wrapper.querySelector(\".toolbar-menu-toggle\");\n const menu = wrapper.querySelector(\".toolbar-menu\") as HTMLElement | null;\n if (!toggle || !menu) {\n return;\n }\n const rect = toggle.getBoundingClientRect();\n const menuWidth = menu.offsetWidth || 170;\n const alignedLeft = wrapper.classList.contains(\"toolbar-more-menu\") ? rect.right - menuWidth : rect.left;\n const left = Math.min(Math.max(8, alignedLeft), Math.max(8, window.innerWidth - menuWidth - 8));\n menu.style.top = `${Math.round(rect.bottom + 6)}px`;\n menu.style.left = `${Math.round(left)}px`;\n}\n\nfunction closeToolbarMenus(): void {\n toolbarElement.querySelectorAll(\".toolbar-menu-wrapper.is-open\").forEach((wrapper) => {\n const menu = wrapper.querySelector(\".toolbar-menu\") as HTMLElement | null;\n wrapper.classList.remove(\"is-open\");\n if (menu) {\n menu.hidden = true;\n menu.removeAttribute(\"style\");\n }\n wrapper.querySelector(\".toolbar-menu-toggle\")?.setAttribute(\"aria-expanded\", \"false\");\n });\n}\n\nfunction renderSidePanels(markdown: string): void {\n const headings = previewState && previewState.markdown === markdown ? previewState.headings : extractHeadings(markdown);\n currentOutlineHeadings = headings;\n renderOutline(headings);\n}\n\nfunction extractHeadings(markdown: string): PreviewState[\"headings\"] {\n const headings: PreviewState[\"headings\"] = [];\n let inFence = false;\n markdown.split(/\\r?\\n/).forEach((line, index) => {\n if (/^```/.test(line.trim())) {\n inFence = !inFence;\n return;\n }\n if (inFence) {\n return;\n }\n const match = line.match(/^(#{1,6})\\s+(.+?)\\s*#*$/);\n if (!match) {\n return;\n }\n const text = match[2].replace(/[`*_~[\\]()]/g, \"\").trim();\n headings.push({ level: match[1].length, text, slug: baseSlug(text), line: index });\n });\n return headings;\n}\n\nfunction baseSlug(text: string): string {\n return text.toLowerCase().trim()\n .replace(/[^\\p{L}\\p{N}\\s-]/gu, \"\")\n .replace(/\\s+/g, \"-\") || \"heading\";\n}\n\nfunction renderOutline(headings: PreviewState[\"headings\"]): void {\n const query = (searchElement.value || \"\").trim().toLowerCase();\n const filtered = headings.filter((heading) => !query || heading.text.toLowerCase().includes(query));\n outlineElement.innerHTML = filtered.length\n ? filtered.map((heading) => {\n const id = getOutlineId(heading);\n return `<div class=\"outline-node level-${heading.level}\">\n <div class=\"outline-row\">\n <span class=\"outline-disclosure-placeholder\" aria-hidden=\"true\"></span>\n <button type=\"button\" class=\"outline-item${id === activeOutlineId ? \" is-active\" : \"\"}\" data-outline-id=\"${escapeAttribute(id)}\" data-line=\"${heading.line}\" data-slug=\"${escapeAttribute(heading.slug || \"\")}\" title=\"${escapeAttribute(heading.text)}\">${escapeHtml(heading.text)}</button>\n </div>\n </div>`;\n }).join(\"\")\n : `<div class=\"outline-empty\">${escapeHtml(translations.noHeadings || \"No headings\")}</div>`;\n updateActiveOutlineFromScroll();\n}\n\nfunction getOutlineId(heading: { slug?: string; line: number }): string {\n return `${heading.slug || \"heading\"}:${heading.line}`;\n}\n\nfunction handleOutlineClick(event: MouseEvent): void {\n const target = closestElement(event.target, \"[data-line]\");\n if (!target) {\n return;\n }\n const line = Number(target.dataset.line || 0);\n if (currentMode === \"wysiwyg\") {\n scrollVisualEditorToHeading(line);\n } else if (currentMode === \"preview\" || currentLayout === \"previewOnly\") {\n const previewTarget = findPreviewElementForLine(line);\n if (previewTarget) {\n scrollElementIntoContainer(previewElement, previewTarget);\n }\n } else {\n scrollToLine(line);\n }\n setActiveOutlineId(target.dataset.outlineId || \"\");\n}\n\nfunction updateActiveOutlineFromScroll(origin?: string | Event): void {\n if (!currentOutlineHeadings.length) {\n setActiveOutlineId(\"\");\n return;\n }\n const source = typeof origin === \"string\"\n ? origin\n : origin?.currentTarget === previewElement\n ? \"preview\"\n : origin?.currentTarget === visualEditor\n ? \"visual\"\n : \"source\";\n const line = source === \"preview\"\n ? getFirstVisiblePreviewSourceLine()\n : source === \"visual\"\n ? getFirstVisibleVisualHeadingLine()\n : getFirstVisibleSourceLine();\n if (line === null) {\n return;\n }\n let active = currentOutlineHeadings[0];\n for (const heading of currentOutlineHeadings) {\n if (heading.line <= line) {\n active = heading;\n } else {\n break;\n }\n }\n setActiveOutlineId(getOutlineId(active));\n}\n\nfunction setActiveOutlineId(id: string): void {\n activeOutlineId = id;\n outlineElement.querySelectorAll(\".outline-item\").forEach((item) => {\n item.classList.toggle(\"is-active\", (item as HTMLElement).dataset.outlineId === id);\n });\n}\n\nfunction revealActiveOutlineItem(): void {\n updateActiveOutlineFromScroll(currentMode === \"wysiwyg\" ? \"visual\" : currentMode === \"preview\" ? \"preview\" : \"source\");\n const active = activeOutlineId ? outlineElement.querySelector(`.outline-item[data-outline-id=\"${cssEscape(activeOutlineId)}\"]`) : null;\n active?.scrollIntoView({ block: \"nearest\" });\n}\n\nfunction cssEscape(value: string): string {\n return typeof CSS !== \"undefined\" && CSS.escape ? CSS.escape(value) : value.replace(/[\"\\\\]/g, \"\\\\$&\");\n}\n\nfunction toggleSidePanelFromEvent(event: Event): void {\n event.preventDefault();\n setSidePanelOpen(!sidePanelOpen);\n}\n\nfunction setSidePanelOpen(open: boolean): void {\n sidePanelOpen = open;\n document.body.classList.toggle(\"side-panel-open\", open);\n sidePanelToggleElement.setAttribute(\"aria-expanded\", String(open));\n sidePanelElement.setAttribute(\"aria-hidden\", String(!open));\n}\n\nfunction scrollToLine(line: number): void {\n const safeLine = clampSourceLine(line);\n const lines = sourceEditor.value.split(/\\r?\\n/);\n const position = lines.slice(0, safeLine).join(\"\\n\").length + (safeLine > 0 ? 1 : 0);\n sourceEditor.focus();\n sourceEditor.setSelectionRange(position, position);\n scrollSourceEditorToLine(safeLine);\n}\n\nfunction isSplitSyncMode(): boolean {\n return currentMode === \"split\" || currentLayout === \"splitEdit\" || (currentMode === \"source\" && currentLayout === \"workbench\");\n}\n\nfunction bindEditorScrollSync(): void {\n sourceEditor.onscroll = null;\n previewElement.onscroll = null;\n visualEditor.onscroll = null;\n cancelAnimationFrame(editorScrollFrame);\n if (currentMode === \"wysiwyg\") {\n visualEditor.onscroll = () => updateActiveOutlineFromScroll(\"visual\");\n return;\n }\n if (!isSplitSyncMode()) {\n return;\n }\n sourceEditor.onscroll = () => {\n if (scrollSyncSuppressTarget === \"source\") {\n return;\n }\n updateActiveOutlineFromScroll(\"source\");\n scheduleScrollSync(() => syncPreviewToSourceLine(getFirstVisibleSourceLine()));\n };\n previewElement.onscroll = () => {\n if (scrollSyncSuppressTarget === \"preview\") {\n return;\n }\n updateActiveOutlineFromScroll(\"preview\");\n scheduleScrollSync(() => {\n const line = getFirstVisiblePreviewSourceLine();\n if (line !== null) {\n syncSourceToPreviewLine(line);\n }\n });\n };\n}\n\nfunction scheduleScrollSync(callback: () => void): void {\n cancelAnimationFrame(editorScrollFrame);\n editorScrollFrame = requestAnimationFrame(callback);\n}\n\nfunction runSyncedScroll(target: string, callback: () => void): void {\n scrollSyncSuppressTarget = target;\n callback();\n clearTimeout(scrollSyncReleaseTimer);\n scrollSyncReleaseTimer = window.setTimeout(() => {\n if (scrollSyncSuppressTarget === target) {\n scrollSyncSuppressTarget = \"\";\n }\n }, 80);\n}\n\nfunction syncPreviewToSourceLine(line: number): void {\n const target = findPreviewElementForLine(line);\n if (!target) {\n return;\n }\n const previewRect = previewElement.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const nextTop = previewElement.scrollTop + targetRect.top - previewRect.top;\n runSyncedScroll(\"preview\", () => {\n previewElement.scrollTop = Math.max(0, Math.round(nextTop));\n });\n}\n\nfunction syncSourceToPreviewLine(line: number): void {\n runSyncedScroll(\"source\", () => scrollSourceEditorToLine(line));\n}\n\nfunction scrollVisualEditorToHeading(line: number): void {\n if (!milkdownReady) {\n void ensureMilkdown().then(() => scrollVisualEditorToHeading(line));\n return;\n }\n const target = findVisualHeadingForLine(line);\n if (target) {\n scrollElementIntoContainer(visualEditor, target);\n }\n}\n\nfunction findVisualHeadingForLine(line: number): HTMLElement | null {\n const headingIndex = currentOutlineHeadings.findIndex((heading) => heading.line === line);\n const headings = Array.from(visualEditor.querySelectorAll<HTMLElement>(\".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6\"));\n if (headingIndex >= 0 && headingIndex < headings.length) {\n return headings[headingIndex];\n }\n const outlineHeading = currentOutlineHeadings.find((heading) => heading.line === line);\n if (!outlineHeading) {\n return null;\n }\n const tagName = `H${outlineHeading.level}`;\n return headings.find((heading) => heading.tagName === tagName && heading.textContent?.trim() === outlineHeading.text) || null;\n}\n\nfunction scrollElementIntoContainer(container: HTMLElement, target: HTMLElement): void {\n const containerRect = container.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n container.scrollTop = Math.max(0, Math.round(container.scrollTop + targetRect.top - containerRect.top));\n}\n\nfunction findPreviewElementForLine(line: number): HTMLElement | null {\n const safeLine = clampSourceLine(line);\n const elements = Array.from(previewElement.querySelectorAll<HTMLElement>(\"[data-source-line]\"));\n let fallback: HTMLElement | null = null;\n for (const element of elements) {\n const elementLine = getPreviewSourceLine(element);\n if (elementLine === null) {\n continue;\n }\n fallback = element;\n if (elementLine >= safeLine) {\n return element;\n }\n }\n return fallback;\n}\n\nfunction getFirstVisiblePreviewSourceLine(): number | null {\n const previewRect = previewElement.getBoundingClientRect();\n const elements = Array.from(previewElement.querySelectorAll<HTMLElement>(\"[data-source-line]\"));\n let bestLine: number | null = null;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const element of elements) {\n const line = getPreviewSourceLine(element);\n if (line === null) {\n continue;\n }\n const rect = element.getBoundingClientRect();\n if (rect.bottom < previewRect.top || rect.top > previewRect.bottom) {\n continue;\n }\n const distance = Math.abs(Math.max(rect.top, previewRect.top) - previewRect.top);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestLine = line;\n }\n }\n return bestLine;\n}\n\nfunction getFirstVisibleVisualHeadingLine(): number | null {\n const visualRect = visualEditor.getBoundingClientRect();\n const headings = Array.from(visualEditor.querySelectorAll<HTMLElement>(\".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6\"));\n let bestIndex = -1;\n let bestDistance = Number.POSITIVE_INFINITY;\n headings.forEach((heading, index) => {\n const rect = heading.getBoundingClientRect();\n if (rect.bottom < visualRect.top || rect.top > visualRect.bottom) {\n return;\n }\n const distance = Math.abs(Math.max(rect.top, visualRect.top) - visualRect.top);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestIndex = index;\n }\n });\n return bestIndex >= 0 ? currentOutlineHeadings[bestIndex]?.line ?? null : null;\n}\n\nfunction getPreviewSourceLine(element: HTMLElement): number | null {\n const line = Number(element.dataset.sourceLine);\n return Number.isFinite(line) ? line : null;\n}\n\nfunction getFirstVisibleSourceLine(): number {\n const lineHeight = getSourceLineHeight();\n return clampSourceLine(Math.floor(sourceEditor.scrollTop / Math.max(1, lineHeight)));\n}\n\nfunction scrollSourceEditorToLine(line: number): void {\n const maxScrollTop = Math.max(0, sourceEditor.scrollHeight - sourceEditor.clientHeight);\n sourceEditor.scrollTop = Math.min(maxScrollTop, Math.max(0, Math.round(clampSourceLine(line) * getSourceLineHeight())));\n}\n\nfunction getSourceLineHeight(): number {\n const style = getComputedStyle(sourceEditor);\n const fontSize = Number.parseFloat(style.fontSize) || 14;\n const lineHeight = Number.parseFloat(style.lineHeight);\n return Number.isFinite(lineHeight) ? lineHeight : fontSize * 1.65;\n}\n\nfunction clampSourceLine(line: number): number {\n const lines = sourceEditor.value.split(/\\r?\\n/);\n return Math.max(0, Math.min(Math.floor(Number(line) || 0), Math.max(0, lines.length - 1)));\n}\n\nfunction handleCodeBlockActionClick(event: MouseEvent): void {\n const toneButton = closestElement(event.target, `.${CODE_BLOCK_CLASSES.toneButton}`);\n if (toneButton) {\n event.preventDefault();\n cycleCodeBlockTone(toneButton);\n return;\n }\n const copyButton = closestElement(event.target, `.${CODE_BLOCK_CLASSES.copyButton}`);\n if (copyButton) {\n event.preventDefault();\n copyCodeFromButton(copyButton);\n }\n}\n\nfunction cycleCodeBlockTone(buttonElement: HTMLElement): void {\n const block = buttonElement.closest(`.${CODE_BLOCK_CLASSES.block}, .${CODE_BLOCK_CLASSES.diagramBlock}, .${CODE_BLOCK_CLASSES.mathBlock}`) as HTMLElement | null;\n if (!block) {\n return;\n }\n const nextTone = nextCodeBlockTone(buttonElement.dataset.blockTone || block.dataset.renderBlockTone);\n block.classList.toggle(\"render-block-tone-light\", nextTone === \"light\");\n block.classList.toggle(\"render-block-tone-dark\", nextTone === \"dark\");\n block.dataset.renderBlockTone = nextTone;\n buttonElement.dataset.blockTone = nextTone;\n buttonElement.textContent = codeBlockToneLabel(nextTone, codeToneLabels);\n updateToneButtonTitle(buttonElement, nextTone);\n}\n\nfunction updateToneButtonTitle(buttonElement: HTMLElement, tone: string): void {\n const title = `${codeToneLabels.toneLabel}: ${codeBlockToneLabel(normalizeCodeBlockTone(tone), codeToneLabels)}`;\n buttonElement.setAttribute(\"title\", title);\n buttonElement.setAttribute(\"aria-label\", title);\n}\n\nfunction copyCodeFromButton(buttonElement: HTMLElement): void {\n const renderedBlock = buttonElement.closest(`.${CODE_BLOCK_CLASSES.block}, .${CODE_BLOCK_CLASSES.diagramBlock}`) as HTMLElement | null;\n const text = getCodeBlockText(renderedBlock, buttonElement);\n post(\"copyCode\", { text });\n buttonElement.textContent = buttonElement.dataset.copiedLabel || codeCopyLabels.copiedLabel;\n window.setTimeout(() => {\n buttonElement.textContent = buttonElement.dataset.copyLabel || codeCopyLabels.copyLabel;\n }, 1200);\n}\n\nfunction getCodeBlockText(block: HTMLElement | null, buttonElement: HTMLElement): string {\n if (!block) {\n return buttonElement.dataset.copyText || \"\";\n }\n const copySource = block.querySelector(`.${CODE_BLOCK_CLASSES.copySource}`) as HTMLTemplateElement | HTMLElement | null;\n if (copySource) {\n return \"content\" in copySource\n ? copySource.content.textContent || \"\"\n : copySource.textContent || \"\";\n }\n const code = block.querySelector(\"pre.visual-code-editor code, pre code, code\");\n if (code) {\n return code.textContent || \"\";\n }\n const clone = block.cloneNode(true) as HTMLElement;\n clone.querySelector(\"figcaption\")?.remove();\n clone.querySelector(`.${CODE_BLOCK_CLASSES.actionGroup}`)?.remove();\n return clone.textContent || \"\";\n}\n"], - "mappings": "qmBAAA,IAAAA,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAS,OAAO,UAAU,eAC1BC,GAAQ,OAAO,UAAU,SACzBC,GAAiB,OAAO,eACxBC,GAAO,OAAO,yBAEdC,GAAU,SAAiBC,EAAK,CACnC,OAAI,OAAO,MAAM,SAAY,WACrB,MAAM,QAAQA,CAAG,EAGlBJ,GAAM,KAAKI,CAAG,IAAM,gBAC5B,EAEIC,GAAgB,SAAuBC,EAAK,CAC/C,GAAI,CAACA,GAAON,GAAM,KAAKM,CAAG,IAAM,kBAC/B,MAAO,GAGR,IAAIC,EAAoBR,GAAO,KAAKO,EAAK,aAAa,EAClDE,EAAmBF,EAAI,aAAeA,EAAI,YAAY,WAAaP,GAAO,KAAKO,EAAI,YAAY,UAAW,eAAe,EAE7H,GAAIA,EAAI,aAAe,CAACC,GAAqB,CAACC,EAC7C,MAAO,GAKR,IAAIC,EACJ,IAAKA,KAAOH,EAAK,CAEjB,OAAO,OAAOG,EAAQ,KAAeV,GAAO,KAAKO,EAAKG,CAAG,CAC1D,EAGIC,GAAc,SAAqBC,EAAQC,EAAS,CACnDX,IAAkBW,EAAQ,OAAS,YACtCX,GAAeU,EAAQC,EAAQ,KAAM,CACpC,WAAY,GACZ,aAAc,GACd,MAAOA,EAAQ,SACf,SAAU,EACX,CAAC,EAEDD,EAAOC,EAAQ,IAAI,EAAIA,EAAQ,QAEjC,EAGIC,GAAc,SAAqBP,EAAKQ,EAAM,CACjD,GAAIA,IAAS,YACZ,GAAKf,GAAO,KAAKO,EAAKQ,CAAI,GAEnB,GAAIZ,GAGV,OAAOA,GAAKI,EAAKQ,CAAI,EAAE,UAJvB,QAQF,OAAOR,EAAIQ,CAAI,CAChB,EAEAhB,GAAO,QAAU,SAASiB,GAAS,CAClC,IAAIH,EAASE,EAAME,EAAKC,EAAMC,EAAaC,EACvCR,EAAS,UAAU,CAAC,EACpBS,EAAI,EACJC,EAAS,UAAU,OACnBC,EAAO,GAaX,IAVI,OAAOX,GAAW,YACrBW,EAAOX,EACPA,EAAS,UAAU,CAAC,GAAK,CAAC,EAE1BS,EAAI,IAEDT,GAAU,MAAS,OAAOA,GAAW,UAAY,OAAOA,GAAW,cACtEA,EAAS,CAAC,GAGJS,EAAIC,EAAQ,EAAED,EAGpB,GAFAR,EAAU,UAAUQ,CAAC,EAEjBR,GAAW,KAEd,IAAKE,KAAQF,EACZI,EAAMH,GAAYF,EAAQG,CAAI,EAC9BG,EAAOJ,GAAYD,EAASE,CAAI,EAG5BH,IAAWM,IAEVK,GAAQL,IAASZ,GAAcY,CAAI,IAAMC,EAAcf,GAAQc,CAAI,KAClEC,GACHA,EAAc,GACdC,EAAQH,GAAOb,GAAQa,CAAG,EAAIA,EAAM,CAAC,GAErCG,EAAQH,GAAOX,GAAcW,CAAG,EAAIA,EAAM,CAAC,EAI5CN,GAAYC,EAAQ,CAAE,KAAMG,EAAM,SAAUC,EAAOO,EAAMH,EAAOF,CAAI,CAAE,CAAC,GAG7D,OAAOA,EAAS,KAC1BP,GAAYC,EAAQ,CAAE,KAAMG,EAAM,SAAUG,CAAK,CAAC,GAQvD,OAAON,CACR,ICpHA,IAAYY,IAAL,SAAAA,EAAA,CACL,OAAAA,EAAA,aAAA,eACAA,EAAA,gBAAA,kBACAA,EAAA,cAAA,gBACAA,EAAA,kBAAA,oBACAA,EAAA,uBAAA,yBACAA,EAAA,cAAA,gBACAA,EAAA,iBAAA,mBACAA,EAAA,qBAAA,uBACAA,EAAA,sBAAA,wBACAA,EAAA,mBAAA,qBACAA,EAAA,4BAAA,8BACAA,EAAA,mBAAA,qBACAA,EAAA,oBAAA,sBACAA,EAAA,oBAAA,sBAGAA,EAAA,WAAA,aACAA,EAAA,cAAA,wBChBWC,GAAb,cAAmC,KAAM,CAEvC,YAAYC,EAAiBC,EAAiB,CAC5C,MAAMA,CAAA,EACN,KAAK,KAAO,gBACZ,KAAK,KAAOD,ICJVE,GAAA,CAAoBC,EAAWC,IACnC,OAAOA,GAAU,WAAa,aAAeA,EAEzCC,GAAaC,GAAuB,KAAK,UAAUA,EAAGJ,EAAA,EAE5D,SAAgBK,GAAaC,EAAe,CAC1C,OAAO,IAAIT,GACTD,GAAU,aACV,qCAAqCO,GAAUG,CAAA,CAAK,EAAA,EAIxD,SAAgBC,GAAgBC,EAAc,CAC5C,OAAO,IAAIX,GACTD,GAAU,gBACV,YAAYY,CAAA,0CAAK,EAIrB,SAAgBC,GAAcD,EAAc,CAC1C,OAAO,IAAIX,GACTD,GAAU,cACV,UAAUY,CAAA,0CAAK,EAInB,SAAgBE,IAAoB,CAClC,OAAO,IAAIb,GACTD,GAAU,kBACV,8CAAA,EAIJ,SAAgBe,GACdC,EACAC,EACAC,EACA,CAEA,IAAMC,EAAU,0BADK,SAAUH,EAAWA,EAAS,KAAOA,CAAA,GAEpDI,EAAaZ,GAAuB,CACxC,GAAIA,GAAK,KAAM,MAAO,OAEtB,GAAI,MAAM,QAAQA,CAAA,EAChB,MAAO,IAAIA,EAAE,IAAIY,CAAA,EAAW,KAAK,IAAA,CAAK,IAGxC,GAAI,OAAOZ,GAAM,SACf,MAAI,WAAYA,GAAK,OAAQA,EAAU,QAAW,WACzC,KAAK,UAAWA,EAAU,OAAA,CAAQ,EAGvC,SAAUA,EACL,KAAK,UAAWA,EAAU,IAAA,EAG5B,KAAK,UAAUA,CAAA,EAGxB,GACE,OAAOA,GAAM,UACb,OAAOA,GAAM,UACb,OAAOA,GAAM,UAEb,OAAO,KAAK,UAAUA,CAAA,EAGxB,GAAI,OAAOA,GAAM,WACf,MAAO,cAAeA,EAAe,MAAQ,WAAA,IAG/C,GAAI,CACF,OAAO,OAAOA,CAAA,OACR,CACN,MAAO,qBAmBLa,EAAW,CAfM,CAAC,gBAAiBF,CAAA,EACpB,CAAC,eAAgBF,CAAA,EACf,CACrB,aACCC,GAAW,CAAA,GAAI,IAAKI,GACdA,EAED,OAAOA,GAAS,UAAY,SAAUA,EACjC,GAAGA,CAAA,GAGLF,EAAUE,CAAA,EANC,OAOlB,GAG4D,OAAA,CAC7DC,EAAK,CAACC,EAAOlB,CAAA,IAAW,CACvB,IAAMH,EAAU,GAAGqB,CAAA,KAAUJ,EAAUd,CAAA,CAAM,IAC7C,OAAOiB,EAAI,OAAOpB,CAAA,GAEpB,CAAA,CAAE,EAGJ,OAAO,IAAIF,GACTD,GAAU,uBACVqB,EAAS,KAAK;CAAA,CAAK,EAIvB,SAAgBI,IAAgB,CAC9B,OAAO,IAAIxB,GACTD,GAAU,cACV,gDAAA,EAIJ,SAAgB0B,GAAiBJ,EAAe,CAC9C,OAAO,IAAIrB,GACTD,GAAU,iBACV,wCAAwCO,GAAUe,CAAA,CAAK,GAAC,EAI5D,SAAgBK,GAAqBL,EAAe,CAClD,OAAO,IAAIrB,GACTD,GAAU,qBACV,4CAA4CO,GAAUe,CAAA,CAAK,GAAC,EAIhE,SAAgBM,GAAsBlB,EAAuBE,EAAc,CACzE,OAAO,IAAIX,GACTD,GAAU,sBACV,cAAcU,CAAA,KAASE,CAAA,eAAK,EAIhC,SAAgBiB,GAAmBP,EAAe,CAChD,OAAO,IAAIrB,GACTD,GAAU,mBACV,gCAAgCO,GAAUe,CAAA,CAAK,GAAC,EAIpD,SAAgBQ,IAA8B,CAC5C,OAAO,IAAI7B,GACTD,GAAU,4BACV,iJAAA,EAWJ,SAAgB+B,GAAoBC,EAAc,CAChD,OAAO,IAAIC,GACTC,GAAU,oBACV,iDAAiDF,CAAA,cAAK,EAI1D,SAAgBG,GAAoBH,EAAc,CAChD,OAAO,IAAIC,GACTC,GAAU,oBACV,iDAAiDF,CAAA,cAAK,ECjK1D,IAAaI,GAAb,KAAuB,6BAEA,IAAI,aAIvBC,GACgB,CAChB,IAAMC,EACJ,OAAOD,GAAU,SACb,CAAC,GAAG,KAAK,SAAS,OAAA,CAAQ,EAAE,KAAME,GAAMA,EAAE,KAAK,OAASF,CAAA,EACxD,KAAK,SAAS,IAAIA,EAAM,EAAA,EAE9B,GAAI,CAACC,EAEH,MAAME,GADO,OAAOH,GAAU,SAAWA,EAAQA,EAAM,IAAA,EAGzD,OAAOC,eAI+BD,GAAqC,CAC3E,IAAMC,EACJ,OAAOD,GAAU,SACb,CAAC,GAAG,KAAK,SAAS,OAAA,CAAQ,EAAE,KAAME,GAAMA,EAAE,KAAK,OAASF,CAAA,EACxD,KAAK,SAAS,IAAIA,EAAM,EAAA,EAEzBC,GAEL,KAAK,SAAS,OAAOA,EAAQ,KAAK,EAAA,YAICD,GAC/B,OAAOA,GAAU,SACZ,CAAC,GAAG,KAAK,SAAS,OAAA,CAAQ,EAAE,KAAME,GAAMA,EAAE,KAAK,OAASF,CAAA,EAE1D,KAAK,SAAS,IAAIA,EAAM,EAAA,ICxCtBI,GAAb,KAAuD,CAKrDC,GAA0C,CAAA,EAG1CC,GAGAC,GAAA,IAAc,CACZ,KAAAF,GAAe,QAASG,GAAYA,EAAQ,KAAAF,EAAA,CAAY,GAI1D,YAAYG,EAAqBC,EAAUC,EAAuB,UAqC3DD,GAAa,CAClB,KAAAJ,GAAcI,EACd,KAAAH,GAAA,gBAIU,KAAAD,eAGFM,GAA4B,CACpC,KAAAN,GAAcM,EAAQ,KAAAN,EAAA,EACtB,KAAAC,GAAA,GA/CA,KAAK,KAAOI,EACZ,KAAAL,GAAcI,EACdD,EAAU,IAAIE,EAAK,GAAI,IAAA,EAKzB,GAAGH,EAAgC,CACjC,YAAAH,GAAe,KAAKG,CAAA,EACpB,IAAa,CACX,KAAAH,GAAiB,KAAAA,GAAe,OAAQQ,GAAMA,IAAML,CAAA,GAOxD,KAAKA,EAAgC,CACnC,IAAMM,EAAM,KAAK,GAAIJ,GAAU,CAC7BF,EAAQE,CAAA,EACRI,EAAA,IAEF,OAAOA,EAIT,IAAIN,EAAgC,CAClC,KAAAH,GAAiB,KAAAA,GAAe,OAAQQ,GAAMA,IAAML,CAAA,EAItD,QAAS,CACP,KAAAH,GAAiB,CAAA,IAoBRU,GAAb,KAA2D,CAYzD,YAAYL,EAAUM,EAAS,CAC7B,KAAK,GAAK,OAAO,WAAWA,CAAA,EAAA,EAC5B,KAAK,KAAOA,EACZ,KAAK,cAAgBN,EACrB,KAAK,UAAA,IAAqB,CACxB,MAAMO,GAAA,GAMV,OAAOR,EAAqBC,EAAW,KAAK,cAA4B,CACtE,OAAO,IAAIN,GAAMK,EAAWC,EAAO,IAAA,IAM1BQ,GAAA,CACXR,EACAM,IACG,IAAID,GAAUL,EAAOM,CAAA,EC9FbG,GAAb,KAAuB,CAErBC,GAGAC,GAGAC,GAGAC,GAAoD,IAAI,IAGxDC,GAAoD,IAAI,IAGxDC,GAGI,IAAI,IAGRC,GAA6D,IAAI,IAGjE,YAAYjB,EAAsBkB,EAAcC,EAAY,gBAQnD,CACL,SAAU,KAAAR,GACV,eAAgB,CAAC,GAAG,KAAAG,EAAA,EAAsB,IAAKvB,IAAW,CACxD,KAAM,OAAOA,GAAU,SAAWA,EAAQA,EAAM,KAChD,MAAO,KAAA6B,GAAe7B,CAAA,GACvB,EACD,eAAgB,CAAC,GAAG,KAAAwB,EAAA,EAAsB,IAAKxB,IAAW,CACxD,KAAM,OAAOA,GAAU,SAAWA,EAAQA,EAAM,KAChD,MAAO,KAAA6B,GAAe7B,CAAA,GACvB,EACD,eAAgB,CAAC,GAAG,KAAAyB,EAAA,EAAsB,IAAA,CACvC,CAACK,EAAO,CAAE,SAAAC,CAAA,CAAA,KAAiB,CAC1B,KAAMD,EAAM,KACZ,SAAAC,EACA,OAAQ,KAAAC,GAAeF,CAAA,GACxB,EAEH,WAAY,CAAC,GAAG,KAAAJ,EAAA,EAAkB,IAAA,CAAK,CAACI,EAAO,CAAE,SAAAC,CAAA,CAAA,KAAiB,CAChE,KAAMD,EAAM,KACZ,SAAAC,EACA,OAAQ,KAAAC,GAAeF,CAAA,GACxB,kBAKgBG,GAAyB,CAC5C,KAAAR,GAAqB,IAAIQ,EAAW,CAAE,MAAO,KAAK,IAAA,EAAO,SAAU,EAAG,gBAIpDA,GAAyB,CAC3C,KAAAR,GAAqB,OAAOQ,CAAA,eAIXA,GAAyB,CAC1C,IAAMH,EAAQ,KAAAL,GAAqB,IAAIQ,CAAA,EAClCH,IACLA,EAAM,SAAW,KAAK,IAAA,EAAQA,EAAM,qBAInBG,EAAsBC,IAA2B,CAClE,IAAMC,EAAQ,KAAK,IAAA,EACnBD,EACG,QAAA,IAAc,CACb,KAAAR,GAAiB,IAAIO,EAAW,CAAE,SAAU,KAAK,IAAA,EAAQE,CAAA,CAAO,IAEjE,MAAM,QAAQ,KAAA,iBAIEC,GAAkC,CACrD,KAAAb,GAAqB,IAAIa,CAAA,iBAINA,GAAkC,CACrD,KAAAb,GAAqB,OAAOa,CAAA,cAIZA,GAAkC,CAClD,KAAAZ,GAAqB,IAAIY,CAAA,GAvEzB,KAAAf,GAAkBZ,EAClB,KAAAa,GAAcK,EACd,KAAAP,GAAaQ,EAyEfC,GAAaO,GACJ,KAAAf,GAAgB,IAAIe,CAAA,EAAW,IAAA,EAIxCJ,GAAaC,GACJ,KAAAX,GAAY,IAAIW,CAAA,EAAW,QClHzBI,GAAb,MAAaA,EAAI,CAEfhB,GAEAC,GAEAF,GAEAkB,GAGA,YAAY7B,EAAsBkB,EAAcC,EAAa,cAoBzCA,GACdA,GAAQ,OAAO,KAAKA,CAAA,EAAM,OACrB,IAAIS,GAAI,KAAAhB,GAAiB,KAAAC,GAAa,CAAE,GAAGM,CAAA,CAAM,EAEnD,kBAIaQ,EAAyB1B,IAAc,CAC3D,IAAMV,EAAQoC,EAAU,OAAO,KAAAf,GAAgB,QAAA,EAC/C,OAAIX,GAAS,MAAMV,EAAM,IAAIU,CAAA,EAE7B,KAAA4B,IAAiB,SAASF,CAAA,EAEnB,kBAKPA,IAEA,KAAAf,GAAgB,OAAOe,CAAA,EACvB,KAAAE,IAAiB,SAASF,CAAA,EACnB,kBAIUH,IACjBA,EAAU,OAAO,KAAAX,GAAY,KAAA,EAC7B,KAAAgB,IAAiB,SAASL,CAAA,EACnB,sBAIcA,IACrB,KAAAX,GAAY,OAAOW,CAAA,EACnB,KAAAK,IAAiB,QAAQL,CAAA,EAClB,sBAKPG,GACG,KAAAf,GAAgB,IAAIe,CAAA,kBAGFH,GAAyB,KAAAX,GAAY,IAAIW,CAAA,WAI9DG,IAEA,KAAAE,IAAiB,MAAMF,CAAA,EAChB,KAAAf,GAAgB,IAAIe,CAAA,YAIQA,GACnC,KAAK,IAAIA,CAAA,EAAW,IAAA,YAIpBA,EACA1B,IACG,KAAK,IAAI0B,CAAA,EAAW,IAAI1B,CAAA,eAI3B0B,EACAxB,IACG,KAAK,IAAIwB,CAAA,EAAW,OAAOxB,CAAA,aAGdkB,GAAqB,KAAAR,GAAY,IAAIQ,CAAA,YAGtCA,GAAqB,CACpC,KAAK,MAAMA,CAAA,EAAO,KAAA,EAClB,KAAAQ,IAAiB,OAAOR,CAAA,aAITA,GAAqB,CACpC,IAAMI,EAAU,KAAK,MAAMJ,CAAA,EAAO,MAAA,EAClC,YAAAQ,IAAiB,OAAOR,EAAOI,CAAA,EACxBA,mBASa,MAAOlC,GAAkC,CAC7D,MAAM,QAAQ,IAAI,KAAK,IAAIA,CAAA,EAAO,IAAKE,GAAM,KAAK,KAAKA,CAAA,CAAE,CAAC,GAlH1D,KAAAmB,GAAkBZ,EAClB,KAAAa,GAAcK,EACd,KAAAP,GAAaQ,EACTA,IAAM,KAAAU,GAAkB,IAAInB,GAAUV,EAAWkB,EAAOC,CAAA,GAI9D,IAAI,MAAO,CACT,OAAO,KAAAR,GAIT,IAAI,WAAY,CACd,OAAO,KAAAkB,KCxBEC,GAAb,KAAmB,0BAEU,IAAI,aAGxBT,GAAqB,CAC1B,IAAMF,EAAO,KAAK,MAAM,IAAIE,EAAM,EAAA,EAClC,GAAI,CAACF,EAAM,MAAMY,GAAcV,EAAM,IAAA,EACrC,OAAOF,eAICE,GAAqB,CAC7B,KAAK,MAAM,OAAOA,EAAM,EAAA,YAInBA,GACE,KAAK,MAAM,IAAIA,EAAM,EAAA,ICrBnBW,GAAb,KAAmB,CAKjBC,GAAiC,KAEjCC,GAAkC,KAElCC,GAEAC,GAAuB,UAGvB,YAAYlB,EAAiBhB,EAAiB,iBAgB5C,KAAA+B,KAAkB,IAAI,QAAA,CAASI,EAASC,IAAW,CACjD,KAAAJ,GAAkBK,GAAa,CACvBA,aAAa,aAEfA,EAAE,OAAO,KAAO,KAAAJ,KAClB,KAAAC,GAAe,WACf,KAAAI,GAAA,EACAD,EAAE,yBAAA,EACFF,EAAA,IAIJ,KAAAI,GAAA,IAAwB,CAClB,KAAAL,KAAiB,YAAW,KAAAA,GAAe,YAE/C,KAAAI,GAAA,EACAF,EAAO,IAAI,MAAM,UAAU,KAAK,KAAK,IAAA,WAAK,CAAW,IAGvD,KAAAF,GAAe,UACf,iBAAiB,KAAK,KAAK,KAAM,KAAAF,EAAA,IAG5B,KAAAD,kBAII,CACX,IAAMS,EAAQ,IAAI,YAAY,KAAK,KAAK,KAAM,CAC5C,OAAQ,CAAE,GAAI,KAAAP,EAAA,CAAmB,CAClC,EACD,cAAcO,CAAA,GA9Cd,KAAAP,GAAoB,OAAOjC,EAAK,IAAA,EAChC,KAAK,KAAOA,EACZgB,EAAM,IAAIhB,EAAK,GAAI,IAAA,EAKrB,IAAI,QAAS,CACX,OAAO,KAAAkC,GA0CTI,GAAA,IAAwB,CAClB,KAAAN,IAAgB,oBAAoB,KAAK,KAAK,KAAM,KAAAA,EAAA,GAI1DO,GAAgBE,GAA0B,CACxC,WAAA,IAAiB,CACfA,EAAA,GACC,KAAK,KAAK,OAAA,IAKJC,GAAb,KAAuB,CAUrB,YAAYrC,EAAcsC,EAAU,IAAM,aAOhC3B,GACD,IAAIc,GAAMd,EAAO,IAAA,EAPxB,KAAK,GAAK,OAAO,SAASX,CAAA,EAAA,EAC1B,KAAK,KAAOA,EACZ,KAAK,QAAUsC,IAWNC,GAAA,CAAevC,EAAcsC,EAAU,MAClD,IAAID,GAAUrC,EAAMsC,CAAA,EChGtB,IAAME,GAAe,CAAC,EAef,SAASC,GAASC,EAAOC,EAAS,CACvC,IAAMC,EAAWD,GAAWH,GACtBK,EACJ,OAAOD,EAAS,iBAAoB,UAChCA,EAAS,gBACT,GACAE,EACJ,OAAOF,EAAS,aAAgB,UAAYA,EAAS,YAAc,GAErE,OAAOG,GAAIL,EAAOG,EAAiBC,CAAW,CAChD,CAcA,SAASC,GAAIL,EAAOG,EAAiBC,EAAa,CAChD,GAAIE,GAAKN,CAAK,EAAG,CACf,GAAI,UAAWA,EACb,OAAOA,EAAM,OAAS,QAAU,CAACI,EAAc,GAAKJ,EAAM,MAG5D,GAAIG,GAAmB,QAASH,GAASA,EAAM,IAC7C,OAAOA,EAAM,IAGf,GAAI,aAAcA,EAChB,OAAOO,GAAIP,EAAM,SAAUG,EAAiBC,CAAW,CAE3D,CAEA,OAAI,MAAM,QAAQJ,CAAK,EACdO,GAAIP,EAAOG,EAAiBC,CAAW,EAGzC,EACT,CAcA,SAASG,GAAIC,EAAQL,EAAiBC,EAAa,CAEjD,IAAMK,EAAS,CAAC,EACZC,EAAQ,GAEZ,KAAO,EAAEA,EAAQF,EAAO,QACtBC,EAAOC,CAAK,EAAIL,GAAIG,EAAOE,CAAK,EAAGP,EAAiBC,CAAW,EAGjE,OAAOK,EAAO,KAAK,EAAE,CACvB,CAUA,SAASH,GAAKN,EAAO,CACnB,MAAO,GAAQA,GAAS,OAAOA,GAAU,SAC3C,CCvGA,IAAMW,GAAU,SAAS,cAAc,GAAG,EAMnC,SAASC,GAA8BC,EAAO,CACnD,IAAMC,EAAqB,IAAMD,EAAQ,IACzCF,GAAQ,UAAYG,EACpB,IAAMC,EAAYJ,GAAQ,YAQ1B,OACEI,EAAU,WAAWA,EAAU,OAAS,CAAC,IAAM,IAC/CF,IAAU,QAOLE,IAAcD,EALZ,GAKyCC,CACpD,CCTO,SAASC,GAAOC,EAAMC,EAAOC,EAAQC,EAAO,CACjD,IAAMC,EAAMJ,EAAK,OACbK,EAAa,EAEbC,EAWJ,GARIL,EAAQ,EACVA,EAAQ,CAACA,EAAQG,EAAM,EAAIA,EAAMH,EAEjCA,EAAQA,EAAQG,EAAMA,EAAMH,EAE9BC,EAASA,EAAS,EAAIA,EAAS,EAG3BC,EAAM,OAAS,IACjBG,EAAa,MAAM,KAAKH,CAAK,EAC7BG,EAAW,QAAQL,EAAOC,CAAM,EAEhCF,EAAK,OAAO,GAAGM,CAAU,MAMzB,KAHIJ,GAAQF,EAAK,OAAOC,EAAOC,CAAM,EAG9BG,EAAaF,EAAM,QACxBG,EAAaH,EAAM,MAAME,EAAYA,EAAa,GAAK,EACvDC,EAAW,QAAQL,EAAO,CAAC,EAE3BD,EAAK,OAAO,GAAGM,CAAU,EACzBD,GAAc,IACdJ,GAAS,GAGf,CAkBO,SAASM,GAAKP,EAAMG,EAAO,CAChC,OAAIH,EAAK,OAAS,GAChBD,GAAOC,EAAMA,EAAK,OAAQ,EAAGG,CAAK,EAC3BH,GAEFG,CACT,CCrEA,IAAMK,GAAiB,CAAC,EAAE,eAUnB,SAASC,GAAkBC,EAAY,CAE5C,IAAMC,EAAM,CAAC,EACTC,EAAQ,GAEZ,KAAO,EAAEA,EAAQF,EAAW,QAC1BG,GAAgBF,EAAKD,EAAWE,CAAK,CAAC,EAGxC,OAAOD,CACT,CAYA,SAASE,GAAgBF,EAAKG,EAAW,CAEvC,IAAIC,EAEJ,IAAKA,KAAQD,EAAW,CAGtB,IAAME,GAFQR,GAAe,KAAKG,EAAKI,CAAI,EAAIJ,EAAII,CAAI,EAAI,UAEpCJ,EAAII,CAAI,EAAI,CAAC,GAE9BE,EAAQH,EAAUC,CAAI,EAExBG,EAEJ,GAAID,EACF,IAAKC,KAAQD,EAAO,CACbT,GAAe,KAAKQ,EAAME,CAAI,IAAGF,EAAKE,CAAI,EAAI,CAAC,GACpD,IAAMC,EAAQF,EAAMC,CAAI,EACxBE,GAEEJ,EAAKE,CAAI,EACT,MAAM,QAAQC,CAAK,EAAIA,EAAQA,EAAQ,CAACA,CAAK,EAAI,CAAC,CACpD,CACF,CAEJ,CACF,CAaA,SAASC,GAAWC,EAAUC,EAAM,CAClC,IAAIV,EAAQ,GAENW,EAAS,CAAC,EAEhB,KAAO,EAAEX,EAAQU,EAAK,SAElBA,EAAKV,CAAK,EAAE,MAAQ,QAAUS,EAAWE,GAAQ,KAAKD,EAAKV,CAAK,CAAC,EAGrEY,GAAOH,EAAU,EAAG,EAAGE,CAAM,CAC/B,CC9EO,SAASE,GAAgCC,EAAOC,EAAM,CAC3D,IAAMC,EAAO,OAAO,SAASF,EAAOC,CAAI,EACxC,OAEAC,EAAO,GAAKA,IAAS,IAAMA,EAAO,IAAMA,EAAO,IAE/CA,EAAO,KAAOA,EAAO,KAErBA,EAAO,OAAUA,EAAO,OAExBA,EAAO,OAAUA,EAAO,QACvBA,EAAO,SAAY,QAAWA,EAAO,SAAY,OAElDA,EAAO,QACE,SAEF,OAAO,cAAcA,CAAI,CAClC,CCZO,SAASC,GAAoBC,EAAO,CACzC,OAAOA,EAEN,QAAQ,cAAe,GAAG,EAE1B,QAAQ,SAAU,EAAE,EAOpB,YAAY,EAAE,YAAY,CAC7B,CCXO,IAAMC,GAAaC,GAAW,UAAU,EAclCC,GAAoBD,GAAW,YAAY,EAuB3CE,GAAaF,GAAW,qBAAqB,EAanD,SAASG,GAAaC,EAAM,CACjC,OAGEA,IAAS,OAASA,EAAO,IAAMA,IAAS,IAE5C,CAaO,IAAMC,GAAaL,GAAW,IAAI,EAoB5BM,GAAgBN,GAAW,YAAY,EAevCO,GAAmBP,GAAW,gBAAgB,EAiBpD,SAASQ,EAAmBJ,EAAM,CACvC,OAAOA,IAAS,MAAQA,EAAO,EACjC,CAWO,SAASK,GAA0BL,EAAM,CAC9C,OAAOA,IAAS,OAASA,EAAO,GAAKA,IAAS,GAChD,CAiBO,SAASM,GAAcN,EAAM,CAClC,OAAOA,IAAS,IAAMA,IAAS,IAAMA,IAAS,EAChD,CAuBO,IAAMO,GAAqBX,GAAW,cAAc,EAsB9CY,GAAoBZ,GAAW,IAAI,EAUhD,SAASA,GAAWa,EAAO,CACzB,OAAOC,EAUP,SAASA,EAAMV,EAAM,CACnB,OAAOA,IAAS,MAAQA,EAAO,IAAMS,EAAM,KAAK,OAAO,aAAaT,CAAI,CAAC,CAC3E,CACF,CC7MO,SAASW,EAAaC,EAASC,EAAIC,EAAMC,EAAK,CACnD,IAAMC,EAAQD,EAAMA,EAAM,EAAI,OAAO,kBACjCE,EAAO,EACX,OAAOC,EAGP,SAASA,EAAMC,EAAM,CACnB,OAAIC,GAAcD,CAAI,GACpBP,EAAQ,MAAME,CAAI,EACXO,EAAOF,CAAI,GAEbN,EAAGM,CAAI,CAChB,CAGA,SAASE,EAAOF,EAAM,CACpB,OAAIC,GAAcD,CAAI,GAAKF,IAASD,GAClCJ,EAAQ,QAAQO,CAAI,EACbE,IAETT,EAAQ,KAAKE,CAAI,EACVD,EAAGM,CAAI,EAChB,CACF,CClDO,IAAMG,GAAU,CACrB,SAAUC,EACZ,EAQA,SAASA,GAAkBC,EAAS,CAClC,IAAMC,EAAeD,EAAQ,QAAQ,KAAK,OAAO,WAAW,eAAgBE,EAA4BC,CAAgB,EAEpHC,EACJ,OAAOH,EAGP,SAASC,EAA2BG,EAAM,CACxC,GAAIA,IAAS,KAAM,CACjBL,EAAQ,QAAQK,CAAI,EACpB,MACF,CACA,OAAAL,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,YAAY,EAClBM,EAAaN,EAASC,EAAc,YAAY,CACzD,CAGA,SAASE,EAAiBE,EAAM,CAC9B,OAAAL,EAAQ,MAAM,WAAW,EAClBO,EAAUF,CAAI,CACvB,CAGA,SAASE,EAAUF,EAAM,CACvB,IAAMG,EAAQR,EAAQ,MAAM,YAAa,CACvC,YAAa,OACb,SAAAI,CACF,CAAC,EACD,OAAIA,IACFA,EAAS,KAAOI,GAElBJ,EAAWI,EACJC,EAAKJ,CAAI,CAClB,CAGA,SAASI,EAAKJ,EAAM,CAClB,GAAIA,IAAS,KAAM,CACjBL,EAAQ,KAAK,WAAW,EACxBA,EAAQ,KAAK,WAAW,EACxBA,EAAQ,QAAQK,CAAI,EACpB,MACF,CACA,OAAIK,EAAmBL,CAAI,GACzBL,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,WAAW,EACjBO,IAITP,EAAQ,QAAQK,CAAI,EACbI,EACT,CACF,CCvDO,IAAME,GAAW,CACtB,SAAUC,EACZ,EAGMC,GAAqB,CACzB,SAAUC,EACZ,EAQA,SAASF,GAAmBG,EAAS,CACnC,IAAMC,EAAO,KAEPC,EAAQ,CAAC,EACXC,EAAY,EAEZC,EAEAC,EAEAC,EACJ,OAAOC,EAGP,SAASA,EAAMC,EAAM,CAWnB,GAAIL,EAAYD,EAAM,OAAQ,CAC5B,IAAMO,EAAOP,EAAMC,CAAS,EAC5B,OAAAF,EAAK,eAAiBQ,EAAK,CAAC,EACrBT,EAAQ,QAAQS,EAAK,CAAC,EAAE,aAAcC,EAAkBC,CAAkB,EAAEH,CAAI,CACzF,CAGA,OAAOG,EAAmBH,CAAI,CAChC,CAGA,SAASE,EAAiBF,EAAM,CAM9B,GALAL,IAKIF,EAAK,eAAe,WAAY,CAClCA,EAAK,eAAe,WAAa,OAC7BG,GACFQ,EAAU,EAKZ,IAAMC,EAAmBZ,EAAK,OAAO,OACjCa,EAAkBD,EAElBE,EAGJ,KAAOD,KACL,GAAIb,EAAK,OAAOa,CAAe,EAAE,CAAC,IAAM,QAAUb,EAAK,OAAOa,CAAe,EAAE,CAAC,EAAE,OAAS,YAAa,CACtGC,EAAQd,EAAK,OAAOa,CAAe,EAAE,CAAC,EAAE,IACxC,KACF,CAEFE,EAAeb,CAAS,EAGxB,IAAIc,EAAQJ,EACZ,KAAOI,EAAQhB,EAAK,OAAO,QACzBA,EAAK,OAAOgB,CAAK,EAAE,CAAC,EAAE,IAAM,CAC1B,GAAGF,CACL,EACAE,IAIF,OAAAC,GAAOjB,EAAK,OAAQa,EAAkB,EAAG,EAAGb,EAAK,OAAO,MAAMY,CAAgB,CAAC,EAG/EZ,EAAK,OAAO,OAASgB,EACdN,EAAmBH,CAAI,CAChC,CACA,OAAOD,EAAMC,CAAI,CACnB,CAGA,SAASG,EAAmBH,EAAM,CAMhC,GAAIL,IAAcD,EAAM,OAAQ,CAI9B,GAAI,CAACE,EACH,OAAOe,EAAkBX,CAAI,EAM/B,GAAIJ,EAAU,kBAAoBA,EAAU,iBAAiB,SAC3D,OAAOgB,EAAUZ,CAAI,EAQvBP,EAAK,UAAY,GAAQG,EAAU,kBAAoB,CAACA,EAAU,8BACpE,CAGA,OAAAH,EAAK,eAAiB,CAAC,EAChBD,EAAQ,MAAMF,GAAoBuB,EAAsBC,CAAqB,EAAEd,CAAI,CAC5F,CAGA,SAASa,EAAqBb,EAAM,CAClC,OAAIJ,GAAWQ,EAAU,EACzBI,EAAeb,CAAS,EACjBgB,EAAkBX,CAAI,CAC/B,CAGA,SAASc,EAAsBd,EAAM,CACnC,OAAAP,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,EAAIE,IAAcD,EAAM,OACxDI,EAAkBL,EAAK,IAAI,EAAE,OACtBmB,EAAUZ,CAAI,CACvB,CAGA,SAASW,EAAkBX,EAAM,CAE/B,OAAAP,EAAK,eAAiB,CAAC,EAChBD,EAAQ,QAAQF,GAAoByB,EAAmBH,CAAS,EAAEZ,CAAI,CAC/E,CAGA,SAASe,EAAkBf,EAAM,CAC/B,OAAAL,IACAD,EAAM,KAAK,CAACD,EAAK,iBAAkBA,EAAK,cAAc,CAAC,EAEhDkB,EAAkBX,CAAI,CAC/B,CAGA,SAASY,EAAUZ,EAAM,CACvB,GAAIA,IAAS,KAAM,CACbJ,GAAWQ,EAAU,EACzBI,EAAe,CAAC,EAChBhB,EAAQ,QAAQQ,CAAI,EACpB,MACF,CACA,OAAAJ,EAAYA,GAAaH,EAAK,OAAO,KAAKA,EAAK,IAAI,CAAC,EACpDD,EAAQ,MAAM,YAAa,CACzB,WAAYI,EACZ,YAAa,OACb,SAAUC,CACZ,CAAC,EACMmB,EAAahB,CAAI,CAC1B,CAGA,SAASgB,EAAahB,EAAM,CAC1B,GAAIA,IAAS,KAAM,CACjBiB,EAAazB,EAAQ,KAAK,WAAW,EAAG,EAAI,EAC5CgB,EAAe,CAAC,EAChBhB,EAAQ,QAAQQ,CAAI,EACpB,MACF,CACA,OAAIkB,EAAmBlB,CAAI,GACzBR,EAAQ,QAAQQ,CAAI,EACpBiB,EAAazB,EAAQ,KAAK,WAAW,CAAC,EAEtCG,EAAY,EACZF,EAAK,UAAY,OACVM,IAETP,EAAQ,QAAQQ,CAAI,EACbgB,EACT,CAUA,SAASC,EAAaE,EAAOC,EAAW,CACtC,IAAMC,EAAS5B,EAAK,YAAY0B,CAAK,EAyCrC,GAxCIC,GAAWC,EAAO,KAAK,IAAI,EAC/BF,EAAM,SAAWtB,EACbA,IAAYA,EAAW,KAAOsB,GAClCtB,EAAasB,EACbvB,EAAU,WAAWuB,EAAM,KAAK,EAChCvB,EAAU,MAAMyB,CAAM,EAmClB5B,EAAK,OAAO,KAAK0B,EAAM,MAAM,IAAI,EAAG,CACtC,IAAIV,EAAQb,EAAU,OAAO,OAC7B,KAAOa,KACL,GAEAb,EAAU,OAAOa,CAAK,EAAE,CAAC,EAAE,MAAM,OAASX,IAE1C,CAACF,EAAU,OAAOa,CAAK,EAAE,CAAC,EAAE,KAE5Bb,EAAU,OAAOa,CAAK,EAAE,CAAC,EAAE,IAAI,OAASX,GAGtC,OAMJ,IAAMO,EAAmBZ,EAAK,OAAO,OACjCa,EAAkBD,EAElBiB,EAEAf,EAGJ,KAAOD,KACL,GAAIb,EAAK,OAAOa,CAAe,EAAE,CAAC,IAAM,QAAUb,EAAK,OAAOa,CAAe,EAAE,CAAC,EAAE,OAAS,YAAa,CACtG,GAAIgB,EAAM,CACRf,EAAQd,EAAK,OAAOa,CAAe,EAAE,CAAC,EAAE,IACxC,KACF,CACAgB,EAAO,EACT,CAMF,IAJAd,EAAeb,CAAS,EAGxBc,EAAQJ,EACDI,EAAQhB,EAAK,OAAO,QACzBA,EAAK,OAAOgB,CAAK,EAAE,CAAC,EAAE,IAAM,CAC1B,GAAGF,CACL,EACAE,IAIFC,GAAOjB,EAAK,OAAQa,EAAkB,EAAG,EAAGb,EAAK,OAAO,MAAMY,CAAgB,CAAC,EAG/EZ,EAAK,OAAO,OAASgB,CACvB,CACF,CAQA,SAASD,EAAee,EAAM,CAC5B,IAAId,EAAQf,EAAM,OAGlB,KAAOe,KAAUc,GAAM,CACrB,IAAMC,EAAQ9B,EAAMe,CAAK,EACzBhB,EAAK,eAAiB+B,EAAM,CAAC,EAC7BA,EAAM,CAAC,EAAE,KAAK,KAAK/B,EAAMD,CAAO,CAClC,CACAE,EAAM,OAAS6B,CACjB,CACA,SAASnB,GAAY,CACnBR,EAAU,MAAM,CAAC,IAAI,CAAC,EACtBC,EAAa,OACbD,EAAY,OACZH,EAAK,eAAe,WAAa,MACnC,CACF,CAQA,SAASF,GAAkBC,EAASiC,EAAIC,EAAK,CAG3C,OAAOC,EAAanC,EAASA,EAAQ,QAAQ,KAAK,OAAO,WAAW,SAAUiC,EAAIC,CAAG,EAAG,aAAc,KAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,CACpL,CCtVO,SAASE,GAAkBC,EAAM,CACtC,GAAIA,IAAS,MAAQC,GAA0BD,CAAI,GAAKE,GAAkBF,CAAI,EAC5E,MAAO,GAET,GAAIG,GAAmBH,CAAI,EACzB,MAAO,EAEX,CCVO,SAASI,GAAWC,EAAYC,EAAQC,EAAS,CAEtD,IAAMC,EAAS,CAAC,EACZC,EAAQ,GAEZ,KAAO,EAAEA,EAAQJ,EAAW,QAAQ,CAClC,IAAMK,EAAUL,EAAWI,CAAK,EAAE,WAE9BC,GAAW,CAACF,EAAO,SAASE,CAAO,IACrCJ,EAASI,EAAQJ,EAAQC,CAAO,EAChCC,EAAO,KAAKE,CAAO,EAEvB,CAEA,OAAOJ,CACT,CCbO,IAAMK,GAAY,CACvB,KAAM,YACN,WAAYC,GACZ,SAAUC,EACZ,EAQA,SAASD,GAAoBE,EAAQC,EAAS,CAC5C,IAAIC,EAAQ,GAERC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAMJ,KAAO,EAAER,EAAQF,EAAO,QAEtB,GAAIA,EAAOE,CAAK,EAAE,CAAC,IAAM,SAAWF,EAAOE,CAAK,EAAE,CAAC,EAAE,OAAS,qBAAuBF,EAAOE,CAAK,EAAE,CAAC,EAAE,QAIpG,IAHAC,EAAOD,EAGAC,KAEL,GAAIH,EAAOG,CAAI,EAAE,CAAC,IAAM,QAAUH,EAAOG,CAAI,EAAE,CAAC,EAAE,OAAS,qBAAuBH,EAAOG,CAAI,EAAE,CAAC,EAAE,OAElGF,EAAQ,eAAeD,EAAOG,CAAI,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,IAAMF,EAAQ,eAAeD,EAAOE,CAAK,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,EAAG,CAKhH,IAAKF,EAAOG,CAAI,EAAE,CAAC,EAAE,QAAUH,EAAOE,CAAK,EAAE,CAAC,EAAE,SAAWF,EAAOE,CAAK,EAAE,CAAC,EAAE,IAAI,OAASF,EAAOE,CAAK,EAAE,CAAC,EAAE,MAAM,QAAU,GAAK,GAAGF,EAAOG,CAAI,EAAE,CAAC,EAAE,IAAI,OAASH,EAAOG,CAAI,EAAE,CAAC,EAAE,MAAM,OAASH,EAAOE,CAAK,EAAE,CAAC,EAAE,IAAI,OAASF,EAAOE,CAAK,EAAE,CAAC,EAAE,MAAM,QAAU,GAC3P,SAIFM,EAAMR,EAAOG,CAAI,EAAE,CAAC,EAAE,IAAI,OAASH,EAAOG,CAAI,EAAE,CAAC,EAAE,MAAM,OAAS,GAAKH,EAAOE,CAAK,EAAE,CAAC,EAAE,IAAI,OAASF,EAAOE,CAAK,EAAE,CAAC,EAAE,MAAM,OAAS,EAAI,EAAI,EAC7I,IAAMS,EAAQ,CACZ,GAAGX,EAAOG,CAAI,EAAE,CAAC,EAAE,GACrB,EACMS,EAAM,CACV,GAAGZ,EAAOE,CAAK,EAAE,CAAC,EAAE,KACtB,EACAW,GAAUF,EAAO,CAACH,CAAG,EACrBK,GAAUD,EAAKJ,CAAG,EAClBF,EAAkB,CAChB,KAAME,EAAM,EAAI,iBAAmB,mBACnC,MAAAG,EACA,IAAK,CACH,GAAGX,EAAOG,CAAI,EAAE,CAAC,EAAE,GACrB,CACF,EACAI,EAAkB,CAChB,KAAMC,EAAM,EAAI,iBAAmB,mBACnC,MAAO,CACL,GAAGR,EAAOE,CAAK,EAAE,CAAC,EAAE,KACtB,EACA,IAAAU,CACF,EACAP,EAAO,CACL,KAAMG,EAAM,EAAI,aAAe,eAC/B,MAAO,CACL,GAAGR,EAAOG,CAAI,EAAE,CAAC,EAAE,GACrB,EACA,IAAK,CACH,GAAGH,EAAOE,CAAK,EAAE,CAAC,EAAE,KACtB,CACF,EACAE,EAAQ,CACN,KAAMI,EAAM,EAAI,SAAW,WAC3B,MAAO,CACL,GAAGF,EAAgB,KACrB,EACA,IAAK,CACH,GAAGC,EAAgB,GACrB,CACF,EACAP,EAAOG,CAAI,EAAE,CAAC,EAAE,IAAM,CACpB,GAAGG,EAAgB,KACrB,EACAN,EAAOE,CAAK,EAAE,CAAC,EAAE,MAAQ,CACvB,GAAGK,EAAgB,GACrB,EACAE,EAAa,CAAC,EAGVT,EAAOG,CAAI,EAAE,CAAC,EAAE,IAAI,OAASH,EAAOG,CAAI,EAAE,CAAC,EAAE,MAAM,SACrDM,EAAaK,GAAKL,EAAY,CAAC,CAAC,QAAST,EAAOG,CAAI,EAAE,CAAC,EAAGF,CAAO,EAAG,CAAC,OAAQD,EAAOG,CAAI,EAAE,CAAC,EAAGF,CAAO,CAAC,CAAC,GAIzGQ,EAAaK,GAAKL,EAAY,CAAC,CAAC,QAASL,EAAOH,CAAO,EAAG,CAAC,QAASK,EAAiBL,CAAO,EAAG,CAAC,OAAQK,EAAiBL,CAAO,EAAG,CAAC,QAASI,EAAMJ,CAAO,CAAC,CAAC,EAK5JQ,EAAaK,GAAKL,EAAYM,GAAWd,EAAQ,OAAO,WAAW,WAAW,KAAMD,EAAO,MAAMG,EAAO,EAAGD,CAAK,EAAGD,CAAO,CAAC,EAG3HQ,EAAaK,GAAKL,EAAY,CAAC,CAAC,OAAQJ,EAAMJ,CAAO,EAAG,CAAC,QAASM,EAAiBN,CAAO,EAAG,CAAC,OAAQM,EAAiBN,CAAO,EAAG,CAAC,OAAQG,EAAOH,CAAO,CAAC,CAAC,EAGtJD,EAAOE,CAAK,EAAE,CAAC,EAAE,IAAI,OAASF,EAAOE,CAAK,EAAE,CAAC,EAAE,MAAM,QACvDQ,EAAS,EACTD,EAAaK,GAAKL,EAAY,CAAC,CAAC,QAAST,EAAOE,CAAK,EAAE,CAAC,EAAGD,CAAO,EAAG,CAAC,OAAQD,EAAOE,CAAK,EAAE,CAAC,EAAGD,CAAO,CAAC,CAAC,GAEzGS,EAAS,EAEXM,GAAOhB,EAAQG,EAAO,EAAGD,EAAQC,EAAO,EAAGM,CAAU,EACrDP,EAAQC,EAAOM,EAAW,OAASC,EAAS,EAC5C,KACF,EAON,IADAR,EAAQ,GACD,EAAEA,EAAQF,EAAO,QAClBA,EAAOE,CAAK,EAAE,CAAC,EAAE,OAAS,sBAC5BF,EAAOE,CAAK,EAAE,CAAC,EAAE,KAAO,QAG5B,OAAOF,CACT,CAOA,SAASD,GAAkBkB,EAASC,EAAI,CACtC,IAAMC,EAAmB,KAAK,OAAO,WAAW,iBAAiB,KAC3DC,EAAW,KAAK,SAChBC,EAASC,GAAkBF,CAAQ,EAGrCG,EACJ,OAAOZ,EAYP,SAASA,EAAMa,EAAM,CACnB,OAAAD,EAASC,EACTP,EAAQ,MAAM,mBAAmB,EAC1BQ,EAAOD,CAAI,CACpB,CAYA,SAASC,EAAOD,EAAM,CACpB,GAAIA,IAASD,EACX,OAAAN,EAAQ,QAAQO,CAAI,EACbC,EAET,IAAMC,EAAQT,EAAQ,KAAK,mBAAmB,EAGxCU,EAAQL,GAAkBE,CAAI,EAI9BrB,EAAO,CAACwB,GAASA,IAAU,GAAKN,GAAUF,EAAiB,SAASK,CAAI,EACxEI,EAAQ,CAACP,GAAUA,IAAW,GAAKM,GAASR,EAAiB,SAASC,CAAQ,EACpF,OAAAM,EAAM,MAAQ,GAAQH,IAAW,GAAKpB,EAAOA,IAASkB,GAAU,CAACO,IACjEF,EAAM,OAAS,GAAQH,IAAW,GAAKK,EAAQA,IAAUD,GAAS,CAACxB,IAC5De,EAAGM,CAAI,CAChB,CACF,CAeA,SAASX,GAAUgB,EAAOnB,EAAQ,CAChCmB,EAAM,QAAUnB,EAChBmB,EAAM,QAAUnB,EAChBmB,EAAM,cAAgBnB,CACxB,CCrOO,IAAMoB,GAAW,CACtB,KAAM,WACN,SAAUC,EACZ,EAOA,SAASA,GAAiBC,EAASC,EAAIC,EAAK,CAC1C,IAAIC,EAAO,EACX,OAAOC,EAcP,SAASA,EAAMC,EAAM,CACnB,OAAAL,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,MAAM,kBAAkB,EACzBM,CACT,CAcA,SAASA,EAAKD,EAAM,CAClB,OAAIE,GAAWF,CAAI,GACjBL,EAAQ,QAAQK,CAAI,EACbG,GAELH,IAAS,GACJH,EAAIG,CAAI,EAEVI,EAAWJ,CAAI,CACxB,CAcA,SAASG,EAAmBH,EAAM,CAEhC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMK,GAAkBL,CAAI,GAErEF,EAAO,EACAQ,EAAyBN,CAAI,GAE/BI,EAAWJ,CAAI,CACxB,CAcA,SAASM,EAAyBN,EAAM,CACtC,OAAIA,IAAS,IACXL,EAAQ,QAAQK,CAAI,EACpBF,EAAO,EACAS,IAIJP,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMK,GAAkBL,CAAI,IAAMF,IAAS,IACrFH,EAAQ,QAAQK,CAAI,EACbM,IAETR,EAAO,EACAM,EAAWJ,CAAI,EACxB,CAYA,SAASO,EAAUP,EAAM,CACvB,OAAIA,IAAS,IACXL,EAAQ,KAAK,kBAAkB,EAC/BA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBC,GAILI,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMQ,GAAaR,CAAI,EAC3DH,EAAIG,CAAI,GAEjBL,EAAQ,QAAQK,CAAI,EACbO,EACT,CAYA,SAASH,EAAWJ,EAAM,CACxB,OAAIA,IAAS,IACXL,EAAQ,QAAQK,CAAI,EACbS,GAELC,GAAWV,CAAI,GACjBL,EAAQ,QAAQK,CAAI,EACbI,GAEFP,EAAIG,CAAI,CACjB,CAYA,SAASS,EAAiBT,EAAM,CAC9B,OAAOK,GAAkBL,CAAI,EAAIW,EAAWX,CAAI,EAAIH,EAAIG,CAAI,CAC9D,CAYA,SAASW,EAAWX,EAAM,CACxB,OAAIA,IAAS,IACXL,EAAQ,QAAQK,CAAI,EACpBF,EAAO,EACAW,GAELT,IAAS,IAEXL,EAAQ,KAAK,kBAAkB,EAAE,KAAO,gBACxCA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBC,GAEFgB,EAAWZ,CAAI,CACxB,CAcA,SAASY,EAAWZ,EAAM,CAExB,IAAKA,IAAS,IAAMK,GAAkBL,CAAI,IAAMF,IAAS,GAAI,CAC3D,IAAMe,EAAOb,IAAS,GAAKY,EAAaD,EACxC,OAAAhB,EAAQ,QAAQK,CAAI,EACba,CACT,CACA,OAAOhB,EAAIG,CAAI,CACjB,CACF,CC5NO,IAAMc,GAAY,CACvB,QAAS,GACT,SAAUC,EACZ,EAOA,SAASA,GAAkBC,EAASC,EAAIC,EAAK,CAC3C,OAAOC,EAgBP,SAASA,EAAMC,EAAM,CACnB,OAAOC,GAAcD,CAAI,EAAIE,EAAaN,EAASO,EAAO,YAAY,EAAEH,CAAI,EAAIG,EAAMH,CAAI,CAC5F,CAgBA,SAASG,EAAMH,EAAM,CACnB,OAAOA,IAAS,MAAQI,EAAmBJ,CAAI,EAAIH,EAAGG,CAAI,EAAIF,EAAIE,CAAI,CACxE,CACF,CC/CO,IAAMK,GAAa,CACxB,aAAc,CACZ,SAAUC,EACZ,EACA,KAAAC,GACA,KAAM,aACN,SAAUC,EACZ,EAOA,SAASA,GAAwBC,EAASC,EAAIC,EAAK,CACjD,IAAMC,EAAO,KACb,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,GAAIA,IAAS,GAAI,CACf,IAAMC,EAAQH,EAAK,eACnB,OAAKG,EAAM,OACTN,EAAQ,MAAM,aAAc,CAC1B,WAAY,EACd,CAAC,EACDM,EAAM,KAAO,IAEfN,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,kBAAkB,EACxBO,CACT,CACA,OAAOL,EAAIG,CAAI,CACjB,CAYA,SAASE,EAAMF,EAAM,CACnB,OAAIG,GAAcH,CAAI,GACpBL,EAAQ,MAAM,4BAA4B,EAC1CA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,4BAA4B,EACzCA,EAAQ,KAAK,kBAAkB,EACxBC,IAETD,EAAQ,KAAK,kBAAkB,EACxBC,EAAGI,CAAI,EAChB,CACF,CAeA,SAASR,GAA+BG,EAASC,EAAIC,EAAK,CACxD,IAAMC,EAAO,KACb,OAAOM,EAeP,SAASA,EAAUJ,EAAM,CACvB,OAAIG,GAAcH,CAAI,EAGbK,EAAaV,EAASW,EAAY,aAAcR,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEE,CAAI,EAEpIM,EAAWN,CAAI,CACxB,CAeA,SAASM,EAAWN,EAAM,CACxB,OAAOL,EAAQ,QAAQJ,GAAYK,EAAIC,CAAG,EAAEG,CAAI,CAClD,CACF,CAGA,SAASP,GAAKE,EAAS,CACrBA,EAAQ,KAAK,YAAY,CAC3B,CCnIO,IAAMY,GAAkB,CAC7B,KAAM,kBACN,SAAUC,EACZ,EAOA,SAASA,GAAwBC,EAASC,EAAIC,EAAK,CACjD,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAAJ,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQI,CAAI,EACpBJ,EAAQ,KAAK,cAAc,EACpBK,CACT,CAYA,SAASA,EAAOD,EAAM,CAEpB,OAAIE,GAAiBF,CAAI,GACvBJ,EAAQ,MAAM,sBAAsB,EACpCA,EAAQ,QAAQI,CAAI,EACpBJ,EAAQ,KAAK,sBAAsB,EACnCA,EAAQ,KAAK,iBAAiB,EACvBC,GAEFC,EAAIE,CAAI,CACjB,CACF,CClDO,IAAMG,GAAqB,CAChC,KAAM,qBACN,SAAUC,EACZ,EAOA,SAASA,GAA2BC,EAASC,EAAIC,EAAK,CACpD,IAAMC,EAAO,KACTC,EAAO,EAEPC,EAEAC,EACJ,OAAOC,EAgBP,SAASA,EAAMC,EAAM,CACnB,OAAAR,EAAQ,MAAM,oBAAoB,EAClCA,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,0BAA0B,EAChCS,CACT,CAiBA,SAASA,EAAKD,EAAM,CAClB,OAAIA,IAAS,IACXR,EAAQ,MAAM,iCAAiC,EAC/CA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,iCAAiC,EACvCU,IAETV,EAAQ,MAAM,yBAAyB,EACvCK,EAAM,GACNC,EAAOK,GACAC,EAAMJ,CAAI,EACnB,CAcA,SAASE,EAAQF,EAAM,CACrB,OAAIA,IAAS,IAAMA,IAAS,KAC1BR,EAAQ,MAAM,qCAAqC,EACnDA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,qCAAqC,EAClDA,EAAQ,MAAM,yBAAyB,EACvCK,EAAM,EACNC,EAAOO,GACAD,IAETZ,EAAQ,MAAM,yBAAyB,EACvCK,EAAM,EACNC,EAAOQ,GACAF,EAAMJ,CAAI,EACnB,CAmBA,SAASI,EAAMJ,EAAM,CACnB,GAAIA,IAAS,IAAMJ,EAAM,CACvB,IAAMW,EAAQf,EAAQ,KAAK,yBAAyB,EACpD,OAAIM,IAASK,IAAqB,CAACK,GAA8Bb,EAAK,eAAeY,CAAK,CAAC,EAClFb,EAAIM,CAAI,GAKjBR,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,0BAA0B,EACvCA,EAAQ,KAAK,oBAAoB,EAC1BC,EACT,CACA,OAAIK,EAAKE,CAAI,GAAKJ,IAASC,GACzBL,EAAQ,QAAQQ,CAAI,EACbI,GAEFV,EAAIM,CAAI,CACjB,CACF,CCvIA,IAAMS,GAAsB,CAC1B,QAAS,GACT,SAAUC,EACZ,EAGaC,GAAa,CACxB,SAAU,GACV,KAAM,aACN,SAAUC,EACZ,EAOA,SAASA,GAAmBC,EAASC,EAAIC,EAAK,CAC5C,IAAMC,EAAO,KAEPC,EAAa,CACjB,QAAS,GACT,SAAUC,CACZ,EACIC,EAAgB,EAChBC,EAAW,EAEXC,EACJ,OAAOC,EAcP,SAASA,EAAMC,EAAM,CAEnB,OAAOC,EAAmBD,CAAI,CAChC,CAcA,SAASC,EAAmBD,EAAM,CAChC,IAAME,EAAOT,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAAG,EAAgBM,GAAQA,EAAK,CAAC,EAAE,OAAS,aAAeA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OAAS,EACvGJ,EAASE,EACTV,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,MAAM,yBAAyB,EAChCa,EAAaH,CAAI,CAC1B,CAcA,SAASG,EAAaH,EAAM,CAC1B,OAAIA,IAASF,GACXD,IACAP,EAAQ,QAAQU,CAAI,EACbG,GAELN,EAAW,EACNL,EAAIQ,CAAI,GAEjBV,EAAQ,KAAK,yBAAyB,EAC/Bc,GAAcJ,CAAI,EAAIK,EAAaf,EAASgB,EAAY,YAAY,EAAEN,CAAI,EAAIM,EAAWN,CAAI,EACtG,CAcA,SAASM,EAAWN,EAAM,CACxB,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,GAC1CV,EAAQ,KAAK,iBAAiB,EACvBG,EAAK,UAAYF,EAAGS,CAAI,EAAIV,EAAQ,MAAMJ,GAAqBsB,EAAgBC,CAAK,EAAET,CAAI,IAEnGV,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMoB,EAAKV,CAAI,EAClB,CAcA,SAASU,EAAKV,EAAM,CAClB,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,GAC1CV,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3BgB,EAAWN,CAAI,GAEpBI,GAAcJ,CAAI,GACpBV,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3Be,EAAaf,EAASqB,EAAY,YAAY,EAAEX,CAAI,GAEzDA,IAAS,IAAMA,IAASF,EACnBN,EAAIQ,CAAI,GAEjBV,EAAQ,QAAQU,CAAI,EACbU,EACT,CAcA,SAASC,EAAWX,EAAM,CACxB,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,EACnCM,EAAWN,CAAI,GAExBV,EAAQ,MAAM,qBAAqB,EACnCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMsB,EAAKZ,CAAI,EAClB,CAcA,SAASY,EAAKZ,EAAM,CAClB,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,GAC1CV,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,qBAAqB,EAC3BgB,EAAWN,CAAI,GAEpBA,IAAS,IAAMA,IAASF,EACnBN,EAAIQ,CAAI,GAEjBV,EAAQ,QAAQU,CAAI,EACbY,EACT,CAeA,SAASJ,EAAeR,EAAM,CAC5B,OAAOV,EAAQ,QAAQI,EAAYe,EAAOI,CAAa,EAAEb,CAAI,CAC/D,CAcA,SAASa,EAAcb,EAAM,CAC3B,OAAAV,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQU,CAAI,EACpBV,EAAQ,KAAK,YAAY,EAClBwB,CACT,CAcA,SAASA,EAAad,EAAM,CAC1B,OAAOJ,EAAgB,GAAKQ,GAAcJ,CAAI,EAAIK,EAAaf,EAASyB,EAAoB,aAAcnB,EAAgB,CAAC,EAAEI,CAAI,EAAIe,EAAmBf,CAAI,CAC9J,CAcA,SAASe,EAAmBf,EAAM,CAChC,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,EACnCV,EAAQ,MAAMJ,GAAqBsB,EAAgBC,CAAK,EAAET,CAAI,GAEvEV,EAAQ,MAAM,eAAe,EACtB0B,EAAahB,CAAI,EAC1B,CAcA,SAASgB,EAAahB,EAAM,CAC1B,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,GAC1CV,EAAQ,KAAK,eAAe,EACrByB,EAAmBf,CAAI,IAEhCV,EAAQ,QAAQU,CAAI,EACbgB,EACT,CAcA,SAASP,EAAMT,EAAM,CACnB,OAAAV,EAAQ,KAAK,YAAY,EAClBC,EAAGS,CAAI,CAChB,CAOA,SAASL,EAAmBL,EAASC,EAAIC,EAAK,CAC5C,IAAIyB,EAAO,EACX,OAAOC,EAOP,SAASA,EAAYlB,GAAM,CACzB,OAAAV,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQU,EAAI,EACpBV,EAAQ,KAAK,YAAY,EAClBS,EACT,CAcA,SAASA,GAAMC,GAAM,CAInB,OAAAV,EAAQ,MAAM,iBAAiB,EACxBc,GAAcJ,EAAI,EAAIK,EAAaf,EAAS6B,EAAqB,aAAc1B,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEO,EAAI,EAAImB,EAAoBnB,EAAI,CACtM,CAcA,SAASmB,EAAoBnB,GAAM,CACjC,OAAIA,KAASF,GACXR,EAAQ,MAAM,yBAAyB,EAChC8B,EAAcpB,EAAI,GAEpBR,EAAIQ,EAAI,CACjB,CAcA,SAASoB,EAAcpB,GAAM,CAC3B,OAAIA,KAASF,GACXmB,IACA3B,EAAQ,QAAQU,EAAI,EACboB,GAELH,GAAQpB,GACVP,EAAQ,KAAK,yBAAyB,EAC/Bc,GAAcJ,EAAI,EAAIK,EAAaf,EAAS+B,EAAoB,YAAY,EAAErB,EAAI,EAAIqB,EAAmBrB,EAAI,GAE/GR,EAAIQ,EAAI,CACjB,CAcA,SAASqB,EAAmBrB,GAAM,CAChC,OAAIA,KAAS,MAAQO,EAAmBP,EAAI,GAC1CV,EAAQ,KAAK,iBAAiB,EACvBC,EAAGS,EAAI,GAETR,EAAIQ,EAAI,CACjB,CACF,CACF,CAOA,SAASb,GAA4BG,EAASC,EAAIC,EAAK,CACrD,IAAMC,EAAO,KACb,OAAOM,EAOP,SAASA,EAAMC,EAAM,CACnB,OAAIA,IAAS,KACJR,EAAIQ,CAAI,GAEjBV,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQU,CAAI,EACpBV,EAAQ,KAAK,YAAY,EAClBgC,EACT,CAOA,SAASA,EAAUtB,EAAM,CACvB,OAAOP,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,EAAID,EAAIQ,CAAI,EAAIT,EAAGS,CAAI,CAChE,CACF,CC/bO,IAAMuB,GAAe,CAC1B,KAAM,eACN,SAAUC,EACZ,EAGMC,GAAe,CACnB,QAAS,GACT,SAAUC,EACZ,EAOA,SAASF,GAAqBG,EAASC,EAAIC,EAAK,CAC9C,IAAMC,EAAO,KACb,OAAOC,EAgBP,SAASA,EAAMC,EAAM,CAGnB,OAAAL,EAAQ,MAAM,cAAc,EAGrBM,EAAaN,EAASO,EAAa,aAAc,CAAK,EAAEF,CAAI,CACrE,CAYA,SAASE,EAAYF,EAAM,CACzB,IAAMG,EAAOL,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAOK,GAAQA,EAAK,CAAC,EAAE,OAAS,cAAgBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAAIC,EAAQJ,CAAI,EAAIH,EAAIG,CAAI,CAC9H,CAYA,SAASI,EAAQJ,EAAM,CACrB,OAAIA,IAAS,KACJK,EAAML,CAAI,EAEfM,EAAmBN,CAAI,EAClBL,EAAQ,QAAQF,GAAcW,EAASC,CAAK,EAAEL,CAAI,GAE3DL,EAAQ,MAAM,eAAe,EACtBY,EAAOP,CAAI,EACpB,CAYA,SAASO,EAAOP,EAAM,CACpB,OAAIA,IAAS,MAAQM,EAAmBN,CAAI,GAC1CL,EAAQ,KAAK,eAAe,EACrBS,EAAQJ,CAAI,IAErBL,EAAQ,QAAQK,CAAI,EACbO,EACT,CAGA,SAASF,EAAML,EAAM,CACnB,OAAAL,EAAQ,KAAK,cAAc,EAIpBC,EAAGI,CAAI,CAChB,CACF,CAOA,SAASN,GAAqBC,EAASC,EAAIC,EAAK,CAC9C,IAAMC,EAAO,KACb,OAAOL,EAaP,SAASA,EAAaO,EAAM,CAG1B,OAAIF,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,EAC3BD,EAAIG,CAAI,EAEbM,EAAmBN,CAAI,GACzBL,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,YAAY,EAClBF,GASFQ,EAAaN,EAASO,EAAa,aAAc,CAAK,EAAEF,CAAI,CACrE,CAYA,SAASE,EAAYF,EAAM,CACzB,IAAMG,EAAOL,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAOK,GAAQA,EAAK,CAAC,EAAE,OAAS,cAAgBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EAAIP,EAAGI,CAAI,EAAIM,EAAmBN,CAAI,EAAIP,EAAaO,CAAI,EAAIH,EAAIG,CAAI,CACzK,CACF,CClKO,IAAMQ,GAAW,CACtB,KAAM,WACN,SAAAC,GACA,QAASC,GACT,SAAUC,EACZ,EAIA,SAASD,GAAgBE,EAAQ,CAC/B,IAAIC,EAAgBD,EAAO,OAAS,EAChCE,EAAiB,EAEjBC,EAEAC,EAGJ,IAAKJ,EAAOE,CAAc,EAAE,CAAC,EAAE,OAAS,cAAgBF,EAAOE,CAAc,EAAE,CAAC,EAAE,OAAS,WAAaF,EAAOC,CAAa,EAAE,CAAC,EAAE,OAAS,cAAgBD,EAAOC,CAAa,EAAE,CAAC,EAAE,OAAS,UAI1L,IAHAE,EAAQD,EAGD,EAAEC,EAAQF,GACf,GAAID,EAAOG,CAAK,EAAE,CAAC,EAAE,OAAS,eAAgB,CAE5CH,EAAOE,CAAc,EAAE,CAAC,EAAE,KAAO,kBACjCF,EAAOC,CAAa,EAAE,CAAC,EAAE,KAAO,kBAChCC,GAAkB,EAClBD,GAAiB,EACjB,KACF,EAOJ,IAFAE,EAAQD,EAAiB,EACzBD,IACO,EAAEE,GAASF,GACZG,IAAU,OACRD,IAAUF,GAAiBD,EAAOG,CAAK,EAAE,CAAC,EAAE,OAAS,eACvDC,EAAQD,IAEDA,IAAUF,GAAiBD,EAAOG,CAAK,EAAE,CAAC,EAAE,OAAS,gBAC9DH,EAAOI,CAAK,EAAE,CAAC,EAAE,KAAO,eACpBD,IAAUC,EAAQ,IACpBJ,EAAOI,CAAK,EAAE,CAAC,EAAE,IAAMJ,EAAOG,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CH,EAAO,OAAOI,EAAQ,EAAGD,EAAQC,EAAQ,CAAC,EAC1CH,GAAiBE,EAAQC,EAAQ,EACjCD,EAAQC,EAAQ,GAElBA,EAAQ,QAGZ,OAAOJ,CACT,CAOA,SAASH,GAASQ,EAAM,CAEtB,OAAOA,IAAS,IAAM,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EAAE,CAAC,EAAE,OAAS,iBACxE,CAOA,SAASN,GAAiBO,EAASC,EAAIC,EAAK,CAC1C,IAAMC,EAAO,KACTC,EAAW,EAEXC,EAEAC,EACJ,OAAOC,EAcP,SAASA,EAAMR,EAAM,CACnB,OAAAC,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,kBAAkB,EACzBQ,EAAaT,CAAI,CAC1B,CAYA,SAASS,EAAaT,EAAM,CAC1B,OAAIA,IAAS,IACXC,EAAQ,QAAQD,CAAI,EACpBK,IACOI,IAETR,EAAQ,KAAK,kBAAkB,EACxBS,EAAQV,CAAI,EACrB,CAYA,SAASU,EAAQV,EAAM,CAErB,OAAIA,IAAS,KACJG,EAAIH,CAAI,EAMbA,IAAS,IACXC,EAAQ,MAAM,OAAO,EACrBA,EAAQ,QAAQD,CAAI,EACpBC,EAAQ,KAAK,OAAO,EACbS,GAILV,IAAS,IACXO,EAAQN,EAAQ,MAAM,kBAAkB,EACxCK,EAAO,EACAK,EAAcX,CAAI,GAEvBY,EAAmBZ,CAAI,GACzBC,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQD,CAAI,EACpBC,EAAQ,KAAK,YAAY,EAClBS,IAITT,EAAQ,MAAM,cAAc,EACrBY,EAAKb,CAAI,EAClB,CAYA,SAASa,EAAKb,EAAM,CAClB,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMY,EAAmBZ,CAAI,GACxEC,EAAQ,KAAK,cAAc,EACpBS,EAAQV,CAAI,IAErBC,EAAQ,QAAQD,CAAI,EACba,EACT,CAYA,SAASF,EAAcX,EAAM,CAE3B,OAAIA,IAAS,IACXC,EAAQ,QAAQD,CAAI,EACpBM,IACOK,GAILL,IAASD,GACXJ,EAAQ,KAAK,kBAAkB,EAC/BA,EAAQ,KAAK,UAAU,EAChBC,EAAGF,CAAI,IAIhBO,EAAM,KAAO,eACNM,EAAKb,CAAI,EAClB,CACF,CCnMO,IAAMc,GAAN,KAAmB,CAOxB,YAAYC,EAAS,CAEnB,KAAK,KAAOA,EAAU,CAAC,GAAGA,CAAO,EAAI,CAAC,EAEtC,KAAK,MAAQ,CAAC,CAChB,CAWA,IAAIC,EAAO,CACT,GAAIA,EAAQ,GAAKA,GAAS,KAAK,KAAK,OAAS,KAAK,MAAM,OACtD,MAAM,IAAI,WAAW,wBAA0BA,EAAQ,kCAAoC,KAAK,KAAK,OAAS,KAAK,MAAM,QAAU,GAAG,EAExI,OAAIA,EAAQ,KAAK,KAAK,OAAe,KAAK,KAAKA,CAAK,EAC7C,KAAK,MAAM,KAAK,MAAM,OAASA,EAAQ,KAAK,KAAK,OAAS,CAAC,CACpE,CAMA,IAAI,QAAS,CACX,OAAO,KAAK,KAAK,OAAS,KAAK,MAAM,MACvC,CASA,OAAQ,CACN,YAAK,UAAU,CAAC,EACT,KAAK,MAAM,IAAI,CACxB,CAaA,MAAMC,EAAOC,EAAK,CAEhB,IAAMC,EAAOD,GAAoC,OAAO,kBACxD,OAAIC,EAAO,KAAK,KAAK,OACZ,KAAK,KAAK,MAAMF,EAAOE,CAAI,EAEhCF,EAAQ,KAAK,KAAK,OACb,KAAK,MAAM,MAAM,KAAK,MAAM,OAASE,EAAO,KAAK,KAAK,OAAQ,KAAK,MAAM,OAASF,EAAQ,KAAK,KAAK,MAAM,EAAE,QAAQ,EAEtH,KAAK,KAAK,MAAMA,CAAK,EAAE,OAAO,KAAK,MAAM,MAAM,KAAK,MAAM,OAASE,EAAO,KAAK,KAAK,MAAM,EAAE,QAAQ,CAAC,CAC9G,CAsBA,OAAOF,EAAOG,EAAaC,EAAO,CAEhC,IAAMC,EAAQF,GAAe,EAC7B,KAAK,UAAU,KAAK,MAAMH,CAAK,CAAC,EAChC,IAAMM,EAAU,KAAK,MAAM,OAAO,KAAK,MAAM,OAASD,EAAO,OAAO,iBAAiB,EACrF,OAAID,GAAOG,GAAY,KAAK,KAAMH,CAAK,EAChCE,EAAQ,QAAQ,CACzB,CAUA,KAAM,CACJ,YAAK,UAAU,OAAO,iBAAiB,EAChC,KAAK,KAAK,IAAI,CACvB,CAWA,KAAKE,EAAM,CACT,KAAK,UAAU,OAAO,iBAAiB,EACvC,KAAK,KAAK,KAAKA,CAAI,CACrB,CAWA,SAASJ,EAAO,CACd,KAAK,UAAU,OAAO,iBAAiB,EACvCG,GAAY,KAAK,KAAMH,CAAK,CAC9B,CAWA,QAAQI,EAAM,CACZ,KAAK,UAAU,CAAC,EAChB,KAAK,MAAM,KAAKA,CAAI,CACtB,CAWA,YAAYJ,EAAO,CACjB,KAAK,UAAU,CAAC,EAChBG,GAAY,KAAK,MAAOH,EAAM,QAAQ,CAAC,CACzC,CAcA,UAAUK,EAAG,CACX,GAAI,EAAAA,IAAM,KAAK,KAAK,QAAUA,EAAI,KAAK,KAAK,QAAU,KAAK,MAAM,SAAW,GAAKA,EAAI,GAAK,KAAK,KAAK,SAAW,GAC/G,GAAIA,EAAI,KAAK,KAAK,OAAQ,CAExB,IAAMH,EAAU,KAAK,KAAK,OAAOG,EAAG,OAAO,iBAAiB,EAC5DF,GAAY,KAAK,MAAOD,EAAQ,QAAQ,CAAC,CAC3C,KAAO,CAEL,IAAMA,EAAU,KAAK,MAAM,OAAO,KAAK,KAAK,OAAS,KAAK,MAAM,OAASG,EAAG,OAAO,iBAAiB,EACpGF,GAAY,KAAK,KAAMD,EAAQ,QAAQ,CAAC,CAC1C,CACF,CACF,EAcA,SAASC,GAAYG,EAAMC,EAAO,CAEhC,IAAIC,EAAa,EACjB,GAAID,EAAM,OAAS,IACjBD,EAAK,KAAK,GAAGC,CAAK,MAElB,MAAOC,EAAaD,EAAM,QACxBD,EAAK,KAAK,GAAGC,EAAM,MAAMC,EAAYA,EAAa,GAAK,CAAC,EACxDA,GAAc,GAGpB,CCvOO,SAASC,GAAYC,EAAa,CAEvC,IAAMC,EAAQ,CAAC,EACXC,EAAQ,GAERC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EACEC,EAAS,IAAIC,GAAaX,CAAW,EAC3C,KAAO,EAAEE,EAAQQ,EAAO,QAAQ,CAC9B,KAAOR,KAASD,GACdC,EAAQD,EAAMC,CAAK,EAMrB,GAJAC,EAAQO,EAAO,IAAIR,CAAK,EAIpBA,GAASC,EAAM,CAAC,EAAE,OAAS,aAAeO,EAAO,IAAIR,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,mBAC9EM,EAAYL,EAAM,CAAC,EAAE,WAAW,OAChCE,EAAa,EACTA,EAAaG,EAAU,QAAUA,EAAUH,CAAU,EAAE,CAAC,EAAE,OAAS,oBACrEA,GAAc,GAEZA,EAAaG,EAAU,QAAUA,EAAUH,CAAU,EAAE,CAAC,EAAE,OAAS,WACrE,KAAO,EAAEA,EAAaG,EAAU,QAC1BA,EAAUH,CAAU,EAAE,CAAC,EAAE,OAAS,WAGlCG,EAAUH,CAAU,EAAE,CAAC,EAAE,OAAS,cACpCG,EAAUH,CAAU,EAAE,CAAC,EAAE,4BAA8B,GACvDA,KAOR,GAAIF,EAAM,CAAC,IAAM,QACXA,EAAM,CAAC,EAAE,cACX,OAAO,OAAOF,EAAOW,GAAWF,EAAQR,CAAK,CAAC,EAC9CA,EAAQD,EAAMC,CAAK,EACnBO,EAAO,YAIFN,EAAM,CAAC,EAAE,WAAY,CAG5B,IAFAE,EAAaH,EACbE,EAAY,OACLC,KAEL,GADAC,EAAaI,EAAO,IAAIL,CAAU,EAC9BC,EAAW,CAAC,EAAE,OAAS,cAAgBA,EAAW,CAAC,EAAE,OAAS,kBAC5DA,EAAW,CAAC,IAAM,UAChBF,IACFM,EAAO,IAAIN,CAAS,EAAE,CAAC,EAAE,KAAO,mBAElCE,EAAW,CAAC,EAAE,KAAO,aACrBF,EAAYC,WAEL,EAAAC,EAAW,CAAC,EAAE,OAAS,cAAgBA,EAAW,CAAC,EAAE,OAAS,kBAGvE,MAGAF,IAEFD,EAAM,CAAC,EAAE,IAAM,CACb,GAAGO,EAAO,IAAIN,CAAS,EAAE,CAAC,EAAE,KAC9B,EAGAG,EAAaG,EAAO,MAAMN,EAAWF,CAAK,EAC1CK,EAAW,QAAQJ,CAAK,EACxBO,EAAO,OAAON,EAAWF,EAAQE,EAAY,EAAGG,CAAU,EAE9D,CACF,CAGA,OAAAM,GAAOb,EAAa,EAAG,OAAO,kBAAmBU,EAAO,MAAM,CAAC,CAAC,EACzD,CAACD,CACV,CAYA,SAASG,GAAWF,EAAQI,EAAY,CACtC,IAAMC,EAAQL,EAAO,IAAII,CAAU,EAAE,CAAC,EAChCE,EAAUN,EAAO,IAAII,CAAU,EAAE,CAAC,EACpCG,EAAgBH,EAAa,EAE3BI,EAAiB,CAAC,EACpBC,EAAYJ,EAAM,WACjBI,IACHA,EAAYH,EAAQ,OAAOD,EAAM,WAAW,EAAEA,EAAM,KAAK,EACrDA,EAAM,2BACRI,EAAU,yBAA2B,KAGzC,IAAMC,EAAcD,EAAU,OAExBlB,EAAQ,CAAC,EAEToB,EAAO,CAAC,EAEVC,EAEAC,EACArB,EAAQ,GAERsB,EAAUT,EACVU,EAAS,EACTC,EAAQ,EACNC,EAAS,CAACD,CAAK,EAIrB,KAAOF,GAAS,CAEd,KAAOd,EAAO,IAAI,EAAEO,CAAa,EAAE,CAAC,IAAMO,GAAS,CAGnDN,EAAe,KAAKD,CAAa,EAC5BO,EAAQ,aACXF,EAASN,EAAQ,YAAYQ,CAAO,EAC/BA,EAAQ,MACXF,EAAO,KAAK,IAAI,EAEdC,GACFJ,EAAU,WAAWK,EAAQ,KAAK,EAEhCA,EAAQ,8BACVL,EAAU,mCAAqC,IAEjDA,EAAU,MAAMG,CAAM,EAClBE,EAAQ,8BACVL,EAAU,mCAAqC,SAKnDI,EAAWC,EACXA,EAAUA,EAAQ,IACpB,CAKA,IADAA,EAAUT,EACH,EAAEb,EAAQkB,EAAY,QAG3BA,EAAYlB,CAAK,EAAE,CAAC,IAAM,QAAUkB,EAAYlB,EAAQ,CAAC,EAAE,CAAC,IAAM,SAAWkB,EAAYlB,CAAK,EAAE,CAAC,EAAE,OAASkB,EAAYlB,EAAQ,CAAC,EAAE,CAAC,EAAE,MAAQkB,EAAYlB,CAAK,EAAE,CAAC,EAAE,MAAM,OAASkB,EAAYlB,CAAK,EAAE,CAAC,EAAE,IAAI,OAC3MwB,EAAQxB,EAAQ,EAChByB,EAAO,KAAKD,CAAK,EAEjBF,EAAQ,WAAa,OACrBA,EAAQ,SAAW,OACnBA,EAAUA,EAAQ,MAqBtB,IAhBAL,EAAU,OAAS,CAAC,EAKhBK,GAEFA,EAAQ,WAAa,OACrBA,EAAQ,SAAW,QAEnBG,EAAO,IAAI,EAKbzB,EAAQyB,EAAO,OACRzB,KAAS,CACd,IAAM0B,EAAQR,EAAY,MAAMO,EAAOzB,CAAK,EAAGyB,EAAOzB,EAAQ,CAAC,CAAC,EAC1DwB,EAAQR,EAAe,IAAI,EACjCjB,EAAM,KAAK,CAACyB,EAAOA,EAAQE,EAAM,OAAS,CAAC,CAAC,EAC5ClB,EAAO,OAAOgB,EAAO,EAAGE,CAAK,CAC/B,CAGA,IAFA3B,EAAM,QAAQ,EACdC,EAAQ,GACD,EAAEA,EAAQD,EAAM,QACrBoB,EAAKI,EAASxB,EAAMC,CAAK,EAAE,CAAC,CAAC,EAAIuB,EAASxB,EAAMC,CAAK,EAAE,CAAC,EACxDuB,GAAUxB,EAAMC,CAAK,EAAE,CAAC,EAAID,EAAMC,CAAK,EAAE,CAAC,EAAI,EAEhD,OAAOmB,CACT,CCjNO,IAAMQ,GAAU,CACrB,QAASC,GACT,SAAUC,EACZ,EAGMC,GAAwB,CAC5B,QAAS,GACT,SAAUC,EACZ,EAQA,SAASH,GAAeI,EAAQ,CAC9B,OAAAC,GAAYD,CAAM,EACXA,CACT,CAOA,SAASH,GAAgBK,EAASC,EAAI,CAEpC,IAAIC,EACJ,OAAOC,EAYP,SAASA,EAAWC,EAAM,CACxB,OAAAJ,EAAQ,MAAM,SAAS,EACvBE,EAAWF,EAAQ,MAAM,eAAgB,CACvC,YAAa,SACf,CAAC,EACMK,EAAYD,CAAI,CACzB,CAYA,SAASC,EAAYD,EAAM,CACzB,OAAIA,IAAS,KACJE,EAAWF,CAAI,EAKpBG,EAAmBH,CAAI,EAClBJ,EAAQ,MAAMJ,GAAuBY,EAAiBF,CAAU,EAAEF,CAAI,GAI/EJ,EAAQ,QAAQI,CAAI,EACbC,EACT,CAOA,SAASC,EAAWF,EAAM,CACxB,OAAAJ,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,SAAS,EACfC,EAAGG,CAAI,CAChB,CAOA,SAASI,EAAgBJ,EAAM,CAC7B,OAAAJ,EAAQ,QAAQI,CAAI,EACpBJ,EAAQ,KAAK,cAAc,EAC3BE,EAAS,KAAOF,EAAQ,MAAM,eAAgB,CAC5C,YAAa,UACb,SAAAE,CACF,CAAC,EACDA,EAAWA,EAAS,KACbG,CACT,CACF,CAOA,SAASR,GAAqBG,EAASC,EAAIQ,EAAK,CAC9C,IAAMC,EAAO,KACb,OAAOC,EAOP,SAASA,EAAeP,EAAM,CAC5B,OAAAJ,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQI,CAAI,EACpBJ,EAAQ,KAAK,YAAY,EAClBY,EAAaZ,EAASa,EAAU,YAAY,CACrD,CAOA,SAASA,EAAST,EAAM,CACtB,GAAIA,IAAS,MAAQG,EAAmBH,CAAI,EAC1C,OAAOK,EAAIL,CAAI,EAKjB,IAAMU,EAAOJ,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,MAAI,CAACA,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,GAAKI,GAAQA,EAAK,CAAC,EAAE,OAAS,cAAgBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,QAAU,EACrJb,EAAGG,CAAI,EAETJ,EAAQ,UAAUU,EAAK,OAAO,WAAW,KAAMD,EAAKR,CAAE,EAAEG,CAAI,CACrE,CACF,CCxHO,SAASW,GAAmBC,EAASC,EAAIC,EAAKC,EAAMC,EAAaC,EAAmBC,EAASC,EAAYC,EAAK,CACnH,IAAMC,EAAQD,GAAO,OAAO,kBACxBE,EAAU,EACd,OAAOC,EAcP,SAASA,EAAMC,EAAM,CACnB,OAAIA,IAAS,IACXZ,EAAQ,MAAMG,CAAI,EAClBH,EAAQ,MAAMI,CAAW,EACzBJ,EAAQ,MAAMK,CAAiB,EAC/BL,EAAQ,QAAQY,CAAI,EACpBZ,EAAQ,KAAKK,CAAiB,EACvBQ,GAILD,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAME,GAAaF,CAAI,EAC3DV,EAAIU,CAAI,GAEjBZ,EAAQ,MAAMG,CAAI,EAClBH,EAAQ,MAAMM,CAAO,EACrBN,EAAQ,MAAMO,CAAU,EACxBP,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMe,EAAIH,CAAI,EACjB,CAYA,SAASC,EAAeD,EAAM,CAC5B,OAAIA,IAAS,IACXZ,EAAQ,MAAMK,CAAiB,EAC/BL,EAAQ,QAAQY,CAAI,EACpBZ,EAAQ,KAAKK,CAAiB,EAC9BL,EAAQ,KAAKI,CAAW,EACxBJ,EAAQ,KAAKG,CAAI,EACVF,IAETD,EAAQ,MAAMO,CAAU,EACxBP,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMgB,EAASJ,CAAI,EACtB,CAYA,SAASI,EAASJ,EAAM,CACtB,OAAIA,IAAS,IACXZ,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAKO,CAAU,EAChBM,EAAeD,CAAI,GAExBA,IAAS,MAAQA,IAAS,IAAMK,EAAmBL,CAAI,EAClDV,EAAIU,CAAI,GAEjBZ,EAAQ,QAAQY,CAAI,EACbA,IAAS,GAAKM,EAAiBF,EACxC,CAYA,SAASE,EAAeN,EAAM,CAC5B,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCZ,EAAQ,QAAQY,CAAI,EACbI,GAEFA,EAASJ,CAAI,CACtB,CAYA,SAASG,EAAIH,EAAM,CACjB,MAAI,CAACF,IAAYE,IAAS,MAAQA,IAAS,IAAMO,GAA0BP,CAAI,IAC7EZ,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAKO,CAAU,EACvBP,EAAQ,KAAKM,CAAO,EACpBN,EAAQ,KAAKG,CAAI,EACVF,EAAGW,CAAI,GAEZF,EAAUD,GAASG,IAAS,IAC9BZ,EAAQ,QAAQY,CAAI,EACpBF,IACOK,GAELH,IAAS,IACXZ,EAAQ,QAAQY,CAAI,EACpBF,IACOK,GAMLH,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAME,GAAaF,CAAI,EAC3DV,EAAIU,CAAI,GAEjBZ,EAAQ,QAAQY,CAAI,EACbA,IAAS,GAAKQ,EAAYL,EACnC,CAYA,SAASK,EAAUR,EAAM,CACvB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCZ,EAAQ,QAAQY,CAAI,EACbG,GAEFA,EAAIH,CAAI,CACjB,CACF,CCpKO,SAASS,GAAaC,EAASC,EAAIC,EAAKC,EAAMC,EAAYC,EAAY,CAC3E,IAAMC,EAAO,KACTC,EAAO,EAEPC,EACJ,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAAV,EAAQ,MAAMG,CAAI,EAClBH,EAAQ,MAAMI,CAAU,EACxBJ,EAAQ,QAAQU,CAAI,EACpBV,EAAQ,KAAKI,CAAU,EACvBJ,EAAQ,MAAMK,CAAU,EACjBM,CACT,CAYA,SAASA,EAAQD,EAAM,CACrB,OAAIH,EAAO,KAAOG,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAM,CAACF,GAMlEE,IAAS,IAAM,CAACH,GAAQ,2BAA4BD,EAAK,OAAO,WACvDJ,EAAIQ,CAAI,EAEbA,IAAS,IACXV,EAAQ,KAAKK,CAAU,EACvBL,EAAQ,MAAMI,CAAU,EACxBJ,EAAQ,QAAQU,CAAI,EACpBV,EAAQ,KAAKI,CAAU,EACvBJ,EAAQ,KAAKG,CAAI,EACVF,GAILW,EAAmBF,CAAI,GACzBV,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQU,CAAI,EACpBV,EAAQ,KAAK,YAAY,EAClBW,IAETX,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMa,EAAYH,CAAI,EACzB,CAYA,SAASG,EAAYH,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAME,EAAmBF,CAAI,GAAKH,IAAS,KACtFP,EAAQ,KAAK,aAAa,EACnBW,EAAQD,CAAI,IAErBV,EAAQ,QAAQU,CAAI,EACfF,IAAMA,EAAO,CAACM,GAAcJ,CAAI,GAC9BA,IAAS,GAAKK,EAAcF,EACrC,CAYA,SAASE,EAAYL,EAAM,CACzB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCV,EAAQ,QAAQU,CAAI,EACpBH,IACOM,GAEFA,EAAYH,CAAI,CACzB,CACF,CCzGO,SAASM,GAAaC,EAASC,EAAIC,EAAKC,EAAMC,EAAYC,EAAY,CAE3E,IAAIC,EACJ,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IACzCR,EAAQ,MAAMG,CAAI,EAClBH,EAAQ,MAAMI,CAAU,EACxBJ,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAKI,CAAU,EACvBE,EAASE,IAAS,GAAK,GAAKA,EACrBC,GAEFP,EAAIM,CAAI,CACjB,CAcA,SAASC,EAAMD,EAAM,CACnB,OAAIA,IAASF,GACXN,EAAQ,MAAMI,CAAU,EACxBJ,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAKI,CAAU,EACvBJ,EAAQ,KAAKG,CAAI,EACVF,IAETD,EAAQ,MAAMK,CAAU,EACjBK,EAAQF,CAAI,EACrB,CAYA,SAASE,EAAQF,EAAM,CACrB,OAAIA,IAASF,GACXN,EAAQ,KAAKK,CAAU,EAChBI,EAAMH,CAAM,GAEjBE,IAAS,KACJN,EAAIM,CAAI,EAIbG,EAAmBH,CAAI,GAEzBR,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,YAAY,EAClBY,EAAaZ,EAASU,EAAS,YAAY,IAEpDV,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMa,EAAOL,CAAI,EACpB,CAOA,SAASK,EAAOL,EAAM,CACpB,OAAIA,IAASF,GAAUE,IAAS,MAAQG,EAAmBH,CAAI,GAC7DR,EAAQ,KAAK,aAAa,EACnBU,EAAQF,CAAI,IAErBR,EAAQ,QAAQQ,CAAI,EACbA,IAAS,GAAKM,EAASD,EAChC,CAYA,SAASC,EAAON,EAAM,CACpB,OAAIA,IAASF,GAAUE,IAAS,IAC9BR,EAAQ,QAAQQ,CAAI,EACbK,GAEFA,EAAOL,CAAI,CACpB,CACF,CCrIO,SAASO,GAAkBC,EAASC,EAAI,CAE7C,IAAIC,EACJ,OAAOC,EAGP,SAASA,EAAMC,EAAM,CACnB,OAAIC,EAAmBD,CAAI,GACzBJ,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQI,CAAI,EACpBJ,EAAQ,KAAK,YAAY,EACzBE,EAAO,GACAC,GAELG,GAAcF,CAAI,EACbG,EAAaP,EAASG,EAAOD,EAAO,aAAe,YAAY,EAAEE,CAAI,EAEvEH,EAAGG,CAAI,CAChB,CACF,CC1BO,IAAMI,GAAa,CACxB,KAAM,aACN,SAAUC,EACZ,EAGMC,GAAc,CAClB,QAAS,GACT,SAAUC,EACZ,EAOA,SAASF,GAAmBG,EAASC,EAAIC,EAAK,CAC5C,IAAMC,EAAO,KAETC,EACJ,OAAOC,EAYP,SAASA,EAAMC,EAAM,CAInB,OAAAN,EAAQ,MAAM,YAAY,EACnBO,EAAOD,CAAI,CACpB,CAYA,SAASC,EAAOD,EAAM,CAGpB,OAAOE,GAAa,KAAKL,EAAMH,EAASS,EAExCP,EAAK,kBAAmB,wBAAyB,uBAAuB,EAAEI,CAAI,CAChF,CAYA,SAASG,EAAWH,EAAM,CAExB,OADAF,EAAaM,GAAoBP,EAAK,eAAeA,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,EAAE,CAAC,EACrGG,IAAS,IACXN,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQM,CAAI,EACpBN,EAAQ,KAAK,kBAAkB,EACxBW,GAEFT,EAAII,CAAI,CACjB,CAYA,SAASK,EAAYL,EAAM,CAEzB,OAAOM,GAA0BN,CAAI,EAAIO,GAAkBb,EAASc,CAAiB,EAAER,CAAI,EAAIQ,EAAkBR,CAAI,CACvH,CAYA,SAASQ,EAAkBR,EAAM,CAC/B,OAAOS,GAAmBf,EAASgB,EAEnCd,EAAK,wBAAyB,+BAAgC,qCAAsC,2BAA4B,6BAA6B,EAAEI,CAAI,CACrK,CAYA,SAASU,EAAiBV,EAAM,CAC9B,OAAON,EAAQ,QAAQF,GAAamB,EAAOA,CAAK,EAAEX,CAAI,CACxD,CAcA,SAASW,EAAMX,EAAM,CACnB,OAAOY,GAAcZ,CAAI,EAAIa,EAAanB,EAASoB,EAAiB,YAAY,EAAEd,CAAI,EAAIc,EAAgBd,CAAI,CAChH,CAcA,SAASc,EAAgBd,EAAM,CAC7B,OAAIA,IAAS,MAAQe,EAAmBf,CAAI,GAC1CN,EAAQ,KAAK,YAAY,EAKzBG,EAAK,OAAO,QAAQ,KAAKC,CAAU,EAK5BH,EAAGK,CAAI,GAETJ,EAAII,CAAI,CACjB,CACF,CAOA,SAASP,GAAoBC,EAASC,EAAIC,EAAK,CAC7C,OAAOJ,EAcP,SAASA,EAAYQ,EAAM,CACzB,OAAOM,GAA0BN,CAAI,EAAIO,GAAkBb,EAASsB,CAAY,EAAEhB,CAAI,EAAIJ,EAAII,CAAI,CACpG,CAaA,SAASgB,EAAahB,EAAM,CAC1B,OAAOiB,GAAavB,EAASwB,EAAYtB,EAAK,kBAAmB,wBAAyB,uBAAuB,EAAEI,CAAI,CACzH,CAYA,SAASkB,EAAWlB,EAAM,CACxB,OAAOY,GAAcZ,CAAI,EAAIa,EAAanB,EAASyB,EAA8B,YAAY,EAAEnB,CAAI,EAAImB,EAA6BnB,CAAI,CAC1I,CAYA,SAASmB,EAA6BnB,EAAM,CAC1C,OAAOA,IAAS,MAAQe,EAAmBf,CAAI,EAAIL,EAAGK,CAAI,EAAIJ,EAAII,CAAI,CACxE,CACF,CClPO,IAAMoB,GAAkB,CAC7B,KAAM,kBACN,SAAUC,EACZ,EAOA,SAASA,GAAwBC,EAASC,EAAIC,EAAK,CACjD,OAAOC,EAaP,SAASA,EAAMC,EAAM,CACnB,OAAAJ,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQI,CAAI,EACbC,CACT,CAaA,SAASA,EAAMD,EAAM,CACnB,OAAIE,EAAmBF,CAAI,GACzBJ,EAAQ,KAAK,iBAAiB,EACvBC,EAAGG,CAAI,GAETF,EAAIE,CAAI,CACjB,CACF,CC5CO,IAAMG,GAAa,CACxB,KAAM,aACN,QAASC,GACT,SAAUC,EACZ,EAGA,SAASD,GAAkBE,EAAQC,EAAS,CAC1C,IAAIC,EAAaF,EAAO,OAAS,EAC7BG,EAAe,EAEfC,EAEAC,EAGJ,OAAIL,EAAOG,CAAY,EAAE,CAAC,EAAE,OAAS,eACnCA,GAAgB,GAIdD,EAAa,EAAIC,GAAgBH,EAAOE,CAAU,EAAE,CAAC,EAAE,OAAS,eAClEA,GAAc,GAEZF,EAAOE,CAAU,EAAE,CAAC,EAAE,OAAS,uBAAyBC,IAAiBD,EAAa,GAAKA,EAAa,EAAIC,GAAgBH,EAAOE,EAAa,CAAC,EAAE,CAAC,EAAE,OAAS,gBACjKA,GAAcC,EAAe,IAAMD,EAAa,EAAI,GAElDA,EAAaC,IACfC,EAAU,CACR,KAAM,iBACN,MAAOJ,EAAOG,CAAY,EAAE,CAAC,EAAE,MAC/B,IAAKH,EAAOE,CAAU,EAAE,CAAC,EAAE,GAC7B,EACAG,EAAO,CACL,KAAM,YACN,MAAOL,EAAOG,CAAY,EAAE,CAAC,EAAE,MAC/B,IAAKH,EAAOE,CAAU,EAAE,CAAC,EAAE,IAC3B,YAAa,MACf,EACAI,GAAON,EAAQG,EAAcD,EAAaC,EAAe,EAAG,CAAC,CAAC,QAASC,EAASH,CAAO,EAAG,CAAC,QAASI,EAAMJ,CAAO,EAAG,CAAC,OAAQI,EAAMJ,CAAO,EAAG,CAAC,OAAQG,EAASH,CAAO,CAAC,CAAC,GAEnKD,CACT,CAOA,SAASD,GAAmBQ,EAASC,EAAIC,EAAK,CAC5C,IAAIC,EAAO,EACX,OAAOC,EAYP,SAASA,EAAMC,EAAM,CAEnB,OAAAL,EAAQ,MAAM,YAAY,EACnBM,EAAOD,CAAI,CACpB,CAYA,SAASC,EAAOD,EAAM,CACpB,OAAAL,EAAQ,MAAM,oBAAoB,EAC3BO,EAAaF,CAAI,CAC1B,CAYA,SAASE,EAAaF,EAAM,CAC1B,OAAIA,IAAS,IAAMF,IAAS,GAC1BH,EAAQ,QAAQK,CAAI,EACbE,GAILF,IAAS,MAAQG,GAA0BH,CAAI,GACjDL,EAAQ,KAAK,oBAAoB,EAC1BS,EAAQJ,CAAI,GAEdH,EAAIG,CAAI,CACjB,CAYA,SAASI,EAAQJ,EAAM,CACrB,OAAIA,IAAS,IACXL,EAAQ,MAAM,oBAAoB,EAC3BU,EAAgBL,CAAI,GAEzBA,IAAS,MAAQM,EAAmBN,CAAI,GAC1CL,EAAQ,KAAK,YAAY,EAIlBC,EAAGI,CAAI,GAEZO,GAAcP,CAAI,EACbQ,EAAab,EAASS,EAAS,YAAY,EAAEJ,CAAI,GAK1DL,EAAQ,MAAM,gBAAgB,EACvBc,EAAKT,CAAI,EAClB,CAcA,SAASK,EAAgBL,EAAM,CAC7B,OAAIA,IAAS,IACXL,EAAQ,QAAQK,CAAI,EACbK,IAETV,EAAQ,KAAK,oBAAoB,EAC1BS,EAAQJ,CAAI,EACrB,CAYA,SAASS,EAAKT,EAAM,CAClB,OAAIA,IAAS,MAAQA,IAAS,IAAMG,GAA0BH,CAAI,GAChEL,EAAQ,KAAK,gBAAgB,EACtBS,EAAQJ,CAAI,IAErBL,EAAQ,QAAQK,CAAI,EACbS,EACT,CACF,CCnLO,IAAMC,GAAiB,CAC5B,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,SACA,UACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,IACF,EAcaC,GAAe,CAAC,MAAO,SAAU,QAAS,UAAU,EC5E1D,IAAMC,GAAW,CACtB,SAAU,GACV,KAAM,WACN,UAAWC,GACX,SAAUC,EACZ,EAGMC,GAAkB,CACtB,QAAS,GACT,SAAUC,EACZ,EACMC,GAA2B,CAC/B,QAAS,GACT,SAAUC,EACZ,EAGA,SAASL,GAAkBM,EAAQ,CACjC,IAAIC,EAAQD,EAAO,OACnB,KAAOC,KACD,EAAAD,EAAOC,CAAK,EAAE,CAAC,IAAM,SAAWD,EAAOC,CAAK,EAAE,CAAC,EAAE,OAAS,aAA9D,CAIF,OAAIA,EAAQ,GAAKD,EAAOC,EAAQ,CAAC,EAAE,CAAC,EAAE,OAAS,eAE7CD,EAAOC,CAAK,EAAE,CAAC,EAAE,MAAQD,EAAOC,EAAQ,CAAC,EAAE,CAAC,EAAE,MAE9CD,EAAOC,EAAQ,CAAC,EAAE,CAAC,EAAE,MAAQD,EAAOC,EAAQ,CAAC,EAAE,CAAC,EAAE,MAElDD,EAAO,OAAOC,EAAQ,EAAG,CAAC,GAErBD,CACT,CAOA,SAASL,GAAiBO,EAASC,EAAIC,EAAK,CAC1C,IAAMC,EAAO,KAETC,EAEAC,EAEAC,EAEAP,EAEAQ,EACJ,OAAOC,EAYP,SAASA,EAAMC,EAAM,CAEnB,OAAOC,EAAOD,CAAI,CACpB,CAYA,SAASC,EAAOD,EAAM,CACpB,OAAAT,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQS,CAAI,EACbE,CACT,CAgBA,SAASA,EAAKF,EAAM,CAClB,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACbG,GAELH,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACpBJ,EAAa,GACNQ,GAELJ,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACpBL,EAAS,EAMFD,EAAK,UAAYF,EAAKa,GAI3BC,GAAWN,CAAI,GAEjBT,EAAQ,QAAQS,CAAI,EACpBH,EAAS,OAAO,aAAaG,CAAI,EAC1BO,GAEFd,EAAIO,CAAI,CACjB,CAgBA,SAASG,EAAgBH,EAAM,CAC7B,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACpBL,EAAS,EACFa,GAELR,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACpBL,EAAS,EACTL,EAAQ,EACDmB,GAILH,GAAWN,CAAI,GACjBT,EAAQ,QAAQS,CAAI,EACpBL,EAAS,EAGFD,EAAK,UAAYF,EAAKa,GAExBZ,EAAIO,CAAI,CACjB,CAYA,SAASQ,EAAkBR,EAAM,CAC/B,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EAGbN,EAAK,UAAYF,EAAKa,GAExBZ,EAAIO,CAAI,CACjB,CAYA,SAASS,EAAgBT,EAAM,CAC7B,IAAMU,GAAQ,SACd,OAAIV,IAASU,GAAM,WAAWpB,GAAO,GACnCC,EAAQ,QAAQS,CAAI,EAChBV,IAAUoB,GAAM,OAGXhB,EAAK,UAAYF,EAAKmB,EAExBF,GAEFhB,EAAIO,CAAI,CACjB,CAYA,SAASI,EAAcJ,EAAM,CAC3B,OAAIM,GAAWN,CAAI,GAEjBT,EAAQ,QAAQS,CAAI,EACpBH,EAAS,OAAO,aAAaG,CAAI,EAC1BO,GAEFd,EAAIO,CAAI,CACjB,CAcA,SAASO,EAAQP,EAAM,CACrB,GAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMY,GAA0BZ,CAAI,EAAG,CAClF,IAAMa,GAAQb,IAAS,GACjBc,GAAOjB,EAAO,YAAY,EAChC,MAAI,CAACgB,IAAS,CAACjB,GAAcmB,GAAa,SAASD,EAAI,GACrDnB,EAAS,EAGFD,EAAK,UAAYF,EAAGQ,CAAI,EAAIW,EAAaX,CAAI,GAElDgB,GAAe,SAASnB,EAAO,YAAY,CAAC,GAC9CF,EAAS,EACLkB,IACFtB,EAAQ,QAAQS,CAAI,EACbiB,GAKFvB,EAAK,UAAYF,EAAGQ,CAAI,EAAIW,EAAaX,CAAI,IAEtDL,EAAS,EAEFD,EAAK,WAAa,CAACA,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,EAAID,EAAIO,CAAI,EAAIJ,EAAasB,EAAwBlB,CAAI,EAAImB,EAA4BnB,CAAI,EACzJ,CAGA,OAAIA,IAAS,IAAMoB,GAAkBpB,CAAI,GACvCT,EAAQ,QAAQS,CAAI,EACpBH,GAAU,OAAO,aAAaG,CAAI,EAC3BO,GAEFd,EAAIO,CAAI,CACjB,CAYA,SAASiB,EAAiBjB,EAAM,CAC9B,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EAGbN,EAAK,UAAYF,EAAKmB,GAExBlB,EAAIO,CAAI,CACjB,CAYA,SAASkB,EAAwBlB,EAAM,CACrC,OAAIqB,GAAcrB,CAAI,GACpBT,EAAQ,QAAQS,CAAI,EACbkB,GAEFI,EAAYtB,CAAI,CACzB,CAyBA,SAASmB,EAA4BnB,EAAM,CACzC,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACbsB,GAILtB,IAAS,IAAMA,IAAS,IAAMM,GAAWN,CAAI,GAC/CT,EAAQ,QAAQS,CAAI,EACbuB,GAELF,GAAcrB,CAAI,GACpBT,EAAQ,QAAQS,CAAI,EACbmB,GAEFG,EAAYtB,CAAI,CACzB,CAgBA,SAASuB,EAAsBvB,EAAM,CAEnC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMoB,GAAkBpB,CAAI,GACpFT,EAAQ,QAAQS,CAAI,EACbuB,GAEFC,EAA2BxB,CAAI,CACxC,CAeA,SAASwB,EAA2BxB,EAAM,CACxC,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACbyB,GAELJ,GAAcrB,CAAI,GACpBT,EAAQ,QAAQS,CAAI,EACbwB,GAEFL,EAA4BnB,CAAI,CACzC,CAeA,SAASyB,EAA6BzB,EAAM,CAC1C,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClEP,EAAIO,CAAI,EAEbA,IAAS,IAAMA,IAAS,IAC1BT,EAAQ,QAAQS,CAAI,EACpBF,EAAUE,EACH0B,GAELL,GAAcrB,CAAI,GACpBT,EAAQ,QAAQS,CAAI,EACbyB,GAEFE,EAA+B3B,CAAI,CAC5C,CAcA,SAAS0B,EAA6B1B,EAAM,CAC1C,OAAIA,IAASF,GACXP,EAAQ,QAAQS,CAAI,EACpBF,EAAU,KACH8B,GAEL5B,IAAS,MAAQ6B,EAAmB7B,CAAI,EACnCP,EAAIO,CAAI,GAEjBT,EAAQ,QAAQS,CAAI,EACb0B,EACT,CAYA,SAASC,EAA+B3B,EAAM,CAC5C,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMY,GAA0BZ,CAAI,EACnJwB,EAA2BxB,CAAI,GAExCT,EAAQ,QAAQS,CAAI,EACb2B,EACT,CAaA,SAASC,EAAkC5B,EAAM,CAC/C,OAAIA,IAAS,IAAMA,IAAS,IAAMqB,GAAcrB,CAAI,EAC3CmB,EAA4BnB,CAAI,EAElCP,EAAIO,CAAI,CACjB,CAYA,SAASsB,EAAYtB,EAAM,CACzB,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACb8B,IAEFrC,EAAIO,CAAI,CACjB,CAYA,SAAS8B,GAAc9B,EAAM,CAC3B,OAAIA,IAAS,MAAQ6B,EAAmB7B,CAAI,EAGnCW,EAAaX,CAAI,EAEtBqB,GAAcrB,CAAI,GACpBT,EAAQ,QAAQS,CAAI,EACb8B,IAEFrC,EAAIO,CAAI,CACjB,CAYA,SAASW,EAAaX,EAAM,CAC1B,OAAIA,IAAS,IAAML,IAAW,GAC5BJ,EAAQ,QAAQS,CAAI,EACb+B,IAEL/B,IAAS,IAAML,IAAW,GAC5BJ,EAAQ,QAAQS,CAAI,EACbgC,IAELhC,IAAS,IAAML,IAAW,GAC5BJ,EAAQ,QAAQS,CAAI,EACbiC,IAELjC,IAAS,IAAML,IAAW,GAC5BJ,EAAQ,QAAQS,CAAI,EACbK,GAELL,IAAS,IAAML,IAAW,GAC5BJ,EAAQ,QAAQS,CAAI,EACbkC,IAELL,EAAmB7B,CAAI,IAAML,IAAW,GAAKA,IAAW,IAC1DJ,EAAQ,KAAK,cAAc,EACpBA,EAAQ,MAAMN,GAAiBkD,GAAmBC,CAAiB,EAAEpC,CAAI,GAE9EA,IAAS,MAAQ6B,EAAmB7B,CAAI,GAC1CT,EAAQ,KAAK,cAAc,EACpB6C,EAAkBpC,CAAI,IAE/BT,EAAQ,QAAQS,CAAI,EACbW,EACT,CAaA,SAASyB,EAAkBpC,EAAM,CAC/B,OAAOT,EAAQ,MAAMJ,GAA0BkD,EAA0BF,EAAiB,EAAEnC,CAAI,CAClG,CAaA,SAASqC,EAAyBrC,EAAM,CACtC,OAAAT,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQS,CAAI,EACpBT,EAAQ,KAAK,YAAY,EAClB+C,EACT,CAaA,SAASA,GAAmBtC,EAAM,CAChC,OAAIA,IAAS,MAAQ6B,EAAmB7B,CAAI,EACnCoC,EAAkBpC,CAAI,GAE/BT,EAAQ,MAAM,cAAc,EACrBoB,EAAaX,CAAI,EAC1B,CAYA,SAAS+B,GAA0B/B,EAAM,CACvC,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACbK,GAEFM,EAAaX,CAAI,CAC1B,CAYA,SAASgC,GAAuBhC,EAAM,CACpC,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACpBH,EAAS,GACF0C,IAEF5B,EAAaX,CAAI,CAC1B,CAYA,SAASuC,GAAsBvC,EAAM,CACnC,GAAIA,IAAS,GAAI,CACf,IAAMc,GAAOjB,EAAO,YAAY,EAChC,OAAIkB,GAAa,SAASD,EAAI,GAC5BvB,EAAQ,QAAQS,CAAI,EACbiC,IAEFtB,EAAaX,CAAI,CAC1B,CACA,OAAIM,GAAWN,CAAI,GAAKH,EAAO,OAAS,GAEtCN,EAAQ,QAAQS,CAAI,EACpBH,GAAU,OAAO,aAAaG,CAAI,EAC3BuC,IAEF5B,EAAaX,CAAI,CAC1B,CAYA,SAASkC,GAAwBlC,EAAM,CACrC,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACbK,GAEFM,EAAaX,CAAI,CAC1B,CAoBA,SAASK,EAA8BL,EAAM,CAC3C,OAAIA,IAAS,IACXT,EAAQ,QAAQS,CAAI,EACbiC,IAILjC,IAAS,IAAML,IAAW,GAC5BJ,EAAQ,QAAQS,CAAI,EACbK,GAEFM,EAAaX,CAAI,CAC1B,CAYA,SAASiC,GAAkBjC,EAAM,CAC/B,OAAIA,IAAS,MAAQ6B,EAAmB7B,CAAI,GAC1CT,EAAQ,KAAK,cAAc,EACpB4C,GAAkBnC,CAAI,IAE/BT,EAAQ,QAAQS,CAAI,EACbiC,GACT,CAYA,SAASE,GAAkBnC,EAAM,CAC/B,OAAAT,EAAQ,KAAK,UAAU,EAKhBC,EAAGQ,CAAI,CAChB,CACF,CAOA,SAASZ,GAAiCG,EAASC,EAAIC,EAAK,CAC1D,IAAMC,EAAO,KACb,OAAOK,EAaP,SAASA,EAAMC,EAAM,CACnB,OAAI6B,EAAmB7B,CAAI,GACzBT,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQS,CAAI,EACpBT,EAAQ,KAAK,YAAY,EAClBiD,GAEF/C,EAAIO,CAAI,CACjB,CAaA,SAASwC,EAAMxC,EAAM,CACnB,OAAON,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,EAAID,EAAIO,CAAI,EAAIR,EAAGQ,CAAI,CAChE,CACF,CAOA,SAASd,GAAwBK,EAASC,EAAIC,EAAK,CACjD,OAAOM,EAaP,SAASA,EAAMC,EAAM,CACnB,OAAAT,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQS,CAAI,EACpBT,EAAQ,KAAK,YAAY,EAClBA,EAAQ,QAAQkD,GAAWjD,EAAIC,CAAG,CAC3C,CACF,CC91BO,IAAMiD,GAAW,CACtB,KAAM,WACN,SAAUC,EACZ,EAOA,SAASA,GAAiBC,EAASC,EAAIC,EAAK,CAC1C,IAAMC,EAAO,KAETC,EAEAC,EAEAC,EACJ,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAAR,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,cAAc,EAC5BA,EAAQ,QAAQQ,CAAI,EACbC,CACT,CAgBA,SAASA,EAAKD,EAAM,CAClB,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbE,GAELF,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbG,GAELH,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbI,GAILC,GAAWL,CAAI,GACjBR,EAAQ,QAAQQ,CAAI,EACbM,GAEFZ,EAAIM,CAAI,CACjB,CAgBA,SAASE,EAAgBF,EAAM,CAC7B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbO,GAELP,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACpBH,EAAQ,EACDW,GAELH,GAAWL,CAAI,GACjBR,EAAQ,QAAQQ,CAAI,EACbS,GAEFf,EAAIM,CAAI,CACjB,CAYA,SAASO,EAAkBP,EAAM,CAC/B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbU,GAEFhB,EAAIM,CAAI,CACjB,CAYA,SAASW,EAAQX,EAAM,CACrB,OAAIA,IAAS,KACJN,EAAIM,CAAI,EAEbA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbY,GAELC,EAAmBb,CAAI,GACzBF,EAAca,EACPG,GAAiBd,CAAI,IAE9BR,EAAQ,QAAQQ,CAAI,EACbW,EACT,CAYA,SAASC,EAAaZ,EAAM,CAC1B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbU,GAEFC,EAAQX,CAAI,CACrB,CAYA,SAASU,EAAWV,EAAM,CACxB,OAAOA,IAAS,GAAKe,GAAIf,CAAI,EAAIA,IAAS,GAAKY,EAAaZ,CAAI,EAAIW,EAAQX,CAAI,CAClF,CAYA,SAASQ,EAAgBR,EAAM,CAC7B,IAAMgB,GAAQ,SACd,OAAIhB,IAASgB,GAAM,WAAWnB,GAAO,GACnCL,EAAQ,QAAQQ,CAAI,EACbH,IAAUmB,GAAM,OAASC,EAAQT,GAEnCd,EAAIM,CAAI,CACjB,CAYA,SAASiB,EAAMjB,EAAM,CACnB,OAAIA,IAAS,KACJN,EAAIM,CAAI,EAEbA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbkB,GAELL,EAAmBb,CAAI,GACzBF,EAAcmB,EACPH,GAAiBd,CAAI,IAE9BR,EAAQ,QAAQQ,CAAI,EACbiB,EACT,CAYA,SAASC,EAAWlB,EAAM,CACxB,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbmB,GAEFF,EAAMjB,CAAI,CACnB,CAYA,SAASmB,EAASnB,EAAM,CACtB,OAAIA,IAAS,GACJe,GAAIf,CAAI,EAEbA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbmB,GAEFF,EAAMjB,CAAI,CACnB,CAYA,SAASS,EAAYT,EAAM,CACzB,OAAIA,IAAS,MAAQA,IAAS,GACrBe,GAAIf,CAAI,EAEba,EAAmBb,CAAI,GACzBF,EAAcW,EACPK,GAAiBd,CAAI,IAE9BR,EAAQ,QAAQQ,CAAI,EACbS,EACT,CAYA,SAASL,EAAYJ,EAAM,CACzB,OAAIA,IAAS,KACJN,EAAIM,CAAI,EAEbA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACboB,GAELP,EAAmBb,CAAI,GACzBF,EAAcM,EACPU,GAAiBd,CAAI,IAE9BR,EAAQ,QAAQQ,CAAI,EACbI,EACT,CAYA,SAASgB,EAAiBpB,EAAM,CAC9B,OAAOA,IAAS,GAAKe,GAAIf,CAAI,EAAII,EAAYJ,CAAI,CACnD,CAYA,SAASG,EAAcH,EAAM,CAE3B,OAAIK,GAAWL,CAAI,GACjBR,EAAQ,QAAQQ,CAAI,EACbqB,GAEF3B,EAAIM,CAAI,CACjB,CAYA,SAASqB,EAASrB,EAAM,CAEtB,OAAIA,IAAS,IAAMsB,GAAkBtB,CAAI,GACvCR,EAAQ,QAAQQ,CAAI,EACbqB,GAEFE,EAAgBvB,CAAI,CAC7B,CAYA,SAASuB,EAAgBvB,EAAM,CAC7B,OAAIa,EAAmBb,CAAI,GACzBF,EAAcyB,EACPT,GAAiBd,CAAI,GAE1BwB,GAAcxB,CAAI,GACpBR,EAAQ,QAAQQ,CAAI,EACbuB,GAEFR,GAAIf,CAAI,CACjB,CAYA,SAASM,EAAQN,EAAM,CAErB,OAAIA,IAAS,IAAMsB,GAAkBtB,CAAI,GACvCR,EAAQ,QAAQQ,CAAI,EACbM,GAELN,IAAS,IAAMA,IAAS,IAAMyB,GAA0BzB,CAAI,EACvD0B,EAAe1B,CAAI,EAErBN,EAAIM,CAAI,CACjB,CAYA,SAAS0B,EAAe1B,EAAM,CAC5B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACbe,IAILf,IAAS,IAAMA,IAAS,IAAMK,GAAWL,CAAI,GAC/CR,EAAQ,QAAQQ,CAAI,EACb2B,GAELd,EAAmBb,CAAI,GACzBF,EAAc4B,EACPZ,GAAiBd,CAAI,GAE1BwB,GAAcxB,CAAI,GACpBR,EAAQ,QAAQQ,CAAI,EACb0B,GAEFX,GAAIf,CAAI,CACjB,CAYA,SAAS2B,EAAqB3B,EAAM,CAElC,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMsB,GAAkBtB,CAAI,GACpFR,EAAQ,QAAQQ,CAAI,EACb2B,GAEFC,GAA0B5B,CAAI,CACvC,CAaA,SAAS4B,GAA0B5B,EAAM,CACvC,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACb6B,GAELhB,EAAmBb,CAAI,GACzBF,EAAc8B,GACPd,GAAiBd,CAAI,GAE1BwB,GAAcxB,CAAI,GACpBR,EAAQ,QAAQQ,CAAI,EACb4B,IAEFF,EAAe1B,CAAI,CAC5B,CAaA,SAAS6B,EAA4B7B,EAAM,CACzC,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClEN,EAAIM,CAAI,EAEbA,IAAS,IAAMA,IAAS,IAC1BR,EAAQ,QAAQQ,CAAI,EACpBJ,EAASI,EACF8B,GAELjB,EAAmBb,CAAI,GACzBF,EAAc+B,EACPf,GAAiBd,CAAI,GAE1BwB,GAAcxB,CAAI,GACpBR,EAAQ,QAAQQ,CAAI,EACb6B,IAETrC,EAAQ,QAAQQ,CAAI,EACb+B,EACT,CAYA,SAASD,EAA4B9B,EAAM,CACzC,OAAIA,IAASJ,GACXJ,EAAQ,QAAQQ,CAAI,EACpBJ,EAAS,OACFoC,IAELhC,IAAS,KACJN,EAAIM,CAAI,EAEba,EAAmBb,CAAI,GACzBF,EAAcgC,EACPhB,GAAiBd,CAAI,IAE9BR,EAAQ,QAAQQ,CAAI,EACb8B,EACT,CAYA,SAASC,EAA8B/B,EAAM,CAC3C,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GACjFN,EAAIM,CAAI,EAEbA,IAAS,IAAMA,IAAS,IAAMyB,GAA0BzB,CAAI,EACvD0B,EAAe1B,CAAI,GAE5BR,EAAQ,QAAQQ,CAAI,EACb+B,EACT,CAaA,SAASC,GAAiChC,EAAM,CAC9C,OAAIA,IAAS,IAAMA,IAAS,IAAMyB,GAA0BzB,CAAI,EACvD0B,EAAe1B,CAAI,EAErBN,EAAIM,CAAI,CACjB,CAYA,SAASe,GAAIf,EAAM,CACjB,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,KAAK,UAAU,EAChBC,GAEFC,EAAIM,CAAI,CACjB,CAgBA,SAASc,GAAiBd,EAAM,CAC9B,OAAAR,EAAQ,KAAK,cAAc,EAC3BA,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,YAAY,EAClByC,EACT,CAgBA,SAASA,GAAgBjC,EAAM,CAG7B,OAAOwB,GAAcxB,CAAI,EAAIkC,EAAa1C,EAAS2C,GAAuB,aAAcxC,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEK,CAAI,EAAImC,GAAsBnC,CAAI,CAC1M,CAgBA,SAASmC,GAAsBnC,EAAM,CACnC,OAAAR,EAAQ,MAAM,cAAc,EACrBM,EAAYE,CAAI,CACzB,CACF,CChpBO,IAAMoC,GAAW,CACtB,KAAM,WACN,WAAYC,GACZ,UAAWC,GACX,SAAUC,EACZ,EAGMC,GAAoB,CACxB,SAAUC,EACZ,EAEMC,GAAyB,CAC7B,SAAUC,EACZ,EAEMC,GAA8B,CAClC,SAAUC,EACZ,EAGA,SAASR,GAAmBS,EAAQ,CAClC,IAAIC,EAAQ,GAENC,EAAY,CAAC,EACnB,KAAO,EAAED,EAAQD,EAAO,QAAQ,CAC9B,IAAMG,EAAQH,EAAOC,CAAK,EAAE,CAAC,EAE7B,GADAC,EAAU,KAAKF,EAAOC,CAAK,CAAC,EACxBE,EAAM,OAAS,cAAgBA,EAAM,OAAS,aAAeA,EAAM,OAAS,WAAY,CAE1F,IAAMC,EAASD,EAAM,OAAS,aAAe,EAAI,EACjDA,EAAM,KAAO,OACbF,GAASG,CACX,CACF,CAGA,OAAIJ,EAAO,SAAWE,EAAU,QAC9BG,GAAOL,EAAQ,EAAGA,EAAO,OAAQE,CAAS,EAErCF,CACT,CAGA,SAASR,GAAkBQ,EAAQM,EAAS,CAC1C,IAAIL,EAAQD,EAAO,OACfI,EAAS,EAETD,EAEAI,EAEAC,EAEAC,EAGJ,KAAOR,KAEL,GADAE,EAAQH,EAAOC,CAAK,EAAE,CAAC,EACnBM,EAAM,CAER,GAAIJ,EAAM,OAAS,QAAUA,EAAM,OAAS,aAAeA,EAAM,UAC/D,MAKEH,EAAOC,CAAK,EAAE,CAAC,IAAM,SAAWE,EAAM,OAAS,cACjDA,EAAM,UAAY,GAEtB,SAAWK,GACT,GAAIR,EAAOC,CAAK,EAAE,CAAC,IAAM,UAAYE,EAAM,OAAS,cAAgBA,EAAM,OAAS,cAAgB,CAACA,EAAM,YACxGI,EAAON,EACHE,EAAM,OAAS,aAAa,CAC9BC,EAAS,EACT,KACF,OAEOD,EAAM,OAAS,aACxBK,EAAQP,GAGZ,IAAMS,EAAQ,CACZ,KAAMV,EAAOO,CAAI,EAAE,CAAC,EAAE,OAAS,YAAc,OAAS,QACtD,MAAO,CACL,GAAGP,EAAOO,CAAI,EAAE,CAAC,EAAE,KACrB,EACA,IAAK,CACH,GAAGP,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GAClC,CACF,EACMW,EAAQ,CACZ,KAAM,QACN,MAAO,CACL,GAAGX,EAAOO,CAAI,EAAE,CAAC,EAAE,KACrB,EACA,IAAK,CACH,GAAGP,EAAOQ,CAAK,EAAE,CAAC,EAAE,GACtB,CACF,EACMI,EAAO,CACX,KAAM,YACN,MAAO,CACL,GAAGZ,EAAOO,EAAOH,EAAS,CAAC,EAAE,CAAC,EAAE,GAClC,EACA,IAAK,CACH,GAAGJ,EAAOQ,EAAQ,CAAC,EAAE,CAAC,EAAE,KAC1B,CACF,EACA,OAAAC,EAAQ,CAAC,CAAC,QAASC,EAAOJ,CAAO,EAAG,CAAC,QAASK,EAAOL,CAAO,CAAC,EAG7DG,EAAQI,GAAKJ,EAAOT,EAAO,MAAMO,EAAO,EAAGA,EAAOH,EAAS,CAAC,CAAC,EAG7DK,EAAQI,GAAKJ,EAAO,CAAC,CAAC,QAASG,EAAMN,CAAO,CAAC,CAAC,EAK9CG,EAAQI,GAAKJ,EAAOK,GAAWR,EAAQ,OAAO,WAAW,WAAW,KAAMN,EAAO,MAAMO,EAAOH,EAAS,EAAGI,EAAQ,CAAC,EAAGF,CAAO,CAAC,EAG9HG,EAAQI,GAAKJ,EAAO,CAAC,CAAC,OAAQG,EAAMN,CAAO,EAAGN,EAAOQ,EAAQ,CAAC,EAAGR,EAAOQ,EAAQ,CAAC,EAAG,CAAC,OAAQG,EAAOL,CAAO,CAAC,CAAC,EAG7GG,EAAQI,GAAKJ,EAAOT,EAAO,MAAMQ,EAAQ,CAAC,CAAC,EAG3CC,EAAQI,GAAKJ,EAAO,CAAC,CAAC,OAAQC,EAAOJ,CAAO,CAAC,CAAC,EAC9CD,GAAOL,EAAQO,EAAMP,EAAO,OAAQS,CAAK,EAClCT,CACT,CAOA,SAASP,GAAiBsB,EAASC,EAAIC,EAAK,CAC1C,IAAMC,EAAO,KACTjB,EAAQiB,EAAK,OAAO,OAEpBC,EAEAC,EAGJ,KAAOnB,KACL,IAAKiB,EAAK,OAAOjB,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBiB,EAAK,OAAOjB,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgB,CAACiB,EAAK,OAAOjB,CAAK,EAAE,CAAC,EAAE,UAAW,CACnIkB,EAAaD,EAAK,OAAOjB,CAAK,EAAE,CAAC,EACjC,KACF,CAEF,OAAOoB,EAiBP,SAASA,EAAMC,EAAM,CAEnB,OAAKH,EAaDA,EAAW,UACNI,EAAYD,CAAI,GAEzBF,EAAUF,EAAK,OAAO,QAAQ,SAASM,GAAoBN,EAAK,eAAe,CAC7E,MAAOC,EAAW,IAClB,IAAKD,EAAK,IAAI,CAChB,CAAC,CAAC,CAAC,EACHH,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQO,CAAI,EACpBP,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,UAAU,EAChBU,GAxBER,EAAIK,CAAI,CAyBnB,CAkBA,SAASG,EAAMH,EAAM,CAKnB,OAAIA,IAAS,GACJP,EAAQ,QAAQrB,GAAmBgC,EAAYN,EAAUM,EAAaH,CAAW,EAAED,CAAI,EAI5FA,IAAS,GACJP,EAAQ,QAAQnB,GAAwB8B,EAAYN,EAAUO,EAAmBJ,CAAW,EAAED,CAAI,EAIpGF,EAAUM,EAAWJ,CAAI,EAAIC,EAAYD,CAAI,CACtD,CAgBA,SAASK,EAAiBL,EAAM,CAC9B,OAAOP,EAAQ,QAAQjB,GAA6B4B,EAAYH,CAAW,EAAED,CAAI,CACnF,CAkBA,SAASI,EAAWJ,EAAM,CAExB,OAAON,EAAGM,CAAI,CAChB,CAkBA,SAASC,EAAYD,EAAM,CACzB,OAAAH,EAAW,UAAY,GAChBF,EAAIK,CAAI,CACjB,CACF,CAOA,SAAS3B,GAAiBoB,EAASC,EAAIC,EAAK,CAC1C,OAAOW,EAYP,SAASA,EAAcN,EAAM,CAC3B,OAAAP,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQO,CAAI,EACpBP,EAAQ,KAAK,gBAAgB,EACtBc,CACT,CAYA,SAASA,EAAeP,EAAM,CAC5B,OAAOQ,GAA0BR,CAAI,EAAIS,GAAkBhB,EAASiB,CAAY,EAAEV,CAAI,EAAIU,EAAaV,CAAI,CAC7G,CAYA,SAASU,EAAaV,EAAM,CAC1B,OAAIA,IAAS,GACJW,EAAYX,CAAI,EAElBY,GAAmBnB,EAASoB,EAA0BC,EAA4B,sBAAuB,6BAA8B,mCAAoC,yBAA0B,4BAA6B,EAAE,EAAEd,CAAI,CACnP,CAYA,SAASa,EAAyBb,EAAM,CACtC,OAAOQ,GAA0BR,CAAI,EAAIS,GAAkBhB,EAASsB,CAAe,EAAEf,CAAI,EAAIW,EAAYX,CAAI,CAC/G,CAYA,SAASc,EAA2Bd,EAAM,CACxC,OAAOL,EAAIK,CAAI,CACjB,CAYA,SAASe,EAAgBf,EAAM,CAC7B,OAAIA,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAClCgB,GAAavB,EAASwB,EAAoBtB,EAAK,gBAAiB,sBAAuB,qBAAqB,EAAEK,CAAI,EAEpHW,EAAYX,CAAI,CACzB,CAYA,SAASiB,EAAmBjB,EAAM,CAChC,OAAOQ,GAA0BR,CAAI,EAAIS,GAAkBhB,EAASkB,CAAW,EAAEX,CAAI,EAAIW,EAAYX,CAAI,CAC3G,CAYA,SAASW,EAAYX,EAAM,CACzB,OAAIA,IAAS,IACXP,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQO,CAAI,EACpBP,EAAQ,KAAK,gBAAgB,EAC7BA,EAAQ,KAAK,UAAU,EAChBC,GAEFC,EAAIK,CAAI,CACjB,CACF,CAOA,SAASzB,GAAsBkB,EAASC,EAAIC,EAAK,CAC/C,IAAMC,EAAO,KACb,OAAOsB,EAYP,SAASA,EAAclB,EAAM,CAC3B,OAAOmB,GAAa,KAAKvB,EAAMH,EAAS2B,EAAoBC,EAAsB,YAAa,kBAAmB,iBAAiB,EAAErB,CAAI,CAC3I,CAYA,SAASoB,EAAmBpB,EAAM,CAChC,OAAOJ,EAAK,OAAO,QAAQ,SAASM,GAAoBN,EAAK,eAAeA,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAG,EAAE,CAAC,CAAC,EAAIF,EAAGM,CAAI,EAAIL,EAAIK,CAAI,CAC1J,CAYA,SAASqB,EAAqBrB,EAAM,CAClC,OAAOL,EAAIK,CAAI,CACjB,CACF,CAOA,SAASvB,GAA2BgB,EAASC,EAAIC,EAAK,CACpD,OAAO2B,EAcP,SAASA,EAAwBtB,EAAM,CAGrC,OAAAP,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQO,CAAI,EACpBP,EAAQ,KAAK,iBAAiB,EACvB8B,CACT,CAcA,SAASA,EAAuBvB,EAAM,CACpC,OAAIA,IAAS,IACXP,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQO,CAAI,EACpBP,EAAQ,KAAK,iBAAiB,EAC9BA,EAAQ,KAAK,WAAW,EACjBC,GAEFC,EAAIK,CAAI,CACjB,CACF,CCniBO,IAAMwB,GAAkB,CAC7B,KAAM,kBACN,WAAYC,GAAS,WACrB,SAAUC,EACZ,EAOA,SAASA,GAAwBC,EAASC,EAAIC,EAAK,CACjD,IAAMC,EAAO,KACb,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAAL,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,MAAM,kBAAkB,EAChCA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,kBAAkB,EACxBM,CACT,CAYA,SAASA,EAAKD,EAAM,CAClB,OAAIA,IAAS,IACXL,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,YAAY,EAClBO,GAEFL,EAAIG,CAAI,CACjB,CA6BA,SAASE,EAAMF,EAAM,CAMnB,OAAOA,IAAS,IAAM,2BAA4BF,EAAK,OAAO,WAAaD,EAAIG,CAAI,EAAIJ,EAAGI,CAAI,CAChG,CACF,CCzFO,IAAMG,GAAiB,CAC5B,KAAM,iBACN,WAAYC,GAAS,WACrB,SAAUC,EACZ,EAOA,SAASA,GAAuBC,EAASC,EAAIC,EAAK,CAChD,IAAMC,EAAO,KACb,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAAL,EAAQ,MAAM,WAAW,EACzBA,EAAQ,MAAM,aAAa,EAC3BA,EAAQ,QAAQK,CAAI,EACpBL,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,WAAW,EACjBM,CACT,CAGA,SAASA,EAAMD,EAAM,CAKnB,OAAOA,IAAS,IAAM,2BAA4BF,EAAK,OAAO,WAAaD,EAAIG,CAAI,EAAIJ,EAAGI,CAAI,CAChG,CACF,CC1CO,IAAME,GAAa,CACxB,KAAM,aACN,SAAUC,EACZ,EAOA,SAASA,GAAmBC,EAASC,EAAI,CACvC,OAAOC,EAGP,SAASA,EAAMC,EAAM,CACnB,OAAAH,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQG,CAAI,EACpBH,EAAQ,KAAK,YAAY,EAClBI,EAAaJ,EAASC,EAAI,YAAY,CAC/C,CACF,CCnBO,IAAMI,GAAgB,CAC3B,KAAM,gBACN,SAAUC,EACZ,EAOA,SAASA,GAAsBC,EAASC,EAAIC,EAAK,CAC/C,IAAIC,EAAO,EAEPC,EACJ,OAAOC,EAYP,SAASA,EAAMC,EAAM,CACnB,OAAAN,EAAQ,MAAM,eAAe,EAEtBO,EAAOD,CAAI,CACpB,CAYA,SAASC,EAAOD,EAAM,CACpB,OAAAF,EAASE,EACFE,EAAQF,CAAI,CACrB,CAYA,SAASE,EAAQF,EAAM,CACrB,OAAIA,IAASF,GACXJ,EAAQ,MAAM,uBAAuB,EAC9BS,EAASH,CAAI,GAElBH,GAAQ,IAAMG,IAAS,MAAQI,EAAmBJ,CAAI,IACxDN,EAAQ,KAAK,eAAe,EACrBC,EAAGK,CAAI,GAETJ,EAAII,CAAI,CACjB,CAYA,SAASG,EAASH,EAAM,CACtB,OAAIA,IAASF,GACXJ,EAAQ,QAAQM,CAAI,EACpBH,IACOM,IAETT,EAAQ,KAAK,uBAAuB,EAC7BW,GAAcL,CAAI,EAAIM,EAAaZ,EAASQ,EAAS,YAAY,EAAEF,CAAI,EAAIE,EAAQF,CAAI,EAChG,CACF,CCpFO,IAAMO,GAAO,CAClB,aAAc,CACZ,SAAUC,EACZ,EACA,KAAMC,GACN,KAAM,OACN,SAAUC,EACZ,EAGMC,GAAoC,CACxC,QAAS,GACT,SAAUC,EACZ,EAGMC,GAAkB,CACtB,QAAS,GACT,SAAUC,EACZ,EAUA,SAASJ,GAAkBK,EAASC,EAAIC,EAAK,CAC3C,IAAMC,EAAO,KACPC,EAAOD,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC3CE,EAAcD,GAAQA,EAAK,CAAC,EAAE,OAAS,aAAeA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OAAS,EACrGE,EAAO,EACX,OAAOC,EAGP,SAASA,EAAMC,EAAM,CACnB,IAAMC,EAAON,EAAK,eAAe,OAASK,IAAS,IAAMA,IAAS,IAAMA,IAAS,GAAK,gBAAkB,eACxG,GAAIC,IAAS,gBAAkB,CAACN,EAAK,eAAe,QAAUK,IAASL,EAAK,eAAe,OAASO,GAAWF,CAAI,EAAG,CAOpH,GANKL,EAAK,eAAe,OACvBA,EAAK,eAAe,KAAOM,EAC3BT,EAAQ,MAAMS,EAAM,CAClB,WAAY,EACd,CAAC,GAECA,IAAS,gBACX,OAAAT,EAAQ,MAAM,gBAAgB,EACvBQ,IAAS,IAAMA,IAAS,GAAKR,EAAQ,MAAMW,GAAeT,EAAKU,CAAQ,EAAEJ,CAAI,EAAII,EAASJ,CAAI,EAEvG,GAAI,CAACL,EAAK,WAAaK,IAAS,GAC9B,OAAAR,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,MAAM,eAAe,EACtBa,EAAOL,CAAI,CAEtB,CACA,OAAON,EAAIM,CAAI,CACjB,CAGA,SAASK,EAAOL,EAAM,CACpB,OAAIE,GAAWF,CAAI,GAAK,EAAEF,EAAO,IAC/BN,EAAQ,QAAQQ,CAAI,EACbK,IAEJ,CAACV,EAAK,WAAaG,EAAO,KAAOH,EAAK,eAAe,OAASK,IAASL,EAAK,eAAe,OAASK,IAAS,IAAMA,IAAS,KAC/HR,EAAQ,KAAK,eAAe,EACrBY,EAASJ,CAAI,GAEfN,EAAIM,CAAI,CACjB,CAKA,SAASI,EAASJ,EAAM,CACtB,OAAAR,EAAQ,MAAM,gBAAgB,EAC9BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,gBAAgB,EAC7BG,EAAK,eAAe,OAASA,EAAK,eAAe,QAAUK,EACpDR,EAAQ,MAAMc,GAErBX,EAAK,UAAYD,EAAMa,EAASf,EAAQ,QAAQJ,GAAmCoB,EAAaC,CAAW,CAAC,CAC9G,CAGA,SAASF,EAAQP,EAAM,CACrB,OAAAL,EAAK,eAAe,iBAAmB,GACvCE,IACOW,EAAYR,CAAI,CACzB,CAGA,SAASS,EAAYT,EAAM,CACzB,OAAIU,GAAcV,CAAI,GACpBR,EAAQ,MAAM,0BAA0B,EACxCA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,0BAA0B,EAChCgB,GAEFd,EAAIM,CAAI,CACjB,CAGA,SAASQ,EAAYR,EAAM,CACzB,OAAAL,EAAK,eAAe,KAAOE,EAAcF,EAAK,eAAeH,EAAQ,KAAK,gBAAgB,EAAG,EAAI,EAAE,OAC5FC,EAAGO,CAAI,CAChB,CACF,CAOA,SAASf,GAAyBO,EAASC,EAAIC,EAAK,CAClD,IAAMC,EAAO,KACb,OAAAA,EAAK,eAAe,WAAa,OAC1BH,EAAQ,MAAMc,GAAWC,EAASI,CAAQ,EAGjD,SAASJ,EAAQP,EAAM,CACrB,OAAAL,EAAK,eAAe,kBAAoBA,EAAK,eAAe,mBAAqBA,EAAK,eAAe,iBAI9FiB,EAAapB,EAASC,EAAI,iBAAkBE,EAAK,eAAe,KAAO,CAAC,EAAEK,CAAI,CACvF,CAGA,SAASW,EAASX,EAAM,CACtB,OAAIL,EAAK,eAAe,mBAAqB,CAACe,GAAcV,CAAI,GAC9DL,EAAK,eAAe,kBAAoB,OACxCA,EAAK,eAAe,iBAAmB,OAChCkB,EAAiBb,CAAI,IAE9BL,EAAK,eAAe,kBAAoB,OACxCA,EAAK,eAAe,iBAAmB,OAChCH,EAAQ,QAAQF,GAAiBG,EAAIoB,CAAgB,EAAEb,CAAI,EACpE,CAGA,SAASa,EAAiBb,EAAM,CAE9B,OAAAL,EAAK,eAAe,WAAa,GAEjCA,EAAK,UAAY,OAGViB,EAAapB,EAASA,EAAQ,QAAQR,GAAMS,EAAIC,CAAG,EAAG,aAAcC,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAAEK,CAAI,CAC/J,CACF,CAOA,SAAST,GAAeC,EAASC,EAAIC,EAAK,CACxC,IAAMC,EAAO,KACb,OAAOiB,EAAapB,EAASsB,EAAa,iBAAkBnB,EAAK,eAAe,KAAO,CAAC,EAGxF,SAASmB,EAAYd,EAAM,CACzB,IAAMJ,EAAOD,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,OAAOC,GAAQA,EAAK,CAAC,EAAE,OAAS,kBAAoBA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,SAAWD,EAAK,eAAe,KAAOF,EAAGO,CAAI,EAAIN,EAAIM,CAAI,CACrJ,CACF,CAOA,SAASd,GAAgBM,EAAS,CAChCA,EAAQ,KAAK,KAAK,eAAe,IAAI,CACvC,CAOA,SAASH,GAAiCG,EAASC,EAAIC,EAAK,CAC1D,IAAMC,EAAO,KAIb,OAAOiB,EAAapB,EAASsB,EAAa,2BAA4BnB,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAK,EAGtJ,SAASmB,EAAYd,EAAM,CACzB,IAAMJ,EAAOD,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EAC/C,MAAO,CAACe,GAAcV,CAAI,GAAKJ,GAAQA,EAAK,CAAC,EAAE,OAAS,2BAA6BH,EAAGO,CAAI,EAAIN,EAAIM,CAAI,CAC1G,CACF,CCtMO,IAAMe,GAAkB,CAC7B,KAAM,kBACN,UAAWC,GACX,SAAUC,EACZ,EAGA,SAASD,GAAyBE,EAAQC,EAAS,CAEjD,IAAIC,EAAQF,EAAO,OAEfG,EAEAC,EAEAC,EAIJ,KAAOH,KACL,GAAIF,EAAOE,CAAK,EAAE,CAAC,IAAM,QAAS,CAChC,GAAIF,EAAOE,CAAK,EAAE,CAAC,EAAE,OAAS,UAAW,CACvCC,EAAUD,EACV,KACF,CACIF,EAAOE,CAAK,EAAE,CAAC,EAAE,OAAS,cAC5BE,EAAOF,EAEX,MAGMF,EAAOE,CAAK,EAAE,CAAC,EAAE,OAAS,WAE5BF,EAAO,OAAOE,EAAO,CAAC,EAEpB,CAACG,GAAcL,EAAOE,CAAK,EAAE,CAAC,EAAE,OAAS,eAC3CG,EAAaH,GAInB,IAAMI,EAAU,CACd,KAAM,gBACN,MAAO,CACL,GAAGN,EAAOG,CAAO,EAAE,CAAC,EAAE,KACxB,EACA,IAAK,CACH,GAAGH,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,GAClC,CACF,EAGA,OAAAA,EAAOI,CAAI,EAAE,CAAC,EAAE,KAAO,oBAInBC,GACFL,EAAO,OAAOI,EAAM,EAAG,CAAC,QAASE,EAASL,CAAO,CAAC,EAClDD,EAAO,OAAOK,EAAa,EAAG,EAAG,CAAC,OAAQL,EAAOG,CAAO,EAAE,CAAC,EAAGF,CAAO,CAAC,EACtED,EAAOG,CAAO,EAAE,CAAC,EAAE,IAAM,CACvB,GAAGH,EAAOK,CAAU,EAAE,CAAC,EAAE,GAC3B,GAEAL,EAAOG,CAAO,EAAE,CAAC,EAAIG,EAIvBN,EAAO,KAAK,CAAC,OAAQM,EAASL,CAAO,CAAC,EAC/BD,CACT,CAOA,SAASD,GAAwBQ,EAASC,EAAIC,EAAK,CACjD,IAAMC,EAAO,KAETC,EACJ,OAAOC,EAaP,SAASA,EAAMC,EAAM,CACnB,IAAIX,EAAQQ,EAAK,OAAO,OAEpBI,EAEJ,KAAOZ,KAGL,GAAIQ,EAAK,OAAOR,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBQ,EAAK,OAAOR,CAAK,EAAE,CAAC,EAAE,OAAS,cAAgBQ,EAAK,OAAOR,CAAK,EAAE,CAAC,EAAE,OAAS,UAAW,CAC1IY,EAAYJ,EAAK,OAAOR,CAAK,EAAE,CAAC,EAAE,OAAS,YAC3C,KACF,CAKF,MAAI,CAACQ,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,IAAMA,EAAK,WAAaI,IAC3DP,EAAQ,MAAM,mBAAmB,EACjCI,EAASE,EACFE,EAAOF,CAAI,GAEbJ,EAAII,CAAI,CACjB,CAaA,SAASE,EAAOF,EAAM,CACpB,OAAAN,EAAQ,MAAM,2BAA2B,EAClCS,EAAOH,CAAI,CACpB,CAaA,SAASG,EAAOH,EAAM,CACpB,OAAIA,IAASF,GACXJ,EAAQ,QAAQM,CAAI,EACbG,IAETT,EAAQ,KAAK,2BAA2B,EACjCU,GAAcJ,CAAI,EAAIK,EAAaX,EAASY,EAAO,YAAY,EAAEN,CAAI,EAAIM,EAAMN,CAAI,EAC5F,CAaA,SAASM,EAAMN,EAAM,CACnB,OAAIA,IAAS,MAAQO,EAAmBP,CAAI,GAC1CN,EAAQ,KAAK,mBAAmB,EACzBC,EAAGK,CAAI,GAETJ,EAAII,CAAI,CACjB,CACF,CC3KO,IAAMQ,GAAO,CAClB,SAAUC,EACZ,EAQA,SAASA,GAAeC,EAAS,CAC/B,IAAMC,EAAO,KACPC,EAAUF,EAAQ,QAExBG,GAAWC,EAEXJ,EAAQ,QAAQ,KAAK,OAAO,WAAW,YAAaK,EAAgBC,EAAaN,EAASA,EAAQ,QAAQ,KAAK,OAAO,WAAW,KAAMK,EAAgBL,EAAQ,QAAQO,GAASF,CAAc,CAAC,EAAG,YAAY,CAAC,CAAC,EAChN,OAAOH,EAGP,SAASE,EAAcI,EAAM,CAC3B,GAAIA,IAAS,KAAM,CACjBR,EAAQ,QAAQQ,CAAI,EACpB,MACF,CACA,OAAAR,EAAQ,MAAM,iBAAiB,EAC/BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,iBAAiB,EAC9BC,EAAK,iBAAmB,OACjBC,CACT,CAGA,SAASG,EAAeG,EAAM,CAC5B,GAAIA,IAAS,KAAM,CACjBR,EAAQ,QAAQQ,CAAI,EACpB,MACF,CACA,OAAAR,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,YAAY,EACzBC,EAAK,iBAAmB,OACjBC,CACT,CACF,CC9CO,IAAMO,GAAW,CACtB,WAAYC,GAAe,CAC7B,EACaC,GAASC,GAAkB,QAAQ,EACnCC,GAAOD,GAAkB,MAAM,EAQ5C,SAASA,GAAkBE,EAAO,CAChC,MAAO,CACL,WAAYJ,GAAeI,IAAU,OAASC,GAAyB,MAAS,EAChF,SAAUC,CACZ,EAOA,SAASA,EAAeC,EAAS,CAC/B,IAAMC,EAAO,KACPC,EAAa,KAAK,OAAO,WAAWL,CAAK,EACzCD,EAAOI,EAAQ,QAAQE,EAAYC,EAAOC,CAAO,EACvD,OAAOD,EAGP,SAASA,EAAME,EAAM,CACnB,OAAOC,EAAQD,CAAI,EAAIT,EAAKS,CAAI,EAAID,EAAQC,CAAI,CAClD,CAGA,SAASD,EAAQC,EAAM,CACrB,GAAIA,IAAS,KAAM,CACjBL,EAAQ,QAAQK,CAAI,EACpB,MACF,CACA,OAAAL,EAAQ,MAAM,MAAM,EACpBA,EAAQ,QAAQK,CAAI,EACbE,CACT,CAGA,SAASA,EAAKF,EAAM,CAClB,OAAIC,EAAQD,CAAI,GACdL,EAAQ,KAAK,MAAM,EACZJ,EAAKS,CAAI,IAIlBL,EAAQ,QAAQK,CAAI,EACbE,EACT,CAQA,SAASD,EAAQD,EAAM,CACrB,GAAIA,IAAS,KACX,MAAO,GAET,IAAMG,EAAON,EAAWG,CAAI,EACxBI,EAAQ,GACZ,GAAID,EAGF,KAAO,EAAEC,EAAQD,EAAK,QAAQ,CAC5B,IAAME,EAAOF,EAAKC,CAAK,EACvB,GAAI,CAACC,EAAK,UAAYA,EAAK,SAAS,KAAKT,EAAMA,EAAK,QAAQ,EAC1D,MAAO,EAEX,CAEF,MAAO,EACT,CACF,CACF,CAQA,SAASR,GAAekB,EAAe,CACrC,OAAOC,EAGP,SAASA,EAAeC,EAAQC,EAAS,CACvC,IAAIL,EAAQ,GAERM,EAIJ,KAAO,EAAEN,GAASI,EAAO,QACnBE,IAAU,OACRF,EAAOJ,CAAK,GAAKI,EAAOJ,CAAK,EAAE,CAAC,EAAE,OAAS,SAC7CM,EAAQN,EACRA,MAEO,CAACI,EAAOJ,CAAK,GAAKI,EAAOJ,CAAK,EAAE,CAAC,EAAE,OAAS,UAEjDA,IAAUM,EAAQ,IACpBF,EAAOE,CAAK,EAAE,CAAC,EAAE,IAAMF,EAAOJ,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CI,EAAO,OAAOE,EAAQ,EAAGN,EAAQM,EAAQ,CAAC,EAC1CN,EAAQM,EAAQ,GAElBA,EAAQ,QAGZ,OAAOJ,EAAgBA,EAAcE,EAAQC,CAAO,EAAID,CAC1D,CACF,CAaA,SAASf,GAAuBe,EAAQC,EAAS,CAC/C,IAAIE,EAAa,EAEjB,KAAO,EAAEA,GAAcH,EAAO,QAC5B,IAAKG,IAAeH,EAAO,QAAUA,EAAOG,CAAU,EAAE,CAAC,EAAE,OAAS,eAAiBH,EAAOG,EAAa,CAAC,EAAE,CAAC,EAAE,OAAS,OAAQ,CAC9H,IAAMT,EAAOM,EAAOG,EAAa,CAAC,EAAE,CAAC,EAC/BC,EAASH,EAAQ,YAAYP,CAAI,EACnCE,EAAQQ,EAAO,OACfC,EAAc,GACdC,EAAO,EAEPC,EACJ,KAAOX,KAAS,CACd,IAAMY,EAAQJ,EAAOR,CAAK,EAC1B,GAAI,OAAOY,GAAU,SAAU,CAE7B,IADAH,EAAcG,EAAM,OACbA,EAAM,WAAWH,EAAc,CAAC,IAAM,IAC3CC,IACAD,IAEF,GAAIA,EAAa,MACjBA,EAAc,EAChB,SAESG,IAAU,GACjBD,EAAO,GACPD,YACSE,IAAU,GAEd,CAELZ,IACA,KACF,CACF,CAMA,GAHIK,EAAQ,0BAA4BE,IAAeH,EAAO,SAC5DM,EAAO,GAELA,EAAM,CACR,IAAMG,EAAQ,CACZ,KAAMN,IAAeH,EAAO,QAAUO,GAAQD,EAAO,EAAI,aAAe,oBACxE,MAAO,CACL,aAAcV,EAAQS,EAAcX,EAAK,MAAM,aAAeW,EAC9D,OAAQX,EAAK,MAAM,OAASE,EAC5B,KAAMF,EAAK,IAAI,KACf,OAAQA,EAAK,IAAI,OAASY,EAC1B,OAAQZ,EAAK,IAAI,OAASY,CAC5B,EACA,IAAK,CACH,GAAGZ,EAAK,GACV,CACF,EACAA,EAAK,IAAM,CACT,GAAGe,EAAM,KACX,EACIf,EAAK,MAAM,SAAWA,EAAK,IAAI,OACjC,OAAO,OAAOA,EAAMe,CAAK,GAEzBT,EAAO,OAAOG,EAAY,EAAG,CAAC,QAASM,EAAOR,CAAO,EAAG,CAAC,OAAQQ,EAAOR,CAAO,CAAC,EAChFE,GAAc,EAElB,CACAA,GACF,CAEF,OAAOH,CACT,CCnNA,IAAAU,GAAA,GAAAC,GAAAD,GAAA,sBAAAE,GAAA,mBAAAC,GAAA,YAAAC,GAAA,aAAAC,GAAA,SAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,WAAAC,GAAA,SAAAC,KAQO,IAAMC,GAAW,CACrB,GAAKC,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKA,GACL,GAAKC,EACR,EAGaC,GAAiB,CAC3B,GAAKC,EACR,EAGaC,GAAc,CACzB,CAAC,EAAE,EAAGC,GACN,CAAC,EAAE,EAAGA,GACL,GAAKA,EACR,EAGaC,GAAO,CACjB,GAAKC,GACL,GAAKC,GACL,GAAK,CAACC,GAAiBD,EAAa,EACpC,GAAKE,GACL,GAAKD,GACL,GAAKD,GACL,GAAKG,GACL,IAAMA,EACT,EAGaC,GAAS,CACnB,GAAKC,GACL,GAAKC,EACR,EAGaC,GAAO,CAClB,CAAC,EAAE,EAAGC,GACN,CAAC,EAAE,EAAGA,GACN,CAAC,EAAE,EAAGA,GACL,GAAKC,GACL,GAAKJ,GACL,GAAKK,GACL,GAAK,CAACC,GAAUC,EAAQ,EACxB,GAAKC,GACL,GAAK,CAACC,GAAiBR,EAAe,EACtC,GAAKS,GACL,GAAKL,GACL,GAAKM,EACR,EAGaC,GAAa,CACxB,KAAM,CAACP,GAAWQ,EAAW,CAC/B,EAGaC,GAAmB,CAC9B,KAAM,CAAC,GAAI,EAAE,CACf,EAGaC,GAAU,CACrB,KAAM,CAAC,CACT,ECxBO,SAASC,GAAgBC,EAAQC,EAAYC,EAAM,CAExD,IAAIC,EAAQ,CACV,aAAc,GACd,OAAQ,EACR,KAAMD,GAAQA,EAAK,MAAQ,EAC3B,OAAQA,GAAQA,EAAK,QAAU,EAC/B,OAAQA,GAAQA,EAAK,QAAU,CACjC,EAEME,EAAc,CAAC,EAEfC,EAAuB,CAAC,EAE1BC,EAAS,CAAC,EAEVC,EAAQ,CAAC,EAETC,EAAW,GAOTC,EAAU,CACd,QAASC,EAAiBC,CAAqB,EAC/C,MAAOD,EAAiBE,CAAiB,EACzC,QAAAC,EACA,MAAAC,EACA,KAAAC,EACA,UAAWL,EAAiBE,EAAmB,CAC7C,UAAW,EACb,CAAC,CACH,EAOMI,EAAU,CACd,KAAM,KACN,eAAgB,CAAC,EACjB,WAAAC,EACA,OAAQ,CAAC,EACT,IAAAC,EACA,OAAAlB,EACA,SAAU,KACV,eAAAmB,EACA,YAAAC,EACA,MAAAC,CACF,EAOIC,EAAQrB,EAAW,SAAS,KAAKe,EAASP,CAAO,EAOjDc,EACJ,OAAItB,EAAW,YACbI,EAAqB,KAAKJ,CAAU,EAE/Be,EAGP,SAASK,EAAMG,EAAO,CAKpB,OAJAlB,EAASmB,GAAKnB,EAAQkB,CAAK,EAC3BE,EAAK,EAGDpB,EAAOA,EAAO,OAAS,CAAC,IAAM,KACzB,CAAC,GAEVqB,EAAU1B,EAAY,CAAC,EAGvBe,EAAQ,OAASY,GAAWvB,EAAsBW,EAAQ,OAAQA,CAAO,EAClEA,EAAQ,OACjB,CAOA,SAASG,EAAeU,EAAOC,EAAY,CACzC,OAAOC,GAAgBX,EAAYS,CAAK,EAAGC,CAAU,CACvD,CAGA,SAASV,EAAYS,EAAO,CAC1B,OAAOG,GAAY1B,EAAQuB,CAAK,CAClC,CAGA,SAASX,GAAM,CAEb,GAAM,CACJ,aAAAe,EACA,OAAAC,EACA,KAAAC,GACA,OAAAC,GACA,OAAAC,EACF,EAAIlC,EACJ,MAAO,CACL,aAAA8B,EACA,OAAAC,EACA,KAAAC,GACA,OAAAC,GACA,OAAAC,EACF,CACF,CAGA,SAASpB,EAAWqB,EAAO,CACzBlC,EAAYkC,EAAM,IAAI,EAAIA,EAAM,OAChCC,EAAwB,CAC1B,CAiBA,SAASb,GAAO,CAEd,IAAIc,EACJ,KAAOrC,EAAM,OAASG,EAAO,QAAQ,CACnC,IAAMmC,EAAQnC,EAAOH,EAAM,MAAM,EAGjC,GAAI,OAAOsC,GAAU,SAKnB,IAJAD,EAAarC,EAAM,OACfA,EAAM,aAAe,IACvBA,EAAM,aAAe,GAEhBA,EAAM,SAAWqC,GAAcrC,EAAM,aAAesC,EAAM,QAC/DC,EAAGD,EAAM,WAAWtC,EAAM,YAAY,CAAC,OAGzCuC,EAAGD,CAAK,CAEZ,CACF,CAUA,SAASC,EAAGC,EAAM,CAChBnC,EAAW,OACXe,EAAeoB,EACfrB,EAAQA,EAAMqB,CAAI,CACpB,CAGA,SAAS9B,EAAQ8B,EAAM,CACjBC,EAAmBD,CAAI,GACzBxC,EAAM,OACNA,EAAM,OAAS,EACfA,EAAM,QAAUwC,IAAS,GAAK,EAAI,EAClCJ,EAAwB,GACfI,IAAS,KAClBxC,EAAM,SACNA,EAAM,UAIJA,EAAM,aAAe,EACvBA,EAAM,UAENA,EAAM,eAGFA,EAAM,eAIVG,EAAOH,EAAM,MAAM,EAAE,SACnBA,EAAM,aAAe,GACrBA,EAAM,WAKVa,EAAQ,SAAW2B,EAGnBnC,EAAW,EACb,CAGA,SAASM,EAAM+B,EAAMC,EAAQ,CAG3B,IAAMjB,GAAQiB,GAAU,CAAC,EACzB,OAAAjB,GAAM,KAAOgB,EACbhB,GAAM,MAAQX,EAAI,EAClBF,EAAQ,OAAO,KAAK,CAAC,QAASa,GAAOb,CAAO,CAAC,EAC7CT,EAAM,KAAKsB,EAAK,EACTA,EACT,CAGA,SAASd,EAAK8B,EAAM,CAClB,IAAMhB,EAAQtB,EAAM,IAAI,EACxB,OAAAsB,EAAM,IAAMX,EAAI,EAChBF,EAAQ,OAAO,KAAK,CAAC,OAAQa,EAAOb,CAAO,CAAC,EACrCa,CACT,CAOA,SAASlB,EAAsBoC,EAAWC,EAAM,CAC9CrB,EAAUoB,EAAWC,EAAK,IAAI,CAChC,CAOA,SAASpC,EAAkBqC,EAAGD,EAAM,CAClCA,EAAK,QAAQ,CACf,CAUA,SAAStC,EAAiBwC,EAAUJ,EAAQ,CAC1C,OAAOK,GAeP,SAASA,GAAKC,GAAYC,GAAaC,GAAY,CAEjD,IAAIC,GAEAC,EAEAC,GAEAT,GACJ,OAAO,MAAM,QAAQI,EAAU,EAC/BM,GAAuBN,EAAU,EAAI,aAAcA,GAEnDM,GAAuB,CAA0BN,EAAW,CAAC,EAAIO,EAAsBP,EAAU,EAUjG,SAASO,EAAsBC,GAAK,CAClC,OAAOC,GAGP,SAASA,GAAMlB,GAAM,CACnB,IAAMmB,GAAOnB,KAAS,MAAQiB,GAAIjB,EAAI,EAChCoB,GAAMpB,KAAS,MAAQiB,GAAI,KAC3BI,GAAO,CAGb,GAAI,MAAM,QAAQF,EAAI,EAAIA,GAAOA,GAAO,CAACA,EAAI,EAAI,CAAC,EAAI,GAAI,MAAM,QAAQC,EAAG,EAAIA,GAAMA,GAAM,CAACA,EAAG,EAAI,CAAC,CAAE,EACtG,OAAOL,GAAuBM,EAAI,EAAErB,EAAI,CAC1C,CACF,CAUA,SAASe,GAAuBM,GAAM,CAGpC,OAFAT,GAAmBS,GACnBR,EAAiB,EACbQ,GAAK,SAAW,EACXV,GAEFW,GAAgBD,GAAKR,CAAc,CAAC,CAC7C,CAUA,SAASS,GAAgBlB,GAAW,CAClC,OAAOc,GAGP,SAASA,GAAMlB,GAAM,CAanB,OARAK,GAAOkB,GAAM,EACbT,GAAmBV,GACdA,GAAU,UACb/B,EAAQ,iBAAmB+B,IAKzBA,GAAU,MAAQ/B,EAAQ,OAAO,WAAW,QAAQ,KAAK,SAAS+B,GAAU,IAAI,EAC3EoB,GAAIxB,EAAI,EAEVI,GAAU,SAAS,KAI1BD,EAAS,OAAO,OAAO,OAAO,OAAO9B,CAAO,EAAG8B,CAAM,EAAI9B,EAASP,EAAS2D,GAAID,EAAG,EAAExB,EAAI,CAC1F,CACF,CAGA,SAASyB,GAAGzB,GAAM,CAChB,OAAAnC,EAAW,GACX0C,EAASO,GAAkBT,EAAI,EACxBK,EACT,CAGA,SAASc,GAAIxB,GAAM,CAGjB,OAFAnC,EAAW,GACXwC,GAAK,QAAQ,EACT,EAAEQ,EAAiBD,GAAiB,OAC/BU,GAAgBV,GAAiBC,CAAc,CAAC,EAElDF,EACT,CACF,CACF,CAUA,SAAS3B,EAAUoB,EAAW7C,EAAM,CAC9B6C,EAAU,YAAc,CAAC1C,EAAqB,SAAS0C,CAAS,GAClE1C,EAAqB,KAAK0C,CAAS,EAEjCA,EAAU,SACZsB,GAAOrD,EAAQ,OAAQd,EAAMc,EAAQ,OAAO,OAASd,EAAM6C,EAAU,QAAQ/B,EAAQ,OAAO,MAAMd,CAAI,EAAGc,CAAO,CAAC,EAE/G+B,EAAU,YACZ/B,EAAQ,OAAS+B,EAAU,UAAU/B,EAAQ,OAAQA,CAAO,EAEhE,CAQA,SAASkD,IAAQ,CACf,IAAMI,EAAapD,EAAI,EACjBqD,EAAgBvD,EAAQ,SACxBwD,GAAwBxD,EAAQ,iBAChCyD,GAAmBzD,EAAQ,OAAO,OAClC0D,GAAa,MAAM,KAAKnE,CAAK,EACnC,MAAO,CACL,KAAMkE,GACN,QAAAE,EACF,EAQA,SAASA,IAAU,CACjBxE,EAAQmE,EACRtD,EAAQ,SAAWuD,EACnBvD,EAAQ,iBAAmBwD,GAC3BxD,EAAQ,OAAO,OAASyD,GACxBlE,EAAQmE,GACRnC,EAAwB,CAC1B,CACF,CASA,SAASA,GAA0B,CAC7BpC,EAAM,QAAQC,GAAeD,EAAM,OAAS,IAC9CA,EAAM,OAASC,EAAYD,EAAM,IAAI,EACrCA,EAAM,QAAUC,EAAYD,EAAM,IAAI,EAAI,EAE9C,CACF,CAYA,SAAS6B,GAAY1B,EAAQuB,EAAO,CAClC,IAAM+C,EAAa/C,EAAM,MAAM,OACzBgD,EAAmBhD,EAAM,MAAM,aAC/BiD,EAAWjD,EAAM,IAAI,OACrBkD,EAAiBlD,EAAM,IAAI,aAE7BmD,EACJ,GAAIJ,IAAeE,EAEjBE,EAAO,CAAC1E,EAAOsE,CAAU,EAAE,MAAMC,EAAkBE,CAAc,CAAC,MAC7D,CAEL,GADAC,EAAO1E,EAAO,MAAMsE,EAAYE,CAAQ,EACpCD,EAAmB,GAAI,CACzB,IAAMI,EAAOD,EAAK,CAAC,EACf,OAAOC,GAAS,SAClBD,EAAK,CAAC,EAAIC,EAAK,MAAMJ,CAAgB,EAGrCG,EAAK,MAAM,CAEf,CACID,EAAiB,GAEnBC,EAAK,KAAK1E,EAAOwE,CAAQ,EAAE,MAAM,EAAGC,CAAc,CAAC,CAEvD,CACA,OAAOC,CACT,CAYA,SAASjD,GAAgBzB,EAAQwB,EAAY,CAC3C,IAAIoD,EAAQ,GAENC,EAAS,CAAC,EAEZC,EACJ,KAAO,EAAEF,EAAQ5E,EAAO,QAAQ,CAC9B,IAAMmC,EAAQnC,EAAO4E,CAAK,EAEtB5C,EACJ,GAAI,OAAOG,GAAU,SACnBH,EAAQG,MACH,QAAQA,EAAO,CACpB,IAAK,GACH,CACEH,EAAQ,KACR,KACF,CACF,IAAK,GACH,CACEA,EAAQ;AAAA,EACR,KACF,CACF,IAAK,GACH,CACEA,EAAQ;AAAA,EACR,KACF,CACF,IAAK,GACH,CACEA,EAAQR,EAAa,IAAM,IAC3B,KACF,CACF,IAAK,GACH,CACE,GAAI,CAACA,GAAcsD,EAAO,SAC1B9C,EAAQ,IACR,KACF,CACF,QAGIA,EAAQ,OAAO,aAAaG,CAAK,CAEvC,CACA2C,EAAQ3C,IAAU,GAClB0C,EAAO,KAAK7C,CAAK,CACnB,CACA,OAAO6C,EAAO,KAAK,EAAE,CACvB,CC1kBO,SAASE,GAAMC,EAAS,CAM7B,IAAMC,EAAS,CACb,WAJFC,GAAkB,CAACC,GAAmB,IAFrBH,GAAW,CAAC,GAEsB,YAAc,CAAC,CAAE,CAAC,EAKnE,QAASI,EAAOC,EAAO,EACvB,QAAS,CAAC,EACV,SAAUD,EAAOE,EAAQ,EACzB,KAAMF,EAAOG,EAAI,EACjB,KAAM,CAAC,EACP,OAAQH,EAAOI,EAAM,EACrB,KAAMJ,EAAOK,EAAI,CACnB,EACA,OAAOR,EAQP,SAASG,EAAOM,EAAS,CACvB,OAAOC,EAEP,SAASA,EAAQC,EAAM,CACrB,OAAOC,GAAgBZ,EAAQS,EAASE,CAAI,CAC9C,CACF,CACF,CC3CO,SAASE,GAAYC,EAAQ,CAClC,KAAO,CAACC,GAAYD,CAAM,GAAG,CAG7B,OAAOA,CACT,CCAA,IAAME,GAAS,cAMR,SAASC,IAAa,CAC3B,IAAIC,EAAS,EACTC,EAAS,GAETC,EAAQ,GAERC,EACJ,OAAOC,EAIP,SAASA,EAAaC,EAAOC,EAAUC,EAAK,CAE1C,IAAMC,EAAS,CAAC,EAEZC,EAEAC,EAEAC,EAEAC,EAEAC,EAWJ,IAVAR,EAAQJ,GAAU,OAAOI,GAAU,SAAWA,EAAM,SAAS,EAAI,IAAI,YAAYC,GAAY,MAAS,EAAE,OAAOD,CAAK,GACpHM,EAAgB,EAChBV,EAAS,GACLC,IAEEG,EAAM,WAAW,CAAC,IAAM,OAC1BM,IAEFT,EAAQ,QAEHS,EAAgBN,EAAM,QAAQ,CAKnC,GAJAP,GAAO,UAAYa,EACnBF,EAAQX,GAAO,KAAKO,CAAK,EACzBO,EAAcH,GAASA,EAAM,QAAU,OAAYA,EAAM,MAAQJ,EAAM,OACvEQ,EAAOR,EAAM,WAAWO,CAAW,EAC/B,CAACH,EAAO,CACVR,EAASI,EAAM,MAAMM,CAAa,EAClC,KACF,CACA,GAAIE,IAAS,IAAMF,IAAkBC,GAAeT,EAClDK,EAAO,KAAK,EAAE,EACdL,EAAmB,WAUnB,QARIA,IACFK,EAAO,KAAK,EAAE,EACdL,EAAmB,QAEjBQ,EAAgBC,IAClBJ,EAAO,KAAKH,EAAM,MAAMM,EAAeC,CAAW,CAAC,EACnDZ,GAAUY,EAAcD,GAElBE,EAAM,CACZ,IAAK,GACH,CACEL,EAAO,KAAK,KAAK,EACjBR,IACA,KACF,CACF,IAAK,GACH,CAGE,IAFAU,EAAO,KAAK,KAAKV,EAAS,CAAC,EAAI,EAC/BQ,EAAO,KAAK,EAAE,EACPR,IAAWU,GAAMF,EAAO,KAAK,EAAE,EACtC,KACF,CACF,IAAK,IACH,CACEA,EAAO,KAAK,EAAE,EACdR,EAAS,EACT,KACF,CACF,QAEIG,EAAmB,GACnBH,EAAS,CAEf,CAEFW,EAAgBC,EAAc,CAChC,CACA,OAAIL,IACEJ,GAAkBK,EAAO,KAAK,EAAE,EAChCP,GAAQO,EAAO,KAAKP,CAAM,EAC9BO,EAAO,KAAK,IAAI,GAEXA,CACT,CACF,CChHA,IAAMM,GAA6B,oEAc5B,SAASC,GAAaC,EAAO,CAClC,OAAOA,EAAM,QAAQF,GAA4BG,EAAM,CACzD,CAYA,SAASA,GAAOC,EAAIC,EAAIC,EAAI,CAC1B,GAAID,EAEF,OAAOA,EAKT,GADaC,EAAG,WAAW,CAAC,IACf,GAAI,CACf,IAAMC,EAAOD,EAAG,WAAW,CAAC,EACtBE,EAAMD,IAAS,KAAOA,IAAS,GACrC,OAAOE,GAAgCH,EAAG,MAAME,EAAM,EAAI,CAAC,EAAGA,EAAM,GAAK,EAAE,CAC7E,CACA,OAAOE,GAA8BJ,CAAE,GAAKF,CAC9C,CCRO,SAASO,GAAkBC,EAAO,CAEvC,MAAI,CAACA,GAAS,OAAOA,GAAU,SACtB,GAIL,aAAcA,GAAS,SAAUA,EAC5BC,GAASD,EAAM,QAAQ,EAI5B,UAAWA,GAAS,QAASA,EACxBC,GAASD,CAAK,EAInB,SAAUA,GAAS,WAAYA,EAC1BE,GAAMF,CAAK,EAIb,EACT,CAMA,SAASE,GAAMA,EAAO,CACpB,OAAOC,GAAMD,GAASA,EAAM,IAAI,EAAI,IAAMC,GAAMD,GAASA,EAAM,MAAM,CACvE,CAMA,SAASD,GAASG,EAAK,CACrB,OAAOF,GAAME,GAAOA,EAAI,KAAK,EAAI,IAAMF,GAAME,GAAOA,EAAI,GAAG,CAC7D,CAMA,SAASD,GAAMH,EAAO,CACpB,OAAOA,GAAS,OAAOA,GAAU,SAAWA,EAAQ,CACtD,CCnCA,IAAMK,GAAM,CAAC,EAAE,eAyBR,SAASC,GAAaC,EAAOC,EAAUC,EAAS,CACrD,OAAID,GAAY,OAAOA,GAAa,WAClCC,EAAUD,EACVA,EAAW,QAENE,GAASD,CAAO,EAAEE,GAAYC,GAAMH,CAAO,EAAE,SAAS,EAAE,MAAMI,GAAW,EAAEN,EAAOC,EAAU,EAAI,CAAC,CAAC,CAAC,CAC5G,CAOA,SAASE,GAASD,EAAS,CAEzB,IAAMK,EAAS,CACb,WAAY,CAAC,EACb,eAAgB,CAAC,WAAY,WAAY,UAAW,YAAa,QAAQ,EACzE,MAAO,CACL,SAAUC,EAAOC,EAAI,EACrB,iBAAkBC,EAClB,cAAeA,EACf,WAAYF,EAAOG,EAAO,EAC1B,WAAYH,EAAOI,EAAU,EAC7B,gBAAiBF,EACjB,mBAAoBA,EACpB,WAAYF,EAAOK,EAAQ,EAC3B,oBAAqBC,EACrB,oBAAqBA,EACrB,aAAcN,EAAOK,GAAUC,CAAM,EACrC,SAAUN,EAAOO,GAAUD,CAAM,EACjC,aAAcJ,EACd,KAAMA,EACN,cAAeA,EACf,WAAYF,EAAOQ,EAAU,EAC7B,4BAA6BF,EAC7B,sBAAuBA,EACvB,sBAAuBA,EACvB,SAAUN,EAAOS,EAAQ,EACzB,gBAAiBT,EAAOU,EAAS,EACjC,kBAAmBV,EAAOU,EAAS,EACnC,SAAUV,EAAOW,GAAML,CAAM,EAC7B,aAAcJ,EACd,SAAUF,EAAOW,GAAML,CAAM,EAC7B,aAAcJ,EACd,MAAOF,EAAOY,EAAK,EACnB,MAAON,EACP,KAAMN,EAAOC,EAAI,EACjB,SAAUD,EAAOa,EAAQ,EACzB,cAAeC,EACf,YAAad,EAAOe,GAAMC,CAAkB,EAC5C,cAAehB,EAAOe,EAAI,EAC1B,UAAWf,EAAOiB,EAAS,EAC3B,UAAWC,EACX,gBAAiBZ,EACjB,0BAA2BA,EAC3B,oBAAqBA,EACrB,cAAeN,EAAOG,EAAO,EAC7B,OAAQH,EAAOmB,EAAM,EACrB,cAAenB,EAAOoB,EAAa,CACrC,EACA,KAAM,CACJ,WAAYC,EAAO,EACnB,mBAAoBC,EACpB,SAAUD,EAAO,EACjB,cAAeE,GACf,iBAAkBC,GAClB,WAAYH,EAAO,EACnB,qBAAsBI,EACtB,oCAAqCC,GACrC,gCAAiCA,GACjC,wBAAyBC,GACzB,mBAAoBC,GACpB,WAAYP,EAAOQ,CAAgB,EACnC,gBAAiBC,EACjB,oBAAqBC,EACrB,oBAAqBC,EACrB,cAAeP,EACf,aAAcJ,EAAOY,CAAkB,EACvC,SAAUZ,EAAOa,EAAc,EAC/B,aAAcT,EACd,KAAMA,EACN,WAAYJ,EAAO,EACnB,4BAA6Bc,EAC7B,sBAAuBC,EACvB,sBAAuBC,EACvB,SAAUhB,EAAO,EACjB,gBAAiBA,EAAOiB,CAAe,EACvC,kBAAmBjB,EAAOiB,CAAe,EACzC,SAAUjB,EAAOkB,CAAc,EAC/B,aAAcd,EACd,SAAUJ,EAAOmB,CAAc,EAC/B,aAAcf,EACd,MAAOJ,EAAOoB,EAAW,EACzB,MAAOC,GACP,UAAWC,GACX,WAAYC,GACZ,KAAMvB,EAAOwB,EAAU,EACvB,SAAUxB,EAAO,EACjB,YAAaA,EAAO,EACpB,cAAeA,EAAO,EACtB,UAAWA,EAAO,EAClB,gBAAiByB,GACjB,0BAA2BC,EAC3B,oBAAqBC,GACrB,SAAUC,GACV,cAAe5B,EAAO6B,CAAmB,EACzC,0BAA2BC,EAC3B,kBAAmBC,EACnB,OAAQ/B,EAAO,EACf,cAAeA,EAAO,CACxB,CACF,EACAgC,GAAUtD,GAASL,GAAW,CAAC,GAAG,iBAAmB,CAAC,CAAC,EAGvD,IAAM4D,EAAO,CAAC,EACd,OAAOC,EAUP,SAASA,EAAQC,EAAQ,CAEvB,IAAIC,EAAO,CACT,KAAM,OACN,SAAU,CAAC,CACb,EAEMC,GAAU,CACd,MAAO,CAACD,CAAI,EACZ,WAAY,CAAC,EACb,OAAA1D,EACA,MAAA4D,EACA,KAAAC,EACA,OAAAtD,EACA,OAAAuD,EACA,KAAAP,CACF,EAEMQ,GAAY,CAAC,EACfC,GAAQ,GACZ,KAAO,EAAEA,GAAQP,EAAO,QAGtB,GAAIA,EAAOO,EAAK,EAAE,CAAC,EAAE,OAAS,eAAiBP,EAAOO,EAAK,EAAE,CAAC,EAAE,OAAS,gBACvE,GAAIP,EAAOO,EAAK,EAAE,CAAC,IAAM,QACvBD,GAAU,KAAKC,EAAK,MACf,CACL,IAAMC,GAAOF,GAAU,IAAI,EAC3BC,GAAQE,EAAYT,EAAQQ,GAAMD,EAAK,CACzC,CAIJ,IADAA,GAAQ,GACD,EAAEA,GAAQP,EAAO,QAAQ,CAC9B,IAAMU,GAAUnE,EAAOyD,EAAOO,EAAK,EAAE,CAAC,CAAC,EACnCzE,GAAI,KAAK4E,GAASV,EAAOO,EAAK,EAAE,CAAC,EAAE,IAAI,GACzCG,GAAQV,EAAOO,EAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,OAAO,CAChD,eAAgBP,EAAOO,EAAK,EAAE,CAAC,EAAE,cACnC,EAAGL,EAAO,EAAGF,EAAOO,EAAK,EAAE,CAAC,CAAC,CAEjC,CAGA,GAAIL,GAAQ,WAAW,OAAS,EAAG,CACjC,IAAMM,GAAON,GAAQ,WAAWA,GAAQ,WAAW,OAAS,CAAC,GAC7CM,GAAK,CAAC,GAAKG,IACnB,KAAKT,GAAS,OAAWM,GAAK,CAAC,CAAC,CAC1C,CAkBA,IAfAP,EAAK,SAAW,CACd,MAAOW,GAAMZ,EAAO,OAAS,EAAIA,EAAO,CAAC,EAAE,CAAC,EAAE,MAAQ,CACpD,KAAM,EACN,OAAQ,EACR,OAAQ,CACV,CAAC,EACD,IAAKY,GAAMZ,EAAO,OAAS,EAAIA,EAAOA,EAAO,OAAS,CAAC,EAAE,CAAC,EAAE,IAAM,CAChE,KAAM,EACN,OAAQ,EACR,OAAQ,CACV,CAAC,CACH,EAGAO,GAAQ,GACD,EAAEA,GAAQhE,EAAO,WAAW,QACjC0D,EAAO1D,EAAO,WAAWgE,EAAK,EAAEN,CAAI,GAAKA,EAE3C,OAAOA,CACT,CAQA,SAASQ,EAAYT,EAAQa,EAAOC,GAAQ,CAC1C,IAAIP,GAAQM,EAAQ,EAChBE,GAAmB,GACnBC,GAAa,GAEb3D,GAEA4D,GAEAC,GAEAC,GACJ,KAAO,EAAEZ,IAASO,IAAQ,CACxB,IAAMM,GAAQpB,EAAOO,EAAK,EAC1B,OAAQa,GAAM,CAAC,EAAE,KAAM,CACrB,IAAK,gBACL,IAAK,cACL,IAAK,aACH,CACMA,GAAM,CAAC,IAAM,QACfL,KAEAA,KAEFI,GAAW,OACX,KACF,CACF,IAAK,kBACH,CACMC,GAAM,CAAC,IAAM,UACX/D,IAAY,CAAC8D,IAAY,CAACJ,IAAoB,CAACG,KACjDA,GAAsBX,IAExBY,GAAW,QAEb,KACF,CACF,IAAK,aACL,IAAK,gBACL,IAAK,iBACL,IAAK,iBACL,IAAK,2BAID,MAEJ,QAEIA,GAAW,MAEjB,CACA,GAAI,CAACJ,IAAoBK,GAAM,CAAC,IAAM,SAAWA,GAAM,CAAC,EAAE,OAAS,kBAAoBL,KAAqB,IAAMK,GAAM,CAAC,IAAM,SAAWA,GAAM,CAAC,EAAE,OAAS,iBAAmBA,GAAM,CAAC,EAAE,OAAS,eAAgB,CAC/M,GAAI/D,GAAU,CACZ,IAAIgE,GAAYd,GAEhB,IADAU,GAAY,OACLI,MAAa,CAClB,IAAMC,GAAYtB,EAAOqB,EAAS,EAClC,GAAIC,GAAU,CAAC,EAAE,OAAS,cAAgBA,GAAU,CAAC,EAAE,OAAS,kBAAmB,CACjF,GAAIA,GAAU,CAAC,IAAM,OAAQ,SACzBL,KACFjB,EAAOiB,EAAS,EAAE,CAAC,EAAE,KAAO,kBAC5BD,GAAa,IAEfM,GAAU,CAAC,EAAE,KAAO,aACpBL,GAAYI,EACd,SAAW,EAAAC,GAAU,CAAC,EAAE,OAAS,cAAgBA,GAAU,CAAC,EAAE,OAAS,oBAAsBA,GAAU,CAAC,EAAE,OAAS,8BAAgCA,GAAU,CAAC,EAAE,OAAS,oBAAsBA,GAAU,CAAC,EAAE,OAAS,kBAGnN,KAEJ,CACIJ,KAAwB,CAACD,IAAaC,GAAsBD,MAC9D5D,GAAS,QAAU,IAIrBA,GAAS,IAAM,OAAO,OAAO,CAAC,EAAG4D,GAAYjB,EAAOiB,EAAS,EAAE,CAAC,EAAE,MAAQG,GAAM,CAAC,EAAE,GAAG,EACtFpB,EAAO,OAAOiB,IAAaV,GAAO,EAAG,CAAC,OAAQlD,GAAU+D,GAAM,CAAC,CAAC,CAAC,EACjEb,KACAO,IACF,CAGA,GAAIM,GAAM,CAAC,EAAE,OAAS,iBAAkB,CAEtC,IAAMG,GAAO,CACX,KAAM,WACN,QAAS,GACT,MAAO,OAAO,OAAO,CAAC,EAAGH,GAAM,CAAC,EAAE,KAAK,EAEvC,IAAK,MACP,EACA/D,GAAWkE,GACXvB,EAAO,OAAOO,GAAO,EAAG,CAAC,QAASgB,GAAMH,GAAM,CAAC,CAAC,CAAC,EACjDb,KACAO,KACAI,GAAsB,OACtBC,GAAW,EACb,CACF,CACF,CACA,OAAAnB,EAAOa,CAAK,EAAE,CAAC,EAAE,QAAUG,GACpBF,EACT,CAYA,SAAStE,EAAOgF,EAAQC,EAAK,CAC3B,OAAOC,GAOP,SAASA,GAAKC,GAAO,CACnBxB,EAAM,KAAK,KAAMqB,EAAOG,EAAK,EAAGA,EAAK,EACjCF,GAAKA,EAAI,KAAK,KAAME,EAAK,CAC/B,CACF,CAKA,SAAS7E,GAAS,CAChB,KAAK,MAAM,KAAK,CACd,KAAM,WACN,SAAU,CAAC,CACb,CAAC,CACH,CAKA,SAASqD,EAAMyB,EAAMD,EAAOE,GAAc,CACzB,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEvB,SACf,KAAKD,CAAI,EAClB,KAAK,MAAM,KAAKA,CAAI,EACpB,KAAK,WAAW,KAAK,CAACD,EAAOE,IAAgB,MAAS,CAAC,EACvDD,EAAK,SAAW,CACd,MAAOhB,GAAMe,EAAM,KAAK,EAExB,IAAK,MACP,CACF,CAUA,SAAS9D,EAAO4D,EAAK,CACnB,OAAOK,EAOP,SAASA,EAAMH,GAAO,CAChBF,GAAKA,EAAI,KAAK,KAAME,EAAK,EAC7BvB,EAAK,KAAK,KAAMuB,EAAK,CACvB,CACF,CAKA,SAASvB,EAAKuB,EAAOI,EAAa,CAChC,IAAMH,GAAO,KAAK,MAAM,IAAI,EACtBF,GAAO,KAAK,WAAW,IAAI,EACjC,GAAKA,GAKMA,GAAK,CAAC,EAAE,OAASC,EAAM,OAC5BI,EACFA,EAAY,KAAK,KAAMJ,EAAOD,GAAK,CAAC,CAAC,GAErBA,GAAK,CAAC,GAAKf,IACnB,KAAK,KAAMgB,EAAOD,GAAK,CAAC,CAAC,OATnC,OAAM,IAAI,MAAM,iBAAmBC,EAAM,KAAO,MAAQK,GAAkB,CACxE,MAAOL,EAAM,MACb,IAAKA,EAAM,GACb,CAAC,EAAI,uBAAkB,EASzBC,GAAK,SAAS,IAAMhB,GAAMe,EAAM,GAAG,CACrC,CAKA,SAAStB,GAAS,CAChB,OAAO4B,GAAS,KAAK,MAAM,IAAI,CAAC,CAClC,CAUA,SAASzE,GAAqB,CAC5B,KAAK,KAAK,4BAA8B,EAC1C,CAMA,SAASF,EAAqBqE,EAAO,CACnC,GAAI,KAAK,KAAK,4BAA6B,CACzC,IAAMO,EAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACjDA,EAAS,MAAQ,OAAO,SAAS,KAAK,eAAeP,CAAK,EAAG,EAAE,EAC/D,KAAK,KAAK,4BAA8B,MAC1C,CACF,CAMA,SAASpD,GAA4B,CACnC,IAAMuB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,KAAO9B,CACd,CAMA,SAAStB,GAA4B,CACnC,IAAMsB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,KAAO9B,CACd,CAMA,SAASxB,GAAwB,CAE3B,KAAK,KAAK,iBACd,KAAK,OAAO,EACZ,KAAK,KAAK,eAAiB,GAC7B,CAMA,SAASD,GAAmB,CAC1B,IAAMyB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,EAAK,QAAQ,2BAA4B,EAAE,EACxD,KAAK,KAAK,eAAiB,MAC7B,CAMA,SAASrB,GAAqB,CAC5B,IAAMqB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,EAAK,QAAQ,eAAgB,EAAE,CAC9C,CAMA,SAASlB,EAA4B+C,EAAO,CAC1C,IAAMQ,EAAQ,KAAK,OAAO,EACpBP,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,MAAQO,EACbP,GAAK,WAAaQ,GAAoB,KAAK,eAAeT,CAAK,CAAC,EAAE,YAAY,CAChF,CAMA,SAAS9C,GAA8B,CACrC,IAAMiB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,CACf,CAMA,SAASnB,GAAoC,CAC3C,IAAMmB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM9B,CACb,CAMA,SAAShC,EAAyB6D,EAAO,CACvC,IAAMC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7C,GAAI,CAACA,EAAK,MAAO,CACf,IAAMS,GAAQ,KAAK,eAAeV,CAAK,EAAE,OACzCC,EAAK,MAAQS,EACf,CACF,CAMA,SAASzC,GAA0B,CACjC,KAAK,KAAK,6BAA+B,EAC3C,CAMA,SAASD,EAAgCgC,EAAO,CAC9C,IAAMC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ,KAAK,eAAeD,CAAK,EAAE,YAAY,CAAC,IAAM,GAAK,EAAI,CACtE,CAMA,SAASjC,GAAsB,CAC7B,KAAK,KAAK,6BAA+B,MAC3C,CAOA,SAAShD,EAAYiF,EAAO,CAG1B,IAAMW,GAFO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEvB,SAClB9B,GAAO8B,GAASA,GAAS,OAAS,CAAC,GACnC,CAAC9B,IAAQA,GAAK,OAAS,UAEzBA,GAAO+B,GAAK,EACZ/B,GAAK,SAAW,CACd,MAAOI,GAAMe,EAAM,KAAK,EAExB,IAAK,MACP,EACAW,GAAS,KAAK9B,EAAI,GAEpB,KAAK,MAAM,KAAKA,EAAI,CACtB,CAOA,SAASvC,EAAW0D,EAAO,CACzB,IAAMnB,EAAO,KAAK,MAAM,IAAI,EAC5BA,EAAK,OAAS,KAAK,eAAemB,CAAK,EACvCnB,EAAK,SAAS,IAAMI,GAAMe,EAAM,GAAG,CACrC,CAOA,SAASvC,GAAiBuC,EAAO,CAC/B,IAAMzB,EAAU,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAEhD,GAAI,KAAK,KAAK,YAAa,CACzB,IAAMM,GAAON,EAAQ,SAASA,EAAQ,SAAS,OAAS,CAAC,EACzDM,GAAK,SAAS,IAAMI,GAAMe,EAAM,GAAG,EACnC,KAAK,KAAK,YAAc,OACxB,MACF,CACI,CAAC,KAAK,KAAK,8BAAgCpF,EAAO,eAAe,SAAS2D,EAAQ,IAAI,IACxFxD,EAAY,KAAK,KAAMiF,CAAK,EAC5B1D,EAAW,KAAK,KAAM0D,CAAK,EAE/B,CAOA,SAAS7C,GAAkB,CACzB,KAAK,KAAK,YAAc,EAC1B,CAOA,SAASC,GAAiB,CACxB,IAAMe,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,CACf,CAOA,SAASd,GAAiB,CACxB,IAAMc,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,CACf,CAOA,SAASpB,IAAiB,CACxB,IAAMoB,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,CACf,CAOA,SAAST,IAAa,CACpB,IAAMuC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAK7C,GAAI,KAAK,KAAK,YAAa,CAEzB,IAAMY,EAAgB,KAAK,KAAK,eAAiB,WACjDZ,EAAK,MAAQ,YAEbA,EAAK,cAAgBY,EAErB,OAAOZ,EAAK,IACZ,OAAOA,EAAK,KACd,MAEE,OAAOA,EAAK,WAEZ,OAAOA,EAAK,MAEd,KAAK,KAAK,cAAgB,MAC5B,CAOA,SAAS3C,IAAc,CACrB,IAAM2C,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAK7C,GAAI,KAAK,KAAK,YAAa,CAEzB,IAAMY,EAAgB,KAAK,KAAK,eAAiB,WACjDZ,EAAK,MAAQ,YAEbA,EAAK,cAAgBY,EAErB,OAAOZ,EAAK,IACZ,OAAOA,EAAK,KACd,MAEE,OAAOA,EAAK,WAEZ,OAAOA,EAAK,MAEd,KAAK,KAAK,cAAgB,MAC5B,CAOA,SAASzC,GAAgBwC,EAAO,CAC9B,IAAMc,EAAS,KAAK,eAAed,CAAK,EAClCO,GAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAGjDA,GAAS,MAAQQ,GAAaD,CAAM,EAEpCP,GAAS,WAAaE,GAAoBK,CAAM,EAAE,YAAY,CAChE,CAOA,SAASvD,IAAc,CACrB,IAAMyD,EAAW,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC3C3G,EAAQ,KAAK,OAAO,EACpB4F,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAG7C,GADA,KAAK,KAAK,YAAc,GACpBA,GAAK,OAAS,OAAQ,CAExB,IAAMgB,GAAWD,EAAS,SAC1Bf,GAAK,SAAWgB,EAClB,MACEhB,GAAK,IAAM5F,CAEf,CAOA,SAASuD,GAAkC,CACzC,IAAMO,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM9B,CACb,CAOA,SAASN,IAA4B,CACnC,IAAMM,EAAO,KAAK,OAAO,EACnB8B,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,MAAQ9B,CACf,CAOA,SAASL,IAAiB,CACxB,KAAK,KAAK,YAAc,MAC1B,CAOA,SAAS/B,GAAmB,CAC1B,KAAK,KAAK,cAAgB,WAC5B,CAOA,SAAS4B,GAAsBqC,EAAO,CACpC,IAAMQ,EAAQ,KAAK,OAAO,EACpBP,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAG7CA,GAAK,MAAQO,EAEbP,GAAK,WAAaQ,GAAoB,KAAK,eAAeT,CAAK,CAAC,EAAE,YAAY,EAC9E,KAAK,KAAK,cAAgB,MAC5B,CAOA,SAASzD,GAA+ByD,EAAO,CAC7C,KAAK,KAAK,uBAAyBA,EAAM,IAC3C,CAMA,SAASxD,GAA8BwD,EAAO,CAC5C,IAAM7B,EAAO,KAAK,eAAe6B,CAAK,EAChCkB,GAAO,KAAK,KAAK,uBAEnB7G,GACA6G,IACF7G,GAAQ8G,GAAgChD,EAAM+C,KAAS,kCAAoC,GAAK,EAAE,EAClG,KAAK,KAAK,uBAAyB,QAGnC7G,GADe+G,GAA8BjD,CAAI,EAGnD,IAAMU,GAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,GAAK,OAASxE,EAChB,CAMA,SAASoC,GAAyBuD,EAAO,CACvC,IAAMnB,EAAO,KAAK,MAAM,IAAI,EAC5BA,EAAK,SAAS,IAAMI,GAAMe,EAAM,GAAG,CACrC,CAMA,SAAS3D,GAAuB2D,EAAO,CACrC1D,EAAW,KAAK,KAAM0D,CAAK,EAC3B,IAAMC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM,KAAK,eAAeD,CAAK,CACtC,CAMA,SAAS5D,GAAoB4D,EAAO,CAClC1D,EAAW,KAAK,KAAM0D,CAAK,EAC3B,IAAMC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EAC7CA,EAAK,IAAM,UAAY,KAAK,eAAeD,CAAK,CAClD,CAOA,SAAS/E,IAAa,CACpB,MAAO,CACL,KAAM,aACN,SAAU,CAAC,CACb,CACF,CAGA,SAASC,IAAW,CAClB,MAAO,CACL,KAAM,OACN,KAAM,KACN,KAAM,KACN,MAAO,EACT,CACF,CAGA,SAASE,IAAW,CAClB,MAAO,CACL,KAAM,aACN,MAAO,EACT,CACF,CAGA,SAASC,IAAa,CACpB,MAAO,CACL,KAAM,aACN,WAAY,GACZ,MAAO,KACP,MAAO,KACP,IAAK,EACP,CACF,CAGA,SAASC,IAAW,CAClB,MAAO,CACL,KAAM,WACN,SAAU,CAAC,CACb,CACF,CAGA,SAASN,IAAU,CACjB,MAAO,CACL,KAAM,UAEN,MAAO,EACP,SAAU,CAAC,CACb,CACF,CAGA,SAASO,IAAY,CACnB,MAAO,CACL,KAAM,OACR,CACF,CAGA,SAASC,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,EACT,CACF,CAGA,SAASC,IAAQ,CACf,MAAO,CACL,KAAM,QACN,MAAO,KACP,IAAK,GACL,IAAK,IACP,CACF,CAGA,SAASX,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,KACP,IAAK,GACL,SAAU,CAAC,CACb,CACF,CAMA,SAASc,GAAKoE,EAAO,CACnB,MAAO,CACL,KAAM,OACN,QAASA,EAAM,OAAS,cACxB,MAAO,KACP,OAAQA,EAAM,QACd,SAAU,CAAC,CACb,CACF,CAMA,SAAStE,GAASsE,EAAO,CACvB,MAAO,CACL,KAAM,WACN,OAAQA,EAAM,QACd,QAAS,KACT,SAAU,CAAC,CACb,CACF,CAGA,SAASlE,IAAY,CACnB,MAAO,CACL,KAAM,YACN,SAAU,CAAC,CACb,CACF,CAGA,SAASE,IAAS,CAChB,MAAO,CACL,KAAM,SACN,SAAU,CAAC,CACb,CACF,CAGA,SAAS4E,IAAO,CACd,MAAO,CACL,KAAM,OACN,MAAO,EACT,CACF,CAGA,SAAS3E,IAAgB,CACvB,MAAO,CACL,KAAM,eACR,CACF,CACF,CAUA,SAASgD,GAAMoC,EAAG,CAChB,MAAO,CACL,KAAMA,EAAE,KACR,OAAQA,EAAE,OACV,OAAQA,EAAE,MACZ,CACF,CAOA,SAASnD,GAAUoD,EAAUC,EAAY,CACvC,IAAI3C,EAAQ,GACZ,KAAO,EAAEA,EAAQ2C,EAAW,QAAQ,CAClC,IAAMlH,EAAQkH,EAAW3C,CAAK,EAC1B,MAAM,QAAQvE,CAAK,EACrB6D,GAAUoD,EAAUjH,CAAK,EAEzBmH,GAAUF,EAAUjH,CAAK,CAE7B,CACF,CAOA,SAASmH,GAAUF,EAAUE,EAAW,CAEtC,IAAIC,EACJ,IAAKA,KAAOD,EACV,GAAIrH,GAAI,KAAKqH,EAAWC,CAAG,EACzB,OAAQA,EAAK,CACX,IAAK,iBACH,CACE,IAAMC,EAAQF,EAAUC,CAAG,EACvBC,GACFJ,EAASG,CAAG,EAAE,KAAK,GAAGC,CAAK,EAE7B,KACF,CACF,IAAK,aACH,CACE,IAAMA,EAAQF,EAAUC,CAAG,EACvBC,GACFJ,EAASG,CAAG,EAAE,KAAK,GAAGC,CAAK,EAE7B,KACF,CACF,IAAK,QACL,IAAK,OACH,CACE,IAAMA,EAAQF,EAAUC,CAAG,EACvBC,GACF,OAAO,OAAOJ,EAASG,CAAG,EAAGC,CAAK,EAEpC,KACF,CAEJ,CAGN,CAGA,SAAS1C,GAAe2C,EAAMD,EAAO,CACnC,MAAIC,EACI,IAAI,MAAM,iBAAmBA,EAAK,KAAO,MAAQtB,GAAkB,CACvE,MAAOsB,EAAK,MACZ,IAAKA,EAAK,GACZ,CAAC,EAAI,0BAA4BD,EAAM,KAAO,MAAQrB,GAAkB,CACtE,MAAOqB,EAAM,MACb,IAAKA,EAAM,GACb,CAAC,EAAI,WAAW,EAEV,IAAI,MAAM,oCAAsCA,EAAM,KAAO,MAAQrB,GAAkB,CAC3F,MAAOqB,EAAM,MACb,IAAKA,EAAM,GACb,CAAC,EAAI,iBAAiB,CAE1B,CCnoCe,SAARE,GAA6BC,EAAS,CAG3C,IAAMC,EAAO,KAEbA,EAAK,OAASC,EAKd,SAASA,EAAOC,EAAK,CACnB,OAAOC,GAAaD,EAAK,CACvB,GAAGF,EAAK,KAAK,UAAU,EACvB,GAAGD,EAIH,WAAYC,EAAK,KAAK,qBAAqB,GAAK,CAAC,EACjD,gBAAiBA,EAAK,KAAK,wBAAwB,GAAK,CAAC,CAC3D,CAAC,CACH,CACF,CCOA,IAAMI,GAAM,CAAC,EAAE,eAcR,SAASC,GAAOC,EAAKC,EAAS,CACnC,IAAMC,EAAWD,GAAW,CAAC,EA8B7B,SAASE,EAAIC,KAAUC,EAAY,CAEjC,IAAIC,EAAKH,EAAI,QACPI,EAAWJ,EAAI,SAErB,GAAIC,GAASN,GAAI,KAAKM,EAAOJ,CAAG,EAAG,CAEjC,IAAMQ,EAAK,OAAOJ,EAAMJ,CAAG,CAAC,EAE5BM,EAAKR,GAAI,KAAKS,EAAUC,CAAE,EAAID,EAASC,CAAE,EAAIL,EAAI,OACnD,CAEA,GAAIG,EACF,OAAOA,EAAG,KAAK,KAAMF,EAAO,GAAGC,CAAU,CAE7C,CAEA,OAAAF,EAAI,SAAWD,EAAS,UAAY,CAAC,EACrCC,EAAI,QAAUD,EAAS,QACvBC,EAAI,QAAUD,EAAS,QAGhBC,CACT,CCjHA,IAAMM,GAAM,CAAC,EAAE,eAOR,SAASC,GAAUC,EAAMC,EAAW,CACzC,IAAIC,EAAQ,GAERC,EAGJ,GAAIF,EAAU,WACZ,KAAO,EAAEC,EAAQD,EAAU,WAAW,QACpCF,GAAUC,EAAMC,EAAU,WAAWC,CAAK,CAAC,EAI/C,IAAKC,KAAOF,EACV,GAAIH,GAAI,KAAKG,EAAWE,CAAG,EACzB,OAAQA,EAAK,CACX,IAAK,aAEH,MAIF,IAAK,SAAU,CACbC,GAAKJ,EAAKG,CAAG,EAAGF,EAAUE,CAAG,CAAC,EAC9B,KACF,CAEA,IAAK,OAAQ,CACXC,GAAKJ,EAAKG,CAAG,EAAGF,EAAUE,CAAG,CAAC,EAC9B,KACF,CAEA,IAAK,WAAY,CACfE,GAAIL,EAAKG,CAAG,EAAGF,EAAUE,CAAG,CAAC,EAC7B,KACF,CAEA,QAEEH,EAAK,QAAQG,CAAG,EAAIF,EAAUE,CAAG,CAErC,CAIJ,OAAOH,CACT,CAOA,SAASI,GAAKE,EAAMC,EAAO,CACrBA,GACFD,EAAK,KAAK,GAAGC,CAAK,CAEtB,CAOA,SAASF,GAAIC,EAAMC,EAAO,CACpBA,GACF,OAAO,OAAOD,EAAMC,CAAK,CAE7B,CClEO,SAASC,GAAWC,EAAMC,EAAGC,EAAOC,EAAM,CAC/C,IAAMC,EAAOF,EAAM,MAAM,YAAY,EAC/BG,EAAUH,EAAM,cAAcC,CAAI,EACxCE,EAAQ,KAAK,IAAI,EACjBA,EAAQ,MAAM,CAAC,EACf,IAAMC,EAAQJ,EAAM,YAClBA,EAAM,cAAcF,EAAMK,EAAQ,QAAQ,CAAC,EAC3CE,EACF,EACA,OAAAH,EAAK,EACEE,CACT,CAGA,SAASC,GAAIC,EAAMP,EAAGQ,EAAO,CAC3B,MAAO,KAAOA,EAAQ,GAAK,KAAOD,CACpC,CCnBO,SAASE,GAAeC,EAAOC,EAAS,CAC7C,OACEC,GAAYF,EAAOC,EAAQ,YAAa,EAAI,GAC5C,CAACC,GAAYF,EAAOC,EAAQ,eAAgB,EAAK,CAErD,CAQA,SAASC,GAAYF,EAAOG,EAAMC,EAAM,CAKtC,GAJI,OAAOD,GAAS,WAClBA,EAAO,CAACA,CAAI,GAGV,CAACA,GAAQA,EAAK,SAAW,EAC3B,OAAOC,EAGT,IAAIC,EAAQ,GAEZ,KAAO,EAAEA,EAAQF,EAAK,QACpB,GAAIH,EAAM,SAASG,EAAKE,CAAK,CAAC,EAC5B,MAAO,GAIX,MAAO,EACT,CC1BO,SAASC,GAAUC,EAAGC,EAAIC,EAAOC,EAAM,CAC5C,IAAIC,EAAQ,GAEZ,KAAO,EAAEA,EAAQF,EAAM,OAAO,QAG5B,GACEA,EAAM,OAAOE,CAAK,EAAE,YAAc;AAAA,GAClCC,GAAeH,EAAM,MAAOA,EAAM,OAAOE,CAAK,CAAC,EAE/C,MAAO,QAAQ,KAAKD,EAAK,MAAM,EAAI,GAAK,IAI5C,MAAO;AAAA,CACT,CCnBO,SAASG,GAAcC,EAAOC,EAAW,CAC9C,IAAMC,EAAS,OAAOF,CAAK,EACvBG,EAAQD,EAAO,QAAQD,CAAS,EAChCG,EAAWD,EACXE,EAAQ,EACRC,EAAM,EAEV,GAAI,OAAOL,GAAc,SACvB,MAAM,IAAI,UAAU,oBAAoB,EAG1C,KAAOE,IAAU,IACXA,IAAUC,EACR,EAAEC,EAAQC,IACZA,EAAMD,GAGRA,EAAQ,EAGVD,EAAWD,EAAQF,EAAU,OAC7BE,EAAQD,EAAO,QAAQD,EAAWG,CAAQ,EAG5C,OAAOE,CACT,CCzBO,SAASC,GAAqBC,EAAMC,EAAO,CAChD,MAAO,GACLA,EAAM,QAAQ,SAAW,IACvBD,EAAK,OAEL,CAACA,EAAK,MAEN,WAAW,KAAKA,EAAK,KAAK,GAE1B,CAAC,0CAA0C,KAAKA,EAAK,KAAK,EAEhE,CCbO,SAASE,GAAWC,EAAO,CAChC,IAAMC,EAASD,EAAM,QAAQ,OAAS,IAEtC,GAAIC,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,+BACEA,EACA,gDACJ,EAGF,OAAOA,CACT,CCJO,SAASC,GAAKC,EAAMC,EAAGC,EAAOC,EAAM,CACzC,IAAMC,EAASC,GAAWH,CAAK,EACzBI,EAAMN,EAAK,OAAS,GACpBO,EAASH,IAAW,IAAM,cAAgB,QAEhD,GAAII,GAAqBR,EAAME,CAAK,EAAG,CACrC,IAAMO,EAAOP,EAAM,MAAM,cAAc,EACjCQ,EAAQR,EAAM,YAAYI,EAAKK,EAAG,EACxC,OAAAF,EAAK,EACEC,CACT,CAEA,IAAME,EAAUV,EAAM,cAAcC,CAAI,EAClCU,EAAWT,EAAO,OAAO,KAAK,IAAIU,GAAcR,EAAKF,CAAM,EAAI,EAAG,CAAC,CAAC,EACpEK,EAAOP,EAAM,MAAM,YAAY,EACjCQ,EAAQE,EAAQ,KAAKC,CAAQ,EAEjC,GAAIb,EAAK,KAAM,CACb,IAAMe,EAAUb,EAAM,MAAM,iBAAiBK,CAAM,EAAE,EACrDG,GAASE,EAAQ,KACfV,EAAM,KAAKF,EAAK,KAAM,CACpB,OAAQU,EACR,MAAO,IACP,OAAQ,CAAC,GAAG,EACZ,GAAGE,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAG,EAAQ,CACV,CAEA,GAAIf,EAAK,MAAQA,EAAK,KAAM,CAC1B,IAAMe,EAAUb,EAAM,MAAM,iBAAiBK,CAAM,EAAE,EACrDG,GAASE,EAAQ,KAAK,GAAG,EACzBF,GAASE,EAAQ,KACfV,EAAM,KAAKF,EAAK,KAAM,CACpB,OAAQU,EACR,MAAO;AAAA,EACP,OAAQ,CAAC,GAAG,EACZ,GAAGE,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAG,EAAQ,CACV,CAEA,OAAAL,GAASE,EAAQ,KAAK;AAAA,CAAI,EAEtBN,IACFI,GAASE,EAAQ,KAAKN,EAAM;AAAA,CAAI,GAGlCI,GAASE,EAAQ,KAAKC,CAAQ,EAC9BJ,EAAK,EACEC,CACT,CAGA,SAASC,GAAIK,EAAMf,EAAGgB,EAAO,CAC3B,OAAQA,EAAQ,GAAK,QAAUD,CACjC,CClEO,SAASE,GAAWC,EAAO,CAChC,IAAMC,EAASD,EAAM,QAAQ,OAAS,IAEtC,GAAIC,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,gCACEA,EACA,8CACJ,EAGF,OAAOA,CACT,CCNO,SAASC,GAAWC,EAAMC,EAAGC,EAAOC,EAAM,CAC/C,IAAMC,EAAQC,GAAWH,CAAK,EACxBI,EAASF,IAAU,IAAM,QAAU,aACnCG,EAAOL,EAAM,MAAM,YAAY,EACjCM,EAAUN,EAAM,MAAM,OAAO,EAC3BO,EAAUP,EAAM,cAAcC,CAAI,EACpCO,EAAQD,EAAQ,KAAK,GAAG,EAC5B,OAAAC,GAASD,EAAQ,KACfP,EAAM,KAAKA,EAAM,cAAcF,CAAI,EAAG,CACpC,OAAQU,EACR,MAAO,IACP,GAAGD,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAC,GAASD,EAAQ,KAAK,KAAK,EAE3BD,EAAQ,EAIN,CAACR,EAAK,KAEN,eAAe,KAAKA,EAAK,GAAG,GAE5BQ,EAAUN,EAAM,MAAM,oBAAoB,EAC1CQ,GAASD,EAAQ,KAAK,GAAG,EACzBC,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,IAAK,CAAC,OAAQU,EAAO,MAAO,IAAK,GAAGD,EAAQ,QAAQ,CAAC,CAAC,CACxE,EACAC,GAASD,EAAQ,KAAK,GAAG,IAGzBD,EAAUN,EAAM,MAAM,gBAAgB,EACtCQ,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,IAAK,CACnB,OAAQU,EACR,MAAOV,EAAK,MAAQ,IAAM;AAAA,EAC1B,GAAGS,EAAQ,QAAQ,CACrB,CAAC,CACH,GAGFD,EAAQ,EAEJR,EAAK,QACPQ,EAAUN,EAAM,MAAM,QAAQI,CAAM,EAAE,EACtCI,GAASD,EAAQ,KAAK,IAAML,CAAK,EACjCM,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,MAAO,CACrB,OAAQU,EACR,MAAON,EACP,GAAGK,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAC,GAASD,EAAQ,KAAKL,CAAK,EAC3BI,EAAQ,GAGVD,EAAK,EAEEG,CACT,CCnEO,SAASC,GAAcC,EAAO,CACnC,IAAMC,EAASD,EAAM,QAAQ,UAAY,IAEzC,GAAIC,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,mCACEA,EACA,gDACJ,EAGF,OAAOA,CACT,CCZO,SAASC,GAAyBC,EAAM,CAC7C,MAAO,MAAQA,EAAK,SAAS,EAAE,EAAE,YAAY,EAAI,GACnD,CC8BO,SAASC,GAAWC,EAASC,EAAQC,EAAQ,CAClD,IAAMC,EAAcC,GAAkBJ,CAAO,EACvCK,EAAaD,GAAkBH,CAAM,EAG3C,OAAIE,IAAgB,OACXE,IAAe,OAIlBH,IAAW,IACT,CAAC,OAAQ,GAAM,QAAS,EAAI,EAC5B,CAAC,OAAQ,GAAO,QAAS,EAAK,EAChCG,IAAe,EAEb,CAAC,OAAQ,GAAM,QAAS,EAAI,EAE5B,CAAC,OAAQ,GAAO,QAAS,EAAI,EAIjCF,IAAgB,EACXE,IAAe,OAElB,CAAC,OAAQ,GAAO,QAAS,EAAK,EAC9BA,IAAe,EAEb,CAAC,OAAQ,GAAM,QAAS,EAAI,EAE5B,CAAC,OAAQ,GAAO,QAAS,EAAK,EAI/BA,IAAe,OAElB,CAAC,OAAQ,GAAO,QAAS,EAAK,EAC9BA,IAAe,EAEb,CAAC,OAAQ,GAAM,QAAS,EAAK,EAE7B,CAAC,OAAQ,GAAO,QAAS,EAAK,CACtC,CCxEAC,GAAS,KAAOC,GAST,SAASD,GAASE,EAAMC,EAAGC,EAAOC,EAAM,CAC7C,IAAMC,EAASC,GAAcH,CAAK,EAC5BI,EAAOJ,EAAM,MAAM,UAAU,EAC7BK,EAAUL,EAAM,cAAcC,CAAI,EAClCK,EAASD,EAAQ,KAAKH,CAAM,EAE9BK,EAAUF,EAAQ,KACpBL,EAAM,kBAAkBF,EAAM,CAC5B,MAAOI,EACP,OAAAI,EACA,GAAGD,EAAQ,QAAQ,CACrB,CAAC,CACH,EACMG,EAAcD,EAAQ,WAAW,CAAC,EAClCE,EAAOC,GACXT,EAAK,OAAO,WAAWA,EAAK,OAAO,OAAS,CAAC,EAC7CO,EACAN,CACF,EAEIO,EAAK,SACPF,EAAUI,GAAyBH,CAAW,EAAID,EAAQ,MAAM,CAAC,GAGnE,IAAMK,EAAcL,EAAQ,WAAWA,EAAQ,OAAS,CAAC,EACnDM,EAAQH,GAAWT,EAAK,MAAM,WAAW,CAAC,EAAGW,EAAaV,CAAM,EAElEW,EAAM,SACRN,EAAUA,EAAQ,MAAM,EAAG,EAAE,EAAII,GAAyBC,CAAW,GAGvE,IAAME,EAAQT,EAAQ,KAAKH,CAAM,EAEjC,OAAAE,EAAK,EAELJ,EAAM,+BAAiC,CACrC,MAAOa,EAAM,QACb,OAAQJ,EAAK,OACf,EACOH,EAASC,EAAUO,CAC5B,CAQA,SAASjB,GAAaE,EAAGgB,EAAIf,EAAO,CAClC,OAAOA,EAAM,QAAQ,UAAY,GACnC,CCwEO,IAAMgB,IAgBT,SAAUC,EAAM,CACd,GAAIA,GAAS,KACX,OAAOC,GAGT,GAAI,OAAOD,GAAS,WAClB,OAAOE,GAAYF,CAAI,EAGzB,GAAI,OAAOA,GAAS,SAClB,OAAO,MAAM,QAAQA,CAAI,EACrBG,GAAWH,CAAI,EAGfI,GAAwCJ,CAAK,EAGnD,GAAI,OAAOA,GAAS,SAClB,OAAOK,GAAYL,CAAI,EAGzB,MAAM,IAAI,MAAM,8CAA8C,CAChE,GAOJ,SAASG,GAAWG,EAAO,CAEzB,IAAMC,EAAS,CAAC,EACZC,EAAQ,GAEZ,KAAO,EAAEA,EAAQF,EAAM,QACrBC,EAAOC,CAAK,EAAIT,GAAQO,EAAME,CAAK,CAAC,EAGtC,OAAON,GAAYO,CAAG,EAMtB,SAASA,KAAOC,EAAY,CAC1B,IAAIF,EAAQ,GAEZ,KAAO,EAAEA,EAAQD,EAAO,QACtB,GAAIA,EAAOC,CAAK,EAAE,MAAM,KAAME,CAAU,EAAG,MAAO,GAGpD,MAAO,EACT,CACF,CAQA,SAASN,GAAkBO,EAAO,CAChC,IAAMC,EAAwDD,EAE9D,OAAOT,GAAYW,CAAG,EAMtB,SAASA,EAAIC,EAAM,CACjB,IAAMC,EACoBD,EAItBE,EAEJ,IAAKA,KAAOL,EACV,GAAII,EAAaC,CAAG,IAAMJ,EAAcI,CAAG,EAAG,MAAO,GAGvD,MAAO,EACT,CACF,CAQA,SAASX,GAAYM,EAAO,CAC1B,OAAOT,GAAYe,CAAI,EAKvB,SAASA,EAAKH,EAAM,CAClB,OAAOA,GAAQA,EAAK,OAASH,CAC/B,CACF,CAQA,SAAST,GAAYgB,EAAc,CACjC,OAAOP,EAMP,SAASA,EAAMQ,EAAOX,EAAOY,EAAQ,CACnC,MAAO,GACLC,GAAeF,CAAK,GAClBD,EAAa,KACX,KACAC,EACA,OAAOX,GAAU,SAAWA,EAAQ,OACpCY,GAAU,MACZ,EAEN,CACF,CAEA,SAASnB,IAAK,CACZ,MAAO,EACT,CAMA,SAASoB,GAAeF,EAAO,CAC7B,OAAOA,IAAU,MAAQ,OAAOA,GAAU,UAAY,SAAUA,CAClE,CCvEA,IAAMG,GAAQ,CAAC,EAKFC,GAAW,GAKXC,GAAO,GAKPC,GAAO,OAiDb,SAASC,GAAaC,EAAMC,EAAMC,EAASC,EAAS,CAEzD,IAAIC,EAEA,OAAOH,GAAS,YAAc,OAAOC,GAAY,YACnDC,EAAUD,EAEVA,EAAUD,GAGVG,EAAQH,EAGV,IAAMI,EAAKC,GAAQF,CAAK,EAClBG,EAAOJ,EAAU,GAAK,EAE5BK,EAAQR,EAAM,OAAW,CAAC,CAAC,EAAE,EAO7B,SAASQ,EAAQC,EAAMC,EAAOC,EAAS,CACrC,IAAMC,EACJH,GAAQ,OAAOA,GAAS,SAAWA,EAAO,CAAC,EAG7C,GAAI,OAAOG,EAAM,MAAS,SAAU,CAClC,IAAMC,EAEJ,OAAOD,EAAM,SAAY,SACrBA,EAAM,QAEN,OAAOA,EAAM,MAAS,SACpBA,EAAM,KACN,OAER,OAAO,eAAeE,EAAO,OAAQ,CACnC,MACE,UAAiBL,EAAK,MAAQI,EAAO,IAAMA,EAAO,IAAM,KAAO,GACnE,CAAC,CACH,CAEA,OAAOC,EAEP,SAASA,GAAQ,CAEf,IAAIC,EAASpB,GAETqB,EAEAC,EAEAC,EAEJ,IAAI,CAACjB,GAAQI,EAAGI,EAAMC,EAAOC,EAAQA,EAAQ,OAAS,CAAC,GAAK,MAAS,KAEnEI,EAASI,GAASjB,EAAQO,EAAME,CAAO,CAAC,EAEpCI,EAAO,CAAC,IAAMlB,IAChB,OAAOkB,EAIX,GAAI,aAAcN,GAAQA,EAAK,SAAU,CACvC,IAAMW,EAA2CX,EAEjD,GAAIW,EAAa,UAAYL,EAAO,CAAC,IAAMjB,GAIzC,IAHAmB,GAAUd,EAAUiB,EAAa,SAAS,OAAS,IAAMb,EACzDW,EAAeP,EAAQ,OAAOS,CAAY,EAEnCH,EAAS,IAAMA,EAASG,EAAa,SAAS,QAAQ,CAC3D,IAAMC,EAAQD,EAAa,SAASH,CAAM,EAI1C,GAFAD,EAAYR,EAAQa,EAAOJ,EAAQC,CAAY,EAAE,EAE7CF,EAAU,CAAC,IAAMnB,GACnB,OAAOmB,EAGTC,EACE,OAAOD,EAAU,CAAC,GAAM,SAAWA,EAAU,CAAC,EAAIC,EAASV,CAC/D,CAEJ,CAEA,OAAOQ,CACT,CACF,CACF,CAUA,SAASI,GAASP,EAAO,CACvB,OAAI,MAAM,QAAQA,CAAK,EACdA,EAGL,OAAOA,GAAU,SACZ,CAAChB,GAAUgB,CAAK,EAGlBA,GAAU,KAA8BjB,GAAQ,CAACiB,CAAK,CAC/D,CCzHO,SAASU,GAAMC,EAAMC,EAAeC,EAAkBC,EAAc,CAEzE,IAAIC,EAEAC,EAEAC,EAGF,OAAOL,GAAkB,YACzB,OAAOC,GAAqB,YAE5BG,EAAO,OACPC,EAAUL,EACVG,EAAUF,IAGVG,EAAOJ,EAEPK,EAAUJ,EACVE,EAAUD,GAGZI,GAAaP,EAAMK,EAAMG,EAAUJ,CAAO,EAM1C,SAASI,EAASC,EAAMC,EAAS,CAC/B,IAAMC,EAASD,EAAQA,EAAQ,OAAS,CAAC,EACnCE,EAAQD,EAASA,EAAO,SAAS,QAAQF,CAAI,EAAI,OACvD,OAAOH,EAAQG,EAAMG,EAAOD,CAAM,CACpC,CACF,CC1SO,SAASE,GAAsBC,EAAMC,EAAO,CACjD,IAAIC,EAAmB,GAIvB,OAAAC,GAAMH,EAAM,SAAUA,EAAM,CAC1B,GACG,UAAWA,GAAQ,WAAW,KAAKA,EAAK,KAAK,GAC9CA,EAAK,OAAS,QAEd,OAAAE,EAAmB,GACZE,EAEX,CAAC,EAEM,IACJ,CAACJ,EAAK,OAASA,EAAK,MAAQ,IAC3BK,GAASL,CAAI,IACZC,EAAM,QAAQ,QAAUC,GAE/B,CClBO,SAASI,GAAQC,EAAMC,EAAGC,EAAOC,EAAM,CAC5C,IAAMC,EAAO,KAAK,IAAI,KAAK,IAAI,EAAGJ,EAAK,OAAS,CAAC,EAAG,CAAC,EAC/CK,EAAUH,EAAM,cAAcC,CAAI,EAExC,GAAIG,GAAsBN,EAAME,CAAK,EAAG,CACtC,IAAMK,EAAOL,EAAM,MAAM,eAAe,EAClCM,EAAUN,EAAM,MAAM,UAAU,EAChCO,EAAQP,EAAM,kBAAkBF,EAAM,CAC1C,GAAGK,EAAQ,QAAQ,EACnB,OAAQ;AAAA,EACR,MAAO;AAAA,CACT,CAAC,EACD,OAAAG,EAAQ,EACRD,EAAK,EAGHE,EACA;AAAA,GACCL,IAAS,EAAI,IAAM,KAAK,OAEvBK,EAAM,QAGH,KAAK,IAAIA,EAAM,YAAY,IAAI,EAAGA,EAAM,YAAY;AAAA,CAAI,CAAC,EAAI,EAClE,CAEJ,CAEA,IAAMC,EAAW,IAAI,OAAON,CAAI,EAC1BG,EAAOL,EAAM,MAAM,YAAY,EAC/BM,EAAUN,EAAM,MAAM,UAAU,EAMtCG,EAAQ,KAAKK,EAAW,GAAG,EAE3B,IAAID,EAAQP,EAAM,kBAAkBF,EAAM,CACxC,OAAQ,KACR,MAAO;AAAA,EACP,GAAGK,EAAQ,QAAQ,CACrB,CAAC,EAED,MAAI,SAAS,KAAKI,CAAK,IAErBA,EAAQE,GAAyBF,EAAM,WAAW,CAAC,CAAC,EAAIA,EAAM,MAAM,CAAC,GAGvEA,EAAQA,EAAQC,EAAW,IAAMD,EAAQC,EAErCR,EAAM,QAAQ,WAChBO,GAAS,IAAMC,GAGjBF,EAAQ,EACRD,EAAK,EAEEE,CACT,CCtEAG,GAAK,KAAOC,GAML,SAASD,GAAKE,EAAM,CACzB,OAAOA,EAAK,OAAS,EACvB,CAKA,SAASD,IAAW,CAClB,MAAO,GACT,CCZAE,GAAM,KAAOC,GASN,SAASD,GAAME,EAAMC,EAAGC,EAAOC,EAAM,CAC1C,IAAMC,EAAQC,GAAWH,CAAK,EACxBI,EAASF,IAAU,IAAM,QAAU,aACnCG,EAAOL,EAAM,MAAM,OAAO,EAC5BM,EAAUN,EAAM,MAAM,OAAO,EAC3BO,EAAUP,EAAM,cAAcC,CAAI,EACpCO,EAAQD,EAAQ,KAAK,IAAI,EAC7B,OAAAC,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,IAAK,CAAC,OAAQU,EAAO,MAAO,IAAK,GAAGD,EAAQ,QAAQ,CAAC,CAAC,CACxE,EACAC,GAASD,EAAQ,KAAK,IAAI,EAE1BD,EAAQ,EAIL,CAACR,EAAK,KAAOA,EAAK,OAEnB,eAAe,KAAKA,EAAK,GAAG,GAE5BQ,EAAUN,EAAM,MAAM,oBAAoB,EAC1CQ,GAASD,EAAQ,KAAK,GAAG,EACzBC,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,IAAK,CAAC,OAAQU,EAAO,MAAO,IAAK,GAAGD,EAAQ,QAAQ,CAAC,CAAC,CACxE,EACAC,GAASD,EAAQ,KAAK,GAAG,IAGzBD,EAAUN,EAAM,MAAM,gBAAgB,EACtCQ,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,IAAK,CACnB,OAAQU,EACR,MAAOV,EAAK,MAAQ,IAAM,IAC1B,GAAGS,EAAQ,QAAQ,CACrB,CAAC,CACH,GAGFD,EAAQ,EAEJR,EAAK,QACPQ,EAAUN,EAAM,MAAM,QAAQI,CAAM,EAAE,EACtCI,GAASD,EAAQ,KAAK,IAAML,CAAK,EACjCM,GAASD,EAAQ,KACfP,EAAM,KAAKF,EAAK,MAAO,CACrB,OAAQU,EACR,MAAON,EACP,GAAGK,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAC,GAASD,EAAQ,KAAKL,CAAK,EAC3BI,EAAQ,GAGVE,GAASD,EAAQ,KAAK,GAAG,EACzBF,EAAK,EAEEG,CACT,CAKA,SAASX,IAAY,CACnB,MAAO,GACT,CC5EAY,GAAe,KAAOC,GASf,SAASD,GAAeE,EAAMC,EAAGC,EAAOC,EAAM,CACnD,IAAMC,EAAOJ,EAAK,cACZK,EAAOH,EAAM,MAAM,gBAAgB,EACrCI,EAAUJ,EAAM,MAAM,OAAO,EAC3BK,EAAUL,EAAM,cAAcC,CAAI,EACpCK,EAAQD,EAAQ,KAAK,IAAI,EACvBE,EAAMP,EAAM,KAAKF,EAAK,IAAK,CAC/B,OAAQQ,EACR,MAAO,IACP,GAAGD,EAAQ,QAAQ,CACrB,CAAC,EACDC,GAASD,EAAQ,KAAKE,EAAM,IAAI,EAEhCH,EAAQ,EAER,IAAMI,EAAQR,EAAM,MACpBA,EAAM,MAAQ,CAAC,EACfI,EAAUJ,EAAM,MAAM,WAAW,EAKjC,IAAMS,EAAYT,EAAM,KAAKA,EAAM,cAAcF,CAAI,EAAG,CACtD,OAAQQ,EACR,MAAO,IACP,GAAGD,EAAQ,QAAQ,CACrB,CAAC,EACD,OAAAD,EAAQ,EACRJ,EAAM,MAAQQ,EACdL,EAAK,EAEDD,IAAS,QAAU,CAACK,GAAOA,IAAQE,EACrCH,GAASD,EAAQ,KAAKI,EAAY,GAAG,EAC5BP,IAAS,WAElBI,EAAQA,EAAM,MAAM,EAAG,EAAE,EAEzBA,GAASD,EAAQ,KAAK,GAAG,EAGpBC,CACT,CAKA,SAAST,IAAqB,CAC5B,MAAO,GACT,CCzDAa,GAAW,KAAOC,GAQX,SAASD,GAAWE,EAAMC,EAAGC,EAAO,CACzC,IAAIC,EAAQH,EAAK,OAAS,GACtBI,EAAW,IACXC,EAAQ,GAKZ,KAAO,IAAI,OAAO,WAAaD,EAAW,UAAU,EAAE,KAAKD,CAAK,GAC9DC,GAAY,IAmBd,IAbE,WAAW,KAAKD,CAAK,IACnB,WAAW,KAAKA,CAAK,GAAK,WAAW,KAAKA,CAAK,GAAM,QAAQ,KAAKA,CAAK,KAEzEA,EAAQ,IAAMA,EAAQ,KAUjB,EAAEE,EAAQH,EAAM,OAAO,QAAQ,CACpC,IAAMI,EAAUJ,EAAM,OAAOG,CAAK,EAC5BE,EAAaL,EAAM,eAAeI,CAAO,EAE3CE,EAKJ,GAAKF,EAAQ,QAEb,KAAQE,EAAQD,EAAW,KAAKJ,CAAK,GAAI,CACvC,IAAIM,EAAWD,EAAM,MAInBL,EAAM,WAAWM,CAAQ,IAAM,IAC/BN,EAAM,WAAWM,EAAW,CAAC,IAAM,IAEnCA,IAGFN,EAAQA,EAAM,MAAM,EAAGM,CAAQ,EAAI,IAAMN,EAAM,MAAMK,EAAM,MAAQ,CAAC,CACtE,CACF,CAEA,OAAOJ,EAAWD,EAAQC,CAC5B,CAKA,SAASL,IAAiB,CACxB,MAAO,GACT,CC/DO,SAASW,GAAqBC,EAAMC,EAAO,CAChD,IAAMC,EAAMC,GAASH,CAAI,EAEzB,MAAO,GACL,CAACC,EAAM,QAAQ,cAEbD,EAAK,KAEL,CAACA,EAAK,OAENA,EAAK,UACLA,EAAK,SAAS,SAAW,GACzBA,EAAK,SAAS,CAAC,EAAE,OAAS,SAEzBE,IAAQF,EAAK,KAAO,UAAYE,IAAQF,EAAK,MAE9C,oBAAoB,KAAKA,EAAK,GAAG,GAGjC,CAAC,iBAAiB,KAAKA,EAAK,GAAG,EAErC,CCxBAI,GAAK,KAAOC,GASL,SAASD,GAAKE,EAAMC,EAAGC,EAAOC,EAAM,CACzC,IAAMC,EAAQC,GAAWH,CAAK,EACxBI,EAASF,IAAU,IAAM,QAAU,aACnCG,EAAUL,EAAM,cAAcC,CAAI,EAEpCK,EAEAC,EAEJ,GAAIC,GAAqBV,EAAME,CAAK,EAAG,CAErC,IAAMS,EAAQT,EAAM,MACpBA,EAAM,MAAQ,CAAC,EACfM,EAAON,EAAM,MAAM,UAAU,EAC7B,IAAIU,EAAQL,EAAQ,KAAK,GAAG,EAC5B,OAAAK,GAASL,EAAQ,KACfL,EAAM,kBAAkBF,EAAM,CAC5B,OAAQY,EACR,MAAO,IACP,GAAGL,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAK,GAASL,EAAQ,KAAK,GAAG,EACzBC,EAAK,EACLN,EAAM,MAAQS,EACPC,CACT,CAEAJ,EAAON,EAAM,MAAM,MAAM,EACzBO,EAAUP,EAAM,MAAM,OAAO,EAC7B,IAAIU,EAAQL,EAAQ,KAAK,GAAG,EAC5B,OAAAK,GAASL,EAAQ,KACfL,EAAM,kBAAkBF,EAAM,CAC5B,OAAQY,EACR,MAAO,KACP,GAAGL,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAK,GAASL,EAAQ,KAAK,IAAI,EAC1BE,EAAQ,EAIL,CAACT,EAAK,KAAOA,EAAK,OAEnB,eAAe,KAAKA,EAAK,GAAG,GAE5BS,EAAUP,EAAM,MAAM,oBAAoB,EAC1CU,GAASL,EAAQ,KAAK,GAAG,EACzBK,GAASL,EAAQ,KACfL,EAAM,KAAKF,EAAK,IAAK,CAAC,OAAQY,EAAO,MAAO,IAAK,GAAGL,EAAQ,QAAQ,CAAC,CAAC,CACxE,EACAK,GAASL,EAAQ,KAAK,GAAG,IAGzBE,EAAUP,EAAM,MAAM,gBAAgB,EACtCU,GAASL,EAAQ,KACfL,EAAM,KAAKF,EAAK,IAAK,CACnB,OAAQY,EACR,MAAOZ,EAAK,MAAQ,IAAM,IAC1B,GAAGO,EAAQ,QAAQ,CACrB,CAAC,CACH,GAGFE,EAAQ,EAEJT,EAAK,QACPS,EAAUP,EAAM,MAAM,QAAQI,CAAM,EAAE,EACtCM,GAASL,EAAQ,KAAK,IAAMH,CAAK,EACjCQ,GAASL,EAAQ,KACfL,EAAM,KAAKF,EAAK,MAAO,CACrB,OAAQY,EACR,MAAOR,EACP,GAAGG,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAK,GAASL,EAAQ,KAAKH,CAAK,EAC3BK,EAAQ,GAGVG,GAASL,EAAQ,KAAK,GAAG,EAEzBC,EAAK,EACEI,CACT,CAQA,SAASb,GAASC,EAAMC,EAAGC,EAAO,CAChC,OAAOQ,GAAqBV,EAAME,CAAK,EAAI,IAAM,GACnD,CC5GAW,GAAc,KAAOC,GASd,SAASD,GAAcE,EAAMC,EAAGC,EAAOC,EAAM,CAClD,IAAMC,EAAOJ,EAAK,cACZK,EAAOH,EAAM,MAAM,eAAe,EACpCI,EAAUJ,EAAM,MAAM,OAAO,EAC3BK,EAAUL,EAAM,cAAcC,CAAI,EACpCK,EAAQD,EAAQ,KAAK,GAAG,EACtBE,EAAOP,EAAM,kBAAkBF,EAAM,CACzC,OAAQQ,EACR,MAAO,IACP,GAAGD,EAAQ,QAAQ,CACrB,CAAC,EACDC,GAASD,EAAQ,KAAKE,EAAO,IAAI,EAEjCH,EAAQ,EAER,IAAMI,EAAQR,EAAM,MACpBA,EAAM,MAAQ,CAAC,EACfI,EAAUJ,EAAM,MAAM,WAAW,EAKjC,IAAMS,EAAYT,EAAM,KAAKA,EAAM,cAAcF,CAAI,EAAG,CACtD,OAAQQ,EACR,MAAO,IACP,GAAGD,EAAQ,QAAQ,CACrB,CAAC,EACD,OAAAD,EAAQ,EACRJ,EAAM,MAAQQ,EACdL,EAAK,EAEDD,IAAS,QAAU,CAACK,GAAQA,IAASE,EACvCH,GAASD,EAAQ,KAAKI,EAAY,GAAG,EAC5BP,IAAS,WAElBI,EAAQA,EAAM,MAAM,EAAG,EAAE,EAEzBA,GAASD,EAAQ,KAAK,GAAG,EAGpBC,CACT,CAKA,SAAST,IAAoB,CAC3B,MAAO,GACT,CCtDO,SAASa,GAAYC,EAAO,CACjC,IAAMC,EAASD,EAAM,QAAQ,QAAU,IAEvC,GAAIC,IAAW,KAAOA,IAAW,KAAOA,IAAW,IACjD,MAAM,IAAI,MACR,gCACEA,EACA,mDACJ,EAGF,OAAOA,CACT,CCVO,SAASC,GAAiBC,EAAO,CACtC,IAAMC,EAASC,GAAYF,CAAK,EAC1BG,EAAcH,EAAM,QAAQ,YAElC,GAAI,CAACG,EACH,OAAOF,IAAW,IAAM,IAAM,IAGhC,GAAIE,IAAgB,KAAOA,IAAgB,KAAOA,IAAgB,IAChE,MAAM,IAAI,MACR,gCACEA,EACA,wDACJ,EAGF,GAAIA,IAAgBF,EAClB,MAAM,IAAI,MACR,uBACEA,EACA,0BACAE,EACA,oBACJ,EAGF,OAAOA,CACT,CC7BO,SAASC,GAAmBC,EAAO,CACxC,IAAMC,EAASD,EAAM,QAAQ,eAAiB,IAE9C,GAAIC,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,gCACEA,EACA,oDACJ,EAGF,OAAOA,CACT,CCZO,SAASC,GAAUC,EAAO,CAC/B,IAAMC,EAASD,EAAM,QAAQ,MAAQ,IAErC,GAAIC,IAAW,KAAOA,IAAW,KAAOA,IAAW,IACjD,MAAM,IAAI,MACR,gCACEA,EACA,iDACJ,EAGF,OAAOA,CACT,CCHO,SAASC,GAAKC,EAAMC,EAAQC,EAAOC,EAAM,CAC9C,IAAMC,EAAOF,EAAM,MAAM,MAAM,EACzBG,EAAgBH,EAAM,cAExBI,EAASN,EAAK,QAAUO,GAAmBL,CAAK,EAAIM,GAAYN,CAAK,EAEnEO,EAAcT,EAAK,QACrBM,IAAW,IACT,IACA,IACFI,GAAiBR,CAAK,EACtBS,EACFV,GAAUC,EAAM,eAAiBI,IAAWJ,EAAM,eAAiB,GAErE,GAAI,CAACF,EAAK,QAAS,CACjB,IAAMY,EAAgBZ,EAAK,SAAWA,EAAK,SAAS,CAAC,EAAI,OAqCzD,IAzBGM,IAAW,KAAOA,IAAW,MAE9BM,IACC,CAACA,EAAc,UAAY,CAACA,EAAc,SAAS,CAAC,IAErDV,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,QACxCA,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,YACxCA,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,QACxCA,EAAM,MAAMA,EAAM,MAAM,OAAS,CAAC,IAAM,YAExCA,EAAM,WAAWA,EAAM,WAAW,OAAS,CAAC,IAAM,GAClDA,EAAM,WAAWA,EAAM,WAAW,OAAS,CAAC,IAAM,GAClDA,EAAM,WAAWA,EAAM,WAAW,OAAS,CAAC,IAAM,IAElDS,EAAqB,IAWnBE,GAAUX,CAAK,IAAMI,GAAUM,EAAe,CAChD,IAAIE,EAAQ,GAEZ,KAAO,EAAEA,EAAQd,EAAK,SAAS,QAAQ,CACrC,IAAMe,EAAOf,EAAK,SAASc,CAAK,EAEhC,GACEC,GACAA,EAAK,OAAS,YACdA,EAAK,UACLA,EAAK,SAAS,CAAC,GACfA,EAAK,SAAS,CAAC,EAAE,OAAS,gBAC1B,CACAJ,EAAqB,GACrB,KACF,CACF,CACF,CACF,CAEIA,IACFL,EAASG,GAGXP,EAAM,cAAgBI,EACtB,IAAMU,EAAQd,EAAM,cAAcF,EAAMG,CAAI,EAC5C,OAAAD,EAAM,eAAiBI,EACvBJ,EAAM,cAAgBG,EACtBD,EAAK,EACEY,CACT,CC3FO,SAASC,GAAoBC,EAAO,CACzC,IAAMC,EAAQD,EAAM,QAAQ,gBAAkB,MAE9C,GAAIC,IAAU,OAASA,IAAU,OAASA,IAAU,QAClD,MAAM,IAAI,MACR,gCACEA,EACA,mEACJ,EAGF,OAAOA,CACT,CCLO,SAASC,GAASC,EAAMC,EAAQC,EAAOC,EAAM,CAClD,IAAMC,EAAiBC,GAAoBH,CAAK,EAC5CI,EAASJ,EAAM,eAAiBK,GAAYL,CAAK,EAGjDD,GAAUA,EAAO,OAAS,QAAUA,EAAO,UAC7CK,GACG,OAAOL,EAAO,OAAU,UAAYA,EAAO,MAAQ,GAChDA,EAAO,MACP,IACHC,EAAM,QAAQ,sBAAwB,GACnC,EACAD,EAAO,SAAS,QAAQD,CAAI,GAChCM,GAGJ,IAAIE,EAAOF,EAAO,OAAS,GAGzBF,IAAmB,OAClBA,IAAmB,UAChBH,GAAUA,EAAO,OAAS,QAAUA,EAAO,QAAWD,EAAK,WAE/DQ,EAAO,KAAK,KAAKA,EAAO,CAAC,EAAI,GAG/B,IAAMC,EAAUP,EAAM,cAAcC,CAAI,EACxCM,EAAQ,KAAKH,EAAS,IAAI,OAAOE,EAAOF,EAAO,MAAM,CAAC,EACtDG,EAAQ,MAAMD,CAAI,EAClB,IAAME,EAAOR,EAAM,MAAM,UAAU,EAC7BS,EAAQT,EAAM,YAClBA,EAAM,cAAcF,EAAMS,EAAQ,QAAQ,CAAC,EAC3CG,CACF,EACA,OAAAF,EAAK,EAEEC,EAGP,SAASC,EAAIC,EAAMC,EAAOC,EAAO,CAC/B,OAAID,GACMC,EAAQ,GAAK,IAAI,OAAOP,CAAI,GAAKK,GAGnCE,EAAQT,EAASA,EAAS,IAAI,OAAOE,EAAOF,EAAO,MAAM,GAAKO,CACxE,CACF,CCjDO,SAASG,GAAUC,EAAMC,EAAGC,EAAOC,EAAM,CAC9C,IAAMC,EAAOF,EAAM,MAAM,WAAW,EAC9BG,EAAUH,EAAM,MAAM,UAAU,EAChCI,EAAQJ,EAAM,kBAAkBF,EAAMG,CAAI,EAChD,OAAAE,EAAQ,EACRD,EAAK,EACEE,CACT,CCDO,IAAMC,GAGTC,GAAQ,CACN,QACA,SACA,WAEA,WACA,oBACA,QACA,iBACA,aAEA,aACA,OACA,gBAEA,oBAEA,oBACA,SACA,OAEA,eACF,CAAC,EC7BE,SAASC,GAAKC,EAAMC,EAAGC,EAAOC,EAAM,CAOzC,OALoBH,EAAK,SAAS,KAAK,SAAUI,EAAG,CAClD,OAAOC,GAASD,CAAC,CACnB,CAAC,EAE+BF,EAAM,kBAAoBA,EAAM,eAC/C,KAAKA,EAAOF,EAAMG,CAAI,CACzC,CCdO,SAASG,GAAYC,EAAO,CACjC,IAAMC,EAASD,EAAM,QAAQ,QAAU,IAEvC,GAAIC,IAAW,KAAOA,IAAW,IAC/B,MAAM,IAAI,MACR,iCACEA,EACA,8CACJ,EAGF,OAAOA,CACT,CCXAC,GAAO,KAAOC,GASP,SAASD,GAAOE,EAAMC,EAAGC,EAAOC,EAAM,CAC3C,IAAMC,EAASC,GAAYH,CAAK,EAC1BI,EAAOJ,EAAM,MAAM,QAAQ,EAC3BK,EAAUL,EAAM,cAAcC,CAAI,EAClCK,EAASD,EAAQ,KAAKH,EAASA,CAAM,EAEvCK,EAAUF,EAAQ,KACpBL,EAAM,kBAAkBF,EAAM,CAC5B,MAAOI,EACP,OAAAI,EACA,GAAGD,EAAQ,QAAQ,CACrB,CAAC,CACH,EACMG,EAAcD,EAAQ,WAAW,CAAC,EAClCE,EAAOC,GACXT,EAAK,OAAO,WAAWA,EAAK,OAAO,OAAS,CAAC,EAC7CO,EACAN,CACF,EAEIO,EAAK,SACPF,EAAUI,GAAyBH,CAAW,EAAID,EAAQ,MAAM,CAAC,GAGnE,IAAMK,EAAcL,EAAQ,WAAWA,EAAQ,OAAS,CAAC,EACnDM,EAAQH,GAAWT,EAAK,MAAM,WAAW,CAAC,EAAGW,EAAaV,CAAM,EAElEW,EAAM,SACRN,EAAUA,EAAQ,MAAM,EAAG,EAAE,EAAII,GAAyBC,CAAW,GAGvE,IAAME,EAAQT,EAAQ,KAAKH,EAASA,CAAM,EAE1C,OAAAE,EAAK,EAELJ,EAAM,+BAAiC,CACrC,MAAOa,EAAM,QACb,OAAQJ,EAAK,OACf,EACOH,EAASC,EAAUO,CAC5B,CAQA,SAASjB,GAAWE,EAAGgB,EAAIf,EAAO,CAChC,OAAOA,EAAM,QAAQ,QAAU,GACjC,CCxDO,SAASgB,GAAKC,EAAMC,EAAGC,EAAOC,EAAM,CACzC,OAAOD,EAAM,KAAKF,EAAK,MAAOG,CAAI,CACpC,CCNO,SAASC,GAAoBC,EAAO,CACzC,IAAMC,EAAaD,EAAM,QAAQ,gBAAkB,EAEnD,GAAIC,EAAa,EACf,MAAM,IAAI,MACR,2CACEA,EACA,sDACJ,EAGF,OAAOA,CACT,CCNO,SAASC,GAAcC,EAAGC,EAAIC,EAAO,CAC1C,IAAMC,GACJC,GAAUF,CAAK,GAAKA,EAAM,QAAQ,WAAa,IAAM,KACrD,OAAOG,GAAoBH,CAAK,CAAC,EAEnC,OAAOA,EAAM,QAAQ,WAAaC,EAAM,MAAM,EAAG,EAAE,EAAIA,CACzD,CCGO,IAAMG,GAAS,CACpB,WAAAC,GACA,MAAOC,GACP,KAAAC,GACA,WAAAC,GACA,SAAAC,GACA,UAAAH,GACA,QAAAI,GACA,KAAAC,GACA,MAAAC,GACA,eAAAC,GACA,WAAAC,GACA,KAAAC,GACA,cAAAC,GACA,KAAAC,GACA,SAAAC,GACA,UAAAC,GACA,KAAAC,GACA,OAAAC,GACA,KAAAC,GACA,cAAAC,EACF,ECpCO,IAAMC,GAAO,CAACC,EAAY,EAGjC,SAASA,GAAaC,EAAMC,EAAOC,EAAQC,EAAO,CAEhD,GACEF,EAAM,OAAS,QACfG,GAAqBH,EAAOE,CAAK,IAChCH,EAAK,OAAS,QACZA,EAAK,OAASC,EAAM,MAAQG,GAAqBJ,EAAMG,CAAK,GAE/D,MAAO,GAKT,GAAI,WAAYD,GAAU,OAAOA,EAAO,QAAW,UACjD,OACEF,EAAK,OAAS,cAEbA,EAAK,OAASC,EAAM,MACnBA,EAAM,OAAS,cAEdA,EAAM,OAAS,WAAaI,GAAsBJ,EAAOE,CAAK,GAEjE,OAGKD,EAAO,OAAS,EAAI,CAE/B,CC1BA,IAAMI,GAAoB,CACxB,WACA,qBACA,iBACA,YACA,aACA,iBACF,EAGaC,GAAS,CACpB,CAAC,UAAW,IAAM,MAAO,WAAY,YAAa,UAAU,EAC5D,CAAC,UAAW,IAAM,OAAQ,WAAY,YAAa,UAAU,EAC7D,CACE,UAAW,IACX,YAAa,CAAC,4BAA6B,qBAAqB,CAClE,EACA,CACE,UAAW,KACX,YAAa,CACX,4BACA,sBACA,4BACA,sBACA,qBACA,YACF,CACF,EACA,CACE,UAAW;AAAA,EACX,YAAa,CACX,4BACA,sBACA,4BACA,sBACA,qBACA,YACF,CACF,EACA,CAAC,UAAW,IAAK,MAAO,WAAY,YAAa,UAAU,EAC3D,CAAC,UAAW,IAAK,OAAQ,WAAY,YAAa,UAAU,EAC5D,CACE,UAAW,IACX,YAAa,CAAC,4BAA6B,qBAAqB,CAClE,EAGA,CACE,UAAW,IACX,MAAO,MACP,YAAa,WACb,eAAgBD,EAClB,EAEA,CAAC,UAAW,IAAK,YAAa,YAAY,EAE1C,CAAC,QAAS,GAAM,UAAW,GAAG,EAC9B,CAAC,UAAW,IAAK,YAAa,aAAc,MAAO;AAAA,KAAc,EAGjE,CAAC,UAAW,IAAK,MAAO,YAAa,YAAa,UAAU,EAE5D,CAAC,UAAW,IAAK,YAAa,iBAAiB,EAE/C,CAAC,UAAW,IAAK,YAAa,gBAAgB,EAE9C,CACE,OAAQ,MACR,UAAW,IACX,YAAa,WACb,eAAgBA,EAClB,EAGA,CAAC,QAAS,GAAM,OAAQ,OAAQ,UAAW,GAAG,EAC9C,CAAC,UAAW,IAAK,YAAa,gBAAgB,EAE9C,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO;AAAA,IAAgB,EACvD,CAAC,UAAW,IAAK,YAAa,WAAY,eAAgBA,EAAiB,EAE3E,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO;AAAA,GAAe,EAGtD,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO;AAAA,IAAgB,EAEvD,CAAC,QAAS,GAAM,OAAQ,OAAQ,UAAW,IAAK,MAAO;AAAA,KAAiB,EAOxE,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO,aAAa,EACpD,CACE,UAAW,IACX,MAAO,cACP,YAAa,WACb,eAAgBA,EAClB,EACA,CAAC,UAAW,IAAK,YAAa,oBAAoB,EAElD,CAAC,QAAS,GAAM,UAAW,GAAG,EAG9B,CAAC,QAAS,GAAM,UAAW,GAAG,EAC9B,CAAC,UAAW,IAAK,YAAa,oBAAoB,EAGlD,CAAC,QAAS,GAAM,UAAW,GAAG,EAC9B,CAAC,UAAW,IAAK,YAAa,WAAY,eAAgBA,EAAiB,EAC3E,CAAC,UAAW,IAAK,YAAa,CAAC,QAAS,WAAW,CAAC,EAIpD,CAAC,UAAW,KAAM,MAAO,WAAY,YAAa,UAAU,EAE5D,CAAC,UAAW,IAAK,YAAa,CAAC,QAAS,WAAW,CAAC,EAGpD,CAAC,QAAS,GAAM,UAAW,GAAG,EAC9B,CAAC,UAAW,IAAK,YAAa,WAAY,eAAgBA,EAAiB,EAG3E,CAAC,QAAS,GAAM,UAAW,GAAG,EAC9B,CACE,UAAW,IACX,YAAa,CAAC,4BAA6B,2BAA2B,CACxE,EACA,CAAC,UAAW,IAAK,YAAa,WAAY,eAAgBA,EAAiB,EAI3E,CAAC,QAAS,GAAM,UAAW,GAAG,CAChC,ECvHO,SAASE,GAAYC,EAAM,CAChC,OAAIA,EAAK,OAAS,CAACA,EAAK,WACfA,EAAK,OAAS,GAGhBC,GAAaD,EAAK,UAAU,CACrC,CCzBO,SAASE,GAAeC,EAAS,CACtC,GAAI,CAACA,EAAQ,UAAW,CACtB,IAAMC,GACHD,EAAQ,QAAU,kBAAoB,KACtCA,EAAQ,OAAS,MAAQA,EAAQ,OAAS,IAAM,IAEnDA,EAAQ,UAAY,IAAI,QACrBC,EAAS,IAAMA,EAAS,IAAM,KAC5B,sBAAsB,KAAKD,EAAQ,SAAS,EAAI,KAAO,IACxDA,EAAQ,WACPA,EAAQ,MAAQ,MAAQA,EAAQ,MAAQ,IAAM,IACjD,GACF,CACF,CAEA,OAAOA,EAAQ,SACjB,CCFO,SAASE,GAAkBC,EAAQC,EAAOC,EAAM,CACrD,IAAMC,EAAaF,EAAM,WACnBG,EAAWJ,EAAO,UAAY,CAAC,EAE/BK,EAAU,CAAC,EACbC,EAAQ,GACRC,EAASL,EAAK,OAEdM,EAEJL,EAAW,KAAK,EAAE,EAClB,IAAIM,EAAUR,EAAM,cAAcC,CAAI,EAEtC,KAAO,EAAEI,EAAQF,EAAS,QAAQ,CAChC,IAAMM,EAAQN,EAASE,CAAK,EAExBK,EAIJ,GAFAR,EAAWA,EAAW,OAAS,CAAC,EAAIG,EAEhCA,EAAQ,EAAIF,EAAS,OAAQ,CAG/B,IAAIQ,EAASX,EAAM,OAAO,SAASG,EAASE,EAAQ,CAAC,EAAE,IAAI,EAGvDM,GAAUA,EAAO,OAAMA,EAASA,EAAO,MAC3CD,EAAQC,EACJA,EAAOR,EAASE,EAAQ,CAAC,EAAGN,EAAQC,EAAO,CACzC,OAAQ,GACR,MAAO,GACP,GAAGQ,EAAQ,QAAQ,CACrB,CAAC,EAAE,OAAO,CAAC,EACX,EACN,MACEE,EAAQT,EAAK,MAUbG,EAAQ,OAAS,IAChBE,IAAW,MAAQA,IAAW;AAAA,IAC/BG,EAAM,OAAS,SAEfL,EAAQA,EAAQ,OAAS,CAAC,EAAIA,EAAQA,EAAQ,OAAS,CAAC,EAAE,QACxD,cACA,GACF,EACAE,EAAS,IAGTE,EAAUR,EAAM,cAAcC,CAAI,EAClCO,EAAQ,KAAKJ,EAAQ,KAAK,EAAE,CAAC,GAG/B,IAAIQ,EAAQZ,EAAM,OAAOS,EAAOV,EAAQC,EAAO,CAC7C,GAAGQ,EAAQ,QAAQ,EACnB,MAAAE,EACA,OAAAJ,CACF,CAAC,EAKGC,GAAeA,IAAgBK,EAAM,MAAM,EAAG,CAAC,IACjDA,EACEC,GAAyBN,EAAY,WAAW,CAAC,CAAC,EAAIK,EAAM,MAAM,CAAC,GAGvE,IAAME,EAAed,EAAM,+BAC3BA,EAAM,+BAAiC,OACvCO,EAAc,OAKVO,IAEAV,EAAQ,OAAS,GACjBU,EAAa,QACbR,IAAWF,EAAQA,EAAQ,OAAS,CAAC,EAAE,MAAM,EAAE,IAE/CA,EAAQA,EAAQ,OAAS,CAAC,EACxBA,EAAQA,EAAQ,OAAS,CAAC,EAAE,MAAM,EAAG,EAAE,EACvCS,GAAyBP,EAAO,WAAW,CAAC,CAAC,GAG7CQ,EAAa,QAAOP,EAAcG,IAGxCF,EAAQ,KAAKI,CAAK,EAClBR,EAAQ,KAAKQ,CAAK,EAClBN,EAASM,EAAM,MAAM,EAAE,CACzB,CAEA,OAAAV,EAAW,IAAI,EAERE,EAAQ,KAAK,EAAE,CACxB,CC7GO,SAASW,GAAcC,EAAQC,EAAOC,EAAM,CACjD,IAAMC,EAAaF,EAAM,WACnBG,EAAWJ,EAAO,UAAY,CAAC,EAC/BK,EAAUJ,EAAM,cAAcC,CAAI,EAElCI,EAAU,CAAC,EACbC,EAAQ,GAIZ,IAFAJ,EAAW,KAAK,EAAE,EAEX,EAAEI,EAAQH,EAAS,QAAQ,CAChC,IAAMI,EAAQJ,EAASG,CAAK,EAE5BJ,EAAWA,EAAW,OAAS,CAAC,EAAII,EAEpCD,EAAQ,KACND,EAAQ,KACNJ,EAAM,OAAOO,EAAOR,EAAQC,EAAO,CACjC,OAAQ;AAAA,EACR,MAAO;AAAA,EACP,GAAGI,EAAQ,QAAQ,CACrB,CAAC,CACH,CACF,EAEIG,EAAM,OAAS,SACjBP,EAAM,eAAiB,QAGrBM,EAAQH,EAAS,OAAS,GAC5BE,EAAQ,KACND,EAAQ,KAAKI,GAAQD,EAAOJ,EAASG,EAAQ,CAAC,EAAGP,EAAQC,CAAK,CAAC,CACjE,CAEJ,CAEA,OAAAE,EAAW,IAAI,EAERG,EAAQ,KAAK,EAAE,CACxB,CASA,SAASG,GAAQC,EAAMC,EAAOX,EAAQC,EAAO,CAC3C,IAAIM,EAAQN,EAAM,KAAK,OAEvB,KAAOM,KAAS,CACd,IAAMK,EAASX,EAAM,KAAKM,CAAK,EAAEG,EAAMC,EAAOX,EAAQC,CAAK,EAE3D,GAAIW,IAAW,IAAQA,IAAW,EAChC,MAGF,GAAI,OAAOA,GAAW,SACpB,MAAO;AAAA,EAAK,OAAO,EAAIA,CAAM,EAG/B,GAAIA,IAAW,GACb,MAAO;AAAA;AAAA;AAAA;AAAA,CAEX,CAEA,MAAO;AAAA;AAAA,CACT,CC/EA,IAAMC,GAAM,YAKL,SAASC,GAAYC,EAAOC,EAAK,CAEtC,IAAMC,EAAS,CAAC,EACZC,EAAQ,EACRC,EAAO,EAEPC,EAEJ,KAAQA,EAAQP,GAAI,KAAKE,CAAK,GAC5BM,EAAIN,EAAM,MAAMG,EAAOE,EAAM,KAAK,CAAC,EACnCH,EAAO,KAAKG,EAAM,CAAC,CAAC,EACpBF,EAAQE,EAAM,MAAQA,EAAM,CAAC,EAAE,OAC/BD,IAGF,OAAAE,EAAIN,EAAM,MAAMG,CAAK,CAAC,EAEfD,EAAO,KAAK,EAAE,EAKrB,SAASI,EAAIN,EAAO,CAClBE,EAAO,KAAKD,EAAID,EAAOI,EAAM,CAACJ,CAAK,CAAC,CACtC,CACF,CCFO,SAASO,GAAKC,EAAOC,EAAOC,EAAQ,CACzC,IAAMC,GAASD,EAAO,QAAU,KAAOD,GAAS,KAAOC,EAAO,OAAS,IAEjEE,EAAY,CAAC,EAEbC,EAAS,CAAC,EAEVC,EAAQ,CAAC,EACXC,EAAQ,GAEZ,KAAO,EAAEA,EAAQP,EAAM,OAAO,QAAQ,CACpC,IAAMQ,EAAUR,EAAM,OAAOO,CAAK,EAElC,GAAI,CAACE,GAAeT,EAAM,MAAOQ,CAAO,EACtC,SAGF,IAAME,EAAaV,EAAM,eAAeQ,CAAO,EAE3CG,EAEJ,KAAQA,EAAQD,EAAW,KAAKP,CAAK,GAAI,CACvC,IAAMS,EAAS,WAAYJ,GAAW,EAAQA,EAAQ,QAChDK,EAAQ,UAAWL,EACnBM,EAAWH,EAAM,OAASC,EAASD,EAAM,CAAC,EAAE,OAAS,GAEvDP,EAAU,SAASU,CAAQ,GACzBR,EAAMQ,CAAQ,EAAE,QAAU,CAACF,IAC7BN,EAAMQ,CAAQ,EAAE,OAAS,IAGvBR,EAAMQ,CAAQ,EAAE,OAAS,CAACD,IAC5BP,EAAMQ,CAAQ,EAAE,MAAQ,MAG1BV,EAAU,KAAKU,CAAQ,EACvBR,EAAMQ,CAAQ,EAAI,CAAC,OAAAF,EAAQ,MAAAC,CAAK,EAEpC,CACF,CAEAT,EAAU,KAAKW,EAAS,EAExB,IAAIC,EAAQd,EAAO,OAASA,EAAO,OAAO,OAAS,EAC7Ce,EAAMd,EAAM,QAAUD,EAAO,MAAQA,EAAO,MAAM,OAAS,GAGjE,IAFAK,EAAQ,GAED,EAAEA,EAAQH,EAAU,QAAQ,CACjC,IAAMU,EAAWV,EAAUG,CAAK,EAG5BO,EAAWE,GAASF,GAAYG,GAQjCH,EAAW,EAAIG,GACdb,EAAUG,EAAQ,CAAC,IAAMO,EAAW,GACpCR,EAAMQ,CAAQ,EAAE,OAChB,CAACR,EAAMQ,EAAW,CAAC,EAAE,QACrB,CAACR,EAAMQ,EAAW,CAAC,EAAE,OACtBV,EAAUG,EAAQ,CAAC,IAAMO,EAAW,GACnCR,EAAMQ,CAAQ,EAAE,QAChB,CAACR,EAAMQ,EAAW,CAAC,EAAE,QACrB,CAACR,EAAMQ,EAAW,CAAC,EAAE,QAKrBE,IAAUF,GAIZT,EAAO,KAAKa,GAAkBf,EAAM,MAAMa,EAAOF,CAAQ,EAAG,IAAI,CAAC,EAGnEE,EAAQF,EAGN,iBAAiB,KAAKX,EAAM,OAAOW,CAAQ,CAAC,IAC3C,CAACZ,EAAO,QAAU,CAACA,EAAO,OAAO,SAASC,EAAM,OAAOW,CAAQ,CAAC,GAGjET,EAAO,KAAK,IAAI,GAGhBA,EAAO,KAAKc,GAAyBhB,EAAM,WAAWW,CAAQ,CAAC,CAAC,EAChEE,KAEJ,CAEA,OAAAX,EAAO,KAAKa,GAAkBf,EAAM,MAAMa,EAAOC,CAAG,EAAGf,EAAO,KAAK,CAAC,EAE7DG,EAAO,KAAK,EAAE,CACvB,CAOA,SAASU,GAAUK,EAAGC,EAAG,CACvB,OAAOD,EAAIC,CACb,CAOA,SAASH,GAAkBf,EAAOU,EAAO,CACvC,IAAMH,EAAa,wBAEbN,EAAY,CAAC,EAEbkB,EAAU,CAAC,EACXC,EAAQpB,EAAQU,EAClBN,EAAQ,GACRS,EAAQ,EAERL,EAEJ,KAAQA,EAAQD,EAAW,KAAKa,CAAK,GACnCnB,EAAU,KAAKO,EAAM,KAAK,EAG5B,KAAO,EAAEJ,EAAQH,EAAU,QACrBY,IAAUZ,EAAUG,CAAK,GAC3Be,EAAQ,KAAKnB,EAAM,MAAMa,EAAOZ,EAAUG,CAAK,CAAC,CAAC,EAGnDe,EAAQ,KAAK,IAAI,EACjBN,EAAQZ,EAAUG,CAAK,EAGzB,OAAAe,EAAQ,KAAKnB,EAAM,MAAMa,CAAK,CAAC,EAExBM,EAAQ,KAAK,EAAE,CACxB,CCpKO,SAASE,GAAMC,EAAQ,CAI5B,IAAMC,EAAUD,GAAU,CAAC,EACrBE,EAAMD,EAAQ,KAAO,CAAC,EACxBE,EAAYF,EAAQ,WAAa,EACjCG,EAAOF,EAAI,MAAQ,EACnBG,EAASH,EAAI,QAAU,EAE3B,MAAO,CAAC,KAAAI,EAAM,QAAAC,EAAS,MAAAC,CAAK,EAO5B,SAASD,GAAU,CACjB,MAAO,CAAC,IAAK,CAAC,KAAAH,EAAM,OAAAC,CAAM,EAAG,UAAAF,CAAS,CACxC,CAOA,SAASK,EAAMC,EAAO,CACpBN,GAAaM,CACf,CAOA,SAASH,EAAKI,EAAO,CAEnB,IAAMD,EAAQC,GAAS,GACjBC,EAASF,EAAM,MAAM,WAAW,EAChCG,EAAOD,EAAOA,EAAO,OAAS,CAAC,EACrC,OAAAP,GAAQO,EAAO,OAAS,EACxBN,EACEM,EAAO,SAAW,EAAIN,EAASO,EAAK,OAAS,EAAIA,EAAK,OAAST,EAC1DM,CACT,CACF,CCzBO,SAASI,GAAWC,EAAMC,EAAS,CACxC,IAAMC,EAAWD,GAAW,CAAC,EAEvBE,EAAQ,CACZ,cAAeC,GACf,kBAAmBC,GACnB,cAAeC,GACf,cAAeC,GACf,eAAAC,GACA,MAAAC,EAGA,SAAU,CAAC,GAAGC,EAAQ,EAEtB,OAAQ,OACR,YAAAC,GACA,WAAY,CAAC,EACb,KAAM,CAAC,GAAGC,EAAI,EACd,QAAS,CAAC,EACV,KAAMC,GACN,MAAO,CAAC,EACR,OAAQ,CAAC,GAAGC,EAAM,CACpB,EAEAC,GAAUZ,EAAOD,CAAQ,EAErBC,EAAM,QAAQ,kBAChBA,EAAM,KAAK,KAAKa,EAAc,EAGhCb,EAAM,OAASc,GAAO,OAAQ,CAC5B,QAAAC,GACA,QAAAC,GACA,SAAUhB,EAAM,QAClB,CAAC,EAED,IAAIiB,EAASjB,EAAM,OAAOH,EAAM,OAAWG,EAAO,CAChD,OAAQ;AAAA,EACR,MAAO;AAAA,EACP,IAAK,CAAC,KAAM,EAAG,OAAQ,CAAC,EACxB,UAAW,CACb,CAAC,EAED,OACEiB,GACAA,EAAO,WAAWA,EAAO,OAAS,CAAC,IAAM,IACzCA,EAAO,WAAWA,EAAO,OAAS,CAAC,IAAM,KAEzCA,GAAU;AAAA,GAGLA,EAGP,SAASX,EAAMY,EAAM,CACnB,OAAAlB,EAAM,MAAM,KAAKkB,CAAI,EACdC,EAKP,SAASA,GAAO,CACdnB,EAAM,MAAM,IAAI,CAClB,CACF,CACF,CAMA,SAASe,GAAQK,EAAO,CACtB,MAAM,IAAI,MAAM,wBAA0BA,EAAQ,kBAAkB,CACtE,CAMA,SAASJ,GAAQI,EAAO,CAEtB,IAAMC,EAA6BD,EACnC,MAAM,IAAI,MAAM,+BAAiCC,EAAK,KAAO,GAAG,CAClE,CAGA,SAASR,GAAeS,EAAMC,EAAO,CAEnC,GAAID,EAAK,OAAS,cAAgBA,EAAK,OAASC,EAAM,KACpD,MAAO,EAEX,CAgBA,SAASrB,GAAuBsB,EAAQC,EAAM,CAC5C,OAAOC,GAAkBF,EAAQ,KAAMC,CAAI,CAC7C,CAiBA,SAAStB,GAAmBqB,EAAQC,EAAM,CACxC,OAAOE,GAAcH,EAAQ,KAAMC,CAAI,CACzC,CA2BA,SAASf,GAAUU,EAAOQ,EAAQ,CAChC,OAAOC,GAAK,KAAMT,EAAOQ,CAAM,CACjC,CCrKe,SAARE,GAAiCC,EAAS,CAG/C,IAAMC,EAAO,KAEbA,EAAK,SAAWC,EAKhB,SAASA,EAASC,EAAM,CACtB,OAAOC,GAAWD,EAAM,CACtB,GAAGF,EAAK,KAAK,UAAU,EACvB,GAAGD,EAIH,WAAYC,EAAK,KAAK,sBAAsB,GAAK,CAAC,CACpD,CAAC,CACH,CACF,CClCO,SAASI,GAAKC,EAAO,CAC1B,GAAIA,EACF,MAAMA,CAEV,CCkVA,IAAAC,GAAmB,WC7VJ,SAARC,GAA+BC,EAAO,CAC5C,GAAI,OAAOA,GAAU,UAAYA,IAAU,KAC1C,MAAO,GAGR,IAAMC,EAAY,OAAO,eAAeD,CAAK,EAC7C,OAAQC,IAAc,MAAQA,IAAc,OAAO,WAAa,OAAO,eAAeA,CAAS,IAAM,OAAS,EAAE,OAAO,eAAeD,IAAU,EAAE,OAAO,YAAYA,EACtK,CC+BO,SAASE,IAAS,CAEvB,IAAMC,EAAM,CAAC,EAEPC,EAAW,CAAC,IAAAC,EAAK,IAAAC,CAAG,EAE1B,OAAOF,EAGP,SAASC,KAAOE,EAAQ,CACtB,IAAIC,EAAkB,GAEhBC,EAAWF,EAAO,IAAI,EAE5B,GAAI,OAAOE,GAAa,WACtB,MAAM,IAAI,UAAU,2CAA6CA,CAAQ,EAG3EC,EAAK,KAAM,GAAGH,CAAM,EAQpB,SAASG,EAAKC,KAAUC,EAAQ,CAC9B,IAAMC,EAAKV,EAAI,EAAEK,CAAe,EAC5BM,EAAQ,GAEZ,GAAIH,EAAO,CACTF,EAASE,CAAK,EACd,MACF,CAGA,KAAO,EAAEG,EAAQP,EAAO,SAClBK,EAAOE,CAAK,IAAM,MAAQF,EAAOE,CAAK,IAAM,UAC9CF,EAAOE,CAAK,EAAIP,EAAOO,CAAK,GAKhCP,EAASK,EAGLC,EACFE,GAAKF,EAAIH,CAAI,EAAE,GAAGE,CAAM,EAExBH,EAAS,KAAM,GAAGG,CAAM,CAE5B,CACF,CAGA,SAASN,EAAIU,EAAY,CACvB,GAAI,OAAOA,GAAe,WACxB,MAAM,IAAI,UACR,+CAAiDA,CACnD,EAGF,OAAAb,EAAI,KAAKa,CAAU,EACZZ,CACT,CACF,CAkCO,SAASW,GAAKE,EAAYR,EAAU,CAEzC,IAAIS,EAEJ,OAAOC,EAQP,SAASA,KAAWC,EAAY,CAC9B,IAAMC,EAAoBJ,EAAW,OAASG,EAAW,OAErDE,EAEAD,GACFD,EAAW,KAAKG,CAAI,EAGtB,GAAI,CACFD,EAASL,EAAW,MAAM,KAAMG,CAAU,CAC5C,OAAST,EAAO,CACd,IAAMa,EAAkCb,EAMxC,GAAIU,GAAqBH,EACvB,MAAMM,EAGR,OAAOD,EAAKC,CAAS,CACvB,CAEKH,IACCC,GAAUA,EAAO,MAAQ,OAAOA,EAAO,MAAS,WAClDA,EAAO,KAAKG,EAAMF,CAAI,EACbD,aAAkB,MAC3BC,EAAKD,CAAM,EAEXG,EAAKH,CAAM,EAGjB,CAOA,SAASC,EAAKZ,KAAUC,EAAQ,CACzBM,IACHA,EAAS,GACTT,EAASE,EAAO,GAAGC,CAAM,EAE7B,CAOA,SAASa,EAAKC,EAAO,CACnBH,EAAK,KAAMG,CAAK,CAClB,CACF,CCnLO,IAAMC,GAAN,cAA2B,KAAM,CAwDtC,YAAYC,EAAeC,EAAwBC,EAAQ,CACzD,MAAM,EAEF,OAAOD,GAA2B,WACpCC,EAASD,EACTA,EAAyB,QAI3B,IAAIE,EAAS,GAETC,EAAU,CAAC,EACXC,EAAc,GAwClB,GAtCIJ,IAGA,SAAUA,GACV,WAAYA,EAEZG,EAAU,CAAC,MAAOH,CAAsB,EAIxC,UAAWA,GACX,QAASA,EAETG,EAAU,CAAC,MAAOH,CAAsB,EAGjC,SAAUA,EACjBG,EAAU,CACR,UAAW,CAACH,CAAsB,EAClC,MAAOA,EAAuB,QAChC,EAIAG,EAAU,CAAC,GAAGH,CAAsB,GAIpC,OAAOD,GAAkB,SAC3BG,EAASH,EAGF,CAACI,EAAQ,OAASJ,IACzBK,EAAc,GACdF,EAASH,EAAc,QACvBI,EAAQ,MAAQJ,GAGd,CAACI,EAAQ,QAAU,CAACA,EAAQ,QAAU,OAAOF,GAAW,SAAU,CACpE,IAAMI,EAAQJ,EAAO,QAAQ,GAAG,EAE5BI,IAAU,GACZF,EAAQ,OAASF,GAEjBE,EAAQ,OAASF,EAAO,MAAM,EAAGI,CAAK,EACtCF,EAAQ,OAASF,EAAO,MAAMI,EAAQ,CAAC,EAE3C,CAEA,GAAI,CAACF,EAAQ,OAASA,EAAQ,WAAaA,EAAQ,UAAW,CAC5D,IAAMG,EAASH,EAAQ,UAAUA,EAAQ,UAAU,OAAS,CAAC,EAEzDG,IACFH,EAAQ,MAAQG,EAAO,SAE3B,CAEA,IAAMC,EACJJ,EAAQ,OAAS,UAAWA,EAAQ,MAChCA,EAAQ,MAAM,MACdA,EAAQ,MAOd,KAAK,UAAYA,EAAQ,WAAa,OAOtC,KAAK,MAAQA,EAAQ,OAAS,OAO9B,KAAK,OAASI,EAAQA,EAAM,OAAS,OAWrC,KAAK,MAAQ,OAOb,KAAK,KAAO,GAQZ,KAAK,QAAUL,EAOf,KAAK,KAAOK,EAAQA,EAAM,KAAO,OASjC,KAAK,KAAOC,GAAkBL,EAAQ,KAAK,GAAK,MAOhD,KAAK,MAAQA,EAAQ,OAAS,OAO9B,KAAK,OAAS,KAAK,QAOnB,KAAK,OAASA,EAAQ,QAAU,OAOhC,KAAK,OAASA,EAAQ,QAAU,OAWhC,KAAK,MACHC,GAAeD,EAAQ,OAAS,OAAOA,EAAQ,MAAM,OAAU,SAC3DA,EAAQ,MAAM,MACd,GAYN,KAAK,OAAS,OAOd,KAAK,SAAW,OAOhB,KAAK,KAAO,OAUZ,KAAK,IAAM,MACb,CACF,EAEAL,GAAa,UAAU,KAAO,GAC9BA,GAAa,UAAU,KAAO,GAC9BA,GAAa,UAAU,OAAS,GAChCA,GAAa,UAAU,QAAU,GACjCA,GAAa,UAAU,MAAQ,GAC/BA,GAAa,UAAU,OAAS,OAChCA,GAAa,UAAU,KAAO,OAC9BA,GAAa,UAAU,UAAY,OACnCA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,MAAQ,OAC/BA,GAAa,UAAU,OAAS,OAChCA,GAAa,UAAU,OAAS,OCtQzB,IAAMW,GAAU,CAAC,SAAAC,GAAU,QAAAC,GAAS,QAAAC,GAAS,KAAAC,GAAM,IAAK,GAAG,EAclE,SAASH,GAASI,EAAMF,EAAS,CAC/B,GAAIA,IAAY,QAAa,OAAOA,GAAY,SAC9C,MAAM,IAAI,UAAU,iCAAiC,EAGvDG,GAAWD,CAAI,EACf,IAAIE,EAAQ,EACRC,EAAM,GACNC,EAAQJ,EAAK,OAEbK,EAEJ,GACEP,IAAY,QACZA,EAAQ,SAAW,GACnBA,EAAQ,OAASE,EAAK,OACtB,CACA,KAAOI,KACL,GAAIJ,EAAK,YAAYI,CAAK,IAAM,IAG9B,GAAIC,EAAc,CAChBH,EAAQE,EAAQ,EAChB,KACF,OACSD,EAAM,IAGfE,EAAe,GACfF,EAAMC,EAAQ,GAIlB,OAAOD,EAAM,EAAI,GAAKH,EAAK,MAAME,EAAOC,CAAG,CAC7C,CAEA,GAAIL,IAAYE,EACd,MAAO,GAGT,IAAIM,EAAmB,GACnBC,EAAeT,EAAQ,OAAS,EAEpC,KAAOM,KACL,GAAIJ,EAAK,YAAYI,CAAK,IAAM,IAG9B,GAAIC,EAAc,CAChBH,EAAQE,EAAQ,EAChB,KACF,OAEIE,EAAmB,IAGrBD,EAAe,GACfC,EAAmBF,EAAQ,GAGzBG,EAAe,KAEbP,EAAK,YAAYI,CAAK,IAAMN,EAAQ,YAAYS,GAAc,EAC5DA,EAAe,IAGjBJ,EAAMC,IAKRG,EAAe,GACfJ,EAAMG,IAMd,OAAIJ,IAAUC,EACZA,EAAMG,EACGH,EAAM,IACfA,EAAMH,EAAK,QAGNA,EAAK,MAAME,EAAOC,CAAG,CAC9B,CAUA,SAASN,GAAQG,EAAM,CAGrB,GAFAC,GAAWD,CAAI,EAEXA,EAAK,SAAW,EAClB,MAAO,IAGT,IAAIG,EAAM,GACNC,EAAQJ,EAAK,OAEbQ,EAGJ,KAAO,EAAEJ,GACP,GAAIJ,EAAK,YAAYI,CAAK,IAAM,IAC9B,GAAII,EAAgB,CAClBL,EAAMC,EACN,KACF,OACUI,IAEVA,EAAiB,IAIrB,OAAOL,EAAM,EACTH,EAAK,YAAY,CAAC,IAAM,GACtB,IACA,IACFG,IAAQ,GAAKH,EAAK,YAAY,CAAC,IAAM,GACnC,KACAA,EAAK,MAAM,EAAGG,CAAG,CACzB,CAUA,SAASL,GAAQE,EAAM,CACrBC,GAAWD,CAAI,EAEf,IAAII,EAAQJ,EAAK,OAEbG,EAAM,GACNM,EAAY,EACZC,EAAW,GAGXC,EAAc,EAEdH,EAEJ,KAAOJ,KAAS,CACd,IAAMQ,EAAOZ,EAAK,YAAYI,CAAK,EAEnC,GAAIQ,IAAS,GAAc,CAGzB,GAAIJ,EAAgB,CAClBC,EAAYL,EAAQ,EACpB,KACF,CAEA,QACF,CAEID,EAAM,IAGRK,EAAiB,GACjBL,EAAMC,EAAQ,GAGZQ,IAAS,GAEPF,EAAW,EACbA,EAAWN,EACFO,IAAgB,IACzBA,EAAc,GAEPD,EAAW,KAGpBC,EAAc,GAElB,CAEA,OACED,EAAW,GACXP,EAAM,GAENQ,IAAgB,GAEfA,IAAgB,GAAKD,IAAaP,EAAM,GAAKO,IAAaD,EAAY,EAEhE,GAGFT,EAAK,MAAMU,EAAUP,CAAG,CACjC,CAUA,SAASJ,MAAQc,EAAU,CACzB,IAAIT,EAAQ,GAERU,EAEJ,KAAO,EAAEV,EAAQS,EAAS,QACxBZ,GAAWY,EAAST,CAAK,CAAC,EAEtBS,EAAST,CAAK,IAChBU,EACEA,IAAW,OAAYD,EAAST,CAAK,EAAIU,EAAS,IAAMD,EAAST,CAAK,GAI5E,OAAOU,IAAW,OAAY,IAAMC,GAAUD,CAAM,CACtD,CAYA,SAASC,GAAUf,EAAM,CACvBC,GAAWD,CAAI,EAEf,IAAMgB,EAAWhB,EAAK,YAAY,CAAC,IAAM,GAGrCiB,EAAQC,GAAgBlB,EAAM,CAACgB,CAAQ,EAE3C,OAAIC,EAAM,SAAW,GAAK,CAACD,IACzBC,EAAQ,KAGNA,EAAM,OAAS,GAAKjB,EAAK,YAAYA,EAAK,OAAS,CAAC,IAAM,KAC5DiB,GAAS,KAGJD,EAAW,IAAMC,EAAQA,CAClC,CAYA,SAASC,GAAgBlB,EAAMmB,EAAgB,CAC7C,IAAIC,EAAS,GACTC,EAAoB,EACpBC,EAAY,GACZC,EAAO,EACPnB,EAAQ,GAERQ,EAEAY,EAEJ,KAAO,EAAEpB,GAASJ,EAAK,QAAQ,CAC7B,GAAII,EAAQJ,EAAK,OACfY,EAAOZ,EAAK,YAAYI,CAAK,MACxB,IAAIQ,IAAS,GAClB,MAEAA,EAAO,GAGT,GAAIA,IAAS,GAAc,CACzB,GAAI,EAAAU,IAAclB,EAAQ,GAAKmB,IAAS,GAEjC,GAAID,IAAclB,EAAQ,GAAKmB,IAAS,EAAG,CAChD,GACEH,EAAO,OAAS,GAChBC,IAAsB,GACtBD,EAAO,YAAYA,EAAO,OAAS,CAAC,IAAM,IAC1CA,EAAO,YAAYA,EAAO,OAAS,CAAC,IAAM,IAE1C,GAAIA,EAAO,OAAS,GAGlB,GAFAI,EAAiBJ,EAAO,YAAY,GAAG,EAEnCI,IAAmBJ,EAAO,OAAS,EAAG,CACpCI,EAAiB,GACnBJ,EAAS,GACTC,EAAoB,IAEpBD,EAASA,EAAO,MAAM,EAAGI,CAAc,EACvCH,EAAoBD,EAAO,OAAS,EAAIA,EAAO,YAAY,GAAG,GAGhEE,EAAYlB,EACZmB,EAAO,EACP,QACF,UACSH,EAAO,OAAS,EAAG,CAC5BA,EAAS,GACTC,EAAoB,EACpBC,EAAYlB,EACZmB,EAAO,EACP,QACF,EAGEJ,IACFC,EAASA,EAAO,OAAS,EAAIA,EAAS,MAAQ,KAC9CC,EAAoB,EAExB,MACMD,EAAO,OAAS,EAClBA,GAAU,IAAMpB,EAAK,MAAMsB,EAAY,EAAGlB,CAAK,EAE/CgB,EAASpB,EAAK,MAAMsB,EAAY,EAAGlB,CAAK,EAG1CiB,EAAoBjB,EAAQkB,EAAY,EAG1CA,EAAYlB,EACZmB,EAAO,CACT,MAAWX,IAAS,IAAgBW,EAAO,GACzCA,IAEAA,EAAO,EAEX,CAEA,OAAOH,CACT,CAUA,SAASnB,GAAWD,EAAM,CACxB,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UACR,mCAAqC,KAAK,UAAUA,CAAI,CAC1D,CAEJ,CCpaO,IAAMyB,GAAU,CAAC,IAAAC,EAAG,EAE3B,SAASA,IAAM,CACb,MAAO,GACT,CCYO,SAASC,GAAMC,EAAe,CACnC,MAAO,GACLA,IAAkB,MAChB,OAAOA,GAAkB,UACzB,SAAUA,GACVA,EAAc,MACd,aAAcA,GACdA,EAAc,UAEdA,EAAc,OAAS,OAE7B,CClBO,SAASC,GAAUC,EAAM,CAC9B,GAAI,OAAOA,GAAS,SAClBA,EAAO,IAAI,IAAIA,CAAI,UACV,CAACC,GAAMD,CAAI,EAAG,CAEvB,IAAME,EAAQ,IAAI,UAChB,+EACEF,EACA,GACJ,EACA,MAAAE,EAAM,KAAO,uBACPA,CACR,CAEA,GAAIF,EAAK,WAAa,QAAS,CAE7B,IAAME,EAAQ,IAAI,UAAU,gCAAgC,EAC5D,MAAAA,EAAM,KAAO,yBACPA,CACR,CAEA,OAAOC,GAAoBH,CAAI,CACjC,CAUA,SAASG,GAAoBC,EAAK,CAChC,GAAIA,EAAI,WAAa,GAAI,CAEvB,IAAMF,EAAQ,IAAI,UAChB,sDACF,EACA,MAAAA,EAAM,KAAO,4BACPA,CACR,CAEA,IAAMG,EAAWD,EAAI,SACjBE,EAAQ,GAEZ,KAAO,EAAEA,EAAQD,EAAS,QACxB,GACEA,EAAS,YAAYC,CAAK,IAAM,IAChCD,EAAS,YAAYC,EAAQ,CAAC,IAAM,GACpC,CACA,IAAMC,EAAQF,EAAS,YAAYC,EAAQ,CAAC,EAC5C,GAAIC,IAAU,IAAgBA,IAAU,IAAe,CAErD,IAAML,EAAQ,IAAI,UAChB,qDACF,EACA,MAAAA,EAAM,KAAO,4BACPA,CACR,CACF,CAGF,OAAO,mBAAmBG,CAAQ,CACpC,CCvDA,IAAMG,GAA8B,CAClC,UACA,OACA,WACA,OACA,UACA,SACF,EAEaC,GAAN,KAAY,CAuBjB,YAAYC,EAAO,CAEjB,IAAIC,EAECD,EAEME,GAAMF,CAAK,EACpBC,EAAU,CAAC,KAAMD,CAAK,EACb,OAAOA,GAAU,UAAYG,GAAaH,CAAK,EACxDC,EAAU,CAAC,MAAAD,CAAK,EAEhBC,EAAUD,EANVC,EAAU,CAAC,EAkBb,KAAK,IAAM,QAASA,EAAU,GAAKG,GAAQ,IAAI,EAU/C,KAAK,KAAO,CAAC,EASb,KAAK,QAAU,CAAC,EAOhB,KAAK,SAAW,CAAC,EAOjB,KAAK,MAYL,KAAK,IAUL,KAAK,OASL,KAAK,OAIL,IAAIC,EAAQ,GAEZ,KAAO,EAAEA,EAAQP,GAAM,QAAQ,CAC7B,IAAMQ,EAAQR,GAAMO,CAAK,EAKvBC,KAASL,GACTA,EAAQK,CAAK,IAAM,QACnBL,EAAQK,CAAK,IAAM,OAGnB,KAAKA,CAAK,EAAIA,IAAU,UAAY,CAAC,GAAGL,EAAQK,CAAK,CAAC,EAAIL,EAAQK,CAAK,EAE3E,CAGA,IAAIA,EAGJ,IAAKA,KAASL,EAEPH,GAAM,SAASQ,CAAK,IAEvB,KAAKA,CAAK,EAAIL,EAAQK,CAAK,EAGjC,CAQA,IAAI,UAAW,CACb,OAAO,OAAO,KAAK,MAAS,SACxBC,GAAQ,SAAS,KAAK,IAAI,EAC1B,MACN,CAcA,IAAI,SAASC,EAAU,CACrBC,GAAeD,EAAU,UAAU,EACnCE,GAAWF,EAAU,UAAU,EAC/B,KAAK,KAAOD,GAAQ,KAAK,KAAK,SAAW,GAAIC,CAAQ,CACvD,CAQA,IAAI,SAAU,CACZ,OAAO,OAAO,KAAK,MAAS,SACxBD,GAAQ,QAAQ,KAAK,IAAI,EACzB,MACN,CAYA,IAAI,QAAQI,EAAS,CACnBC,GAAW,KAAK,SAAU,SAAS,EACnC,KAAK,KAAOL,GAAQ,KAAKI,GAAW,GAAI,KAAK,QAAQ,CACvD,CAQA,IAAI,SAAU,CACZ,OAAO,OAAO,KAAK,MAAS,SACxBJ,GAAQ,QAAQ,KAAK,IAAI,EACzB,MACN,CAcA,IAAI,QAAQM,EAAS,CAInB,GAHAH,GAAWG,EAAS,SAAS,EAC7BD,GAAW,KAAK,QAAS,SAAS,EAE9BC,EAAS,CACX,GAAIA,EAAQ,YAAY,CAAC,IAAM,GAC7B,MAAM,IAAI,MAAM,+BAA+B,EAGjD,GAAIA,EAAQ,SAAS,IAAK,CAAC,EACzB,MAAM,IAAI,MAAM,wCAAwC,CAE5D,CAEA,KAAK,KAAON,GAAQ,KAAK,KAAK,QAAS,KAAK,MAAQM,GAAW,GAAG,CACpE,CAQA,IAAI,MAAO,CACT,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,CAC7C,CAcA,IAAI,KAAKC,EAAM,CACTZ,GAAMY,CAAI,IACZA,EAAOC,GAAUD,CAAI,GAGvBL,GAAeK,EAAM,MAAM,EAEvB,KAAK,OAASA,GAChB,KAAK,QAAQ,KAAKA,CAAI,CAE1B,CAQA,IAAI,MAAO,CACT,OAAO,OAAO,KAAK,MAAS,SACxBP,GAAQ,SAAS,KAAK,KAAM,KAAK,OAAO,EACxC,MACN,CAcA,IAAI,KAAKS,EAAM,CACbP,GAAeO,EAAM,MAAM,EAC3BN,GAAWM,EAAM,MAAM,EACvB,KAAK,KAAOT,GAAQ,KAAK,KAAK,SAAW,GAAIS,GAAQ,KAAK,SAAW,GAAG,CAC1E,CA+DA,KAAKC,EAAeC,EAAwBC,EAAQ,CAElD,IAAMC,EAAU,KAAK,QAAQH,EAAeC,EAAwBC,CAAM,EAE1E,MAAAC,EAAQ,MAAQ,GAEVA,CACR,CA4DA,KAAKH,EAAeC,EAAwBC,EAAQ,CAElD,IAAMC,EAAU,KAAK,QAAQH,EAAeC,EAAwBC,CAAM,EAE1E,OAAAC,EAAQ,MAAQ,OAETA,CACT,CA4DA,QAAQH,EAAeC,EAAwBC,EAAQ,CACrD,IAAMC,EAAU,IAAIC,GAElBJ,EACAC,EACAC,CACF,EAEA,OAAI,KAAK,OACPC,EAAQ,KAAO,KAAK,KAAO,IAAMA,EAAQ,KACzCA,EAAQ,KAAO,KAAK,MAGtBA,EAAQ,MAAQ,GAEhB,KAAK,SAAS,KAAKA,CAAO,EAEnBA,CACT,CAeA,SAASE,EAAU,CACjB,OAAI,KAAK,QAAU,OACV,GAGL,OAAO,KAAK,OAAU,SACjB,KAAK,MAGE,IAAI,YAAYA,GAAY,MAAS,EACtC,OAAO,KAAK,KAAK,CAClC,CACF,EAYA,SAASZ,GAAWa,EAAMC,EAAM,CAC9B,GAAID,GAAQA,EAAK,SAAShB,GAAQ,GAAG,EACnC,MAAM,IAAI,MACR,IAAMiB,EAAO,uCAAyCjB,GAAQ,IAAM,GACtE,CAEJ,CAYA,SAASE,GAAec,EAAMC,EAAM,CAClC,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,IAAMC,EAAO,mBAAmB,CAEpD,CAYA,SAASZ,GAAWE,EAAMU,EAAM,CAC9B,GAAI,CAACV,EACH,MAAM,IAAI,MAAM,YAAcU,EAAO,iCAAiC,CAE1E,CAUA,SAASrB,GAAaH,EAAO,CAC3B,MAAO,GACLA,GACE,OAAOA,GAAU,UACjB,eAAgBA,GAChB,eAAgBA,EAEtB,CCloBO,IAAMyB,IAYP,SAAUC,EAAU,CAGlB,IAAMC,EAFO,KACO,YAIX,UAEHC,EAAQD,EAAMD,CAAQ,EAEtBG,EAAQ,UAAY,CACxB,OAAOD,EAAM,MAAMC,EAAO,SAAS,CACrC,EAEA,cAAO,eAAeA,EAAOF,CAAK,EAc3BE,CACT,GTiUN,IAAMC,GAAM,CAAC,EAAE,eAeFC,GAAN,MAAMC,UAAkBC,EAAiB,CAI9C,aAAc,CAEZ,MAAM,MAAM,EAeZ,KAAK,SAAW,OAYhB,KAAK,OAAS,OAad,KAAK,UAAY,CAAC,EAalB,KAAK,SAAW,OAShB,KAAK,YAAc,GASnB,KAAK,OAAS,OASd,KAAK,UAAY,CAAC,EAUlB,KAAK,OAAS,OASd,KAAK,aAAeC,GAAO,CAC7B,CAaA,MAAO,CAEL,IAAMC,EAEF,IAAIH,EAEJI,EAAQ,GAEZ,KAAO,EAAEA,EAAQ,KAAK,UAAU,QAAQ,CACtC,IAAMC,EAAW,KAAK,UAAUD,CAAK,EACrCD,EAAY,IAAI,GAAGE,CAAQ,CAC7B,CAEA,OAAAF,EAAY,QAAK,GAAAG,SAAO,GAAM,CAAC,EAAG,KAAK,SAAS,CAAC,EAE1CH,CACT,CA6DA,KAAKI,EAAKC,EAAO,CACf,OAAI,OAAOD,GAAQ,SAEb,UAAU,SAAW,GACvBE,GAAe,OAAQ,KAAK,MAAM,EAClC,KAAK,UAAUF,CAAG,EAAIC,EACf,MAIDV,GAAI,KAAK,KAAK,UAAWS,CAAG,GAAK,KAAK,UAAUA,CAAG,GAAM,OAI/DA,GACFE,GAAe,OAAQ,KAAK,MAAM,EAClC,KAAK,UAAYF,EACV,MAIF,KAAK,SACd,CAmBA,QAAS,CACP,GAAI,KAAK,OACP,OAAO,KAMT,IAAMG,EAAyD,KAE/D,KAAO,EAAE,KAAK,YAAc,KAAK,UAAU,QAAQ,CACjD,GAAM,CAACL,EAAU,GAAGM,CAAO,EAAI,KAAK,UAAU,KAAK,WAAW,EAE9D,GAAIA,EAAQ,CAAC,IAAM,GACjB,SAGEA,EAAQ,CAAC,IAAM,KACjBA,EAAQ,CAAC,EAAI,QAGf,IAAMC,EAAcP,EAAS,KAAKK,EAAM,GAAGC,CAAO,EAE9C,OAAOC,GAAgB,YACzB,KAAK,aAAa,IAAIA,CAAW,CAErC,CAEA,YAAK,OAAS,GACd,KAAK,YAAc,OAAO,kBAEnB,IACT,CAgBA,MAAMC,EAAM,CACV,KAAK,OAAO,EACZ,IAAMC,EAAWC,GAAMF,CAAI,EACrBG,EAAS,KAAK,QAAU,KAAK,OACnC,OAAAC,GAAa,QAASD,CAAM,EACrBA,EAAO,OAAOF,CAAQ,EAAGA,CAAQ,CAC1C,CA4CA,QAAQD,EAAMK,EAAM,CAClB,IAAMR,EAAO,KAEb,YAAK,OAAO,EACZO,GAAa,UAAW,KAAK,QAAU,KAAK,MAAM,EAClDE,GAAe,UAAW,KAAK,UAAY,KAAK,QAAQ,EAEjDD,EAAOE,EAAS,OAAWF,CAAI,EAAI,IAAI,QAAQE,CAAQ,EAQ9D,SAASA,EAASC,EAASC,EAAQ,CACjC,IAAMR,EAAWC,GAAMF,CAAI,EAGrBU,EAEsBb,EAAK,MAAMI,CAAQ,EAG/CJ,EAAK,IAAIa,EAAWT,EAAU,SAAUU,EAAOC,EAAMZ,EAAM,CACzD,GAAIW,GAAS,CAACC,GAAQ,CAACZ,EACrB,OAAOa,EAASF,CAAK,EAKvB,IAAMG,EAEsBF,EAGtBG,EAAgBlB,EAAK,UAAUiB,EAAad,CAAI,EAElDgB,GAAgBD,CAAa,EAC/Bf,EAAK,MAAQe,EAEbf,EAAK,OAASe,EAGhBF,EAASF,EAAsDX,CAAK,CACtE,CAAC,EAOD,SAASa,EAASF,EAAOX,EAAM,CACzBW,GAAS,CAACX,EACZS,EAAOE,CAAK,EACHH,EACTA,EAAQR,CAAI,EAGZK,EAAK,OAAWL,CAAI,CAExB,CACF,CACF,CAiCA,YAAYA,EAAM,CAEhB,IAAIiB,EAAW,GAEXC,EAEJ,YAAK,OAAO,EACZd,GAAa,cAAe,KAAK,QAAU,KAAK,MAAM,EACtDE,GAAe,cAAe,KAAK,UAAY,KAAK,QAAQ,EAE5D,KAAK,QAAQN,EAAMa,CAAQ,EAC3BM,GAAW,cAAe,UAAWF,CAAQ,EAGtCC,EAKP,SAASL,EAASF,EAAOX,EAAM,CAC7BiB,EAAW,GACXG,GAAKT,CAAK,EACVO,EAASlB,CACX,CACF,CAwCA,IAAIY,EAAMZ,EAAMK,EAAM,CACpBgB,GAAWT,CAAI,EACf,KAAK,OAAO,EAEZ,IAAMU,EAAe,KAAK,aAE1B,MAAI,CAACjB,GAAQ,OAAOL,GAAS,aAC3BK,EAAOL,EACPA,EAAO,QAGFK,EAAOE,EAAS,OAAWF,CAAI,EAAI,IAAI,QAAQE,CAAQ,EAW9D,SAASA,EAASC,EAASC,EAAQ,CAKjC,IAAMR,EAAWC,GAAMF,CAAI,EAC3BsB,EAAa,IAAIV,EAAMX,EAAUY,CAAQ,EAQzC,SAASA,EAASF,EAAOY,EAAYvB,EAAM,CACzC,IAAMwB,EAEFD,GAAcX,EAGdD,EACFF,EAAOE,CAAK,EACHH,EACTA,EAAQgB,CAAa,EAGrBnB,EAAK,OAAWmB,EAAexB,CAAI,CAEvC,CACF,CACF,CAmBA,QAAQY,EAAMZ,EAAM,CAElB,IAAIiB,EAAW,GAEXC,EAEJ,YAAK,IAAIN,EAAMZ,EAAMa,CAAQ,EAE7BM,GAAW,UAAW,MAAOF,CAAQ,EAE9BC,EAKP,SAASL,EAASF,EAAOC,EAAM,CAC7BQ,GAAKT,CAAK,EACVO,EAASN,EACTK,EAAW,EACb,CACF,CA+BA,UAAUL,EAAMZ,EAAM,CACpB,KAAK,OAAO,EACZ,IAAMC,EAAWC,GAAMF,CAAI,EACrByB,EAAW,KAAK,UAAY,KAAK,SACvC,OAAAnB,GAAe,YAAamB,CAAQ,EACpCJ,GAAWT,CAAI,EAERa,EAASb,EAAMX,CAAQ,CAChC,CA2DA,IAAIN,KAAU+B,EAAY,CACxB,IAAMC,EAAY,KAAK,UACjBC,EAAY,KAAK,UAIvB,GAFAhC,GAAe,MAAO,KAAK,MAAM,EAE7BD,GAAU,KAEP,GAAI,OAAOA,GAAU,WAC1BkC,EAAUlC,EAAO+B,CAAU,UAClB,OAAO/B,GAAU,SACtB,MAAM,QAAQA,CAAK,EACrBmC,EAAQnC,CAAK,EAEboC,EAAUpC,CAAK,MAGjB,OAAM,IAAI,UAAU,+BAAiCA,EAAQ,GAAG,EAGlE,OAAO,KAMP,SAASqC,EAAIrC,EAAO,CAClB,GAAI,OAAOA,GAAU,WACnBkC,EAAUlC,EAAO,CAAC,CAAC,UACV,OAAOA,GAAU,SAC1B,GAAI,MAAM,QAAQA,CAAK,EAAG,CACxB,GAAM,CAACsC,EAAQ,GAAGP,CAAU,EACkB/B,EAC9CkC,EAAUI,EAAQP,CAAU,CAC9B,MACEK,EAAUpC,CAAK,MAGjB,OAAM,IAAI,UAAU,+BAAiCA,EAAQ,GAAG,CAEpE,CAMA,SAASoC,EAAUb,EAAQ,CACzB,GAAI,EAAE,YAAaA,IAAW,EAAE,aAAcA,GAC5C,MAAM,IAAI,MACR,4KACF,EAGFY,EAAQZ,EAAO,OAAO,EAElBA,EAAO,WACTU,EAAU,YAAW,GAAAnC,SAAO,GAAMmC,EAAU,SAAUV,EAAO,QAAQ,EAEzE,CAMA,SAASY,EAAQI,EAAS,CACxB,IAAI3C,EAAQ,GAEZ,GAAI2C,GAAY,KAET,GAAI,MAAM,QAAQA,CAAO,EAC9B,KAAO,EAAE3C,EAAQ2C,EAAQ,QAAQ,CAC/B,IAAMC,EAAQD,EAAQ3C,CAAK,EAC3ByC,EAAIG,CAAK,CACX,KAEA,OAAM,IAAI,UAAU,oCAAsCD,EAAU,GAAG,CAE3E,CAOA,SAASL,EAAUI,EAAQP,EAAY,CACrC,IAAInC,EAAQ,GACR6C,EAAa,GAEjB,KAAO,EAAE7C,EAAQoC,EAAU,QACzB,GAAIA,EAAUpC,CAAK,EAAE,CAAC,IAAM0C,EAAQ,CAClCG,EAAa7C,EACb,KACF,CAGF,GAAI6C,IAAe,GACjBT,EAAU,KAAK,CAACM,EAAQ,GAAGP,CAAU,CAAC,UAI/BA,EAAW,OAAS,EAAG,CAC9B,GAAI,CAACW,EAAS,GAAGC,CAAI,EAAIZ,EACnBa,EAAiBZ,EAAUS,CAAU,EAAE,CAAC,EAC1CI,GAAWD,CAAc,GAAKC,GAAWH,CAAO,IAClDA,KAAU,GAAA5C,SAAO,GAAM8C,EAAgBF,CAAO,GAGhDV,EAAUS,CAAU,EAAI,CAACH,EAAQI,EAAS,GAAGC,CAAI,CACnD,CACF,CACF,CACF,EA8BaG,GAAU,IAAIvD,GAAU,EAAE,OAAO,EAS9C,SAASkB,GAAasC,EAAM/C,EAAO,CACjC,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,UAAU,WAAa+C,EAAO,oBAAoB,CAEhE,CASA,SAASpC,GAAeoC,EAAM/C,EAAO,CACnC,GAAI,OAAOA,GAAU,WACnB,MAAM,IAAI,UAAU,WAAa+C,EAAO,sBAAsB,CAElE,CASA,SAAS9C,GAAe8C,EAAMC,EAAQ,CACpC,GAAIA,EACF,MAAM,IAAI,MACR,gBACED,EACA,kHACJ,CAEJ,CAQA,SAASrB,GAAWuB,EAAM,CAGxB,GAAI,CAACJ,GAAWI,CAAI,GAAK,OAAOA,EAAK,MAAS,SAC5C,MAAM,IAAI,UAAU,uBAAyBA,EAAO,GAAG,CAG3D,CAUA,SAASzB,GAAWuB,EAAMG,EAAW5B,EAAU,CAC7C,GAAI,CAACA,EACH,MAAM,IAAI,MACR,IAAMyB,EAAO,0BAA4BG,EAAY,WACvD,CAEJ,CAMA,SAAS3C,GAAMP,EAAO,CACpB,OAAOmD,GAAgBnD,CAAK,EAAIA,EAAQ,IAAIoD,GAAMpD,CAAK,CACzD,CAMA,SAASmD,GAAgBnD,EAAO,CAC9B,MAAO,GACLA,GACE,OAAOA,GAAU,UACjB,YAAaA,GACb,aAAcA,EAEpB,CAMA,SAASqB,GAAgBrB,EAAO,CAC9B,OAAO,OAAOA,GAAU,UAAYqD,GAAarD,CAAK,CACxD,CAUA,SAASqD,GAAarD,EAAO,CAC3B,MAAO,GACLA,GACE,OAAOA,GAAU,UACjB,eAAgBA,GAChB,eAAgBA,EAEtB,CUxyCA,SAASsD,GAAWC,EAAS,CAC3B,KAAK,QAAUA,CACjB,CAEAD,GAAW,UAAY,CACrB,YAAaA,GAEb,KAAM,SAASE,EAAK,CAClB,QAASC,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,GAAK,EAC5C,GAAI,KAAK,QAAQA,CAAC,IAAMD,EAAK,OAAOC,EACtC,MAAO,EACT,EAKA,IAAK,SAASD,EAAK,CACjB,IAAIE,EAAQ,KAAK,KAAKF,CAAG,EACzB,OAAOE,GAAS,GAAK,OAAY,KAAK,QAAQA,EAAQ,CAAC,CACzD,EAMA,OAAQ,SAASF,EAAKG,EAAOC,EAAQ,CACnC,IAAIC,EAAOD,GAAUA,GAAUJ,EAAM,KAAK,OAAOI,CAAM,EAAI,KACvDF,EAAQG,EAAK,KAAKL,CAAG,EAAGD,EAAUM,EAAK,QAAQ,MAAM,EACzD,OAAIH,GAAS,GACXH,EAAQ,KAAKK,GAAUJ,EAAKG,CAAK,GAEjCJ,EAAQG,EAAQ,CAAC,EAAIC,EACjBC,IAAQL,EAAQG,CAAK,EAAIE,IAExB,IAAIN,GAAWC,CAAO,CAC/B,EAIA,OAAQ,SAASC,EAAK,CACpB,IAAIE,EAAQ,KAAK,KAAKF,CAAG,EACzB,GAAIE,GAAS,GAAI,OAAO,KACxB,IAAIH,EAAU,KAAK,QAAQ,MAAM,EACjC,OAAAA,EAAQ,OAAOG,EAAO,CAAC,EAChB,IAAIJ,GAAWC,CAAO,CAC/B,EAIA,WAAY,SAASC,EAAKG,EAAO,CAC/B,OAAO,IAAIL,GAAW,CAACE,EAAKG,CAAK,EAAE,OAAO,KAAK,OAAOH,CAAG,EAAE,OAAO,CAAC,CACrE,EAIA,SAAU,SAASA,EAAKG,EAAO,CAC7B,IAAIJ,EAAU,KAAK,OAAOC,CAAG,EAAE,QAAQ,MAAM,EAC7C,OAAAD,EAAQ,KAAKC,EAAKG,CAAK,EAChB,IAAIL,GAAWC,CAAO,CAC/B,EAKA,UAAW,SAASO,EAAON,EAAKG,EAAO,CACrC,IAAII,EAAU,KAAK,OAAOP,CAAG,EAAGD,EAAUQ,EAAQ,QAAQ,MAAM,EAC5DL,EAAQK,EAAQ,KAAKD,CAAK,EAC9B,OAAAP,EAAQ,OAAOG,GAAS,GAAKH,EAAQ,OAASG,EAAO,EAAGF,EAAKG,CAAK,EAC3D,IAAIL,GAAWC,CAAO,CAC/B,EAKA,QAAS,SAASS,EAAG,CACnB,QAASP,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,GAAK,EAC5CO,EAAE,KAAK,QAAQP,CAAC,EAAG,KAAK,QAAQA,EAAI,CAAC,CAAC,CAC1C,EAKA,QAAS,SAASQ,EAAK,CAErB,OADAA,EAAMX,GAAW,KAAKW,CAAG,EACpBA,EAAI,KACF,IAAIX,GAAWW,EAAI,QAAQ,OAAO,KAAK,SAASA,CAAG,EAAE,OAAO,CAAC,EAD9C,IAExB,EAKA,OAAQ,SAASA,EAAK,CAEpB,OADAA,EAAMX,GAAW,KAAKW,CAAG,EACpBA,EAAI,KACF,IAAIX,GAAW,KAAK,SAASW,CAAG,EAAE,QAAQ,OAAOA,EAAI,OAAO,CAAC,EAD9C,IAExB,EAKA,SAAU,SAASA,EAAK,CACtB,IAAIC,EAAS,KACbD,EAAMX,GAAW,KAAKW,CAAG,EACzB,QAASR,EAAI,EAAGA,EAAIQ,EAAI,QAAQ,OAAQR,GAAK,EAC3CS,EAASA,EAAO,OAAOD,EAAI,QAAQR,CAAC,CAAC,EACvC,OAAOS,CACT,EAIA,SAAU,UAAW,CACnB,IAAIA,EAAS,CAAC,EACd,YAAK,QAAQ,SAASV,EAAKG,EAAO,CAAEO,EAAOV,CAAG,EAAIG,CAAO,CAAC,EACnDO,CACT,EAIA,IAAI,MAAO,CACT,OAAO,KAAK,QAAQ,QAAU,CAChC,CACF,EAMAZ,GAAW,KAAO,SAASK,EAAO,CAChC,GAAIA,aAAiBL,GAAY,OAAOK,EACxC,IAAIJ,EAAU,CAAC,EACf,GAAII,EAAO,QAASQ,KAAQR,EAAOJ,EAAQ,KAAKY,EAAMR,EAAMQ,CAAI,CAAC,EACjE,OAAO,IAAIb,GAAWC,CAAO,CAC/B,EAEA,IAAOa,GAAQd,GCtIf,SAASe,GAAcC,EAAGC,EAAGC,EAAK,CAC9B,QAASC,EAAI,GAAIA,IAAK,CAClB,GAAIA,GAAKH,EAAE,YAAcG,GAAKF,EAAE,WAC5B,OAAOD,EAAE,YAAcC,EAAE,WAAa,KAAOC,EACjD,IAAIE,EAASJ,EAAE,MAAMG,CAAC,EAAGE,EAASJ,EAAE,MAAME,CAAC,EAC3C,GAAIC,GAAUC,EAAQ,CAClBH,GAAOE,EAAO,SACd,QACJ,CACA,GAAI,CAACA,EAAO,WAAWC,CAAM,EACzB,OAAOH,EACX,GAAIE,EAAO,QAAUA,EAAO,MAAQC,EAAO,KAAM,CAC7C,QAASC,EAAI,EAAGF,EAAO,KAAKE,CAAC,GAAKD,EAAO,KAAKC,CAAC,EAAGA,IAC9CJ,IACJ,OAAOA,CACX,CACA,GAAIE,EAAO,QAAQ,MAAQC,EAAO,QAAQ,KAAM,CAC5C,IAAIE,EAAQR,GAAcK,EAAO,QAASC,EAAO,QAASH,EAAM,CAAC,EACjE,GAAIK,GAAS,KACT,OAAOA,CACf,CACAL,GAAOE,EAAO,QAClB,CACJ,CACA,SAASI,GAAYR,EAAGC,EAAGQ,EAAMC,EAAM,CACnC,QAASC,EAAKX,EAAE,WAAYY,EAAKX,EAAE,aAAc,CAC7C,GAAIU,GAAM,GAAKC,GAAM,EACjB,OAAOD,GAAMC,EAAK,KAAO,CAAE,EAAGH,EAAM,EAAGC,CAAK,EAChD,IAAIN,EAASJ,EAAE,MAAM,EAAEW,CAAE,EAAGN,EAASJ,EAAE,MAAM,EAAEW,CAAE,EAAGC,EAAOT,EAAO,SAClE,GAAIA,GAAUC,EAAQ,CAClBI,GAAQI,EACRH,GAAQG,EACR,QACJ,CACA,GAAI,CAACT,EAAO,WAAWC,CAAM,EACzB,MAAO,CAAE,EAAGI,EAAM,EAAGC,CAAK,EAC9B,GAAIN,EAAO,QAAUA,EAAO,MAAQC,EAAO,KAAM,CAC7C,IAAIS,EAAO,EAAGC,EAAU,KAAK,IAAIX,EAAO,KAAK,OAAQC,EAAO,KAAK,MAAM,EACvE,KAAOS,EAAOC,GAAWX,EAAO,KAAKA,EAAO,KAAK,OAASU,EAAO,CAAC,GAAKT,EAAO,KAAKA,EAAO,KAAK,OAASS,EAAO,CAAC,GAC5GA,IACAL,IACAC,IAEJ,MAAO,CAAE,EAAGD,EAAM,EAAGC,CAAK,CAC9B,CACA,GAAIN,EAAO,QAAQ,MAAQC,EAAO,QAAQ,KAAM,CAC5C,IAAIE,EAAQC,GAAYJ,EAAO,QAASC,EAAO,QAASI,EAAO,EAAGC,EAAO,CAAC,EAC1E,GAAIH,EACA,OAAOA,CACf,CACAE,GAAQI,EACRH,GAAQG,CACZ,CACJ,CASA,IAAMG,EAAN,MAAMC,CAAS,CAIX,YAIAC,EAASL,EAAM,CAGX,GAFA,KAAK,QAAUK,EACf,KAAK,KAAOL,GAAQ,EAChBA,GAAQ,KACR,QAASV,EAAI,EAAGA,EAAIe,EAAQ,OAAQf,IAChC,KAAK,MAAQe,EAAQf,CAAC,EAAE,QACpC,CAMA,aAAagB,EAAMC,EAAIC,EAAGC,EAAY,EAAGC,EAAQ,CAC7C,QAASpB,EAAI,EAAGD,EAAM,EAAGA,EAAMkB,EAAIjB,IAAK,CACpC,IAAIqB,EAAQ,KAAK,QAAQrB,CAAC,EAAGsB,EAAMvB,EAAMsB,EAAM,SAC/C,GAAIC,EAAMN,GAAQE,EAAEG,EAAOF,EAAYpB,EAAKqB,GAAU,KAAMpB,CAAC,IAAM,IAASqB,EAAM,QAAQ,KAAM,CAC5F,IAAIE,EAAQxB,EAAM,EAClBsB,EAAM,aAAa,KAAK,IAAI,EAAGL,EAAOO,CAAK,EAAG,KAAK,IAAIF,EAAM,QAAQ,KAAMJ,EAAKM,CAAK,EAAGL,EAAGC,EAAYI,CAAK,CAChH,CACAxB,EAAMuB,CACV,CACJ,CAMA,YAAYJ,EAAG,CACX,KAAK,aAAa,EAAG,KAAK,KAAMA,CAAC,CACrC,CAKA,YAAYF,EAAMC,EAAIO,EAAgBC,EAAU,CAC5C,IAAIC,EAAO,GAAIC,EAAQ,GACvB,YAAK,aAAaX,EAAMC,EAAI,CAACW,EAAM7B,IAAQ,CACvC,IAAI8B,EAAWD,EAAK,OAASA,EAAK,KAAK,MAAM,KAAK,IAAIZ,EAAMjB,CAAG,EAAIA,EAAKkB,EAAKlB,CAAG,EACzE6B,EAAK,OACFH,EAAY,OAAOA,GAAa,WAAaA,EAASG,CAAI,EAAIH,EAC1DG,EAAK,KAAK,KAAK,SAAWA,EAAK,KAAK,KAAK,SAASA,CAAI,EAClD,GAHG,GAIjBA,EAAK,UAAYA,EAAK,QAAUC,GAAYD,EAAK,cAAgBJ,IAC7DG,EACAA,EAAQ,GAERD,GAAQF,GAEhBE,GAAQG,CACZ,EAAG,CAAC,EACGH,CACX,CAKA,OAAOI,EAAO,CACV,GAAI,CAACA,EAAM,KACP,OAAO,KACX,GAAI,CAAC,KAAK,KACN,OAAOA,EACX,IAAIC,EAAO,KAAK,UAAWJ,EAAQG,EAAM,WAAYf,EAAU,KAAK,QAAQ,MAAM,EAAG,EAAI,EAKzF,IAJIgB,EAAK,QAAUA,EAAK,WAAWJ,CAAK,IACpCZ,EAAQA,EAAQ,OAAS,CAAC,EAAIgB,EAAK,SAASA,EAAK,KAAOJ,EAAM,IAAI,EAClE,EAAI,GAED,EAAIG,EAAM,QAAQ,OAAQ,IAC7Bf,EAAQ,KAAKe,EAAM,QAAQ,CAAC,CAAC,EACjC,OAAO,IAAIhB,EAASC,EAAS,KAAK,KAAOe,EAAM,IAAI,CACvD,CAIA,IAAId,EAAMC,EAAK,KAAK,KAAM,CACtB,GAAID,GAAQ,GAAKC,GAAM,KAAK,KACxB,OAAO,KACX,IAAIe,EAAS,CAAC,EAAGtB,EAAO,EACxB,GAAIO,EAAKD,EACL,QAAS,EAAI,EAAGjB,EAAM,EAAGA,EAAMkB,EAAI,IAAK,CACpC,IAAII,EAAQ,KAAK,QAAQ,CAAC,EAAGC,EAAMvB,EAAMsB,EAAM,SAC3CC,EAAMN,KACFjB,EAAMiB,GAAQM,EAAML,KAChBI,EAAM,OACNA,EAAQA,EAAM,IAAI,KAAK,IAAI,EAAGL,EAAOjB,CAAG,EAAG,KAAK,IAAIsB,EAAM,KAAK,OAAQJ,EAAKlB,CAAG,CAAC,EAEhFsB,EAAQA,EAAM,IAAI,KAAK,IAAI,EAAGL,EAAOjB,EAAM,CAAC,EAAG,KAAK,IAAIsB,EAAM,QAAQ,KAAMJ,EAAKlB,EAAM,CAAC,CAAC,GAEjGiC,EAAO,KAAKX,CAAK,EACjBX,GAAQW,EAAM,UAElBtB,EAAMuB,CACV,CACJ,OAAO,IAAIR,EAASkB,EAAQtB,CAAI,CACpC,CAIA,WAAWM,EAAMC,EAAI,CACjB,OAAID,GAAQC,EACDH,EAAS,MAChBE,GAAQ,GAAKC,GAAM,KAAK,QAAQ,OACzB,KACJ,IAAIH,EAAS,KAAK,QAAQ,MAAME,EAAMC,CAAE,CAAC,CACpD,CAKA,aAAagB,EAAOL,EAAM,CACtB,IAAIM,EAAU,KAAK,QAAQD,CAAK,EAChC,GAAIC,GAAWN,EACX,OAAO,KACX,IAAIO,EAAO,KAAK,QAAQ,MAAM,EAC1BzB,EAAO,KAAK,KAAOkB,EAAK,SAAWM,EAAQ,SAC/C,OAAAC,EAAKF,CAAK,EAAIL,EACP,IAAId,EAASqB,EAAMzB,CAAI,CAClC,CAKA,WAAWkB,EAAM,CACb,OAAO,IAAId,EAAS,CAACc,CAAI,EAAE,OAAO,KAAK,OAAO,EAAG,KAAK,KAAOA,EAAK,QAAQ,CAC9E,CAKA,SAASA,EAAM,CACX,OAAO,IAAId,EAAS,KAAK,QAAQ,OAAOc,CAAI,EAAG,KAAK,KAAOA,EAAK,QAAQ,CAC5E,CAIA,GAAGE,EAAO,CACN,GAAI,KAAK,QAAQ,QAAUA,EAAM,QAAQ,OACrC,MAAO,GACX,QAAS9B,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IACrC,GAAI,CAAC,KAAK,QAAQA,CAAC,EAAE,GAAG8B,EAAM,QAAQ9B,CAAC,CAAC,EACpC,MAAO,GACf,MAAO,EACX,CAIA,IAAI,YAAa,CAAE,OAAO,KAAK,QAAQ,OAAS,KAAK,QAAQ,CAAC,EAAI,IAAM,CAIxE,IAAI,WAAY,CAAE,OAAO,KAAK,QAAQ,OAAS,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAAI,IAAM,CAI7F,IAAI,YAAa,CAAE,OAAO,KAAK,QAAQ,MAAQ,CAK/C,MAAMiC,EAAO,CACT,IAAIG,EAAQ,KAAK,QAAQH,CAAK,EAC9B,GAAI,CAACG,EACD,MAAM,IAAI,WAAW,SAAWH,EAAQ,qBAAuB,IAAI,EACvE,OAAOG,CACX,CAIA,WAAWH,EAAO,CACd,OAAO,KAAK,QAAQA,CAAK,GAAK,IAClC,CAKA,QAAQf,EAAG,CACP,QAASlB,EAAI,EAAGqC,EAAI,EAAGrC,EAAI,KAAK,QAAQ,OAAQA,IAAK,CACjD,IAAIqB,EAAQ,KAAK,QAAQrB,CAAC,EAC1BkB,EAAEG,EAAOgB,EAAGrC,CAAC,EACbqC,GAAKhB,EAAM,QACf,CACJ,CAKA,cAAcS,EAAO/B,EAAM,EAAG,CAC1B,OAAOH,GAAc,KAAMkC,EAAO/B,CAAG,CACzC,CAOA,YAAY+B,EAAO/B,EAAM,KAAK,KAAMuC,EAAWR,EAAM,KAAM,CACvD,OAAOzB,GAAY,KAAMyB,EAAO/B,EAAKuC,CAAQ,CACjD,CAMA,UAAUvC,EAAK,CACX,GAAIA,GAAO,EACP,OAAOwC,GAAS,EAAGxC,CAAG,EAC1B,GAAIA,GAAO,KAAK,KACZ,OAAOwC,GAAS,KAAK,QAAQ,OAAQxC,CAAG,EAC5C,GAAIA,EAAM,KAAK,MAAQA,EAAM,EACzB,MAAM,IAAI,WAAW,YAAYA,CAAG,yBAAyB,IAAI,GAAG,EACxE,QAASC,EAAI,EAAGwC,EAAS,GAAIxC,IAAK,CAC9B,IAAIyC,EAAM,KAAK,MAAMzC,CAAC,EAAGsB,EAAMkB,EAASC,EAAI,SAC5C,GAAInB,GAAOvB,EACP,OAAIuB,GAAOvB,EACAwC,GAASvC,EAAI,EAAGsB,CAAG,EACvBiB,GAASvC,EAAGwC,CAAM,EAE7BA,EAASlB,CACb,CACJ,CAIA,UAAW,CAAE,MAAO,IAAM,KAAK,cAAc,EAAI,GAAK,CAItD,eAAgB,CAAE,OAAO,KAAK,QAAQ,KAAK,IAAI,CAAG,CAIlD,QAAS,CACL,OAAO,KAAK,QAAQ,OAAS,KAAK,QAAQ,IAAIoB,GAAKA,EAAE,OAAO,CAAC,EAAI,IACrE,CAIA,OAAO,SAASC,EAAQC,EAAO,CAC3B,GAAI,CAACA,EACD,OAAO9B,EAAS,MACpB,GAAI,CAAC,MAAM,QAAQ8B,CAAK,EACpB,MAAM,IAAI,WAAW,qCAAqC,EAC9D,OAAO,IAAI9B,EAAS8B,EAAM,IAAID,EAAO,YAAY,CAAC,CACtD,CAKA,OAAO,UAAUE,EAAO,CACpB,GAAI,CAACA,EAAM,OACP,OAAO/B,EAAS,MACpB,IAAIgC,EAAQpC,EAAO,EACnB,QAASV,EAAI,EAAGA,EAAI6C,EAAM,OAAQ7C,IAAK,CACnC,IAAI4B,EAAOiB,EAAM7C,CAAC,EAClBU,GAAQkB,EAAK,SACT5B,GAAK4B,EAAK,QAAUiB,EAAM7C,EAAI,CAAC,EAAE,WAAW4B,CAAI,GAC3CkB,IACDA,EAASD,EAAM,MAAM,EAAG7C,CAAC,GAC7B8C,EAAOA,EAAO,OAAS,CAAC,EAAIlB,EACvB,SAASkB,EAAOA,EAAO,OAAS,CAAC,EAAE,KAAOlB,EAAK,IAAI,GAEnDkB,GACLA,EAAO,KAAKlB,CAAI,CAExB,CACA,OAAO,IAAId,EAASgC,GAAUD,EAAOnC,CAAI,CAC7C,CAOA,OAAO,KAAKqC,EAAO,CACf,GAAI,CAACA,EACD,OAAOjC,EAAS,MACpB,GAAIiC,aAAiBjC,EACjB,OAAOiC,EACX,GAAI,MAAM,QAAQA,CAAK,EACnB,OAAO,KAAK,UAAUA,CAAK,EAC/B,GAAIA,EAAM,MACN,OAAO,IAAIjC,EAAS,CAACiC,CAAK,EAAGA,EAAM,QAAQ,EAC/C,MAAM,IAAI,WAAW,mBAAqBA,EAAQ,kBAC7CA,EAAM,aAAe,mEAAqE,GAAG,CACtG,CACJ,EAMAlC,EAAS,MAAQ,IAAIA,EAAS,CAAC,EAAG,CAAC,EACnC,IAAMuB,GAAQ,CAAE,MAAO,EAAG,OAAQ,CAAE,EACpC,SAASG,GAASN,EAAOe,EAAQ,CAC7B,OAAAZ,GAAM,MAAQH,EACdG,GAAM,OAASY,EACRZ,EACX,CAEA,SAASa,GAAYpD,EAAGC,EAAG,CACvB,GAAID,IAAMC,EACN,MAAO,GACX,GAAI,EAAED,GAAK,OAAOA,GAAK,WACnB,EAAEC,GAAK,OAAOA,GAAK,UACnB,MAAO,GACX,IAAI+C,EAAQ,MAAM,QAAQhD,CAAC,EAC3B,GAAI,MAAM,QAAQC,CAAC,GAAK+C,EACpB,MAAO,GACX,GAAIA,EAAO,CACP,GAAIhD,EAAE,QAAUC,EAAE,OACd,MAAO,GACX,QAASE,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAC1B,GAAI,CAACiD,GAAYpD,EAAEG,CAAC,EAAGF,EAAEE,CAAC,CAAC,EACvB,MAAO,EACnB,KACK,CACD,QAASqC,KAAKxC,EACV,GAAI,EAAEwC,KAAKvC,IAAM,CAACmD,GAAYpD,EAAEwC,CAAC,EAAGvC,EAAEuC,CAAC,CAAC,EACpC,MAAO,GACf,QAASA,KAAKvC,EACV,GAAI,EAAEuC,KAAKxC,GACP,MAAO,EACnB,CACA,MAAO,EACX,CAUA,IAAMqD,GAAN,MAAMC,CAAK,CAIP,YAIAC,EAIAC,EAAO,CACH,KAAK,KAAOD,EACZ,KAAK,MAAQC,CACjB,CAQA,SAASC,EAAK,CACV,IAAInB,EAAMoB,EAAS,GACnB,QAASvD,EAAI,EAAGA,EAAIsD,EAAI,OAAQtD,IAAK,CACjC,IAAI8B,EAAQwB,EAAItD,CAAC,EACjB,GAAI,KAAK,GAAG8B,CAAK,EACb,OAAOwB,EACX,GAAI,KAAK,KAAK,SAASxB,EAAM,IAAI,EACxBK,IACDA,EAAOmB,EAAI,MAAM,EAAGtD,CAAC,OAExB,IAAI8B,EAAM,KAAK,SAAS,KAAK,IAAI,EAClC,OAAOwB,EAGH,CAACC,GAAUzB,EAAM,KAAK,KAAO,KAAK,KAAK,OAClCK,IACDA,EAAOmB,EAAI,MAAM,EAAGtD,CAAC,GACzBmC,EAAK,KAAK,IAAI,EACdoB,EAAS,IAETpB,GACAA,EAAK,KAAKL,CAAK,EAE3B,CACA,OAAKK,IACDA,EAAOmB,EAAI,MAAM,GAChBC,GACDpB,EAAK,KAAK,IAAI,EACXA,CACX,CAKA,cAAcmB,EAAK,CACf,QAAStD,EAAI,EAAGA,EAAIsD,EAAI,OAAQtD,IAC5B,GAAI,KAAK,GAAGsD,EAAItD,CAAC,CAAC,EACd,OAAOsD,EAAI,MAAM,EAAGtD,CAAC,EAAE,OAAOsD,EAAI,MAAMtD,EAAI,CAAC,CAAC,EACtD,OAAOsD,CACX,CAIA,QAAQA,EAAK,CACT,QAAStD,EAAI,EAAGA,EAAIsD,EAAI,OAAQtD,IAC5B,GAAI,KAAK,GAAGsD,EAAItD,CAAC,CAAC,EACd,MAAO,GACf,MAAO,EACX,CAKA,GAAG8B,EAAO,CACN,OAAO,MAAQA,GACV,KAAK,MAAQA,EAAM,MAAQmB,GAAY,KAAK,MAAOnB,EAAM,KAAK,CACvE,CAIA,QAAS,CACL,IAAI0B,EAAM,CAAE,KAAM,KAAK,KAAK,IAAK,EACjC,QAASC,KAAK,KAAK,MAAO,CACtBD,EAAI,MAAQ,KAAK,MACjB,KACJ,CACA,OAAOA,CACX,CAIA,OAAO,SAASb,EAAQe,EAAM,CAC1B,GAAI,CAACA,EACD,MAAM,IAAI,WAAW,iCAAiC,EAC1D,IAAIN,EAAOT,EAAO,MAAMe,EAAK,IAAI,EACjC,GAAI,CAACN,EACD,MAAM,IAAI,WAAW,yBAAyBM,EAAK,IAAI,iBAAiB,EAC5E,IAAIC,EAAOP,EAAK,OAAOM,EAAK,KAAK,EACjC,OAAAN,EAAK,WAAWO,EAAK,KAAK,EACnBA,CACX,CAIA,OAAO,QAAQ9D,EAAGC,EAAG,CACjB,GAAID,GAAKC,EACL,MAAO,GACX,GAAID,EAAE,QAAUC,EAAE,OACd,MAAO,GACX,QAASE,EAAI,EAAGA,EAAIH,EAAE,OAAQG,IAC1B,GAAI,CAACH,EAAEG,CAAC,EAAE,GAAGF,EAAEE,CAAC,CAAC,EACb,MAAO,GACf,MAAO,EACX,CAKA,OAAO,QAAQ4D,EAAO,CAClB,GAAI,CAACA,GAAS,MAAM,QAAQA,CAAK,GAAKA,EAAM,QAAU,EAClD,OAAOT,EAAK,KAChB,GAAIS,aAAiBT,EACjB,MAAO,CAACS,CAAK,EACjB,IAAIzB,EAAOyB,EAAM,MAAM,EACvB,OAAAzB,EAAK,KAAK,CAAC,EAAGrC,IAAM,EAAE,KAAK,KAAOA,EAAE,KAAK,IAAI,EACtCqC,CACX,CACJ,EAIAe,GAAK,KAAO,CAAC,EAMb,IAAMW,GAAN,cAA2B,KAAM,CACjC,EAiBMC,EAAN,MAAMC,CAAM,CAaR,YAIAhD,EAIAiD,EAIAC,EAAS,CACL,KAAK,QAAUlD,EACf,KAAK,UAAYiD,EACjB,KAAK,QAAUC,CACnB,CAIA,IAAI,MAAO,CACP,OAAO,KAAK,QAAQ,KAAO,KAAK,UAAY,KAAK,OACrD,CAIA,SAASlE,EAAKmE,EAAU,CACpB,IAAInD,EAAUoD,GAAW,KAAK,QAASpE,EAAM,KAAK,UAAWmE,CAAQ,EACrE,OAAOnD,GAAW,IAAIgD,EAAMhD,EAAS,KAAK,UAAW,KAAK,OAAO,CACrE,CAIA,cAAcC,EAAMC,EAAI,CACpB,OAAO,IAAI8C,EAAMK,GAAY,KAAK,QAASpD,EAAO,KAAK,UAAWC,EAAK,KAAK,SAAS,EAAG,KAAK,UAAW,KAAK,OAAO,CACxH,CAIA,GAAGa,EAAO,CACN,OAAO,KAAK,QAAQ,GAAGA,EAAM,OAAO,GAAK,KAAK,WAAaA,EAAM,WAAa,KAAK,SAAWA,EAAM,OACxG,CAIA,UAAW,CACP,OAAO,KAAK,QAAU,IAAM,KAAK,UAAY,IAAM,KAAK,QAAU,GACtE,CAIA,QAAS,CACL,GAAI,CAAC,KAAK,QAAQ,KACd,OAAO,KACX,IAAI4B,EAAO,CAAE,QAAS,KAAK,QAAQ,OAAO,CAAE,EAC5C,OAAI,KAAK,UAAY,IACjBA,EAAK,UAAY,KAAK,WACtB,KAAK,QAAU,IACfA,EAAK,QAAU,KAAK,SACjBA,CACX,CAIA,OAAO,SAASf,EAAQe,EAAM,CAC1B,GAAI,CAACA,EACD,OAAOK,EAAM,MACjB,IAAIC,EAAYN,EAAK,WAAa,EAAGO,EAAUP,EAAK,SAAW,EAC/D,GAAI,OAAOM,GAAa,UAAY,OAAOC,GAAW,SAClD,MAAM,IAAI,WAAW,kCAAkC,EAC3D,OAAO,IAAIF,EAAMlD,EAAS,SAAS8B,EAAQe,EAAK,OAAO,EAAGM,EAAWC,CAAO,CAChF,CAKA,OAAO,QAAQC,EAAUG,EAAgB,GAAM,CAC3C,IAAIL,EAAY,EAAGC,EAAU,EAC7B,QAASvB,EAAIwB,EAAS,WAAYxB,GAAK,CAACA,EAAE,SAAW2B,GAAiB,CAAC3B,EAAE,KAAK,KAAK,WAAYA,EAAIA,EAAE,WACjGsB,IACJ,QAAStB,EAAIwB,EAAS,UAAWxB,GAAK,CAACA,EAAE,SAAW2B,GAAiB,CAAC3B,EAAE,KAAK,KAAK,WAAYA,EAAIA,EAAE,UAChGuB,IACJ,OAAO,IAAIF,EAAMG,EAAUF,EAAWC,CAAO,CACjD,CACJ,EAIAH,EAAM,MAAQ,IAAIA,EAAMjD,EAAS,MAAO,EAAG,CAAC,EAC5C,SAASuD,GAAYrD,EAASC,EAAMC,EAAI,CACpC,GAAI,CAAE,MAAAgB,EAAO,OAAAe,CAAO,EAAIjC,EAAQ,UAAUC,CAAI,EAAGK,EAAQN,EAAQ,WAAWkB,CAAK,EAC7E,CAAE,MAAOqC,EAAS,OAAQC,CAAS,EAAIxD,EAAQ,UAAUE,CAAE,EAC/D,GAAI+B,GAAUhC,GAAQK,EAAM,OAAQ,CAChC,GAAIkD,GAAYtD,GAAM,CAACF,EAAQ,MAAMuD,CAAO,EAAE,OAC1C,MAAM,IAAI,WAAW,yBAAyB,EAClD,OAAOvD,EAAQ,IAAI,EAAGC,CAAI,EAAE,OAAOD,EAAQ,IAAIE,CAAE,CAAC,CACtD,CACA,GAAIgB,GAASqC,EACT,MAAM,IAAI,WAAW,yBAAyB,EAClD,OAAOvD,EAAQ,aAAakB,EAAOZ,EAAM,KAAK+C,GAAY/C,EAAM,QAASL,EAAOgC,EAAS,EAAG/B,EAAK+B,EAAS,CAAC,CAAC,CAAC,CACjH,CACA,SAASmB,GAAWpD,EAASyD,EAAMC,EAAQrD,EAAQ,CAC/C,GAAI,CAAE,MAAAa,EAAO,OAAAe,CAAO,EAAIjC,EAAQ,UAAUyD,CAAI,EAAGnD,EAAQN,EAAQ,WAAWkB,CAAK,EACjF,GAAIe,GAAUwB,GAAQnD,EAAM,OACxB,OAAID,GAAU,CAACA,EAAO,WAAWa,EAAOA,EAAOwC,CAAM,EAC1C,KACJ1D,EAAQ,IAAI,EAAGyD,CAAI,EAAE,OAAOC,CAAM,EAAE,OAAO1D,EAAQ,IAAIyD,CAAI,CAAC,EAEvE,IAAIpE,EAAQ+D,GAAW9C,EAAM,QAASmD,EAAOxB,EAAS,EAAGyB,EAAQpD,CAAK,EACtE,OAAOjB,GAASW,EAAQ,aAAakB,EAAOZ,EAAM,KAAKjB,CAAK,CAAC,CACjE,CACA,SAASsE,GAAQC,EAAOC,EAAKC,EAAO,CAChC,GAAIA,EAAM,UAAYF,EAAM,MACxB,MAAM,IAAId,GAAa,iDAAiD,EAC5E,GAAIc,EAAM,MAAQE,EAAM,WAAaD,EAAI,MAAQC,EAAM,QACnD,MAAM,IAAIhB,GAAa,0BAA0B,EACrD,OAAOiB,GAAaH,EAAOC,EAAKC,EAAO,CAAC,CAC5C,CACA,SAASC,GAAaH,EAAOC,EAAKC,EAAOE,EAAO,CAC5C,IAAI9C,EAAQ0C,EAAM,MAAMI,CAAK,EAAGnD,EAAO+C,EAAM,KAAKI,CAAK,EACvD,GAAI9C,GAAS2C,EAAI,MAAMG,CAAK,GAAKA,EAAQJ,EAAM,MAAQE,EAAM,UAAW,CACpE,IAAIzE,EAAQ0E,GAAaH,EAAOC,EAAKC,EAAOE,EAAQ,CAAC,EACrD,OAAOnD,EAAK,KAAKA,EAAK,QAAQ,aAAaK,EAAO7B,CAAK,CAAC,CAC5D,SACUyE,EAAM,QAAQ,KAGnB,GAAI,CAACA,EAAM,WAAa,CAACA,EAAM,SAAWF,EAAM,OAASI,GAASH,EAAI,OAASG,EAAO,CACvF,IAAI3D,EAASuD,EAAM,OAAQ5D,EAAUK,EAAO,QAC5C,OAAO4D,GAAM5D,EAAQL,EAAQ,IAAI,EAAG4D,EAAM,YAAY,EAAE,OAAOE,EAAM,OAAO,EAAE,OAAO9D,EAAQ,IAAI6D,EAAI,YAAY,CAAC,CAAC,CACvH,KACK,CACD,GAAI,CAAE,MAAArD,EAAO,IAAAD,CAAI,EAAI2D,GAAuBJ,EAAOF,CAAK,EACxD,OAAOK,GAAMpD,EAAMsD,GAAgBP,EAAOpD,EAAOD,EAAKsD,EAAKG,CAAK,CAAC,CACrE,KATI,QAAOC,GAAMpD,EAAMuD,GAAcR,EAAOC,EAAKG,CAAK,CAAC,CAU3D,CACA,SAASK,GAAUC,EAAMC,EAAK,CAC1B,GAAI,CAACA,EAAI,KAAK,kBAAkBD,EAAK,IAAI,EACrC,MAAM,IAAIxB,GAAa,eAAiByB,EAAI,KAAK,KAAO,SAAWD,EAAK,KAAK,IAAI,CACzF,CACA,SAASE,GAASC,EAASC,EAAQV,EAAO,CACtC,IAAInD,EAAO4D,EAAQ,KAAKT,CAAK,EAC7B,OAAAK,GAAUxD,EAAM6D,EAAO,KAAKV,CAAK,CAAC,EAC3BnD,CACX,CACA,SAAS8D,GAAQrE,EAAOsE,EAAQ,CAC5B,IAAI5D,EAAO4D,EAAO,OAAS,EACvB5D,GAAQ,GAAKV,EAAM,QAAUA,EAAM,WAAWsE,EAAO5D,CAAI,CAAC,EAC1D4D,EAAO5D,CAAI,EAAIV,EAAM,SAASsE,EAAO5D,CAAI,EAAE,KAAOV,EAAM,IAAI,EAE5DsE,EAAO,KAAKtE,CAAK,CACzB,CACA,SAASuE,GAASC,EAAQC,EAAMf,EAAOY,EAAQ,CAC3C,IAAI/D,GAAQkE,GAAQD,GAAQ,KAAKd,CAAK,EAClCgB,EAAa,EAAGC,EAAWF,EAAOA,EAAK,MAAMf,CAAK,EAAInD,EAAK,WAC3DiE,IACAE,EAAaF,EAAO,MAAMd,CAAK,EAC3Bc,EAAO,MAAQd,EACfgB,IAEKF,EAAO,aACZH,GAAQG,EAAO,UAAWF,CAAM,EAChCI,MAGR,QAAS/F,EAAI+F,EAAY/F,EAAIgG,EAAUhG,IACnC0F,GAAQ9D,EAAK,MAAM5B,CAAC,EAAG2F,CAAM,EAC7BG,GAAQA,EAAK,OAASf,GAASe,EAAK,YACpCJ,GAAQI,EAAK,WAAYH,CAAM,CACvC,CACA,SAASX,GAAMpD,EAAMb,EAAS,CAC1B,OAAAa,EAAK,KAAK,aAAab,CAAO,EACvBa,EAAK,KAAKb,CAAO,CAC5B,CACA,SAASmE,GAAgBP,EAAOkB,EAAQC,EAAMlB,EAAKG,EAAO,CACtD,IAAIf,EAAYW,EAAM,MAAQI,GAASQ,GAASZ,EAAOkB,EAAQd,EAAQ,CAAC,EACpEd,EAAUW,EAAI,MAAQG,GAASQ,GAASO,EAAMlB,EAAKG,EAAQ,CAAC,EAC5DhE,EAAU,CAAC,EACf,OAAA6E,GAAS,KAAMjB,EAAOI,EAAOhE,CAAO,EAChCiD,GAAaC,GAAW4B,EAAO,MAAMd,CAAK,GAAKe,EAAK,MAAMf,CAAK,GAC/DK,GAAUpB,EAAWC,CAAO,EAC5ByB,GAAQV,GAAMhB,EAAWkB,GAAgBP,EAAOkB,EAAQC,EAAMlB,EAAKG,EAAQ,CAAC,CAAC,EAAGhE,CAAO,IAGnFiD,GACA0B,GAAQV,GAAMhB,EAAWmB,GAAcR,EAAOkB,EAAQd,EAAQ,CAAC,CAAC,EAAGhE,CAAO,EAC9E6E,GAASC,EAAQC,EAAMf,EAAOhE,CAAO,EACjCkD,GACAyB,GAAQV,GAAMf,EAASkB,GAAcW,EAAMlB,EAAKG,EAAQ,CAAC,CAAC,EAAGhE,CAAO,GAE5E6E,GAAShB,EAAK,KAAMG,EAAOhE,CAAO,EAC3B,IAAIF,EAASE,CAAO,CAC/B,CACA,SAASoE,GAAcR,EAAOC,EAAKG,EAAO,CACtC,IAAIhE,EAAU,CAAC,EAEf,GADA6E,GAAS,KAAMjB,EAAOI,EAAOhE,CAAO,EAChC4D,EAAM,MAAQI,EAAO,CACrB,IAAI3B,EAAOmC,GAASZ,EAAOC,EAAKG,EAAQ,CAAC,EACzCW,GAAQV,GAAM5B,EAAM+B,GAAcR,EAAOC,EAAKG,EAAQ,CAAC,CAAC,EAAGhE,CAAO,CACtE,CACA,OAAA6E,GAAShB,EAAK,KAAMG,EAAOhE,CAAO,EAC3B,IAAIF,EAASE,CAAO,CAC/B,CACA,SAASkE,GAAuBJ,EAAOoB,EAAQ,CAC3C,IAAIC,EAAQD,EAAO,MAAQpB,EAAM,UAC7BjD,EADiDqE,EAAO,KAAKC,CAAK,EACpD,KAAKrB,EAAM,OAAO,EACpC,QAAS,EAAIqB,EAAQ,EAAG,GAAK,EAAG,IAC5BtE,EAAOqE,EAAO,KAAK,CAAC,EAAE,KAAKpF,EAAS,KAAKe,CAAI,CAAC,EAClD,MAAO,CAAE,MAAOA,EAAK,eAAeiD,EAAM,UAAYqB,CAAK,EACvD,IAAKtE,EAAK,eAAeA,EAAK,QAAQ,KAAOiD,EAAM,QAAUqB,CAAK,CAAE,CAC5E,CAYA,IAAMC,GAAN,MAAMC,CAAY,CAId,YAIArG,EAIAsG,EAIAC,EAAc,CACV,KAAK,IAAMvG,EACX,KAAK,KAAOsG,EACZ,KAAK,aAAeC,EACpB,KAAK,MAAQD,EAAK,OAAS,EAAI,CACnC,CAIA,aAAaE,EAAK,CACd,OAAIA,GAAO,KACA,KAAK,MACZA,EAAM,EACC,KAAK,MAAQA,EACjBA,CACX,CAMA,IAAI,QAAS,CAAE,OAAO,KAAK,KAAK,KAAK,KAAK,CAAG,CAI7C,IAAI,KAAM,CAAE,OAAO,KAAK,KAAK,CAAC,CAAG,CAKjC,KAAKxB,EAAO,CAAE,OAAO,KAAK,KAAK,KAAK,aAAaA,CAAK,EAAI,CAAC,CAAG,CAM9D,MAAMA,EAAO,CAAE,OAAO,KAAK,KAAK,KAAK,aAAaA,CAAK,EAAI,EAAI,CAAC,CAAG,CAKnE,WAAWA,EAAO,CACd,OAAAA,EAAQ,KAAK,aAAaA,CAAK,EACxB,KAAK,MAAMA,CAAK,GAAKA,GAAS,KAAK,OAAS,CAAC,KAAK,WAAa,EAAI,EAC9E,CAKA,MAAMA,EAAO,CACT,OAAAA,EAAQ,KAAK,aAAaA,CAAK,EACxBA,GAAS,EAAI,EAAI,KAAK,KAAKA,EAAQ,EAAI,CAAC,EAAI,CACvD,CAKA,IAAIA,EAAO,CACP,OAAAA,EAAQ,KAAK,aAAaA,CAAK,EACxB,KAAK,MAAMA,CAAK,EAAI,KAAK,KAAKA,CAAK,EAAE,QAAQ,IACxD,CAMA,OAAOA,EAAO,CAEV,GADAA,EAAQ,KAAK,aAAaA,CAAK,EAC3B,CAACA,EACD,MAAM,IAAI,WAAW,gDAAgD,EACzE,OAAOA,GAAS,KAAK,MAAQ,EAAI,KAAK,IAAM,KAAK,KAAKA,EAAQ,EAAI,CAAC,CACvE,CAKA,MAAMA,EAAO,CAET,GADAA,EAAQ,KAAK,aAAaA,CAAK,EAC3B,CAACA,EACD,MAAM,IAAI,WAAW,+CAA+C,EACxE,OAAOA,GAAS,KAAK,MAAQ,EAAI,KAAK,IAAM,KAAK,KAAKA,EAAQ,EAAI,CAAC,EAAI,KAAK,KAAKA,EAAQ,CAAC,EAAE,QAChG,CAMA,IAAI,YAAa,CAAE,OAAO,KAAK,IAAM,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,CAAG,CAMtE,IAAI,WAAY,CACZ,IAAI3D,EAAS,KAAK,OAAQa,EAAQ,KAAK,MAAM,KAAK,KAAK,EACvD,GAAIA,GAASb,EAAO,WAChB,OAAO,KACX,IAAIoF,EAAO,KAAK,IAAM,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,EAAGnF,EAAQD,EAAO,MAAMa,CAAK,EACjF,OAAOuE,EAAOpF,EAAO,MAAMa,CAAK,EAAE,IAAIuE,CAAI,EAAInF,CAClD,CAMA,IAAI,YAAa,CACb,IAAIY,EAAQ,KAAK,MAAM,KAAK,KAAK,EAC7BuE,EAAO,KAAK,IAAM,KAAK,KAAK,KAAK,KAAK,OAAS,CAAC,EACpD,OAAIA,EACO,KAAK,OAAO,MAAMvE,CAAK,EAAE,IAAI,EAAGuE,CAAI,EACxCvE,GAAS,EAAI,KAAO,KAAK,OAAO,MAAMA,EAAQ,CAAC,CAC1D,CAKA,WAAWA,EAAO8C,EAAO,CACrBA,EAAQ,KAAK,aAAaA,CAAK,EAC/B,IAAInD,EAAO,KAAK,KAAKmD,EAAQ,CAAC,EAAGhF,EAAMgF,GAAS,EAAI,EAAI,KAAK,KAAKA,EAAQ,EAAI,CAAC,EAAI,EACnF,QAAS,EAAI,EAAG,EAAI9C,EAAO,IACvBlC,GAAO6B,EAAK,MAAM,CAAC,EAAE,SACzB,OAAO7B,CACX,CAOA,OAAQ,CACJ,IAAIqB,EAAS,KAAK,OAAQa,EAAQ,KAAK,MAAM,EAE7C,GAAIb,EAAO,QAAQ,MAAQ,EACvB,OAAO8B,GAAK,KAEhB,GAAI,KAAK,WACL,OAAO9B,EAAO,MAAMa,CAAK,EAAE,MAC/B,IAAIoD,EAAOjE,EAAO,WAAWa,EAAQ,CAAC,EAAGH,EAAQV,EAAO,WAAWa,CAAK,EAGxE,GAAI,CAACoD,EAAM,CACP,IAAIoB,EAAMpB,EACVA,EAAOvD,EACPA,EAAQ2E,CACZ,CAGA,IAAI7C,EAAQyB,EAAK,MACjB,QAASrF,EAAI,EAAGA,EAAI4D,EAAM,OAAQ5D,IAC1B4D,EAAM5D,CAAC,EAAE,KAAK,KAAK,YAAc,KAAU,CAAC8B,GAAS,CAAC8B,EAAM5D,CAAC,EAAE,QAAQ8B,EAAM,KAAK,KAClF8B,EAAQA,EAAM5D,GAAG,EAAE,cAAc4D,CAAK,GAC9C,OAAOA,CACX,CASA,YAAYkC,EAAM,CACd,IAAIY,EAAQ,KAAK,OAAO,WAAW,KAAK,MAAM,CAAC,EAC/C,GAAI,CAACA,GAAS,CAACA,EAAM,SACjB,OAAO,KACX,IAAI9C,EAAQ8C,EAAM,MAAOC,EAAOb,EAAK,OAAO,WAAWA,EAAK,MAAM,CAAC,EACnE,QAAS,EAAI,EAAG,EAAIlC,EAAM,OAAQ,IAC1BA,EAAM,CAAC,EAAE,KAAK,KAAK,YAAc,KAAU,CAAC+C,GAAQ,CAAC/C,EAAM,CAAC,EAAE,QAAQ+C,EAAK,KAAK,KAChF/C,EAAQA,EAAM,GAAG,EAAE,cAAcA,CAAK,GAC9C,OAAOA,CACX,CAKA,YAAY7D,EAAK,CACb,QAASgF,EAAQ,KAAK,MAAOA,EAAQ,EAAGA,IACpC,GAAI,KAAK,MAAMA,CAAK,GAAKhF,GAAO,KAAK,IAAIgF,CAAK,GAAKhF,EAC/C,OAAOgF,EACf,MAAO,EACX,CAUA,WAAWjD,EAAQ,KAAM8E,EAAM,CAC3B,GAAI9E,EAAM,IAAM,KAAK,IACjB,OAAOA,EAAM,WAAW,IAAI,EAChC,QAAS+E,EAAI,KAAK,OAAS,KAAK,OAAO,eAAiB,KAAK,KAAO/E,EAAM,IAAM,EAAI,GAAI+E,GAAK,EAAGA,IAC5F,GAAI/E,EAAM,KAAO,KAAK,IAAI+E,CAAC,IAAM,CAACD,GAAQA,EAAK,KAAK,KAAKC,CAAC,CAAC,GACvD,OAAO,IAAIC,GAAU,KAAMhF,EAAO+E,CAAC,EAC3C,OAAO,IACX,CAIA,WAAW/E,EAAO,CACd,OAAO,KAAK,IAAM,KAAK,cAAgBA,EAAM,IAAMA,EAAM,YAC7D,CAIA,IAAIA,EAAO,CACP,OAAOA,EAAM,IAAM,KAAK,IAAMA,EAAQ,IAC1C,CAIA,IAAIA,EAAO,CACP,OAAOA,EAAM,IAAM,KAAK,IAAMA,EAAQ,IAC1C,CAIA,UAAW,CACP,IAAIiF,EAAM,GACV,QAAS/G,EAAI,EAAGA,GAAK,KAAK,MAAOA,IAC7B+G,IAAQA,EAAM,IAAM,IAAM,KAAK,KAAK/G,CAAC,EAAE,KAAK,KAAO,IAAM,KAAK,MAAMA,EAAI,CAAC,EAC7E,OAAO+G,EAAM,IAAM,KAAK,YAC5B,CAIA,OAAO,QAAQC,EAAKjH,EAAK,CACrB,GAAI,EAAEA,GAAO,GAAKA,GAAOiH,EAAI,QAAQ,MACjC,MAAM,IAAI,WAAW,YAAcjH,EAAM,eAAe,EAC5D,IAAIsG,EAAO,CAAC,EACR9E,EAAQ,EAAG+E,EAAevG,EAC9B,QAAS6B,EAAOoF,IAAO,CACnB,GAAI,CAAE,MAAA/E,EAAO,OAAAe,CAAO,EAAIpB,EAAK,QAAQ,UAAU0E,CAAY,EACvDW,EAAMX,EAAetD,EAKzB,GAJAqD,EAAK,KAAKzE,EAAMK,EAAOV,EAAQyB,CAAM,EACjC,CAACiE,IAELrF,EAAOA,EAAK,MAAMK,CAAK,EACnBL,EAAK,QACL,MACJ0E,EAAeW,EAAM,EACrB1F,GAASyB,EAAS,CACtB,CACA,OAAO,IAAIoD,EAAYrG,EAAKsG,EAAMC,CAAY,CAClD,CAIA,OAAO,cAAcU,EAAKjH,EAAK,CAC3B,IAAImH,EAAQC,GAAa,IAAIH,CAAG,EAChC,GAAIE,EACA,QAAS,EAAI,EAAG,EAAIA,EAAM,KAAK,OAAQ,IAAK,CACxC,IAAIE,EAAMF,EAAM,KAAK,CAAC,EACtB,GAAIE,EAAI,KAAOrH,EACX,OAAOqH,CACf,MAGAD,GAAa,IAAIH,EAAKE,EAAQ,IAAIG,EAAY,EAElD,IAAIrF,EAASkF,EAAM,KAAKA,EAAM,CAAC,EAAId,EAAY,QAAQY,EAAKjH,CAAG,EAC/D,OAAAmH,EAAM,GAAKA,EAAM,EAAI,GAAKI,GACnBtF,CACX,CACJ,EACMqF,GAAN,KAAmB,CACf,aAAc,CACV,KAAK,KAAO,CAAC,EACb,KAAK,EAAI,CACb,CACJ,EACMC,GAAmB,GAAIH,GAAe,IAAI,QAK1CL,GAAN,KAAgB,CAMZ,YAOAnC,EAKAC,EAIAG,EAAO,CACH,KAAK,MAAQJ,EACb,KAAK,IAAMC,EACX,KAAK,MAAQG,CACjB,CAIA,IAAI,OAAQ,CAAE,OAAO,KAAK,MAAM,OAAO,KAAK,MAAQ,CAAC,CAAG,CAIxD,IAAI,KAAM,CAAE,OAAO,KAAK,IAAI,MAAM,KAAK,MAAQ,CAAC,CAAG,CAInD,IAAI,QAAS,CAAE,OAAO,KAAK,MAAM,KAAK,KAAK,KAAK,CAAG,CAInD,IAAI,YAAa,CAAE,OAAO,KAAK,MAAM,MAAM,KAAK,KAAK,CAAG,CAIxD,IAAI,UAAW,CAAE,OAAO,KAAK,IAAI,WAAW,KAAK,KAAK,CAAG,CAC7D,EAEMwC,GAAa,OAAO,OAAO,IAAI,EAe/BC,GAAN,MAAMC,CAAK,CAIP,YAIArE,EAMAC,EAEAtC,EAKA6C,EAAQV,GAAK,KAAM,CACf,KAAK,KAAOE,EACZ,KAAK,MAAQC,EACb,KAAK,MAAQO,EACb,KAAK,QAAU7C,GAAWF,EAAS,KACvC,CAIA,IAAI,UAAW,CAAE,OAAO,KAAK,QAAQ,OAAS,CAQ9C,IAAI,UAAW,CAAE,OAAO,KAAK,OAAS,EAAI,EAAI,KAAK,QAAQ,IAAM,CAIjE,IAAI,YAAa,CAAE,OAAO,KAAK,QAAQ,UAAY,CAKnD,MAAMoB,EAAO,CAAE,OAAO,KAAK,QAAQ,MAAMA,CAAK,CAAG,CAIjD,WAAWA,EAAO,CAAE,OAAO,KAAK,QAAQ,WAAWA,CAAK,CAAG,CAK3D,QAAQf,EAAG,CAAE,KAAK,QAAQ,QAAQA,CAAC,CAAG,CAWtC,aAAaF,EAAMC,EAAIC,EAAGwG,EAAW,EAAG,CACpC,KAAK,QAAQ,aAAa1G,EAAMC,EAAIC,EAAGwG,EAAU,IAAI,CACzD,CAKA,YAAYxG,EAAG,CACX,KAAK,aAAa,EAAG,KAAK,QAAQ,KAAMA,CAAC,CAC7C,CAKA,IAAI,aAAc,CACd,OAAQ,KAAK,QAAU,KAAK,KAAK,KAAK,SAChC,KAAK,KAAK,KAAK,SAAS,IAAI,EAC5B,KAAK,YAAY,EAAG,KAAK,QAAQ,KAAM,EAAE,CACnD,CAQA,YAAYF,EAAMC,EAAIO,EAAgBC,EAAU,CAC5C,OAAO,KAAK,QAAQ,YAAYT,EAAMC,EAAIO,EAAgBC,CAAQ,CACtE,CAKA,IAAI,YAAa,CAAE,OAAO,KAAK,QAAQ,UAAY,CAKnD,IAAI,WAAY,CAAE,OAAO,KAAK,QAAQ,SAAW,CAIjD,GAAGK,EAAO,CACN,OAAO,MAAQA,GAAU,KAAK,WAAWA,CAAK,GAAK,KAAK,QAAQ,GAAGA,EAAM,OAAO,CACpF,CAKA,WAAWA,EAAO,CACd,OAAO,KAAK,UAAUA,EAAM,KAAMA,EAAM,MAAOA,EAAM,KAAK,CAC9D,CAKA,UAAUsB,EAAMC,EAAOO,EAAO,CAC1B,OAAO,KAAK,MAAQR,GAChBH,GAAY,KAAK,MAAOI,GAASD,EAAK,cAAgBmE,EAAU,GAChErE,GAAK,QAAQ,KAAK,MAAOU,GAASV,GAAK,IAAI,CACnD,CAKA,KAAKnC,EAAU,KAAM,CACjB,OAAIA,GAAW,KAAK,QACT,KACJ,IAAI0G,EAAK,KAAK,KAAM,KAAK,MAAO1G,EAAS,KAAK,KAAK,CAC9D,CAKA,KAAK6C,EAAO,CACR,OAAOA,GAAS,KAAK,MAAQ,KAAO,IAAI6D,EAAK,KAAK,KAAM,KAAK,MAAO,KAAK,QAAS7D,CAAK,CAC3F,CAMA,IAAI5C,EAAMC,EAAK,KAAK,QAAQ,KAAM,CAC9B,OAAID,GAAQ,GAAKC,GAAM,KAAK,QAAQ,KACzB,KACJ,KAAK,KAAK,KAAK,QAAQ,IAAID,EAAMC,CAAE,CAAC,CAC/C,CAKA,MAAMD,EAAMC,EAAK,KAAK,QAAQ,KAAM0G,EAAiB,GAAO,CACxD,GAAI3G,GAAQC,EACR,OAAO6C,EAAM,MACjB,IAAIa,EAAQ,KAAK,QAAQ3D,CAAI,EAAG4D,EAAM,KAAK,QAAQ3D,CAAE,EACjD8D,EAAQ4C,EAAiB,EAAIhD,EAAM,YAAY1D,CAAE,EACjDM,EAAQoD,EAAM,MAAMI,CAAK,EACzBhE,EADmC4D,EAAM,KAAKI,CAAK,EACpC,QAAQ,IAAIJ,EAAM,IAAMpD,EAAOqD,EAAI,IAAMrD,CAAK,EACjE,OAAO,IAAIuC,EAAM/C,EAAS4D,EAAM,MAAQI,EAAOH,EAAI,MAAQG,CAAK,CACpE,CASA,QAAQ/D,EAAMC,EAAI4D,EAAO,CACrB,OAAOH,GAAQ,KAAK,QAAQ1D,CAAI,EAAG,KAAK,QAAQC,CAAE,EAAG4D,CAAK,CAC9D,CAIA,OAAO9E,EAAK,CACR,QAAS6B,EAAO,OAAQ,CACpB,GAAI,CAAE,MAAAK,EAAO,OAAAe,CAAO,EAAIpB,EAAK,QAAQ,UAAU7B,CAAG,EAElD,GADA6B,EAAOA,EAAK,WAAWK,CAAK,EACxB,CAACL,EACD,OAAO,KACX,GAAIoB,GAAUjD,GAAO6B,EAAK,OACtB,OAAOA,EACX7B,GAAOiD,EAAS,CACpB,CACJ,CAMA,WAAWjD,EAAK,CACZ,GAAI,CAAE,MAAAkC,EAAO,OAAAe,CAAO,EAAI,KAAK,QAAQ,UAAUjD,CAAG,EAClD,MAAO,CAAE,KAAM,KAAK,QAAQ,WAAWkC,CAAK,EAAG,MAAAA,EAAO,OAAAe,CAAO,CACjE,CAMA,YAAYjD,EAAK,CACb,GAAIA,GAAO,EACP,MAAO,CAAE,KAAM,KAAM,MAAO,EAAG,OAAQ,CAAE,EAC7C,GAAI,CAAE,MAAAkC,EAAO,OAAAe,CAAO,EAAI,KAAK,QAAQ,UAAUjD,CAAG,EAClD,GAAIiD,EAASjD,EACT,MAAO,CAAE,KAAM,KAAK,QAAQ,MAAMkC,CAAK,EAAG,MAAAA,EAAO,OAAAe,CAAO,EAC5D,IAAIpB,EAAO,KAAK,QAAQ,MAAMK,EAAQ,CAAC,EACvC,MAAO,CAAE,KAAAL,EAAM,MAAOK,EAAQ,EAAG,OAAQe,EAASpB,EAAK,QAAS,CACpE,CAKA,QAAQ7B,EAAK,CAAE,OAAOoG,GAAY,cAAc,KAAMpG,CAAG,CAAG,CAI5D,eAAeA,EAAK,CAAE,OAAOoG,GAAY,QAAQ,KAAMpG,CAAG,CAAG,CAK7D,aAAaiB,EAAMC,EAAImC,EAAM,CACzB,IAAIhB,EAAQ,GACZ,OAAInB,EAAKD,GACL,KAAK,aAAaA,EAAMC,EAAIW,IACpBwB,EAAK,QAAQxB,EAAK,KAAK,IACvBQ,EAAQ,IACL,CAACA,EACX,EACEA,CACX,CAIA,IAAI,SAAU,CAAE,OAAO,KAAK,KAAK,OAAS,CAK1C,IAAI,aAAc,CAAE,OAAO,KAAK,KAAK,WAAa,CAIlD,IAAI,eAAgB,CAAE,OAAO,KAAK,KAAK,aAAe,CAKtD,IAAI,UAAW,CAAE,OAAO,KAAK,KAAK,QAAU,CAI5C,IAAI,QAAS,CAAE,OAAO,KAAK,KAAK,MAAQ,CAIxC,IAAI,QAAS,CAAE,OAAO,KAAK,KAAK,MAAQ,CAQxC,IAAI,QAAS,CAAE,OAAO,KAAK,KAAK,MAAQ,CAKxC,UAAW,CACP,GAAI,KAAK,KAAK,KAAK,cACf,OAAO,KAAK,KAAK,KAAK,cAAc,IAAI,EAC5C,IAAIwF,EAAO,KAAK,KAAK,KACrB,OAAI,KAAK,QAAQ,OACbA,GAAQ,IAAM,KAAK,QAAQ,cAAc,EAAI,KAC1CC,GAAU,KAAK,MAAOD,CAAI,CACrC,CAIA,eAAe3F,EAAO,CAClB,IAAI6F,EAAQ,KAAK,KAAK,aAAa,cAAc,KAAK,QAAS,EAAG7F,CAAK,EACvE,GAAI,CAAC6F,EACD,MAAM,IAAI,MAAM,sDAAsD,EAC1E,OAAOA,CACX,CAQA,WAAW9G,EAAMC,EAAI8G,EAAclH,EAAS,MAAOU,EAAQ,EAAGD,EAAMyG,EAAY,WAAY,CACxF,IAAIC,EAAM,KAAK,eAAehH,CAAI,EAAE,cAAc+G,EAAaxG,EAAOD,CAAG,EACrE2G,EAAMD,GAAOA,EAAI,cAAc,KAAK,QAAS/G,CAAE,EACnD,GAAI,CAACgH,GAAO,CAACA,EAAI,SACb,MAAO,GACX,QAASjI,EAAIuB,EAAOvB,EAAIsB,EAAKtB,IACzB,GAAI,CAAC,KAAK,KAAK,YAAY+H,EAAY,MAAM/H,CAAC,EAAE,KAAK,EACjD,MAAO,GACf,MAAO,EACX,CAKA,eAAegB,EAAMC,EAAImC,EAAMQ,EAAO,CAClC,GAAIA,GAAS,CAAC,KAAK,KAAK,YAAYA,CAAK,EACrC,MAAO,GACX,IAAIrC,EAAQ,KAAK,eAAeP,CAAI,EAAE,UAAUoC,CAAI,EAChD9B,EAAMC,GAASA,EAAM,cAAc,KAAK,QAASN,CAAE,EACvD,OAAOK,EAAMA,EAAI,SAAW,EAChC,CAOA,UAAUQ,EAAO,CACb,OAAIA,EAAM,QAAQ,KACP,KAAK,WAAW,KAAK,WAAY,KAAK,WAAYA,EAAM,OAAO,EAE/D,KAAK,KAAK,kBAAkBA,EAAM,IAAI,CACrD,CAKA,OAAQ,CACJ,KAAK,KAAK,aAAa,KAAK,OAAO,EACnC,KAAK,KAAK,WAAW,KAAK,KAAK,EAC/B,IAAIK,EAAOe,GAAK,KAChB,QAASlD,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAI2D,EAAO,KAAK,MAAM3D,CAAC,EACvB2D,EAAK,KAAK,WAAWA,EAAK,KAAK,EAC/BxB,EAAOwB,EAAK,SAASxB,CAAI,CAC7B,CACA,GAAI,CAACe,GAAK,QAAQf,EAAM,KAAK,KAAK,EAC9B,MAAM,IAAI,WAAW,wCAAwC,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI+F,GAAKA,EAAE,KAAK,IAAI,CAAC,EAAE,EACtH,KAAK,QAAQ,QAAQtG,GAAQA,EAAK,MAAM,CAAC,CAC7C,CAIA,QAAS,CACL,IAAI4B,EAAM,CAAE,KAAM,KAAK,KAAK,IAAK,EACjC,QAASC,KAAK,KAAK,MAAO,CACtBD,EAAI,MAAQ,KAAK,MACjB,KACJ,CACA,OAAI,KAAK,QAAQ,OACbA,EAAI,QAAU,KAAK,QAAQ,OAAO,GAClC,KAAK,MAAM,SACXA,EAAI,MAAQ,KAAK,MAAM,IAAI,GAAK,EAAE,OAAO,CAAC,GACvCA,CACX,CAIA,OAAO,SAASb,EAAQe,EAAM,CAC1B,GAAI,CAACA,EACD,MAAM,IAAI,WAAW,iCAAiC,EAC1D,IAAIE,EACJ,GAAIF,EAAK,MAAO,CACZ,GAAI,CAAC,MAAM,QAAQA,EAAK,KAAK,EACzB,MAAM,IAAI,WAAW,qCAAqC,EAC9DE,EAAQF,EAAK,MAAM,IAAIf,EAAO,YAAY,CAC9C,CACA,GAAIe,EAAK,MAAQ,OAAQ,CACrB,GAAI,OAAOA,EAAK,MAAQ,SACpB,MAAM,IAAI,WAAW,2BAA2B,EACpD,OAAOf,EAAO,KAAKe,EAAK,KAAME,CAAK,CACvC,CACA,IAAI7C,EAAUF,EAAS,SAAS8B,EAAQe,EAAK,OAAO,EAChD9B,EAAOe,EAAO,SAASe,EAAK,IAAI,EAAE,OAAOA,EAAK,MAAO3C,EAAS6C,CAAK,EACvE,OAAAhC,EAAK,KAAK,WAAWA,EAAK,KAAK,EACxBA,CACX,CACJ,EACA4F,GAAK,UAAU,KAAO,OACtB,IAAMW,GAAN,MAAMC,UAAiBZ,EAAK,CAIxB,YAAYpE,EAAMC,EAAOtC,EAAS6C,EAAO,CAErC,GADA,MAAMR,EAAMC,EAAO,KAAMO,CAAK,EAC1B,CAAC7C,EACD,MAAM,IAAI,WAAW,kCAAkC,EAC3D,KAAK,KAAOA,CAChB,CACA,UAAW,CACP,OAAI,KAAK,KAAK,KAAK,cACR,KAAK,KAAK,KAAK,cAAc,IAAI,EACrC8G,GAAU,KAAK,MAAO,KAAK,UAAU,KAAK,IAAI,CAAC,CAC1D,CACA,IAAI,aAAc,CAAE,OAAO,KAAK,IAAM,CACtC,YAAY7G,EAAMC,EAAI,CAAE,OAAO,KAAK,KAAK,MAAMD,EAAMC,CAAE,CAAG,CAC1D,IAAI,UAAW,CAAE,OAAO,KAAK,KAAK,MAAQ,CAC1C,KAAK2C,EAAO,CACR,OAAOA,GAAS,KAAK,MAAQ,KAAO,IAAIwE,EAAS,KAAK,KAAM,KAAK,MAAO,KAAK,KAAMxE,CAAK,CAC5F,CACA,SAASlC,EAAM,CACX,OAAIA,GAAQ,KAAK,KACN,KACJ,IAAI0G,EAAS,KAAK,KAAM,KAAK,MAAO1G,EAAM,KAAK,KAAK,CAC/D,CACA,IAAIV,EAAO,EAAGC,EAAK,KAAK,KAAK,OAAQ,CACjC,OAAID,GAAQ,GAAKC,GAAM,KAAK,KAAK,OACtB,KACJ,KAAK,SAAS,KAAK,KAAK,MAAMD,EAAMC,CAAE,CAAC,CAClD,CACA,GAAGa,EAAO,CACN,OAAO,KAAK,WAAWA,CAAK,GAAK,KAAK,MAAQA,EAAM,IACxD,CACA,QAAS,CACL,IAAIuG,EAAO,MAAM,OAAO,EACxB,OAAAA,EAAK,KAAO,KAAK,KACVA,CACX,CACJ,EACA,SAASR,GAAUjE,EAAOmD,EAAK,CAC3B,QAAS/G,EAAI4D,EAAM,OAAS,EAAG5D,GAAK,EAAGA,IACnC+G,EAAMnD,EAAM5D,CAAC,EAAE,KAAK,KAAO,IAAM+G,EAAM,IAC3C,OAAOA,CACX,CAQA,IAAMuB,GAAN,MAAMC,CAAa,CAIf,YAIAC,EAAU,CACN,KAAK,SAAWA,EAIhB,KAAK,KAAO,CAAC,EAIb,KAAK,UAAY,CAAC,CACtB,CAIA,OAAO,MAAMC,EAAQC,EAAW,CAC5B,IAAIC,EAAS,IAAIC,GAAYH,EAAQC,CAAS,EAC9C,GAAIC,EAAO,MAAQ,KACf,OAAOJ,EAAa,MACxB,IAAIM,EAAOC,GAAUH,CAAM,EACvBA,EAAO,MACPA,EAAO,IAAI,0BAA0B,EACzC,IAAIb,EAAQiB,GAAIC,GAAIH,CAAI,CAAC,EACzB,OAAAI,GAAiBnB,EAAOa,CAAM,EACvBb,CACX,CAKA,UAAU1E,EAAM,CACZ,QAASpD,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAClC,GAAI,KAAK,KAAKA,CAAC,EAAE,MAAQoD,EACrB,OAAO,KAAK,KAAKpD,CAAC,EAAE,KAC5B,OAAO,IACX,CAKA,cAAckJ,EAAM3H,EAAQ,EAAGD,EAAM4H,EAAK,WAAY,CAClD,IAAIzG,EAAM,KACV,QAAS,EAAIlB,EAAOkB,GAAO,EAAInB,EAAK,IAChCmB,EAAMA,EAAI,UAAUyG,EAAK,MAAM,CAAC,EAAE,IAAI,EAC1C,OAAOzG,CACX,CAIA,IAAI,eAAgB,CAChB,OAAO,KAAK,KAAK,QAAU,GAAK,KAAK,KAAK,CAAC,EAAE,KAAK,QACtD,CAKA,IAAI,aAAc,CACd,QAASzC,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAAK,CACvC,GAAI,CAAE,KAAAoD,CAAK,EAAI,KAAK,KAAKpD,CAAC,EAC1B,GAAI,EAAEoD,EAAK,QAAUA,EAAK,iBAAiB,GACvC,OAAOA,CACf,CACA,OAAO,IACX,CAIA,WAAWtB,EAAO,CACd,QAAS9B,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAClC,QAASG,EAAI,EAAGA,EAAI2B,EAAM,KAAK,OAAQ3B,IACnC,GAAI,KAAK,KAAKH,CAAC,EAAE,MAAQ8B,EAAM,KAAK3B,CAAC,EAAE,KACnC,MAAO,GACnB,MAAO,EACX,CASA,WAAWuG,EAAOyC,EAAQ,GAAOpD,EAAa,EAAG,CAC7C,IAAIqD,EAAO,CAAC,IAAI,EAChB,SAASC,EAAOvB,EAAOwB,EAAO,CAC1B,IAAIC,EAAWzB,EAAM,cAAcpB,EAAOX,CAAU,EACpD,GAAIwD,IAAa,CAACJ,GAASI,EAAS,UAChC,OAAO1I,EAAS,KAAKyI,EAAM,IAAIE,GAAMA,EAAG,cAAc,CAAC,CAAC,EAC5D,QAASxJ,EAAI,EAAGA,EAAI8H,EAAM,KAAK,OAAQ9H,IAAK,CACxC,GAAI,CAAE,KAAAoD,EAAM,KAAAuD,CAAK,EAAImB,EAAM,KAAK9H,CAAC,EACjC,GAAI,EAAEoD,EAAK,QAAUA,EAAK,iBAAiB,IAAMgG,EAAK,QAAQzC,CAAI,GAAK,GAAI,CACvEyC,EAAK,KAAKzC,CAAI,EACd,IAAIvE,EAAQiH,EAAO1C,EAAM2C,EAAM,OAAOlG,CAAI,CAAC,EAC3C,GAAIhB,EACA,OAAOA,CACf,CACJ,CACA,OAAO,IACX,CACA,OAAOiH,EAAO,KAAM,CAAC,CAAC,CAC1B,CAOA,aAAa1D,EAAQ,CACjB,QAAS3F,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,GAAK,EAC5C,GAAI,KAAK,UAAUA,CAAC,GAAK2F,EACrB,OAAO,KAAK,UAAU3F,EAAI,CAAC,EACnC,IAAIyJ,EAAW,KAAK,gBAAgB9D,CAAM,EAC1C,YAAK,UAAU,KAAKA,EAAQ8D,CAAQ,EAC7BA,CACX,CAIA,gBAAgB9D,EAAQ,CACpB,IAAIyD,EAAO,OAAO,OAAO,IAAI,EAAGM,EAAS,CAAC,CAAE,MAAO,KAAM,KAAM,KAAM,IAAK,IAAK,CAAC,EAChF,KAAOA,EAAO,QAAQ,CAClB,IAAIxH,EAAUwH,EAAO,MAAM,EAAG5B,EAAQ5F,EAAQ,MAC9C,GAAI4F,EAAM,UAAUnC,CAAM,EAAG,CACzB,IAAI3D,EAAS,CAAC,EACd,QAASwB,EAAMtB,EAASsB,EAAI,KAAMA,EAAMA,EAAI,IACxCxB,EAAO,KAAKwB,EAAI,IAAI,EACxB,OAAOxB,EAAO,QAAQ,CAC1B,CACA,QAAShC,EAAI,EAAGA,EAAI8H,EAAM,KAAK,OAAQ9H,IAAK,CACxC,GAAI,CAAE,KAAAoD,EAAM,KAAAuD,CAAK,EAAImB,EAAM,KAAK9H,CAAC,EAC7B,CAACoD,EAAK,QAAU,CAACA,EAAK,iBAAiB,GAAK,EAAEA,EAAK,QAAQgG,KAAU,CAAClH,EAAQ,MAAQyE,EAAK,YAC3F+C,EAAO,KAAK,CAAE,MAAOtG,EAAK,aAAc,KAAAA,EAAM,IAAKlB,CAAQ,CAAC,EAC5DkH,EAAKhG,EAAK,IAAI,EAAI,GAE1B,CACJ,CACA,OAAO,IACX,CAKA,IAAI,WAAY,CACZ,OAAO,KAAK,KAAK,MACrB,CAKA,KAAKV,EAAG,CACJ,GAAIA,GAAK,KAAK,KAAK,OACf,MAAM,IAAI,WAAW,cAAcA,CAAC,+BAA+B,EACvE,OAAO,KAAK,KAAKA,CAAC,CACtB,CAIA,UAAW,CACP,IAAI0G,EAAO,CAAC,EACZ,SAASO,EAAKzB,EAAG,CACbkB,EAAK,KAAKlB,CAAC,EACX,QAASlI,EAAI,EAAGA,EAAIkI,EAAE,KAAK,OAAQlI,IAC3BoJ,EAAK,QAAQlB,EAAE,KAAKlI,CAAC,EAAE,IAAI,GAAK,IAChC2J,EAAKzB,EAAE,KAAKlI,CAAC,EAAE,IAAI,CAC/B,CACA,OAAA2J,EAAK,IAAI,EACFP,EAAK,IAAI,CAAClB,EAAGlI,IAAM,CACtB,IAAI4J,EAAM5J,GAAKkI,EAAE,SAAW,IAAM,KAAO,IACzC,QAASlI,EAAI,EAAGA,EAAIkI,EAAE,KAAK,OAAQlI,IAC/B4J,IAAQ5J,EAAI,KAAO,IAAMkI,EAAE,KAAKlI,CAAC,EAAE,KAAK,KAAO,KAAOoJ,EAAK,QAAQlB,EAAE,KAAKlI,CAAC,EAAE,IAAI,EACrF,OAAO4J,CACX,CAAC,EAAE,KAAK;AAAA,CAAI,CAChB,CACJ,EAIAtB,GAAa,MAAQ,IAAIA,GAAa,EAAI,EAC1C,IAAMM,GAAN,KAAkB,CACd,YAAYH,EAAQC,EAAW,CAC3B,KAAK,OAASD,EACd,KAAK,UAAYC,EACjB,KAAK,OAAS,KACd,KAAK,IAAM,EACX,KAAK,OAASD,EAAO,MAAM,gBAAgB,EACvC,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,GAAK,IACvC,KAAK,OAAO,IAAI,EAChB,KAAK,OAAO,CAAC,GAAK,IAClB,KAAK,OAAO,MAAM,CAC1B,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,OAAO,KAAK,GAAG,CAAG,CAC3C,IAAIoB,EAAK,CAAE,OAAO,KAAK,MAAQA,IAAQ,KAAK,OAAS,GAAO,CAC5D,IAAI9C,EAAK,CAAE,MAAM,IAAI,YAAYA,EAAM,4BAA8B,KAAK,OAAS,IAAI,CAAG,CAC9F,EACA,SAAS+B,GAAUH,EAAQ,CACvB,IAAImB,EAAQ,CAAC,EACb,GACIA,EAAM,KAAKC,GAAapB,CAAM,CAAC,QAC1BA,EAAO,IAAI,GAAG,GACvB,OAAOmB,EAAM,QAAU,EAAIA,EAAM,CAAC,EAAI,CAAE,KAAM,SAAU,MAAAA,CAAM,CAClE,CACA,SAASC,GAAapB,EAAQ,CAC1B,IAAImB,EAAQ,CAAC,EACb,GACIA,EAAM,KAAKE,GAAmBrB,CAAM,CAAC,QAChCA,EAAO,MAAQA,EAAO,MAAQ,KAAOA,EAAO,MAAQ,KAC7D,OAAOmB,EAAM,QAAU,EAAIA,EAAM,CAAC,EAAI,CAAE,KAAM,MAAO,MAAAA,CAAM,CAC/D,CACA,SAASE,GAAmBrB,EAAQ,CAChC,IAAIE,EAAOoB,GAActB,CAAM,EAC/B,OACI,GAAIA,EAAO,IAAI,GAAG,EACdE,EAAO,CAAE,KAAM,OAAQ,KAAAA,CAAK,UACvBF,EAAO,IAAI,GAAG,EACnBE,EAAO,CAAE,KAAM,OAAQ,KAAAA,CAAK,UACvBF,EAAO,IAAI,GAAG,EACnBE,EAAO,CAAE,KAAM,MAAO,KAAAA,CAAK,UACtBF,EAAO,IAAI,GAAG,EACnBE,EAAOqB,GAAevB,EAAQE,CAAI,MAElC,OAER,OAAOA,CACX,CACA,SAASsB,GAASxB,EAAQ,CAClB,KAAK,KAAKA,EAAO,IAAI,GACrBA,EAAO,IAAI,yBAA2BA,EAAO,KAAO,GAAG,EAC3D,IAAI3G,EAAS,OAAO2G,EAAO,IAAI,EAC/B,OAAAA,EAAO,MACA3G,CACX,CACA,SAASkI,GAAevB,EAAQE,EAAM,CAClC,IAAIuB,EAAMD,GAASxB,CAAM,EAAG0B,EAAMD,EAClC,OAAIzB,EAAO,IAAI,GAAG,IACVA,EAAO,MAAQ,IACf0B,EAAMF,GAASxB,CAAM,EAErB0B,EAAM,IAET1B,EAAO,IAAI,GAAG,GACfA,EAAO,IAAI,uBAAuB,EAC/B,CAAE,KAAM,QAAS,IAAAyB,EAAK,IAAAC,EAAK,KAAAxB,CAAK,CAC3C,CACA,SAASyB,GAAY3B,EAAQf,EAAM,CAC/B,IAAI0B,EAAQX,EAAO,UAAWvF,EAAOkG,EAAM1B,CAAI,EAC/C,GAAIxE,EACA,MAAO,CAACA,CAAI,EAChB,IAAIpB,EAAS,CAAC,EACd,QAASuI,KAAYjB,EAAO,CACxB,IAAIlG,EAAOkG,EAAMiB,CAAQ,EACrBnH,EAAK,UAAUwE,CAAI,GACnB5F,EAAO,KAAKoB,CAAI,CACxB,CACA,OAAIpB,EAAO,QAAU,GACjB2G,EAAO,IAAI,0BAA4Bf,EAAO,SAAS,EACpD5F,CACX,CACA,SAASiI,GAActB,EAAQ,CAC3B,GAAIA,EAAO,IAAI,GAAG,EAAG,CACjB,IAAIE,EAAOC,GAAUH,CAAM,EAC3B,OAAKA,EAAO,IAAI,GAAG,GACfA,EAAO,IAAI,uBAAuB,EAC/BE,CACX,SACU,KAAK,KAAKF,EAAO,IAAI,EAY3BA,EAAO,IAAI,qBAAuBA,EAAO,KAAO,GAAG,MAZrB,CAC9B,IAAImB,EAAQQ,GAAY3B,EAAQA,EAAO,IAAI,EAAE,IAAIvF,IACzCuF,EAAO,QAAU,KACjBA,EAAO,OAASvF,EAAK,SAChBuF,EAAO,QAAUvF,EAAK,UAC3BuF,EAAO,IAAI,iCAAiC,EACzC,CAAE,KAAM,OAAQ,MAAOvF,CAAK,EACtC,EACD,OAAAuF,EAAO,MACAmB,EAAM,QAAU,EAAIA,EAAM,CAAC,EAAI,CAAE,KAAM,SAAU,MAAAA,CAAM,CAClE,CAIJ,CASA,SAASd,GAAIH,EAAM,CACf,IAAIG,EAAM,CAAC,CAAC,CAAC,EACb,OAAAwB,EAAQC,EAAQ5B,EAAM,CAAC,EAAGjH,EAAK,CAAC,EACzBoH,EACP,SAASpH,GAAO,CAAE,OAAOoH,EAAI,KAAK,CAAC,CAAC,EAAI,CAAG,CAC3C,SAAS0B,EAAK1J,EAAMC,EAAI0J,EAAM,CAC1B,IAAID,EAAO,CAAE,KAAAC,EAAM,GAAA1J,CAAG,EACtB,OAAA+H,EAAIhI,CAAI,EAAE,KAAK0J,CAAI,EACZA,CACX,CACA,SAASF,EAAQI,EAAO3J,EAAI,CACxB2J,EAAM,QAAQF,GAAQA,EAAK,GAAKzJ,CAAE,CACtC,CACA,SAASwJ,EAAQ5B,EAAM7H,EAAM,CACzB,GAAI6H,EAAK,MAAQ,SACb,OAAOA,EAAK,MAAM,OAAO,CAACe,EAAKf,IAASe,EAAI,OAAOa,EAAQ5B,EAAM7H,CAAI,CAAC,EAAG,CAAC,CAAC,EAE1E,GAAI6H,EAAK,MAAQ,MAClB,QAAS7I,EAAI,GAAIA,IAAK,CAClB,IAAI2G,EAAO8D,EAAQ5B,EAAK,MAAM7I,CAAC,EAAGgB,CAAI,EACtC,GAAIhB,GAAK6I,EAAK,MAAM,OAAS,EACzB,OAAOlC,EACX6D,EAAQ7D,EAAM3F,EAAOY,EAAK,CAAC,CAC/B,SAEKiH,EAAK,MAAQ,OAAQ,CAC1B,IAAIgC,EAAOjJ,EAAK,EAChB,OAAA8I,EAAK1J,EAAM6J,CAAI,EACfL,EAAQC,EAAQ5B,EAAK,KAAMgC,CAAI,EAAGA,CAAI,EAC/B,CAACH,EAAKG,CAAI,CAAC,CACtB,SACShC,EAAK,MAAQ,OAAQ,CAC1B,IAAIgC,EAAOjJ,EAAK,EAChB,OAAA4I,EAAQC,EAAQ5B,EAAK,KAAM7H,CAAI,EAAG6J,CAAI,EACtCL,EAAQC,EAAQ5B,EAAK,KAAMgC,CAAI,EAAGA,CAAI,EAC/B,CAACH,EAAKG,CAAI,CAAC,CACtB,KACK,IAAIhC,EAAK,MAAQ,MAClB,MAAO,CAAC6B,EAAK1J,CAAI,CAAC,EAAE,OAAOyJ,EAAQ5B,EAAK,KAAM7H,CAAI,CAAC,EAElD,GAAI6H,EAAK,MAAQ,QAAS,CAC3B,IAAIpG,EAAMzB,EACV,QAAShB,EAAI,EAAGA,EAAI6I,EAAK,IAAK7I,IAAK,CAC/B,IAAI2G,EAAO/E,EAAK,EAChB4I,EAAQC,EAAQ5B,EAAK,KAAMpG,CAAG,EAAGkE,CAAI,EACrClE,EAAMkE,CACV,CACA,GAAIkC,EAAK,KAAO,GACZ2B,EAAQC,EAAQ5B,EAAK,KAAMpG,CAAG,EAAGA,CAAG,MAGpC,SAASzC,EAAI6I,EAAK,IAAK7I,EAAI6I,EAAK,IAAK7I,IAAK,CACtC,IAAI2G,EAAO/E,EAAK,EAChB8I,EAAKjI,EAAKkE,CAAI,EACd6D,EAAQC,EAAQ5B,EAAK,KAAMpG,CAAG,EAAGkE,CAAI,EACrClE,EAAMkE,CACV,CAEJ,MAAO,CAAC+D,EAAKjI,CAAG,CAAC,CACrB,KACK,IAAIoG,EAAK,MAAQ,OAClB,MAAO,CAAC6B,EAAK1J,EAAM,OAAW6H,EAAK,KAAK,CAAC,EAGzC,MAAM,IAAI,MAAM,mBAAmB,GAE3C,CACJ,CACA,SAASiC,GAAIjL,EAAGC,EAAG,CAAE,OAAOA,EAAID,CAAG,CAInC,SAASkL,GAAS/B,EAAKpH,EAAM,CACzB,IAAII,EAAS,CAAC,EACd,OAAA2H,EAAK/H,CAAI,EACFI,EAAO,KAAK8I,EAAG,EACtB,SAASnB,EAAK/H,EAAM,CAChB,IAAIgJ,EAAQ5B,EAAIpH,CAAI,EACpB,GAAIgJ,EAAM,QAAU,GAAK,CAACA,EAAM,CAAC,EAAE,KAC/B,OAAOjB,EAAKiB,EAAM,CAAC,EAAE,EAAE,EAC3B5I,EAAO,KAAKJ,CAAI,EAChB,QAAS5B,EAAI,EAAGA,EAAI4K,EAAM,OAAQ5K,IAAK,CACnC,GAAI,CAAE,KAAA2K,EAAM,GAAA1J,CAAG,EAAI2J,EAAM5K,CAAC,EACtB,CAAC2K,GAAQ3I,EAAO,QAAQf,CAAE,GAAK,IAC/B0I,EAAK1I,CAAE,CACf,CACJ,CACJ,CAIA,SAAS8H,GAAIC,EAAK,CACd,IAAIgC,EAAU,OAAO,OAAO,IAAI,EAChC,OAAOC,EAAQF,GAAS/B,EAAK,CAAC,CAAC,EAC/B,SAASiC,EAAQC,EAAQ,CACrB,IAAItB,EAAM,CAAC,EACXsB,EAAO,QAAQtJ,GAAQ,CACnBoH,EAAIpH,CAAI,EAAE,QAAQ,CAAC,CAAE,KAAA+I,EAAM,GAAA1J,CAAG,IAAM,CAChC,GAAI,CAAC0J,EACD,OACJ,IAAIrH,EACJ,QAAStD,EAAI,EAAGA,EAAI4J,EAAI,OAAQ5J,IACxB4J,EAAI5J,CAAC,EAAE,CAAC,GAAK2K,IACbrH,EAAMsG,EAAI5J,CAAC,EAAE,CAAC,GACtB+K,GAAS/B,EAAK/H,CAAE,EAAE,QAAQW,GAAQ,CACzB0B,GACDsG,EAAI,KAAK,CAACe,EAAMrH,EAAM,CAAC,CAAC,CAAC,EACzBA,EAAI,QAAQ1B,CAAI,GAAK,IACrB0B,EAAI,KAAK1B,CAAI,CACrB,CAAC,CACL,CAAC,CACL,CAAC,EACD,IAAIuJ,EAAQH,EAAQE,EAAO,KAAK,GAAG,CAAC,EAAI,IAAI5C,GAAa4C,EAAO,QAAQlC,EAAI,OAAS,CAAC,EAAI,EAAE,EAC5F,QAAShJ,EAAI,EAAGA,EAAI4J,EAAI,OAAQ5J,IAAK,CACjC,IAAIkL,EAAStB,EAAI5J,CAAC,EAAE,CAAC,EAAE,KAAK8K,EAAG,EAC/BK,EAAM,KAAK,KAAK,CAAE,KAAMvB,EAAI5J,CAAC,EAAE,CAAC,EAAG,KAAMgL,EAAQE,EAAO,KAAK,GAAG,CAAC,GAAKD,EAAQC,CAAM,CAAE,CAAC,CAC3F,CACA,OAAOC,CACX,CACJ,CACA,SAASlC,GAAiBnB,EAAOa,EAAQ,CACrC,QAAS3I,EAAI,EAAGoL,EAAO,CAACtD,CAAK,EAAG9H,EAAIoL,EAAK,OAAQpL,IAAK,CAClD,IAAImL,EAAQC,EAAKpL,CAAC,EAAGqL,EAAO,CAACF,EAAM,SAAUpI,EAAQ,CAAC,EACtD,QAAS5C,EAAI,EAAGA,EAAIgL,EAAM,KAAK,OAAQhL,IAAK,CACxC,GAAI,CAAE,KAAAiD,EAAM,KAAAuD,CAAK,EAAIwE,EAAM,KAAKhL,CAAC,EACjC4C,EAAM,KAAKK,EAAK,IAAI,EAChBiI,GAAQ,EAAEjI,EAAK,QAAUA,EAAK,iBAAiB,KAC/CiI,EAAO,IACPD,EAAK,QAAQzE,CAAI,GAAK,IACtByE,EAAK,KAAKzE,CAAI,CACtB,CACI0E,GACA1C,EAAO,IAAI,+BAAiC5F,EAAM,KAAK,IAAI,EAAI,gFAAgF,CACvJ,CACJ,CAMA,SAASuI,GAAajI,EAAO,CACzB,IAAIkI,EAAW,OAAO,OAAO,IAAI,EACjC,QAASC,KAAYnI,EAAO,CACxB,IAAIoI,EAAOpI,EAAMmI,CAAQ,EACzB,GAAI,CAACC,EAAK,WACN,OAAO,KACXF,EAASC,CAAQ,EAAIC,EAAK,OAC9B,CACA,OAAOF,CACX,CACA,SAASG,GAAarI,EAAOT,EAAO,CAChC,IAAI+I,EAAQ,OAAO,OAAO,IAAI,EAC9B,QAAS/D,KAAQvE,EAAO,CACpB,IAAIuI,EAAQhJ,GAASA,EAAMgF,CAAI,EAC/B,GAAIgE,IAAU,OAAW,CACrB,IAAIH,EAAOpI,EAAMuE,CAAI,EACrB,GAAI6D,EAAK,WACLG,EAAQH,EAAK,YAEb,OAAM,IAAI,WAAW,mCAAqC7D,CAAI,CACtE,CACA+D,EAAM/D,CAAI,EAAIgE,CAClB,CACA,OAAOD,CACX,CACA,SAASE,GAAWxI,EAAOyI,EAAQ1I,EAAMwE,EAAM,CAC3C,QAASA,KAAQkE,EACb,GAAI,EAAElE,KAAQvE,GACV,MAAM,IAAI,WAAW,yBAAyBuE,CAAI,QAAQxE,CAAI,YAAYwE,CAAI,EAAE,EACxF,QAASA,KAAQvE,EAAO,CACpB,IAAIoI,EAAOpI,EAAMuE,CAAI,EACjB6D,EAAK,UACLA,EAAK,SAASK,EAAOlE,CAAI,CAAC,CAClC,CACJ,CACA,SAASmE,GAAUxB,EAAUlH,EAAO,CAChC,IAAIrB,EAAS,OAAO,OAAO,IAAI,EAC/B,GAAIqB,EACA,QAASuE,KAAQvE,EACbrB,EAAO4F,CAAI,EAAI,IAAIoE,GAAUzB,EAAU3C,EAAMvE,EAAMuE,CAAI,CAAC,EAChE,OAAO5F,CACX,CAOA,IAAMiK,GAAN,MAAMC,CAAS,CAIX,YAIAtE,EAIAjF,EAIAwJ,EAAM,CACF,KAAK,KAAOvE,EACZ,KAAK,OAASjF,EACd,KAAK,KAAOwJ,EAKZ,KAAK,QAAU,KACf,KAAK,OAASA,EAAK,MAAQA,EAAK,MAAM,MAAM,GAAG,EAAI,CAAC,EACpD,KAAK,MAAQJ,GAAUnE,EAAMuE,EAAK,KAAK,EACvC,KAAK,aAAeb,GAAa,KAAK,KAAK,EAC3C,KAAK,aAAe,KACpB,KAAK,cAAgB,KACrB,KAAK,QAAU,EAAEa,EAAK,QAAUvE,GAAQ,QACxC,KAAK,OAASA,GAAQ,MAC1B,CAIA,IAAI,UAAW,CAAE,MAAO,CAAC,KAAK,OAAS,CAKvC,IAAI,aAAc,CAAE,OAAO,KAAK,SAAW,KAAK,aAAe,CAI/D,IAAI,QAAS,CAAE,OAAO,KAAK,cAAgBU,GAAa,KAAO,CAK/D,IAAI,QAAS,CAAE,OAAO,KAAK,QAAU,CAAC,CAAC,KAAK,KAAK,IAAM,CAKvD,UAAU8D,EAAO,CACb,OAAO,KAAK,OAAO,QAAQA,CAAK,EAAI,EACxC,CAIA,IAAI,YAAa,CACb,OAAO,KAAK,KAAK,aAAe,KAAK,KAAK,KAAO,MAAQ,SAC7D,CAIA,kBAAmB,CACf,QAAS1J,KAAK,KAAK,MACf,GAAI,KAAK,MAAMA,CAAC,EAAE,WACd,MAAO,GACf,MAAO,EACX,CAKA,kBAAkBZ,EAAO,CACrB,OAAO,MAAQA,GAAS,KAAK,aAAa,WAAWA,EAAM,YAAY,CAC3E,CAIA,aAAauB,EAAO,CAChB,MAAI,CAACA,GAAS,KAAK,aACR,KAAK,aAELqI,GAAa,KAAK,MAAOrI,CAAK,CAC7C,CASA,OAAOA,EAAQ,KAAMtC,EAAS6C,EAAO,CACjC,GAAI,KAAK,OACL,MAAM,IAAI,MAAM,4CAA4C,EAChE,OAAO,IAAI4D,GAAK,KAAM,KAAK,aAAanE,CAAK,EAAGxC,EAAS,KAAKE,CAAO,EAAGmC,GAAK,QAAQU,CAAK,CAAC,CAC/F,CAMA,cAAcP,EAAQ,KAAMtC,EAAS6C,EAAO,CACxC,OAAA7C,EAAUF,EAAS,KAAKE,CAAO,EAC/B,KAAK,aAAaA,CAAO,EAClB,IAAIyG,GAAK,KAAM,KAAK,aAAanE,CAAK,EAAGtC,EAASmC,GAAK,QAAQU,CAAK,CAAC,CAChF,CASA,cAAcP,EAAQ,KAAMtC,EAAS6C,EAAO,CAGxC,GAFAP,EAAQ,KAAK,aAAaA,CAAK,EAC/BtC,EAAUF,EAAS,KAAKE,CAAO,EAC3BA,EAAQ,KAAM,CACd,IAAIsL,EAAS,KAAK,aAAa,WAAWtL,CAAO,EACjD,GAAI,CAACsL,EACD,OAAO,KACXtL,EAAUsL,EAAO,OAAOtL,CAAO,CACnC,CACA,IAAIuL,EAAU,KAAK,aAAa,cAAcvL,CAAO,EACjD2F,EAAQ4F,GAAWA,EAAQ,WAAWzL,EAAS,MAAO,EAAI,EAC9D,OAAK6F,EAEE,IAAIc,GAAK,KAAMnE,EAAOtC,EAAQ,OAAO2F,CAAK,EAAGxD,GAAK,QAAQU,CAAK,CAAC,EAD5D,IAEf,CAKA,aAAa7C,EAAS,CAClB,IAAIiB,EAAS,KAAK,aAAa,cAAcjB,CAAO,EACpD,GAAI,CAACiB,GAAU,CAACA,EAAO,SACnB,MAAO,GACX,QAAShC,EAAI,EAAGA,EAAIe,EAAQ,WAAYf,IACpC,GAAI,CAAC,KAAK,YAAYe,EAAQ,MAAMf,CAAC,EAAE,KAAK,EACxC,MAAO,GACf,MAAO,EACX,CAMA,aAAae,EAAS,CAClB,GAAI,CAAC,KAAK,aAAaA,CAAO,EAC1B,MAAM,IAAI,WAAW,4BAA4B,KAAK,IAAI,KAAKA,EAAQ,SAAS,EAAE,MAAM,EAAG,EAAE,CAAC,EAAE,CACxG,CAIA,WAAWsC,EAAO,CACdwI,GAAW,KAAK,MAAOxI,EAAO,OAAQ,KAAK,IAAI,CACnD,CAIA,eAAekJ,EAAU,CACrB,OAAO,KAAK,SAAW,MAAQ,KAAK,QAAQ,QAAQA,CAAQ,EAAI,EACpE,CAIA,YAAY3I,EAAO,CACf,GAAI,KAAK,SAAW,KAChB,MAAO,GACX,QAAS5D,EAAI,EAAGA,EAAI4D,EAAM,OAAQ5D,IAC9B,GAAI,CAAC,KAAK,eAAe4D,EAAM5D,CAAC,EAAE,IAAI,EAClC,MAAO,GACf,MAAO,EACX,CAIA,aAAa4D,EAAO,CAChB,GAAI,KAAK,SAAW,KAChB,OAAOA,EACX,IAAIzB,EACJ,QAASnC,EAAI,EAAGA,EAAI4D,EAAM,OAAQ5D,IACzB,KAAK,eAAe4D,EAAM5D,CAAC,EAAE,IAAI,EAI7BmC,GACLA,EAAK,KAAKyB,EAAM5D,CAAC,CAAC,EAJbmC,IACDA,EAAOyB,EAAM,MAAM,EAAG5D,CAAC,GAMnC,OAAQmC,EAAeA,EAAK,OAASA,EAAOe,GAAK,KAAlCU,CACnB,CAIA,OAAO,QAAQb,EAAOJ,EAAQ,CAC1B,IAAIX,EAAS,OAAO,OAAO,IAAI,EAC/Be,EAAM,QAAQ,CAAC6E,EAAMuE,IAASnK,EAAO4F,CAAI,EAAI,IAAIsE,EAAStE,EAAMjF,EAAQwJ,CAAI,CAAC,EAC7E,IAAIK,EAAU7J,EAAO,KAAK,SAAW,MACrC,GAAI,CAACX,EAAOwK,CAAO,EACf,MAAM,IAAI,WAAW,yCAA2CA,EAAU,IAAI,EAClF,GAAI,CAACxK,EAAO,KACR,MAAM,IAAI,WAAW,kCAAkC,EAC3D,QAASyB,KAAKzB,EAAO,KAAK,MACtB,MAAM,IAAI,WAAW,+CAA+C,EACxE,OAAOA,CACX,CACJ,EACA,SAASyK,GAAalC,EAAUiB,EAAUpI,EAAM,CAC5C,IAAIkG,EAAQlG,EAAK,MAAM,GAAG,EAC1B,OAAQR,GAAU,CACd,IAAIgF,EAAOhF,IAAU,KAAO,OAAS,OAAOA,EAC5C,GAAI0G,EAAM,QAAQ1B,CAAI,EAAI,EACtB,MAAM,IAAI,WAAW,0BAA0B0B,CAAK,kBAAkBkC,CAAQ,YAAYjB,CAAQ,SAAS3C,CAAI,EAAE,CACzH,CACJ,CAEA,IAAMoE,GAAN,KAAgB,CACZ,YAAYzB,EAAUiB,EAAUkB,EAAS,CACrC,KAAK,WAAa,OAAO,UAAU,eAAe,KAAKA,EAAS,SAAS,EACzE,KAAK,QAAUA,EAAQ,QACvB,KAAK,SAAW,OAAOA,EAAQ,UAAY,SAAWD,GAAalC,EAAUiB,EAAUkB,EAAQ,QAAQ,EAAIA,EAAQ,QACvH,CACA,IAAI,YAAa,CACb,MAAO,CAAC,KAAK,UACjB,CACJ,EAQMC,GAAN,MAAMC,CAAS,CAIX,YAIAhF,EAIAiF,EAIAlK,EAIAwJ,EAAM,CACF,KAAK,KAAOvE,EACZ,KAAK,KAAOiF,EACZ,KAAK,OAASlK,EACd,KAAK,KAAOwJ,EACZ,KAAK,MAAQJ,GAAUnE,EAAMuE,EAAK,KAAK,EACvC,KAAK,SAAW,KAChB,IAAIZ,EAAWD,GAAa,KAAK,KAAK,EACtC,KAAK,SAAWC,EAAW,IAAIrI,GAAK,KAAMqI,CAAQ,EAAI,IAC1D,CAMA,OAAOlI,EAAQ,KAAM,CACjB,MAAI,CAACA,GAAS,KAAK,SACR,KAAK,SACT,IAAIH,GAAK,KAAMwI,GAAa,KAAK,MAAOrI,CAAK,CAAC,CACzD,CAIA,OAAO,QAAQO,EAAOjB,EAAQ,CAC1B,IAAIX,EAAS,OAAO,OAAO,IAAI,EAAG6K,EAAO,EACzC,OAAAjJ,EAAM,QAAQ,CAACgE,EAAMuE,IAASnK,EAAO4F,CAAI,EAAI,IAAIgF,EAAShF,EAAMiF,IAAQlK,EAAQwJ,CAAI,CAAC,EAC9EnK,CACX,CAKA,cAAcsB,EAAK,CACf,QAAStD,EAAI,EAAGA,EAAIsD,EAAI,OAAQtD,IACxBsD,EAAItD,CAAC,EAAE,MAAQ,OACfsD,EAAMA,EAAI,MAAM,EAAGtD,CAAC,EAAE,OAAOsD,EAAI,MAAMtD,EAAI,CAAC,CAAC,EAC7CA,KAER,OAAOsD,CACX,CAIA,QAAQA,EAAK,CACT,QAAStD,EAAI,EAAGA,EAAIsD,EAAI,OAAQtD,IAC5B,GAAIsD,EAAItD,CAAC,EAAE,MAAQ,KACf,OAAOsD,EAAItD,CAAC,CACxB,CAIA,WAAWqD,EAAO,CACdwI,GAAW,KAAK,MAAOxI,EAAO,OAAQ,KAAK,IAAI,CACnD,CAKA,SAASvB,EAAO,CACZ,OAAO,KAAK,SAAS,QAAQA,CAAK,EAAI,EAC1C,CACJ,EAUMgL,GAAN,KAAa,CAIT,YAAYX,EAAM,CAMd,KAAK,qBAAuB,KAM5B,KAAK,OAAS,OAAO,OAAO,IAAI,EAChC,IAAIY,EAAe,KAAK,KAAO,CAAC,EAChC,QAASC,KAAQb,EACbY,EAAaC,CAAI,EAAIb,EAAKa,CAAI,EAClCD,EAAa,MAAQE,GAAW,KAAKd,EAAK,KAAK,EAC3CY,EAAa,MAAQE,GAAW,KAAKd,EAAK,OAAS,CAAC,CAAC,EACrD,KAAK,MAAQF,GAAS,QAAQ,KAAK,KAAK,MAAO,IAAI,EACvD,KAAK,MAAQU,GAAS,QAAQ,KAAK,KAAK,MAAO,IAAI,EACnD,IAAIO,EAAmB,OAAO,OAAO,IAAI,EACzC,QAASF,KAAQ,KAAK,MAAO,CACzB,GAAIA,KAAQ,KAAK,MACb,MAAM,IAAI,WAAWA,EAAO,oCAAoC,EACpE,IAAI5J,EAAO,KAAK,MAAM4J,CAAI,EAAGG,EAAc/J,EAAK,KAAK,SAAW,GAAIgK,EAAWhK,EAAK,KAAK,MAIzF,GAHAA,EAAK,aAAe8J,EAAiBC,CAAW,IAC3CD,EAAiBC,CAAW,EAAI7E,GAAa,MAAM6E,EAAa,KAAK,KAAK,GAC/E/J,EAAK,cAAgBA,EAAK,aAAa,cACnCA,EAAK,KAAK,qBAAsB,CAChC,GAAI,KAAK,qBACL,MAAM,IAAI,WAAW,kCAAkC,EAC3D,GAAI,CAACA,EAAK,UAAY,CAACA,EAAK,OACxB,MAAM,IAAI,WAAW,uDAAuD,EAChF,KAAK,qBAAuBA,CAChC,CACAA,EAAK,QAAUgK,GAAY,IAAM,KAC7BA,EAAWC,GAAY,KAAMD,EAAS,MAAM,GAAG,CAAC,EAC5CA,GAAY,IAAM,CAAChK,EAAK,cAAgB,CAAC,EAAI,IACzD,CACA,QAAS4J,KAAQ,KAAK,MAAO,CACzB,IAAI5J,EAAO,KAAK,MAAM4J,CAAI,EAAGM,EAAOlK,EAAK,KAAK,SAC9CA,EAAK,SAAWkK,GAAQ,KAAO,CAAClK,CAAI,EAAIkK,GAAQ,GAAK,CAAC,EAAID,GAAY,KAAMC,EAAK,MAAM,GAAG,CAAC,CAC/F,CACA,KAAK,aAAe5J,GAAQ8D,GAAK,SAAS,KAAM9D,CAAI,EACpD,KAAK,aAAeA,GAAQR,GAAK,SAAS,KAAMQ,CAAI,EACpD,KAAK,YAAc,KAAK,MAAM,KAAK,KAAK,SAAW,KAAK,EACxD,KAAK,OAAO,UAAY,OAAO,OAAO,IAAI,CAC9C,CAOA,KAAKN,EAAMC,EAAQ,KAAMtC,EAAS6C,EAAO,CACrC,GAAI,OAAOR,GAAQ,SACfA,EAAO,KAAK,SAASA,CAAI,UAClBA,aAAgB6I,IAEtB,GAAI7I,EAAK,QAAU,KACpB,MAAM,IAAI,WAAW,yCAA2CA,EAAK,KAAO,GAAG,MAF/E,OAAM,IAAI,WAAW,sBAAwBA,CAAI,EAGrD,OAAOA,EAAK,cAAcC,EAAOtC,EAAS6C,CAAK,CACnD,CAKA,KAAKlC,EAAMkC,EAAO,CACd,IAAIR,EAAO,KAAK,MAAM,KACtB,OAAO,IAAI+E,GAAS/E,EAAMA,EAAK,aAAc1B,EAAMwB,GAAK,QAAQU,CAAK,CAAC,CAC1E,CAIA,KAAKR,EAAMC,EAAO,CACd,OAAI,OAAOD,GAAQ,WACfA,EAAO,KAAK,MAAMA,CAAI,GACnBA,EAAK,OAAOC,CAAK,CAC5B,CAIA,SAASuE,EAAM,CACX,IAAIxF,EAAQ,KAAK,MAAMwF,CAAI,EAC3B,GAAI,CAACxF,EACD,MAAM,IAAI,WAAW,sBAAwBwF,CAAI,EACrD,OAAOxF,CACX,CACJ,EACA,SAASiL,GAAY1K,EAAQiB,EAAO,CAChC,IAAIxB,EAAQ,CAAC,EACb,QAASpC,EAAI,EAAGA,EAAI4D,EAAM,OAAQ5D,IAAK,CACnC,IAAI4H,EAAOhE,EAAM5D,CAAC,EAAG2D,EAAOhB,EAAO,MAAMiF,CAAI,EAAG2F,EAAK5J,EACrD,GAAIA,EACAvB,EAAM,KAAKuB,CAAI,MAGf,SAASqJ,KAAQrK,EAAO,MAAO,CAC3B,IAAIgB,EAAOhB,EAAO,MAAMqK,CAAI,GACxBpF,GAAQ,KAAQjE,EAAK,KAAK,OAASA,EAAK,KAAK,MAAM,MAAM,GAAG,EAAE,QAAQiE,CAAI,EAAI,KAC9ExF,EAAM,KAAKmL,EAAK5J,CAAI,CAC5B,CAEJ,GAAI,CAAC4J,EACD,MAAM,IAAI,YAAY,uBAAyB3J,EAAM5D,CAAC,EAAI,GAAG,CACrE,CACA,OAAOoC,CACX,CAEA,SAASoL,GAAUC,EAAM,CAAE,OAAOA,EAAK,KAAO,IAAM,CACpD,SAASC,GAAYD,EAAM,CAAE,OAAOA,EAAK,OAAS,IAAM,CAMxD,IAAME,GAAN,MAAMC,CAAU,CAKZ,YAIAjL,EAKAkL,EAAO,CACH,KAAK,OAASlL,EACd,KAAK,MAAQkL,EAIb,KAAK,KAAO,CAAC,EAIb,KAAK,OAAS,CAAC,EACf,IAAIC,EAAgB,KAAK,cAAgB,CAAC,EAC1CD,EAAM,QAAQJ,GAAQ,CAClB,GAAID,GAAUC,CAAI,EACd,KAAK,KAAK,KAAKA,CAAI,UAEdC,GAAYD,CAAI,EAAG,CACxB,IAAIT,EAAO,QAAQ,KAAKS,EAAK,KAAK,EAAE,CAAC,EACjCK,EAAc,QAAQd,CAAI,EAAI,GAC9Bc,EAAc,KAAKd,CAAI,EAC3B,KAAK,OAAO,KAAKS,CAAI,CACzB,CACJ,CAAC,EAED,KAAK,eAAiB,CAAC,KAAK,KAAK,KAAK,GAAK,CACvC,GAAI,CAAC,aAAa,KAAK,EAAE,GAAG,GAAK,CAAC,EAAE,KAChC,MAAO,GACX,IAAI7L,EAAOe,EAAO,MAAM,EAAE,IAAI,EAC9B,OAAOf,EAAK,aAAa,UAAUA,CAAI,CAC3C,CAAC,CACL,CAIA,MAAMmM,EAAKrB,EAAU,CAAC,EAAG,CACrB,IAAIsB,EAAU,IAAIC,GAAa,KAAMvB,EAAS,EAAK,EACnD,OAAAsB,EAAQ,OAAOD,EAAK7K,GAAK,KAAMwJ,EAAQ,KAAMA,EAAQ,EAAE,EAChDsB,EAAQ,OAAO,CAC1B,CASA,WAAWD,EAAKrB,EAAU,CAAC,EAAG,CAC1B,IAAIsB,EAAU,IAAIC,GAAa,KAAMvB,EAAS,EAAI,EAClD,OAAAsB,EAAQ,OAAOD,EAAK7K,GAAK,KAAMwJ,EAAQ,KAAMA,EAAQ,EAAE,EAChD5I,EAAM,QAAQkK,EAAQ,OAAO,CAAC,CACzC,CAIA,SAASD,EAAKC,EAAStH,EAAO,CAC1B,QAAS1G,EAAI0G,EAAQ,KAAK,KAAK,QAAQA,CAAK,EAAI,EAAI,EAAG1G,EAAI,KAAK,KAAK,OAAQA,IAAK,CAC9E,IAAIyN,EAAO,KAAK,KAAKzN,CAAC,EACtB,GAAIkO,GAAQH,EAAKN,EAAK,GAAG,IACpBA,EAAK,YAAc,QAAaM,EAAI,cAAgBN,EAAK,aACzD,CAACA,EAAK,SAAWO,EAAQ,eAAeP,EAAK,OAAO,GAAI,CACzD,GAAIA,EAAK,SAAU,CACf,IAAIzL,EAASyL,EAAK,SAASM,CAAG,EAC9B,GAAI/L,IAAW,GACX,SACJyL,EAAK,MAAQzL,GAAU,MAC3B,CACA,OAAOyL,CACX,CACJ,CACJ,CAIA,WAAWT,EAAMpK,EAAOoL,EAAStH,EAAO,CACpC,QAAS,EAAIA,EAAQ,KAAK,OAAO,QAAQA,CAAK,EAAI,EAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,IAAK,CAClF,IAAI+G,EAAO,KAAK,OAAO,CAAC,EAAGU,EAAQV,EAAK,MACxC,GAAI,EAAAU,EAAM,QAAQnB,CAAI,GAAK,GACvBS,EAAK,SAAW,CAACO,EAAQ,eAAeP,EAAK,OAAO,GAIpDU,EAAM,OAASnB,EAAK,SACfmB,EAAM,WAAWnB,EAAK,MAAM,GAAK,IAAMmB,EAAM,MAAMnB,EAAK,OAAS,CAAC,GAAKpK,IAEhF,IAAI6K,EAAK,SAAU,CACf,IAAIzL,EAASyL,EAAK,SAAS7K,CAAK,EAChC,GAAIZ,IAAW,GACX,SACJyL,EAAK,MAAQzL,GAAU,MAC3B,CACA,OAAOyL,EACX,CACJ,CAIA,OAAO,YAAY9K,EAAQ,CACvB,IAAIX,EAAS,CAAC,EACd,SAASyC,EAAOgJ,EAAM,CAClB,IAAIW,EAAWX,EAAK,UAAY,KAAO,GAAKA,EAAK,SAAUzN,EAAI,EAC/D,KAAOA,EAAIgC,EAAO,OAAQhC,IAAK,CAC3B,IAAI2G,EAAO3E,EAAOhC,CAAC,EACnB,IADqC2G,EAAK,UAAY,KAAO,GAAKA,EAAK,UACpDyH,EACf,KACR,CACApM,EAAO,OAAOhC,EAAG,EAAGyN,CAAI,CAC5B,CACA,QAAS7F,KAAQjF,EAAO,MAAO,CAC3B,IAAIkL,EAAQlL,EAAO,MAAMiF,CAAI,EAAE,KAAK,SAChCiG,GACAA,EAAM,QAAQJ,GAAQ,CAClBhJ,EAAOgJ,EAAOtL,GAAKsL,CAAI,CAAC,EAClBA,EAAK,MAAQA,EAAK,QAAUA,EAAK,YACnCA,EAAK,KAAO7F,EACpB,CAAC,CACT,CACA,QAASA,KAAQjF,EAAO,MAAO,CAC3B,IAAIkL,EAAQlL,EAAO,MAAMiF,CAAI,EAAE,KAAK,SAChCiG,GACAA,EAAM,QAAQJ,GAAQ,CAClBhJ,EAAOgJ,EAAOtL,GAAKsL,CAAI,CAAC,EAClBA,EAAK,MAAQA,EAAK,QAAUA,EAAK,OACnCA,EAAK,KAAO7F,EACpB,CAAC,CACT,CACA,OAAO5F,CACX,CAMA,OAAO,WAAWW,EAAQ,CACtB,OAAOA,EAAO,OAAO,YAChBA,EAAO,OAAO,UAAY,IAAIiL,EAAUjL,EAAQiL,EAAU,YAAYjL,CAAM,CAAC,EACtF,CACJ,EACM0L,GAAY,CACd,QAAS,GAAM,QAAS,GAAM,MAAO,GAAM,WAAY,GAAM,OAAQ,GACrE,GAAI,GAAM,IAAK,GAAM,GAAI,GAAM,SAAU,GAAM,WAAY,GAAM,OAAQ,GACzE,OAAQ,GAAM,KAAM,GAAM,GAAI,GAAM,GAAI,GAAM,GAAI,GAAM,GAAI,GAAM,GAAI,GACtE,GAAI,GAAM,OAAQ,GAAM,OAAQ,GAAM,GAAI,GAAM,GAAI,GAAM,SAAU,GAAM,GAAI,GAC9E,OAAQ,GAAM,EAAG,GAAM,IAAK,GAAM,QAAS,GAAM,MAAO,GAAM,MAAO,GAAM,GAAI,EACnF,EACMC,GAAa,CACf,KAAM,GAAM,SAAU,GAAM,OAAQ,GAAM,OAAQ,GAAM,MAAO,GAAM,MAAO,EAChF,EACMC,GAAW,CAAE,GAAI,GAAM,GAAI,EAAK,EAEhCC,GAAkB,EAAGC,GAAuB,EAAGC,GAAgB,EACrE,SAASC,GAAavL,EAAMwL,EAAoBvG,EAAM,CAClD,OAAIuG,GAAsB,MACdA,EAAqBJ,GAAkB,IAC1CI,IAAuB,OAASH,GAAuB,GACzDrL,GAAQA,EAAK,YAAc,MAAQoL,GAAkBC,GAAuBpG,EAAO,CAACqG,EAC/F,CACA,IAAMG,GAAN,KAAkB,CACd,YAAYzL,EAAMC,EAAOO,EAAOkL,EAAOhH,EAAO4E,EAAS,CACnD,KAAK,KAAOtJ,EACZ,KAAK,MAAQC,EACb,KAAK,MAAQO,EACb,KAAK,MAAQkL,EACb,KAAK,QAAUpC,EACf,KAAK,QAAU,CAAC,EAEhB,KAAK,YAAcxJ,GAAK,KACxB,KAAK,MAAQ4E,IAAU4E,EAAUgC,GAAgB,KAAOtL,EAAK,aACjE,CACA,aAAaxB,EAAM,CACf,GAAI,CAAC,KAAK,MAAO,CACb,GAAI,CAAC,KAAK,KACN,MAAO,CAAC,EACZ,IAAImN,EAAO,KAAK,KAAK,aAAa,WAAWlO,EAAS,KAAKe,CAAI,CAAC,EAChE,GAAImN,EACA,KAAK,MAAQ,KAAK,KAAK,aAAa,cAAcA,CAAI,MAErD,CACD,IAAIxN,EAAQ,KAAK,KAAK,aAAcyN,EACpC,OAAIA,EAAOzN,EAAM,aAAaK,EAAK,IAAI,IACnC,KAAK,MAAQL,EACNyN,GAGA,IAEf,CACJ,CACA,OAAO,KAAK,MAAM,aAAapN,EAAK,IAAI,CAC5C,CACA,OAAOqC,EAAS,CACZ,GAAI,EAAE,KAAK,QAAUuK,IAAkB,CACnC,IAAIzM,EAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAAGmG,EAClD,GAAInG,GAAQA,EAAK,SAAWmG,EAAI,oBAAoB,KAAKnG,EAAK,IAAI,GAAI,CAClE,IAAIL,EAAOK,EACPA,EAAK,KAAK,QAAUmG,EAAE,CAAC,EAAE,OACzB,KAAK,QAAQ,IAAI,EAEjB,KAAK,QAAQ,KAAK,QAAQ,OAAS,CAAC,EAAIxG,EAAK,SAASA,EAAK,KAAK,MAAM,EAAGA,EAAK,KAAK,OAASwG,EAAE,CAAC,EAAE,MAAM,CAAC,CAChH,CACJ,CACA,IAAInH,EAAUF,EAAS,KAAK,KAAK,OAAO,EACxC,MAAI,CAACoD,GAAW,KAAK,QACjBlD,EAAUA,EAAQ,OAAO,KAAK,MAAM,WAAWF,EAAS,MAAO,EAAI,CAAC,GACjE,KAAK,KAAO,KAAK,KAAK,OAAO,KAAK,MAAOE,EAAS,KAAK,KAAK,EAAIA,CAC3E,CACA,cAAca,EAAM,CAChB,OAAI,KAAK,KACE,KAAK,KAAK,cACjB,KAAK,QAAQ,OACN,KAAK,QAAQ,CAAC,EAAE,SACpBA,EAAK,YAAc,CAACyM,GAAU,eAAezM,EAAK,WAAW,SAAS,YAAY,CAAC,CAC9F,CACJ,EACMqM,GAAN,KAAmB,CACf,YAEAgB,EAEAvC,EAASwC,EAAQ,CACb,KAAK,OAASD,EACd,KAAK,QAAUvC,EACf,KAAK,OAASwC,EACd,KAAK,KAAO,EACZ,KAAK,gBAAkB,GACvB,IAAIC,EAAUzC,EAAQ,QAAS0C,EAC3BC,EAAaV,GAAa,KAAMjC,EAAQ,mBAAoB,CAAC,GAAKwC,EAASR,GAAgB,GAC3FS,EACAC,EAAa,IAAIP,GAAYM,EAAQ,KAAMA,EAAQ,MAAOjM,GAAK,KAAM,GAAMwJ,EAAQ,UAAYyC,EAAQ,KAAK,aAAcE,CAAU,EAC/HH,EACLE,EAAa,IAAIP,GAAY,KAAM,KAAM3L,GAAK,KAAM,GAAM,KAAMmM,CAAU,EAE1ED,EAAa,IAAIP,GAAYI,EAAO,OAAO,YAAa,KAAM/L,GAAK,KAAM,GAAM,KAAMmM,CAAU,EACnG,KAAK,MAAQ,CAACD,CAAU,EACxB,KAAK,KAAO1C,EAAQ,cACpB,KAAK,WAAa,EACtB,CACA,IAAI,KAAM,CACN,OAAO,KAAK,MAAM,KAAK,IAAI,CAC/B,CAIA,OAAOqB,EAAKnK,EAAO,CACXmK,EAAI,UAAY,EAChB,KAAK,YAAYA,EAAKnK,CAAK,EACtBmK,EAAI,UAAY,GACrB,KAAK,WAAWA,EAAKnK,CAAK,CAClC,CACA,YAAYmK,EAAKnK,EAAO,CACpB,IAAIhB,EAAQmL,EAAI,UACZuB,EAAM,KAAK,IAAKC,EAAcD,EAAI,QAAUb,GAAwB,OAClE,KAAK,kBAAoBa,EAAI,QAAUd,IAAmB,EAC5D,CAAE,OAAA7L,CAAO,EAAI,KAAK,OACtB,GAAI4M,IAAe,QACfD,EAAI,cAAcvB,CAAG,GACrB,mBAAmB,KAAKnL,CAAK,EAAG,CAChC,GAAK2M,EAcA,GAAIA,IAAe,OACpB3M,EAAQA,EAAM,QAAQ,SAAU;AAAA,CAAI,UAE/BD,EAAO,sBAAwB,SAAS,KAAKC,CAAK,GAAK,KAAK,IAAI,aAAaD,EAAO,qBAAqB,OAAO,CAAC,EAAG,CACzH,IAAI6M,EAAQ5M,EAAM,MAAM,UAAU,EAClC,QAAS5C,EAAI,EAAGA,EAAIwP,EAAM,OAAQxP,IAC1BA,GACA,KAAK,WAAW2C,EAAO,qBAAqB,OAAO,EAAGiB,EAAO,EAAI,EACjE4L,EAAMxP,CAAC,GACP,KAAK,WAAW2C,EAAO,KAAK6M,EAAMxP,CAAC,CAAC,EAAG4D,EAAO,CAAC,KAAK,KAAK4L,EAAMxP,CAAC,CAAC,CAAC,EAE1E4C,EAAQ,EACZ,MAEIA,EAAQA,EAAM,QAAQ,YAAa,GAAG,UA3BtCA,EAAQA,EAAM,QAAQ,oBAAqB,GAAG,EAI1C,mBAAmB,KAAKA,CAAK,GAAK,KAAK,MAAQ,KAAK,MAAM,OAAS,EAAG,CACtE,IAAI6M,EAAaH,EAAI,QAAQA,EAAI,QAAQ,OAAS,CAAC,EAC/CI,EAAgB3B,EAAI,iBACpB,CAAC0B,GACAC,GAAiBA,EAAc,UAAY,MAC3CD,EAAW,QAAU,mBAAmB,KAAKA,EAAW,IAAI,KAC7D7M,EAAQA,EAAM,MAAM,CAAC,EAC7B,CAkBAA,GACA,KAAK,WAAWD,EAAO,KAAKC,CAAK,EAAGgB,EAAO,CAAC,KAAK,KAAKhB,CAAK,CAAC,EAChE,KAAK,WAAWmL,CAAG,CACvB,MAEI,KAAK,WAAWA,CAAG,CAE3B,CAGA,WAAWA,EAAKnK,EAAO+L,EAAY,CAC/B,IAAIC,EAAU,KAAK,gBAAiBN,EAAM,KAAK,KAC3CvB,EAAI,SAAW,OAAS,MAAM,KAAKA,EAAI,OAASA,EAAI,MAAM,UAAU,KACpE,KAAK,gBAAkB,IAC3B,IAAInG,EAAOmG,EAAI,SAAS,YAAY,EAAG8B,EACnCtB,GAAS,eAAe3G,CAAI,GAAK,KAAK,OAAO,gBAC7CkI,GAAc/B,CAAG,EACrB,IAAIN,EAAQ,KAAK,QAAQ,cAAgB,KAAK,QAAQ,aAAaM,CAAG,IACjE8B,EAAS,KAAK,OAAO,SAAS9B,EAAK,KAAM4B,CAAU,GACxD/F,EAAK,GAAI6D,EAAOA,EAAK,OAASa,GAAW,eAAe1G,CAAI,EACxD,KAAK,WAAWmG,CAAG,EACnB,KAAK,eAAeA,EAAKnK,CAAK,UAEzB,CAAC6J,GAAQA,EAAK,MAAQA,EAAK,YAAa,CACzCA,GAAQA,EAAK,YACb,KAAK,KAAO,KAAK,IAAI,EAAG,KAAK,KAAO,CAAC,EAChCA,GAAQA,EAAK,KAAK,WACvBM,EAAMN,EAAK,MACf,IAAIsC,EAAMC,EAAgB,KAAK,WAC/B,GAAI3B,GAAU,eAAezG,CAAI,EACzB0H,EAAI,QAAQ,QAAUA,EAAI,QAAQ,CAAC,EAAE,UAAY,KAAK,OACtD,KAAK,OACLA,EAAM,KAAK,KAEfS,EAAO,GACFT,EAAI,OACL,KAAK,WAAa,YAEjB,CAACvB,EAAI,WAAY,CACtB,KAAK,aAAaA,EAAKnK,CAAK,EAC5B,MAAMgG,CACV,CACA,IAAIqG,EAAaxC,GAAQA,EAAK,KAAO7J,EAAQ,KAAK,WAAWmK,EAAKnK,CAAK,EACnEqM,GACA,KAAK,OAAOlC,EAAKkC,CAAU,EAC3BF,GACA,KAAK,KAAKT,CAAG,EACjB,KAAK,WAAaU,CACtB,KACK,CACD,IAAIC,EAAa,KAAK,WAAWlC,EAAKnK,CAAK,EACvCqM,GACA,KAAK,iBAAiBlC,EAAKN,EAAMwC,EAAYxC,EAAK,YAAc,GAAQoC,EAAS,MAAS,CAClG,CACA,KAAK,gBAAkBD,CAC3B,CAEA,aAAa7B,EAAKnK,EAAO,CACjBmK,EAAI,UAAY,MAAQ,KAAK,IAAI,MAAQ,KAAK,IAAI,KAAK,eACvD,KAAK,YAAYA,EAAI,cAAc,eAAe;AAAA,CAAI,EAAGnK,CAAK,CACtE,CAEA,eAAemK,EAAKnK,EAAO,CAEnBmK,EAAI,UAAY,OAAS,CAAC,KAAK,IAAI,MAAQ,CAAC,KAAK,IAAI,KAAK,gBAC1D,KAAK,UAAU,KAAK,OAAO,OAAO,KAAK,GAAG,EAAGnK,EAAO,EAAI,CAChE,CAIA,WAAWmK,EAAKnK,EAAO,CACnB,IAAIsM,EAASnC,EAAI,MAMjB,GAAImC,GAAUA,EAAO,OACjB,QAASlQ,EAAI,EAAGA,EAAI,KAAK,OAAO,cAAc,OAAQA,IAAK,CACvD,IAAI4H,EAAO,KAAK,OAAO,cAAc5H,CAAC,EAAG4C,EAAQsN,EAAO,iBAAiBtI,CAAI,EAC7E,GAAIhF,EACA,QAAS8D,EAAQ,SAAa,CAC1B,IAAI+G,EAAO,KAAK,OAAO,WAAW7F,EAAMhF,EAAO,KAAM8D,CAAK,EAC1D,GAAI,CAAC+G,EACD,MACJ,GAAIA,EAAK,OACL,OAAO,KAKX,GAJIA,EAAK,UACL7J,EAAQA,EAAM,OAAOsE,GAAK,CAACuF,EAAK,UAAUvF,CAAC,CAAC,EAE5CtE,EAAQA,EAAM,OAAO,KAAK,OAAO,OAAO,MAAM6J,EAAK,IAAI,EAAE,OAAOA,EAAK,KAAK,CAAC,EAC3EA,EAAK,YAAc,GACnB/G,EAAQ+G,MAER,MACR,CACR,CACJ,OAAO7J,CACX,CAIA,iBAAiBmK,EAAKN,EAAM7J,EAAOuM,EAAe,CAC9C,IAAIJ,EAAMK,EACV,GAAI3C,EAAK,KAEL,GADA2C,EAAW,KAAK,OAAO,OAAO,MAAM3C,EAAK,IAAI,EACxC2C,EAAS,OAOJ,KAAK,WAAWA,EAAS,OAAO3C,EAAK,KAAK,EAAG7J,EAAOmK,EAAI,UAAY,IAAI,GAC9E,KAAK,aAAaA,EAAKnK,CAAK,MARV,CAClB,IAAIxD,EAAQ,KAAK,MAAMgQ,EAAU3C,EAAK,OAAS,KAAM7J,EAAO6J,EAAK,kBAAkB,EAC/ErN,IACA2P,EAAO,GACPnM,EAAQxD,EAEhB,KAKC,CACD,IAAImM,EAAW,KAAK,OAAO,OAAO,MAAMkB,EAAK,IAAI,EACjD7J,EAAQA,EAAM,OAAO2I,EAAS,OAAOkB,EAAK,KAAK,CAAC,CACpD,CACA,IAAI4C,EAAU,KAAK,IACnB,GAAID,GAAYA,EAAS,OACrB,KAAK,WAAWrC,CAAG,UAEdoC,EACL,KAAK,WAAWpC,EAAKnK,EAAOuM,CAAa,UAEpC1C,EAAK,WACV,KAAK,WAAWM,CAAG,EACnBN,EAAK,WAAWM,EAAK,KAAK,OAAO,MAAM,EAAE,QAAQnM,GAAQ,KAAK,WAAWA,EAAMgC,EAAO,EAAK,CAAC,MAE3F,CACD,IAAI0M,EAAavC,EACb,OAAON,EAAK,gBAAkB,SAC9B6C,EAAavC,EAAI,cAAcN,EAAK,cAAc,EAC7C,OAAOA,EAAK,gBAAkB,WACnC6C,EAAa7C,EAAK,eAAeM,CAAG,EAC/BN,EAAK,iBACV6C,EAAa7C,EAAK,gBACtB,KAAK,WAAWM,EAAKuC,EAAY,EAAI,EACrC,KAAK,OAAOA,EAAY1M,CAAK,EAC7B,KAAK,WAAWmK,EAAKuC,EAAY,EAAK,CAC1C,CACIP,GAAQ,KAAK,KAAKM,CAAO,GACzB,KAAK,MACb,CAIA,OAAOjP,EAAQwC,EAAOmC,EAAYC,EAAU,CACxC,IAAI/D,EAAQ8D,GAAc,EAC1B,QAASgI,EAAMhI,EAAa3E,EAAO,WAAW2E,CAAU,EAAI3E,EAAO,WAAYE,EAAM0E,GAAY,KAAO,KAAO5E,EAAO,WAAW4E,CAAQ,EAAG+H,GAAOzM,EAAKyM,EAAMA,EAAI,YAAa,EAAE9L,EAC7K,KAAK,YAAYb,EAAQa,CAAK,EAC9B,KAAK,OAAO8L,EAAKnK,CAAK,EAE1B,KAAK,YAAYxC,EAAQa,CAAK,CAClC,CAIA,UAAUL,EAAMgC,EAAO2M,EAAU,CAC7B,IAAIC,EAAOT,EACX,QAAShL,EAAQ,KAAK,KAAM0L,EAAU,EAAG1L,GAAS,EAAGA,IAAS,CAC1D,IAAI2L,EAAK,KAAK,MAAM3L,CAAK,EACrB3C,EAAQsO,EAAG,aAAa9O,CAAI,EAChC,GAAIQ,IAAU,CAACoO,GAASA,EAAM,OAASpO,EAAM,OAASqO,KAClDD,EAAQpO,EACR2N,EAAOW,EACH,CAACtO,EAAM,QACP,MAER,GAAIsO,EAAG,MAAO,CACV,GAAIH,EACA,MACJE,GAAW,CACf,CACJ,CACA,GAAI,CAACD,EACD,OAAO,KACX,KAAK,KAAKT,CAAI,EACd,QAAS/P,EAAI,EAAGA,EAAIwQ,EAAM,OAAQxQ,IAC9B4D,EAAQ,KAAK,WAAW4M,EAAMxQ,CAAC,EAAG,KAAM4D,EAAO,EAAK,EACxD,OAAOA,CACX,CAEA,WAAWhC,EAAMgC,EAAO2M,EAAU,CAC9B,GAAI3O,EAAK,UAAY,KAAK,YAAc,CAAC,KAAK,IAAI,KAAM,CACpD,IAAI+O,EAAQ,KAAK,qBAAqB,EAClCA,IACA/M,EAAQ,KAAK,WAAW+M,EAAO,KAAM/M,CAAK,EAClD,CACA,IAAIqM,EAAa,KAAK,UAAUrO,EAAMgC,EAAO2M,CAAQ,EACrD,GAAIN,EAAY,CACZ,KAAK,WAAW,EAChB,IAAIX,EAAM,KAAK,IACXA,EAAI,QACJA,EAAI,MAAQA,EAAI,MAAM,UAAU1N,EAAK,IAAI,GAC7C,IAAIgP,EAAY1N,GAAK,KACrB,QAASgF,KAAK+H,EAAW,OAAOrO,EAAK,KAAK,GAClC0N,EAAI,KAAOA,EAAI,KAAK,eAAepH,EAAE,IAAI,EAAI2I,GAAa3I,EAAE,KAAMtG,EAAK,IAAI,KAC3EgP,EAAY1I,EAAE,SAAS0I,CAAS,GACxC,OAAAtB,EAAI,QAAQ,KAAK1N,EAAK,KAAKgP,CAAS,CAAC,EAC9B,EACX,CACA,MAAO,EACX,CAGA,MAAMxN,EAAMC,EAAOO,EAAO2L,EAAY,CAClC,IAAIU,EAAa,KAAK,UAAU7M,EAAK,OAAOC,CAAK,EAAGO,EAAO,EAAK,EAChE,OAAIqM,IACAA,EAAa,KAAK,WAAW7M,EAAMC,EAAOO,EAAO,GAAM2L,CAAU,GAC9DU,CACX,CAEA,WAAW7M,EAAMC,EAAOO,EAAOkL,EAAQ,GAAOS,EAAY,CACtD,KAAK,WAAW,EAChB,IAAID,EAAM,KAAK,IACfA,EAAI,MAAQA,EAAI,OAASA,EAAI,MAAM,UAAUlM,CAAI,EACjD,IAAIsJ,EAAUiC,GAAavL,EAAMmM,EAAYD,EAAI,OAAO,EACnDA,EAAI,QAAUZ,IAAkBY,EAAI,QAAQ,QAAU,IACvD5C,GAAWgC,IACf,IAAIoC,EAAa5N,GAAK,KACtB,OAAAU,EAAQA,EAAM,OAAOsE,IACboH,EAAI,KAAOA,EAAI,KAAK,eAAepH,EAAE,IAAI,EAAI2I,GAAa3I,EAAE,KAAM9E,CAAI,IACtE0N,EAAa5I,EAAE,SAAS4I,CAAU,EAC3B,IAEJ,EACV,EACD,KAAK,MAAM,KAAK,IAAIjC,GAAYzL,EAAMC,EAAOyN,EAAYhC,EAAO,KAAMpC,CAAO,CAAC,EAC9E,KAAK,OACE9I,CACX,CAGA,WAAWK,EAAU,GAAO,CACxB,IAAIjE,EAAI,KAAK,MAAM,OAAS,EAC5B,GAAIA,EAAI,KAAK,KAAM,CACf,KAAOA,EAAI,KAAK,KAAMA,IAClB,KAAK,MAAMA,EAAI,CAAC,EAAE,QAAQ,KAAK,KAAK,MAAMA,CAAC,EAAE,OAAOiE,CAAO,CAAC,EAChE,KAAK,MAAM,OAAS,KAAK,KAAO,CACpC,CACJ,CACA,QAAS,CACL,YAAK,KAAO,EACZ,KAAK,WAAW,KAAK,MAAM,EACpB,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,QAAU,KAAK,QAAQ,QAAQ,CACvE,CACA,KAAKhD,EAAI,CACL,QAASjB,EAAI,KAAK,KAAMA,GAAK,EAAGA,IAAK,CACjC,GAAI,KAAK,MAAMA,CAAC,GAAKiB,EACjB,YAAK,KAAOjB,EACL,GAEF,KAAK,kBACV,KAAK,MAAMA,CAAC,EAAE,SAAWwO,GAEjC,CACA,MAAO,EACX,CACA,IAAI,YAAa,CACb,KAAK,WAAW,EAChB,IAAIzO,EAAM,EACV,QAASC,EAAI,KAAK,KAAMA,GAAK,EAAGA,IAAK,CACjC,IAAIe,EAAU,KAAK,MAAMf,CAAC,EAAE,QAC5B,QAASG,EAAIY,EAAQ,OAAS,EAAGZ,GAAK,EAAGA,IACrCJ,GAAOgB,EAAQZ,CAAC,EAAE,SAClBH,GACAD,GACR,CACA,OAAOA,CACX,CACA,YAAYqB,EAAQ4B,EAAQ,CACxB,GAAI,KAAK,KACL,QAAShD,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAC9B,KAAK,KAAKA,CAAC,EAAE,MAAQoB,GAAU,KAAK,KAAKpB,CAAC,EAAE,QAAUgD,IACtD,KAAK,KAAKhD,CAAC,EAAE,IAAM,KAAK,WAExC,CACA,WAAWoB,EAAQ,CACf,GAAI,KAAK,KACL,QAASpB,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAC9B,KAAK,KAAKA,CAAC,EAAE,KAAO,MAAQoB,EAAO,UAAY,GAAKA,EAAO,SAAS,KAAK,KAAKpB,CAAC,EAAE,IAAI,IACrF,KAAK,KAAKA,CAAC,EAAE,IAAM,KAAK,WAExC,CACA,WAAWoB,EAAQL,EAASsL,EAAQ,CAChC,GAAIjL,GAAUL,GAAW,KAAK,KAC1B,QAASf,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAC9B,KAAK,KAAKA,CAAC,EAAE,KAAO,MAAQoB,EAAO,UAAY,GAAKA,EAAO,SAAS,KAAK,KAAKpB,CAAC,EAAE,IAAI,GAC3Ee,EAAQ,wBAAwB,KAAK,KAAKf,CAAC,EAAE,IAAI,GAChDqM,EAAS,EAAI,KACpB,KAAK,KAAKrM,CAAC,EAAE,IAAM,KAAK,WAG5C,CACA,WAAW+Q,EAAU,CACjB,GAAI,KAAK,KACL,QAAS/Q,EAAI,EAAGA,EAAI,KAAK,KAAK,OAAQA,IAC9B,KAAK,KAAKA,CAAC,EAAE,MAAQ+Q,IACrB,KAAK,KAAK/Q,CAAC,EAAE,IAAM,KAAK,YAAc+Q,EAAS,UAAU,OAAS,KAAK,KAAK/Q,CAAC,EAAE,QAE/F,CAEA,eAAegO,EAAS,CACpB,GAAIA,EAAQ,QAAQ,GAAG,EAAI,GACvB,OAAOA,EAAQ,MAAM,UAAU,EAAE,KAAK,KAAK,eAAgB,IAAI,EACnE,IAAIgD,EAAQhD,EAAQ,MAAM,GAAG,EACzBiD,EAAS,KAAK,QAAQ,QACtBC,EAAU,CAAC,KAAK,SAAW,CAACD,GAAUA,EAAO,OAAO,MAAQ,KAAK,MAAM,CAAC,EAAE,MAC1EE,EAAW,EAAEF,EAASA,EAAO,MAAQ,EAAI,IAAMC,EAAU,EAAI,GAC7DpJ,EAAQ,CAAC9H,EAAG+E,IAAU,CACtB,KAAO/E,GAAK,EAAGA,IAAK,CAChB,IAAIoR,EAAOJ,EAAMhR,CAAC,EAClB,GAAIoR,GAAQ,GAAI,CACZ,GAAIpR,GAAKgR,EAAM,OAAS,GAAKhR,GAAK,EAC9B,SACJ,KAAO+E,GAASoM,EAAUpM,IACtB,GAAI+C,EAAM9H,EAAI,EAAG+E,CAAK,EAClB,MAAO,GACf,MAAO,EACX,KACK,CACD,IAAI4B,EAAO5B,EAAQ,GAAMA,GAAS,GAAKmM,EAAW,KAAK,MAAMnM,CAAK,EAAE,KAC9DkM,GAAUlM,GAASoM,EAAWF,EAAO,KAAKlM,EAAQoM,CAAQ,EAAE,KACxD,KACV,GAAI,CAACxK,GAASA,EAAK,MAAQyK,GAAQ,CAACzK,EAAK,UAAUyK,CAAI,EACnD,MAAO,GACXrM,GACJ,CACJ,CACA,MAAO,EACX,EACA,OAAO+C,EAAMkJ,EAAM,OAAS,EAAG,KAAK,IAAI,CAC5C,CACA,sBAAuB,CACnB,IAAIK,EAAW,KAAK,QAAQ,QAC5B,GAAIA,EACA,QAASxK,EAAIwK,EAAS,MAAOxK,GAAK,EAAGA,IAAK,CACtC,IAAIyK,EAAQD,EAAS,KAAKxK,CAAC,EAAE,eAAewK,EAAS,WAAWxK,CAAC,CAAC,EAAE,YACpE,GAAIyK,GAASA,EAAM,aAAeA,EAAM,aACpC,OAAOA,CACf,CACJ,QAAS1J,KAAQ,KAAK,OAAO,OAAO,MAAO,CACvC,IAAIxE,EAAO,KAAK,OAAO,OAAO,MAAMwE,CAAI,EACxC,GAAIxE,EAAK,aAAeA,EAAK,aACzB,OAAOA,CACf,CACJ,CACJ,EAIA,SAAS0M,GAAc/B,EAAK,CACxB,QAAS1M,EAAQ0M,EAAI,WAAYwD,EAAW,KAAMlQ,EAAOA,EAAQA,EAAM,YAAa,CAChF,IAAIuG,EAAOvG,EAAM,UAAY,EAAIA,EAAM,SAAS,YAAY,EAAI,KAC5DuG,GAAQ2G,GAAS,eAAe3G,CAAI,GAAK2J,GACzCA,EAAS,YAAYlQ,CAAK,EAC1BA,EAAQkQ,GAEH3J,GAAQ,KACb2J,EAAWlQ,EAENuG,IACL2J,EAAW,KAEnB,CACJ,CAEA,SAASrD,GAAQH,EAAKyD,EAAU,CAC5B,OAAQzD,EAAI,SAAWA,EAAI,mBAAqBA,EAAI,uBAAyBA,EAAI,oBAAoB,KAAKA,EAAKyD,CAAQ,CAC3H,CACA,SAASrP,GAAKqB,EAAK,CACf,IAAIrB,EAAO,CAAC,EACZ,QAAS6K,KAAQxJ,EACbrB,EAAK6K,CAAI,EAAIxJ,EAAIwJ,CAAI,EACzB,OAAO7K,CACX,CAIA,SAAS0O,GAAatE,EAAU6D,EAAU,CACtC,IAAIrN,EAAQqN,EAAS,OAAO,MAC5B,QAASxI,KAAQ7E,EAAO,CACpB,IAAI3B,EAAS2B,EAAM6E,CAAI,EACvB,GAAI,CAACxG,EAAO,eAAemL,CAAQ,EAC/B,SACJ,IAAInD,EAAO,CAAC,EAAGO,EAAQ7B,GAAU,CAC7BsB,EAAK,KAAKtB,CAAK,EACf,QAAS9H,EAAI,EAAGA,EAAI8H,EAAM,UAAW9H,IAAK,CACtC,GAAI,CAAE,KAAAoD,EAAM,KAAAuD,CAAK,EAAImB,EAAM,KAAK9H,CAAC,EAGjC,GAFIoD,GAAQgN,GAERhH,EAAK,QAAQzC,CAAI,EAAI,GAAKgD,EAAKhD,CAAI,EACnC,MAAO,EACf,CACJ,EACA,GAAIgD,EAAKvI,EAAO,YAAY,EACxB,MAAO,EACf,CACJ,CAMA,IAAMqQ,GAAN,MAAMC,CAAc,CAUhB,YAIA3O,EAIAa,EAAO,CACH,KAAK,MAAQb,EACb,KAAK,MAAQa,CACjB,CAOA,kBAAkBM,EAAUwI,EAAU,CAAC,EAAG/G,EAAQ,CACzCA,IACDA,EAASqB,GAAI0F,CAAO,EAAE,uBAAuB,GACjD,IAAI4C,EAAM3J,EAAQ+D,EAAS,CAAC,EAC5B,OAAAxF,EAAS,QAAQtC,GAAQ,CACrB,GAAI8H,EAAO,QAAU9H,EAAK,MAAM,OAAQ,CACpC,IAAI+P,EAAO,EAAGC,EAAW,EACzB,KAAOD,EAAOjI,EAAO,QAAUkI,EAAWhQ,EAAK,MAAM,QAAQ,CACzD,IAAI+E,EAAO/E,EAAK,MAAMgQ,CAAQ,EAC9B,GAAI,CAAC,KAAK,MAAMjL,EAAK,KAAK,IAAI,EAAG,CAC7BiL,IACA,QACJ,CACA,GAAI,CAACjL,EAAK,GAAG+C,EAAOiI,CAAI,EAAE,CAAC,CAAC,GAAKhL,EAAK,KAAK,KAAK,WAAa,GACzD,MACJgL,IACAC,GACJ,CACA,KAAOD,EAAOjI,EAAO,QACjB4F,EAAM5F,EAAO,IAAI,EAAE,CAAC,EACxB,KAAOkI,EAAWhQ,EAAK,MAAM,QAAQ,CACjC,IAAIiQ,EAAMjQ,EAAK,MAAMgQ,GAAU,EAC3BE,EAAU,KAAK,cAAcD,EAAKjQ,EAAK,SAAU8K,CAAO,EACxDoF,IACApI,EAAO,KAAK,CAACmI,EAAKvC,CAAG,CAAC,EACtBA,EAAI,YAAYwC,EAAQ,GAAG,EAC3BxC,EAAMwC,EAAQ,YAAcA,EAAQ,IAE5C,CACJ,CACAxC,EAAI,YAAY,KAAK,mBAAmB1N,EAAM8K,CAAO,CAAC,CAC1D,CAAC,EACM/G,CACX,CAIA,mBAAmB/D,EAAM8K,EAAS,CAC9B,GAAI,CAAE,IAAAqB,EAAK,WAAAuC,CAAW,EAAIyB,GAAW/K,GAAI0F,CAAO,EAAG,KAAK,MAAM9K,EAAK,KAAK,IAAI,EAAEA,CAAI,EAAG,KAAMA,EAAK,KAAK,EACrG,GAAI0O,EAAY,CACZ,GAAI1O,EAAK,OACL,MAAM,IAAI,WAAW,8CAA8C,EACvE,KAAK,kBAAkBA,EAAK,QAAS8K,EAAS4D,CAAU,CAC5D,CACA,OAAOvC,CACX,CAQA,cAAcnM,EAAM8K,EAAU,CAAC,EAAG,CAC9B,IAAIqB,EAAM,KAAK,mBAAmBnM,EAAM8K,CAAO,EAC/C,QAAS1M,EAAI4B,EAAK,MAAM,OAAS,EAAG5B,GAAK,EAAGA,IAAK,CAC7C,IAAIgP,EAAO,KAAK,cAAcpN,EAAK,MAAM5B,CAAC,EAAG4B,EAAK,SAAU8K,CAAO,EAC/DsC,KACCA,EAAK,YAAcA,EAAK,KAAK,YAAYjB,CAAG,EAC7CA,EAAMiB,EAAK,IAEnB,CACA,OAAOjB,CACX,CAIA,cAAcpK,EAAMqO,EAAQtF,EAAU,CAAC,EAAG,CACtC,IAAIuF,EAAQ,KAAK,MAAMtO,EAAK,KAAK,IAAI,EACrC,OAAOsO,GAASF,GAAW/K,GAAI0F,CAAO,EAAGuF,EAAMtO,EAAMqO,CAAM,EAAG,KAAMrO,EAAK,KAAK,CAClF,CACA,OAAO,WAAWqD,EAAKkL,EAAWC,EAAQ,KAAMC,EAAe,CAC3D,OAAOL,GAAW/K,EAAKkL,EAAWC,EAAOC,CAAa,CAC1D,CAKA,OAAO,WAAWzP,EAAQ,CACtB,OAAOA,EAAO,OAAO,gBAChBA,EAAO,OAAO,cAAgB,IAAI+O,EAAc,KAAK,gBAAgB/O,CAAM,EAAG,KAAK,gBAAgBA,CAAM,CAAC,EACnH,CAKA,OAAO,gBAAgBA,EAAQ,CAC3B,IAAIX,EAASqQ,GAAY1P,EAAO,KAAK,EACrC,OAAKX,EAAO,OACRA,EAAO,KAAOJ,GAAQA,EAAK,MACxBI,CACX,CAIA,OAAO,gBAAgBW,EAAQ,CAC3B,OAAO0P,GAAY1P,EAAO,KAAK,CACnC,CACJ,EACA,SAAS0P,GAAY7O,EAAK,CACtB,IAAIxB,EAAS,CAAC,EACd,QAAS4F,KAAQpE,EAAK,CAClB,IAAIyO,EAAQzO,EAAIoE,CAAI,EAAE,KAAK,MACvBqK,IACAjQ,EAAO4F,CAAI,EAAIqK,EACvB,CACA,OAAOjQ,CACX,CACA,SAASgF,GAAI0F,EAAS,CAClB,OAAOA,EAAQ,UAAY,OAAO,QACtC,CACA,IAAM4F,GAA2B,IAAI,QACrC,SAASC,GAAqBlP,EAAO,CACjC,IAAIT,EAAQ0P,GAAyB,IAAIjP,CAAK,EAC9C,OAAIT,IAAU,QACV0P,GAAyB,IAAIjP,EAAOT,EAAQ4P,GAA0BnP,CAAK,CAAC,EACzET,CACX,CACA,SAAS4P,GAA0BnP,EAAO,CACtC,IAAIrB,EAAS,KACb,SAAS2H,EAAK/G,EAAO,CACjB,GAAIA,GAAS,OAAOA,GAAS,SACzB,GAAI,MAAM,QAAQA,CAAK,EACnB,GAAI,OAAOA,EAAM,CAAC,GAAK,SACdZ,IACDA,EAAS,CAAC,GACdA,EAAO,KAAKY,CAAK,MAGjB,SAAS5C,EAAI,EAAGA,EAAI4C,EAAM,OAAQ5C,IAC9B2J,EAAK/G,EAAM5C,CAAC,CAAC,MAIrB,SAASgN,KAAQpK,EACb+G,EAAK/G,EAAMoK,CAAI,CAAC,CAGhC,CACA,OAAArD,EAAKtG,CAAK,EACHrB,CACX,CACA,SAAS+P,GAAW/K,EAAKkL,EAAWC,EAAOC,EAAe,CACtD,GAAI,OAAOF,GAAa,SACpB,MAAO,CAAE,IAAKlL,EAAI,eAAekL,CAAS,CAAE,EAChD,GAAIA,EAAU,UAAY,KACtB,MAAO,CAAE,IAAKA,CAAU,EAC5B,GAAIA,EAAU,KAAOA,EAAU,IAAI,UAAY,KAC3C,OAAOA,EACX,IAAIO,EAAUP,EAAU,CAAC,EAAGQ,EAC5B,GAAI,OAAOD,GAAW,SAClB,MAAM,IAAI,WAAW,oCAAoC,EAC7D,GAAIL,IAAkBM,EAAaH,GAAqBH,CAAa,IACjEM,EAAW,QAAQR,CAAS,EAAI,GAChC,MAAM,IAAI,WAAW,8GAA8G,EACvI,IAAIS,EAAQF,EAAQ,QAAQ,GAAG,EAC3BE,EAAQ,IACRR,EAAQM,EAAQ,MAAM,EAAGE,CAAK,EAC9BF,EAAUA,EAAQ,MAAME,EAAQ,CAAC,GAErC,IAAIrC,EACAvC,EAAOoE,EAAQnL,EAAI,gBAAgBmL,EAAOM,CAAO,EAAIzL,EAAI,cAAcyL,CAAO,EAC9EpP,EAAQ6O,EAAU,CAAC,EAAG3Q,EAAQ,EAClC,GAAI8B,GAAS,OAAOA,GAAS,UAAYA,EAAM,UAAY,MAAQ,CAAC,MAAM,QAAQA,CAAK,EAAG,CACtF9B,EAAQ,EACR,QAASqG,KAAQvE,EACb,GAAIA,EAAMuE,CAAI,GAAK,KAAM,CACrB,IAAI+K,EAAQ/K,EAAK,QAAQ,GAAG,EACxB+K,EAAQ,EACR5E,EAAI,eAAenG,EAAK,MAAM,EAAG+K,CAAK,EAAG/K,EAAK,MAAM+K,EAAQ,CAAC,EAAGtP,EAAMuE,CAAI,CAAC,EACtEA,GAAQ,SAAWmG,EAAI,MAC5BA,EAAI,MAAM,QAAU1K,EAAMuE,CAAI,EAE9BmG,EAAI,aAAanG,EAAMvE,EAAMuE,CAAI,CAAC,CAC1C,CACR,CACA,QAAS5H,EAAIuB,EAAOvB,EAAIkS,EAAU,OAAQlS,IAAK,CAC3C,IAAIqB,EAAQ6Q,EAAUlS,CAAC,EACvB,GAAIqB,IAAU,EAAG,CACb,GAAIrB,EAAIkS,EAAU,OAAS,GAAKlS,EAAIuB,EAChC,MAAM,IAAI,WAAW,wDAAwD,EACjF,MAAO,CAAE,IAAAwM,EAAK,WAAYA,CAAI,CAClC,KACK,CACD,GAAI,CAAE,IAAK3N,EAAO,WAAYwS,CAAa,EAAIb,GAAW/K,EAAK3F,EAAO8Q,EAAOC,CAAa,EAE1F,GADArE,EAAI,YAAY3N,CAAK,EACjBwS,EAAc,CACd,GAAItC,EACA,MAAM,IAAI,WAAW,wBAAwB,EACjDA,EAAasC,CACjB,CACJ,CACJ,CACA,MAAO,CAAE,IAAA7E,EAAK,WAAAuC,CAAW,CAC7B,CC13GA,IAAMuC,GAAU,MACVC,GAAW,KAAK,IAAI,EAAG,EAAE,EAC/B,SAASC,GAAYC,EAAOC,EAAQ,CAAE,OAAOD,EAAQC,EAASH,EAAU,CACxE,SAASI,GAAaC,EAAO,CAAE,OAAOA,EAAQN,EAAS,CACvD,SAASO,GAAcD,EAAO,CAAE,OAAQA,GAASA,EAAQN,KAAYC,EAAU,CAC/E,IAAMO,GAAa,EAAGC,GAAY,EAAGC,GAAa,EAAGC,GAAW,EAK1DC,GAAN,KAAgB,CAIZ,YAIAC,EAIAC,EAIAC,EAAS,CACL,KAAK,IAAMF,EACX,KAAK,QAAUC,EACf,KAAK,QAAUC,CACnB,CAMA,IAAI,SAAU,CAAE,OAAQ,KAAK,QAAUJ,IAAY,CAAG,CAItD,IAAI,eAAgB,CAAE,OAAQ,KAAK,SAAWH,GAAaE,KAAe,CAAG,CAI7E,IAAI,cAAe,CAAE,OAAQ,KAAK,SAAWD,GAAYC,KAAe,CAAG,CAM3E,IAAI,eAAgB,CAAE,OAAQ,KAAK,QAAUA,IAAc,CAAG,CAClE,EAOMM,GAAN,MAAMC,CAAQ,CAMV,YAIAC,EAIAC,EAAW,GAAO,CAGd,GAFA,KAAK,OAASD,EACd,KAAK,SAAWC,EACZ,CAACD,EAAO,QAAUD,EAAQ,MAC1B,OAAOA,EAAQ,KACvB,CAIA,QAAQX,EAAO,CACX,IAAIc,EAAO,EAAGjB,EAAQE,GAAaC,CAAK,EACxC,GAAI,CAAC,KAAK,SACN,QAASe,EAAI,EAAGA,EAAIlB,EAAOkB,IACvBD,GAAQ,KAAK,OAAOC,EAAI,EAAI,CAAC,EAAI,KAAK,OAAOA,EAAI,EAAI,CAAC,EAC9D,OAAO,KAAK,OAAOlB,EAAQ,CAAC,EAAIiB,EAAOb,GAAcD,CAAK,CAC9D,CACA,UAAUO,EAAKS,EAAQ,EAAG,CAAE,OAAO,KAAK,KAAKT,EAAKS,EAAO,EAAK,CAAG,CACjE,IAAIT,EAAKS,EAAQ,EAAG,CAAE,OAAO,KAAK,KAAKT,EAAKS,EAAO,EAAI,CAAG,CAI1D,KAAKT,EAAKS,EAAOC,EAAQ,CACrB,IAAIH,EAAO,EAAGI,EAAW,KAAK,SAAW,EAAI,EAAGC,EAAW,KAAK,SAAW,EAAI,EAC/E,QAASJ,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,GAAK,EAAG,CAC5C,IAAIK,EAAQ,KAAK,OAAOL,CAAC,GAAK,KAAK,SAAWD,EAAO,GACrD,GAAIM,EAAQb,EACR,MACJ,IAAIc,EAAU,KAAK,OAAON,EAAIG,CAAQ,EAAGI,EAAU,KAAK,OAAOP,EAAII,CAAQ,EAAGI,EAAMH,EAAQC,EAC5F,GAAId,GAAOgB,EAAK,CACZ,IAAIC,EAAQH,EAAkBd,GAAOa,EAAQ,GAAKb,GAAOgB,EAAM,EAAIP,EAA7CA,EAClBS,EAASL,EAAQN,GAAQU,EAAO,EAAI,EAAIF,GAC5C,GAAIL,EACA,OAAOQ,EACX,IAAIhB,EAAUF,IAAQS,EAAQ,EAAII,EAAQG,GAAO,KAAO3B,GAAYmB,EAAI,EAAGR,EAAMa,CAAK,EAClFM,EAAMnB,GAAOa,EAAQjB,GAAYI,GAAOgB,EAAMrB,GAAaE,GAC/D,OAAIY,EAAQ,EAAIT,GAAOa,EAAQb,GAAOgB,KAClCG,GAAOrB,IACJ,IAAIC,GAAUmB,EAAQC,EAAKjB,CAAO,CAC7C,CACAK,GAAQQ,EAAUD,CACtB,CACA,OAAOJ,EAASV,EAAMO,EAAO,IAAIR,GAAUC,EAAMO,EAAM,EAAG,IAAI,CAClE,CAIA,QAAQP,EAAKE,EAAS,CAClB,IAAIK,EAAO,EAAGjB,EAAQE,GAAaU,CAAO,EACtCS,EAAW,KAAK,SAAW,EAAI,EAAGC,EAAW,KAAK,SAAW,EAAI,EACrE,QAASJ,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,GAAK,EAAG,CAC5C,IAAIK,EAAQ,KAAK,OAAOL,CAAC,GAAK,KAAK,SAAWD,EAAO,GACrD,GAAIM,EAAQb,EACR,MACJ,IAAIc,EAAU,KAAK,OAAON,EAAIG,CAAQ,EAAGK,EAAMH,EAAQC,EACvD,GAAId,GAAOgB,GAAOR,GAAKlB,EAAQ,EAC3B,MAAO,GACXiB,GAAQ,KAAK,OAAOC,EAAII,CAAQ,EAAIE,CACxC,CACA,MAAO,EACX,CAKA,QAAQM,EAAG,CACP,IAAIT,EAAW,KAAK,SAAW,EAAI,EAAGC,EAAW,KAAK,SAAW,EAAI,EACrE,QAASJ,EAAI,EAAGD,EAAO,EAAGC,EAAI,KAAK,OAAO,OAAQA,GAAK,EAAG,CACtD,IAAIK,EAAQ,KAAK,OAAOL,CAAC,EAAGa,EAAWR,GAAS,KAAK,SAAWN,EAAO,GAAIe,EAAWT,GAAS,KAAK,SAAW,EAAIN,GAC/GO,EAAU,KAAK,OAAON,EAAIG,CAAQ,EAAGI,EAAU,KAAK,OAAOP,EAAII,CAAQ,EAC3EQ,EAAEC,EAAUA,EAAWP,EAASQ,EAAUA,EAAWP,CAAO,EAC5DR,GAAQQ,EAAUD,CACtB,CACJ,CAKA,QAAS,CACL,OAAO,IAAIV,EAAQ,KAAK,OAAQ,CAAC,KAAK,QAAQ,CAClD,CAIA,UAAW,CACP,OAAQ,KAAK,SAAW,IAAM,IAAM,KAAK,UAAU,KAAK,MAAM,CAClE,CAMA,OAAO,OAAOmB,EAAG,CACb,OAAOA,GAAK,EAAInB,EAAQ,MAAQ,IAAIA,EAAQmB,EAAI,EAAI,CAAC,EAAG,CAACA,EAAG,CAAC,EAAI,CAAC,EAAG,EAAGA,CAAC,CAAC,CAC9E,CACJ,EAIApB,GAAQ,MAAQ,IAAIA,GAAQ,CAAC,CAAC,EAS9B,IAAMqB,GAAN,MAAMC,CAAQ,CAIV,YAAYC,EAIZC,EAKAC,EAAO,EAIPC,EAAKH,EAAOA,EAAK,OAAS,EAAG,CACzB,KAAK,OAASC,EACd,KAAK,KAAOC,EACZ,KAAK,GAAKC,EACV,KAAK,MAAQH,GAAQ,CAAC,EACtB,KAAK,QAAU,EAAEA,GAAQC,EAC7B,CAIA,IAAI,MAAO,CAAE,OAAO,KAAK,KAAO,CAIhC,MAAMC,EAAO,EAAGC,EAAK,KAAK,KAAK,OAAQ,CACnC,OAAO,IAAIJ,EAAQ,KAAK,MAAO,KAAK,OAAQG,EAAMC,CAAE,CACxD,CAMA,UAAUC,EAAKC,EAAS,CACf,KAAK,UACN,KAAK,MAAQ,KAAK,MAAM,MAAM,EAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,OAAO,MAAM,EAC/C,KAAK,QAAU,IAEnB,KAAK,GAAK,KAAK,MAAM,KAAKD,CAAG,EACzBC,GAAW,MACX,KAAK,UAAU,KAAK,MAAM,OAAS,EAAGA,CAAO,CACrD,CAKA,cAAcC,EAAS,CACnB,QAASxB,EAAI,EAAGyB,EAAY,KAAK,MAAM,OAAQzB,EAAIwB,EAAQ,MAAM,OAAQxB,IAAK,CAC1E,IAAI0B,EAAOF,EAAQ,UAAUxB,CAAC,EAC9B,KAAK,UAAUwB,EAAQ,MAAMxB,CAAC,EAAG0B,GAAQ,MAAQA,EAAO1B,EAAIyB,EAAYC,EAAO,MAAS,CAC5F,CACJ,CAMA,UAAUX,EAAG,CACT,GAAI,KAAK,QACL,QAASf,EAAI,EAAGA,EAAI,KAAK,OAAO,OAAQA,IACpC,GAAI,KAAK,OAAOA,CAAC,GAAKe,EAClB,OAAO,KAAK,OAAOf,GAAKA,EAAI,EAAI,GAAK,EAAE,EACvD,CAIA,UAAUe,EAAGY,EAAG,CACP,KAAK,SACN,KAAK,OAAS,CAAC,GACnB,KAAK,OAAO,KAAKZ,EAAGY,CAAC,CACzB,CAIA,sBAAsBH,EAAS,CAC3B,QAASxB,EAAIwB,EAAQ,KAAK,OAAS,EAAGI,EAAY,KAAK,MAAM,OAASJ,EAAQ,MAAM,OAAQxB,GAAK,EAAGA,IAAK,CACrG,IAAI0B,EAAOF,EAAQ,UAAUxB,CAAC,EAC9B,KAAK,UAAUwB,EAAQ,MAAMxB,CAAC,EAAE,OAAO,EAAG0B,GAAQ,MAAQA,EAAO1B,EAAI4B,EAAYF,EAAO,EAAI,MAAS,CACzG,CACJ,CAIA,QAAS,CACL,IAAIG,EAAU,IAAIZ,EAClB,OAAAY,EAAQ,sBAAsB,IAAI,EAC3BA,CACX,CAIA,IAAIrC,EAAKS,EAAQ,EAAG,CAChB,GAAI,KAAK,OACL,OAAO,KAAK,KAAKT,EAAKS,EAAO,EAAI,EACrC,QAASD,EAAI,KAAK,KAAMA,EAAI,KAAK,GAAIA,IACjCR,EAAM,KAAK,MAAMQ,CAAC,EAAE,IAAIR,EAAKS,CAAK,EACtC,OAAOT,CACX,CAKA,UAAUA,EAAKS,EAAQ,EAAG,CAAE,OAAO,KAAK,KAAKT,EAAKS,EAAO,EAAK,CAAG,CAIjE,KAAKT,EAAKS,EAAOC,EAAQ,CACrB,IAAIT,EAAU,EACd,QAAS,EAAI,KAAK,KAAM,EAAI,KAAK,GAAI,IAAK,CACtC,IAAI6B,EAAM,KAAK,MAAM,CAAC,EAAGZ,EAASY,EAAI,UAAU9B,EAAKS,CAAK,EAC1D,GAAIS,EAAO,SAAW,KAAM,CACxB,IAAIoB,EAAO,KAAK,UAAU,CAAC,EAC3B,GAAIA,GAAQ,MAAQA,EAAO,GAAKA,EAAO,KAAK,GAAI,CAC5C,EAAIA,EACJtC,EAAM,KAAK,MAAMsC,CAAI,EAAE,QAAQpB,EAAO,OAAO,EAC7C,QACJ,CACJ,CACAjB,GAAWiB,EAAO,QAClBlB,EAAMkB,EAAO,GACjB,CACA,OAAOR,EAASV,EAAM,IAAID,GAAUC,EAAKC,EAAS,IAAI,CAC1D,CACJ,EAEMsC,GAAY,OAAO,OAAO,IAAI,EAY9BC,GAAN,KAAW,CAMP,QAAS,CAAE,OAAOrC,GAAQ,KAAO,CAMjC,MAAMsC,EAAO,CAAE,OAAO,IAAM,CAK5B,OAAO,SAASC,EAAQC,EAAM,CAC1B,GAAI,CAACA,GAAQ,CAACA,EAAK,SACf,MAAM,IAAI,WAAW,iCAAiC,EAC1D,IAAIC,EAAOL,GAAUI,EAAK,QAAQ,EAClC,GAAI,CAACC,EACD,MAAM,IAAI,WAAW,gBAAgBD,EAAK,QAAQ,UAAU,EAChE,OAAOC,EAAK,SAASF,EAAQC,CAAI,CACrC,CAOA,OAAO,OAAOE,EAAIC,EAAW,CACzB,GAAID,KAAMN,GACN,MAAM,IAAI,WAAW,iCAAmCM,CAAE,EAC9D,OAAAN,GAAUM,CAAE,EAAIC,EAChBA,EAAU,UAAU,OAASD,EACtBC,CACX,CACJ,EAKMC,GAAN,MAAMC,CAAW,CAIb,YAIAC,EAIAC,EAAQ,CACJ,KAAK,IAAMD,EACX,KAAK,OAASC,CAClB,CAIA,OAAO,GAAGD,EAAK,CAAE,OAAO,IAAID,EAAWC,EAAK,IAAI,CAAG,CAInD,OAAO,KAAKE,EAAS,CAAE,OAAO,IAAIH,EAAW,KAAMG,CAAO,CAAG,CAM7D,OAAO,YAAYF,EAAKrB,EAAMC,EAAIuB,EAAO,CACrC,GAAI,CACA,OAAOJ,EAAW,GAAGC,EAAI,QAAQrB,EAAMC,EAAIuB,CAAK,CAAC,CACrD,OACOC,EAAG,CACN,GAAIA,aAAaC,GACb,OAAON,EAAW,KAAKK,EAAE,OAAO,EACpC,MAAMA,CACV,CACJ,CACJ,EAEA,SAASE,GAAYC,EAAUpC,EAAGqC,EAAQ,CACtC,IAAIC,EAAS,CAAC,EACd,QAASlD,EAAI,EAAGA,EAAIgD,EAAS,WAAYhD,IAAK,CAC1C,IAAImD,EAAQH,EAAS,MAAMhD,CAAC,EACxBmD,EAAM,QAAQ,OACdA,EAAQA,EAAM,KAAKJ,GAAYI,EAAM,QAASvC,EAAGuC,CAAK,CAAC,GACvDA,EAAM,WACNA,EAAQvC,EAAEuC,EAAOF,EAAQjD,CAAC,GAC9BkD,EAAO,KAAKC,CAAK,CACrB,CACA,OAAOC,EAAS,UAAUF,CAAM,CACpC,CAIA,IAAMG,GAAN,MAAMC,UAAoBtB,EAAK,CAI3B,YAIAZ,EAIAC,EAIAkC,EAAM,CACF,MAAM,EACN,KAAK,KAAOnC,EACZ,KAAK,GAAKC,EACV,KAAK,KAAOkC,CAChB,CACA,MAAMd,EAAK,CACP,IAAIe,EAAWf,EAAI,MAAM,KAAK,KAAM,KAAK,EAAE,EAAGgB,EAAQhB,EAAI,QAAQ,KAAK,IAAI,EACvEQ,EAASQ,EAAM,KAAKA,EAAM,YAAY,KAAK,EAAE,CAAC,EAC9Cb,EAAQ,IAAIc,EAAMX,GAAYS,EAAS,QAAS,CAACG,EAAMV,IACnD,CAACU,EAAK,QAAU,CAACV,EAAO,KAAK,eAAe,KAAK,KAAK,IAAI,EACnDU,EACJA,EAAK,KAAK,KAAK,KAAK,SAASA,EAAK,KAAK,CAAC,EAChDV,CAAM,EAAGO,EAAS,UAAWA,EAAS,OAAO,EAChD,OAAOjB,GAAW,YAAYE,EAAK,KAAK,KAAM,KAAK,GAAIG,CAAK,CAChE,CACA,QAAS,CACL,OAAO,IAAIgB,GAAe,KAAK,KAAM,KAAK,GAAI,KAAK,IAAI,CAC3D,CACA,IAAIpC,EAAS,CACT,IAAIJ,EAAOI,EAAQ,UAAU,KAAK,KAAM,CAAC,EAAGH,EAAKG,EAAQ,UAAU,KAAK,GAAI,EAAE,EAC9E,OAAIJ,EAAK,SAAWC,EAAG,SAAWD,EAAK,KAAOC,EAAG,IACtC,KACJ,IAAIiC,EAAYlC,EAAK,IAAKC,EAAG,IAAK,KAAK,IAAI,CACtD,CACA,MAAMY,EAAO,CACT,OAAIA,aAAiBqB,GACjBrB,EAAM,KAAK,GAAG,KAAK,IAAI,GACvB,KAAK,MAAQA,EAAM,IAAM,KAAK,IAAMA,EAAM,KACnC,IAAIqB,EAAY,KAAK,IAAI,KAAK,KAAMrB,EAAM,IAAI,EAAG,KAAK,IAAI,KAAK,GAAIA,EAAM,EAAE,EAAG,KAAK,IAAI,EAC3F,IACX,CACA,QAAS,CACL,MAAO,CAAE,SAAU,UAAW,KAAM,KAAK,KAAK,OAAO,EACjD,KAAM,KAAK,KAAM,GAAI,KAAK,EAAG,CACrC,CAIA,OAAO,SAASC,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,MAAQ,UAAY,OAAOA,EAAK,IAAM,SAClD,MAAM,IAAI,WAAW,wCAAwC,EACjE,OAAO,IAAImB,EAAYnB,EAAK,KAAMA,EAAK,GAAID,EAAO,aAAaC,EAAK,IAAI,CAAC,CAC7E,CACJ,EACAH,GAAK,OAAO,UAAWqB,EAAW,EAIlC,IAAMO,GAAN,MAAMC,UAAuB7B,EAAK,CAI9B,YAIAZ,EAIAC,EAIAkC,EAAM,CACF,MAAM,EACN,KAAK,KAAOnC,EACZ,KAAK,GAAKC,EACV,KAAK,KAAOkC,CAChB,CACA,MAAMd,EAAK,CACP,IAAIe,EAAWf,EAAI,MAAM,KAAK,KAAM,KAAK,EAAE,EACvCG,EAAQ,IAAIc,EAAMX,GAAYS,EAAS,QAASG,GACzCA,EAAK,KAAK,KAAK,KAAK,cAAcA,EAAK,KAAK,CAAC,EACrDlB,CAAG,EAAGe,EAAS,UAAWA,EAAS,OAAO,EAC7C,OAAOjB,GAAW,YAAYE,EAAK,KAAK,KAAM,KAAK,GAAIG,CAAK,CAChE,CACA,QAAS,CACL,OAAO,IAAIS,GAAY,KAAK,KAAM,KAAK,GAAI,KAAK,IAAI,CACxD,CACA,IAAI7B,EAAS,CACT,IAAIJ,EAAOI,EAAQ,UAAU,KAAK,KAAM,CAAC,EAAGH,EAAKG,EAAQ,UAAU,KAAK,GAAI,EAAE,EAC9E,OAAIJ,EAAK,SAAWC,EAAG,SAAWD,EAAK,KAAOC,EAAG,IACtC,KACJ,IAAIwC,EAAezC,EAAK,IAAKC,EAAG,IAAK,KAAK,IAAI,CACzD,CACA,MAAMY,EAAO,CACT,OAAIA,aAAiB4B,GACjB5B,EAAM,KAAK,GAAG,KAAK,IAAI,GACvB,KAAK,MAAQA,EAAM,IAAM,KAAK,IAAMA,EAAM,KACnC,IAAI4B,EAAe,KAAK,IAAI,KAAK,KAAM5B,EAAM,IAAI,EAAG,KAAK,IAAI,KAAK,GAAIA,EAAM,EAAE,EAAG,KAAK,IAAI,EAC9F,IACX,CACA,QAAS,CACL,MAAO,CAAE,SAAU,aAAc,KAAM,KAAK,KAAK,OAAO,EACpD,KAAM,KAAK,KAAM,GAAI,KAAK,EAAG,CACrC,CAIA,OAAO,SAASC,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,MAAQ,UAAY,OAAOA,EAAK,IAAM,SAClD,MAAM,IAAI,WAAW,2CAA2C,EACpE,OAAO,IAAI0B,EAAe1B,EAAK,KAAMA,EAAK,GAAID,EAAO,aAAaC,EAAK,IAAI,CAAC,CAChF,CACJ,EACAH,GAAK,OAAO,aAAc4B,EAAc,EAIxC,IAAME,GAAN,MAAMC,UAAwB/B,EAAK,CAI/B,YAIAxC,EAIA+D,EAAM,CACF,MAAM,EACN,KAAK,IAAM/D,EACX,KAAK,KAAO+D,CAChB,CACA,MAAMd,EAAK,CACP,IAAIkB,EAAOlB,EAAI,OAAO,KAAK,GAAG,EAC9B,GAAI,CAACkB,EACD,OAAOpB,GAAW,KAAK,iCAAiC,EAC5D,IAAIyB,EAAUL,EAAK,KAAK,OAAOA,EAAK,MAAO,KAAM,KAAK,KAAK,SAASA,EAAK,KAAK,CAAC,EAC/E,OAAOpB,GAAW,YAAYE,EAAK,KAAK,IAAK,KAAK,IAAM,EAAG,IAAIiB,EAAMN,EAAS,KAAKY,CAAO,EAAG,EAAGL,EAAK,OAAS,EAAI,CAAC,CAAC,CACxH,CACA,OAAOlB,EAAK,CACR,IAAIkB,EAAOlB,EAAI,OAAO,KAAK,GAAG,EAC9B,GAAIkB,EAAM,CACN,IAAIM,EAAS,KAAK,KAAK,SAASN,EAAK,KAAK,EAC1C,GAAIM,EAAO,QAAUN,EAAK,MAAM,OAAQ,CACpC,QAAS3D,EAAI,EAAGA,EAAI2D,EAAK,MAAM,OAAQ3D,IACnC,GAAI,CAAC2D,EAAK,MAAM3D,CAAC,EAAE,QAAQiE,CAAM,EAC7B,OAAO,IAAIF,EAAgB,KAAK,IAAKJ,EAAK,MAAM3D,CAAC,CAAC,EAC1D,OAAO,IAAI+D,EAAgB,KAAK,IAAK,KAAK,IAAI,CAClD,CACJ,CACA,OAAO,IAAIG,GAAmB,KAAK,IAAK,KAAK,IAAI,CACrD,CACA,IAAI1C,EAAS,CACT,IAAIhC,EAAMgC,EAAQ,UAAU,KAAK,IAAK,CAAC,EACvC,OAAOhC,EAAI,aAAe,KAAO,IAAIuE,EAAgBvE,EAAI,IAAK,KAAK,IAAI,CAC3E,CACA,QAAS,CACL,MAAO,CAAE,SAAU,cAAe,IAAK,KAAK,IAAK,KAAM,KAAK,KAAK,OAAO,CAAE,CAC9E,CAIA,OAAO,SAAS0C,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,KAAO,SACnB,MAAM,IAAI,WAAW,4CAA4C,EACrE,OAAO,IAAI4B,EAAgB5B,EAAK,IAAKD,EAAO,aAAaC,EAAK,IAAI,CAAC,CACvE,CACJ,EACAH,GAAK,OAAO,cAAe8B,EAAe,EAI1C,IAAMI,GAAN,MAAMC,UAA2BnC,EAAK,CAIlC,YAIAxC,EAIA+D,EAAM,CACF,MAAM,EACN,KAAK,IAAM/D,EACX,KAAK,KAAO+D,CAChB,CACA,MAAMd,EAAK,CACP,IAAIkB,EAAOlB,EAAI,OAAO,KAAK,GAAG,EAC9B,GAAI,CAACkB,EACD,OAAOpB,GAAW,KAAK,iCAAiC,EAC5D,IAAIyB,EAAUL,EAAK,KAAK,OAAOA,EAAK,MAAO,KAAM,KAAK,KAAK,cAAcA,EAAK,KAAK,CAAC,EACpF,OAAOpB,GAAW,YAAYE,EAAK,KAAK,IAAK,KAAK,IAAM,EAAG,IAAIiB,EAAMN,EAAS,KAAKY,CAAO,EAAG,EAAGL,EAAK,OAAS,EAAI,CAAC,CAAC,CACxH,CACA,OAAOlB,EAAK,CACR,IAAIkB,EAAOlB,EAAI,OAAO,KAAK,GAAG,EAC9B,MAAI,CAACkB,GAAQ,CAAC,KAAK,KAAK,QAAQA,EAAK,KAAK,EAC/B,KACJ,IAAIG,GAAgB,KAAK,IAAK,KAAK,IAAI,CAClD,CACA,IAAItC,EAAS,CACT,IAAIhC,EAAMgC,EAAQ,UAAU,KAAK,IAAK,CAAC,EACvC,OAAOhC,EAAI,aAAe,KAAO,IAAI2E,EAAmB3E,EAAI,IAAK,KAAK,IAAI,CAC9E,CACA,QAAS,CACL,MAAO,CAAE,SAAU,iBAAkB,IAAK,KAAK,IAAK,KAAM,KAAK,KAAK,OAAO,CAAE,CACjF,CAIA,OAAO,SAAS0C,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,KAAO,SACnB,MAAM,IAAI,WAAW,+CAA+C,EACxE,OAAO,IAAIgC,EAAmBhC,EAAK,IAAKD,EAAO,aAAaC,EAAK,IAAI,CAAC,CAC1E,CACJ,EACAH,GAAK,OAAO,iBAAkBkC,EAAkB,EAKhD,IAAME,GAAN,MAAMC,UAAoBrC,EAAK,CAU3B,YAIAZ,EAIAC,EAIAuB,EAIA0B,EAAY,GAAO,CACf,MAAM,EACN,KAAK,KAAOlD,EACZ,KAAK,GAAKC,EACV,KAAK,MAAQuB,EACb,KAAK,UAAY0B,CACrB,CACA,MAAM7B,EAAK,CACP,OAAI,KAAK,WAAa8B,GAAe9B,EAAK,KAAK,KAAM,KAAK,EAAE,EACjDF,GAAW,KAAK,2CAA2C,EAC/DA,GAAW,YAAYE,EAAK,KAAK,KAAM,KAAK,GAAI,KAAK,KAAK,CACrE,CACA,QAAS,CACL,OAAO,IAAI9C,GAAQ,CAAC,KAAK,KAAM,KAAK,GAAK,KAAK,KAAM,KAAK,MAAM,IAAI,CAAC,CACxE,CACA,OAAO8C,EAAK,CACR,OAAO,IAAI4B,EAAY,KAAK,KAAM,KAAK,KAAO,KAAK,MAAM,KAAM5B,EAAI,MAAM,KAAK,KAAM,KAAK,EAAE,CAAC,CAChG,CACA,IAAIjB,EAAS,CACT,IAAIH,EAAKG,EAAQ,UAAU,KAAK,GAAI,EAAE,EAClCJ,EAAO,KAAK,MAAQ,KAAK,IAAMiD,EAAY,SAAW,EAAIhD,EAAKG,EAAQ,UAAU,KAAK,KAAM,CAAC,EACjG,OAAIJ,EAAK,eAAiBC,EAAG,cAClB,KACJ,IAAIgD,EAAYjD,EAAK,IAAK,KAAK,IAAIA,EAAK,IAAKC,EAAG,GAAG,EAAG,KAAK,MAAO,KAAK,SAAS,CAC3F,CACA,MAAMY,EAAO,CACT,GAAI,EAAEA,aAAiBoC,IAAgBpC,EAAM,WAAa,KAAK,UAC3D,OAAO,KACX,GAAI,KAAK,KAAO,KAAK,MAAM,MAAQA,EAAM,MAAQ,CAAC,KAAK,MAAM,SAAW,CAACA,EAAM,MAAM,UAAW,CAC5F,IAAIW,EAAQ,KAAK,MAAM,KAAOX,EAAM,MAAM,MAAQ,EAAIyB,EAAM,MACtD,IAAIA,EAAM,KAAK,MAAM,QAAQ,OAAOzB,EAAM,MAAM,OAAO,EAAG,KAAK,MAAM,UAAWA,EAAM,MAAM,OAAO,EACzG,OAAO,IAAIoC,EAAY,KAAK,KAAM,KAAK,IAAMpC,EAAM,GAAKA,EAAM,MAAOW,EAAO,KAAK,SAAS,CAC9F,SACSX,EAAM,IAAM,KAAK,MAAQ,CAAC,KAAK,MAAM,WAAa,CAACA,EAAM,MAAM,QAAS,CAC7E,IAAIW,EAAQ,KAAK,MAAM,KAAOX,EAAM,MAAM,MAAQ,EAAIyB,EAAM,MACtD,IAAIA,EAAMzB,EAAM,MAAM,QAAQ,OAAO,KAAK,MAAM,OAAO,EAAGA,EAAM,MAAM,UAAW,KAAK,MAAM,OAAO,EACzG,OAAO,IAAIoC,EAAYpC,EAAM,KAAM,KAAK,GAAIW,EAAO,KAAK,SAAS,CACrE,KAEI,QAAO,IAEf,CACA,QAAS,CACL,IAAIT,EAAO,CAAE,SAAU,UAAW,KAAM,KAAK,KAAM,GAAI,KAAK,EAAG,EAC/D,OAAI,KAAK,MAAM,OACXA,EAAK,MAAQ,KAAK,MAAM,OAAO,GAC/B,KAAK,YACLA,EAAK,UAAY,IACdA,CACX,CAIA,OAAO,SAASD,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,MAAQ,UAAY,OAAOA,EAAK,IAAM,SAClD,MAAM,IAAI,WAAW,wCAAwC,EACjE,OAAO,IAAIkC,EAAYlC,EAAK,KAAMA,EAAK,GAAIuB,EAAM,SAASxB,EAAQC,EAAK,KAAK,EAAG,CAAC,CAACA,EAAK,SAAS,CACnG,CACJ,EASAiC,GAAY,SAAW,EACvBpC,GAAK,OAAO,UAAWoC,EAAW,EAMlC,IAAMI,GAAN,MAAMC,UAA0BzC,EAAK,CAOjC,YAIAZ,EAIAC,EAIAqD,EAIAC,EAIA/B,EAKAgC,EAIAN,EAAY,GAAO,CACf,MAAM,EACN,KAAK,KAAOlD,EACZ,KAAK,GAAKC,EACV,KAAK,QAAUqD,EACf,KAAK,MAAQC,EACb,KAAK,MAAQ/B,EACb,KAAK,OAASgC,EACd,KAAK,UAAYN,CACrB,CACA,MAAM7B,EAAK,CACP,GAAI,KAAK,YAAc8B,GAAe9B,EAAK,KAAK,KAAM,KAAK,OAAO,GAC9D8B,GAAe9B,EAAK,KAAK,MAAO,KAAK,EAAE,GACvC,OAAOF,GAAW,KAAK,+CAA+C,EAC1E,IAAIsC,EAAMpC,EAAI,MAAM,KAAK,QAAS,KAAK,KAAK,EAC5C,GAAIoC,EAAI,WAAaA,EAAI,QACrB,OAAOtC,GAAW,KAAK,yBAAyB,EACpD,IAAIuC,EAAW,KAAK,MAAM,SAAS,KAAK,OAAQD,EAAI,OAAO,EAC3D,OAAKC,EAEEvC,GAAW,YAAYE,EAAK,KAAK,KAAM,KAAK,GAAIqC,CAAQ,EADpDvC,GAAW,KAAK,6BAA6B,CAE5D,CACA,QAAS,CACL,OAAO,IAAI5C,GAAQ,CAAC,KAAK,KAAM,KAAK,QAAU,KAAK,KAAM,KAAK,OAC1D,KAAK,MAAO,KAAK,GAAK,KAAK,MAAO,KAAK,MAAM,KAAO,KAAK,MAAM,CAAC,CACxE,CACA,OAAO8C,EAAK,CACR,IAAIoC,EAAM,KAAK,MAAQ,KAAK,QAC5B,OAAO,IAAIJ,EAAkB,KAAK,KAAM,KAAK,KAAO,KAAK,MAAM,KAAOI,EAAK,KAAK,KAAO,KAAK,OAAQ,KAAK,KAAO,KAAK,OAASA,EAAKpC,EAAI,MAAM,KAAK,KAAM,KAAK,EAAE,EAAE,cAAc,KAAK,QAAU,KAAK,KAAM,KAAK,MAAQ,KAAK,IAAI,EAAG,KAAK,QAAU,KAAK,KAAM,KAAK,SAAS,CAC9Q,CACA,IAAIjB,EAAS,CACT,IAAIJ,EAAOI,EAAQ,UAAU,KAAK,KAAM,CAAC,EAAGH,EAAKG,EAAQ,UAAU,KAAK,GAAI,EAAE,EAC1EkD,EAAU,KAAK,MAAQ,KAAK,QAAUtD,EAAK,IAAMI,EAAQ,IAAI,KAAK,QAAS,EAAE,EAC7EmD,EAAQ,KAAK,IAAM,KAAK,MAAQtD,EAAG,IAAMG,EAAQ,IAAI,KAAK,MAAO,CAAC,EACtE,OAAKJ,EAAK,eAAiBC,EAAG,eAAkBqD,EAAUtD,EAAK,KAAOuD,EAAQtD,EAAG,IACtE,KACJ,IAAIoD,EAAkBrD,EAAK,IAAKC,EAAG,IAAKqD,EAASC,EAAO,KAAK,MAAO,KAAK,OAAQ,KAAK,SAAS,CAC1G,CACA,QAAS,CACL,IAAIxC,EAAO,CAAE,SAAU,gBAAiB,KAAM,KAAK,KAAM,GAAI,KAAK,GAC9D,QAAS,KAAK,QAAS,MAAO,KAAK,MAAO,OAAQ,KAAK,MAAO,EAClE,OAAI,KAAK,MAAM,OACXA,EAAK,MAAQ,KAAK,MAAM,OAAO,GAC/B,KAAK,YACLA,EAAK,UAAY,IACdA,CACX,CAIA,OAAO,SAASD,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,MAAQ,UAAY,OAAOA,EAAK,IAAM,UAClD,OAAOA,EAAK,SAAW,UAAY,OAAOA,EAAK,OAAS,UAAY,OAAOA,EAAK,QAAU,SAC1F,MAAM,IAAI,WAAW,8CAA8C,EACvE,OAAO,IAAIsC,EAAkBtC,EAAK,KAAMA,EAAK,GAAIA,EAAK,QAASA,EAAK,MAAOuB,EAAM,SAASxB,EAAQC,EAAK,KAAK,EAAGA,EAAK,OAAQ,CAAC,CAACA,EAAK,SAAS,CAChJ,CACJ,EACAH,GAAK,OAAO,gBAAiBwC,EAAiB,EAC9C,SAASD,GAAe9B,EAAKrB,EAAMC,EAAI,CACnC,IAAIoC,EAAQhB,EAAI,QAAQrB,CAAI,EAAG2D,EAAO1D,EAAKD,EAAM4D,EAAQvB,EAAM,MAC/D,KAAOsB,EAAO,GAAKC,EAAQ,GAAKvB,EAAM,WAAWuB,CAAK,GAAKvB,EAAM,KAAKuB,CAAK,EAAE,YACzEA,IACAD,IAEJ,GAAIA,EAAO,EAAG,CACV,IAAIE,EAAOxB,EAAM,KAAKuB,CAAK,EAAE,WAAWvB,EAAM,WAAWuB,CAAK,CAAC,EAC/D,KAAOD,EAAO,GAAG,CACb,GAAI,CAACE,GAAQA,EAAK,OACd,MAAO,GACXA,EAAOA,EAAK,WACZF,GACJ,CACJ,CACA,MAAO,EACX,CAEA,SAASG,GAAQC,EAAI/D,EAAMC,EAAIkC,EAAM,CACjC,IAAI6B,EAAU,CAAC,EAAGC,EAAQ,CAAC,EACvBC,EAAUC,EACdJ,EAAG,IAAI,aAAa/D,EAAMC,EAAI,CAACsC,EAAMnE,EAAKyD,IAAW,CACjD,GAAI,CAACU,EAAK,SACN,OACJ,IAAI6B,EAAQ7B,EAAK,MACjB,GAAI,CAACJ,EAAK,QAAQiC,CAAK,GAAKvC,EAAO,KAAK,eAAeM,EAAK,IAAI,EAAG,CAC/D,IAAIlD,EAAQ,KAAK,IAAIb,EAAK4B,CAAI,EAAGZ,EAAM,KAAK,IAAIhB,EAAMmE,EAAK,SAAUtC,CAAE,EACnE4C,EAASV,EAAK,SAASiC,CAAK,EAChC,QAASxF,EAAI,EAAGA,EAAIwF,EAAM,OAAQxF,IACzBwF,EAAMxF,CAAC,EAAE,QAAQiE,CAAM,IACpBqB,GAAYA,EAAS,IAAMjF,GAASiF,EAAS,KAAK,GAAGE,EAAMxF,CAAC,CAAC,EAC7DsF,EAAS,GAAK9E,EAEd4E,EAAQ,KAAKE,EAAW,IAAI1B,GAAevD,EAAOG,EAAKgF,EAAMxF,CAAC,CAAC,CAAC,GAGxEuF,GAAUA,EAAO,IAAMlF,EACvBkF,EAAO,GAAK/E,EAEZ6E,EAAM,KAAKE,EAAS,IAAIlC,GAAYhD,EAAOG,EAAK+C,CAAI,CAAC,CAC7D,CACJ,CAAC,EACD6B,EAAQ,QAAQK,GAAKN,EAAG,KAAKM,CAAC,CAAC,EAC/BJ,EAAM,QAAQI,GAAKN,EAAG,KAAKM,CAAC,CAAC,CACjC,CACA,SAASC,GAAWP,EAAI/D,EAAMC,EAAIkC,EAAM,CACpC,IAAIoC,EAAU,CAAC,EAAGC,EAAO,EACzBT,EAAG,IAAI,aAAa/D,EAAMC,EAAI,CAACsC,EAAMnE,IAAQ,CACzC,GAAI,CAACmE,EAAK,SACN,OACJiC,IACA,IAAIC,EAAW,KACf,GAAItC,aAAgBuC,GAAU,CAC1B,IAAIC,EAAMpC,EAAK,MAAOqC,EACtB,KAAOA,EAAQzC,EAAK,QAAQwC,CAAG,IAC1BF,IAAaA,EAAW,CAAC,IAAI,KAAKG,CAAK,EACxCD,EAAMC,EAAM,cAAcD,CAAG,CAErC,MACSxC,EACDA,EAAK,QAAQI,EAAK,KAAK,IACvBkC,EAAW,CAACtC,CAAI,GAGpBsC,EAAWlC,EAAK,MAEpB,GAAIkC,GAAYA,EAAS,OAAQ,CAC7B,IAAIrF,EAAM,KAAK,IAAIhB,EAAMmE,EAAK,SAAUtC,CAAE,EAC1C,QAASrB,EAAI,EAAGA,EAAI6F,EAAS,OAAQ7F,IAAK,CACtC,IAAIiG,EAAQJ,EAAS7F,CAAC,EAAGgG,EACzB,QAASE,EAAI,EAAGA,EAAIP,EAAQ,OAAQO,IAAK,CACrC,IAAIvE,EAAIgE,EAAQO,CAAC,EACbvE,EAAE,MAAQiE,EAAO,GAAKK,EAAM,GAAGN,EAAQO,CAAC,EAAE,KAAK,IAC/CF,EAAQrE,EAChB,CACIqE,GACAA,EAAM,GAAKxF,EACXwF,EAAM,KAAOJ,GAGbD,EAAQ,KAAK,CAAE,MAAAM,EAAO,KAAM,KAAK,IAAIzG,EAAK4B,CAAI,EAAG,GAAIZ,EAAK,KAAAoF,CAAK,CAAC,CAExE,CACJ,CACJ,CAAC,EACDD,EAAQ,QAAQhE,GAAKwD,EAAG,KAAK,IAAIvB,GAAejC,EAAE,KAAMA,EAAE,GAAIA,EAAE,KAAK,CAAC,CAAC,CAC3E,CACA,SAASwE,GAAkBhB,EAAI3F,EAAK4G,EAAYC,EAAQD,EAAW,aAAcE,EAAgB,GAAM,CACnG,IAAI3C,EAAOwB,EAAG,IAAI,OAAO3F,CAAG,EACxB+G,EAAY,CAAC,EAAGC,EAAMhH,EAAM,EAChC,QAASQ,EAAI,EAAGA,EAAI2D,EAAK,WAAY3D,IAAK,CACtC,IAAImD,EAAQQ,EAAK,MAAM3D,CAAC,EAAGQ,EAAMgG,EAAMrD,EAAM,SACzCsD,EAAUJ,EAAM,UAAUlD,EAAM,IAAI,EACxC,GAAI,CAACsD,EACDF,EAAU,KAAK,IAAInC,GAAYoC,EAAKhG,EAAKkD,EAAM,KAAK,CAAC,MAEpD,CACD2C,EAAQI,EACR,QAASP,EAAI,EAAGA,EAAI/C,EAAM,MAAM,OAAQ+C,IAC/BE,EAAW,eAAejD,EAAM,MAAM+C,CAAC,EAAE,IAAI,GAC9Cf,EAAG,KAAK,IAAIvB,GAAe4C,EAAKhG,EAAK2C,EAAM,MAAM+C,CAAC,CAAC,CAAC,EAC5D,GAAII,GAAiBnD,EAAM,QAAUiD,EAAW,YAAc,MAAO,CACjE,IAAIzE,EAAG+E,EAAU,YAAa9D,EAC9B,KAAOjB,EAAI+E,EAAQ,KAAKvD,EAAM,IAAI,GACzBP,IACDA,EAAQ,IAAIc,EAAMN,EAAS,KAAKgD,EAAW,OAAO,KAAK,IAAKA,EAAW,aAAajD,EAAM,KAAK,CAAC,CAAC,EAAG,EAAG,CAAC,GAC5GoD,EAAU,KAAK,IAAInC,GAAYoC,EAAM7E,EAAE,MAAO6E,EAAM7E,EAAE,MAAQA,EAAE,CAAC,EAAE,OAAQiB,CAAK,CAAC,CAEzF,CACJ,CACA4D,EAAMhG,CACV,CACA,GAAI,CAAC6F,EAAM,SAAU,CACjB,IAAIM,EAAON,EAAM,WAAWjD,EAAS,MAAO,EAAI,EAChD+B,EAAG,QAAQqB,EAAKA,EAAK,IAAI9C,EAAMiD,EAAM,EAAG,CAAC,CAAC,CAC9C,CACA,QAAS3G,EAAIuG,EAAU,OAAS,EAAGvG,GAAK,EAAGA,IACvCmF,EAAG,KAAKoB,EAAUvG,CAAC,CAAC,CAC5B,CAEA,SAAS4G,GAAOjD,EAAMtD,EAAOG,EAAK,CAC9B,OAAQH,GAAS,GAAKsD,EAAK,WAAWtD,EAAOsD,EAAK,UAAU,KACvDnD,GAAOmD,EAAK,YAAcA,EAAK,WAAW,EAAGnD,CAAG,EACzD,CAMA,SAASqG,GAAWC,EAAO,CAEvB,IAAIC,EADSD,EAAM,OACE,QAAQ,WAAWA,EAAM,WAAYA,EAAM,QAAQ,EACxE,QAAS9B,EAAQ8B,EAAM,MAAOE,EAAgB,EAAGC,EAAe,GAAI,EAAEjC,EAAO,CACzE,IAAIrB,EAAOmD,EAAM,MAAM,KAAK9B,CAAK,EAC7BlG,EAAQgI,EAAM,MAAM,MAAM9B,CAAK,EAAIgC,EAAeE,EAAWJ,EAAM,IAAI,WAAW9B,CAAK,EAAIiC,EAC/F,GAAIjC,EAAQ8B,EAAM,OAASnD,EAAK,WAAW7E,EAAOoI,EAAUH,CAAO,EAC/D,OAAO/B,EACX,GAAIA,GAAS,GAAKrB,EAAK,KAAK,KAAK,WAAa,CAACiD,GAAOjD,EAAM7E,EAAOoI,CAAQ,EACvE,MACApI,IACAkI,EAAgB,GAChBE,EAAWvD,EAAK,aAChBsD,EAAe,EACvB,CACA,OAAO,IACX,CACA,SAASE,GAAKhC,EAAI2B,EAAOM,EAAQ,CAC7B,GAAI,CAAE,MAAA3D,EAAO,IAAA4D,EAAK,MAAArC,CAAM,EAAI8B,EACxBQ,EAAW7D,EAAM,OAAOuB,EAAQ,CAAC,EAAGuC,EAASF,EAAI,MAAMrC,EAAQ,CAAC,EAChE3E,EAAQiH,EAAU9G,EAAM+G,EACxBC,EAASpE,EAAS,MAAOqE,EAAY,EACzC,QAASC,EAAI1C,EAAO2C,EAAY,GAAOD,EAAIN,EAAQM,IAC3CC,GAAalE,EAAM,MAAMiE,CAAC,EAAI,GAC9BC,EAAY,GACZH,EAASpE,EAAS,KAAKK,EAAM,KAAKiE,CAAC,EAAE,KAAKF,CAAM,CAAC,EACjDC,KAGApH,IAER,IAAIuH,EAAQxE,EAAS,MAAOyE,EAAU,EACtC,QAASH,EAAI1C,EAAO2C,EAAY,GAAOD,EAAIN,EAAQM,IAC3CC,GAAaN,EAAI,MAAMK,EAAI,CAAC,EAAIL,EAAI,IAAIK,CAAC,GACzCC,EAAY,GACZC,EAAQxE,EAAS,KAAKiE,EAAI,KAAKK,CAAC,EAAE,KAAKE,CAAK,CAAC,EAC7CC,KAGArH,IAER2E,EAAG,KAAK,IAAIX,GAAkBnE,EAAOG,EAAK8G,EAAUC,EAAQ,IAAI7D,EAAM8D,EAAO,OAAOI,CAAK,EAAGH,EAAWI,CAAO,EAAGL,EAAO,KAAOC,EAAW,EAAI,CAAC,CACnJ,CASA,SAASK,GAAahB,EAAOiB,EAAUC,EAAQ,KAAMC,EAAanB,EAAO,CACrE,IAAIoB,EAASC,GAAoBrB,EAAOiB,CAAQ,EAC5CK,EAAQF,GAAUG,GAAmBJ,EAAYF,CAAQ,EAC7D,OAAKK,EAEEF,EAAO,IAAII,EAAS,EACtB,OAAO,CAAE,KAAMP,EAAU,MAAAC,CAAM,CAAC,EAAE,OAAOI,EAAM,IAAIE,EAAS,CAAC,EAFvD,IAGf,CACA,SAASA,GAAUlG,EAAM,CAAE,MAAO,CAAE,KAAAA,EAAM,MAAO,IAAK,CAAG,CACzD,SAAS+F,GAAoBrB,EAAO1E,EAAM,CACtC,GAAI,CAAE,OAAAa,EAAQ,WAAAsF,EAAY,SAAArB,CAAS,EAAIJ,EACnCoB,EAASjF,EAAO,eAAesF,CAAU,EAAE,aAAanG,CAAI,EAChE,GAAI,CAAC8F,EACD,OAAO,KACX,IAAIM,EAAQN,EAAO,OAASA,EAAO,CAAC,EAAI9F,EACxC,OAAOa,EAAO,eAAesF,EAAYrB,EAAUsB,CAAK,EAAIN,EAAS,IACzE,CACA,SAASG,GAAmBvB,EAAO1E,EAAM,CACrC,GAAI,CAAE,OAAAa,EAAQ,WAAAsF,EAAY,SAAArB,CAAS,EAAIJ,EACnCsB,EAAQnF,EAAO,MAAMsF,CAAU,EAC/BE,EAASrG,EAAK,aAAa,aAAagG,EAAM,IAAI,EACtD,GAAI,CAACK,EACD,OAAO,KAEX,IAAIC,GADWD,EAAO,OAASA,EAAOA,EAAO,OAAS,CAAC,EAAIrG,GACjC,aAC1B,QAASpC,EAAIuI,EAAYG,GAAc1I,EAAIkH,EAAUlH,IACjD0I,EAAaA,EAAW,UAAUzF,EAAO,MAAMjD,CAAC,EAAE,IAAI,EAC1D,MAAI,CAAC0I,GAAc,CAACA,EAAW,SACpB,KACJD,CACX,CACA,SAASE,GAAKxD,EAAI2B,EAAO8B,EAAU,CAC/B,IAAI7B,EAAU3D,EAAS,MACvB,QAASpD,EAAI4I,EAAS,OAAS,EAAG5I,GAAK,EAAGA,IAAK,CAC3C,GAAI+G,EAAQ,KAAM,CACd,IAAIV,EAAQuC,EAAS5I,CAAC,EAAE,KAAK,aAAa,cAAc+G,CAAO,EAC/D,GAAI,CAACV,GAAS,CAACA,EAAM,SACjB,MAAM,IAAI,WAAW,wFAAwF,CACrH,CACAU,EAAU3D,EAAS,KAAKwF,EAAS5I,CAAC,EAAE,KAAK,OAAO4I,EAAS5I,CAAC,EAAE,MAAO+G,CAAO,CAAC,CAC/E,CACA,IAAI1G,EAAQyG,EAAM,MAAOtG,EAAMsG,EAAM,IACrC3B,EAAG,KAAK,IAAIX,GAAkBnE,EAAOG,EAAKH,EAAOG,EAAK,IAAIkD,EAAMqD,EAAS,EAAG,CAAC,EAAG6B,EAAS,OAAQ,EAAI,CAAC,CAC1G,CACA,SAASC,GAAa1D,EAAI/D,EAAMC,EAAIe,EAAM4F,EAAO,CAC7C,GAAI,CAAC5F,EAAK,YACN,MAAM,IAAI,WAAW,kDAAkD,EAC3E,IAAI0G,EAAU3D,EAAG,MAAM,OACvBA,EAAG,IAAI,aAAa/D,EAAMC,EAAI,CAACsC,EAAMnE,IAAQ,CACzC,IAAIuJ,EAAY,OAAOf,GAAS,WAAaA,EAAMrE,CAAI,EAAIqE,EAC3D,GAAIrE,EAAK,aAAe,CAACA,EAAK,UAAUvB,EAAM2G,CAAS,GACnDC,GAAc7D,EAAG,IAAKA,EAAG,QAAQ,MAAM2D,CAAO,EAAE,IAAItJ,CAAG,EAAG4C,CAAI,EAAG,CACjE,IAAI6G,EAAkB,KACtB,GAAI7G,EAAK,OAAO,qBAAsB,CAClC,IAAI8G,EAAM9G,EAAK,YAAc,MAAO+G,EAAmB,CAAC,CAAC/G,EAAK,aAAa,UAAUA,EAAK,OAAO,oBAAoB,EACjH8G,GAAO,CAACC,EACRF,EAAkB,GACb,CAACC,GAAOC,IACbF,EAAkB,GAC1B,CAEIA,IAAoB,IACpBG,GAAkBjE,EAAIxB,EAAMnE,EAAKsJ,CAAO,EAC5C3C,GAAkBhB,EAAIA,EAAG,QAAQ,MAAM2D,CAAO,EAAE,IAAItJ,EAAK,CAAC,EAAG4C,EAAM,OAAW6G,IAAoB,IAAI,EACtG,IAAIzH,EAAU2D,EAAG,QAAQ,MAAM2D,CAAO,EAClCO,EAAS7H,EAAQ,IAAIhC,EAAK,CAAC,EAAG8J,EAAO9H,EAAQ,IAAIhC,EAAMmE,EAAK,SAAU,CAAC,EAC3E,OAAAwB,EAAG,KAAK,IAAIX,GAAkB6E,EAAQC,EAAMD,EAAS,EAAGC,EAAO,EAAG,IAAI5F,EAAMN,EAAS,KAAKhB,EAAK,OAAO2G,EAAW,KAAMpF,EAAK,KAAK,CAAC,EAAG,EAAG,CAAC,EAAG,EAAG,EAAI,CAAC,EAChJsF,IAAoB,IACpBM,GAAgBpE,EAAIxB,EAAMnE,EAAKsJ,CAAO,EACnC,EACX,CACJ,CAAC,CACL,CACA,SAASS,GAAgBpE,EAAIxB,EAAMnE,EAAKsJ,EAAS,CAC7CnF,EAAK,QAAQ,CAACR,EAAOpE,IAAW,CAC5B,GAAIoE,EAAM,OAAQ,CACd,IAAIxB,EAAG+E,EAAU,YACjB,KAAO/E,EAAI+E,EAAQ,KAAKvD,EAAM,IAAI,GAAG,CACjC,IAAI9C,EAAQ8E,EAAG,QAAQ,MAAM2D,CAAO,EAAE,IAAItJ,EAAM,EAAIT,EAAS4C,EAAE,KAAK,EACpEwD,EAAG,YAAY9E,EAAOA,EAAQ,EAAGsD,EAAK,KAAK,OAAO,qBAAqB,OAAO,CAAC,CACnF,CACJ,CACJ,CAAC,CACL,CACA,SAASyF,GAAkBjE,EAAIxB,EAAMnE,EAAKsJ,EAAS,CAC/CnF,EAAK,QAAQ,CAACR,EAAOpE,IAAW,CAC5B,GAAIoE,EAAM,MAAQA,EAAM,KAAK,OAAO,qBAAsB,CACtD,IAAI9C,EAAQ8E,EAAG,QAAQ,MAAM2D,CAAO,EAAE,IAAItJ,EAAM,EAAIT,CAAM,EAC1DoG,EAAG,YAAY9E,EAAOA,EAAQ,EAAGsD,EAAK,KAAK,OAAO,KAAK;AAAA,CAAI,CAAC,CAChE,CACJ,CAAC,CACL,CACA,SAASqF,GAAcvG,EAAKjD,EAAK4C,EAAM,CACnC,IAAIoH,EAAO/G,EAAI,QAAQjD,CAAG,EAAGV,EAAQ0K,EAAK,MAAM,EAChD,OAAOA,EAAK,OAAO,eAAe1K,EAAOA,EAAQ,EAAGsD,CAAI,CAC5D,CAKA,SAASqH,GAActE,EAAI3F,EAAK4C,EAAM4F,EAAOxC,EAAO,CAChD,IAAI7B,EAAOwB,EAAG,IAAI,OAAO3F,CAAG,EAC5B,GAAI,CAACmE,EACD,MAAM,IAAI,WAAW,2BAA2B,EAC/CvB,IACDA,EAAOuB,EAAK,MAChB,IAAI+F,EAAUtH,EAAK,OAAO4F,EAAO,KAAMxC,GAAS7B,EAAK,KAAK,EAC1D,GAAIA,EAAK,OACL,OAAOwB,EAAG,YAAY3F,EAAKA,EAAMmE,EAAK,SAAU+F,CAAO,EAC3D,GAAI,CAACtH,EAAK,aAAauB,EAAK,OAAO,EAC/B,MAAM,IAAI,WAAW,iCAAmCvB,EAAK,IAAI,EACrE+C,EAAG,KAAK,IAAIX,GAAkBhF,EAAKA,EAAMmE,EAAK,SAAUnE,EAAM,EAAGA,EAAMmE,EAAK,SAAW,EAAG,IAAID,EAAMN,EAAS,KAAKsG,CAAO,EAAG,EAAG,CAAC,EAAG,EAAG,EAAI,CAAC,CAC/I,CAIA,SAASC,GAASlH,EAAKjD,EAAKwF,EAAQ,EAAG4E,EAAY,CAC/C,IAAIJ,EAAO/G,EAAI,QAAQjD,CAAG,EAAGqK,EAAOL,EAAK,MAAQxE,EAC7C8E,EAAaF,GAAcA,EAAWA,EAAW,OAAS,CAAC,GAAMJ,EAAK,OAC1E,GAAIK,EAAO,GAAKL,EAAK,OAAO,KAAK,KAAK,WAClC,CAACA,EAAK,OAAO,WAAWA,EAAK,MAAM,EAAGA,EAAK,OAAO,UAAU,GAC5D,CAACM,EAAU,KAAK,aAAaN,EAAK,OAAO,QAAQ,WAAWA,EAAK,MAAM,EAAGA,EAAK,OAAO,UAAU,CAAC,EACjG,MAAO,GACX,QAAS9B,EAAI8B,EAAK,MAAQ,EAAGxJ,EAAIgF,EAAQ,EAAG0C,EAAImC,EAAMnC,IAAK1H,IAAK,CAC5D,IAAI2D,EAAO6F,EAAK,KAAK9B,CAAC,EAAG5I,EAAQ0K,EAAK,MAAM9B,CAAC,EAC7C,GAAI/D,EAAK,KAAK,KAAK,UACf,MAAO,GACX,IAAIoG,EAAOpG,EAAK,QAAQ,WAAW7E,EAAO6E,EAAK,UAAU,EACrDqG,EAAgBJ,GAAcA,EAAW5J,EAAI,CAAC,EAC9CgK,IACAD,EAAOA,EAAK,aAAa,EAAGC,EAAc,KAAK,OAAOA,EAAc,KAAK,CAAC,GAC9E,IAAIpC,EAASgC,GAAcA,EAAW5J,CAAC,GAAM2D,EAC7C,GAAI,CAACA,EAAK,WAAW7E,EAAQ,EAAG6E,EAAK,UAAU,GAAK,CAACiE,EAAM,KAAK,aAAamC,CAAI,EAC7E,MAAO,EACf,CACA,IAAIjL,EAAQ0K,EAAK,WAAWK,CAAI,EAC5BI,EAAWL,GAAcA,EAAW,CAAC,EACzC,OAAOJ,EAAK,KAAKK,CAAI,EAAE,eAAe/K,EAAOA,EAAOmL,EAAWA,EAAS,KAAOT,EAAK,KAAKK,EAAO,CAAC,EAAE,IAAI,CAC3G,CACA,SAASK,GAAM/E,EAAI3F,EAAKwF,EAAQ,EAAG4E,EAAY,CAC3C,IAAIJ,EAAOrE,EAAG,IAAI,QAAQ3F,CAAG,EAAGgI,EAASpE,EAAS,MAAOwE,EAAQxE,EAAS,MAC1E,QAASsE,EAAI8B,EAAK,MAAO3G,EAAI2G,EAAK,MAAQxE,EAAOhF,EAAIgF,EAAQ,EAAG0C,EAAI7E,EAAG6E,IAAK1H,IAAK,CAC7EwH,EAASpE,EAAS,KAAKoG,EAAK,KAAK9B,CAAC,EAAE,KAAKF,CAAM,CAAC,EAChD,IAAI2C,EAAYP,GAAcA,EAAW5J,CAAC,EAC1C4H,EAAQxE,EAAS,KAAK+G,EAAYA,EAAU,KAAK,OAAOA,EAAU,MAAOvC,CAAK,EAAI4B,EAAK,KAAK9B,CAAC,EAAE,KAAKE,CAAK,CAAC,CAC9G,CACAzC,EAAG,KAAK,IAAIf,GAAY5E,EAAKA,EAAK,IAAIkE,EAAM8D,EAAO,OAAOI,CAAK,EAAG5C,EAAOA,CAAK,EAAG,EAAI,CAAC,CAC1F,CAKA,SAASoF,GAAQ3H,EAAKjD,EAAK,CACvB,IAAIgK,EAAO/G,EAAI,QAAQjD,CAAG,EAAGV,EAAQ0K,EAAK,MAAM,EAChD,OAAOa,GAASb,EAAK,WAAYA,EAAK,SAAS,GAC3CA,EAAK,OAAO,WAAW1K,EAAOA,EAAQ,CAAC,CAC/C,CACA,SAASwL,GAAmCC,EAAGC,EAAG,CACzCA,EAAE,QAAQ,MACXD,EAAE,KAAK,kBAAkBC,EAAE,IAAI,EACnC,IAAInE,EAAQkE,EAAE,eAAeA,EAAE,UAAU,EACrC,CAAE,qBAAAE,CAAqB,EAAIF,EAAE,KAAK,OACtC,QAASvK,EAAI,EAAGA,EAAIwK,EAAE,WAAYxK,IAAK,CACnC,IAAImD,EAAQqH,EAAE,MAAMxK,CAAC,EACjBoC,EAAOe,EAAM,MAAQsH,EAAuBF,EAAE,KAAK,OAAO,MAAM,KAAOpH,EAAM,KAIjF,GAHAkD,EAAQA,EAAM,UAAUjE,CAAI,EACxB,CAACiE,GAED,CAACkE,EAAE,KAAK,YAAYpH,EAAM,KAAK,EAC/B,MAAO,EACf,CACA,OAAOkD,EAAM,QACjB,CACA,SAASgE,GAASE,EAAGC,EAAG,CACpB,MAAO,CAAC,EAAED,GAAKC,GAAK,CAACD,EAAE,QAAUD,GAAmCC,EAAGC,CAAC,EAC5E,CA+BA,SAASE,GAAKC,EAAIC,EAAKC,EAAO,CAC1B,IAAIC,EAAkB,KAClB,CAAE,qBAAAC,CAAqB,EAAIJ,EAAG,IAAI,KAAK,OACvCK,EAAUL,EAAG,IAAI,QAAQC,EAAMC,CAAK,EAAGI,EAAaD,EAAQ,KAAK,EAAE,KACvE,GAAID,GAAwBE,EAAW,cAAe,CAClD,IAAIC,EAAMD,EAAW,YAAc,MAC/BE,EAAmB,CAAC,CAACF,EAAW,aAAa,UAAUF,CAAoB,EAC3EG,GAAO,CAACC,EACRL,EAAkB,GACb,CAACI,GAAOC,IACbL,EAAkB,GAC1B,CACA,IAAIM,EAAUT,EAAG,MAAM,OACvB,GAAIG,IAAoB,GAAO,CAC3B,IAAIO,EAASV,EAAG,IAAI,QAAQC,EAAMC,CAAK,EACvCS,GAAkBX,EAAIU,EAAO,KAAK,EAAGA,EAAO,OAAO,EAAGD,CAAO,CACjE,CACIH,EAAW,eACXM,GAAkBZ,EAAIC,EAAMC,EAAQ,EAAGI,EAAYD,EAAQ,KAAK,EAAE,eAAeA,EAAQ,MAAM,CAAC,EAAGF,GAAmB,IAAI,EAC9H,IAAIU,EAAUb,EAAG,QAAQ,MAAMS,CAAO,EAAGK,EAAQD,EAAQ,IAAIZ,EAAMC,CAAK,EAExE,GADAF,EAAG,KAAK,IAAIe,GAAYD,EAAOD,EAAQ,IAAIZ,EAAMC,EAAO,EAAE,EAAGc,EAAM,MAAO,EAAI,CAAC,EAC3Eb,IAAoB,GAAM,CAC1B,IAAIc,EAAQjB,EAAG,IAAI,QAAQc,CAAK,EAChCI,GAAgBlB,EAAIiB,EAAM,KAAK,EAAGA,EAAM,OAAO,EAAGjB,EAAG,MAAM,MAAM,CACrE,CACA,OAAOA,CACX,CAOA,SAASmB,GAAYC,EAAKnB,EAAKoB,EAAU,CACrC,IAAIC,EAAOF,EAAI,QAAQnB,CAAG,EAC1B,GAAIqB,EAAK,OAAO,eAAeA,EAAK,MAAM,EAAGA,EAAK,MAAM,EAAGD,CAAQ,EAC/D,OAAOpB,EACX,GAAIqB,EAAK,cAAgB,EACrB,QAASC,EAAID,EAAK,MAAQ,EAAGC,GAAK,EAAGA,IAAK,CACtC,IAAIC,EAAQF,EAAK,MAAMC,CAAC,EACxB,GAAID,EAAK,KAAKC,CAAC,EAAE,eAAeC,EAAOA,EAAOH,CAAQ,EAClD,OAAOC,EAAK,OAAOC,EAAI,CAAC,EAC5B,GAAIC,EAAQ,EACR,OAAO,IACf,CACJ,GAAIF,EAAK,cAAgBA,EAAK,OAAO,QAAQ,KACzC,QAASC,EAAID,EAAK,MAAQ,EAAGC,GAAK,EAAGA,IAAK,CACtC,IAAIC,EAAQF,EAAK,WAAWC,CAAC,EAC7B,GAAID,EAAK,KAAKC,CAAC,EAAE,eAAeC,EAAOA,EAAOH,CAAQ,EAClD,OAAOC,EAAK,MAAMC,EAAI,CAAC,EAC3B,GAAIC,EAAQF,EAAK,KAAKC,CAAC,EAAE,WACrB,OAAO,IACf,CACJ,OAAO,IACX,CAOA,SAASE,GAAUL,EAAKnB,EAAKyB,EAAO,CAChC,IAAIJ,EAAOF,EAAI,QAAQnB,CAAG,EAC1B,GAAI,CAACyB,EAAM,QAAQ,KACf,OAAOzB,EACX,IAAI0B,EAAUD,EAAM,QACpB,QAAS,EAAI,EAAG,EAAIA,EAAM,UAAW,IACjCC,EAAUA,EAAQ,WAAW,QACjC,QAASC,EAAO,EAAGA,IAASF,EAAM,WAAa,GAAKA,EAAM,KAAO,EAAI,GAAIE,IACrE,QAASL,EAAID,EAAK,MAAOC,GAAK,EAAGA,IAAK,CAClC,IAAIM,EAAON,GAAKD,EAAK,MAAQ,EAAIA,EAAK,MAAQA,EAAK,MAAMC,EAAI,CAAC,EAAID,EAAK,IAAIC,EAAI,CAAC,GAAK,EAAI,GAAK,EAC1FO,EAAYR,EAAK,MAAMC,CAAC,GAAKM,EAAO,EAAI,EAAI,GAC5CE,EAAST,EAAK,KAAKC,CAAC,EAAGS,EAAO,GAClC,GAAIJ,GAAQ,EACRI,EAAOD,EAAO,WAAWD,EAAWA,EAAWH,CAAO,MAErD,CACD,IAAIM,EAAWF,EAAO,eAAeD,CAAS,EAAE,aAAaH,EAAQ,WAAW,IAAI,EACpFK,EAAOC,GAAYF,EAAO,eAAeD,EAAWA,EAAWG,EAAS,CAAC,CAAC,CAC9E,CACA,GAAID,EACA,OAAOH,GAAQ,EAAIP,EAAK,IAAMO,EAAO,EAAIP,EAAK,OAAOC,EAAI,CAAC,EAAID,EAAK,MAAMC,EAAI,CAAC,CACtF,CAEJ,OAAO,IACX,CAQA,SAASW,GAAYd,EAAKe,EAAMC,EAAKD,EAAMT,EAAQV,EAAM,MAAO,CAC5D,GAAImB,GAAQC,GAAM,CAACV,EAAM,KACrB,OAAO,KACX,IAAIW,EAAQjB,EAAI,QAAQe,CAAI,EAAGG,EAAMlB,EAAI,QAAQgB,CAAE,EAEnD,OAAIG,GAAcF,EAAOC,EAAKZ,CAAK,EACxB,IAAIX,GAAYoB,EAAMC,EAAIV,CAAK,EACnC,IAAIc,GAAOH,EAAOC,EAAKZ,CAAK,EAAE,IAAI,CAC7C,CACA,SAASa,GAAcF,EAAOC,EAAKZ,EAAO,CACtC,MAAO,CAACA,EAAM,WAAa,CAACA,EAAM,SAAWW,EAAM,MAAM,GAAKC,EAAI,MAAM,GACpED,EAAM,OAAO,WAAWA,EAAM,MAAM,EAAGC,EAAI,MAAM,EAAGZ,EAAM,OAAO,CACzE,CAqBA,IAAMc,GAAN,KAAa,CACT,YAAYH,EAAOC,EAAKG,EAAU,CAC9B,KAAK,MAAQJ,EACb,KAAK,IAAMC,EACX,KAAK,SAAWG,EAChB,KAAK,SAAW,CAAC,EACjB,KAAK,OAASC,EAAS,MACvB,QAASC,EAAI,EAAGA,GAAKN,EAAM,MAAOM,IAAK,CACnC,IAAIC,EAAOP,EAAM,KAAKM,CAAC,EACvB,KAAK,SAAS,KAAK,CACf,KAAMC,EAAK,KACX,MAAOA,EAAK,eAAeP,EAAM,WAAWM,CAAC,CAAC,CAClD,CAAC,CACL,CACA,QAASA,EAAIN,EAAM,MAAOM,EAAI,EAAGA,IAC7B,KAAK,OAASD,EAAS,KAAKL,EAAM,KAAKM,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CACnE,CACA,IAAI,OAAQ,CAAE,OAAO,KAAK,SAAS,OAAS,CAAG,CAC/C,KAAM,CAIF,KAAO,KAAK,SAAS,MAAM,CACvB,IAAIE,EAAM,KAAK,aAAa,EACxBA,EACA,KAAK,WAAWA,CAAG,EAEnB,KAAK,SAAS,GAAK,KAAK,SAAS,CACzC,CAMA,IAAIC,EAAa,KAAK,eAAe,EAAGC,EAAa,KAAK,OAAO,KAAO,KAAK,MAAQ,KAAK,MAAM,MAC5FV,EAAQ,KAAK,MAAOC,EAAM,KAAK,MAAMQ,EAAa,EAAI,KAAK,IAAMT,EAAM,IAAI,QAAQS,CAAU,CAAC,EAClG,GAAI,CAACR,EACD,OAAO,KAEX,IAAIX,EAAU,KAAK,OAAQqB,EAAYX,EAAM,MAAOY,EAAUX,EAAI,MAClE,KAAOU,GAAaC,GAAWtB,EAAQ,YAAc,GACjDA,EAAUA,EAAQ,WAAW,QAC7BqB,IACAC,IAEJ,IAAIvB,EAAQ,IAAIV,EAAMW,EAASqB,EAAWC,CAAO,EACjD,OAAIH,EAAa,GACN,IAAII,GAAkBb,EAAM,IAAKS,EAAY,KAAK,IAAI,IAAK,KAAK,IAAI,IAAI,EAAGpB,EAAOqB,CAAU,EACnGrB,EAAM,MAAQW,EAAM,KAAO,KAAK,IAAI,IAC7B,IAAItB,GAAYsB,EAAM,IAAKC,EAAI,IAAKZ,CAAK,EAC7C,IACX,CAIA,cAAe,CACX,IAAIyB,EAAa,KAAK,SAAS,UAC/B,QAASC,EAAM,KAAK,SAAS,QAAS7B,EAAI,EAAG0B,EAAU,KAAK,SAAS,QAAS1B,EAAI4B,EAAY5B,IAAK,CAC/F,IAAIqB,EAAOQ,EAAI,WAGf,GAFIA,EAAI,WAAa,IACjBH,EAAU,GACVL,EAAK,KAAK,KAAK,WAAaK,GAAW1B,EAAG,CAC1C4B,EAAa5B,EACb,KACJ,CACA6B,EAAMR,EAAK,OACf,CAGA,QAAShB,EAAO,EAAGA,GAAQ,EAAGA,IAC1B,QAASyB,EAAazB,GAAQ,EAAIuB,EAAa,KAAK,SAAS,UAAWE,GAAc,EAAGA,IAAc,CACnG,IAAIC,EAAUvB,EAAS,KACnBsB,GACAtB,EAASwB,GAAU,KAAK,SAAS,QAASF,EAAa,CAAC,EAAE,WAC1DC,EAAWvB,EAAO,SAGlBuB,EAAW,KAAK,SAAS,QAE7B,IAAIE,EAAQF,EAAS,WACrB,QAASG,EAAgB,KAAK,MAAOA,GAAiB,EAAGA,IAAiB,CACtE,GAAI,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAI,KAAK,SAASF,CAAa,EAAGG,EAAMC,EAAS,KAInE,GAAIjC,GAAQ,IAAM4B,EAAQG,EAAM,UAAUH,EAAM,IAAI,IAAMK,EAASF,EAAM,WAAWjB,EAAS,KAAKc,CAAK,EAAG,EAAK,GACzGzB,GAAU2B,EAAK,kBAAkB3B,EAAO,IAAI,GAC9C,MAAO,CAAE,WAAAsB,EAAY,cAAAI,EAAe,OAAA1B,EAAQ,OAAA8B,CAAO,EAGlD,GAAIjC,GAAQ,GAAK4B,IAAUI,EAAOD,EAAM,aAAaH,EAAM,IAAI,GAChE,MAAO,CAAE,WAAAH,EAAY,cAAAI,EAAe,OAAA1B,EAAQ,KAAA6B,CAAK,EAGrD,GAAI7B,GAAU4B,EAAM,UAAU5B,EAAO,IAAI,EACrC,KACR,CACJ,CAER,CACA,UAAW,CACP,GAAI,CAAE,QAAAJ,EAAS,UAAAqB,EAAW,QAAAC,CAAQ,EAAI,KAAK,SACvCa,EAAQP,GAAU5B,EAASqB,CAAS,EACxC,MAAI,CAACc,EAAM,YAAcA,EAAM,WAAW,OAC/B,IACX,KAAK,SAAW,IAAI9C,EAAMW,EAASqB,EAAY,EAAG,KAAK,IAAIC,EAASa,EAAM,KAAOd,GAAarB,EAAQ,KAAOsB,EAAUD,EAAY,EAAI,CAAC,CAAC,EAClI,GACX,CACA,UAAW,CACP,GAAI,CAAE,QAAArB,EAAS,UAAAqB,EAAW,QAAAC,CAAQ,EAAI,KAAK,SACvCa,EAAQP,GAAU5B,EAASqB,CAAS,EACxC,GAAIc,EAAM,YAAc,GAAKd,EAAY,EAAG,CACxC,IAAIe,EAAYpC,EAAQ,KAAOqB,GAAaA,EAAYc,EAAM,KAC9D,KAAK,SAAW,IAAI9C,EAAMgD,GAAiBrC,EAASqB,EAAY,EAAG,CAAC,EAAGA,EAAY,EAAGe,EAAYf,EAAY,EAAIC,CAAO,CAC7H,MAEI,KAAK,SAAW,IAAIjC,EAAMgD,GAAiBrC,EAASqB,EAAW,CAAC,EAAGA,EAAWC,CAAO,CAE7F,CAIA,WAAW,CAAE,WAAAI,EAAY,cAAAI,EAAe,OAAA1B,EAAQ,OAAA8B,EAAQ,KAAAD,CAAK,EAAG,CAC5D,KAAO,KAAK,MAAQH,GAChB,KAAK,kBAAkB,EAC3B,GAAIG,EACA,QAASjB,EAAI,EAAGA,EAAIiB,EAAK,OAAQjB,IAC7B,KAAK,iBAAiBiB,EAAKjB,CAAC,CAAC,EACrC,IAAIjB,EAAQ,KAAK,SAAU4B,EAAWvB,EAASA,EAAO,QAAUL,EAAM,QAClEsB,EAAYtB,EAAM,UAAY2B,EAC9BY,EAAQ,EAAGC,EAAM,CAAC,EAClB,CAAE,MAAAP,EAAO,KAAAD,CAAK,EAAI,KAAK,SAASD,CAAa,EACjD,GAAII,EAAQ,CACR,QAASlB,EAAI,EAAGA,EAAIkB,EAAO,WAAYlB,IACnCuB,EAAI,KAAKL,EAAO,MAAMlB,CAAC,CAAC,EAC5BgB,EAAQA,EAAM,cAAcE,CAAM,CACtC,CAIA,IAAIM,EAAgBb,EAAS,KAAOD,GAAe3B,EAAM,QAAQ,KAAOA,EAAM,SAG9E,KAAOuC,EAAQX,EAAS,YAAY,CAChC,IAAIc,EAAOd,EAAS,MAAMW,CAAK,EAAGI,EAAUV,EAAM,UAAUS,EAAK,IAAI,EACrE,GAAI,CAACC,EACD,MACJJ,KACIA,EAAQ,GAAKjB,GAAa,GAAKoB,EAAK,QAAQ,QAC5CT,EAAQU,EACRH,EAAI,KAAKI,GAAeF,EAAK,KAAKV,EAAK,aAAaU,EAAK,KAAK,CAAC,EAAGH,GAAS,EAAIjB,EAAY,EAAGiB,GAASX,EAAS,WAAaa,EAAe,EAAE,CAAC,EAEvJ,CACA,IAAII,EAAQN,GAASX,EAAS,WACzBiB,IACDJ,EAAe,IACnB,KAAK,OAASK,GAAc,KAAK,OAAQf,EAAef,EAAS,KAAKwB,CAAG,CAAC,EAC1E,KAAK,SAAST,CAAa,EAAE,MAAQE,EAGjCY,GAASJ,EAAe,GAAKpC,GAAUA,EAAO,MAAQ,KAAK,SAAS,KAAK,KAAK,EAAE,MAAQ,KAAK,SAAS,OAAS,GAC/G,KAAK,kBAAkB,EAE3B,QAASY,EAAI,EAAGS,EAAME,EAAUX,EAAIwB,EAAcxB,IAAK,CACnD,IAAIC,EAAOQ,EAAI,UACf,KAAK,SAAS,KAAK,CAAE,KAAMR,EAAK,KAAM,MAAOA,EAAK,eAAeA,EAAK,UAAU,CAAE,CAAC,EACnFQ,EAAMR,EAAK,OACf,CAIA,KAAK,SAAY2B,EACXlB,GAAc,EAAIrC,EAAM,MACpB,IAAIA,EAAMgD,GAAiBtC,EAAM,QAAS2B,EAAa,EAAG,CAAC,EAAGA,EAAa,EAAGc,EAAe,EAAIzC,EAAM,QAAU2B,EAAa,CAAC,EAFhH,IAAIrC,EAAMgD,GAAiBtC,EAAM,QAAS2B,EAAYY,CAAK,EAAGvC,EAAM,UAAWA,EAAM,OAAO,CAGzH,CACA,gBAAiB,CACb,GAAI,CAAC,KAAK,IAAI,OAAO,YACjB,MAAO,GACX,IAAI+C,EAAM,KAAK,SAAS,KAAK,KAAK,EAAGC,EACrC,GAAI,CAACD,EAAI,KAAK,aAAe,CAACE,GAAiB,KAAK,IAAK,KAAK,IAAI,MAAOF,EAAI,KAAMA,EAAI,MAAO,EAAK,GAC9F,KAAK,IAAI,OAAS,KAAK,QAAUC,EAAQ,KAAK,eAAe,KAAK,GAAG,IAAMA,EAAM,OAAS,KAAK,MAChG,MAAO,GACX,GAAI,CAAE,MAAAxE,CAAM,EAAI,KAAK,IAAK0E,EAAQ,KAAK,IAAI,MAAM1E,CAAK,EACtD,KAAOA,EAAQ,GAAK0E,GAAS,KAAK,IAAI,IAAI,EAAE1E,CAAK,GAC7C,EAAE0E,EACN,OAAOA,CACX,CACA,eAAetC,EAAK,CAChBuC,EAAM,QAASlC,EAAI,KAAK,IAAI,KAAK,MAAOL,EAAI,KAAK,EAAGK,GAAK,EAAGA,IAAK,CAC7D,GAAI,CAAE,MAAAgB,EAAO,KAAAD,CAAK,EAAI,KAAK,SAASf,CAAC,EACjCmC,EAAYnC,EAAIL,EAAI,OAASA,EAAI,IAAIK,EAAI,CAAC,GAAKL,EAAI,KAAOA,EAAI,OAASK,EAAI,IAC3EE,EAAM8B,GAAiBrC,EAAKK,EAAGe,EAAMC,EAAOmB,CAAS,EACzD,GAAKjC,EAEL,SAAStB,EAAIoB,EAAI,EAAGpB,GAAK,EAAGA,IAAK,CAC7B,GAAI,CAAE,MAAAoC,EAAO,KAAAD,CAAK,EAAI,KAAK,SAASnC,CAAC,EACjC8C,EAAUM,GAAiBrC,EAAKf,EAAGmC,EAAMC,EAAO,EAAI,EACxD,GAAI,CAACU,GAAWA,EAAQ,WACpB,SAASQ,CACjB,CACA,MAAO,CAAE,MAAOlC,EAAG,IAAAE,EAAK,KAAMiC,EAAYxC,EAAI,IAAI,QAAQA,EAAI,MAAMK,EAAI,CAAC,CAAC,EAAIL,CAAI,EACtF,CACJ,CACA,MAAMA,EAAK,CACP,IAAIyC,EAAQ,KAAK,eAAezC,CAAG,EACnC,GAAI,CAACyC,EACD,OAAO,KACX,KAAO,KAAK,MAAQA,EAAM,OACtB,KAAK,kBAAkB,EACvBA,EAAM,IAAI,aACV,KAAK,OAASP,GAAc,KAAK,OAAQO,EAAM,MAAOA,EAAM,GAAG,GACnEzC,EAAMyC,EAAM,KACZ,QAASxD,EAAIwD,EAAM,MAAQ,EAAGxD,GAAKe,EAAI,MAAOf,IAAK,CAC/C,IAAIqB,EAAON,EAAI,KAAKf,CAAC,EAAG2C,EAAMtB,EAAK,KAAK,aAAa,WAAWA,EAAK,QAAS,GAAMN,EAAI,MAAMf,CAAC,CAAC,EAChG,KAAK,iBAAiBqB,EAAK,KAAMA,EAAK,MAAOsB,CAAG,CACpD,CACA,OAAO5B,CACX,CACA,iBAAiBoB,EAAMsB,EAAQ,KAAMrD,EAAS,CAC1C,IAAI8C,EAAM,KAAK,SAAS,KAAK,KAAK,EAClCA,EAAI,MAAQA,EAAI,MAAM,UAAUf,CAAI,EACpC,KAAK,OAASc,GAAc,KAAK,OAAQ,KAAK,MAAO9B,EAAS,KAAKgB,EAAK,OAAOsB,EAAOrD,CAAO,CAAC,CAAC,EAC/F,KAAK,SAAS,KAAK,CAAE,KAAA+B,EAAM,MAAOA,EAAK,YAAa,CAAC,CACzD,CACA,mBAAoB,CAEhB,IAAIQ,EADO,KAAK,SAAS,IAAI,EACd,MAAM,WAAWxB,EAAS,MAAO,EAAI,EAChDwB,EAAI,aACJ,KAAK,OAASM,GAAc,KAAK,OAAQ,KAAK,SAAS,OAAQN,CAAG,EAC1E,CACJ,EACA,SAASF,GAAiBV,EAAUpD,EAAO+E,EAAO,CAC9C,OAAI/E,GAAS,EACFoD,EAAS,WAAW2B,EAAO3B,EAAS,UAAU,EAClDA,EAAS,aAAa,EAAGA,EAAS,WAAW,KAAKU,GAAiBV,EAAS,WAAW,QAASpD,EAAQ,EAAG+E,CAAK,CAAC,CAAC,CAC7H,CACA,SAAST,GAAclB,EAAUpD,EAAOyB,EAAS,CAC7C,OAAIzB,GAAS,EACFoD,EAAS,OAAO3B,CAAO,EAC3B2B,EAAS,aAAaA,EAAS,WAAa,EAAGA,EAAS,UAAU,KAAKkB,GAAclB,EAAS,UAAU,QAASpD,EAAQ,EAAGyB,CAAO,CAAC,CAAC,CAChJ,CACA,SAAS4B,GAAUD,EAAUpD,EAAO,CAChC,QAASyC,EAAI,EAAGA,EAAIzC,EAAOyC,IACvBW,EAAWA,EAAS,WAAW,QACnC,OAAOA,CACX,CACA,SAASgB,GAAe1B,EAAMI,EAAWC,EAAS,CAC9C,GAAID,GAAa,EACb,OAAOJ,EACX,IAAIsC,EAAOtC,EAAK,QAChB,OAAII,EAAY,IACZkC,EAAOA,EAAK,aAAa,EAAGZ,GAAeY,EAAK,WAAYlC,EAAY,EAAGkC,EAAK,YAAc,EAAIjC,EAAU,EAAI,CAAC,CAAC,GAClHD,EAAY,IACZkC,EAAOtC,EAAK,KAAK,aAAa,WAAWsC,CAAI,EAAE,OAAOA,CAAI,EACtDjC,GAAW,IACXiC,EAAOA,EAAK,OAAOtC,EAAK,KAAK,aAAa,cAAcsC,CAAI,EAAE,WAAWxC,EAAS,MAAO,EAAI,CAAC,IAE/FE,EAAK,KAAKsC,CAAI,CACzB,CACA,SAASP,GAAiBrC,EAAKpC,EAAOwD,EAAMC,EAAOwB,EAAM,CACrD,IAAIvC,EAAON,EAAI,KAAKpC,CAAK,EAAGsB,EAAQ2D,EAAO7C,EAAI,WAAWpC,CAAK,EAAIoC,EAAI,MAAMpC,CAAK,EAClF,GAAIsB,GAASoB,EAAK,YAAc,CAACc,EAAK,kBAAkBd,EAAK,IAAI,EAC7D,OAAO,KACX,IAAIC,EAAMc,EAAM,WAAWf,EAAK,QAAS,GAAMpB,CAAK,EACpD,OAAOqB,GAAO,CAACuC,GAAa1B,EAAMd,EAAK,QAASpB,CAAK,EAAIqB,EAAM,IACnE,CACA,SAASuC,GAAa1B,EAAMJ,EAAUxC,EAAO,CACzC,QAAS6B,EAAI7B,EAAO6B,EAAIW,EAAS,WAAYX,IACzC,GAAI,CAACe,EAAK,YAAYJ,EAAS,MAAMX,CAAC,EAAE,KAAK,EACzC,MAAO,GACf,MAAO,EACX,CACA,SAAS0C,GAAe3B,EAAM,CAC1B,OAAOA,EAAK,KAAK,UAAYA,EAAK,KAAK,kBAC3C,CACA,SAAS4B,GAAatF,EAAImC,EAAMC,EAAIV,EAAO,CACvC,GAAI,CAACA,EAAM,KACP,OAAO1B,EAAG,YAAYmC,EAAMC,CAAE,EAClC,IAAIC,EAAQrC,EAAG,IAAI,QAAQmC,CAAI,EAAGG,EAAMtC,EAAG,IAAI,QAAQoC,CAAE,EACzD,GAAIG,GAAcF,EAAOC,EAAKZ,CAAK,EAC/B,OAAO1B,EAAG,KAAK,IAAIe,GAAYoB,EAAMC,EAAIV,CAAK,CAAC,EACnD,IAAI6D,EAAeC,GAAcnD,EAAOC,CAAG,EAEvCiD,EAAaA,EAAa,OAAS,CAAC,GAAK,GACzCA,EAAa,IAAI,EAGrB,IAAIE,EAAkB,EAAEpD,EAAM,MAAQ,GACtCkD,EAAa,QAAQE,CAAe,EAKpC,QAAS,EAAIpD,EAAM,MAAOpC,EAAMoC,EAAM,IAAM,EAAG,EAAI,EAAG,IAAKpC,IAAO,CAC9D,IAAIyF,EAAOrD,EAAM,KAAK,CAAC,EAAE,KAAK,KAC9B,GAAIqD,EAAK,UAAYA,EAAK,mBAAqBA,EAAK,UAChD,MACAH,EAAa,QAAQ,CAAC,EAAI,GAC1BE,EAAkB,EACbpD,EAAM,OAAO,CAAC,GAAKpC,GACxBsF,EAAa,OAAO,EAAG,EAAG,CAAC,CAAC,CACpC,CAGA,IAAII,EAAuBJ,EAAa,QAAQE,CAAe,EAC3DG,EAAY,CAAC,EAAGC,EAAiBnE,EAAM,UAC3C,QAASC,EAAUD,EAAM,QAASiB,EAAI,GAAIA,IAAK,CAC3C,IAAIC,EAAOjB,EAAQ,WAEnB,GADAiE,EAAU,KAAKhD,CAAI,EACfD,GAAKjB,EAAM,UACX,MACJC,EAAUiB,EAAK,OACnB,CAGA,QAAS,EAAIiD,EAAiB,EAAG,GAAK,EAAG,IAAK,CAC1C,IAAIC,EAAWF,EAAU,CAAC,EAAGG,EAAMV,GAAeS,EAAS,IAAI,EAC/D,GAAIC,GAAO,CAACD,EAAS,WAAWzD,EAAM,KAAK,KAAK,IAAIoD,CAAe,EAAI,CAAC,CAAC,EACrEI,EAAiB,UACZE,GAAO,CAACD,EAAS,KAAK,YAC3B,KACR,CACA,QAASE,EAAItE,EAAM,UAAWsE,GAAK,EAAGA,IAAK,CACvC,IAAIC,GAAaD,EAAIH,EAAiB,IAAMnE,EAAM,UAAY,GAC1DwE,EAASN,EAAUK,CAAS,EAChC,GAAKC,EAEL,QAASvD,EAAI,EAAGA,EAAI4C,EAAa,OAAQ5C,IAAK,CAG1C,IAAIwD,EAAcZ,GAAc5C,EAAIgD,GAAwBJ,EAAa,MAAM,EAAGa,EAAS,GACvFD,EAAc,IACdC,EAAS,GACTD,EAAc,CAACA,GAEnB,IAAIpE,EAASM,EAAM,KAAK8D,EAAc,CAAC,EAAG3E,EAAQa,EAAM,MAAM8D,EAAc,CAAC,EAC7E,GAAIpE,EAAO,eAAeP,EAAOA,EAAO0E,EAAO,KAAMA,EAAO,KAAK,EAC7D,OAAOlG,EAAG,QAAQqC,EAAM,OAAO8D,CAAW,EAAGC,EAAS9D,EAAI,MAAM6D,CAAW,EAAI/D,EAAI,IAAIpB,EAAMqF,GAAc3E,EAAM,QAAS,EAAGA,EAAM,UAAWuE,CAAS,EAAGA,EAAWvE,EAAM,OAAO,CAAC,CAC3L,CACJ,CACA,IAAI4E,EAAatG,EAAG,MAAM,OAC1B,QAAS2C,EAAI4C,EAAa,OAAS,EAAG5C,GAAK,IACvC3C,EAAG,QAAQmC,EAAMC,EAAIV,CAAK,EACtB,EAAA1B,EAAG,MAAM,OAASsG,IAFoB3D,IAAK,CAI/C,IAAIzC,EAAQqF,EAAa5C,CAAC,EACtBzC,EAAQ,IAEZiC,EAAOE,EAAM,OAAOnC,CAAK,EACzBkC,EAAKE,EAAI,MAAMpC,CAAK,EACxB,CACJ,CACA,SAASmG,GAAc/C,EAAUpD,EAAOqG,EAASC,EAASzE,EAAQ,CAC9D,GAAI7B,EAAQqG,EAAS,CACjB,IAAI/C,EAAQF,EAAS,WACrBA,EAAWA,EAAS,aAAa,EAAGE,EAAM,KAAK6C,GAAc7C,EAAM,QAAStD,EAAQ,EAAGqG,EAASC,EAAShD,CAAK,CAAC,CAAC,CACpH,CACA,GAAItD,EAAQsG,EAAS,CACjB,IAAI7C,EAAQ5B,EAAO,eAAe,CAAC,EAC/BjB,EAAQ6C,EAAM,WAAWL,CAAQ,EAAE,OAAOA,CAAQ,EACtDA,EAAWxC,EAAM,OAAO6C,EAAM,cAAc7C,CAAK,EAAE,WAAW4B,EAAS,MAAO,EAAI,CAAC,CACvF,CACA,OAAOY,CACX,CACA,SAASmD,GAAiBzG,EAAImC,EAAMC,EAAIQ,EAAM,CAC1C,GAAI,CAACA,EAAK,UAAYT,GAAQC,GAAMpC,EAAG,IAAI,QAAQmC,CAAI,EAAE,OAAO,QAAQ,KAAM,CAC1E,IAAIuE,EAAQvF,GAAYnB,EAAG,IAAKmC,EAAMS,EAAK,IAAI,EAC3C8D,GAAS,OACTvE,EAAOC,EAAKsE,EACpB,CACA1G,EAAG,aAAamC,EAAMC,EAAI,IAAIpB,EAAM0B,EAAS,KAAKE,CAAI,EAAG,EAAG,CAAC,CAAC,CAClE,CACA,SAAS+D,GAAY3G,EAAImC,EAAMC,EAAI,CAC/B,IAAIC,EAAQrC,EAAG,IAAI,QAAQmC,CAAI,EAAGG,EAAMtC,EAAG,IAAI,QAAQoC,CAAE,EAGzD,GAAIC,EAAM,OAAO,aAAeC,EAAI,OAAO,aAAeD,EAAM,MAAM,GAAKC,EAAI,MAAM,GACjFD,EAAM,cAAgB,GAAKC,EAAI,cAAgB,EAAG,CAClD,IAAIsE,EAASvE,EAAM,YAAYD,CAAE,EAAGyE,EAAW,GAC/C,QAAStF,EAAIc,EAAM,MAAOd,EAAIqF,EAAQrF,IAC9Bc,EAAM,KAAKd,CAAC,EAAE,KAAK,KAAK,YACxBsF,EAAW,IACnB,QAAStF,EAAIe,EAAI,MAAOf,EAAIqF,EAAQrF,IAC5Be,EAAI,KAAKf,CAAC,EAAE,KAAK,KAAK,YACtBsF,EAAW,IACnB,GAAI,CAACA,EAAU,CACX,QAAStF,EAAIc,EAAM,MAAOd,EAAI,GAAKY,GAAQE,EAAM,MAAMd,CAAC,EAAGA,IACvDY,EAAOE,EAAM,OAAOd,CAAC,EACzB,QAASA,EAAIe,EAAI,MAAOf,EAAI,GAAKa,GAAME,EAAI,MAAMf,CAAC,EAAGA,IACjDa,EAAKE,EAAI,OAAOf,CAAC,EACrBc,EAAQrC,EAAG,IAAI,QAAQmC,CAAI,EAC3BG,EAAMtC,EAAG,IAAI,QAAQoC,CAAE,CAC3B,CACJ,CACA,IAAI0E,EAAUtB,GAAcnD,EAAOC,CAAG,EACtC,QAASK,EAAI,EAAGA,EAAImE,EAAQ,OAAQnE,IAAK,CACrC,IAAIzC,EAAQ4G,EAAQnE,CAAC,EAAGoE,EAAOpE,GAAKmE,EAAQ,OAAS,EACrD,GAAKC,GAAQ7G,GAAS,GAAMmC,EAAM,KAAKnC,CAAK,EAAE,KAAK,aAAa,SAC5D,OAAOF,EAAG,OAAOqC,EAAM,MAAMnC,CAAK,EAAGoC,EAAI,IAAIpC,CAAK,CAAC,EACvD,GAAIA,EAAQ,IAAM6G,GAAQ1E,EAAM,KAAKnC,EAAQ,CAAC,EAAE,WAAWmC,EAAM,MAAMnC,EAAQ,CAAC,EAAGoC,EAAI,WAAWpC,EAAQ,CAAC,CAAC,GACxG,OAAOF,EAAG,OAAOqC,EAAM,OAAOnC,CAAK,EAAGoC,EAAI,MAAMpC,CAAK,CAAC,CAC9D,CACA,QAASqB,EAAI,EAAGA,GAAKc,EAAM,OAASd,GAAKe,EAAI,MAAOf,IAChD,GAAIY,EAAOE,EAAM,MAAMd,CAAC,GAAKc,EAAM,MAAQd,GAAKa,EAAKC,EAAM,IAAId,CAAC,GAAKe,EAAI,IAAIf,CAAC,EAAIa,GAAME,EAAI,MAAQf,GAChGc,EAAM,MAAMd,EAAI,CAAC,GAAKe,EAAI,MAAMf,EAAI,CAAC,GAAKc,EAAM,KAAKd,EAAI,CAAC,EAAE,WAAWc,EAAM,MAAMd,EAAI,CAAC,EAAGe,EAAI,MAAMf,EAAI,CAAC,CAAC,EAC3G,OAAOvB,EAAG,OAAOqC,EAAM,OAAOd,CAAC,EAAGa,CAAE,EAE5CpC,EAAG,OAAOmC,EAAMC,CAAE,CACtB,CAGA,SAASoD,GAAcnD,EAAOC,EAAK,CAC/B,IAAI0E,EAAS,CAAC,EAAGC,EAAW,KAAK,IAAI5E,EAAM,MAAOC,EAAI,KAAK,EAC3D,QAASf,EAAI0F,EAAU1F,GAAK,EAAGA,IAAK,CAChC,IAAIT,EAAQuB,EAAM,MAAMd,CAAC,EACzB,GAAIT,EAAQuB,EAAM,KAAOA,EAAM,MAAQd,IACnCe,EAAI,IAAIf,CAAC,EAAIe,EAAI,KAAOA,EAAI,MAAQf,IACpCc,EAAM,KAAKd,CAAC,EAAE,KAAK,KAAK,WACxBe,EAAI,KAAKf,CAAC,EAAE,KAAK,KAAK,UACtB,OACAT,GAASwB,EAAI,MAAMf,CAAC,GACnBA,GAAKc,EAAM,OAASd,GAAKe,EAAI,OAASD,EAAM,OAAO,eAAiBC,EAAI,OAAO,eAC5Ef,GAAKe,EAAI,MAAMf,EAAI,CAAC,GAAKT,EAAQ,IACrCkG,EAAO,KAAKzF,CAAC,CACrB,CACA,OAAOyF,CACX,CAKA,IAAME,GAAN,MAAMC,UAAiBC,EAAK,CAIxB,YAIAnH,EAIAoH,EAEAC,EAAO,CACH,MAAM,EACN,KAAK,IAAMrH,EACX,KAAK,KAAOoH,EACZ,KAAK,MAAQC,CACjB,CACA,MAAMlG,EAAK,CACP,IAAIwB,EAAOxB,EAAI,OAAO,KAAK,GAAG,EAC9B,GAAI,CAACwB,EACD,OAAO2E,GAAW,KAAK,sCAAsC,EACjE,IAAIvC,EAAQ,OAAO,OAAO,IAAI,EAC9B,QAASwC,KAAQ5E,EAAK,MAClBoC,EAAMwC,CAAI,EAAI5E,EAAK,MAAM4E,CAAI,EACjCxC,EAAM,KAAK,IAAI,EAAI,KAAK,MACxB,IAAIyC,EAAU7E,EAAK,KAAK,OAAOoC,EAAO,KAAMpC,EAAK,KAAK,EACtD,OAAO2E,GAAW,YAAYnG,EAAK,KAAK,IAAK,KAAK,IAAM,EAAG,IAAIJ,EAAM0B,EAAS,KAAK+E,CAAO,EAAG,EAAG7E,EAAK,OAAS,EAAI,CAAC,CAAC,CACxH,CACA,QAAS,CACL,OAAO8E,GAAQ,KACnB,CACA,OAAOtG,EAAK,CACR,OAAO,IAAI+F,EAAS,KAAK,IAAK,KAAK,KAAM/F,EAAI,OAAO,KAAK,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,CAClF,CACA,IAAIP,EAAS,CACT,IAAIZ,EAAMY,EAAQ,UAAU,KAAK,IAAK,CAAC,EACvC,OAAOZ,EAAI,aAAe,KAAO,IAAIkH,EAASlH,EAAI,IAAK,KAAK,KAAM,KAAK,KAAK,CAChF,CACA,QAAS,CACL,MAAO,CAAE,SAAU,OAAQ,IAAK,KAAK,IAAK,KAAM,KAAK,KAAM,MAAO,KAAK,KAAM,CACjF,CACA,OAAO,SAAS0H,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,KAAO,UAAY,OAAOA,EAAK,MAAQ,SACnD,MAAM,IAAI,WAAW,qCAAqC,EAC9D,OAAO,IAAIT,EAASS,EAAK,IAAKA,EAAK,KAAMA,EAAK,KAAK,CACvD,CACJ,EACAR,GAAK,OAAO,OAAQF,EAAQ,EAI5B,IAAMW,GAAN,MAAMC,UAAoBV,EAAK,CAI3B,YAIAC,EAEAC,EAAO,CACH,MAAM,EACN,KAAK,KAAOD,EACZ,KAAK,MAAQC,CACjB,CACA,MAAMlG,EAAK,CACP,IAAI4D,EAAQ,OAAO,OAAO,IAAI,EAC9B,QAASwC,KAAQpG,EAAI,MACjB4D,EAAMwC,CAAI,EAAIpG,EAAI,MAAMoG,CAAI,EAChCxC,EAAM,KAAK,IAAI,EAAI,KAAK,MACxB,IAAIyC,EAAUrG,EAAI,KAAK,OAAO4D,EAAO5D,EAAI,QAASA,EAAI,KAAK,EAC3D,OAAOmG,GAAW,GAAGE,CAAO,CAChC,CACA,QAAS,CACL,OAAOC,GAAQ,KACnB,CACA,OAAOtG,EAAK,CACR,OAAO,IAAI0G,EAAY,KAAK,KAAM1G,EAAI,MAAM,KAAK,IAAI,CAAC,CAC1D,CACA,IAAIP,EAAS,CACT,OAAO,IACX,CACA,QAAS,CACL,MAAO,CAAE,SAAU,UAAW,KAAM,KAAK,KAAM,MAAO,KAAK,KAAM,CACrE,CACA,OAAO,SAAS8G,EAAQC,EAAM,CAC1B,GAAI,OAAOA,EAAK,MAAQ,SACpB,MAAM,IAAI,WAAW,wCAAwC,EACjE,OAAO,IAAIE,EAAYF,EAAK,KAAMA,EAAK,KAAK,CAChD,CACJ,EACAR,GAAK,OAAO,UAAWS,EAAW,EAKlC,IAAIE,GAAiB,cAAc,KAAM,CACzC,EACAA,GAAiB,SAASA,EAAeC,EAAS,CAC9C,IAAIC,EAAM,MAAM,KAAK,KAAMD,CAAO,EAClC,OAAAC,EAAI,UAAYF,EAAe,UACxBE,CACX,EACAF,GAAe,UAAY,OAAO,OAAO,MAAM,SAAS,EACxDA,GAAe,UAAU,YAAcA,GACvCA,GAAe,UAAU,KAAO,iBAQhC,IAAMG,GAAN,KAAgB,CAIZ,YAKA9G,EAAK,CACD,KAAK,IAAMA,EAIX,KAAK,MAAQ,CAAC,EAId,KAAK,KAAO,CAAC,EAIb,KAAK,QAAU,IAAI+G,EACvB,CAIA,IAAI,QAAS,CAAE,OAAO,KAAK,KAAK,OAAS,KAAK,KAAK,CAAC,EAAI,KAAK,GAAK,CAKlE,KAAKC,EAAM,CACP,IAAIpB,EAAS,KAAK,UAAUoB,CAAI,EAChC,GAAIpB,EAAO,OACP,MAAM,IAAIe,GAAef,EAAO,MAAM,EAC1C,OAAO,IACX,CAKA,UAAUoB,EAAM,CACZ,IAAIpB,EAASoB,EAAK,MAAM,KAAK,GAAG,EAChC,OAAKpB,EAAO,QACR,KAAK,QAAQoB,EAAMpB,EAAO,GAAG,EAC1BA,CACX,CAKA,IAAI,YAAa,CACb,OAAO,KAAK,MAAM,OAAS,CAC/B,CAOA,cAAe,CACX,IAAI7E,EAAO,IAAKC,EAAK,KACrB,QAASO,EAAI,EAAGA,EAAI,KAAK,QAAQ,KAAK,OAAQA,IAAK,CAC/C,IAAI0F,EAAM,KAAK,QAAQ,KAAK1F,CAAC,EACzBA,IACAR,EAAOkG,EAAI,IAAIlG,EAAM,CAAC,EACtBC,EAAKiG,EAAI,IAAIjG,EAAI,EAAE,GAEvBiG,EAAI,QAAQ,CAACC,EAAIC,EAAIC,EAAOC,IAAQ,CAChCtG,EAAO,KAAK,IAAIA,EAAMqG,CAAK,EAC3BpG,EAAK,KAAK,IAAIA,EAAIqG,CAAG,CACzB,CAAC,CACL,CACA,OAAOtG,GAAQ,IAAM,KAAO,CAAE,KAAAA,EAAM,GAAAC,CAAG,CAC3C,CAIA,QAAQgG,EAAMhH,EAAK,CACf,KAAK,KAAK,KAAK,KAAK,GAAG,EACvB,KAAK,MAAM,KAAKgH,CAAI,EACpB,KAAK,QAAQ,UAAUA,EAAK,OAAO,CAAC,EACpC,KAAK,IAAMhH,CACf,CAKA,QAAQe,EAAMC,EAAKD,EAAMT,EAAQV,EAAM,MAAO,CAC1C,IAAIoH,EAAOlG,GAAY,KAAK,IAAKC,EAAMC,EAAIV,CAAK,EAChD,OAAI0G,GACA,KAAK,KAAKA,CAAI,EACX,IACX,CAKA,YAAYjG,EAAMC,EAAIT,EAAS,CAC3B,OAAO,KAAK,QAAQQ,EAAMC,EAAI,IAAIpB,EAAM0B,EAAS,KAAKf,CAAO,EAAG,EAAG,CAAC,CAAC,CACzE,CAIA,OAAOQ,EAAMC,EAAI,CACb,OAAO,KAAK,QAAQD,EAAMC,EAAIpB,EAAM,KAAK,CAC7C,CAIA,OAAOf,EAAK0B,EAAS,CACjB,OAAO,KAAK,YAAY1B,EAAKA,EAAK0B,CAAO,CAC7C,CAoBA,aAAaQ,EAAMC,EAAIV,EAAO,CAC1B,OAAA4D,GAAa,KAAMnD,EAAMC,EAAIV,CAAK,EAC3B,IACX,CAUA,iBAAiBS,EAAMC,EAAIQ,EAAM,CAC7B,OAAA6D,GAAiB,KAAMtE,EAAMC,EAAIQ,CAAI,EAC9B,IACX,CAKA,YAAYT,EAAMC,EAAI,CAClB,OAAAuE,GAAY,KAAMxE,EAAMC,CAAE,EACnB,IACX,CAQA,KAAKsG,EAAOC,EAAQ,CAChB,OAAAC,GAAK,KAAMF,EAAOC,CAAM,EACjB,IACX,CAKA,KAAK1I,EAAKC,EAAQ,EAAG,CACjB,OAAAH,GAAK,KAAME,EAAKC,CAAK,EACd,IACX,CAMA,KAAKwI,EAAOG,EAAU,CAClB,OAAAjF,GAAK,KAAM8E,EAAOG,CAAQ,EACnB,IACX,CAKA,aAAa1G,EAAMC,EAAKD,EAAMuB,EAAMsB,EAAQ,KAAM,CAC9C,OAAA8D,GAAa,KAAM3G,EAAMC,EAAIsB,EAAMsB,CAAK,EACjC,IACX,CAKA,cAAc/E,EAAKyD,EAAMsB,EAAQ,KAAM+D,EAAO,CAC1C,OAAAC,GAAc,KAAM/I,EAAKyD,EAAMsB,EAAO+D,CAAK,EACpC,IACX,CAMA,iBAAiB9I,EAAKoH,EAAMC,EAAO,CAC/B,YAAK,KAAK,IAAIJ,GAASjH,EAAKoH,EAAMC,CAAK,CAAC,EACjC,IACX,CAIA,gBAAgBD,EAAMC,EAAO,CACzB,YAAK,KAAK,IAAIO,GAAYR,EAAMC,CAAK,CAAC,EAC/B,IACX,CAIA,YAAYrH,EAAKgJ,EAAM,CACnB,YAAK,KAAK,IAAIC,GAAgBjJ,EAAKgJ,CAAI,CAAC,EACjC,IACX,CAKA,eAAehJ,EAAKgJ,EAAM,CACtB,IAAIrG,EAAO,KAAK,IAAI,OAAO3C,CAAG,EAC9B,GAAI,CAAC2C,EACD,MAAM,IAAI,WAAW,uBAAyB3C,CAAG,EACrD,GAAIgJ,aAAgBE,GACZF,EAAK,QAAQrG,EAAK,KAAK,GACvB,KAAK,KAAK,IAAIwG,GAAmBnJ,EAAKgJ,CAAI,CAAC,MAE9C,CACD,IAAII,EAAMzG,EAAK,MAAO0G,EAAOC,EAAQ,CAAC,EACtC,KAAOD,EAAQL,EAAK,QAAQI,CAAG,GAC3BE,EAAM,KAAK,IAAIH,GAAmBnJ,EAAKqJ,CAAK,CAAC,EAC7CD,EAAMC,EAAM,cAAcD,CAAG,EAEjC,QAAS1G,EAAI4G,EAAM,OAAS,EAAG5G,GAAK,EAAGA,IACnC,KAAK,KAAK4G,EAAM5G,CAAC,CAAC,CAC1B,CACA,OAAO,IACX,CAQA,MAAM1C,EAAKC,EAAQ,EAAGsJ,EAAY,CAC9B,OAAAC,GAAM,KAAMxJ,EAAKC,EAAOsJ,CAAU,EAC3B,IACX,CAIA,QAAQrH,EAAMC,EAAI6G,EAAM,CACpB,OAAAS,GAAQ,KAAMvH,EAAMC,EAAI6G,CAAI,EACrB,IACX,CAOA,WAAW9G,EAAMC,EAAI6G,EAAM,CACvB,OAAAU,GAAW,KAAMxH,EAAMC,EAAI6G,CAAI,EACxB,IACX,CAOA,kBAAkBhJ,EAAK2J,EAAYjG,EAAO,CACtC,OAAA/C,GAAkB,KAAMX,EAAK2J,EAAYjG,CAAK,EACvC,IACX,CACJ,EC7pEA,IAAMkG,GAAc,OAAO,OAAO,IAAI,EAKhCC,GAAN,KAAgB,CAMZ,YAKAC,EAKAC,EAAOC,EAAQ,CACX,KAAK,QAAUF,EACf,KAAK,MAAQC,EACb,KAAK,OAASC,GAAU,CAAC,IAAIC,GAAeH,EAAQ,IAAIC,CAAK,EAAGD,EAAQ,IAAIC,CAAK,CAAC,CAAC,CACvF,CAIA,IAAI,QAAS,CAAE,OAAO,KAAK,QAAQ,GAAK,CAIxC,IAAI,MAAO,CAAE,OAAO,KAAK,MAAM,GAAK,CAIpC,IAAI,MAAO,CAAE,OAAO,KAAK,MAAM,GAAK,CAIpC,IAAI,IAAK,CAAE,OAAO,KAAK,IAAI,GAAK,CAIhC,IAAI,OAAQ,CACR,OAAO,KAAK,OAAO,CAAC,EAAE,KAC1B,CAIA,IAAI,KAAM,CACN,OAAO,KAAK,OAAO,CAAC,EAAE,GAC1B,CAIA,IAAI,OAAQ,CACR,IAAIC,EAAS,KAAK,OAClB,QAASE,EAAI,EAAGA,EAAIF,EAAO,OAAQE,IAC/B,GAAIF,EAAOE,CAAC,EAAE,MAAM,KAAOF,EAAOE,CAAC,EAAE,IAAI,IACrC,MAAO,GACf,MAAO,EACX,CAIA,SAAU,CACN,OAAO,KAAK,MAAM,IAAI,MAAM,KAAK,KAAM,KAAK,GAAI,EAAI,CACxD,CAKA,QAAQC,EAAIC,EAAUC,EAAM,MAAO,CAI/B,IAAIC,EAAWF,EAAQ,QAAQ,UAAWG,EAAa,KACvD,QAASL,EAAI,EAAGA,EAAIE,EAAQ,QAASF,IACjCK,EAAaD,EACbA,EAAWA,EAAS,UAExB,IAAIE,EAAUL,EAAG,MAAM,OAAQH,EAAS,KAAK,OAC7C,QAASE,EAAI,EAAGA,EAAIF,EAAO,OAAQE,IAAK,CACpC,GAAI,CAAE,MAAAO,EAAO,IAAAC,CAAI,EAAIV,EAAOE,CAAC,EAAGS,EAAUR,EAAG,QAAQ,MAAMK,CAAO,EAClEL,EAAG,aAAaQ,EAAQ,IAAIF,EAAM,GAAG,EAAGE,EAAQ,IAAID,EAAI,GAAG,EAAGR,EAAIG,EAAM,MAAQD,CAAO,EACnFF,GAAK,GACLU,GAAwBT,EAAIK,GAAUF,EAAWA,EAAS,SAAWC,GAAcA,EAAW,aAAe,GAAK,CAAC,CAC3H,CACJ,CAKA,YAAYJ,EAAIU,EAAM,CAClB,IAAIL,EAAUL,EAAG,MAAM,OAAQH,EAAS,KAAK,OAC7C,QAAS,EAAI,EAAG,EAAIA,EAAO,OAAQ,IAAK,CACpC,GAAI,CAAE,MAAAS,EAAO,IAAAC,CAAI,EAAIV,EAAO,CAAC,EAAGW,EAAUR,EAAG,QAAQ,MAAMK,CAAO,EAC9DM,EAAOH,EAAQ,IAAIF,EAAM,GAAG,EAAGM,EAAKJ,EAAQ,IAAID,EAAI,GAAG,EACvD,EACAP,EAAG,YAAYW,EAAMC,CAAE,GAGvBZ,EAAG,iBAAiBW,EAAMC,EAAIF,CAAI,EAClCD,GAAwBT,EAAIK,EAASK,EAAK,SAAW,GAAK,CAAC,EAEnE,CACJ,CAQA,OAAO,SAASG,EAAMC,EAAKC,EAAW,GAAO,CACzC,IAAIC,EAAQH,EAAK,OAAO,cAAgB,IAAII,GAAcJ,CAAI,EACxDK,GAAgBL,EAAK,KAAK,CAAC,EAAGA,EAAK,OAAQA,EAAK,IAAKA,EAAK,MAAM,EAAGC,EAAKC,CAAQ,EACtF,GAAIC,EACA,OAAOA,EACX,QAASG,EAAQN,EAAK,MAAQ,EAAGM,GAAS,EAAGA,IAAS,CAClD,IAAIC,EAAQN,EAAM,EACZI,GAAgBL,EAAK,KAAK,CAAC,EAAGA,EAAK,KAAKM,CAAK,EAAGN,EAAK,OAAOM,EAAQ,CAAC,EAAGN,EAAK,MAAMM,CAAK,EAAGL,EAAKC,CAAQ,EACxGG,GAAgBL,EAAK,KAAK,CAAC,EAAGA,EAAK,KAAKM,CAAK,EAAGN,EAAK,MAAMM,EAAQ,CAAC,EAAGN,EAAK,MAAMM,CAAK,EAAI,EAAGL,EAAKC,CAAQ,EACjH,GAAIK,EACA,OAAOA,CACf,CACA,OAAO,IACX,CAMA,OAAO,KAAKP,EAAMQ,EAAO,EAAG,CACxB,OAAO,KAAK,SAASR,EAAMQ,CAAI,GAAK,KAAK,SAASR,EAAM,CAACQ,CAAI,GAAK,IAAIC,GAAaT,EAAK,KAAK,CAAC,CAAC,CACnG,CAOA,OAAO,QAAQU,EAAK,CAChB,OAAOL,GAAgBK,EAAKA,EAAK,EAAG,EAAG,CAAC,GAAK,IAAID,GAAaC,CAAG,CACrE,CAKA,OAAO,MAAMA,EAAK,CACd,OAAOL,GAAgBK,EAAKA,EAAKA,EAAI,QAAQ,KAAMA,EAAI,WAAY,EAAE,GAAK,IAAID,GAAaC,CAAG,CAClG,CAKA,OAAO,SAASA,EAAKC,EAAM,CACvB,GAAI,CAACA,GAAQ,CAACA,EAAK,KACf,MAAM,IAAI,WAAW,sCAAsC,EAC/D,IAAIC,EAAMhC,GAAY+B,EAAK,IAAI,EAC/B,GAAI,CAACC,EACD,MAAM,IAAI,WAAW,qBAAqBD,EAAK,IAAI,UAAU,EACjE,OAAOC,EAAI,SAASF,EAAKC,CAAI,CACjC,CAOA,OAAO,OAAOE,EAAIC,EAAgB,CAC9B,GAAID,KAAMjC,GACN,MAAM,IAAI,WAAW,sCAAwCiC,CAAE,EACnE,OAAAjC,GAAYiC,CAAE,EAAIC,EAClBA,EAAe,UAAU,OAASD,EAC3BC,CACX,CAUA,aAAc,CACV,OAAOV,GAAc,QAAQ,KAAK,QAAS,KAAK,KAAK,EAAE,YAAY,CACvE,CACJ,EACAvB,GAAU,UAAU,QAAU,GAI9B,IAAMI,GAAN,KAAqB,CAIjB,YAIAQ,EAIAC,EAAK,CACD,KAAK,MAAQD,EACb,KAAK,IAAMC,CACf,CACJ,EACIqB,GAA2B,GAC/B,SAASC,GAAmBhB,EAAM,CAC1B,CAACe,IAA4B,CAACf,EAAK,OAAO,gBAC1Ce,GAA2B,GAC3B,QAAQ,KAAQ,wEAA0Ef,EAAK,OAAO,KAAK,KAAO,GAAG,EAE7H,CAOA,IAAMI,GAAN,MAAMa,UAAsBpC,EAAU,CAIlC,YAAYC,EAASC,EAAQD,EAAS,CAClCkC,GAAmBlC,CAAO,EAC1BkC,GAAmBjC,CAAK,EACxB,MAAMD,EAASC,CAAK,CACxB,CAKA,IAAI,SAAU,CAAE,OAAO,KAAK,QAAQ,KAAO,KAAK,MAAM,IAAM,KAAK,MAAQ,IAAM,CAC/E,IAAI2B,EAAKf,EAAS,CACd,IAAIZ,EAAQ2B,EAAI,QAAQf,EAAQ,IAAI,KAAK,IAAI,CAAC,EAC9C,GAAI,CAACZ,EAAM,OAAO,cACd,OAAOF,GAAU,KAAKE,CAAK,EAC/B,IAAID,EAAU4B,EAAI,QAAQf,EAAQ,IAAI,KAAK,MAAM,CAAC,EAClD,OAAO,IAAIsB,EAAcnC,EAAQ,OAAO,cAAgBA,EAAUC,EAAOA,CAAK,CAClF,CACA,QAAQI,EAAIC,EAAUC,EAAM,MAAO,CAE/B,GADA,MAAM,QAAQF,EAAIC,CAAO,EACrBA,GAAWC,EAAM,MAAO,CACxB,IAAI6B,EAAQ,KAAK,MAAM,YAAY,KAAK,GAAG,EACvCA,GACA/B,EAAG,YAAY+B,CAAK,CAC5B,CACJ,CACA,GAAGC,EAAO,CACN,OAAOA,aAAiBF,GAAiBE,EAAM,QAAU,KAAK,QAAUA,EAAM,MAAQ,KAAK,IAC/F,CACA,aAAc,CACV,OAAO,IAAIC,GAAa,KAAK,OAAQ,KAAK,IAAI,CAClD,CACA,QAAS,CACL,MAAO,CAAE,KAAM,OAAQ,OAAQ,KAAK,OAAQ,KAAM,KAAK,IAAK,CAChE,CAIA,OAAO,SAASV,EAAKC,EAAM,CACvB,GAAI,OAAOA,EAAK,QAAU,UAAY,OAAOA,EAAK,MAAQ,SACtD,MAAM,IAAI,WAAW,0CAA0C,EACnE,OAAO,IAAIM,EAAcP,EAAI,QAAQC,EAAK,MAAM,EAAGD,EAAI,QAAQC,EAAK,IAAI,CAAC,CAC7E,CAIA,OAAO,OAAOD,EAAKW,EAAQC,EAAOD,EAAQ,CACtC,IAAIvC,EAAU4B,EAAI,QAAQW,CAAM,EAChC,OAAO,IAAI,KAAKvC,EAASwC,GAAQD,EAASvC,EAAU4B,EAAI,QAAQY,CAAI,CAAC,CACzE,CASA,OAAO,QAAQxC,EAASC,EAAOyB,EAAM,CACjC,IAAIe,EAAOzC,EAAQ,IAAMC,EAAM,IAG/B,IAFI,CAACyB,GAAQe,KACTf,EAAOe,GAAQ,EAAI,EAAI,IACvB,CAACxC,EAAM,OAAO,cAAe,CAC7B,IAAIwB,EAAQ1B,GAAU,SAASE,EAAOyB,EAAM,EAAI,GAAK3B,GAAU,SAASE,EAAO,CAACyB,EAAM,EAAI,EAC1F,GAAID,EACAxB,EAAQwB,EAAM,UAEd,QAAO1B,GAAU,KAAKE,EAAOyB,CAAI,CACzC,CACA,OAAK1B,EAAQ,OAAO,gBACZyC,GAAQ,EACRzC,EAAUC,GAGVD,GAAWD,GAAU,SAASC,EAAS,CAAC0B,EAAM,EAAI,GAAK3B,GAAU,SAASC,EAAS0B,EAAM,EAAI,GAAG,QAC3F1B,EAAQ,IAAMC,EAAM,KAASwC,EAAO,IACrCzC,EAAUC,KAGf,IAAIkC,EAAcnC,EAASC,CAAK,CAC3C,CACJ,EACAF,GAAU,OAAO,OAAQuB,EAAa,EACtC,IAAMgB,GAAN,MAAMI,CAAa,CACf,YAAYH,EAAQC,EAAM,CACtB,KAAK,OAASD,EACd,KAAK,KAAOC,CAChB,CACA,IAAI3B,EAAS,CACT,OAAO,IAAI6B,EAAa7B,EAAQ,IAAI,KAAK,MAAM,EAAGA,EAAQ,IAAI,KAAK,IAAI,CAAC,CAC5E,CACA,QAAQe,EAAK,CACT,OAAON,GAAc,QAAQM,EAAI,QAAQ,KAAK,MAAM,EAAGA,EAAI,QAAQ,KAAK,IAAI,CAAC,CACjF,CACJ,EAQMe,GAAN,MAAMC,UAAsB7C,EAAU,CAKlC,YAAYmB,EAAM,CACd,IAAIH,EAAOG,EAAK,UACZ2B,EAAO3B,EAAK,KAAK,CAAC,EAAE,QAAQA,EAAK,IAAMH,EAAK,QAAQ,EACxD,MAAMG,EAAM2B,CAAI,EAChB,KAAK,KAAO9B,CAChB,CACA,IAAIa,EAAKf,EAAS,CACd,GAAI,CAAE,QAAAiC,EAAS,IAAAC,CAAI,EAAIlC,EAAQ,UAAU,KAAK,MAAM,EAChDK,EAAOU,EAAI,QAAQmB,CAAG,EAC1B,OAAID,EACO/C,GAAU,KAAKmB,CAAI,EACvB,IAAI0B,EAAc1B,CAAI,CACjC,CACA,SAAU,CACN,OAAO,IAAIX,EAAMyC,EAAS,KAAK,KAAK,IAAI,EAAG,EAAG,CAAC,CACnD,CACA,GAAGX,EAAO,CACN,OAAOA,aAAiBO,GAAiBP,EAAM,QAAU,KAAK,MAClE,CACA,QAAS,CACL,MAAO,CAAE,KAAM,OAAQ,OAAQ,KAAK,MAAO,CAC/C,CACA,aAAc,CAAE,OAAO,IAAIY,GAAa,KAAK,MAAM,CAAG,CAItD,OAAO,SAASrB,EAAKC,EAAM,CACvB,GAAI,OAAOA,EAAK,QAAU,SACtB,MAAM,IAAI,WAAW,0CAA0C,EACnE,OAAO,IAAIe,EAAchB,EAAI,QAAQC,EAAK,MAAM,CAAC,CACrD,CAIA,OAAO,OAAOD,EAAKZ,EAAM,CACrB,OAAO,IAAI4B,EAAchB,EAAI,QAAQZ,CAAI,CAAC,CAC9C,CAKA,OAAO,aAAaD,EAAM,CACtB,MAAO,CAACA,EAAK,QAAUA,EAAK,KAAK,KAAK,aAAe,EACzD,CACJ,EACA4B,GAAc,UAAU,QAAU,GAClC5C,GAAU,OAAO,OAAQ4C,EAAa,EACtC,IAAMM,GAAN,MAAMC,CAAa,CACf,YAAYX,EAAQ,CAChB,KAAK,OAASA,CAClB,CACA,IAAI1B,EAAS,CACT,GAAI,CAAE,QAAAiC,EAAS,IAAAC,CAAI,EAAIlC,EAAQ,UAAU,KAAK,MAAM,EACpD,OAAOiC,EAAU,IAAIR,GAAaS,EAAKA,CAAG,EAAI,IAAIG,EAAaH,CAAG,CACtE,CACA,QAAQnB,EAAK,CACT,IAAIV,EAAOU,EAAI,QAAQ,KAAK,MAAM,EAAGb,EAAOG,EAAK,UACjD,OAAIH,GAAQ4B,GAAc,aAAa5B,CAAI,EAChC,IAAI4B,GAAczB,CAAI,EAC1BnB,GAAU,KAAKmB,CAAI,CAC9B,CACJ,EAOMS,GAAN,MAAMwB,UAAqBpD,EAAU,CAIjC,YAAY6B,EAAK,CACb,MAAMA,EAAI,QAAQ,CAAC,EAAGA,EAAI,QAAQA,EAAI,QAAQ,IAAI,CAAC,CACvD,CACA,QAAQvB,EAAIC,EAAUC,EAAM,MAAO,CAC/B,GAAID,GAAWC,EAAM,MAAO,CACxBF,EAAG,OAAO,EAAGA,EAAG,IAAI,QAAQ,IAAI,EAChC,IAAI+C,EAAMrD,GAAU,QAAQM,EAAG,GAAG,EAC7B+C,EAAI,GAAG/C,EAAG,SAAS,GACpBA,EAAG,aAAa+C,CAAG,CAC3B,MAEI,MAAM,QAAQ/C,EAAIC,CAAO,CAEjC,CACA,QAAS,CAAE,MAAO,CAAE,KAAM,KAAM,CAAG,CAInC,OAAO,SAASsB,EAAK,CAAE,OAAO,IAAIuB,EAAavB,CAAG,CAAG,CACrD,IAAIA,EAAK,CAAE,OAAO,IAAIuB,EAAavB,CAAG,CAAG,CACzC,GAAGS,EAAO,CAAE,OAAOA,aAAiBc,CAAc,CAClD,aAAc,CAAE,OAAOE,EAAa,CACxC,EACAtD,GAAU,OAAO,MAAO4B,EAAY,EACpC,IAAM0B,GAAc,CAChB,KAAM,CAAE,OAAO,IAAM,EACrB,QAAQzB,EAAK,CAAE,OAAO,IAAID,GAAaC,CAAG,CAAG,CACjD,EAKA,SAASL,GAAgBK,EAAKb,EAAMgC,EAAKO,EAAOnC,EAAKoC,EAAO,GAAO,CAC/D,GAAIxC,EAAK,cACL,OAAOO,GAAc,OAAOM,EAAKmB,CAAG,EACxC,QAAS3C,EAAIkD,GAASnC,EAAM,EAAI,EAAI,GAAIA,EAAM,EAAIf,EAAIW,EAAK,WAAaX,GAAK,EAAGA,GAAKe,EAAK,CACtF,IAAIqC,EAAQzC,EAAK,MAAMX,CAAC,EACxB,GAAKoD,EAAM,QAKN,GAAI,CAACD,GAAQZ,GAAc,aAAaa,CAAK,EAC9C,OAAOb,GAAc,OAAOf,EAAKmB,GAAO5B,EAAM,EAAIqC,EAAM,SAAW,EAAE,MANtD,CACf,IAAInC,EAAQE,GAAgBK,EAAK4B,EAAOT,EAAM5B,EAAKA,EAAM,EAAIqC,EAAM,WAAa,EAAGrC,EAAKoC,CAAI,EAC5F,GAAIlC,EACA,OAAOA,CACf,CAIA0B,GAAOS,EAAM,SAAWrC,CAC5B,CACA,OAAO,IACX,CACA,SAASL,GAAwBT,EAAIoD,EAAU/B,EAAM,CACjD,IAAIgC,EAAOrD,EAAG,MAAM,OAAS,EAC7B,GAAIqD,EAAOD,EACP,OACJ,IAAIE,EAAOtD,EAAG,MAAMqD,CAAI,EACxB,GAAI,EAAEC,aAAgBC,IAAeD,aAAgBE,IACjD,OACJ,IAAIC,EAAMzD,EAAG,QAAQ,KAAKqD,CAAI,EAAGK,EACjCD,EAAI,QAAQ,CAACE,EAAOC,EAAKC,EAAUC,IAAU,CAAMJ,GAAO,OACtDA,EAAMI,EAAO,CAAC,EAClB9D,EAAG,aAAaN,GAAU,KAAKM,EAAG,IAAI,QAAQ0D,CAAG,EAAGrC,CAAI,CAAC,CAC7D,CAEA,IAAM0C,GAAc,EAAGC,GAAgB,EAAGC,GAAiB,EAuBrDC,GAAN,cAA0BC,EAAU,CAIhC,YAAYC,EAAO,CACf,MAAMA,EAAM,GAAG,EAEf,KAAK,gBAAkB,EAGvB,KAAK,QAAU,EAEf,KAAK,KAAO,OAAO,OAAO,IAAI,EAC9B,KAAK,KAAO,KAAK,IAAI,EACrB,KAAK,aAAeA,EAAM,UAC1B,KAAK,YAAcA,EAAM,WAC7B,CAOA,IAAI,WAAY,CACZ,OAAI,KAAK,gBAAkB,KAAK,MAAM,SAClC,KAAK,aAAe,KAAK,aAAa,IAAI,KAAK,IAAK,KAAK,QAAQ,MAAM,KAAK,eAAe,CAAC,EAC5F,KAAK,gBAAkB,KAAK,MAAM,QAE/B,KAAK,YAChB,CAKA,aAAaC,EAAW,CACpB,GAAIA,EAAU,MAAM,KAAO,KAAK,IAC5B,MAAM,IAAI,WAAW,qEAAqE,EAC9F,YAAK,aAAeA,EACpB,KAAK,gBAAkB,KAAK,MAAM,OAClC,KAAK,SAAW,KAAK,QAAUN,IAAe,CAACC,GAC/C,KAAK,YAAc,KACZ,IACX,CAIA,IAAI,cAAe,CACf,OAAQ,KAAK,QAAUD,IAAe,CAC1C,CAIA,eAAehC,EAAO,CAClB,YAAK,YAAcA,EACnB,KAAK,SAAWiC,GACT,IACX,CAMA,YAAYjC,EAAO,CACf,OAAKuC,GAAK,QAAQ,KAAK,aAAe,KAAK,UAAU,MAAM,MAAM,EAAGvC,CAAK,GACrE,KAAK,eAAeA,CAAK,EACtB,IACX,CAIA,cAAcwC,EAAM,CAChB,OAAO,KAAK,YAAYA,EAAK,SAAS,KAAK,aAAe,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC,CAC3F,CAIA,iBAAiBA,EAAM,CACnB,OAAO,KAAK,YAAYA,EAAK,cAAc,KAAK,aAAe,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC,CAChG,CAIA,IAAI,gBAAiB,CACjB,OAAQ,KAAK,QAAUP,IAAiB,CAC5C,CAIA,QAAQV,EAAM/B,EAAK,CACf,MAAM,QAAQ+B,EAAM/B,CAAG,EACvB,KAAK,QAAU,KAAK,QAAU,CAACyC,GAC/B,KAAK,YAAc,IACvB,CAIA,QAAQQ,EAAM,CACV,YAAK,KAAOA,EACL,IACX,CAIA,iBAAiBC,EAAO,CACpB,YAAK,UAAU,QAAQ,KAAMA,CAAK,EAC3B,IACX,CAMA,qBAAqB/D,EAAMgE,EAAe,GAAM,CAC5C,IAAIL,EAAY,KAAK,UACrB,OAAIK,IACAhE,EAAOA,EAAK,KAAK,KAAK,cAAgB2D,EAAU,MAAQA,EAAU,MAAM,MAAM,EAAKA,EAAU,MAAM,YAAYA,EAAU,GAAG,GAAKC,GAAK,KAAM,GAChJD,EAAU,YAAY,KAAM3D,CAAI,EACzB,IACX,CAIA,iBAAkB,CACd,YAAK,UAAU,QAAQ,IAAI,EACpB,IACX,CAKA,WAAWwC,EAAMvC,EAAMC,EAAI,CACvB,IAAI+D,EAAS,KAAK,IAAI,KAAK,OAC3B,GAAIhE,GAAQ,KACR,OAAKuC,EAEE,KAAK,qBAAqByB,EAAO,KAAKzB,CAAI,EAAG,EAAI,EAD7C,KAAK,gBAAgB,EAG/B,CAGD,GAFItC,GAAM,OACNA,EAAKD,GACL,CAACuC,EACD,OAAO,KAAK,YAAYvC,EAAMC,CAAE,EACpC,IAAImB,EAAQ,KAAK,YACjB,GAAI,CAACA,EAAO,CACR,IAAIzB,EAAQ,KAAK,IAAI,QAAQK,CAAI,EACjCoB,EAAQnB,GAAMD,EAAOL,EAAM,MAAM,EAAIA,EAAM,YAAY,KAAK,IAAI,QAAQM,CAAE,CAAC,CAC/E,CACA,YAAK,iBAAiBD,EAAMC,EAAI+D,EAAO,KAAKzB,EAAMnB,CAAK,CAAC,EACpD,CAAC,KAAK,UAAU,OAAS,KAAK,UAAU,IAAMpB,EAAOuC,EAAK,QAC1D,KAAK,aAAaxD,GAAU,KAAK,KAAK,UAAU,GAAG,CAAC,EACjD,IACX,CACJ,CAKA,QAAQkF,EAAKC,EAAO,CAChB,YAAK,KAAK,OAAOD,GAAO,SAAWA,EAAMA,EAAI,GAAG,EAAIC,EAC7C,IACX,CAIA,QAAQD,EAAK,CACT,OAAO,KAAK,KAAK,OAAOA,GAAO,SAAWA,EAAMA,EAAI,GAAG,CAC3D,CAKA,IAAI,WAAY,CACZ,QAASE,KAAK,KAAK,KACf,MAAO,GACX,MAAO,EACX,CAKA,gBAAiB,CACb,YAAK,SAAWb,GACT,IACX,CAIA,IAAI,kBAAmB,CACnB,OAAQ,KAAK,QAAUA,IAAkB,CAC7C,CACJ,EAEA,SAASc,GAAKC,EAAGC,EAAM,CACnB,MAAO,CAACA,GAAQ,CAACD,EAAIA,EAAIA,EAAE,KAAKC,CAAI,CACxC,CACA,IAAMC,GAAN,KAAgB,CACZ,YAAYC,EAAMC,EAAMH,EAAM,CAC1B,KAAK,KAAOE,EACZ,KAAK,KAAOJ,GAAKK,EAAK,KAAMH,CAAI,EAChC,KAAK,MAAQF,GAAKK,EAAK,MAAOH,CAAI,CACtC,CACJ,EACMI,GAAa,CACf,IAAIH,GAAU,MAAO,CACjB,KAAKI,EAAQ,CAAE,OAAOA,EAAO,KAAOA,EAAO,OAAO,YAAY,cAAc,CAAG,EAC/E,MAAMtF,EAAI,CAAE,OAAOA,EAAG,GAAK,CAC/B,CAAC,EACD,IAAIkF,GAAU,YAAa,CACvB,KAAKI,EAAQC,EAAU,CAAE,OAAOD,EAAO,WAAa5F,GAAU,QAAQ6F,EAAS,GAAG,CAAG,EACrF,MAAMvF,EAAI,CAAE,OAAOA,EAAG,SAAW,CACrC,CAAC,EACD,IAAIkF,GAAU,cAAe,CACzB,KAAKI,EAAQ,CAAE,OAAOA,EAAO,aAAe,IAAM,EAClD,MAAMtF,EAAIwF,EAAQC,EAAMrB,EAAO,CAAE,OAAOA,EAAM,UAAU,QAAUpE,EAAG,YAAc,IAAM,CAC7F,CAAC,EACD,IAAIkF,GAAU,oBAAqB,CAC/B,MAAO,CAAE,MAAO,EAAG,EACnB,MAAMlF,EAAI0F,EAAM,CAAE,OAAO1F,EAAG,iBAAmB0F,EAAO,EAAIA,CAAM,CACpE,CAAC,CACL,EAGMC,GAAN,KAAoB,CAChB,YAAYhB,EAAQiB,EAAS,CACzB,KAAK,OAASjB,EACd,KAAK,QAAU,CAAC,EAChB,KAAK,aAAe,OAAO,OAAO,IAAI,EACtC,KAAK,OAASU,GAAW,MAAM,EAC3BO,GACAA,EAAQ,QAAQC,GAAU,CACtB,GAAI,KAAK,aAAaA,EAAO,GAAG,EAC5B,MAAM,IAAI,WAAW,iDAAmDA,EAAO,IAAM,GAAG,EAC5F,KAAK,QAAQ,KAAKA,CAAM,EACxB,KAAK,aAAaA,EAAO,GAAG,EAAIA,EAC5BA,EAAO,KAAK,OACZ,KAAK,OAAO,KAAK,IAAIX,GAAUW,EAAO,IAAKA,EAAO,KAAK,MAAOA,CAAM,CAAC,CAC7E,CAAC,CACT,CACJ,EAUMC,GAAN,MAAMC,CAAY,CAId,YAIAT,EAAQ,CACJ,KAAK,OAASA,CAClB,CAIA,IAAI,QAAS,CACT,OAAO,KAAK,OAAO,MACvB,CAIA,IAAI,SAAU,CACV,OAAO,KAAK,OAAO,OACvB,CAIA,MAAMtF,EAAI,CACN,OAAO,KAAK,iBAAiBA,CAAE,EAAE,KACrC,CAIA,kBAAkBA,EAAIgG,EAAS,GAAI,CAC/B,QAASjG,EAAI,EAAGA,EAAI,KAAK,OAAO,QAAQ,OAAQA,IAC5C,GAAIA,GAAKiG,EAAQ,CACb,IAAIH,EAAS,KAAK,OAAO,QAAQ9F,CAAC,EAClC,GAAI8F,EAAO,KAAK,mBAAqB,CAACA,EAAO,KAAK,kBAAkB,KAAKA,EAAQ7F,EAAI,IAAI,EACrF,MAAO,EACf,CACJ,MAAO,EACX,CAQA,iBAAiBiG,EAAQ,CACrB,GAAI,CAAC,KAAK,kBAAkBA,CAAM,EAC9B,MAAO,CAAE,MAAO,KAAM,aAAc,CAAC,CAAE,EAC3C,IAAIC,EAAM,CAACD,CAAM,EAAGE,EAAW,KAAK,WAAWF,CAAM,EAAGG,EAAO,KAI/D,OAAS,CACL,IAAIC,EAAU,GACd,QAAStG,EAAI,EAAGA,EAAI,KAAK,OAAO,QAAQ,OAAQA,IAAK,CACjD,IAAI8F,EAAS,KAAK,OAAO,QAAQ9F,CAAC,EAClC,GAAI8F,EAAO,KAAK,kBAAmB,CAC/B,IAAIS,EAAIF,EAAOA,EAAKrG,CAAC,EAAE,EAAI,EAAGwG,EAAWH,EAAOA,EAAKrG,CAAC,EAAE,MAAQ,KAC5DC,EAAKsG,EAAIJ,EAAI,QACbL,EAAO,KAAK,kBAAkB,KAAKA,EAAQS,EAAIJ,EAAI,MAAMI,CAAC,EAAIJ,EAAKK,EAAUJ,CAAQ,EACzF,GAAInG,GAAMmG,EAAS,kBAAkBnG,EAAID,CAAC,EAAG,CAEzC,GADAC,EAAG,QAAQ,sBAAuBiG,CAAM,EACpC,CAACG,EAAM,CACPA,EAAO,CAAC,EACR,QAASI,EAAI,EAAGA,EAAI,KAAK,OAAO,QAAQ,OAAQA,IAC5CJ,EAAK,KAAKI,EAAIzG,EAAI,CAAE,MAAOoG,EAAU,EAAGD,EAAI,MAAO,EAAI,CAAE,MAAO,KAAM,EAAG,CAAE,CAAC,CACpF,CACAA,EAAI,KAAKlG,CAAE,EACXmG,EAAWA,EAAS,WAAWnG,CAAE,EACjCqG,EAAU,EACd,CACID,IACAA,EAAKrG,CAAC,EAAI,CAAE,MAAOoG,EAAU,EAAGD,EAAI,MAAO,EACnD,CACJ,CACA,GAAI,CAACG,EACD,MAAO,CAAE,MAAOF,EAAU,aAAcD,CAAI,CACpD,CACJ,CAIA,WAAWlG,EAAI,CACX,GAAI,CAACA,EAAG,OAAO,GAAG,KAAK,GAAG,EACtB,MAAM,IAAI,WAAW,mCAAmC,EAC5D,IAAIyG,EAAc,IAAIV,EAAY,KAAK,MAAM,EAAGW,EAAS,KAAK,OAAO,OACrE,QAAS3G,EAAI,EAAGA,EAAI2G,EAAO,OAAQ3G,IAAK,CACpC,IAAI4G,EAAQD,EAAO3G,CAAC,EACpB0G,EAAYE,EAAM,IAAI,EAAIA,EAAM,MAAM3G,EAAI,KAAK2G,EAAM,IAAI,EAAG,KAAMF,CAAW,CACjF,CACA,OAAOA,CACX,CAIA,IAAI,IAAK,CAAE,OAAO,IAAIvC,GAAY,IAAI,CAAG,CAIzC,OAAO,OAAOoB,EAAQ,CAClB,IAAIsB,EAAU,IAAIjB,GAAcL,EAAO,IAAMA,EAAO,IAAI,KAAK,OAASA,EAAO,OAAQA,EAAO,OAAO,EAC/FC,EAAW,IAAIQ,EAAYa,CAAO,EACtC,QAAS7G,EAAI,EAAGA,EAAI6G,EAAQ,OAAO,OAAQ7G,IACvCwF,EAASqB,EAAQ,OAAO7G,CAAC,EAAE,IAAI,EAAI6G,EAAQ,OAAO7G,CAAC,EAAE,KAAKuF,EAAQC,CAAQ,EAC9E,OAAOA,CACX,CASA,YAAYD,EAAQ,CAChB,IAAIsB,EAAU,IAAIjB,GAAc,KAAK,OAAQL,EAAO,OAAO,EACvDoB,EAASE,EAAQ,OAAQrB,EAAW,IAAIQ,EAAYa,CAAO,EAC/D,QAAS,EAAI,EAAG,EAAIF,EAAO,OAAQ,IAAK,CACpC,IAAIvB,EAAOuB,EAAO,CAAC,EAAE,KACrBnB,EAASJ,CAAI,EAAI,KAAK,eAAeA,CAAI,EAAI,KAAKA,CAAI,EAAIuB,EAAO,CAAC,EAAE,KAAKpB,EAAQC,CAAQ,CAC7F,CACA,OAAOA,CACX,CAQA,OAAOsB,EAAc,CACjB,IAAIC,EAAS,CAAE,IAAK,KAAK,IAAI,OAAO,EAAG,UAAW,KAAK,UAAU,OAAO,CAAE,EAG1E,GAFI,KAAK,cACLA,EAAO,YAAc,KAAK,YAAY,IAAIC,GAAKA,EAAE,OAAO,CAAC,GACzDF,GAAgB,OAAOA,GAAgB,SACvC,QAASG,KAAQH,EAAc,CAC3B,GAAIG,GAAQ,OAASA,GAAQ,YACzB,MAAM,IAAI,WAAW,oDAAoD,EAC7E,IAAInB,EAASgB,EAAaG,CAAI,EAAG5C,EAAQyB,EAAO,KAAK,MACjDzB,GAASA,EAAM,SACf0C,EAAOE,CAAI,EAAI5C,EAAM,OAAO,KAAKyB,EAAQ,KAAKA,EAAO,GAAG,CAAC,EACjE,CACJ,OAAOiB,CACX,CAQA,OAAO,SAASxB,EAAQ9D,EAAMqF,EAAc,CACxC,GAAI,CAACrF,EACD,MAAM,IAAI,WAAW,wCAAwC,EACjE,GAAI,CAAC8D,EAAO,OACR,MAAM,IAAI,WAAW,wCAAwC,EACjE,IAAIsB,EAAU,IAAIjB,GAAcL,EAAO,OAAQA,EAAO,OAAO,EACzDC,EAAW,IAAIQ,EAAYa,CAAO,EACtC,OAAAA,EAAQ,OAAO,QAAQD,GAAS,CAC5B,GAAIA,EAAM,MAAQ,MACdpB,EAAS,IAAM0B,GAAK,SAAS3B,EAAO,OAAQ9D,EAAK,GAAG,UAE/CmF,EAAM,MAAQ,YACnBpB,EAAS,UAAY7F,GAAU,SAAS6F,EAAS,IAAK/D,EAAK,SAAS,UAE/DmF,EAAM,MAAQ,cACfnF,EAAK,cACL+D,EAAS,YAAc/D,EAAK,YAAY,IAAI8D,EAAO,OAAO,YAAY,OAEzE,CACD,GAAIuB,EACA,QAASG,KAAQH,EAAc,CAC3B,IAAIhB,EAASgB,EAAaG,CAAI,EAAG5C,EAAQyB,EAAO,KAAK,MACrD,GAAIA,EAAO,KAAOc,EAAM,MAAQvC,GAASA,EAAM,UAC3C,OAAO,UAAU,eAAe,KAAK5C,EAAMwF,CAAI,EAAG,CAClDzB,EAASoB,EAAM,IAAI,EAAIvC,EAAM,SAAS,KAAKyB,EAAQP,EAAQ9D,EAAKwF,CAAI,EAAGzB,CAAQ,EAC/E,MACJ,CACJ,CACJA,EAASoB,EAAM,IAAI,EAAIA,EAAM,KAAKrB,EAAQC,CAAQ,CACtD,CACJ,CAAC,EACMA,CACX,CACJ,EAEA,SAAS2B,GAAUC,EAAKlC,EAAMmC,EAAQ,CAClC,QAASJ,KAAQG,EAAK,CAClB,IAAIE,EAAMF,EAAIH,CAAI,EACdK,aAAe,SACfA,EAAMA,EAAI,KAAKpC,CAAI,EACd+B,GAAQ,oBACbK,EAAMH,GAAUG,EAAKpC,EAAM,CAAC,CAAC,GACjCmC,EAAOJ,CAAI,EAAIK,CACnB,CACA,OAAOD,CACX,CAMA,IAAME,GAAN,KAAa,CAIT,YAIAC,EAAM,CACF,KAAK,KAAOA,EAIZ,KAAK,MAAQ,CAAC,EACVA,EAAK,OACLL,GAAUK,EAAK,MAAO,KAAM,KAAK,KAAK,EAC1C,KAAK,IAAMA,EAAK,IAAMA,EAAK,IAAI,IAAMC,GAAU,QAAQ,CAC3D,CAIA,SAASpD,EAAO,CAAE,OAAOA,EAAM,KAAK,GAAG,CAAG,CAC9C,EACMqD,GAAO,OAAO,OAAO,IAAI,EAC/B,SAASD,GAAUrC,EAAM,CACrB,OAAIA,KAAQsC,GACDtC,EAAO,KAAM,EAAEsC,GAAKtC,CAAI,GACnCsC,GAAKtC,CAAI,EAAI,EACNA,EAAO,IAClB,CAOA,IAAMuC,GAAN,KAAgB,CAIZ,YAAYvC,EAAO,MAAO,CAAE,KAAK,IAAMqC,GAAUrC,CAAI,CAAG,CAKxD,IAAIf,EAAO,CAAE,OAAOA,EAAM,OAAO,aAAa,KAAK,GAAG,CAAG,CAIzD,SAASA,EAAO,CAAE,OAAOA,EAAM,KAAK,GAAG,CAAG,CAC9C,ECh+BA,IAAMuD,GAAkB,CAACC,EAAOC,IACxBD,EAAM,UAAU,MACT,IACPC,GACAA,EAASD,EAAM,GAAG,gBAAgB,EAAE,eAAe,CAAC,EACjD,IAEX,SAASE,GAAaF,EAAOG,EAAM,CAC/B,GAAI,CAAE,QAAAC,CAAQ,EAAIJ,EAAM,UACxB,MAAI,CAACI,IAAYD,EAAO,CAACA,EAAK,eAAe,WAAYH,CAAK,EACxDI,EAAQ,aAAe,GAClB,KACJA,CACX,CAUA,IAAMC,GAAe,CAACL,EAAOC,EAAUE,IAAS,CAC5C,IAAIC,EAAUF,GAAaF,EAAOG,CAAI,EACtC,GAAI,CAACC,EACD,MAAO,GACX,IAAIE,EAAOC,GAAcH,CAAO,EAEhC,GAAI,CAACE,EAAM,CACP,IAAIE,EAAQJ,EAAQ,WAAW,EAAGK,EAASD,GAASE,GAAWF,CAAK,EACpE,OAAIC,GAAU,KACH,IACPR,GACAA,EAASD,EAAM,GAAG,KAAKQ,EAAOC,CAAM,EAAE,eAAe,CAAC,EACnD,GACX,CACA,IAAIE,EAASL,EAAK,WAElB,GAAIM,GAAcZ,EAAOM,EAAML,EAAU,EAAE,EACvC,MAAO,GAGX,GAAIG,EAAQ,OAAO,QAAQ,MAAQ,IAC9BS,GAAYF,EAAQ,KAAK,GAAKG,GAAc,aAAaH,CAAM,GAChE,QAASI,EAAQX,EAAQ,OAAQW,IAAS,CACtC,IAAIC,EAAUC,GAAYjB,EAAM,IAAKI,EAAQ,OAAOW,CAAK,EAAGX,EAAQ,MAAMW,CAAK,EAAGG,EAAM,KAAK,EAC7F,GAAIF,GAAWA,EAAQ,MAAM,KAAOA,EAAQ,GAAKA,EAAQ,KAAM,CAC3D,GAAIf,EAAU,CACV,IAAIkB,EAAKnB,EAAM,GAAG,KAAKgB,CAAO,EAC9BG,EAAG,aAAaN,GAAYF,EAAQ,KAAK,EACnCS,GAAU,SAASD,EAAG,IAAI,QAAQA,EAAG,QAAQ,IAAIb,EAAK,IAAK,EAAE,CAAC,EAAG,EAAE,EACnEQ,GAAc,OAAOK,EAAG,IAAKb,EAAK,IAAMK,EAAO,QAAQ,CAAC,EAC9DV,EAASkB,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,CACA,GAAIJ,GAAS,GAAKX,EAAQ,KAAKW,EAAQ,CAAC,EAAE,WAAa,EACnD,KACR,CAGJ,OAAIJ,EAAO,QAAUL,EAAK,OAASF,EAAQ,MAAQ,GAC3CH,GACAA,EAASD,EAAM,GAAG,OAAOM,EAAK,IAAMK,EAAO,SAAUL,EAAK,GAAG,EAAE,eAAe,CAAC,EAC5E,IAEJ,EACX,EAMMe,GAAwB,CAACrB,EAAOC,EAAUE,IAAS,CACrD,IAAIC,EAAUF,GAAaF,EAAOG,CAAI,EACtC,GAAI,CAACC,EACD,MAAO,GACX,IAAIE,EAAOC,GAAcH,CAAO,EAChC,OAAOE,EAAOgB,GAAqBtB,EAAOM,EAAML,CAAQ,EAAI,EAChE,EAaA,SAASsB,GAAqBC,EAAOC,EAAMC,EAAU,CACjD,IAAIC,EAASF,EAAK,WAAYG,EAAaD,EAAQE,EAAYJ,EAAK,IAAM,EAC1E,KAAO,CAACG,EAAW,YAAaC,IAAa,CACzC,GAAID,EAAW,KAAK,KAAK,UACrB,MAAO,GACX,IAAIE,EAAQF,EAAW,UACvB,GAAI,CAACE,EACD,MAAO,GACXF,EAAaE,CACjB,CACA,IAAIC,EAAQN,EAAK,UAAWO,EAAYD,EAAOE,EAAWR,EAAK,IAAM,EACrE,KAAO,CAACO,EAAU,YAAaC,IAAY,CACvC,GAAID,EAAU,KAAK,KAAK,UACpB,MAAO,GACX,IAAIF,EAAQE,EAAU,WACtB,GAAI,CAACF,EACD,MAAO,GACXE,EAAYF,CAChB,CACA,IAAII,EAAOC,GAAYX,EAAM,IAAKK,EAAWI,EAAUG,EAAM,KAAK,EAClE,GAAI,CAACF,GAAQA,EAAK,MAAQL,GACtBK,aAAgBG,IAAeH,EAAK,MAAM,MAAQD,EAAWJ,EAC7D,MAAO,GACX,GAAIH,EAAU,CACV,IAAIY,EAAKd,EAAM,GAAG,KAAKU,CAAI,EAC3BI,EAAG,aAAaC,GAAc,OAAOD,EAAG,IAAKT,CAAS,CAAC,EACvDH,EAASY,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,CACA,SAASE,GAAYC,EAAMC,EAAMC,EAAO,GAAO,CAC3C,QAASC,EAAOH,EAAMG,EAAMA,EAAQF,GAAQ,QAAUE,EAAK,WAAaA,EAAK,UAAY,CACrF,GAAIA,EAAK,YACL,MAAO,GACX,GAAID,GAAQC,EAAK,YAAc,EAC3B,MAAO,EACf,CACA,MAAO,EACX,CASA,IAAMC,GAAqB,CAACrB,EAAOE,EAAUoB,IAAS,CAClD,GAAI,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIxB,EAAM,UAAWC,EAAOsB,EAC/C,GAAI,CAACC,EACD,MAAO,GACX,GAAID,EAAM,OAAO,YAAa,CAC1B,GAAID,EAAO,CAACA,EAAK,eAAe,WAAYtB,CAAK,EAAIuB,EAAM,aAAe,EACtE,MAAO,GACXtB,EAAOwB,GAAcF,CAAK,CAC9B,CACA,IAAIN,EAAOhB,GAAQA,EAAK,WACxB,MAAI,CAACgB,GAAQ,CAACS,GAAc,aAAaT,CAAI,EAClC,IACPf,GACAA,EAASF,EAAM,GAAG,aAAa0B,GAAc,OAAO1B,EAAM,IAAKC,EAAK,IAAMgB,EAAK,QAAQ,CAAC,EAAE,eAAe,CAAC,EACvG,GACX,EACA,SAASQ,GAAcE,EAAM,CACzB,GAAI,CAACA,EAAK,OAAO,KAAK,KAAK,UACvB,QAASC,EAAID,EAAK,MAAQ,EAAGC,GAAK,EAAGA,IAAK,CACtC,GAAID,EAAK,MAAMC,CAAC,EAAI,EAChB,OAAOD,EAAK,IAAI,QAAQA,EAAK,OAAOC,EAAI,CAAC,CAAC,EAC9C,GAAID,EAAK,KAAKC,CAAC,EAAE,KAAK,KAAK,UACvB,KACR,CACJ,OAAO,IACX,CACA,SAASC,GAAW7B,EAAOsB,EAAM,CAC7B,GAAI,CAAE,QAAAQ,CAAQ,EAAI9B,EAAM,UACxB,MAAI,CAAC8B,IAAYR,EAAO,CAACA,EAAK,eAAe,UAAWtB,CAAK,EACvD8B,EAAQ,aAAeA,EAAQ,OAAO,QAAQ,MACzC,KACJA,CACX,CAQA,IAAMC,GAAc,CAAC/B,EAAOE,EAAUoB,IAAS,CAC3C,IAAIQ,EAAUD,GAAW7B,EAAOsB,CAAI,EACpC,GAAI,CAACQ,EACD,MAAO,GACX,IAAI7B,EAAO+B,GAAaF,CAAO,EAE/B,GAAI,CAAC7B,EACD,MAAO,GACX,IAAIM,EAAQN,EAAK,UAEjB,GAAIgC,GAAcjC,EAAOC,EAAMC,EAAU,CAAC,EACtC,MAAO,GAGX,GAAI4B,EAAQ,OAAO,QAAQ,MAAQ,IAC9Bd,GAAYT,EAAO,OAAO,GAAKmB,GAAc,aAAanB,CAAK,GAAI,CACpE,IAAI2B,EAAUvB,GAAYX,EAAM,IAAK8B,EAAQ,OAAO,EAAGA,EAAQ,MAAM,EAAGlB,EAAM,KAAK,EACnF,GAAIsB,GAAWA,EAAQ,MAAM,KAAOA,EAAQ,GAAKA,EAAQ,KAAM,CAC3D,GAAIhC,EAAU,CACV,IAAIY,EAAKd,EAAM,GAAG,KAAKkC,CAAO,EAC9BpB,EAAG,aAAaE,GAAYT,EAAO,OAAO,EAAI4B,GAAU,SAASrB,EAAG,IAAI,QAAQA,EAAG,QAAQ,IAAIb,EAAK,GAAG,CAAC,EAAG,CAAC,EACtGyB,GAAc,OAAOZ,EAAG,IAAKA,EAAG,QAAQ,IAAIb,EAAK,GAAG,CAAC,CAAC,EAC5DC,EAASY,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,CACJ,CAEA,OAAIP,EAAM,QAAUN,EAAK,OAAS6B,EAAQ,MAAQ,GAC1C5B,GACAA,EAASF,EAAM,GAAG,OAAOC,EAAK,IAAKA,EAAK,IAAMM,EAAM,QAAQ,EAAE,eAAe,CAAC,EAC3E,IAEJ,EACX,EASM6B,GAAoB,CAACpC,EAAOE,EAAUoB,IAAS,CACjD,GAAI,CAAE,MAAAC,EAAO,MAAAC,CAAM,EAAIxB,EAAM,UAAWC,EAAOsB,EAC/C,GAAI,CAACC,EACD,MAAO,GACX,GAAID,EAAM,OAAO,YAAa,CAC1B,GAAID,EAAO,CAACA,EAAK,eAAe,UAAWtB,CAAK,EAAIuB,EAAM,aAAeA,EAAM,OAAO,QAAQ,KAC1F,MAAO,GACXtB,EAAO+B,GAAaT,CAAK,CAC7B,CACA,IAAIN,EAAOhB,GAAQA,EAAK,UACxB,MAAI,CAACgB,GAAQ,CAACS,GAAc,aAAaT,CAAI,EAClC,IACPf,GACAA,EAASF,EAAM,GAAG,aAAa0B,GAAc,OAAO1B,EAAM,IAAKC,EAAK,GAAG,CAAC,EAAE,eAAe,CAAC,EACvF,GACX,EACA,SAAS+B,GAAaL,EAAM,CACxB,GAAI,CAACA,EAAK,OAAO,KAAK,KAAK,UACvB,QAASC,EAAID,EAAK,MAAQ,EAAGC,GAAK,EAAGA,IAAK,CACtC,IAAIS,EAASV,EAAK,KAAKC,CAAC,EACxB,GAAID,EAAK,MAAMC,CAAC,EAAI,EAAIS,EAAO,WAC3B,OAAOV,EAAK,IAAI,QAAQA,EAAK,MAAMC,EAAI,CAAC,CAAC,EAC7C,GAAIS,EAAO,KAAK,KAAK,UACjB,KACR,CACJ,OAAO,IACX,CAgEA,IAAMC,GAAgB,CAACC,EAAOC,IAAa,CACvC,GAAI,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIH,EAAM,UAC/B,MAAI,CAACE,EAAM,OAAO,KAAK,KAAK,MAAQ,CAACA,EAAM,WAAWC,CAAO,EAClD,IACPF,GACAA,EAASD,EAAM,GAAG,WAAW;AAAA,CAAI,EAAE,eAAe,CAAC,EAChD,GACX,EACA,SAASI,GAAeC,EAAO,CAC3B,QAASC,EAAI,EAAGA,EAAID,EAAM,UAAWC,IAAK,CACtC,GAAI,CAAE,KAAAC,CAAK,EAAIF,EAAM,KAAKC,CAAC,EAC3B,GAAIC,EAAK,aAAe,CAACA,EAAK,iBAAiB,EAC3C,OAAOA,CACf,CACA,OAAO,IACX,CAMA,IAAMC,GAAW,CAACR,EAAOC,IAAa,CAClC,GAAI,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIH,EAAM,UAC/B,GAAI,CAACE,EAAM,OAAO,KAAK,KAAK,MAAQ,CAACA,EAAM,WAAWC,CAAO,EACzD,MAAO,GACX,IAAIM,EAAQP,EAAM,KAAK,EAAE,EAAGQ,EAAQR,EAAM,WAAW,EAAE,EAAGK,EAAOH,GAAeK,EAAM,eAAeC,CAAK,CAAC,EAC3G,GAAI,CAACH,GAAQ,CAACE,EAAM,eAAeC,EAAOA,EAAOH,CAAI,EACjD,MAAO,GACX,GAAIN,EAAU,CACV,IAAIU,EAAMT,EAAM,MAAM,EAAGU,EAAKZ,EAAM,GAAG,YAAYW,EAAKA,EAAKJ,EAAK,cAAc,CAAC,EACjFK,EAAG,aAAaC,GAAU,KAAKD,EAAG,IAAI,QAAQD,CAAG,EAAG,CAAC,CAAC,EACtDV,EAASW,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,EAKME,GAAsB,CAACd,EAAOC,IAAa,CAC7C,IAAIc,EAAMf,EAAM,UAAW,CAAE,MAAAgB,EAAO,IAAAC,CAAI,EAAIF,EAC5C,GAAIA,aAAeG,IAAgBF,EAAM,OAAO,eAAiBC,EAAI,OAAO,cACxE,MAAO,GACX,IAAIV,EAAOH,GAAea,EAAI,OAAO,eAAeA,EAAI,WAAW,CAAC,CAAC,EACrE,GAAI,CAACV,GAAQ,CAACA,EAAK,YACf,MAAO,GACX,GAAIN,EAAU,CACV,IAAIkB,GAAQ,CAACH,EAAM,cAAgBC,EAAI,MAAM,EAAIA,EAAI,OAAO,WAAaD,EAAQC,GAAK,IAClFL,EAAKZ,EAAM,GAAG,OAAOmB,EAAMZ,EAAK,cAAc,CAAC,EACnDK,EAAG,aAAaQ,GAAc,OAAOR,EAAG,IAAKO,EAAO,CAAC,CAAC,EACtDlB,EAASW,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,EAKMS,GAAiB,CAACrB,EAAOC,IAAa,CACxC,GAAI,CAAE,QAAAqB,CAAQ,EAAItB,EAAM,UACxB,GAAI,CAACsB,GAAWA,EAAQ,OAAO,QAAQ,KACnC,MAAO,GACX,GAAIA,EAAQ,MAAQ,GAAKA,EAAQ,MAAM,GAAKA,EAAQ,IAAI,EAAE,EAAG,CACzD,IAAIC,EAASD,EAAQ,OAAO,EAC5B,GAAIE,GAASxB,EAAM,IAAKuB,CAAM,EAC1B,OAAItB,GACAA,EAASD,EAAM,GAAG,MAAMuB,CAAM,EAAE,eAAe,CAAC,EAC7C,EAEf,CACA,IAAIE,EAAQH,EAAQ,WAAW,EAAGI,EAASD,GAASE,GAAWF,CAAK,EACpE,OAAIC,GAAU,KACH,IACPzB,GACAA,EAASD,EAAM,GAAG,KAAKyB,EAAOC,CAAM,EAAE,eAAe,CAAC,EACnD,GACX,EAKA,SAASE,GAAaC,EAAW,CAC7B,MAAO,CAAC7B,EAAOC,IAAa,CACxB,GAAI,CAAE,MAAAe,EAAO,IAAAC,CAAI,EAAIjB,EAAM,UAC3B,GAAIA,EAAM,qBAAqB8B,IAAiB9B,EAAM,UAAU,KAAK,QACjE,MAAI,CAACgB,EAAM,cAAgB,CAACQ,GAASxB,EAAM,IAAKgB,EAAM,GAAG,EAC9C,IACPf,GACAA,EAASD,EAAM,GAAG,MAAMgB,EAAM,GAAG,EAAE,eAAe,CAAC,EAChD,IAEX,GAAI,CAACA,EAAM,MACP,MAAO,GACX,IAAIe,EAAQ,CAAC,EACTC,EAAYC,EAAOC,EAAQ,GAAOC,EAAU,GAChD,QAASC,EAAIpB,EAAM,OAAQoB,IAEvB,GADWpB,EAAM,KAAKoB,CAAC,EACd,QAAS,CACdF,EAAQlB,EAAM,IAAIoB,CAAC,GAAKpB,EAAM,KAAOA,EAAM,MAAQoB,GACnDD,EAAUnB,EAAM,MAAMoB,CAAC,GAAKpB,EAAM,KAAOA,EAAM,MAAQoB,GACvDH,EAAQ7B,GAAeY,EAAM,KAAKoB,EAAI,CAAC,EAAE,eAAepB,EAAM,WAAWoB,EAAI,CAAC,CAAC,CAAC,EAChF,IAAIC,EAAYR,GAAaA,EAAUZ,EAAI,OAAQiB,EAAOlB,CAAK,EAC/De,EAAM,QAAQM,IAAcH,GAASD,EAAQ,CAAE,KAAMA,CAAM,EAAI,KAAK,EACpED,EAAaI,EACb,KACJ,KACK,CACD,GAAIA,GAAK,EACL,MAAO,GACXL,EAAM,QAAQ,IAAI,CACtB,CAEJ,IAAInB,EAAKZ,EAAM,IACXA,EAAM,qBAAqBoB,IAAiBpB,EAAM,qBAAqBkB,KACvEN,EAAG,gBAAgB,EACvB,IAAI0B,EAAW1B,EAAG,QAAQ,IAAII,EAAM,GAAG,EACnCuB,EAAMf,GAASZ,EAAG,IAAK0B,EAAUP,EAAM,OAAQA,CAAK,EAKxD,GAJKQ,IACDR,EAAM,CAAC,EAAIE,EAAQ,CAAE,KAAMA,CAAM,EAAI,KACrCM,EAAMf,GAASZ,EAAG,IAAK0B,EAAUP,EAAM,OAAQA,CAAK,GAEpD,CAACQ,EACD,MAAO,GAEX,GADA3B,EAAG,MAAM0B,EAAUP,EAAM,OAAQA,CAAK,EAClC,CAACG,GAASC,GAAWnB,EAAM,KAAKgB,CAAU,EAAE,MAAQC,EAAO,CAC3D,IAAIO,EAAQ5B,EAAG,QAAQ,IAAII,EAAM,OAAOgB,CAAU,CAAC,EAAGS,EAAS7B,EAAG,IAAI,QAAQ4B,CAAK,EAC/EP,GAASjB,EAAM,KAAKgB,EAAa,CAAC,EAAE,eAAeS,EAAO,MAAM,EAAGA,EAAO,MAAM,EAAI,EAAGR,CAAK,GAC5FrB,EAAG,cAAcA,EAAG,QAAQ,IAAII,EAAM,OAAOgB,CAAU,CAAC,EAAGC,CAAK,CACxE,CACA,OAAIhC,GACAA,EAASW,EAAG,eAAe,CAAC,EACzB,EACX,CACJ,CAKA,IAAM8B,GAAad,GAAa,EA8BhC,IAAMe,GAAY,CAACC,EAAOC,KAClBA,GACAA,EAASD,EAAM,GAAG,aAAa,IAAIE,GAAaF,EAAM,GAAG,CAAC,CAAC,EACxD,IAEX,SAASG,GAAeH,EAAOI,EAAMH,EAAU,CAC3C,IAAII,EAASD,EAAK,WAAYE,EAAQF,EAAK,UAAWG,EAAQH,EAAK,MAAM,EACzE,MAAI,CAACC,GAAU,CAACC,GAAS,CAACD,EAAO,KAAK,kBAAkBC,EAAM,IAAI,EACvD,GACP,CAACD,EAAO,QAAQ,MAAQD,EAAK,OAAO,WAAWG,EAAQ,EAAGA,CAAK,GAC3DN,GACAA,EAASD,EAAM,GAAG,OAAOI,EAAK,IAAMC,EAAO,SAAUD,EAAK,GAAG,EAAE,eAAe,CAAC,EAC5E,IAEP,CAACA,EAAK,OAAO,WAAWG,EAAOA,EAAQ,CAAC,GAAK,EAAED,EAAM,aAAeE,GAAQR,EAAM,IAAKI,EAAK,GAAG,GACxF,IACPH,GACAA,EAASD,EAAM,GAAG,KAAKI,EAAK,GAAG,EAAE,eAAe,CAAC,EAC9C,GACX,CACA,SAASK,GAAcT,EAAOU,EAAMT,EAAUU,EAAK,CAC/C,IAAIN,EAASK,EAAK,WAAYJ,EAAQI,EAAK,UAAWE,EAAMC,EACxDC,EAAWT,EAAO,KAAK,KAAK,WAAaC,EAAM,KAAK,KAAK,UAC7D,GAAI,CAACQ,GAAYX,GAAeH,EAAOU,EAAMT,CAAQ,EACjD,MAAO,GACX,IAAIc,EAAc,CAACD,GAAYJ,EAAK,OAAO,WAAWA,EAAK,MAAM,EAAGA,EAAK,MAAM,EAAI,CAAC,EACpF,GAAIK,IACCH,GAAQC,EAAQR,EAAO,eAAeA,EAAO,UAAU,GAAG,aAAaC,EAAM,IAAI,IAClFO,EAAM,UAAUD,EAAK,CAAC,GAAKN,EAAM,IAAI,EAAE,SAAU,CACjD,GAAIL,EAAU,CACV,IAAIe,EAAMN,EAAK,IAAMJ,EAAM,SAAUW,EAAOC,EAAS,MACrD,QAASC,EAAIP,EAAK,OAAS,EAAGO,GAAK,EAAGA,IAClCF,EAAOC,EAAS,KAAKN,EAAKO,CAAC,EAAE,OAAO,KAAMF,CAAI,CAAC,EACnDA,EAAOC,EAAS,KAAKb,EAAO,KAAKY,CAAI,CAAC,EACtC,IAAIG,EAAKpB,EAAM,GAAG,KAAK,IAAIqB,GAAkBX,EAAK,IAAM,EAAGM,EAAKN,EAAK,IAAKM,EAAK,IAAIM,EAAML,EAAM,EAAG,CAAC,EAAGL,EAAK,OAAQ,EAAI,CAAC,EACpHW,EAAUH,EAAG,IAAI,QAAQJ,EAAM,EAAIJ,EAAK,MAAM,EAC9CW,EAAQ,WAAaA,EAAQ,UAAU,MAAQlB,EAAO,MACtDG,GAAQY,EAAG,IAAKG,EAAQ,GAAG,GAC3BH,EAAG,KAAKG,EAAQ,GAAG,EACvBtB,EAASmB,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,CACA,IAAII,EAAWlB,EAAM,KAAK,KAAK,WAAcK,EAAM,GAAKG,EAAY,KAAOW,GAAU,SAASf,EAAM,CAAC,EACjGgB,EAAQF,GAAYA,EAAS,MAAM,WAAWA,EAAS,GAAG,EAAGG,EAASD,GAASE,GAAWF,CAAK,EACnG,GAAIC,GAAU,MAAQA,GAAUjB,EAAK,MACjC,OAAIT,GACAA,EAASD,EAAM,GAAG,KAAK0B,EAAOC,CAAM,EAAE,eAAe,CAAC,EACnD,GAEX,GAAIZ,GAAec,GAAYvB,EAAO,QAAS,EAAI,GAAKuB,GAAYxB,EAAQ,KAAK,EAAG,CAChF,IAAIyB,EAAKzB,EAAQY,EAAO,CAAC,EACzB,KACIA,EAAK,KAAKa,CAAE,EACR,CAAAA,EAAG,aAEPA,EAAKA,EAAG,UAEZ,IAAIC,EAAYzB,EAAO0B,EAAa,EACpC,KAAO,CAACD,EAAU,YAAaA,EAAYA,EAAU,WACjDC,IACJ,GAAIF,EAAG,WAAWA,EAAG,WAAYA,EAAG,WAAYC,EAAU,OAAO,EAAG,CAChE,GAAI9B,EAAU,CACV,IAAIe,EAAME,EAAS,MACnB,QAASC,EAAIF,EAAK,OAAS,EAAGE,GAAK,EAAGA,IAClCH,EAAME,EAAS,KAAKD,EAAKE,CAAC,EAAE,KAAKH,CAAG,CAAC,EACzC,IAAII,EAAKpB,EAAM,GAAG,KAAK,IAAIqB,GAAkBX,EAAK,IAAMO,EAAK,OAAQP,EAAK,IAAMJ,EAAM,SAAUI,EAAK,IAAMsB,EAAYtB,EAAK,IAAMJ,EAAM,SAAW0B,EAAY,IAAIV,EAAMN,EAAKC,EAAK,OAAQ,CAAC,EAAG,EAAG,EAAI,CAAC,EACvMhB,EAASmB,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,CACJ,CACA,MAAO,EACX,CACA,SAASa,GAAoBC,EAAM,CAC/B,OAAO,SAAUlC,EAAOC,EAAU,CAC9B,IAAIkC,EAAMnC,EAAM,UAAWI,EAAO8B,EAAO,EAAIC,EAAI,MAAQA,EAAI,IACzDC,EAAQhC,EAAK,MACjB,KAAOA,EAAK,KAAKgC,CAAK,EAAE,UAAU,CAC9B,GAAI,CAACA,EACD,MAAO,GACXA,GACJ,CACA,OAAKhC,EAAK,KAAKgC,CAAK,EAAE,aAElBnC,GACAA,EAASD,EAAM,GAAG,aAAaqC,GAAc,OAAOrC,EAAM,IAAKkC,EAAO,EAAI9B,EAAK,MAAMgC,CAAK,EAAIhC,EAAK,IAAIgC,CAAK,CAAC,CAAC,CAAC,EAC5G,IAHI,EAIf,CACJ,CAIA,IAAME,GAAuBL,GAAoB,EAAE,EAI7CM,GAAqBN,GAAoB,CAAC,EAMhD,SAASO,GAAOC,EAAUC,EAAQ,KAAM,CACpC,OAAO,SAAU1C,EAAOC,EAAU,CAC9B,GAAI,CAAE,MAAA0C,EAAO,IAAAC,CAAI,EAAI5C,EAAM,UACvB0B,EAAQiB,EAAM,WAAWC,CAAG,EAAGC,EAAWnB,GAASoB,GAAapB,EAAOe,EAAUC,CAAK,EAC1F,OAAKG,GAED5C,GACAA,EAASD,EAAM,GAAG,KAAK0B,EAAOmB,CAAQ,EAAE,eAAe,CAAC,EACrD,IAHI,EAIf,CACJ,CAKA,SAASE,GAAaN,EAAUC,EAAQ,KAAM,CAC1C,OAAO,SAAU1C,EAAOC,EAAU,CAC9B,IAAI+C,EAAa,GACjB,QAAS,EAAI,EAAG,EAAIhD,EAAM,UAAU,OAAO,QAAU,CAACgD,EAAY,IAAK,CACnE,GAAI,CAAE,MAAO,CAAE,IAAKC,CAAK,EAAG,IAAK,CAAE,IAAKC,CAAG,CAAE,EAAIlD,EAAM,UAAU,OAAO,CAAC,EACzEA,EAAM,IAAI,aAAaiD,EAAMC,EAAI,CAACC,EAAMC,IAAQ,CAC5C,GAAIJ,EACA,MAAO,GACX,GAAI,GAACG,EAAK,aAAeA,EAAK,UAAUV,EAAUC,CAAK,GAEvD,GAAIS,EAAK,MAAQV,EACbO,EAAa,OAEZ,CACD,IAAI5C,EAAOJ,EAAM,IAAI,QAAQoD,CAAG,EAAG7C,EAAQH,EAAK,MAAM,EACtD4C,EAAa5C,EAAK,OAAO,eAAeG,EAAOA,EAAQ,EAAGkC,CAAQ,CACtE,CACJ,CAAC,CACL,CACA,GAAI,CAACO,EACD,MAAO,GACX,GAAI/C,EAAU,CACV,IAAImB,EAAKpB,EAAM,GACf,QAASmB,EAAI,EAAGA,EAAInB,EAAM,UAAU,OAAO,OAAQmB,IAAK,CACpD,GAAI,CAAE,MAAO,CAAE,IAAK8B,CAAK,EAAG,IAAK,CAAE,IAAKC,CAAG,CAAE,EAAIlD,EAAM,UAAU,OAAOmB,CAAC,EACzEC,EAAG,aAAa6B,EAAMC,EAAIT,EAAUC,CAAK,CAC7C,CACAzC,EAASmB,EAAG,eAAe,CAAC,CAChC,CACA,MAAO,EACX,CACJ,CACA,SAASiC,GAAYC,EAAKC,EAAQC,EAAMC,EAAY,CAChD,QAAStC,EAAI,EAAGA,EAAIoC,EAAO,OAAQpC,IAAK,CACpC,GAAI,CAAE,MAAAwB,EAAO,IAAAC,CAAI,EAAIW,EAAOpC,CAAC,EACzBuC,EAAMf,EAAM,OAAS,EAAIW,EAAI,eAAiBA,EAAI,KAAK,eAAeE,CAAI,EAAI,GAMlF,GALAF,EAAI,aAAaX,EAAM,IAAKC,EAAI,IAAK,CAACO,EAAMC,IAAQ,CAChD,GAAIM,GAAO,CAACD,GAAcN,EAAK,QAAUA,EAAK,UAAYC,GAAOT,EAAM,KAAOS,EAAMD,EAAK,UAAYP,EAAI,IACrG,MAAO,GACXc,EAAMP,EAAK,eAAiBA,EAAK,KAAK,eAAeK,CAAI,CAC7D,CAAC,EACGE,EACA,MAAO,EACf,CACA,MAAO,EACX,CACA,SAASC,GAAkBJ,EAAQ,CAC/B,IAAIK,EAAS,CAAC,EACd,QAASzC,EAAI,EAAGA,EAAIoC,EAAO,OAAQpC,IAAK,CACpC,GAAI,CAAE,MAAAwB,EAAO,IAAAC,CAAI,EAAIW,EAAOpC,CAAC,EAC7BwB,EAAM,IAAI,aAAaA,EAAM,IAAKC,EAAI,IAAK,CAACO,EAAMC,IAAQ,CACtD,GAAID,EAAK,QAAUA,EAAK,QAAQ,MAAQA,EAAK,UAAYC,GAAOT,EAAM,KAAOS,EAAMD,EAAK,UAAYP,EAAI,IACpG,OAAIQ,EAAM,EAAIT,EAAM,KAChBiB,EAAO,KAAK,IAAIC,GAAelB,EAAOA,EAAM,IAAI,QAAQS,EAAM,CAAC,CAAC,CAAC,EACrET,EAAQA,EAAM,IAAI,QAAQS,EAAM,EAAID,EAAK,QAAQ,IAAI,EAC9C,EAEf,CAAC,EACGR,EAAM,IAAMC,EAAI,KAChBgB,EAAO,KAAK,IAAIC,GAAelB,EAAOC,CAAG,CAAC,CAClD,CACA,OAAOgB,CACX,CAUA,SAASE,GAAWC,EAAUrB,EAAQ,KAAMsB,EAAS,CACjD,IAAIC,GAAqBD,GAAWA,EAAQ,qBAAuB,GAC/DP,GAAcO,GAAWA,EAAQ,oBAAsB,GACvDE,EAAY,EAAEF,GAAWA,EAAQ,mBACrC,OAAO,SAAUhE,EAAOC,EAAU,CAC9B,GAAI,CAAE,MAAAkE,EAAO,QAAAC,EAAS,OAAAb,CAAO,EAAIvD,EAAM,UACvC,GAAKmE,GAAS,CAACC,GAAY,CAACf,GAAYrD,EAAM,IAAKuD,EAAQQ,EAAUN,CAAU,EAC3E,MAAO,GACX,GAAIxD,EACA,GAAImE,EACIL,EAAS,QAAQ/D,EAAM,aAAeoE,EAAQ,MAAM,CAAC,EACrDnE,EAASD,EAAM,GAAG,iBAAiB+D,CAAQ,CAAC,EAE5C9D,EAASD,EAAM,GAAG,cAAc+D,EAAS,OAAOrB,CAAK,CAAC,CAAC,MAE1D,CACD,IAAI2B,EAAKjD,EAAKpB,EAAM,GACfyD,IACDF,EAASI,GAAkBJ,CAAM,GACjCU,EACAI,EAAM,CAACd,EAAO,KAAKe,GAAKtE,EAAM,IAAI,aAAasE,EAAE,MAAM,IAAKA,EAAE,IAAI,IAAKP,CAAQ,CAAC,EAGhFM,EAAM,CAACd,EAAO,MAAMe,GAAK,CACrB,IAAIC,EAAU,GACd,OAAAnD,EAAG,IAAI,aAAakD,EAAE,MAAM,IAAKA,EAAE,IAAI,IAAK,CAACnB,EAAMC,EAAKoB,IAAW,CAC/D,GAAID,EACA,MAAO,GACXA,EAAU,CAACR,EAAS,QAAQZ,EAAK,KAAK,GAAK,CAAC,CAACqB,GAAUA,EAAO,KAAK,eAAeT,CAAQ,GACtF,EAAEZ,EAAK,QAAU,QAAQ,KAAKA,EAAK,YAAY,KAAK,IAAI,EAAGmB,EAAE,MAAM,IAAMlB,CAAG,EAAG,KAAK,IAAID,EAAK,SAAUmB,EAAE,IAAI,IAAMlB,CAAG,CAAC,CAAC,EAChI,CAAC,EACM,CAACmB,CACZ,CAAC,EAEL,QAASpD,EAAI,EAAGA,EAAIoC,EAAO,OAAQpC,IAAK,CACpC,GAAI,CAAE,MAAAwB,EAAO,IAAAC,CAAI,EAAIW,EAAOpC,CAAC,EAC7B,GAAI,CAACkD,EACDjD,EAAG,WAAWuB,EAAM,IAAKC,EAAI,IAAKmB,CAAQ,MAEzC,CACD,IAAId,EAAON,EAAM,IAAKO,EAAKN,EAAI,IAAK6B,EAAQ9B,EAAM,UAAW3B,EAAM4B,EAAI,WACnE8B,EAAaR,GAAaO,GAASA,EAAM,OAAS,OAAO,KAAKA,EAAM,IAAI,EAAE,CAAC,EAAE,OAAS,EACtFE,EAAWT,GAAalD,GAAOA,EAAI,OAAS,OAAO,KAAKA,EAAI,IAAI,EAAE,CAAC,EAAE,OAAS,EAC9EiC,EAAOyB,EAAaxB,IACpBD,GAAQyB,EACRxB,GAAMyB,GAEVvD,EAAG,QAAQ6B,EAAMC,EAAIa,EAAS,OAAOrB,CAAK,CAAC,CAC/C,CACJ,CACAzC,EAASmB,EAAG,eAAe,CAAC,CAChC,CAEJ,MAAO,EACX,CACJ,CAwDA,SAASwD,MAAiBC,EAAU,CAChC,OAAO,SAAUC,EAAOC,EAAUC,EAAM,CACpC,QAASC,EAAI,EAAGA,EAAIJ,EAAS,OAAQI,IACjC,GAAIJ,EAASI,CAAC,EAAEH,EAAOC,EAAUC,CAAI,EACjC,MAAO,GACf,MAAO,EACX,CACJ,CACA,IAAIE,GAAYN,GAAcO,GAAiBC,GAAcC,EAAkB,EAC3EC,GAAMV,GAAcO,GAAiBI,GAAaC,EAAiB,EAajEC,GAAe,CACjB,MAASb,GAAcc,GAAeC,GAAqBC,GAAgBC,EAAU,EACrF,YAAaC,GACb,UAAaZ,GACb,gBAAiBA,GACjB,kBAAmBA,GACnB,OAAUI,GACV,aAAcA,GACd,QAASS,EACb,EAOMC,GAAgB,CAClB,SAAUP,GAAa,UACvB,gBAAiBA,GAAa,eAAe,EAC7C,SAAUA,GAAa,OACvB,qBAAsBA,GAAa,YAAY,EAC/C,aAAcA,GAAa,YAAY,EACvC,QAASA,GAAa,YAAY,EAClC,SAAUQ,GACV,SAAUC,EACd,EACA,QAASC,KAAOV,GACZO,GAAcG,CAAG,EAAIV,GAAaU,CAAG,EACzC,IAAMC,GAAM,OAAO,UAAa,IAAc,qBAAqB,KAAK,UAAU,QAAQ,EAEpF,OAAO,GAAM,KAAe,GAAG,SAAW,GAAG,SAAS,GAAK,SAAW,GAMtEC,GAAaD,GAAMJ,GAAgBP,GCt0BzC,IAAMa,GAAN,KAAgB,CAiBZ,YAIAC,EAAOC,EAASC,EAAU,CAAC,EAAG,CAC1B,KAAK,MAAQF,EACb,KAAK,MAAQA,EACb,KAAK,QAAU,OAAOC,GAAW,SAAWE,GAAcF,CAAO,EAAIA,EACrE,KAAK,SAAWC,EAAQ,WAAa,GACrC,KAAK,OAASA,EAAQ,QAAU,GAChC,KAAK,WAAaA,EAAQ,aAAe,EAC7C,CACJ,EACA,SAASC,GAAcC,EAAQ,CAC3B,OAAO,SAAUC,EAAOL,EAAOM,EAAOC,EAAK,CACvC,IAAIC,EAASJ,EACb,GAAIJ,EAAM,CAAC,EAAG,CACV,IAAIS,EAAST,EAAM,CAAC,EAAE,YAAYA,EAAM,CAAC,CAAC,EAC1CQ,GAAUR,EAAM,CAAC,EAAE,MAAMS,EAAST,EAAM,CAAC,EAAE,MAAM,EACjDM,GAASG,EACT,IAAIC,EAASJ,EAAQC,EACjBG,EAAS,IACTF,EAASR,EAAM,CAAC,EAAE,MAAMS,EAASC,EAAQD,CAAM,EAAID,EACnDF,EAAQC,EAEhB,CACA,OAAOF,EAAM,GAAG,WAAWG,EAAQF,EAAOC,CAAG,CACjD,CACJ,CA+EA,IAAMI,GAAgB,CAACC,EAAOC,IAAa,CACvC,IAAIC,EAAUF,EAAM,QACpB,QAASG,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAAK,CACrC,IAAIC,EAASF,EAAQC,CAAC,EAAGE,EACzB,GAAID,EAAO,KAAK,eAAiBC,EAAWD,EAAO,SAASJ,CAAK,GAAI,CACjE,GAAIC,EAAU,CACV,IAAIK,EAAKN,EAAM,GAAIO,EAASF,EAAS,UACrC,QAASG,EAAID,EAAO,MAAM,OAAS,EAAGC,GAAK,EAAGA,IAC1CF,EAAG,KAAKC,EAAO,MAAMC,CAAC,EAAE,OAAOD,EAAO,KAAKC,CAAC,CAAC,CAAC,EAClD,GAAIH,EAAS,KAAM,CACf,IAAII,EAAQH,EAAG,IAAI,QAAQD,EAAS,IAAI,EAAE,MAAM,EAChDC,EAAG,YAAYD,EAAS,KAAMA,EAAS,GAAIL,EAAM,OAAO,KAAKK,EAAS,KAAMI,CAAK,CAAC,CACtF,MAEIH,EAAG,OAAOD,EAAS,KAAMA,EAAS,EAAE,EAExCJ,EAASK,CAAE,CACf,CACA,MAAO,EACX,CACJ,CACA,MAAO,EACX,EAKMI,GAAS,IAAIC,GAAU,MAAO,SAAK,CAAE,WAAY,EAAM,CAAC,EAIxDC,GAAW,IAAID,GAAU,UAAW,SAAK,CAAE,WAAY,EAAM,CAAC,EAI9DE,GAAkB,IAAIF,GAAU,uCAAwC,SAAK,CAAE,WAAY,EAAM,CAAC,EAIlGG,GAAmB,IAAIH,GAAU,KAAM,SAAK,CAAE,WAAY,EAAM,CAAC,EAIjEI,GAAkB,IAAIJ,GAAU,uCAAwC,SAAK,CAAE,WAAY,EAAM,CAAC,EAIlGK,GAAmB,IAAIL,GAAU,KAAM,SAAK,CAAE,WAAY,EAAM,CAAC,EAuBvE,SAASM,GAAkBC,EAAQC,EAAUC,EAAW,KAAMC,EAAe,CACzE,OAAO,IAAIC,GAAUJ,EAAQ,CAACK,EAAOC,EAAOC,EAAOC,IAAQ,CACvD,IAAIC,EAAQP,aAAoB,SAAWA,EAASI,CAAK,EAAIJ,EACzDQ,EAAKL,EAAM,GAAG,OAAOE,EAAOC,CAAG,EAC/BG,EAASD,EAAG,IAAI,QAAQH,CAAK,EAAGK,EAAQD,EAAO,WAAW,EAAGE,EAAWD,GAASE,GAAaF,EAAOX,EAAUQ,CAAK,EACxH,GAAI,CAACI,EACD,OAAO,KACXH,EAAG,KAAKE,EAAOC,CAAQ,EACvB,IAAIE,EAASL,EAAG,IAAI,QAAQH,EAAQ,CAAC,EAAE,WACvC,OAAIQ,GAAUA,EAAO,MAAQd,GAAYe,GAAQN,EAAG,IAAKH,EAAQ,CAAC,IAC7D,CAACJ,GAAiBA,EAAcG,EAAOS,CAAM,IAC9CL,EAAG,KAAKH,EAAQ,CAAC,EACdG,CACX,CAAC,CACL,CASA,SAASO,GAAuBjB,EAAQC,EAAUC,EAAW,KAAM,CAC/D,OAAO,IAAIE,GAAUJ,EAAQ,CAACK,EAAOC,EAAOC,EAAOC,IAAQ,CACvD,IAAIG,EAASN,EAAM,IAAI,QAAQE,CAAK,EAChCE,EAAQP,aAAoB,SAAWA,EAASI,CAAK,EAAIJ,EAC7D,OAAKS,EAAO,KAAK,EAAE,EAAE,eAAeA,EAAO,MAAM,EAAE,EAAGA,EAAO,WAAW,EAAE,EAAGV,CAAQ,EAE9EI,EAAM,GACR,OAAOE,EAAOC,CAAG,EACjB,aAAaD,EAAOA,EAAON,EAAUQ,CAAK,EAHpC,IAIf,CAAC,CACL,CCvOA,IAAMS,GAAM,OAAO,UAAa,IAAc,UAAY,KACpDC,GAAM,OAAO,SAAY,IAAc,SAAW,KAClDC,GAASF,IAAOA,GAAI,WAAc,GAElCG,GAAU,cAAc,KAAKD,EAAK,EAClCE,GAAY,UAAU,KAAKF,EAAK,EAChCG,GAAU,wCAAwC,KAAKH,EAAK,EAErDI,GAAK,CAAC,EAAEF,IAAaC,IAAWF,IAChCI,GAAaH,GACrB,SAAyD,aAC1DC,GACE,CAACA,GAAQ,CAAC,EACVF,GACE,CAACA,GAAQ,CAAC,EACV,EACKK,GAAQ,CAACF,IAAM,gBAAgB,KAAKJ,EAAK,EACzCO,GACXD,IAAS,EAAE,iBAAiB,KAAKN,EAAK,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EAEhDQ,GAAU,CAACJ,IAAM,gBAAgB,KAAKJ,EAAK,EACpCS,GAAS,CAAC,CAACD,GACXE,GAAiBF,GAAU,CAACA,GAAQ,CAAC,EAAK,EAC1CG,GAAS,CAACP,IAAM,CAAC,CAACN,IAAO,iBAAiB,KAAKA,GAAI,MAAM,EAEzDc,GACXD,KAAW,cAAc,KAAKX,EAAK,GAAM,CAAC,CAACF,IAAOA,GAAI,eAAiB,GAC5De,GAAMD,KAAQd,GAAM,MAAM,KAAKA,GAAI,QAAQ,EAAI,IAC/CgB,GAAU,aAAa,KAAKd,EAAK,EACjCe,GACX,CAAC,CAAChB,IAAO,wBAAyBA,GAAI,gBAAgB,MAC3CiB,GAAiBD,GAC1B,EAAE,uBAAuB,KAAK,UAAU,SAAS,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EAC/D,EC/BJ,SAASE,GACPC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,GAAIL,EAAK,UAAW,MAAO,GAC3B,IAAMM,EAAQN,EAAK,MACbO,EAAQD,EAAM,IAAI,QAAQL,CAAI,EACpC,GAAIM,EAAM,OAAO,KAAK,KAAK,KAAM,MAAO,GACxC,IAAMC,EACJD,EAAM,OAAO,YACX,KAAK,IAAI,EAAGA,EAAM,aAAe,GAAG,EACpCA,EAAM,aACN,OACA,QAAA,EACEJ,EACN,QAASM,KAAYL,EAAO,CAC1B,IAAMM,EAAUD,EAUVE,EAAQD,EAAQ,MAAM,KAAKF,CAAU,EACrCI,EACJD,GACAA,EAAM,CAAC,GACPD,EAAQ,QAAQJ,EAAOK,EAAOV,GAAQU,EAAM,CAAC,EAAE,OAASR,EAAK,QAASD,CAAE,EAC1E,GAAKU,EACL,OAAIF,EAAQ,WAAa,IACvBE,EAAG,QAAQP,EAAQ,CAAE,UAAWO,EAAI,KAAAX,EAAM,GAAAC,EAAI,KAAAC,CAAA,CAAM,EACtDH,EAAK,SAASY,CAAE,EACT,EACT,CACA,MAAO,EACT,CAEO,IAAMC,GAAsB,IAAIC,GAAU,4BAA4B,EACtE,SAASC,GAAiB,CAAE,MAAAX,CAAA,EAAyC,CAC1E,IAAMC,EAAiB,IAAIW,GAAO,CAChC,IAAKH,GACL,aAAc,GAEd,MAAO,CACL,MAAO,CACL,OAAO,IACT,EACA,MAA2BD,EAAIK,EAAM,CACnC,IAAMC,EAASN,EAAG,QAAQ,IAAI,EAC9B,OAAIM,IACGN,EAAG,cAAgBA,EAAG,WAAa,KAAOK,EACnD,CAAA,EAEF,MAAO,CACL,gBAAgBjB,EAAMC,EAAMC,EAAIC,EAAM,CACpC,OAAOJ,GAAIC,EAAMC,EAAMC,EAAIC,EAAMC,EAAOC,CAAM,CAChD,EACA,gBAAiB,CACf,eAAiBL,IACf,WAAW,IAAM,CACf,GAAM,CAAE,QAAAmB,CAAA,EAAYnB,EAAK,MAAM,UAC3BmB,GAAApB,GAAaC,EAAMmB,EAAQ,IAAKA,EAAQ,IAAK,GAAIf,EAAOC,CAAM,CACpE,CAAC,EACM,IAET,QAAS,CAACL,EAAMoB,IASV,EAAEC,IAAWC,IAAWF,EAAwB,MAAQ,UAExDpB,EAAK,UAAkB,GAEzBA,EAAK,SAAS,gBAAkBuB,GAC9BA,EAAEvB,EAAMoB,CAAsB,CAAA,GAGhCA,EAAM,eAAA,EACC,IAEF,EACT,EAEF,cAAcpB,EAAMoB,EAAO,CACzB,GAAIA,EAAM,MAAQ,QAAS,MAAO,GAClC,GAAM,CAAE,QAAAD,CAAA,EAAYnB,EAAK,MAAM,UAC/B,OAAImB,EACKpB,GAAIC,EAAMmB,EAAQ,IAAKA,EAAQ,IAAK;EAAMf,EAAOC,CAAM,EACzD,EACT,CAAA,CACF,CACD,EACD,OAAOA,CACT,CC1GO,SAASmB,GACdC,EACAC,EACAC,EAAmB,CAAA,EACR,CACX,OAAO,IAAIC,GAAUH,EAAQ,CAACnB,EAAOK,EAAOkB,EAAOC,IAAQ,CAX7D,IAAAC,EAAAC,EAAAC,EAAAC,EAYI,GAAM,CAAE,GAAAtB,CAAA,EAAON,EACT6B,EAAcxB,EAAM,OAEtByB,EAAQzB,EAAMwB,EAAc,CAAC,EAC7BE,EAAY1B,EAAM,CAAC,EACnB2B,EAAsC,CAAA,EAEtCC,EAEEC,EAAqB,CACzB,MAAAJ,EACA,UAAAC,EACA,MAAAR,EACA,IAAAC,CAAA,EAGIW,GAASV,EAAAJ,EAAQ,iBAAR,KAAA,OAAAI,EAAA,KAAAJ,EAAyBa,CAAA,EAMxC,GALA,OAAO,OAAOA,EAAUC,CAAM,EAC5B,CAAE,MAAAL,EAAO,UAAAC,EAAW,MAAAR,EAAO,IAAAC,CAAA,EAAQU,EAEjCH,IAAc,MAEdD,GAAO,KAAA,IAAW,GAAI,OAAO,KAEjC,GAAIA,EAAO,CACT,IAAMM,EAAcL,EAAU,OAAO,IAAI,EACnCM,EAAYd,EAAQQ,EAAU,QAAQD,CAAK,EAC3CQ,EAAUD,EAAYP,EAAM,OAElCE,GAAqBN,EAAApB,EAAG,cAAH,KAAAoB,EAAkB,CAAA,EAEnCY,EAAUd,GAAKlB,EAAG,OAAOgC,EAASd,CAAG,EAErCa,EAAYd,GAAOjB,EAAG,OAAOiB,EAAQa,EAAaC,CAAS,EAE/DJ,EAAUV,EAAQa,EAAcN,EAAM,OAEtC,IAAMS,GAAQZ,EAAAN,EAAQ,UAAR,KAAA,OAAAM,EAAA,KAAAN,EAAkBhB,CAAA,EAEhCC,EAAG,QAAQiB,EAAOU,EAASb,EAAS,OAAOmB,CAAK,CAAC,EACjDjC,EAAG,eAAe0B,CAAkB,GAEpCJ,EAAAP,EAAQ,iBAAR,MAAAO,EAAA,KAAAP,EAAyB,CAAE,MAAAhB,EAAO,MAAAkB,EAAO,IAAAC,EAAK,GAAAlB,CAAA,CAAG,CACnD,CAEA,OAAOA,CACT,CAAC,CACH,CGxDO,SAASkC,GAAQC,EAA8B,CACpD,OAAO,OAAO,OAAO,OAAO,OAAOA,CAAE,EAAGA,CAAE,EAAE,QAAQ,KAAK,IAAA,CAAK,CAChE,CAEO,SAASC,GACdC,EACAC,EACA,CACA,OACG,MAAM,QAAQD,CAAQ,GAAKA,EAAS,SAASC,EAAK,IAAI,GACvDA,EAAK,OAASD,CAElB,CAEO,SAASE,GAAgBC,EAAiC,CAC/D,GAAIA,EAAM,QAAQ,aAAe,EAAG,CAClC,IAAMF,EAAOE,EAAM,QAAQ,WAC3B,GAAIF,GAAM,KAAK,OAAS,QAAUA,EAAK,MAAM,SAAW,EAAG,OAAOA,EAElE,GAAIA,GAAM,KAAK,OAAS,aAAeA,EAAK,aAAe,EAAG,CAC5D,IAAMG,EAAQH,EAAK,WACnB,GAAIG,GAAO,KAAK,OAAS,QAAUA,EAAM,MAAM,SAAW,EAAG,OAAOA,CACtE,CACF,CAEA,MAAO,EACT,CCWO,SAASC,GAAWC,EAAsB,CAC/C,OAAQC,GAAkD,CACxD,QAASC,EAAQD,EAAK,MAAOC,EAAQ,EAAGA,GAAS,EAAG,CAClD,IAAMC,EAAOF,EAAK,KAAKC,CAAK,EAE5B,GAAIF,EAAUG,CAAI,EAAG,CACnB,IAAMC,EAAOH,EAAK,OAAOC,CAAK,EACxBG,EAAKJ,EAAK,MAAMC,CAAK,EAC3B,MAAO,CACL,KAAAE,EACA,GAAAC,EACA,KAAAF,CAAA,CAEJ,CACF,CAGF,CACF,CAEO,SAASG,GAAmBL,EAAmBM,EAAoB,CACxE,OAAOR,GAAYI,GAASA,EAAK,OAASI,CAAQ,EAAEN,CAAI,CAC1D,CC1DO,SAASO,GAAkBC,EAAcC,EAA0B,CACxE,IAAMC,EAASD,EAAO,MAAMD,CAAI,EAEhC,GAAI,CAACE,EAAQ,MAAMC,GAAsB,OAAQH,CAAI,EAErD,OAAOE,CACT,CCIO,SAASE,GAA2BC,EAAsB,CAC/D,OAAQC,GAAsD,CAC5D,QAASC,EAAID,EAAK,MAAOC,EAAI,EAAGA,IAAK,CACnC,IAAMC,EAAOF,EAAK,KAAKC,CAAC,EACxB,GAAIF,EAAUG,CAAI,EAChB,MAAO,CACL,IAAKF,EAAK,OAAOC,CAAC,EAClB,MAAOD,EAAK,MAAMC,CAAC,EACnB,MAAOA,EACP,KAAAC,CAAA,CAGN,CAGF,CACF,CAQO,SAASC,GACdC,EACAC,EACgC,CAChC,GAAI,EAAED,aAAqBE,IAAgB,OAE3C,GAAM,CAAE,KAAAC,EAAM,MAAAC,CAAA,EAAUJ,EACxB,GAAIK,GAAcJ,EAAUE,CAAI,EAC9B,MAAO,CACL,KAAAA,EACA,IAAKC,EAAM,IACX,MAAOA,EAAM,MAAMA,EAAM,KAAK,EAC9B,MAAOA,EAAM,KAAA,CAInB,CAQO,IAAME,GAAsB,CACjCC,EACAJ,IAC8B,CAC9B,GAAM,CAAE,UAAAH,EAAW,IAAAQ,CAAA,EAAQD,EAC3B,GAAIP,aAAqBE,GACvB,MAAO,CACL,QAASF,EAAU,KAAK,OAASG,EACjC,IAAKH,EAAU,KACf,OAAQA,EAAU,IAAA,EAItB,GAAM,CAAE,KAAAS,EAAM,GAAAC,CAAA,EAAOV,EAEjBW,EAAU,GACVC,EAAM,GACNC,EAA2B,KAC/B,OAAAL,EAAI,aAAaC,EAAMC,EAAI,CAACI,EAAGC,IACzBF,EAAe,GACfC,EAAE,OAASX,GACbQ,EAAU,GACVC,EAAMG,EACNF,EAASC,EACF,IAEF,EACR,EAEM,CACL,QAAAH,EACA,IAAAC,EACA,OAAAC,CAAA,CAEJ,EChGO,IAAIG,GAAO,CAChB,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,UACJ,GAAI,QACJ,GAAI,QACJ,GAAI,UACJ,GAAI,MACJ,GAAI,WACJ,GAAI,SACJ,GAAI,IACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,cACJ,GAAI,SACJ,GAAI,SACJ,GAAI,IACJ,GAAI,IACJ,GAAI,OACJ,GAAI,OACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,UACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,MACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,GACP,EAEWC,GAAQ,CACjB,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,GACP,EAEIC,GAAM,OAAO,UAAa,KAAe,MAAM,KAAK,UAAU,QAAQ,EACtEC,GAAK,OAAO,UAAa,KAAe,gDAAgD,KAAK,UAAU,SAAS,EAGpH,IAASC,GAAI,EAAGA,GAAI,GAAIA,KAAKJ,GAAK,GAAKI,EAAC,EAAIJ,GAAK,GAAKI,EAAC,EAAI,OAAOA,EAAC,EAA1D,IAAAA,GAGT,IAASA,GAAI,EAAGA,IAAK,GAAIA,KAAKJ,GAAKI,GAAI,GAAG,EAAI,IAAMA,GAA3C,IAAAA,GAGT,IAASA,GAAI,GAAIA,IAAK,GAAIA,KACxBJ,GAAKI,EAAC,EAAI,OAAO,aAAaA,GAAI,EAAE,EACpCH,GAAMG,EAAC,EAAI,OAAO,aAAaA,EAAC,EAFzB,IAAAA,GAMT,IAASC,MAAQL,GAAWC,GAAM,eAAeI,EAAI,IAAGJ,GAAMI,EAAI,EAAIL,GAAKK,EAAI,GAAtE,IAAAA,GAEF,SAASC,GAAQC,EAAO,CAG7B,IAAIC,EAAYN,IAAOK,EAAM,SAAWA,EAAM,UAAY,CAACA,EAAM,SAAW,CAACA,EAAM,QAC/EJ,IAAMI,EAAM,UAAYA,EAAM,KAAOA,EAAM,IAAI,QAAU,GACzDA,EAAM,KAAO,eACbE,EAAQ,CAACD,GAAaD,EAAM,MAC7BA,EAAM,SAAWN,GAAQD,IAAMO,EAAM,OAAO,GAC7CA,EAAM,KAAO,eAEf,OAAIE,GAAQ,QAAOA,EAAO,UACtBA,GAAQ,QAAOA,EAAO,UAEtBA,GAAQ,SAAQA,EAAO,aACvBA,GAAQ,OAAMA,EAAO,WACrBA,GAAQ,UAASA,EAAO,cACxBA,GAAQ,SAAQA,EAAO,aACpBA,CACT,CCnHA,IAAMC,GAAM,OAAO,UAAa,KAAe,qBAAqB,KAAK,UAAU,QAAQ,EACrFC,GAAU,OAAO,UAAa,KAAe,MAAM,KAAK,UAAU,QAAQ,EAChF,SAASC,GAAiBC,EAAM,CAC5B,IAAIC,EAAQD,EAAK,MAAM,QAAQ,EAAGE,EAASD,EAAMA,EAAM,OAAS,CAAC,EAC7DC,GAAU,UACVA,EAAS,KACb,IAAIC,EAAKC,EAAMC,EAAOC,EACtB,QAASC,EAAI,EAAGA,EAAIN,EAAM,OAAS,EAAGM,IAAK,CACvC,IAAIC,EAAMP,EAAMM,CAAC,EACjB,GAAI,kBAAkB,KAAKC,CAAG,EAC1BF,EAAO,WACF,YAAY,KAAKE,CAAG,EACzBL,EAAM,WACD,sBAAsB,KAAKK,CAAG,EACnCJ,EAAO,WACF,cAAc,KAAKI,CAAG,EAC3BH,EAAQ,WACH,SAAS,KAAKG,CAAG,EAClBX,GACAS,EAAO,GAEPF,EAAO,OAGX,OAAM,IAAI,MAAM,+BAAiCI,CAAG,CAC5D,CACA,OAAIL,IACAD,EAAS,OAASA,GAClBE,IACAF,EAAS,QAAUA,GACnBI,IACAJ,EAAS,QAAUA,GACnBG,IACAH,EAAS,SAAWA,GACjBA,CACX,CACA,SAASO,GAAUC,EAAK,CACpB,IAAIC,EAAO,OAAO,OAAO,IAAI,EAC7B,QAASC,KAAQF,EACbC,EAAKZ,GAAiBa,CAAI,CAAC,EAAIF,EAAIE,CAAI,EAC3C,OAAOD,CACX,CACA,SAASE,GAAUb,EAAMc,EAAOT,EAAQ,GAAM,CAC1C,OAAIS,EAAM,SACNd,EAAO,OAASA,GAChBc,EAAM,UACNd,EAAO,QAAUA,GACjBc,EAAM,UACNd,EAAO,QAAUA,GACjBK,GAASS,EAAM,WACfd,EAAO,SAAWA,GACfA,CACX,CAgCA,SAASe,GAAOC,EAAU,CACtB,OAAO,IAAIC,GAAO,CAAE,MAAO,CAAE,cAAeC,GAAeF,CAAQ,CAAE,CAAE,CAAC,CAC5E,CAMA,SAASE,GAAeF,EAAU,CAC9B,IAAIN,EAAMD,GAAUO,CAAQ,EAC5B,OAAO,SAAUG,EAAML,EAAO,CAC1B,IAAId,EAAOoB,GAAQN,CAAK,EAAGO,EAAUC,EAASZ,EAAIG,GAAUb,EAAMc,CAAK,CAAC,EACxE,GAAIQ,GAAUA,EAAOH,EAAK,MAAOA,EAAK,SAAUA,CAAI,EAChD,MAAO,GAEX,GAAInB,EAAK,QAAU,GAAKA,GAAQ,IAAK,CACjC,GAAIc,EAAM,SAAU,CAGhB,IAAIS,EAAUb,EAAIG,GAAUb,EAAMc,EAAO,EAAK,CAAC,EAC/C,GAAIS,GAAWA,EAAQJ,EAAK,MAAOA,EAAK,SAAUA,CAAI,EAClD,MAAO,EACf,CACA,IAAKL,EAAM,QAAUA,EAAM,SAAWA,EAAM,UAExC,EAAEhB,IAAWgB,EAAM,SAAWA,EAAM,UACnCO,EAAWG,GAAKV,EAAM,OAAO,IAAMO,GAAYrB,EAAM,CAKtD,IAAIyB,EAAWf,EAAIG,GAAUQ,EAAUP,CAAK,CAAC,EAC7C,GAAIW,GAAYA,EAASN,EAAK,MAAOA,EAAK,SAAUA,CAAI,EACpD,MAAO,EACf,CACJ,CACA,MAAO,EACX,CACJ,CC1HA,IAAsBO,GAAtB,KAAyC,CAAA,EAc5BC,GAAb,KAA6D,6BAC3B,CAAA,gBAIvB,KAAK,SAAS,oBAKd,KAAK,SAAS,GAAG,EAAA,YAIlBC,GAAqB,CAC3B,KAAK,IAAA,GAAO,KAAKA,CAAA,aAIXA,GAAwB,CAC9B,KAAK,SAAS,KAAKA,CAAA,kBAIE,CACrB,IAAMC,EAAK,KAAK,SAAS,IAAA,EACzB,GAAI,CAACA,EAAI,MAAMC,GAAA,EAEf,OAAOD,KCzCEE,GAAb,MAAaA,WAA2BL,EAAmB,CACzD,YACEM,EACAC,EACAC,EACA,CACA,MAAA,EAJO,KAAA,KAAAF,EACA,KAAA,QAAAC,EACA,KAAA,MAAAC,EAKT,KAAKN,KAAeO,EAAc,CAChC,KAAK,QAAQ,KAAKP,EAAM,GAAGO,CAAA,EAG7B,KAAwB,CACtB,OAAO,KAAK,QAAQ,IAAA,EAGtB,OAAO,OAAOH,EAAgBC,EAAiBC,EAAe,CAC5D,OAAO,IAAIH,GAAmBC,EAAMC,EAASC,CAAA,ICKpCE,GAAb,cAAiCT,EAAgC,CAK/DU,GAA0BC,GAAK,yBAQdC,EAAgBC,IAAiC,CAChE,IAAMC,EAAQ,IAAI,KAAKF,CAAA,EACvB,OAAQG,IACND,EAAM,IAAID,EAAQE,CAAA,EACXD,EAAM,MAAA,IAKjB,YAAYF,EAAgB,CAC1B,MAAA,mBAuCYX,EAAoBe,EAAoBT,KACpD,KAAK,SAASS,EAAUT,CAAA,EACxB,KAAK,KAAKN,EAAK,QAAA,EAER,qBAKGe,EAAoBT,KAC9B,KAAK,KAAKH,GAAmB,OAAOY,EAAU,CAAA,EAAIT,CAAA,CAAM,EACjD,yBAYS,CAChB,GAAI,CACF,KAAAU,GAAA,QACO,EAAG,CACV,QAAQ,MAAM,CAAA,EAEhB,OAAO,oBAkBED,EAAoBT,EAAeD,IAAqB,CACjE,GAAI,CACF,KAAAY,GAAqBF,EAAUT,EAAOD,CAAA,QAC/Ba,EAAG,CACV,QAAQ,MAAMA,CAAA,EAEhB,OAAO,qBAIGC,EAAoBb,KAG9B,KAAAG,GAFaU,EAAS,OAAOb,CAAA,EAEV,SAAS,KAAAG,EAAA,EACrB,qBAIIU,IACX,KAAAV,GAAcU,EAAS,cAAc,KAAAV,EAAA,EAC9B,mBAIEK,GAAiB,CAC1B,GAAI,CACF,IAAMM,EAAa,KAAK,IAAA,EACxB,GAAI,CAACA,EAAY,MAAMlB,GAAA,EAEvB,IAAMmB,EAAWD,EAAW,IAAA,EACtBE,EAAW,KAAK,OAAO,KAAKR,EAAM,KAAAL,EAAA,EAExC,GAAI,CAACY,EACH,OAAAD,EAAW,KAAKE,CAAA,EACT,KAGT,IAAMC,EAAS,KAAAC,GAAiBH,EAAUC,CAAA,EAC1C,OAAIC,GACFH,EAAW,KAAKG,CAAA,EACT,OAETH,EAAW,KAAKC,EAAUC,CAAA,EACnB,YACAJ,EAAG,CACV,eAAQ,MAAMA,CAAA,EACP,sBAKS,CAClB,IAAIO,EAEJ,GAAGA,EAAM,KAAAT,GAAA,QACF,KAAK,KAAA,GAEZ,OAAOS,cAKDC,EAAuC,CAAA,KAC5C,CAACA,CAAA,EAAO,KAAA,EAAO,QAAS1B,GAAS,KAAA2B,GAAc3B,CAAA,CAAK,EAC9C,qBAIK,KAAK,MAAA,YAGZY,EAAsBgB,IAAqB,CAChD,IAAMC,EAAOjB,EAAO,QAClBA,EAAO,MAAMgB,CAAA,EACbA,CAAA,EAEF,YAAK,KAAKC,CAAA,EAEH,MAnKP,KAAK,OAASlB,EAIhBmB,GAAY9B,GAAgDA,EAAK,OAGjEwB,GAAA,CAAeO,EAASC,IAA8B,CACpD,GAAI,KAAAF,GAAcC,CAAA,GAAM,KAAAD,GAAcE,CAAA,GAAMtB,GAAK,QAAQqB,EAAE,MAAOC,EAAE,KAAA,EAClE,OAAO,KAAK,OAAO,KAAKD,EAAE,KAAOC,EAAE,KAAMD,EAAE,KAAA,GAM/CE,GAAgBjC,GAA4C,CAC1D,IAAMkC,EAAS,OAAO,OAAO,CAC3B,GAAG,KAAK,OAAO,MACf,GAAG,KAAK,OAAO,MAChB,EAAE,KAAMC,GACMA,EAAE,KACH,cAAc,MAAMnC,CAAA,GAGlC,GAAI,CAACkC,EAAQ,MAAME,GAAiBpC,CAAA,EAEpC,OAAOkC,GAITP,GAAY3B,GAAuB,CACjC,IAAMI,EAAO,KAAA6B,GAAkBjC,CAAA,EAClBI,EAAK,KAEb,cAAc,OAAO,KAAMJ,EAAMI,CAAA,GAmBxCY,GAAA,IAAgC,CAC9B,KAAAP,GAAcC,GAAK,KACnB,IAAM2B,EAAU,KAAK,MAAA,EAErB,OAAO,KAAApB,GAAqBoB,EAAQ,KAAMA,EAAQ,MAAOA,EAAQ,OAAA,GAcnEpB,GAAA,CACEF,EACAT,EACAD,IACS,CACT,IAAML,EAAOe,EAAS,cAAcT,EAAOD,EAAS,KAAAI,EAAA,EACpD,GAAI,CAACT,EAAM,MAAMsC,GAAuBvB,EAAUT,EAAOD,CAAA,EAEzD,YAAK,KAAKL,CAAA,EAEHA,IC/HEuC,GAAb,MAAaA,WAA+BzC,EAA2B,CACrE,YACEM,EACAoC,EACAC,EACAC,EAA2B,CAAA,EAC3B,CACA,MAAA,EALO,KAAA,KAAAtC,EACA,KAAA,SAAAoC,EACA,KAAA,MAAAC,EACA,KAAA,MAAAC,aAYD1C,KAAuBO,IAAyB,CACjD,KAAK,WAAU,KAAK,SAAW,CAAA,GAEpC,KAAK,SAAS,KAAKP,EAAM,GAAGO,CAAA,gBAGQ,KAAK,UAAU,IAAA,sBAZnDH,EACAoC,EACAC,EACAC,EAAoB,CAAA,IACjB,IAAIH,GAAuBnC,EAAMoC,EAAUC,EAAOC,CAAA,ICInDC,GAAcR,GAClB,OAAO,UAAU,eAAe,KAAKA,EAAG,MAAA,EAI7BS,GAAb,cAAqC7C,EAGnC,CAEAU,GAA0BC,GAAK,yBAUdC,EAAgBC,IAAqC,CACpE,IAAMC,EAAQ,IAAI,KAAKF,CAAA,EACvB,OAAQN,IACNQ,EAAM,IAAIR,CAAA,EACHQ,EAAM,SAASD,CAAA,IAK1B,YAAYD,EAAgB,CAC1B,MAAA,iBA2HUP,EAAcqC,EAAgBC,KACxC,KAAK,KAAKH,GAAuB,OAAOnC,EAAM,OAAWqC,EAAOC,CAAA,CAAM,EAC/D,0BAyEP,KAAA1B,GAAA,EACO,oBAoBPZ,EACAoC,EACAC,EACAC,KAEA,KAAAzB,GAAqBb,EAAMoC,EAAUC,EAAOC,CAAA,EACrC,qBA8BGG,EAAYzC,EAAcqC,EAAgBC,KACpD,KAAAI,GAAeD,EAAMzC,EAAMqC,EAAOC,CAAA,EAC3B,qBAMIG,IACX,KAAAE,GAAgBF,CAAA,EACT,qBAImB,CAC1B,IAAIpB,EAA2B,KAC/B,GAAGA,EAAM,KAAAT,GAAA,QACF,KAAK,KAAA,GAEZ,OAAOS,aAKDC,GACFiB,GAAWjB,CAAA,GACbA,EAAM,QAAS1B,GAAS,CACtB,KAAA2B,GAAc3B,CAAA,IAET,OAET,KAAA2B,GAAcD,CAAA,EACP,oBAIYd,GACnBA,EAAO,UAAU,KAAK,MAAA,CAAO,WAGxBiB,IACL,KAAK,KAAKA,CAAA,EAEH,MAzSP,KAAK,OAASlB,EAIhBsB,GAAgBjC,GAA2C,CACzD,IAAMkC,EAAS,OAAO,OAAO,CAC3B,GAAG,KAAK,OAAO,MACf,GAAG,KAAK,OAAO,MAChB,EAAE,KAAMC,GACMA,EAAE,KACH,WAAW,MAAMnC,CAAA,GAG/B,GAAI,CAACkC,EAAQ,MAAMc,GAAqBhD,EAAK,IAAA,EAE7C,OAAOkC,GAITe,GAAiBjD,GACF,KAAAiC,GAAkBjC,CAAA,EACb,KACN,WAAW,OAAO,KAAMA,CAAA,EAItCkD,GAAA,CAAiBL,EAAY7C,IACd,KAAAiC,GAAkBY,CAAA,EACb,KACN,WAAW,OAAO,KAAMA,EAAM7C,CAAA,EAI5C2B,GAAY3B,GAAe,CACzB,GAAM,CAAE,MAAAmD,CAAA,EAAUnD,EACZoD,EAAejB,GAAYA,EAAE,KAAK,KAAK,UAAY,GAC7C,CAAC,GAAGgB,CAAA,EAAO,KAAA,CAAM,EAAGnB,IAAMoB,EAAY,CAAA,EAAKA,EAAYpB,CAAA,CAAE,EAC3C,MAAOa,GAAS,CAAC,KAAAK,GAAmBL,EAAM7C,CAAA,CAAK,GACtD,KAAAiD,GAAmBjD,CAAA,EAEtCmD,EAAM,QAASN,GAAS,KAAAE,GAAgBF,CAAA,CAAK,GAI/CQ,GAAA,CAAeC,EAAqBlD,IAA+B,CAGjE,GAFIkD,EAAM,OAASlD,GAEfkD,EAAM,UAAU,SAAW,EAAG,OAAOA,EAEzC,IAAMC,EAAcvD,GAA4C,CAC9D,GAAIA,EAAK,OAASI,EAAM,OAAOJ,EAAK,OAAS,KAAO,KAAOA,EAE3D,GAAIA,EAAK,UAAU,SAAW,EAAG,OAAO,KAExC,GAAM,CAACwD,CAAA,EAAcxD,EAAK,SAC1B,OAAKwD,EAEED,EAAWC,CAAA,EAFM,MAKpBC,EAASF,EAAWD,CAAA,EAE1B,GAAI,CAACG,EAAQ,OAAOH,EAEpB,IAAMI,EAAMD,EAAO,SAAW,CAAC,GAAGA,EAAO,QAAA,EAAY,OAC/CzD,EAAO,CAAE,GAAGsD,EAAO,SAAUI,GACnC,OAAA1D,EAAK,SAAW0D,EAChBD,EAAO,SAAW,CAACzD,CAAA,EAEZyD,GAITE,GAAuB3D,GAAqC,CAC1D,GAAM,CAAE,SAAAwC,CAAA,EAAaxC,EACrB,OAAKwC,IAELxC,EAAK,SAAWwC,EAAS,OAAA,CAAQoB,EAAcN,EAAOO,IAAU,CAC9D,GAAIA,IAAU,EAAG,MAAO,CAACP,CAAA,EAEzB,IAAMQ,EAAOF,EAAa,GAAG,EAAA,EAC7B,GAAIE,GAAQA,EAAK,QAAUR,EAAM,OAAQ,CACvCA,EAAQ,KAAAD,GAAiBC,EAAOQ,EAAK,IAAA,EACrC,GAAM,CAAE,SAAUC,EAAc,GAAGC,CAAA,EAAaV,EAC1C,CAAE,SAAUW,EAAc,GAAGC,CAAA,EAAaJ,EAChD,GACER,EAAM,OAASQ,EAAK,MACpBC,GACAE,GACA,KAAK,UAAUD,CAAA,IAAc,KAAK,UAAUE,CAAA,EAC5C,CACA,IAAMC,EAAO,CACX,GAAGD,EACH,SAAU,CAAC,GAAGD,EAAc,GAAGF,CAAA,GAEjC,OAAOH,EACJ,MAAM,EAAG,EAAA,EACT,OAAO,KAAAD,GAAyBQ,CAAA,CAAK,GAG5C,OAAOP,EAAa,OAAON,CAAA,GAC1B,CAAA,CAAE,GAEEtD,GAIToE,GAAuB/B,GAAoC,CACzD,IAAMrC,EAAqB,CACzB,GAAGqC,EAAQ,MACX,KAAMA,EAAQ,MAGhB,OAAIA,EAAQ,WAAUrC,EAAK,SAAWqC,EAAQ,UAE1CA,EAAQ,QAAOrC,EAAK,MAAQqC,EAAQ,OAEjCrC,GAUTqE,GAAA,CACEhC,EACAiC,IACG,CACH,IAAIC,EAAc,GACdC,EAAY,GACVhC,EAAWH,EAAQ,SACrBoC,EAAQ,GACRX,EAAO,GACLY,EAAa1E,GAAyB,CACrCA,GACLA,EAAK,QAAA,CAASsD,EAAOO,IAAU,CACzBP,EAAM,OAAS,QAAUA,EAAM,QAC7BmB,EAAQ,IAAGA,EAAQZ,GAEvBC,EAAOD,MAKb,GAAIrB,EAAU,CACZkC,EAAUlC,CAAA,EACV,IAAMmC,EAAYnC,IAAWsB,CAAA,EAGvBN,EAAahB,IAAWiC,CAAA,EAG9B,GAAIE,GAAaA,EAAU,MAAM,SAAS,GAAA,EAAM,CAC9C,IAAM7D,EAAO6D,EAAU,MACjBC,EAAU9D,EAAK,QAAA,EACrB0D,EAAY1D,EAAK,MAAM8D,EAAQ,MAAA,EAC/BD,EAAU,MAAQC,EAEpB,GAAIpB,GAAcA,EAAW,MAAM,WAAW,GAAA,EAAM,CAClD,IAAM1C,EAAO0C,EAAW,MAClBoB,EAAU9D,EAAK,UAAA,EACrByD,EAAczD,EAAK,MAAM,EAAGA,EAAK,OAAS8D,EAAQ,MAAA,EAClDpB,EAAW,MAAQoB,GAInBL,EAAY,QAAQ,KAAAtD,GAAqB,OAAQ,OAAWsD,CAAA,EAEhE,IAAMrC,EAASoC,EAAA,EAEf,OAAIE,EAAU,QAAQ,KAAAvD,GAAqB,OAAQ,OAAWuD,CAAA,EAEvDtC,GAITlB,GAAA,CAAqB6D,EAAgB,KAAwB,CAC3D,IAAMxC,EAAU,KAAK,MAAA,EAEfiC,EAAA,IACJ,KAAArD,GACEoB,EAAQ,KACRA,EAAQ,SACRA,EAAQ,MACRA,EAAQ,KAAA,EAGZ,OAAIwC,EAAa,KAAAR,GAAiBhC,EAASiC,CAAA,EAEpCA,EAAA,GAUTrD,GAAA,CACEb,EACAoC,EACAC,EACAC,IACiB,CACjB,IAAML,EAAUE,GAAuB,OAAOnC,EAAMoC,EAAUC,EAAOC,CAAA,EAC/D1C,EAAqB,KAAA2D,GACzB,KAAAS,GAAyB/B,CAAA,CAAQ,EAEnC,YAAK,KAAKrC,CAAA,EACHA,GAeT8C,GAAA,CACED,EACAzC,EACAqC,EACAC,IAEaG,EAAK,QAAQ,KAAApC,EAAA,EAET,MAEjB,KAAAA,GAAcoC,EAAK,SAAS,KAAApC,EAAA,EACrB,KAAK,SAASL,EAAMqC,EAAO,CAAE,GAAGC,EAAO,OAAQ,GAAM,GAI9DK,GAAcF,GAAqB,CACpBA,EAAK,QAAQ,KAAApC,EAAA,IAI1B,KAAAA,GAAcoC,EAAK,KAAK,cAAc,KAAApC,EAAA,EACtC,KAAAO,GAAuB,EAAA,KC5S3B,IAAM8D,GAAW,SAAUC,EAAM,CAC7B,QAASC,EAAQ,GAAIA,IAEjB,GADAD,EAAOA,EAAK,gBACR,CAACA,EACD,OAAOC,CAEnB,EACMC,GAAa,SAAUF,EAAM,CAC/B,IAAIG,EAASH,EAAK,cAAgBA,EAAK,WACvC,OAAOG,GAAUA,EAAO,UAAY,GAAKA,EAAO,KAAOA,CAC3D,EACIC,GAAc,KAIZC,GAAY,SAAUL,EAAMM,EAAMC,EAAI,CACxC,IAAIC,EAAQJ,KAAgBA,GAAc,SAAS,YAAY,GAC/D,OAAAI,EAAM,OAAOR,EAAMO,GAAaP,EAAK,UAAU,MAAW,EAC1DQ,EAAM,SAASR,EAAMM,GAAQ,CAAC,EACvBE,CACX,EACMC,GAAmB,UAAY,CACjCL,GAAc,IAClB,EAIMM,GAAuB,SAAUV,EAAMW,EAAKC,EAAYC,EAAW,CACrE,OAAOD,IAAeE,GAAQd,EAAMW,EAAKC,EAAYC,EAAW,EAAE,GAC9DC,GAAQd,EAAMW,EAAKC,EAAYC,EAAW,CAAC,EACnD,EACME,GAAe,gCACrB,SAASD,GAAQd,EAAMW,EAAKC,EAAYC,EAAWG,EAAK,CAEpD,QADIC,IACK,CACL,GAAIjB,GAAQY,GAAcD,GAAOE,EAC7B,MAAO,GACX,GAAIF,IAAQK,EAAM,EAAI,EAAIE,GAASlB,CAAI,GAAI,CACvC,IAAIG,EAASH,EAAK,WAClB,GAAI,CAACG,GAAUA,EAAO,UAAY,GAAKgB,GAAanB,CAAI,GAAKe,GAAa,KAAKf,EAAK,QAAQ,GACxFA,EAAK,iBAAmB,QACxB,MAAO,GACXW,EAAMZ,GAASC,CAAI,GAAKgB,EAAM,EAAI,EAAI,GACtChB,EAAOG,CACX,SACSH,EAAK,UAAY,EAAG,CACzB,IAAIoB,EAAQpB,EAAK,WAAWW,GAAOK,EAAM,EAAI,GAAK,EAAE,EACpD,GAAII,EAAM,UAAY,GAAKA,EAAM,iBAAmB,QAChD,GAAK,GAAAH,EAAKG,EAAM,cAAgB,MAAQH,IAAO,SAAkBA,EAAG,mBAChEN,GAAOK,MAEP,OAAO,QAGXhB,EAAOoB,EACPT,EAAMK,EAAM,EAAIE,GAASlB,CAAI,EAAI,CAEzC,KAEI,OAAO,EAEf,CACJ,CACA,SAASkB,GAASlB,EAAM,CACpB,OAAOA,EAAK,UAAY,EAAIA,EAAK,UAAU,OAASA,EAAK,WAAW,MACxE,CACA,SAASqB,GAAiBrB,EAAMsB,EAAQ,CACpC,OAAS,CACL,GAAItB,EAAK,UAAY,GAAKsB,EACtB,OAAOtB,EACX,GAAIA,EAAK,UAAY,GAAKsB,EAAS,EAAG,CAClC,GAAItB,EAAK,iBAAmB,QACxB,OAAO,KACXA,EAAOA,EAAK,WAAWsB,EAAS,CAAC,EACjCA,EAASJ,GAASlB,CAAI,CAC1B,SACSA,EAAK,YAAc,CAACmB,GAAanB,CAAI,EAC1CsB,EAASvB,GAASC,CAAI,EACtBA,EAAOA,EAAK,eAGZ,QAAO,IAEf,CACJ,CACA,SAASuB,GAAgBvB,EAAMsB,EAAQ,CACnC,OAAS,CACL,GAAItB,EAAK,UAAY,GAAKsB,EAAStB,EAAK,UAAU,OAC9C,OAAOA,EACX,GAAIA,EAAK,UAAY,GAAKsB,EAAStB,EAAK,WAAW,OAAQ,CACvD,GAAIA,EAAK,iBAAmB,QACxB,OAAO,KACXA,EAAOA,EAAK,WAAWsB,CAAM,EAC7BA,EAAS,CACb,SACStB,EAAK,YAAc,CAACmB,GAAanB,CAAI,EAC1CsB,EAASvB,GAASC,CAAI,EAAI,EAC1BA,EAAOA,EAAK,eAGZ,QAAO,IAEf,CACJ,CACA,SAASwB,GAASxB,EAAMsB,EAAQnB,EAAQ,CACpC,QAASsB,EAAUH,GAAU,EAAGI,EAAQJ,GAAUJ,GAASlB,CAAI,EAAGyB,GAAWC,GAAQ,CACjF,GAAI1B,GAAQG,EACR,MAAO,GACX,IAAIF,EAAQF,GAASC,CAAI,EAEzB,GADAA,EAAOA,EAAK,WACR,CAACA,EACD,MAAO,GACXyB,EAAUA,GAAWxB,GAAS,EAC9ByB,EAAQA,GAASzB,GAASiB,GAASlB,CAAI,CAC3C,CACJ,CACA,SAASmB,GAAaQ,EAAK,CACvB,IAAIC,EACJ,QAASC,EAAMF,EAAKE,GACZ,EAAAD,EAAOC,EAAI,YADMA,EAAMA,EAAI,WAC/B,CAEJ,OAAOD,GAAQA,EAAK,MAAQA,EAAK,KAAK,UAAYA,EAAK,KAAOD,GAAOC,EAAK,YAAcD,EAC5F,CAGA,IAAMG,GAAqB,SAAUC,EAAQ,CACzC,OAAOA,EAAO,WAAarB,GAAqBqB,EAAO,UAAWA,EAAO,YAAaA,EAAO,WAAYA,EAAO,YAAY,CAChI,EACA,SAASC,GAASC,EAASC,EAAK,CAC5B,IAAIC,EAAQ,SAAS,YAAY,OAAO,EACxC,OAAAA,EAAM,UAAU,UAAW,GAAM,EAAI,EACrCA,EAAM,QAAUF,EAChBE,EAAM,IAAMA,EAAM,KAAOD,EAClBC,CACX,CACA,SAASC,GAAkBC,EAAK,CAC5B,IAAIC,EAAMD,EAAI,cACd,KAAOC,GAAOA,EAAI,YACdA,EAAMA,EAAI,WAAW,cACzB,OAAOA,CACX,CACA,SAASC,GAAeF,EAAKG,EAAGC,EAAG,CAC/B,GAAIJ,EAAI,uBACJ,GAAI,CACA,IAAIK,EAAML,EAAI,uBAAuBG,EAAGC,CAAC,EAIzC,GAAIC,EACA,MAAO,CAAE,KAAMA,EAAI,WAAY,OAAQ,KAAK,IAAIxB,GAASwB,EAAI,UAAU,EAAGA,EAAI,MAAM,CAAE,CAC9F,MACU,CAAE,CAEhB,GAAIL,EAAI,oBAAqB,CACzB,IAAI7B,EAAQ6B,EAAI,oBAAoBG,EAAGC,CAAC,EACxC,GAAIjC,EACA,MAAO,CAAE,KAAMA,EAAM,eAAgB,OAAQ,KAAK,IAAIU,GAASV,EAAM,cAAc,EAAGA,EAAM,WAAW,CAAE,CACjH,CACJ,CAEA,IAAMmC,GAAM,OAAO,UAAa,IAAc,UAAY,KACpDN,GAAM,OAAO,SAAY,IAAc,SAAW,KAClDO,GAASD,IAAOA,GAAI,WAAc,GAClCE,GAAU,cAAc,KAAKD,EAAK,EAClCE,GAAY,UAAU,KAAKF,EAAK,EAChCG,GAAU,wCAAwC,KAAKH,EAAK,EAC5DI,GAAK,CAAC,EAAEF,IAAaC,IAAWF,IAChCI,GAAaH,GAAY,SAAS,aAAeC,GAAU,CAACA,GAAQ,CAAC,EAAIF,GAAU,CAACA,GAAQ,CAAC,EAAI,EACjGK,GAAQ,CAACF,IAAM,gBAAgB,KAAKJ,EAAK,EAC/CM,IAAS,EAAE,iBAAiB,KAAKN,EAAK,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EACpD,IAAMO,GAAU,CAACH,IAAM,gBAAgB,KAAKJ,EAAK,EAC3CQ,GAAS,CAAC,CAACD,GACXE,GAAiBF,GAAU,CAACA,GAAQ,CAAC,EAAI,EACzCG,GAAS,CAACN,IAAM,CAAC,CAACL,IAAO,iBAAiB,KAAKA,GAAI,MAAM,EAEzDY,GAAMD,KAAW,cAAc,KAAKV,EAAK,GAAK,CAAC,CAACD,IAAOA,GAAI,eAAiB,GAC5Ea,GAAMD,KAAQZ,GAAM,MAAM,KAAKA,GAAI,QAAQ,EAAI,IAC/Cc,GAAUd,GAAM,MAAM,KAAKA,GAAI,QAAQ,EAAI,GAC3Ce,GAAU,aAAa,KAAKd,EAAK,EACjCe,GAAS,CAAC,CAACtB,IAAO,wBAAyBA,GAAI,gBAAgB,MAC/DuB,GAAiBD,GAAS,EAAE,uBAAuB,KAAK,UAAU,SAAS,GAAK,CAAC,EAAG,CAAC,GAAG,CAAC,EAAI,EAEnG,SAASE,GAAWxB,EAAK,CACrB,IAAIyB,EAAKzB,EAAI,aAAeA,EAAI,YAAY,eAC5C,OAAIyB,EACO,CACH,KAAM,EAAG,MAAOA,EAAG,MACnB,IAAK,EAAG,OAAQA,EAAG,MACvB,EACG,CAAE,KAAM,EAAG,MAAOzB,EAAI,gBAAgB,YACzC,IAAK,EAAG,OAAQA,EAAI,gBAAgB,YAAa,CACzD,CACA,SAAS0B,GAAQC,EAAOC,EAAM,CAC1B,OAAO,OAAOD,GAAS,SAAWA,EAAQA,EAAMC,CAAI,CACxD,CACA,SAASC,GAAWlE,EAAM,CACtB,IAAImE,EAAOnE,EAAK,sBAAsB,EAElCoE,EAAUD,EAAK,MAAQnE,EAAK,aAAgB,EAC5CqE,EAAUF,EAAK,OAASnE,EAAK,cAAiB,EAElD,MAAO,CAAE,KAAMmE,EAAK,KAAM,MAAOA,EAAK,KAAOnE,EAAK,YAAcoE,EAC5D,IAAKD,EAAK,IAAK,OAAQA,EAAK,IAAMnE,EAAK,aAAeqE,CAAO,CACrE,CACA,SAASC,GAAmBC,EAAMJ,EAAMK,EAAU,CAC9C,IAAIC,EAAkBF,EAAK,SAAS,iBAAiB,GAAK,EAAGG,EAAeH,EAAK,SAAS,cAAc,GAAK,EACzGlC,EAAMkC,EAAK,IAAI,cACnB,QAASpE,EAASqE,GAAYD,EAAK,IAC1BpE,GADiC,CAGtC,GAAIA,EAAO,UAAY,EAAG,CACtBA,EAASD,GAAWC,CAAM,EAC1B,QACJ,CACA,IAAImC,EAAMnC,EACNwE,EAAQrC,GAAOD,EAAI,KACnBuC,EAAWD,EAAQd,GAAWxB,CAAG,EAAI6B,GAAW5B,CAAG,EACnDuC,EAAQ,EAAGC,EAAQ,EAWvB,GAVIX,EAAK,IAAMS,EAAS,IAAMb,GAAQU,EAAiB,KAAK,EACxDK,EAAQ,EAAEF,EAAS,IAAMT,EAAK,IAAMJ,GAAQW,EAAc,KAAK,GAC1DP,EAAK,OAASS,EAAS,OAASb,GAAQU,EAAiB,QAAQ,IACtEK,EAAQX,EAAK,OAASA,EAAK,IAAMS,EAAS,OAASA,EAAS,IACtDT,EAAK,IAAMJ,GAAQW,EAAc,KAAK,EAAIE,EAAS,IACnDT,EAAK,OAASS,EAAS,OAASb,GAAQW,EAAc,QAAQ,GACpEP,EAAK,KAAOS,EAAS,KAAOb,GAAQU,EAAiB,MAAM,EAC3DI,EAAQ,EAAED,EAAS,KAAOT,EAAK,KAAOJ,GAAQW,EAAc,MAAM,GAC7DP,EAAK,MAAQS,EAAS,MAAQb,GAAQU,EAAiB,OAAO,IACnEI,EAAQV,EAAK,MAAQS,EAAS,MAAQb,GAAQW,EAAc,OAAO,GACnEG,GAASC,EACT,GAAIH,EACAtC,EAAI,YAAY,SAASwC,EAAOC,CAAK,MAEpC,CACD,IAAIC,EAASzC,EAAI,WAAY0C,EAAS1C,EAAI,UACtCwC,IACAxC,EAAI,WAAawC,GACjBD,IACAvC,EAAI,YAAcuC,GACtB,IAAII,EAAK3C,EAAI,WAAayC,EAAQG,EAAK5C,EAAI,UAAY0C,EACvDb,EAAO,CAAE,KAAMA,EAAK,KAAOc,EAAI,IAAKd,EAAK,IAAMe,EAAI,MAAOf,EAAK,MAAQc,EAAI,OAAQd,EAAK,OAASe,CAAG,CACxG,CAEJ,IAAIxC,EAAMiC,EAAQ,QAAU,iBAAiBxE,CAAM,EAAE,SACrD,GAAI,mBAAmB,KAAKuC,CAAG,EAC3B,MACJvC,EAASuC,GAAO,WAAavC,EAAO,aAAeD,GAAWC,CAAM,CACxE,CACJ,CAKA,SAASgF,GAAeZ,EAAM,CAC1B,IAAIJ,EAAOI,EAAK,IAAI,sBAAsB,EAAGS,EAAS,KAAK,IAAI,EAAGb,EAAK,GAAG,EACtEiB,EAAQC,EACZ,QAAS7C,GAAK2B,EAAK,KAAOA,EAAK,OAAS,EAAG1B,EAAIuC,EAAS,EAAGvC,EAAI,KAAK,IAAI,YAAa0B,EAAK,MAAM,EAAG1B,GAAK,EAAG,CACvG,IAAId,EAAM4C,EAAK,KAAK,iBAAiB/B,EAAGC,CAAC,EACzC,GAAI,CAACd,GAAOA,GAAO4C,EAAK,KAAO,CAACA,EAAK,IAAI,SAAS5C,CAAG,EACjD,SACJ,IAAI2D,EAAY3D,EAAI,sBAAsB,EAC1C,GAAI2D,EAAU,KAAON,EAAS,GAAI,CAC9BI,EAASzD,EACT0D,EAASC,EAAU,IACnB,KACJ,CACJ,CACA,MAAO,CAAE,OAAQF,EAAQ,OAAQC,EAAQ,MAAOE,GAAYhB,EAAK,GAAG,CAAE,CAC1E,CACA,SAASgB,GAAY5D,EAAK,CACtB,IAAI6D,EAAQ,CAAC,EAAGnD,EAAMV,EAAI,cAC1B,QAASE,EAAMF,EAAKE,IAChB2D,EAAM,KAAK,CAAE,IAAK3D,EAAK,IAAKA,EAAI,UAAW,KAAMA,EAAI,UAAW,CAAC,EAC7DF,GAAOU,GAFUR,EAAM3B,GAAW2B,CAAG,EAEzC,CAGJ,OAAO2D,CACX,CAGA,SAASC,GAAe,CAAE,OAAAL,EAAQ,OAAAC,EAAQ,MAAAG,CAAM,EAAG,CAC/C,IAAIE,EAAYN,EAASA,EAAO,sBAAsB,EAAE,IAAM,EAC9DO,GAAmBH,EAAOE,GAAa,EAAI,EAAIA,EAAYL,CAAM,CACrE,CACA,SAASM,GAAmBH,EAAOI,EAAM,CACrC,QAASC,EAAI,EAAGA,EAAIL,EAAM,OAAQK,IAAK,CACnC,GAAI,CAAE,IAAAlE,EAAK,IAAAmE,EAAK,KAAAC,CAAK,EAAIP,EAAMK,CAAC,EAC5BlE,EAAI,WAAamE,EAAMF,IACvBjE,EAAI,UAAYmE,EAAMF,GACtBjE,EAAI,YAAcoE,IAClBpE,EAAI,WAAaoE,EACzB,CACJ,CACA,IAAIC,GAAyB,KAG7B,SAASC,GAAmBtE,EAAK,CAC7B,GAAIA,EAAI,UACJ,OAAOA,EAAI,UAAU,EACzB,GAAIqE,GACA,OAAOrE,EAAI,MAAMqE,EAAsB,EAC3C,IAAIE,EAASX,GAAY5D,CAAG,EAC5BA,EAAI,MAAMqE,IAA0B,KAAO,CACvC,IAAI,eAAgB,CAChB,OAAAA,GAAyB,CAAE,cAAe,EAAK,EACxC,EACX,CACJ,EAAI,MAAS,EACRA,KACDA,GAAyB,GACzBL,GAAmBO,EAAQ,CAAC,EAEpC,CACA,SAASC,GAAiBnG,EAAMoG,EAAQ,CACpC,IAAIC,EAASC,EAAY,IAAKC,EAAejF,EAAS,EAClDkF,EAASJ,EAAO,IAAKK,EAASL,EAAO,IACrCM,EAAYC,EAChB,QAASvF,EAAQpB,EAAK,WAAY4G,EAAa,EAAGxF,EAAOA,EAAQA,EAAM,YAAawF,IAAc,CAC9F,IAAIC,EACJ,GAAIzF,EAAM,UAAY,EAClByF,EAAQzF,EAAM,eAAe,UACxBA,EAAM,UAAY,EACvByF,EAAQxG,GAAUe,CAAK,EAAE,eAAe,MAExC,UACJ,QAASyE,EAAI,EAAGA,EAAIgB,EAAM,OAAQhB,IAAK,CACnC,IAAI1B,EAAO0C,EAAMhB,CAAC,EAClB,GAAI1B,EAAK,KAAOqC,GAAUrC,EAAK,QAAUsC,EAAQ,CAC7CD,EAAS,KAAK,IAAIrC,EAAK,OAAQqC,CAAM,EACrCC,EAAS,KAAK,IAAItC,EAAK,IAAKsC,CAAM,EAClC,IAAIK,EAAK3C,EAAK,KAAOiC,EAAO,KAAOjC,EAAK,KAAOiC,EAAO,KAChDjC,EAAK,MAAQiC,EAAO,KAAOA,EAAO,KAAOjC,EAAK,MAAQ,EAC5D,GAAI2C,EAAKR,EAAW,CAChBD,EAAUjF,EACVkF,EAAYQ,EACZP,EAAgBO,GAAMT,EAAQ,UAAY,EAAI,CAC1C,KAAMlC,EAAK,MAAQiC,EAAO,KAAOjC,EAAK,MAAQA,EAAK,KACnD,IAAKiC,EAAO,GAChB,EAAIA,EACAhF,EAAM,UAAY,GAAK0F,IACvBxF,EAASsF,GAAcR,EAAO,OAASjC,EAAK,KAAOA,EAAK,OAAS,EAAI,EAAI,IAC7E,QACJ,CACJ,MACSA,EAAK,IAAMiC,EAAO,KAAO,CAACM,GAAcvC,EAAK,MAAQiC,EAAO,MAAQjC,EAAK,OAASiC,EAAO,OAC9FM,EAAatF,EACbuF,EAAc,CAAE,KAAM,KAAK,IAAIxC,EAAK,KAAM,KAAK,IAAIA,EAAK,MAAOiC,EAAO,IAAI,CAAC,EAAG,IAAKjC,EAAK,GAAI,GAE5F,CAACkC,IAAYD,EAAO,MAAQjC,EAAK,OAASiC,EAAO,KAAOjC,EAAK,KAC7DiC,EAAO,MAAQjC,EAAK,MAAQiC,EAAO,KAAOjC,EAAK,UAC/C7C,EAASsF,EAAa,EAC9B,CACJ,CAMA,MALI,CAACP,GAAWK,IACZL,EAAUK,EACVH,EAAgBI,EAChBL,EAAY,GAEZD,GAAWA,EAAQ,UAAY,EACxBU,GAAiBV,EAASE,CAAa,EAC9C,CAACF,GAAYC,GAAaD,EAAQ,UAAY,EACvC,CAAE,KAAArG,EAAM,OAAAsB,CAAO,EACnB6E,GAAiBE,EAASE,CAAa,CAClD,CACA,SAASQ,GAAiB/G,EAAMoG,EAAQ,CACpC,IAAIY,EAAMhH,EAAK,UAAU,OACrBQ,EAAQ,SAAS,YAAY,EAAGyG,EACpC,QAAS,EAAI,EAAG,EAAID,EAAK,IAAK,CAC1BxG,EAAM,OAAOR,EAAM,EAAI,CAAC,EACxBQ,EAAM,SAASR,EAAM,CAAC,EACtB,IAAImE,EAAO+C,GAAW1G,EAAO,CAAC,EAC9B,GAAI2D,EAAK,KAAOA,EAAK,QAEjBgD,GAAOf,EAAQjC,CAAI,EAAG,CACtB8C,EAAS,CAAE,KAAAjH,EAAM,OAAQ,GAAKoG,EAAO,OAASjC,EAAK,KAAOA,EAAK,OAAS,EAAI,EAAI,EAAG,EACnF,KACJ,CACJ,CACA,OAAA3D,EAAM,OAAO,EACNyG,GAAU,CAAE,KAAAjH,EAAM,OAAQ,CAAE,CACvC,CACA,SAASmH,GAAOf,EAAQjC,EAAM,CAC1B,OAAOiC,EAAO,MAAQjC,EAAK,KAAO,GAAKiC,EAAO,MAAQjC,EAAK,MAAQ,GAC/DiC,EAAO,KAAOjC,EAAK,IAAM,GAAKiC,EAAO,KAAOjC,EAAK,OAAS,CAClE,CACA,SAASiD,GAAazF,EAAKyE,EAAQ,CAC/B,IAAIjG,EAASwB,EAAI,WACjB,OAAIxB,GAAU,QAAQ,KAAKA,EAAO,QAAQ,GAAKiG,EAAO,KAAOzE,EAAI,sBAAsB,EAAE,KAC9ExB,EACJwB,CACX,CACA,SAAS0F,GAAe9C,EAAMjC,EAAK8D,EAAQ,CACvC,GAAI,CAAE,KAAApG,EAAM,OAAAsB,CAAO,EAAI6E,GAAiB7D,EAAK8D,CAAM,EAAGkB,EAAO,GAC7D,GAAItH,EAAK,UAAY,GAAK,CAACA,EAAK,WAAY,CACxC,IAAImE,EAAOnE,EAAK,sBAAsB,EACtCsH,EAAOnD,EAAK,MAAQA,EAAK,OAASiC,EAAO,MAAQjC,EAAK,KAAOA,EAAK,OAAS,EAAI,EAAI,EACvF,CACA,OAAOI,EAAK,QAAQ,WAAWvE,EAAMsB,EAAQgG,CAAI,CACrD,CACA,SAASC,GAAahD,EAAMvE,EAAMsB,EAAQ8E,EAAQ,CAO9C,IAAIoB,EAAe,GACnB,QAAS3F,EAAM7B,EAAMyH,EAAW,GACxB5F,GAAO0C,EAAK,KADqB,CAGrC,IAAI3C,EAAO2C,EAAK,QAAQ,YAAY1C,EAAK,EAAI,EAAGsC,EAChD,GAAI,CAACvC,EACD,OAAO,KACX,GAAIA,EAAK,IAAI,UAAY,IAAMA,EAAK,KAAK,SAAWA,EAAK,QAAU,CAACA,EAAK,eAEnEuC,EAAOvC,EAAK,IAAI,sBAAsB,GAAG,OAASuC,EAAK,UACrDvC,EAAK,KAAK,SAAWA,EAAK,QAAU,CAAC,wBAAwB,KAAKA,EAAK,IAAI,QAAQ,IAE/E,CAAC6F,GAAYtD,EAAK,KAAOiC,EAAO,MAAQjC,EAAK,IAAMiC,EAAO,IAC1DoB,EAAe5F,EAAK,WACf,CAAC6F,GAAYtD,EAAK,MAAQiC,EAAO,MAAQjC,EAAK,OAASiC,EAAO,OACnEoB,EAAe5F,EAAK,UACxB6F,EAAW,IAEX,CAAC7F,EAAK,YAAc4F,EAAe,GAAK,CAAC5F,EAAK,KAAK,QAInD,OAFaA,EAAK,KAAK,QAAUwE,EAAO,KAAOjC,EAAK,IAAMA,EAAK,QAAU,EACnEiC,EAAO,MAAQjC,EAAK,KAAOA,EAAK,OAAS,GAC/BvC,EAAK,UAAYA,EAAK,SAG9CC,EAAMD,EAAK,IAAI,UACnB,CACA,OAAO4F,EAAe,GAAKA,EAAejD,EAAK,QAAQ,WAAWvE,EAAMsB,EAAQ,EAAE,CACtF,CACA,SAASoG,GAAiBC,EAASvB,EAAQwB,EAAK,CAC5C,IAAIZ,EAAMW,EAAQ,WAAW,OAC7B,GAAIX,GAAOY,EAAI,IAAMA,EAAI,OACrB,QAASC,EAAS,KAAK,IAAI,EAAG,KAAK,IAAIb,EAAM,EAAG,KAAK,MAAMA,GAAOZ,EAAO,IAAMwB,EAAI,MAAQA,EAAI,OAASA,EAAI,IAAI,EAAI,CAAC,CAAC,EAAG,EAAIC,IAAU,CACnI,IAAIzG,EAAQuG,EAAQ,WAAW,CAAC,EAChC,GAAIvG,EAAM,UAAY,EAAG,CACrB,IAAIyF,EAAQzF,EAAM,eAAe,EACjC,QAAS0G,EAAI,EAAGA,EAAIjB,EAAM,OAAQiB,IAAK,CACnC,IAAI3D,EAAO0C,EAAMiB,CAAC,EAClB,GAAIX,GAAOf,EAAQjC,CAAI,EACnB,OAAOuD,GAAiBtG,EAAOgF,EAAQjC,CAAI,CACnD,CACJ,CACA,IAAK,GAAK,EAAI,GAAK6C,IAAQa,EACvB,KACR,CAEJ,OAAOF,CACX,CAEA,SAASI,GAAYxD,EAAM6B,EAAQ,CAC/B,IAAI/D,EAAMkC,EAAK,IAAI,cAAevE,EAAMsB,EAAS,EAC7C0G,EAAQzF,GAAeF,EAAK+D,EAAO,KAAMA,EAAO,GAAG,EACnD4B,IACC,CAAE,KAAAhI,EAAM,OAAAsB,CAAO,EAAI0G,GACxB,IAAI1F,GAAOiC,EAAK,KAAK,iBAAmBA,EAAK,KAAOlC,GAC/C,iBAAiB+D,EAAO,KAAMA,EAAO,GAAG,EACzC1D,EACJ,GAAI,CAACJ,GAAO,CAACiC,EAAK,IAAI,SAASjC,EAAI,UAAY,EAAIA,EAAI,WAAaA,CAAG,EAAG,CACtE,IAAIsF,EAAMrD,EAAK,IAAI,sBAAsB,EAIzC,GAHI,CAAC4C,GAAOf,EAAQwB,CAAG,IAEvBtF,EAAMoF,GAAiBnD,EAAK,IAAK6B,EAAQwB,CAAG,EACxC,CAACtF,GACD,OAAO,IACf,CAEA,GAAIgB,GACA,QAAS2E,EAAI3F,EAAKtC,GAAQiI,EAAGA,EAAI/H,GAAW+H,CAAC,EACrCA,EAAE,YACFjI,EAAO,QAGnB,GADAsC,EAAM8E,GAAa9E,EAAK8D,CAAM,EAC1BpG,EAAM,CACN,GAAIkD,IAASlD,EAAK,UAAY,IAG1BsB,EAAS,KAAK,IAAIA,EAAQtB,EAAK,WAAW,MAAM,EAG5CsB,EAAStB,EAAK,WAAW,QAAQ,CACjC,IAAIkI,EAAOlI,EAAK,WAAWsB,CAAM,EAAGsG,EAChCM,EAAK,UAAY,QAAUN,EAAMM,EAAK,sBAAsB,GAAG,OAAS9B,EAAO,MAC/EwB,EAAI,OAASxB,EAAO,KACpB9E,GACR,CAEJ,IAAI6G,EAEAxE,IAAUrC,GAAUtB,EAAK,UAAY,IAAMmI,EAAOnI,EAAK,WAAWsB,EAAS,CAAC,GAAG,UAAY,GAC3F6G,EAAK,iBAAmB,SAAWA,EAAK,sBAAsB,EAAE,KAAO/B,EAAO,KAC9E9E,IAGAtB,GAAQuE,EAAK,KAAOjD,GAAUtB,EAAK,WAAW,OAAS,GAAKA,EAAK,UAAU,UAAY,GACvFoG,EAAO,IAAMpG,EAAK,UAAU,sBAAsB,EAAE,OACpD0C,EAAM6B,EAAK,MAAM,IAAI,QAAQ,MAIxBjD,GAAU,GAAKtB,EAAK,UAAY,GAAKA,EAAK,WAAWsB,EAAS,CAAC,EAAE,UAAY,QAClFoB,EAAM6E,GAAahD,EAAMvE,EAAMsB,EAAQ8E,CAAM,EACrD,CACI1D,GAAO,OACPA,EAAM2E,GAAe9C,EAAMjC,EAAK8D,CAAM,GAC1C,IAAIxE,EAAO2C,EAAK,QAAQ,YAAYjC,EAAK,EAAI,EAC7C,MAAO,CAAE,IAAAI,EAAK,OAAQd,EAAOA,EAAK,WAAaA,EAAK,OAAS,EAAG,CACpE,CACA,SAASwG,GAAQjE,EAAM,CACnB,OAAOA,EAAK,IAAMA,EAAK,QAAUA,EAAK,KAAOA,EAAK,KACtD,CACA,SAAS+C,GAAWmB,EAAQf,EAAM,CAC9B,IAAIT,EAAQwB,EAAO,eAAe,EAClC,GAAIxB,EAAM,OAAQ,CACd,IAAIyB,EAAQzB,EAAMS,EAAO,EAAI,EAAIT,EAAM,OAAS,CAAC,EACjD,GAAIuB,GAAQE,CAAK,EACb,OAAOA,CACf,CACA,OAAO,MAAM,UAAU,KAAK,KAAKzB,EAAOuB,EAAO,GAAKC,EAAO,sBAAsB,CACrF,CACA,IAAME,GAAO,4CAGb,SAASC,GAAYjE,EAAM7B,EAAKuB,EAAM,CAClC,GAAI,CAAE,KAAAjE,EAAM,OAAAsB,EAAQ,KAAAmH,CAAK,EAAIlE,EAAK,QAAQ,WAAW7B,EAAKuB,EAAO,EAAI,GAAK,CAAC,EACvEyE,EAAoB/E,IAAUT,GAClC,GAAIlD,EAAK,UAAY,EAGjB,GAAI0I,IAAsBH,GAAK,KAAKvI,EAAK,SAAS,IAAMiE,EAAO,EAAI,CAAC3C,EAASA,GAAUtB,EAAK,UAAU,SAAU,CAC5G,IAAImE,EAAO+C,GAAW7G,GAAUL,EAAMsB,EAAQA,CAAM,EAAG2C,CAAI,EAI3D,GAAIf,IAAS5B,GAAU,KAAK,KAAKtB,EAAK,UAAUsB,EAAS,CAAC,CAAC,GAAKA,EAAStB,EAAK,UAAU,OAAQ,CAC5F,IAAI2I,EAAazB,GAAW7G,GAAUL,EAAMsB,EAAS,EAAGA,EAAS,CAAC,EAAG,EAAE,EACvE,GAAIqH,EAAW,KAAOxE,EAAK,IAAK,CAC5B,IAAIyE,EAAY1B,GAAW7G,GAAUL,EAAMsB,EAAQA,EAAS,CAAC,EAAG,EAAE,EAClE,GAAIsH,EAAU,KAAOzE,EAAK,IACtB,OAAO0E,GAASD,EAAWA,EAAU,KAAOD,EAAW,IAAI,CACnE,CACJ,CACA,OAAOxE,CACX,KACK,CACD,IAAI7D,EAAOgB,EAAQf,EAAKe,EAAQwH,EAAW7E,EAAO,EAAI,EAAI,GAC1D,OAAIA,EAAO,GAAK,CAAC3C,GACbf,IACAuI,EAAW,IAEN7E,GAAQ,GAAK3C,GAAUtB,EAAK,UAAU,QAC3CM,IACAwI,EAAW,GAEN7E,EAAO,EACZ3D,IAGAC,IAEGsI,GAAS3B,GAAW7G,GAAUL,EAAMM,EAAMC,CAAE,EAAGuI,CAAQ,EAAGA,EAAW,CAAC,CACjF,CAIJ,GAAI,CAFOvE,EAAK,MAAM,IAAI,QAAQ7B,GAAO+F,GAAQ,EAAE,EAEzC,OAAO,cAAe,CAC5B,GAAIA,GAAQ,MAAQnH,IAAW2C,EAAO,GAAK3C,GAAUJ,GAASlB,CAAI,GAAI,CAClE,IAAI+I,EAAS/I,EAAK,WAAWsB,EAAS,CAAC,EACvC,GAAIyH,EAAO,UAAY,EACnB,OAAOC,GAASD,EAAO,sBAAsB,EAAG,EAAK,CAC7D,CACA,GAAIN,GAAQ,MAAQnH,EAASJ,GAASlB,CAAI,EAAG,CACzC,IAAIiJ,EAAQjJ,EAAK,WAAWsB,CAAM,EAClC,GAAI2H,EAAM,UAAY,EAClB,OAAOD,GAASC,EAAM,sBAAsB,EAAG,EAAI,CAC3D,CACA,OAAOD,GAAShJ,EAAK,sBAAsB,EAAGiE,GAAQ,CAAC,CAC3D,CAEA,GAAIwE,GAAQ,MAAQnH,IAAW2C,EAAO,GAAK3C,GAAUJ,GAASlB,CAAI,GAAI,CAClE,IAAI+I,EAAS/I,EAAK,WAAWsB,EAAS,CAAC,EACnC+G,EAASU,EAAO,UAAY,EAAI1I,GAAU0I,EAAQ7H,GAAS6H,CAAM,GAAKL,EAAoB,EAAI,EAAE,EAG9FK,EAAO,UAAY,IAAMA,EAAO,UAAY,MAAQ,CAACA,EAAO,aAAeA,EAAS,KAC1F,GAAIV,EACA,OAAOQ,GAAS3B,GAAWmB,EAAQ,CAAC,EAAG,EAAK,CACpD,CACA,GAAII,GAAQ,MAAQnH,EAASJ,GAASlB,CAAI,EAAG,CACzC,IAAIiJ,EAAQjJ,EAAK,WAAWsB,CAAM,EAClC,KAAO2H,EAAM,YAAcA,EAAM,WAAW,iBACxCA,EAAQA,EAAM,YAClB,IAAIZ,EAAUY,EAAeA,EAAM,UAAY,EAAI5I,GAAU4I,EAAO,EAAIP,EAAoB,EAAI,CAAE,EAC5FO,EAAM,UAAY,EAAIA,EAAQ,KADd,KAEtB,GAAIZ,EACA,OAAOQ,GAAS3B,GAAWmB,EAAQ,EAAE,EAAG,EAAI,CACpD,CAEA,OAAOQ,GAAS3B,GAAWlH,EAAK,UAAY,EAAIK,GAAUL,CAAI,EAAIA,EAAM,CAACiE,CAAI,EAAGA,GAAQ,CAAC,CAC7F,CACA,SAAS4E,GAAS1E,EAAM4B,EAAM,CAC1B,GAAI5B,EAAK,OAAS,EACd,OAAOA,EACX,IAAI3B,EAAIuD,EAAO5B,EAAK,KAAOA,EAAK,MAChC,MAAO,CAAE,IAAKA,EAAK,IAAK,OAAQA,EAAK,OAAQ,KAAM3B,EAAG,MAAOA,CAAE,CACnE,CACA,SAASwG,GAAS7E,EAAM2B,EAAK,CACzB,GAAI3B,EAAK,QAAU,EACf,OAAOA,EACX,IAAI1B,EAAIqD,EAAM3B,EAAK,IAAMA,EAAK,OAC9B,MAAO,CAAE,IAAK1B,EAAG,OAAQA,EAAG,KAAM0B,EAAK,KAAM,MAAOA,EAAK,KAAM,CACnE,CACA,SAAS+E,GAAiB3E,EAAM4E,EAAOC,EAAG,CACtC,IAAIC,EAAY9E,EAAK,MAAO+E,EAAS/E,EAAK,KAAK,cAC3C8E,GAAaF,GACb5E,EAAK,YAAY4E,CAAK,EACtBG,GAAU/E,EAAK,KACfA,EAAK,MAAM,EACf,GAAI,CACA,OAAO6E,EAAE,CACb,QACA,CACQC,GAAaF,GACb5E,EAAK,YAAY8E,CAAS,EAC1BC,GAAU/E,EAAK,KAAO+E,GACtBA,EAAO,MAAM,CACrB,CACJ,CAGA,SAASC,GAAuBhF,EAAM4E,EAAOnI,EAAK,CAC9C,IAAIwI,EAAML,EAAM,UACZM,EAAOzI,GAAO,KAAOwI,EAAI,MAAQA,EAAI,IACzC,OAAON,GAAiB3E,EAAM4E,EAAO,IAAM,CACvC,GAAI,CAAE,KAAMxH,CAAI,EAAI4C,EAAK,QAAQ,WAAWkF,EAAK,IAAKzI,GAAO,KAAO,GAAK,CAAC,EAC1E,OAAS,CACL,IAAI0I,EAAUnF,EAAK,QAAQ,YAAY5C,EAAK,EAAI,EAChD,GAAI,CAAC+H,EACD,MACJ,GAAIA,EAAQ,KAAK,QAAS,CACtB/H,EAAM+H,EAAQ,YAAcA,EAAQ,IACpC,KACJ,CACA/H,EAAM+H,EAAQ,IAAI,UACtB,CACA,IAAItD,EAASoC,GAAYjE,EAAMkF,EAAK,IAAK,CAAC,EAC1C,QAASrI,EAAQO,EAAI,WAAYP,EAAOA,EAAQA,EAAM,YAAa,CAC/D,IAAIuI,EACJ,GAAIvI,EAAM,UAAY,EAClBuI,EAAQvI,EAAM,eAAe,UACxBA,EAAM,UAAY,EACvBuI,EAAQtJ,GAAUe,EAAO,EAAGA,EAAM,UAAU,MAAM,EAAE,eAAe,MAEnE,UACJ,QAASyE,EAAI,EAAGA,EAAI8D,EAAM,OAAQ9D,IAAK,CACnC,IAAI+B,EAAM+B,EAAM9D,CAAC,EACjB,GAAI+B,EAAI,OAASA,EAAI,IAAM,IACtB5G,GAAO,KAAOoF,EAAO,IAAMwB,EAAI,KAAOA,EAAI,OAASxB,EAAO,KAAO,EAC5DwB,EAAI,OAASxB,EAAO,QAAUA,EAAO,OAASwB,EAAI,KAAO,GAC/D,MAAO,EACf,CACJ,CACA,MAAO,EACX,CAAC,CACL,CACA,IAAMgC,GAAW,kBACjB,SAASC,GAAyBtF,EAAM4E,EAAOnI,EAAK,CAChD,GAAI,CAAE,MAAA8I,CAAM,EAAIX,EAAM,UACtB,GAAI,CAACW,EAAM,OAAO,YACd,MAAO,GACX,IAAIxI,EAASwI,EAAM,aAAcrI,EAAU,CAACH,EAAQI,EAAQJ,GAAUwI,EAAM,OAAO,QAAQ,KACvFN,EAAMjF,EAAK,aAAa,EAC5B,OAAKiF,EAID,CAACI,GAAS,KAAKE,EAAM,OAAO,WAAW,GAAK,CAACN,EAAI,OAC1CxI,GAAO,QAAUA,GAAO,WAAaS,EAAUC,EACnDwH,GAAiB3E,EAAM4E,EAAO,IAAM,CAMvC,GAAI,CAAE,UAAWY,EAAS,YAAaC,EAAQ,WAAAC,EAAY,aAAAC,CAAa,EAAI3F,EAAK,kBAAkB,EAC/F4F,EAAeX,EAAI,eAEvBA,EAAI,OAAO,OAAQxI,EAAK,WAAW,EACnC,IAAIoJ,EAAYN,EAAM,MAAQvF,EAAK,QAAQ,YAAYuF,EAAM,OAAO,CAAC,EAAIvF,EAAK,IAC1E,CAAE,UAAW8F,EAAS,YAAaC,CAAO,EAAI/F,EAAK,kBAAkB,EACrE0C,EAASoD,GAAW,CAACD,EAAU,SAASC,EAAQ,UAAY,EAAIA,EAAUA,EAAQ,UAAU,GAC3FN,GAAWM,GAAWL,GAAUM,EAErC,GAAI,CACAd,EAAI,SAASS,EAAYC,CAAY,EACjCH,IAAYA,GAAWE,GAAcD,GAAUE,IAAiBV,EAAI,QACpEA,EAAI,OAAOO,EAASC,CAAM,CAClC,MACU,CAAE,CACZ,OAAIG,GAAgB,OAChBX,EAAI,eAAiBW,GAClBlD,CACX,CAAC,EA7BU6C,EAAM,KAAOA,EAAM,MAAM,GAAKA,EAAM,KAAOA,EAAM,IAAI,CA8BpE,CACA,IAAIS,GAAc,KACdC,GAAY,KACZC,GAAe,GACnB,SAASC,GAAenG,EAAM4E,EAAOnI,EAAK,CACtC,OAAIuJ,IAAepB,GAASqB,IAAaxJ,EAC9ByJ,IACXF,GAAcpB,EACdqB,GAAYxJ,EACLyJ,GAAezJ,GAAO,MAAQA,GAAO,OACtCuI,GAAuBhF,EAAM4E,EAAOnI,CAAG,EACvC6I,GAAyBtF,EAAM4E,EAAOnI,CAAG,EACnD,CAcA,IAAM2J,GAAY,EAAGC,GAAc,EAAGC,GAAgB,EAAGC,GAAa,EAGhEC,GAAN,KAAe,CACX,YAAY5K,EAAQ6K,EAAUrJ,EAG9BsJ,EAAY,CACR,KAAK,OAAS9K,EACd,KAAK,SAAW6K,EAChB,KAAK,IAAMrJ,EACX,KAAK,WAAasJ,EAClB,KAAK,MAAQN,GAGbhJ,EAAI,WAAa,IACrB,CAGA,cAAcuJ,EAAQ,CAAE,MAAO,EAAO,CACtC,YAAYC,EAAM,CAAE,MAAO,EAAO,CAClC,YAAYnL,EAAMoL,EAAWC,EAAW,CAAE,MAAO,EAAO,CACxD,YAAYC,EAAU,CAAE,MAAO,EAAO,CAItC,WAAY,CAAE,OAAO,IAAM,CAG3B,UAAUnJ,EAAO,CAAE,MAAO,EAAO,CAEjC,IAAI,MAAO,CACP,IAAIoJ,EAAO,EACX,QAAS1F,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACtC0F,GAAQ,KAAK,SAAS1F,CAAC,EAAE,KAC7B,OAAO0F,CACX,CAGA,IAAI,QAAS,CAAE,MAAO,EAAG,CACzB,SAAU,CACN,KAAK,OAAS,OACV,KAAK,IAAI,YAAc,OACvB,KAAK,IAAI,WAAa,QAC1B,QAAS1F,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACtC,KAAK,SAASA,CAAC,EAAE,QAAQ,CACjC,CACA,eAAezE,EAAO,CAClB,QAASyE,EAAI,EAAGnD,EAAM,KAAK,YAAamD,IAAK,CACzC,IAAIhE,EAAM,KAAK,SAASgE,CAAC,EACzB,GAAIhE,GAAOT,EACP,OAAOsB,EACXA,GAAOb,EAAI,IACf,CACJ,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,OAAO,eAAe,IAAI,CAC1C,CACA,IAAI,YAAa,CACb,OAAO,KAAK,OAAS,KAAK,OAAO,eAAe,IAAI,EAAI,KAAK,OAAS,CAC1E,CACA,IAAI,UAAW,CACX,OAAO,KAAK,UAAY,KAAK,IACjC,CACA,IAAI,UAAW,CACX,OAAO,KAAK,WAAa,KAAK,KAAO,EAAI,KAAK,MAClD,CACA,gBAAgBF,EAAKL,EAAQgG,EAAM,CAG/B,GAAI,KAAK,YAAc,KAAK,WAAW,SAAS3F,EAAI,UAAY,EAAIA,EAAMA,EAAI,UAAU,EACpF,GAAI2F,EAAO,EAAG,CACV,IAAIkE,EAAW5J,EACf,GAAID,GAAO,KAAK,WACZ6J,EAAY7J,EAAI,WAAWL,EAAS,CAAC,MAEpC,CACD,KAAOK,EAAI,YAAc,KAAK,YAC1BA,EAAMA,EAAI,WACd6J,EAAY7J,EAAI,eACpB,CACA,KAAO6J,GAAa,GAAG5J,EAAO4J,EAAU,aAAe5J,EAAK,QAAU,OAClE4J,EAAYA,EAAU,gBAC1B,OAAOA,EAAY,KAAK,eAAe5J,CAAI,EAAIA,EAAK,KAAO,KAAK,UACpE,KACK,CACD,IAAI6J,EAAU7J,EACd,GAAID,GAAO,KAAK,WACZ8J,EAAW9J,EAAI,WAAWL,CAAM,MAE/B,CACD,KAAOK,EAAI,YAAc,KAAK,YAC1BA,EAAMA,EAAI,WACd8J,EAAW9J,EAAI,WACnB,CACA,KAAO8J,GAAY,GAAG7J,EAAO6J,EAAS,aAAe7J,EAAK,QAAU,OAChE6J,EAAWA,EAAS,YACxB,OAAOA,EAAW,KAAK,eAAe7J,CAAI,EAAI,KAAK,QACvD,CAKJ,IAAIF,EACJ,GAAIC,GAAO,KAAK,KAAO,KAAK,WACxBD,EAAQJ,EAASvB,GAAS,KAAK,UAAU,UAEpC,KAAK,YAAc,KAAK,YAAc,KAAK,KAAO,KAAK,IAAI,SAAS,KAAK,UAAU,EACxF2B,EAAQC,EAAI,wBAAwB,KAAK,UAAU,EAAI,UAElD,KAAK,IAAI,WAAY,CAC1B,GAAIL,GAAU,EACV,QAASoK,EAAS/J,GAAM+J,EAASA,EAAO,WAAY,CAChD,GAAIA,GAAU,KAAK,IAAK,CACpBhK,EAAQ,GACR,KACJ,CACA,GAAIgK,EAAO,gBACP,KACR,CACJ,GAAIhK,GAAS,MAAQJ,GAAUK,EAAI,WAAW,OAC1C,QAAS+J,EAAS/J,GAAM+J,EAASA,EAAO,WAAY,CAChD,GAAIA,GAAU,KAAK,IAAK,CACpBhK,EAAQ,GACR,KACJ,CACA,GAAIgK,EAAO,YACP,KACR,CACR,CACA,OAAQhK,GAAgB4F,EAAO,EAAa,KAAK,SAAW,KAAK,UACrE,CACA,YAAY3F,EAAKgK,EAAY,GAAO,CAChC,QAASrD,EAAQ,GAAMzG,EAAMF,EAAKE,EAAKA,EAAMA,EAAI,WAAY,CACzD,IAAID,EAAO,KAAK,QAAQC,CAAG,EAAG+J,EAC9B,GAAIhK,IAAS,CAAC+J,GAAa/J,EAAK,MAE5B,GAAI0G,IAAUsD,EAAUhK,EAAK,UACzB,EAAEgK,EAAQ,UAAY,EAAIA,EAAQ,SAASjK,EAAI,UAAY,EAAIA,EAAMA,EAAI,UAAU,EAAIiK,GAAWjK,GAClG2G,EAAQ,OAER,QAAO1G,CAEnB,CACJ,CACA,QAAQD,EAAK,CACT,IAAIC,EAAOD,EAAI,WACf,QAASE,EAAMD,EAAMC,EAAKA,EAAMA,EAAI,OAChC,GAAIA,GAAO,KACP,OAAOD,CACnB,CACA,WAAWD,EAAKL,EAAQgG,EAAM,CAC1B,QAASuE,EAAOlK,EAAKkK,EAAMA,EAAOA,EAAK,WAAY,CAC/C,IAAIjK,EAAO,KAAK,QAAQiK,CAAI,EAC5B,GAAIjK,EACA,OAAOA,EAAK,gBAAgBD,EAAKL,EAAQgG,CAAI,CACrD,CACA,MAAO,EACX,CAGA,OAAO5E,EAAK,CACR,QAASmD,EAAI,EAAGvE,EAAS,EAAGuE,EAAI,KAAK,SAAS,OAAQA,IAAK,CACvD,IAAIzE,EAAQ,KAAK,SAASyE,CAAC,EAAGiG,EAAMxK,EAASF,EAAM,KACnD,GAAIE,GAAUoB,GAAOoJ,GAAOxK,EAAQ,CAChC,KAAO,CAACF,EAAM,QAAUA,EAAM,SAAS,QACnC,QAASyE,EAAI,EAAGA,EAAIzE,EAAM,SAAS,OAAQyE,IAAK,CAC5C,IAAIkG,EAAQ3K,EAAM,SAASyE,CAAC,EAC5B,GAAIkG,EAAM,KAAM,CACZ3K,EAAQ2K,EACR,KACJ,CACJ,CAEJ,OAAO3K,CACX,CACA,GAAIsB,EAAMoJ,EACN,OAAO1K,EAAM,OAAOsB,EAAMpB,EAASF,EAAM,MAAM,EACnDE,EAASwK,CACb,CACJ,CACA,WAAWpJ,EAAKuB,EAAM,CAClB,GAAI,CAAC,KAAK,WACN,MAAO,CAAE,KAAM,KAAK,IAAK,OAAQ,EAAG,KAAMvB,EAAM,CAAE,EAEtD,IAAImD,EAAI,EAAGvE,EAAS,EACpB,QAAS0K,EAAS,EAAGnG,EAAI,KAAK,SAAS,OAAQA,IAAK,CAChD,IAAIzE,EAAQ,KAAK,SAASyE,CAAC,EAAGiG,EAAME,EAAS5K,EAAM,KACnD,GAAI0K,EAAMpJ,GAAOtB,aAAiB6K,GAAsB,CACpD3K,EAASoB,EAAMsJ,EACf,KACJ,CACAA,EAASF,CACb,CAEA,GAAIxK,EACA,OAAO,KAAK,SAASuE,CAAC,EAAE,WAAWvE,EAAS,KAAK,SAASuE,CAAC,EAAE,OAAQ5B,CAAI,EAE7E,QAASkE,EAAMtC,GAAK,EAAEsC,EAAO,KAAK,SAAStC,EAAI,CAAC,GAAG,MAAQsC,aAAgB+D,IAAkB/D,EAAK,MAAQ,EAAGtC,IAAK,CAElH,GAAI5B,GAAQ,EAAG,CACX,IAAIkE,EAAMgE,EAAQ,GAClB,KACIhE,EAAOtC,EAAI,KAAK,SAASA,EAAI,CAAC,EAAI,KAC9B,GAACsC,GAAQA,EAAK,IAAI,YAAc,KAAK,YAFrCtC,IAAKsG,EAAQ,GAEjB,CAGJ,OAAIhE,GAAQlE,GAAQkI,GAAS,CAAChE,EAAK,QAAU,CAACA,EAAK,QACxCA,EAAK,WAAWA,EAAK,KAAMlE,CAAI,EACnC,CAAE,KAAM,KAAK,WAAY,OAAQkE,EAAOpI,GAASoI,EAAK,GAAG,EAAI,EAAI,CAAE,CAC9E,KACK,CACD,IAAID,EAAMiE,EAAQ,GAClB,KACIjE,EAAOrC,EAAI,KAAK,SAAS,OAAS,KAAK,SAASA,CAAC,EAAI,KACjD,GAACqC,GAAQA,EAAK,IAAI,YAAc,KAAK,YAFrCrC,IAAKsG,EAAQ,GAEjB,CAGJ,OAAIjE,GAAQiE,GAAS,CAACjE,EAAK,QAAU,CAACA,EAAK,QAChCA,EAAK,WAAW,EAAGjE,CAAI,EAC3B,CAAE,KAAM,KAAK,WAAY,OAAQiE,EAAOnI,GAASmI,EAAK,GAAG,EAAI,KAAK,WAAW,WAAW,MAAO,CAC1G,CACJ,CAGA,WAAW5H,EAAMC,EAAI6L,EAAO,EAAG,CAC3B,GAAI,KAAK,SAAS,QAAU,EACxB,MAAO,CAAE,KAAM,KAAK,WAAY,KAAA9L,EAAM,GAAAC,EAAI,WAAY,EAAG,SAAU,KAAK,WAAW,WAAW,MAAO,EACzG,IAAI8L,EAAa,GAAIC,EAAW,GAChC,QAAShL,EAAS8K,EAAMvG,EAAI,GAAIA,IAAK,CACjC,IAAIzE,EAAQ,KAAK,SAASyE,CAAC,EAAGiG,EAAMxK,EAASF,EAAM,KACnD,GAAIiL,GAAc,IAAM/L,GAAQwL,EAAK,CACjC,IAAIS,EAAYjL,EAASF,EAAM,OAE/B,GAAId,GAAQiM,GAAahM,GAAMuL,EAAM1K,EAAM,QAAUA,EAAM,MACvDA,EAAM,YAAc,KAAK,WAAW,SAASA,EAAM,UAAU,EAC7D,OAAOA,EAAM,WAAWd,EAAMC,EAAIgM,CAAS,EAC/CjM,EAAOgB,EACP,QAASwG,EAAIjC,EAAGiC,EAAI,EAAGA,IAAK,CACxB,IAAIK,EAAO,KAAK,SAASL,EAAI,CAAC,EAC9B,GAAIK,EAAK,MAAQA,EAAK,IAAI,YAAc,KAAK,YAAc,CAACA,EAAK,aAAa,CAAC,EAAG,CAC9EkE,EAAatM,GAASoI,EAAK,GAAG,EAAI,EAClC,KACJ,CACA7H,GAAQ6H,EAAK,IACjB,CACIkE,GAAc,KACdA,EAAa,EACrB,CACA,GAAIA,EAAa,KAAOP,EAAMvL,GAAMsF,GAAK,KAAK,SAAS,OAAS,GAAI,CAChEtF,EAAKuL,EACL,QAAShE,EAAIjC,EAAI,EAAGiC,EAAI,KAAK,SAAS,OAAQA,IAAK,CAC/C,IAAII,EAAO,KAAK,SAASJ,CAAC,EAC1B,GAAII,EAAK,MAAQA,EAAK,IAAI,YAAc,KAAK,YAAc,CAACA,EAAK,aAAa,EAAE,EAAG,CAC/EoE,EAAWvM,GAASmI,EAAK,GAAG,EAC5B,KACJ,CACA3H,GAAM2H,EAAK,IACf,CACIoE,GAAY,KACZA,EAAW,KAAK,WAAW,WAAW,QAC1C,KACJ,CACAhL,EAASwK,CACb,CACA,MAAO,CAAE,KAAM,KAAK,WAAY,KAAAxL,EAAM,GAAAC,EAAI,WAAA8L,EAAY,SAAAC,CAAS,CACnE,CACA,aAAarI,EAAM,CACf,GAAI,KAAK,QAAU,CAAC,KAAK,YAAc,CAAC,KAAK,SAAS,OAClD,MAAO,GACX,IAAI7C,EAAQ,KAAK,SAAS6C,EAAO,EAAI,EAAI,KAAK,SAAS,OAAS,CAAC,EACjE,OAAO7C,EAAM,MAAQ,GAAKA,EAAM,aAAa6C,CAAI,CACrD,CACA,YAAYvB,EAAK,CACb,GAAI,CAAE,KAAA1C,EAAM,OAAAsB,CAAO,EAAI,KAAK,WAAWoB,EAAK,CAAC,EAC7C,GAAI1C,EAAK,UAAY,GAAKsB,GAAUtB,EAAK,WAAW,OAChD,MAAM,IAAI,WAAW,qBAAuB0C,CAAG,EACnD,OAAO1C,EAAK,WAAWsB,CAAM,CACjC,CAMA,aAAakL,EAAQC,EAAMlI,EAAMmI,EAAQ,GAAO,CAE5C,IAAIpM,EAAO,KAAK,IAAIkM,EAAQC,CAAI,EAAGlM,EAAK,KAAK,IAAIiM,EAAQC,CAAI,EAC7D,QAAS5G,EAAI,EAAGvE,EAAS,EAAGuE,EAAI,KAAK,SAAS,OAAQA,IAAK,CACvD,IAAIzE,EAAQ,KAAK,SAASyE,CAAC,EAAGiG,EAAMxK,EAASF,EAAM,KACnD,GAAId,EAAOgB,GAAUf,EAAKuL,EACtB,OAAO1K,EAAM,aAAaoL,EAASlL,EAASF,EAAM,OAAQqL,EAAOnL,EAASF,EAAM,OAAQmD,EAAMmI,CAAK,EACvGpL,EAASwK,CACb,CACA,IAAIa,EAAY,KAAK,WAAWH,EAAQA,EAAS,GAAK,CAAC,EACnDI,EAAUH,GAAQD,EAASG,EAAY,KAAK,WAAWF,EAAMA,EAAO,GAAK,CAAC,EAC1E1K,EAASwC,EAAK,KAAK,aAAa,EAChCsI,EAAWtI,EAAK,kBAAkB,EAClCuI,EAAW,GAKf,IAAK5J,IAASI,KAAWkJ,GAAUC,EAAM,CACrC,GAAI,CAAE,KAAAzM,EAAM,OAAAsB,CAAO,EAAIqL,EACvB,GAAI3M,EAAK,UAAY,GAGjB,GAFA8M,EAAW,CAAC,EAAExL,GAAUtB,EAAK,UAAUsB,EAAS,CAAC,GAAK;AAAA,GAElDwL,GAAYxL,GAAUtB,EAAK,UAAU,OACrC,QAAS6L,EAAO7L,EAAMiJ,EAAO4C,EAAMA,EAAOA,EAAK,WAAY,CACvD,GAAI5C,EAAQ4C,EAAK,YAAa,CACtB5C,EAAM,UAAY,OAClB0D,EAAYC,EAAU,CAAE,KAAM3D,EAAM,WAAY,OAAQlJ,GAASkJ,CAAK,EAAI,CAAE,GAChF,KACJ,CACA,IAAIrH,EAAOiK,EAAK,WAChB,GAAIjK,GAAQA,EAAK,MAAQA,EAAK,KAAK,QAC/B,KACR,MAGH,CACD,IAAIuG,EAAOnI,EAAK,WAAWsB,EAAS,CAAC,EACrCwL,EAAW3E,IAASA,EAAK,UAAY,MAAQA,EAAK,iBAAmB,QACzE,CACJ,CAGA,GAAIjF,IAAS2J,EAAS,WAAaA,EAAS,WAAaD,EAAQ,MAAQC,EAAS,UAAU,UAAY,EAAG,CACvG,IAAI5D,EAAQ4D,EAAS,UAAU,WAAWA,EAAS,WAAW,EAC1D5D,GAASA,EAAM,iBAAmB,UAClCyD,EAAQ,GAChB,CACA,GAAI,EAAEA,GAASI,GAAYxJ,KACvB5C,GAAqBiM,EAAU,KAAMA,EAAU,OAAQE,EAAS,WAAYA,EAAS,YAAY,GACjGnM,GAAqBkM,EAAQ,KAAMA,EAAQ,OAAQC,EAAS,UAAWA,EAAS,WAAW,EAC3F,OAIJ,IAAIE,EAAiB,GACrB,IAAKhL,EAAO,QAAUyK,GAAUC,IAAS,EAAEK,GAAY5J,IAAQ,CAC3DnB,EAAO,SAAS4K,EAAU,KAAMA,EAAU,MAAM,EAChD,GAAI,CACIH,GAAUC,GACV1K,EAAO,OAAO6K,EAAQ,KAAMA,EAAQ,MAAM,EAC9CG,EAAiB,EACrB,MACU,CAOV,CACJ,CACA,GAAI,CAACA,EAAgB,CACjB,GAAIP,EAASC,EAAM,CACf,IAAIO,EAAML,EACVA,EAAYC,EACZA,EAAUI,CACd,CACA,IAAIxM,EAAQ,SAAS,YAAY,EACjCA,EAAM,OAAOoM,EAAQ,KAAMA,EAAQ,MAAM,EACzCpM,EAAM,SAASmM,EAAU,KAAMA,EAAU,MAAM,EAC/C5K,EAAO,gBAAgB,EACvBA,EAAO,SAASvB,CAAK,CACzB,CACJ,CACA,eAAeyM,EAAU,CACrB,MAAO,CAAC,KAAK,YAAcA,EAAS,MAAQ,WAChD,CACA,IAAI,aAAc,CACd,OAAO,KAAK,YAAc,KAAK,YAAc,KAAK,KAAO,CAAC,KAAK,IAAI,SAAS,KAAK,UAAU,CAC/F,CAGA,UAAU3M,EAAMC,EAAI,CAChB,QAASe,EAAS,EAAGuE,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IAAK,CACvD,IAAIzE,EAAQ,KAAK,SAASyE,CAAC,EAAGiG,EAAMxK,EAASF,EAAM,KACnD,GAAIE,GAAUwK,EAAMxL,GAAQwL,GAAOvL,GAAMe,EAAShB,EAAOwL,GAAOvL,EAAKe,EAAQ,CACzE,IAAI4L,EAAc5L,EAASF,EAAM,OAAQ+L,EAAYrB,EAAM1K,EAAM,OACjE,GAAId,GAAQ4M,GAAe3M,GAAM4M,EAAW,CACxC,KAAK,MAAQ7M,GAAQgB,GAAUf,GAAMuL,EAAMjB,GAAgBD,GACvDtK,GAAQ4M,GAAe3M,GAAM4M,IAC5B/L,EAAM,aAAeA,EAAM,IAAI,YAAc,KAAK,YACnDA,EAAM,MAAQ0J,GAEd1J,EAAM,UAAUd,EAAO4M,EAAa3M,EAAK2M,CAAW,EACxD,MACJ,MAEI9L,EAAM,MAAQA,EAAM,KAAOA,EAAM,YAAcA,EAAM,IAAI,YAAc,KAAK,YAAc,CAACA,EAAM,SAAS,OACpGyJ,GAAgBC,EAE9B,CACAxJ,EAASwK,CACb,CACA,KAAK,MAAQjB,EACjB,CACA,kBAAmB,CACf,IAAIuC,EAAQ,EACZ,QAASpN,EAAO,KAAK,OAAQA,EAAMA,EAAOA,EAAK,OAAQoN,IAAS,CAC5D,IAAIC,EAAQD,GAAS,EAAIvC,GAAgBD,GACrC5K,EAAK,MAAQqN,IACbrN,EAAK,MAAQqN,EACrB,CACJ,CACA,IAAI,SAAU,CAAE,MAAO,EAAO,CAC9B,IAAI,iBAAkB,CAAE,MAAO,EAAO,CACtC,IAAI,oBAAqB,CAAE,MAAO,EAAO,CACzC,OAAOC,EAAM,CAAE,MAAO,EAAO,CACjC,EAGMpB,GAAN,cAA6BnB,EAAS,CAClC,YAAY5K,EAAQ+K,EAAQ3G,EAAM7B,EAAK,CACnC,IAAI6K,EAAM5L,EAAMuJ,EAAO,KAAK,MAQ5B,GAPI,OAAOvJ,GAAO,aACdA,EAAMA,EAAI4C,EAAM,IAAM,CAClB,GAAI,CAACgJ,EACD,OAAO7K,EACX,GAAI6K,EAAK,OACL,OAAOA,EAAK,OAAO,eAAeA,CAAI,CAC9C,CAAC,GACD,CAACrC,EAAO,KAAK,KAAK,IAAK,CACvB,GAAIvJ,EAAI,UAAY,EAAG,CACnB,IAAI6L,EAAO,SAAS,cAAc,MAAM,EACxCA,EAAK,YAAY7L,CAAG,EACpBA,EAAM6L,CACV,CACA7L,EAAI,gBAAkB,QACtBA,EAAI,UAAU,IAAI,oBAAoB,CAC1C,CACA,MAAMxB,EAAQ,CAAC,EAAGwB,EAAK,IAAI,EAC3B,KAAK,OAASuJ,EACd,KAAK,OAASA,EACdqC,EAAO,IACX,CACA,cAAcrC,EAAQ,CAClB,OAAO,KAAK,OAASP,IAAaO,EAAO,KAAK,GAAG,KAAK,OAAO,IAAI,CACrE,CACA,WAAY,CAAE,MAAO,CAAE,OAAQ,EAAK,CAAG,CACvC,UAAU/I,EAAO,CACb,IAAIsL,EAAO,KAAK,OAAO,KAAK,UAC5B,OAAOA,EAAOA,EAAKtL,CAAK,EAAI,EAChC,CACA,eAAe8K,EAAU,CACrB,OAAOA,EAAS,MAAQ,aAAe,KAAK,OAAO,KAAK,eAC5D,CACA,SAAU,CACN,KAAK,OAAO,KAAK,QAAQ,KAAK,GAAG,EACjC,MAAM,QAAQ,CAClB,CACA,IAAI,SAAU,CAAE,MAAO,EAAM,CAC7B,IAAI,oBAAqB,CAAE,MAAO,CAAC,CAAC,KAAK,OAAO,KAAK,KAAK,WAAa,CACvE,IAAI,MAAO,CAAE,OAAO,KAAK,OAAO,KAAK,IAAM,CAC/C,EACMS,GAAN,cAAkC3C,EAAS,CACvC,YAAY5K,EAAQwB,EAAKgM,EAASL,EAAM,CACpC,MAAMnN,EAAQ,CAAC,EAAGwB,EAAK,IAAI,EAC3B,KAAK,QAAUgM,EACf,KAAK,KAAOL,CAChB,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,KAAK,MAAQ,CACtC,gBAAgB3L,EAAKL,EAAQ,CACzB,OAAIK,GAAO,KAAK,QACL,KAAK,YAAcL,EAAS,KAAK,KAAO,GAC5C,KAAK,WAAaA,CAC7B,CACA,WAAWoB,EAAK,CACZ,MAAO,CAAE,KAAM,KAAK,QAAS,OAAQA,CAAI,CAC7C,CACA,eAAekL,EAAK,CAChB,OAAOA,EAAI,OAAS,iBAAmBA,EAAI,OAAO,WAAaA,EAAI,QACvE,CACJ,EAMMC,GAAN,MAAMC,UAAqB/C,EAAS,CAChC,YAAY5K,EAAQgL,EAAMxJ,EAAKsJ,EAAY8C,EAAM,CAC7C,MAAM5N,EAAQ,CAAC,EAAGwB,EAAKsJ,CAAU,EACjC,KAAK,KAAOE,EACZ,KAAK,KAAO4C,CAChB,CACA,OAAO,OAAO5N,EAAQgL,EAAM6C,EAAQzJ,EAAM,CACtC,IAAI0J,EAAS1J,EAAK,UAAU4G,EAAK,KAAK,IAAI,EACtC4C,EAAOE,GAAUA,EAAO9C,EAAM5G,EAAMyJ,CAAM,EAC9C,OAAI,CAACD,GAAQ,CAACA,EAAK,OACfA,EAAOG,GAAc,WAAW,SAAU/C,EAAK,KAAK,KAAK,MAAMA,EAAM6C,CAAM,EAAG,KAAM7C,EAAK,KAAK,GAC3F,IAAI2C,EAAa3N,EAAQgL,EAAM4C,EAAK,IAAKA,EAAK,YAAcA,EAAK,IAAKA,CAAI,CACrF,CACA,WAAY,CACR,OAAK,KAAK,MAAQjD,IAAe,KAAK,KAAK,KAAK,KAAK,cAC1C,KACJ,CAAE,KAAM,KAAK,KAAK,KAAK,KAAM,MAAO,KAAK,KAAK,MAAO,eAAgB,KAAK,UAAW,CAChG,CACA,YAAYK,EAAM,CAAE,OAAO,KAAK,OAASL,IAAc,KAAK,KAAK,GAAGK,CAAI,CAAG,CAC3E,UAAU7K,EAAMC,EAAI,CAGhB,GAFA,MAAM,UAAUD,EAAMC,CAAE,EAEpB,KAAK,OAASoK,GAAW,CACzB,IAAIxK,EAAS,KAAK,OAClB,KAAO,CAACA,EAAO,MACXA,EAASA,EAAO,OAChBA,EAAO,MAAQ,KAAK,QACpBA,EAAO,MAAQ,KAAK,OACxB,KAAK,MAAQwK,EACjB,CACJ,CACA,MAAMrK,EAAMC,EAAIgE,EAAM,CAClB,IAAI4J,EAAOL,EAAa,OAAO,KAAK,OAAQ,KAAK,KAAM,GAAMvJ,CAAI,EAC7D6J,EAAQ,KAAK,SAAU7C,EAAO,KAAK,KACnChL,EAAKgL,IACL6C,EAAQC,GAAaD,EAAO7N,EAAIgL,EAAMhH,CAAI,GAC1CjE,EAAO,IACP8N,EAAQC,GAAaD,EAAO,EAAG9N,EAAMiE,CAAI,GAC7C,QAASsB,EAAI,EAAGA,EAAIuI,EAAM,OAAQvI,IAC9BuI,EAAMvI,CAAC,EAAE,OAASsI,EACtB,OAAAA,EAAK,SAAWC,EACTD,CACX,CACA,eAAelB,EAAU,CACrB,OAAO,KAAK,KAAK,eAAiB,KAAK,KAAK,eAAeA,CAAQ,EAAI,MAAM,eAAeA,CAAQ,CACxG,CACA,SAAU,CACF,KAAK,KAAK,SACV,KAAK,KAAK,QAAQ,EACtB,MAAM,QAAQ,CAClB,CACJ,EAIMqB,GAAN,MAAMC,UAAqBxD,EAAS,CAChC,YAAY5K,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKsJ,EAAYW,EAASrH,EAAM7B,EAAK,CACjF,MAAMvC,EAAQ,CAAC,EAAGwB,EAAKsJ,CAAU,EACjC,KAAK,KAAOjL,EACZ,KAAK,UAAYoL,EACjB,KAAK,UAAYC,EACjB,KAAK,QAAUO,CACnB,CAUA,OAAO,OAAOzL,EAAQH,EAAMoL,EAAWC,EAAW9G,EAAM7B,EAAK,CACzD,IAAIuL,EAAS1J,EAAK,UAAUvE,EAAK,KAAK,IAAI,EAAGwO,EACzCT,EAAOE,GAAUA,EAAOjO,EAAMuE,EAAM,IAAM,CAG1C,GAAI,CAACiK,EACD,OAAO9L,EACX,GAAI8L,EAAQ,OACR,OAAOA,EAAQ,OAAO,eAAeA,CAAO,CACpD,EAAGpD,EAAWC,CAAS,EACnB1J,EAAMoM,GAAQA,EAAK,IAAK9C,EAAa8C,GAAQA,EAAK,WACtD,GAAI/N,EAAK,QACL,GAAI,CAAC2B,EACDA,EAAM,SAAS,eAAe3B,EAAK,IAAI,UAClC2B,EAAI,UAAY,EACrB,MAAM,IAAI,WAAW,0CAA0C,OAE7DA,IAEL,CAAE,IAAAA,EAAK,WAAAsJ,CAAW,EADRiD,GAAc,WAAW,SAAUlO,EAAK,KAAK,KAAK,MAAMA,CAAI,EAAG,KAAMA,EAAK,KAAK,GAG1F,CAACiL,GAAc,CAACjL,EAAK,QAAU2B,EAAI,UAAY,OAC1CA,EAAI,aAAa,iBAAiB,IACnCA,EAAI,gBAAkB,SACtB3B,EAAK,KAAK,KAAK,YACf2B,EAAI,UAAY,KAExB,IAAIiK,EAAUjK,EAEd,OADAA,EAAM8M,GAAe9M,EAAKyJ,EAAWpL,CAAI,EACrC+N,EACOS,EAAU,IAAIE,GAAmBvO,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKsJ,GAAc,KAAMW,EAASmC,EAAMxJ,EAAM7B,EAAM,CAAC,EAC5H1C,EAAK,OACH,IAAI2O,GAAaxO,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKiK,EAASrH,CAAI,EAEvE,IAAIgK,EAAapO,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKsJ,GAAc,KAAMW,EAASrH,EAAM7B,EAAM,CAAC,CACnH,CACA,WAAY,CAER,GAAI,KAAK,KAAK,KAAK,KAAK,cACpB,OAAO,KAKX,IAAIkM,EAAO,CAAE,KAAM,KAAK,KAAK,KAAK,KAAM,MAAO,KAAK,KAAK,KAAM,EAG/D,GAFI,KAAK,KAAK,KAAK,YAAc,QAC7BA,EAAK,mBAAqB,QAC1B,CAAC,KAAK,WACNA,EAAK,WAAa,IAAM,KAAK,KAAK,gBAE7B,CAAC,KAAK,YACXA,EAAK,eAAiB,KAAK,eAE1B,CAID,QAAS/I,EAAI,KAAK,SAAS,OAAS,EAAGA,GAAK,EAAGA,IAAK,CAChD,IAAIzE,EAAQ,KAAK,SAASyE,CAAC,EAC3B,GAAI,KAAK,IAAI,SAASzE,EAAM,IAAI,UAAU,EAAG,CACzCwN,EAAK,eAAiBxN,EAAM,IAAI,WAChC,KACJ,CACJ,CACKwN,EAAK,iBACNA,EAAK,WAAa,IAAMC,EAAS,MACzC,CACA,OAAOD,CACX,CACA,YAAY5O,EAAMoL,EAAWC,EAAW,CACpC,OAAO,KAAK,OAASV,IAAa3K,EAAK,GAAG,KAAK,IAAI,GAC/C8O,GAAc1D,EAAW,KAAK,SAAS,GAAKC,EAAU,GAAG,KAAK,SAAS,CAC/E,CACA,IAAI,MAAO,CAAE,OAAO,KAAK,KAAK,QAAU,CACxC,IAAI,QAAS,CAAE,OAAO,KAAK,KAAK,OAAS,EAAI,CAAG,CAKhD,eAAe9G,EAAM7B,EAAK,CACtB,IAAIsL,EAAS,KAAK,KAAK,cAAerN,EAAM+B,EACxCqM,EAAcxK,EAAK,UAAY,KAAK,qBAAqBA,EAAM7B,CAAG,EAAI,KACtEsM,EAAmBD,GAAeA,EAAY,IAAM,GAAKA,EAAc,KACvEE,EAAqBF,GAAeA,EAAY,IAAM,EACtDG,EAAU,IAAIC,GAAgB,KAAMH,GAAoBA,EAAiB,KAAMzK,CAAI,EACvF6K,GAAS,KAAK,KAAM,KAAK,UAAW,CAAClE,EAAQrF,EAAGwJ,IAAe,CACvDnE,EAAO,KAAK,MACZgE,EAAQ,YAAYhE,EAAO,KAAK,MAAO8C,EAAQzJ,EAAMsB,CAAC,EACjDqF,EAAO,KAAK,MAAQ,GAAK,CAACmE,GAC/BH,EAAQ,YAAYrJ,GAAK,KAAK,KAAK,WAAayJ,GAAK,KAAO,KAAK,KAAK,MAAMzJ,CAAC,EAAE,MAAOmI,EAAQzJ,EAAMsB,CAAC,EAGzGqJ,EAAQ,YAAYhE,EAAQ3G,EAAM5D,CAAG,CACzC,EAAG,CAACS,EAAOgK,EAAWC,EAAWxF,IAAM,CAEnCqJ,EAAQ,YAAY9N,EAAM,MAAO4M,EAAQzJ,EAAMsB,CAAC,EAEhD,IAAI0J,EACAL,EAAQ,cAAc9N,EAAOgK,EAAWC,EAAWxF,CAAC,GAC/CoJ,GAAsB1K,EAAK,MAAM,UAAU,KAAO5D,GACvD4D,EAAK,MAAM,UAAU,GAAK5D,EAAMS,EAAM,WACrCmO,EAAYL,EAAQ,mBAAmBH,EAAY,IAAI,GAAK,IAC7DG,EAAQ,aAAa9N,EAAOgK,EAAWC,EAAWkE,EAAWhL,CAAI,GAC5D2K,EAAQ,eAAe9N,EAAOgK,EAAWC,EAAW9G,EAAMsB,EAAGlF,CAAG,GAGrEuO,EAAQ,QAAQ9N,EAAOgK,EAAWC,EAAW9G,EAAM5D,CAAG,EAE1DA,GAAOS,EAAM,QACjB,CAAC,EAED8N,EAAQ,YAAY,CAAC,EAAGlB,EAAQzJ,EAAM,CAAC,EACnC,KAAK,KAAK,aACV2K,EAAQ,kBAAkB,EAC9BA,EAAQ,YAAY,GAEhBA,EAAQ,SAAW,KAAK,OAASrE,MAE7BmE,GACA,KAAK,wBAAwBzK,EAAMyK,CAAgB,EACvDQ,GAAY,KAAK,WAAY,KAAK,SAAUjL,CAAI,EAC5ChB,IACAkM,GAAS,KAAK,GAAG,EAE7B,CACA,qBAAqBlL,EAAM7B,EAAK,CAG5B,GAAI,CAAE,KAAApC,EAAM,GAAAC,CAAG,EAAIgE,EAAK,MAAM,UAC9B,GAAI,EAAEA,EAAK,MAAM,qBAAqBmL,KAAkBpP,EAAOoC,GAAOnC,EAAKmC,EAAM,KAAK,KAAK,QAAQ,KAC/F,OAAO,KACX,IAAIiN,EAAWpL,EAAK,MAAM,gBAC1B,GAAI,CAACoL,GAAY,CAAC,KAAK,IAAI,SAASA,EAAS,UAAU,EACnD,OAAO,KACX,GAAI,KAAK,KAAK,cAAe,CAIzB,IAAIrC,EAAOqC,EAAS,UAChBC,EAAUC,GAAmB,KAAK,KAAK,QAASvC,EAAMhN,EAAOoC,EAAKnC,EAAKmC,CAAG,EAC9E,OAAOkN,EAAU,EAAI,KAAO,CAAE,KAAMD,EAAU,IAAKC,EAAS,KAAAtC,CAAK,CACrE,KAEI,OAAO,CAAE,KAAMqC,EAAU,IAAK,GAAI,KAAM,EAAG,CAEnD,CACA,wBAAwBpL,EAAM,CAAE,KAAAvE,EAAM,IAAA0C,EAAK,KAAA4K,CAAK,EAAG,CAE/C,GAAI,KAAK,QAAQtN,CAAI,EACjB,OAEJ,IAAI8P,EAAU9P,EACd,KACQ8P,EAAQ,YAAc,KAAK,WAD3BA,EAAUA,EAAQ,WAAY,CAGlC,KAAOA,EAAQ,iBACXA,EAAQ,WAAW,YAAYA,EAAQ,eAAe,EAC1D,KAAOA,EAAQ,aACXA,EAAQ,WAAW,YAAYA,EAAQ,WAAW,EAClDA,EAAQ,aACRA,EAAQ,WAAa,OAC7B,CACA,IAAIlO,EAAO,IAAI8L,GAAoB,KAAMoC,EAAS9P,EAAMsN,CAAI,EAC5D/I,EAAK,MAAM,iBAAiB,KAAK3C,CAAI,EAErC,KAAK,SAAWyM,GAAa,KAAK,SAAU3L,EAAKA,EAAM4K,EAAK,OAAQ/I,EAAM3C,CAAI,CAClF,CAGA,OAAO5B,EAAMoL,EAAWC,EAAW9G,EAAM,CACrC,OAAI,KAAK,OAASuG,IACd,CAAC9K,EAAK,WAAW,KAAK,IAAI,EACnB,IACX,KAAK,YAAYA,EAAMoL,EAAWC,EAAW9G,CAAI,EAC1C,GACX,CACA,YAAYvE,EAAMoL,EAAWC,EAAW9G,EAAM,CAC1C,KAAK,gBAAgB6G,CAAS,EAC9B,KAAK,KAAOpL,EACZ,KAAK,UAAYqL,EACb,KAAK,YACL,KAAK,eAAe9G,EAAM,KAAK,UAAU,EAC7C,KAAK,MAAQoG,EACjB,CACA,gBAAgBS,EAAW,CACvB,GAAI0D,GAAc1D,EAAW,KAAK,SAAS,EACvC,OACJ,IAAI2E,EAAY,KAAK,QAAQ,UAAY,EACrCC,EAAS,KAAK,IAClB,KAAK,IAAMC,GAAe,KAAK,IAAK,KAAK,QAASC,GAAiB,KAAK,UAAW,KAAK,KAAMH,CAAS,EAAGG,GAAiB9E,EAAW,KAAK,KAAM2E,CAAS,CAAC,EACvJ,KAAK,KAAOC,IACZA,EAAO,WAAa,OACpB,KAAK,IAAI,WAAa,MAE1B,KAAK,UAAY5E,CACrB,CAEA,YAAa,CACL,KAAK,QAAQ,UAAY,IACzB,KAAK,QAAQ,UAAU,IAAI,0BAA0B,GACjD,KAAK,YAAc,CAAC,KAAK,KAAK,KAAK,KAAK,aACxC,KAAK,QAAQ,UAAY,IAErC,CAEA,cAAe,CACP,KAAK,QAAQ,UAAY,IACzB,KAAK,QAAQ,UAAU,OAAO,0BAA0B,GACpD,KAAK,YAAc,CAAC,KAAK,KAAK,KAAK,KAAK,YACxC,KAAK,QAAQ,gBAAgB,WAAW,EAEpD,CACA,IAAI,SAAU,CAAE,OAAO,KAAK,KAAK,MAAQ,CAC7C,EAGA,SAAS+E,GAAY9N,EAAK+I,EAAWC,EAAW1J,EAAK4C,EAAM,CACvDkK,GAAe9M,EAAKyJ,EAAW/I,CAAG,EAClC,IAAI+N,EAAU,IAAI9B,GAAa,OAAWjM,EAAK+I,EAAWC,EAAW1J,EAAKA,EAAKA,EAAK4C,EAAM,CAAC,EAC3F,OAAI6L,EAAQ,YACRA,EAAQ,eAAe7L,EAAM,CAAC,EAC3B6L,CACX,CACA,IAAMzB,GAAN,MAAM0B,UAAqB/B,EAAa,CACpC,YAAYnO,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKiK,EAASrH,EAAM,CAChE,MAAMpE,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAK,KAAMiK,EAASrH,EAAM,CAAC,CACzE,CACA,WAAY,CACR,IAAI+L,EAAO,KAAK,QAAQ,WACxB,KAAOA,GAAQA,GAAQ,KAAK,KAAO,CAACA,EAAK,UACrCA,EAAOA,EAAK,WAChB,MAAO,CAAE,KAAOA,GAAQ,EAAM,CAClC,CACA,OAAOtQ,EAAMoL,EAAWC,EAAW9G,EAAM,CACrC,OAAI,KAAK,OAASuG,IAAe,KAAK,OAASH,IAAa,CAAC,KAAK,SAAS,GACvE,CAAC3K,EAAK,WAAW,KAAK,IAAI,EACnB,IACX,KAAK,gBAAgBoL,CAAS,GACzB,KAAK,OAAST,IAAa3K,EAAK,MAAQ,KAAK,KAAK,OAASA,EAAK,MAAQ,KAAK,QAAQ,YACtF,KAAK,QAAQ,UAAYA,EAAK,KAC1BuE,EAAK,aAAe,KAAK,UACzBA,EAAK,YAAc,OAE3B,KAAK,KAAOvE,EACZ,KAAK,MAAQ2K,GACN,GACX,CACA,UAAW,CACP,IAAIP,EAAY,KAAK,OAAO,WAC5B,QAAS,EAAI,KAAK,QAAS,EAAG,EAAI,EAAE,WAChC,GAAI,GAAKA,EACL,MAAO,GACf,MAAO,EACX,CACA,WAAW1H,EAAK,CACZ,MAAO,CAAE,KAAM,KAAK,QAAS,OAAQA,CAAI,CAC7C,CACA,gBAAgBf,EAAKL,EAAQgG,EAAM,CAC/B,OAAI3F,GAAO,KAAK,QACL,KAAK,WAAa,KAAK,IAAIL,EAAQ,KAAK,KAAK,KAAK,MAAM,EAC5D,MAAM,gBAAgBK,EAAKL,EAAQgG,CAAI,CAClD,CACA,eAAe2F,EAAU,CACrB,OAAOA,EAAS,MAAQ,iBAAmBA,EAAS,MAAQ,WAChE,CACA,MAAM3M,EAAMC,EAAIgE,EAAM,CAClB,IAAIvE,EAAO,KAAK,KAAK,IAAIM,EAAMC,CAAE,EAAGoB,EAAM,SAAS,eAAe3B,EAAK,IAAI,EAC3E,OAAO,IAAIqQ,EAAa,KAAK,OAAQrQ,EAAM,KAAK,UAAW,KAAK,UAAW2B,EAAKA,EAAK4C,CAAI,CAC7F,CACA,UAAUjE,EAAMC,EAAI,CAChB,MAAM,UAAUD,EAAMC,CAAE,EACpB,KAAK,KAAO,KAAK,UAAYD,GAAQ,GAAKC,GAAM,KAAK,QAAQ,UAAU,UACvE,KAAK,MAAQuK,GACrB,CACA,IAAI,SAAU,CAAE,MAAO,EAAO,CAC9B,OAAOwC,EAAM,CAAE,OAAO,KAAK,KAAK,MAAQA,CAAM,CAClD,EAGMrB,GAAN,cAAmClB,EAAS,CACxC,WAAY,CAAE,MAAO,CAAE,OAAQ,EAAK,CAAG,CACvC,YAAYO,EAAU,CAAE,OAAO,KAAK,OAASX,IAAa,KAAK,IAAI,UAAYW,CAAU,CACzF,IAAI,SAAU,CAAE,MAAO,EAAM,CAC7B,IAAI,iBAAkB,CAAE,OAAO,KAAK,IAAI,UAAY,KAAO,CAC/D,EAIMoD,GAAN,cAAiCJ,EAAa,CAC1C,YAAYnO,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKsJ,EAAYW,EAASmC,EAAMxJ,EAAM7B,EAAK,CACvF,MAAMvC,EAAQH,EAAMoL,EAAWC,EAAW1J,EAAKsJ,EAAYW,EAASrH,EAAM7B,CAAG,EAC7E,KAAK,KAAOqL,CAChB,CAIA,OAAO/N,EAAMoL,EAAWC,EAAW9G,EAAM,CACrC,GAAI,KAAK,OAASuG,GACd,MAAO,GACX,GAAI,KAAK,KAAK,SAAW,KAAK,KAAK,MAAQ9K,EAAK,MAAQ,KAAK,KAAK,WAAY,CAC1E,IAAIiH,EAAS,KAAK,KAAK,OAAOjH,EAAMoL,EAAWC,CAAS,EACxD,OAAIpE,GACA,KAAK,YAAYjH,EAAMoL,EAAWC,EAAW9G,CAAI,EAC9C0C,CACX,KACK,OAAI,CAAC,KAAK,YAAc,CAACjH,EAAK,OACxB,GAGA,MAAM,OAAOA,EAAMoL,EAAWC,EAAW9G,CAAI,CAE5D,CACA,YAAa,CACT,KAAK,KAAK,WAAa,KAAK,KAAK,WAAW,EAAI,MAAM,WAAW,CACrE,CACA,cAAe,CACX,KAAK,KAAK,aAAe,KAAK,KAAK,aAAa,EAAI,MAAM,aAAa,CAC3E,CACA,aAAaiI,EAAQC,EAAMlI,EAAMmI,EAAO,CACpC,KAAK,KAAK,aAAe,KAAK,KAAK,aAAaF,EAAQC,EAAMlI,EAAK,IAAI,EACjE,MAAM,aAAaiI,EAAQC,EAAMlI,EAAMmI,CAAK,CACtD,CACA,SAAU,CACF,KAAK,KAAK,SACV,KAAK,KAAK,QAAQ,EACtB,MAAM,QAAQ,CAClB,CACA,UAAUvK,EAAO,CACb,OAAO,KAAK,KAAK,UAAY,KAAK,KAAK,UAAUA,CAAK,EAAI,EAC9D,CACA,eAAe8K,EAAU,CACrB,OAAO,KAAK,KAAK,eAAiB,KAAK,KAAK,eAAeA,CAAQ,EAAI,MAAM,eAAeA,CAAQ,CACxG,CACJ,EAIA,SAASuC,GAAYpF,EAAWmG,EAAOhM,EAAM,CACzC,IAAI5C,EAAMyI,EAAU,WAAYoG,EAAU,GAC1C,QAAS,EAAI,EAAG,EAAID,EAAM,OAAQ,IAAK,CACnC,IAAI3O,EAAO2O,EAAM,CAAC,EAAGE,EAAW7O,EAAK,IACrC,GAAI6O,EAAS,YAAcrG,EAAW,CAClC,KAAOqG,GAAY9O,GACfA,EAAM+O,GAAG/O,CAAG,EACZ6O,EAAU,GAEd7O,EAAMA,EAAI,WACd,MAEI6O,EAAU,GACVpG,EAAU,aAAaqG,EAAU9O,CAAG,EAExC,GAAIC,aAAgBiM,GAAc,CAC9B,IAAInL,EAAMf,EAAMA,EAAI,gBAAkByI,EAAU,UAChDoF,GAAY5N,EAAK,WAAYA,EAAK,SAAU2C,CAAI,EAChD5C,EAAMe,EAAMA,EAAI,YAAc0H,EAAU,UAC5C,CACJ,CACA,KAAOzI,GACHA,EAAM+O,GAAG/O,CAAG,EACZ6O,EAAU,GAEVA,GAAWjM,EAAK,aAAe6F,IAC/B7F,EAAK,YAAc,KAC3B,CACA,IAAMoM,GAAiB,SAAUrF,EAAU,CACnCA,IACA,KAAK,SAAWA,EACxB,EACAqF,GAAe,UAAY,OAAO,OAAO,IAAI,EAC7C,IAAMC,GAAS,CAAC,IAAID,EAAc,EAClC,SAAST,GAAiB9E,EAAWpL,EAAM+P,EAAW,CAClD,GAAI3E,EAAU,QAAU,EACpB,OAAOwF,GACX,IAAI9K,EAAMiK,EAAYa,GAAO,CAAC,EAAI,IAAID,GAAgB1J,EAAS,CAACnB,CAAG,EACnE,QAAS,EAAI,EAAG,EAAIsF,EAAU,OAAQ,IAAK,CACvC,IAAIyF,EAAQzF,EAAU,CAAC,EAAE,KAAK,MAC9B,GAAKyF,EAEL,CAAIA,EAAM,UACN5J,EAAO,KAAKnB,EAAM,IAAI6K,GAAeE,EAAM,QAAQ,CAAC,EACxD,QAASC,KAAQD,EAAO,CACpB,IAAIE,EAAMF,EAAMC,CAAI,EAChBC,GAAO,OAEPhB,GAAa9I,EAAO,QAAU,GAC9BA,EAAO,KAAKnB,EAAM,IAAI6K,GAAe3Q,EAAK,SAAW,OAAS,KAAK,CAAC,EACpE8Q,GAAQ,QACRhL,EAAI,OAASA,EAAI,MAAQA,EAAI,MAAQ,IAAM,IAAMiL,EAC5CD,GAAQ,QACbhL,EAAI,OAASA,EAAI,MAAQA,EAAI,MAAQ,IAAM,IAAMiL,EAC5CD,GAAQ,aACbhL,EAAIgL,CAAI,EAAIC,GACpB,EACJ,CACA,OAAO9J,CACX,CACA,SAASgJ,GAAee,EAAUpF,EAASqF,EAAcC,EAAa,CAElE,GAAID,GAAgBL,IAAUM,GAAeN,GACzC,OAAOhF,EACX,IAAIuF,EAASvF,EACb,QAAS,EAAI,EAAG,EAAIsF,EAAY,OAAQ,IAAK,CACzC,IAAIE,EAAOF,EAAY,CAAC,EAAG/I,EAAO8I,EAAa,CAAC,EAChD,GAAI,EAAG,CACH,IAAI9Q,EACAgI,GAAQA,EAAK,UAAYiJ,EAAK,UAAYD,GAAUH,IACnD7Q,EAASgR,EAAO,aAAehR,EAAO,SAAS,YAAY,GAAKiR,EAAK,WAItEjR,EAAS,SAAS,cAAciR,EAAK,QAAQ,EAC7CjR,EAAO,SAAW,GAClBA,EAAO,YAAYgR,CAAM,EACzBhJ,EAAOyI,GAAO,CAAC,GACfO,EAAShR,CAEjB,CACAkR,GAAgBF,EAAQhJ,GAAQyI,GAAO,CAAC,EAAGQ,CAAI,CACnD,CACA,OAAOD,CACX,CACA,SAASE,GAAgB1P,EAAKwG,EAAMtG,EAAK,CACrC,QAASiP,KAAQ3I,EACT2I,GAAQ,SAAWA,GAAQ,SAAWA,GAAQ,YAAc,EAAEA,KAAQjP,IACtEF,EAAI,gBAAgBmP,CAAI,EAChC,QAASA,KAAQjP,EACTiP,GAAQ,SAAWA,GAAQ,SAAWA,GAAQ,YAAcjP,EAAIiP,CAAI,GAAK3I,EAAK2I,CAAI,GAClFnP,EAAI,aAAamP,EAAMjP,EAAIiP,CAAI,CAAC,EACxC,GAAI3I,EAAK,OAAStG,EAAI,MAAO,CACzB,IAAIyP,EAAWnJ,EAAK,MAAQA,EAAK,MAAM,MAAM,GAAG,EAAE,OAAO,OAAO,EAAI,CAAC,EACjEoJ,EAAU1P,EAAI,MAAQA,EAAI,MAAM,MAAM,GAAG,EAAE,OAAO,OAAO,EAAI,CAAC,EAClE,QAAS,EAAI,EAAG,EAAIyP,EAAS,OAAQ,IAC7BC,EAAQ,QAAQD,EAAS,CAAC,CAAC,GAAK,IAChC3P,EAAI,UAAU,OAAO2P,EAAS,CAAC,CAAC,EACxC,QAAS,EAAI,EAAG,EAAIC,EAAQ,OAAQ,IAC5BD,EAAS,QAAQC,EAAQ,CAAC,CAAC,GAAK,IAChC5P,EAAI,UAAU,IAAI4P,EAAQ,CAAC,CAAC,EAChC5P,EAAI,UAAU,QAAU,GACxBA,EAAI,gBAAgB,OAAO,CACnC,CACA,GAAIwG,EAAK,OAAStG,EAAI,MAAO,CACzB,GAAIsG,EAAK,MAAO,CACZ,IAAIqJ,EAAO,gFAAiFC,EAC5F,KAAOA,EAAID,EAAK,KAAKrJ,EAAK,KAAK,GAC3BxG,EAAI,MAAM,eAAe8P,EAAE,CAAC,CAAC,CACrC,CACI5P,EAAI,QACJF,EAAI,MAAM,SAAWE,EAAI,MACjC,CACJ,CACA,SAAS4M,GAAe9M,EAAKyP,EAAMpR,EAAM,CACrC,OAAOiQ,GAAetO,EAAKA,EAAKiP,GAAQV,GAAiBkB,EAAMpR,EAAM2B,EAAI,UAAY,CAAC,CAAC,CAC3F,CACA,SAASmN,GAAc4C,EAAGC,EAAG,CACzB,GAAID,EAAE,QAAUC,EAAE,OACd,MAAO,GACX,QAAS9L,EAAI,EAAGA,EAAI6L,EAAE,OAAQ7L,IAC1B,GAAI,CAAC6L,EAAE7L,CAAC,EAAE,KAAK,GAAG8L,EAAE9L,CAAC,EAAE,IAAI,EACvB,MAAO,GACf,MAAO,EACX,CAEA,SAAS6K,GAAG/O,EAAK,CACb,IAAIuG,EAAOvG,EAAI,YACf,OAAAA,EAAI,WAAW,YAAYA,CAAG,EACvBuG,CACX,CAGA,IAAMiH,GAAN,KAAsB,CAClB,YAAYrJ,EAAK8L,EAAMrN,EAAM,CACzB,KAAK,KAAOqN,EACZ,KAAK,KAAOrN,EAGZ,KAAK,MAAQ,EAGb,KAAK,MAAQ,CAAC,EAEd,KAAK,QAAU,GACf,KAAK,IAAMuB,EACX,KAAK,SAAW+L,GAAS/L,EAAI,KAAK,QAASA,CAAG,CAClD,CAGA,eAAegM,EAAOhG,EAAK,CACvB,GAAIgG,GAAShG,EAEb,SAASjG,EAAIiM,EAAOjM,EAAIiG,EAAKjG,IACzB,KAAK,IAAI,SAASA,CAAC,EAAE,QAAQ,EACjC,KAAK,IAAI,SAAS,OAAOiM,EAAOhG,EAAMgG,CAAK,EAC3C,KAAK,QAAU,GACnB,CAEA,aAAc,CACV,KAAK,eAAe,KAAK,MAAO,KAAK,IAAI,SAAS,MAAM,CAC5D,CAGA,YAAYC,EAAO/D,EAAQzJ,EAAMyN,EAAa,CAC1C,IAAIC,EAAO,EAAGC,EAAQ,KAAK,MAAM,QAAU,EACvCC,EAAU,KAAK,IAAID,EAAOH,EAAM,MAAM,EAC1C,KAAOE,EAAOE,IACTF,GAAQC,EAAQ,EAAI,KAAK,IAAM,KAAK,MAAOD,EAAO,GAAM,CAAC,GACrD,YAAYF,EAAME,CAAI,CAAC,GAAKF,EAAME,CAAI,EAAE,KAAK,KAAK,WAAa,IACpEA,IACJ,KAAOA,EAAOC,GACV,KAAK,YAAY,EACjB,KAAK,IAAI,MAAQvH,GACjB,KAAK,MAAQ,KAAK,MAAM,IAAI,EAC5B,KAAK,IAAM,KAAK,MAAM,IAAI,EAC1BuH,IAEJ,KAAOA,EAAQH,EAAM,QAAQ,CACzB,KAAK,MAAM,KAAK,KAAK,IAAK,KAAK,MAAQ,CAAC,EACxC,IAAIK,EAAQ,GAAIC,EAAS,KAAK,IAAI,SAAS,OACvCL,EAAc,KAAK,SAAS,QAC5BK,EAAS,KAAK,IAAI,KAAK,MAAQ,EAAGA,CAAM,GAC5C,QAASxM,EAAI,KAAK,MAAOA,EAAIwM,EAAQxM,IAAK,CACtC,IAAIqC,EAAO,KAAK,IAAI,SAASrC,CAAC,EAC9B,GAAIqC,EAAK,YAAY6J,EAAMG,CAAK,CAAC,GAAK,CAAC,KAAK,SAAShK,EAAK,GAAG,EAAG,CAC5DkK,EAAQvM,EACR,KACJ,CACJ,CACA,GAAIuM,EAAQ,GACJA,EAAQ,KAAK,QACb,KAAK,QAAU,GACf,KAAK,eAAe,KAAK,MAAOA,CAAK,GAEzC,KAAK,IAAM,KAAK,IAAI,SAAS,KAAK,KAAK,MAEtC,CACD,IAAIE,EAAWzE,GAAa,OAAO,KAAK,IAAKkE,EAAMG,CAAK,EAAGlE,EAAQzJ,CAAI,EACvE,KAAK,IAAI,SAAS,OAAO,KAAK,MAAO,EAAG+N,CAAQ,EAChD,KAAK,IAAMA,EACX,KAAK,QAAU,EACnB,CACA,KAAK,MAAQ,EACbJ,GACJ,CACJ,CAGA,cAAclS,EAAMoL,EAAWC,EAAWpL,EAAO,CAC7C,IAAImS,EAAQ,GAAIG,EAChB,GAAItS,GAAS,KAAK,SAAS,QACtBsS,EAAa,KAAK,SAAS,QAAQtS,EAAQ,KAAK,SAAS,KAAK,GAAG,QAAU,KAAK,KACjFsS,EAAW,YAAYvS,EAAMoL,EAAWC,CAAS,EACjD+G,EAAQ,KAAK,IAAI,SAAS,QAAQG,EAAY,KAAK,KAAK,MAGxD,SAAS1M,EAAI,KAAK,MAAO2M,EAAI,KAAK,IAAI,KAAK,IAAI,SAAS,OAAQ3M,EAAI,CAAC,EAAGA,EAAI2M,EAAG3M,IAAK,CAChF,IAAIzE,EAAQ,KAAK,IAAI,SAASyE,CAAC,EAC/B,GAAIzE,EAAM,YAAYpB,EAAMoL,EAAWC,CAAS,GAAK,CAAC,KAAK,SAAS,QAAQ,IAAIjK,CAAK,EAAG,CACpFgR,EAAQvM,EACR,KACJ,CACJ,CAEJ,OAAIuM,EAAQ,EACD,IACX,KAAK,eAAe,KAAK,MAAOA,CAAK,EACrC,KAAK,QACE,GACX,CACA,aAAapS,EAAMoL,EAAWC,EAAWpL,EAAOsE,EAAM,CAClD,IAAInD,EAAQ,KAAK,IAAI,SAASnB,CAAK,EAGnC,OAFImB,EAAM,OAAS0J,IAAc1J,EAAM,KAAOA,EAAM,aAChDA,EAAM,MAAQyJ,IACbzJ,EAAM,OAAOpB,EAAMoL,EAAWC,EAAW9G,CAAI,GAElD,KAAK,eAAe,KAAK,MAAOtE,CAAK,EACrC,KAAK,QACE,IAHI,EAIf,CACA,mBAAmBwS,EAAS,CACxB,OAAS,CACL,IAAItS,EAASsS,EAAQ,WACrB,GAAI,CAACtS,EACD,MAAO,GACX,GAAIA,GAAU,KAAK,IAAI,WAAY,CAC/B,IAAIyB,EAAO6Q,EAAQ,WACnB,GAAI7Q,GACA,QAASiE,EAAI,KAAK,MAAOA,EAAI,KAAK,IAAI,SAAS,OAAQA,IACnD,GAAI,KAAK,IAAI,SAASA,CAAC,GAAKjE,EACxB,OAAOiE,EAEnB,MAAO,EACX,CACA4M,EAAUtS,CACd,CACJ,CAGA,eAAeH,EAAMoL,EAAWC,EAAW9G,EAAMtE,EAAOyC,EAAK,CACzD,QAASmD,EAAI,KAAK,MAAOA,EAAI,KAAK,IAAI,SAAS,OAAQA,IAAK,CACxD,IAAIqC,EAAO,KAAK,IAAI,SAASrC,CAAC,EAC9B,GAAIqC,aAAgBoG,GAAc,CAC9B,IAAIuD,EAAW,KAAK,SAAS,QAAQ,IAAI3J,CAAI,EAC7C,GAAI2J,GAAY,MAAQA,GAAY5R,EAChC,MAAO,GACX,IAAIyS,EAAUxK,EAAK,IAAKyK,EAIpBC,EAAS,KAAK,SAASF,CAAO,GAC9B,EAAE1S,EAAK,QAAUkI,EAAK,MAAQA,EAAK,KAAK,QAAUA,EAAK,QAAQ,WAAalI,EAAK,MAC7EkI,EAAK,OAAS4C,IAAcgE,GAAc1D,EAAWlD,EAAK,SAAS,GAC3E,GAAI,CAAC0K,GAAU1K,EAAK,OAAOlI,EAAMoL,EAAWC,EAAW9G,CAAI,EACvD,YAAK,eAAe,KAAK,MAAOsB,CAAC,EAC7BqC,EAAK,KAAOwK,IACZ,KAAK,QAAU,IACnB,KAAK,QACE,GAEN,GAAI,CAACE,IAAWD,EAAU,KAAK,gBAAgBzK,EAAMlI,EAAMoL,EAAWC,EAAW9G,EAAM7B,CAAG,GAC3F,YAAK,eAAe,KAAK,MAAOmD,CAAC,EACjC,KAAK,IAAI,SAAS,KAAK,KAAK,EAAI8M,EAC5BA,EAAQ,aACRA,EAAQ,MAAQ9H,GAChB8H,EAAQ,eAAepO,EAAM7B,EAAM,CAAC,EACpCiQ,EAAQ,MAAQhI,IAEpB,KAAK,QAAU,GACf,KAAK,QACE,GAEX,KACJ,CACJ,CACA,MAAO,EACX,CAGA,gBAAgBzC,EAAMlI,EAAMoL,EAAWC,EAAW9G,EAAM7B,EAAK,CACzD,GAAIwF,EAAK,OAASlI,EAAK,QAAU,CAACkI,EAAK,SAAS,QAC5C,CAACA,EAAK,KAAK,QAAQ,GAAGlI,EAAK,OAAO,GAClC,CAAC8O,GAAc1D,EAAWlD,EAAK,SAAS,GAAK,CAACmD,EAAU,GAAGnD,EAAK,SAAS,EACzE,OAAO,KACX,IAAI2K,EAAUvE,GAAa,OAAO,KAAK,IAAKtO,EAAMoL,EAAWC,EAAW9G,EAAM7B,CAAG,EACjF,GAAImQ,EAAQ,WAAY,CACpBA,EAAQ,SAAW3K,EAAK,SACxBA,EAAK,SAAW,CAAC,EACjB,QAAS4K,KAAMD,EAAQ,SACnBC,EAAG,OAASD,CACpB,CACA,OAAA3K,EAAK,QAAQ,EACN2K,CACX,CAEA,QAAQ7S,EAAMoL,EAAWC,EAAW9G,EAAM7B,EAAK,CAC3C,IAAId,EAAO0M,GAAa,OAAO,KAAK,IAAKtO,EAAMoL,EAAWC,EAAW9G,EAAM7B,CAAG,EAC1Ed,EAAK,YACLA,EAAK,eAAe2C,EAAM7B,EAAM,CAAC,EACrC,KAAK,IAAI,SAAS,OAAO,KAAK,QAAS,EAAGd,CAAI,EAC9C,KAAK,QAAU,EACnB,CACA,YAAYsJ,EAAQ3G,EAAM7B,EAAK,CAC3B,IAAIwF,EAAO,KAAK,MAAQ,KAAK,IAAI,SAAS,OAAS,KAAK,IAAI,SAAS,KAAK,KAAK,EAAI,KACnF,GAAIA,GAAQA,EAAK,cAAcgD,CAAM,IAChCA,GAAUhD,EAAK,QAAU,CAACA,EAAK,OAAO,KAAK,MAAM,YAClD,KAAK,YAEJ,CACD,IAAItG,EAAO,IAAIsK,GAAe,KAAK,IAAKhB,EAAQ3G,EAAM7B,CAAG,EACzD,KAAK,IAAI,SAAS,OAAO,KAAK,QAAS,EAAGd,CAAI,EAC9C,KAAK,QAAU,EACnB,CACJ,CAGA,mBAAoB,CAChB,IAAImR,EAAY,KAAK,IAAI,SAAS,KAAK,MAAQ,CAAC,EAAG5S,EAAS,KAAK,IACjE,KAAO4S,aAAqBlF,IACxB1N,EAAS4S,EACTA,EAAY5S,EAAO,SAASA,EAAO,SAAS,OAAS,CAAC,GAEtD,CAAC4S,GACD,EAAEA,aAAqBpE,KACvB,MAAM,KAAKoE,EAAU,KAAK,IAAI,GAC7B,KAAK,KAAK,uBAAyB,MAAM,KAAKA,EAAU,KAAK,IAAI,MAE7DzP,IAAUF,KAAW2P,GAAaA,EAAU,IAAI,iBAAmB,SACpE,KAAK,YAAY,MAAO5S,CAAM,EAClC,KAAK,YAAY,KAAM,KAAK,GAAG,EAEvC,CACA,YAAYmL,EAAUnL,EAAQ,CAC1B,GAAIA,GAAU,KAAK,KAAO,KAAK,MAAQA,EAAO,SAAS,QAAUA,EAAO,SAAS,KAAK,KAAK,EAAE,YAAYmL,CAAQ,EAC7G,KAAK,YAEJ,CACD,IAAI3J,EAAM,SAAS,cAAc2J,CAAQ,EACrCA,GAAY,QACZ3J,EAAI,UAAY,wBAChBA,EAAI,IAAM,IAEV2J,GAAY,OACZ3J,EAAI,UAAY,6BACpB,IAAIqR,EAAO,IAAI/G,GAAqB,KAAK,IAAK,CAAC,EAAGtK,EAAK,IAAI,EACvDxB,GAAU,KAAK,IACfA,EAAO,SAAS,KAAK6S,CAAI,EAEzB7S,EAAO,SAAS,OAAO,KAAK,QAAS,EAAG6S,CAAI,EAChD,KAAK,QAAU,EACnB,CACJ,CACA,SAAShT,EAAM,CACX,OAAO,KAAK,OAASA,GAAQ,KAAK,MAAQA,EAAK,UAAY,GAAKA,EAAK,SAAS,KAAK,KAAK,UAAU,EACtG,CACJ,EAIA,SAAS6R,GAASoB,EAAMC,EAAY,CAChC,IAAIC,EAAUD,EAAYE,EAAQD,EAAQ,SAAS,OAC/CE,EAAKJ,EAAK,WAAYK,EAAU,IAAI,IAAKC,EAAU,CAAC,EACxDC,EAAO,KAAOH,EAAK,GAAG,CAClB,IAAIzR,EACJ,OACI,GAAIwR,EAAO,CACP,IAAIlL,EAAOiL,EAAQ,SAASC,EAAQ,CAAC,EACrC,GAAIlL,aAAgB2F,GAChBsF,EAAUjL,EACVkL,EAAQlL,EAAK,SAAS,WAErB,CACDtG,EAAOsG,EACPkL,IACA,KACJ,CACJ,KACK,IAAID,GAAWD,EAChB,MAAMM,EAGNJ,EAAQD,EAAQ,OAAO,SAAS,QAAQA,CAAO,EAC/CA,EAAUA,EAAQ,OAG1B,IAAInT,EAAO4B,EAAK,KAChB,GAAK5B,EAEL,IAAIA,GAAQiT,EAAK,MAAMI,EAAK,CAAC,EACzB,MACJ,EAAEA,EACFC,EAAQ,IAAI1R,EAAMyR,CAAE,EACpBE,EAAQ,KAAK3R,CAAI,EACrB,CACA,MAAO,CAAE,MAAOyR,EAAI,QAAAC,EAAS,QAASC,EAAQ,QAAQ,CAAE,CAC5D,CACA,SAASE,GAAY/B,EAAGC,EAAG,CACvB,OAAOD,EAAE,KAAK,KAAOC,EAAE,KAAK,IAChC,CAKA,SAASvC,GAASjP,EAAQiR,EAAMsC,EAAUC,EAAQ,CAC9C,IAAIC,EAASxC,EAAK,OAAOjR,CAAM,EAAGmB,EAAS,EAE3C,GAAIsS,EAAO,QAAU,EAAG,CACpB,QAAS/N,EAAI,EAAGA,EAAI1F,EAAO,WAAY0F,IAAK,CACxC,IAAIzE,EAAQjB,EAAO,MAAM0F,CAAC,EAC1B8N,EAAOvS,EAAOwS,EAAQxC,EAAK,SAAS9P,EAAQF,CAAK,EAAGyE,CAAC,EACrDvE,GAAUF,EAAM,QACpB,CACA,MACJ,CACA,IAAIyS,EAAY,EAAGvK,EAAS,CAAC,EAAGwK,EAAW,KAC3C,QAAS9B,EAAc,IAAK,CACxB,IAAI9G,EAAQ6I,EACZ,KAAOF,EAAYD,EAAO,QAAUA,EAAOC,CAAS,EAAE,IAAMvS,GAAQ,CAChE,IAAI4G,EAAO0L,EAAOC,GAAW,EACzB3L,EAAK,SACAgD,GAGA6I,IAAYA,EAAU,CAAC7I,CAAM,IAAI,KAAKhD,CAAI,EAF3CgD,EAAShD,EAIrB,CACA,GAAIgD,EACA,GAAI6I,EAAS,CACTA,EAAQ,KAAKN,EAAW,EACxB,QAAS5N,EAAI,EAAGA,EAAIkO,EAAQ,OAAQlO,IAChC6N,EAASK,EAAQlO,CAAC,EAAGmM,EAAa,CAAC,CAAC8B,CAAQ,CACpD,MAEIJ,EAASxI,EAAQ8G,EAAa,CAAC,CAAC8B,CAAQ,EAGhD,IAAI1S,EAAOnB,EACX,GAAI6T,EACA7T,EAAQ,GACRmB,EAAQ0S,EACRA,EAAW,aAEN9B,EAAc7R,EAAO,WAC1BF,EAAQ+R,EACR5Q,EAAQjB,EAAO,MAAM6R,GAAa,MAGlC,OAEJ,QAASnM,EAAI,EAAGA,EAAIyD,EAAO,OAAQzD,IAC3ByD,EAAOzD,CAAC,EAAE,IAAMvE,GAChBgI,EAAO,OAAOzD,IAAK,CAAC,EAC5B,KAAOgO,EAAYD,EAAO,QAAUA,EAAOC,CAAS,EAAE,MAAQvS,GAAUsS,EAAOC,CAAS,EAAE,GAAKvS,GAC3FgI,EAAO,KAAKsK,EAAOC,GAAW,CAAC,EACnC,IAAI/H,EAAMxK,EAASF,EAAM,SACzB,GAAIA,EAAM,OAAQ,CACd,IAAI4S,EAAQlI,EACR+H,EAAYD,EAAO,QAAUA,EAAOC,CAAS,EAAE,KAAOG,IACtDA,EAAQJ,EAAOC,CAAS,EAAE,MAC9B,QAAShO,EAAI,EAAGA,EAAIyD,EAAO,OAAQzD,IAC3ByD,EAAOzD,CAAC,EAAE,GAAKmO,IACfA,EAAQ1K,EAAOzD,CAAC,EAAE,IACtBmO,EAAQlI,IACRgI,EAAW1S,EAAM,IAAI4S,EAAQ1S,CAAM,EACnCF,EAAQA,EAAM,IAAI,EAAG4S,EAAQ1S,CAAM,EACnCwK,EAAMkI,EACN/T,EAAQ,GAEhB,KAEI,MAAO4T,EAAYD,EAAO,QAAUA,EAAOC,CAAS,EAAE,GAAK/H,GACvD+H,IAER,IAAIzI,EAAYhK,EAAM,UAAY,CAACA,EAAM,OAASkI,EAAO,OAAO2K,GAAK,CAACA,EAAE,MAAM,EAAI3K,EAAO,MAAM,EAC/FqK,EAAOvS,EAAOgK,EAAWgG,EAAK,SAAS9P,EAAQF,CAAK,EAAGnB,CAAK,EAC5DqB,EAASwK,CACb,CACJ,CAGA,SAAS2D,GAAS9N,EAAK,CACnB,GAAIA,EAAI,UAAY,MAAQA,EAAI,UAAY,KAAM,CAC9C,IAAIuS,EAASvS,EAAI,MAAM,QACvBA,EAAI,MAAM,QAAUuS,EAAS,kCAC7B,OAAO,iBAAiBvS,CAAG,EAAE,UAC7BA,EAAI,MAAM,QAAUuS,CACxB,CACJ,CAEA,SAASrE,GAAmBoD,EAAM3F,EAAMhN,EAAMC,EAAI,CAC9C,QAASsF,EAAI,EAAGnD,EAAM,EAAGmD,EAAIoN,EAAK,YAAcvQ,GAAOnC,GAAK,CACxD,IAAIa,EAAQ6R,EAAK,MAAMpN,GAAG,EAAGsO,EAAazR,EAE1C,GADAA,GAAOtB,EAAM,SACT,CAACA,EAAM,OACP,SACJ,IAAIgT,EAAMhT,EAAM,KAChB,KAAOyE,EAAIoN,EAAK,YAAY,CACxB,IAAI/K,EAAO+K,EAAK,MAAMpN,GAAG,EAEzB,GADAnD,GAAOwF,EAAK,SACR,CAACA,EAAK,OACN,MACJkM,GAAOlM,EAAK,IAChB,CACA,GAAIxF,GAAOpC,EAAM,CACb,GAAIoC,GAAOnC,GAAM6T,EAAI,MAAM7T,EAAK+M,EAAK,OAAS6G,EAAY5T,EAAK4T,CAAU,GAAK7G,EAC1E,OAAO/M,EAAK+M,EAAK,OACrB,IAAI8E,EAAQ+B,EAAa5T,EAAK6T,EAAI,YAAY9G,EAAM/M,EAAK4T,EAAa,CAAC,EAAI,GAC3E,GAAI/B,GAAS,GAAKA,EAAQ9E,EAAK,OAAS6G,GAAc7T,EAClD,OAAO6T,EAAa/B,EACxB,GAAI9R,GAAQC,GAAM6T,EAAI,QAAW7T,EAAK+M,EAAK,OAAU6G,GACjDC,EAAI,MAAM7T,EAAK4T,EAAY5T,EAAK4T,EAAa7G,EAAK,MAAM,GAAKA,EAC7D,OAAO/M,CACf,CACJ,CACA,MAAO,EACX,CAMA,SAAS8N,GAAaD,EAAO9N,EAAMC,EAAIgE,EAAM8P,EAAa,CACtD,IAAIpN,EAAS,CAAC,EACd,QAASpB,EAAI,EAAGlF,EAAM,EAAGkF,EAAIuI,EAAM,OAAQvI,IAAK,CAC5C,IAAIzE,EAAQgN,EAAMvI,CAAC,EAAGiM,EAAQnR,EAAKmL,EAAMnL,GAAOS,EAAM,KAClD0Q,GAASvR,GAAMuL,GAAOxL,EACtB2G,EAAO,KAAK7F,CAAK,GAGb0Q,EAAQxR,GACR2G,EAAO,KAAK7F,EAAM,MAAM,EAAGd,EAAOwR,EAAOvN,CAAI,CAAC,EAC9C8P,IACApN,EAAO,KAAKoN,CAAW,EACvBA,EAAc,QAEdvI,EAAMvL,GACN0G,EAAO,KAAK7F,EAAM,MAAMb,EAAKuR,EAAO1Q,EAAM,KAAMmD,CAAI,CAAC,EAEjE,CACA,OAAO0C,CACX,CAEA,SAASqN,GAAiB/P,EAAMgQ,EAAS,KAAM,CAC3C,IAAIxS,EAASwC,EAAK,kBAAkB,EAAGlC,EAAMkC,EAAK,MAAM,IACxD,GAAI,CAACxC,EAAO,UACR,OAAO,KACX,IAAIyS,EAAcjQ,EAAK,QAAQ,YAAYxC,EAAO,SAAS,EAAG0S,EAAWD,GAAeA,EAAY,MAAQ,EACxG/H,EAAOlI,EAAK,QAAQ,WAAWxC,EAAO,UAAWA,EAAO,YAAa,CAAC,EAC1E,GAAI0K,EAAO,EACP,OAAO,KACX,IAAI3C,EAAQzH,EAAI,QAAQoK,CAAI,EAAGD,EAAQkI,EACvC,GAAI5S,GAAmBC,CAAM,EAAG,CAE5B,IADAyK,EAASC,EACF+H,GAAe,CAACA,EAAY,MAC/BA,EAAcA,EAAY,OAC9B,IAAIG,EAAkBH,EAAY,KAClC,GAAIA,GAAeG,EAAgB,QAAUC,GAAc,aAAaD,CAAe,GAAKH,EAAY,QACjG,EAAEG,EAAgB,UAAYnT,GAASO,EAAO,UAAWA,EAAO,YAAayS,EAAY,GAAG,GAAI,CACnG,IAAI9R,EAAM8R,EAAY,UACtBE,EAAY,IAAIE,GAAcnI,GAAQ/J,EAAMoH,EAAQzH,EAAI,QAAQK,CAAG,CAAC,CACxE,CACJ,KACK,CACD,GAAIX,aAAkBwC,EAAK,IAAI,cAAc,YAAY,WAAaxC,EAAO,WAAa,EAAG,CACzF,IAAI8S,EAAMpI,EAAMqI,EAAMrI,EACtB,QAAS5G,EAAI,EAAGA,EAAI9D,EAAO,WAAY8D,IAAK,CACxC,IAAIrF,EAAQuB,EAAO,WAAW8D,CAAC,EAC/BgP,EAAM,KAAK,IAAIA,EAAKtQ,EAAK,QAAQ,WAAW/D,EAAM,eAAgBA,EAAM,YAAa,CAAC,CAAC,EACvFsU,EAAM,KAAK,IAAIA,EAAKvQ,EAAK,QAAQ,WAAW/D,EAAM,aAAcA,EAAM,UAAW,EAAE,CAAC,CACxF,CACA,GAAIqU,EAAM,EACN,OAAO,KACX,CAACrI,EAAQC,CAAI,EAAIqI,GAAOvQ,EAAK,MAAM,UAAU,OAAS,CAACuQ,EAAKD,CAAG,EAAI,CAACA,EAAKC,CAAG,EAC5EhL,EAAQzH,EAAI,QAAQoK,CAAI,CAC5B,MAEID,EAASjI,EAAK,QAAQ,WAAWxC,EAAO,WAAYA,EAAO,aAAc,CAAC,EAE9E,GAAIyK,EAAS,EACT,OAAO,IACf,CACA,IAAIuI,EAAU1S,EAAI,QAAQmK,CAAM,EAChC,GAAI,CAACkI,EAAW,CACZ,IAAIpN,EAAOiN,GAAU,WAAchQ,EAAK,MAAM,UAAU,KAAOuF,EAAM,KAAO,CAAC2K,EAAY,EAAI,GAC7FC,EAAYM,GAAiBzQ,EAAMwQ,EAASjL,EAAOxC,CAAI,CAC3D,CACA,OAAOoN,CACX,CACA,SAASO,GAAoB1Q,EAAM,CAC/B,OAAOA,EAAK,SAAWA,EAAK,SAAS,EACjC2Q,GAAa3Q,CAAI,GAAK,SAAS,eAAiB,SAAS,cAAc,SAASA,EAAK,GAAG,CAChG,CACA,SAAS4Q,GAAe5Q,EAAMmI,EAAQ,GAAO,CACzC,IAAIlD,EAAMjF,EAAK,MAAM,UAErB,GADA6Q,GAAkB7Q,EAAMiF,CAAG,EACvB,EAACyL,GAAoB1Q,CAAI,EAK7B,IAAI,CAACmI,GAASnI,EAAK,MAAM,WAAaA,EAAK,MAAM,UAAU,cAAgBnB,GAAQ,CAC/E,IAAIrB,EAASwC,EAAK,kBAAkB,EAAG8Q,EAAS9Q,EAAK,YAAY,iBACjE,GAAIxC,EAAO,YAAcsT,EAAO,YAC5B3U,GAAqBqB,EAAO,WAAYA,EAAO,aAAcsT,EAAO,WAAYA,EAAO,YAAY,EAAG,CACtG9Q,EAAK,MAAM,UAAU,qBAAuB,GAC5CA,EAAK,YAAY,gBAAgB,EACjC,MACJ,CACJ,CAEA,GADAA,EAAK,YAAY,oBAAoB,EACjCA,EAAK,cACL+Q,GAAoB/Q,CAAI,MAEvB,CACD,GAAI,CAAE,OAAAiI,EAAQ,KAAAC,CAAK,EAAIjD,EAAK+L,EAAmBC,EAC3CC,IAAiC,EAAEjM,aAAekG,MAC7ClG,EAAI,MAAM,OAAO,gBAClB+L,EAAoBG,GAAwBnR,EAAMiF,EAAI,IAAI,GAC1D,CAACA,EAAI,OAAS,CAACA,EAAI,MAAM,OAAO,gBAChCgM,EAAkBE,GAAwBnR,EAAMiF,EAAI,EAAE,IAE9DjF,EAAK,QAAQ,aAAaiI,EAAQC,EAAMlI,EAAMmI,CAAK,EAC/C+I,KACIF,GACAI,GAAcJ,CAAiB,EAC/BC,GACAG,GAAcH,CAAe,GAEjChM,EAAI,QACJjF,EAAK,IAAI,UAAU,OAAO,2BAA2B,GAGrDA,EAAK,IAAI,UAAU,IAAI,2BAA2B,EAC9C,sBAAuB,UACvBqR,GAA6BrR,CAAI,EAE7C,CACAA,EAAK,YAAY,gBAAgB,EACjCA,EAAK,YAAY,iBAAiB,EACtC,CAIA,IAAMkR,GAAgCnS,IAAUF,IAAUC,GAAiB,GAC3E,SAASqS,GAAwBnR,EAAM7B,EAAK,CACxC,GAAI,CAAE,KAAA1C,EAAM,OAAAsB,CAAO,EAAIiD,EAAK,QAAQ,WAAW7B,EAAK,CAAC,EACjDuG,EAAQ3H,EAAStB,EAAK,WAAW,OAASA,EAAK,WAAWsB,CAAM,EAAI,KACpEyH,EAASzH,EAAStB,EAAK,WAAWsB,EAAS,CAAC,EAAI,KACpD,GAAIgC,IAAU2F,GAASA,EAAM,iBAAmB,QAC5C,OAAO4M,GAAY5M,CAAK,EAC5B,IAAK,CAACA,GAASA,EAAM,iBAAmB,WACnC,CAACF,GAAUA,EAAO,iBAAmB,SAAU,CAChD,GAAIE,EACA,OAAO4M,GAAY5M,CAAK,EACvB,GAAIF,EACL,OAAO8M,GAAY9M,CAAM,CACjC,CACJ,CACA,SAAS8M,GAAYlO,EAAS,CAC1B,OAAAA,EAAQ,gBAAkB,OACtBrE,IAAUqE,EAAQ,YAClBA,EAAQ,UAAY,GACpBA,EAAQ,aAAe,IAEpBA,CACX,CACA,SAASgO,GAAchO,EAAS,CAC5BA,EAAQ,gBAAkB,QACtBA,EAAQ,eACRA,EAAQ,UAAY,GACpBA,EAAQ,aAAe,KAE/B,CACA,SAASiO,GAA6BrR,EAAM,CACxC,IAAIlC,EAAMkC,EAAK,IAAI,cACnBlC,EAAI,oBAAoB,kBAAmBkC,EAAK,MAAM,kBAAkB,EACxE,IAAIxC,EAASwC,EAAK,kBAAkB,EAChCvE,EAAO+B,EAAO,WAAYT,EAASS,EAAO,aAC9CM,EAAI,iBAAiB,kBAAmBkC,EAAK,MAAM,mBAAqB,IAAM,EACtExC,EAAO,YAAc/B,GAAQ+B,EAAO,cAAgBT,KACpDe,EAAI,oBAAoB,kBAAmBkC,EAAK,MAAM,kBAAkB,EACxE,WAAW,IAAM,EACT,CAAC0Q,GAAoB1Q,CAAI,GAAKA,EAAK,MAAM,UAAU,UACnDA,EAAK,IAAI,UAAU,OAAO,2BAA2B,CAC7D,EAAG,EAAE,EAEb,CAAC,CACL,CACA,SAAS+Q,GAAoB/Q,EAAM,CAC/B,IAAIxC,EAASwC,EAAK,aAAa,EAC/B,GAAI,CAACxC,EACD,OACJ,IAAI/B,EAAOuE,EAAK,cAAc,IAAKuR,EAAM9V,EAAK,UAAY,MACtD8V,EACA/T,EAAO,SAAS/B,EAAK,WAAYD,GAASC,CAAI,EAAI,CAAC,EAEnD+B,EAAO,SAAS/B,EAAM,CAAC,EAMvB,CAAC8V,GAAO,CAACvR,EAAK,MAAM,UAAU,SAAWvB,IAAMC,IAAc,KAC7DjD,EAAK,SAAW,GAChBA,EAAK,SAAW,GAExB,CACA,SAASoV,GAAkB7Q,EAAMiF,EAAK,CAClC,GAAIA,aAAeoL,GAAe,CAC9B,IAAIhT,EAAO2C,EAAK,QAAQ,OAAOiF,EAAI,IAAI,EACnC5H,GAAQ2C,EAAK,uBACbwR,GAAmBxR,CAAI,EACnB3C,GACAA,EAAK,WAAW,EACpB2C,EAAK,qBAAuB3C,EAEpC,MAEImU,GAAmBxR,CAAI,CAE/B,CAEA,SAASwR,GAAmBxR,EAAM,CAC1BA,EAAK,uBACDA,EAAK,qBAAqB,QAC1BA,EAAK,qBAAqB,aAAa,EAC3CA,EAAK,qBAAuB,OAEpC,CACA,SAASyQ,GAAiBzQ,EAAMwQ,EAASjL,EAAOxC,EAAM,CAClD,OAAO/C,EAAK,SAAS,yBAA0B6E,GAAKA,EAAE7E,EAAMwQ,EAASjL,CAAK,CAAC,GACpE4F,GAAc,QAAQqF,EAASjL,EAAOxC,CAAI,CACrD,CACA,SAAS0O,GAAqBzR,EAAM,CAChC,OAAIA,EAAK,UAAY,CAACA,EAAK,SAAS,EACzB,GACJ2Q,GAAa3Q,CAAI,CAC5B,CACA,SAAS2Q,GAAa3Q,EAAM,CACxB,IAAIiF,EAAMjF,EAAK,kBAAkB,EACjC,GAAI,CAACiF,EAAI,WACL,MAAO,GACX,GAAI,CAIA,OAAOjF,EAAK,IAAI,SAASiF,EAAI,WAAW,UAAY,EAAIA,EAAI,WAAW,WAAaA,EAAI,UAAU,IAC7FjF,EAAK,UAAYA,EAAK,IAAI,SAASiF,EAAI,UAAU,UAAY,EAAIA,EAAI,UAAU,WAAaA,EAAI,SAAS,EAClH,MACU,CACN,MAAO,EACX,CACJ,CACA,SAASyM,GAAmB1R,EAAM,CAC9B,IAAIoI,EAAYpI,EAAK,QAAQ,WAAWA,EAAK,MAAM,UAAU,OAAQ,CAAC,EAClExC,EAASwC,EAAK,kBAAkB,EACpC,OAAO7D,GAAqBiM,EAAU,KAAMA,EAAU,OAAQ5K,EAAO,WAAYA,EAAO,YAAY,CACxG,CAEA,SAASmU,GAAmB/M,EAAOnI,EAAK,CACpC,GAAI,CAAE,QAAA+T,EAAS,MAAAjL,CAAM,EAAIX,EAAM,UAC3BgN,EAAQnV,EAAM,EAAI+T,EAAQ,IAAIjL,CAAK,EAAIiL,EAAQ,IAAIjL,CAAK,EACxDsM,EAAUD,EAAM,OAAO,cAAwBA,EAAM,MAAQhN,EAAM,IAAI,QAAQnI,EAAM,EAAImV,EAAM,MAAM,EAAIA,EAAM,OAAO,CAAC,EAAI,KAApFA,EAC3C,OAAOC,GAAUC,GAAU,SAASD,EAAQpV,CAAG,CACnD,CACA,SAASsV,GAAM/R,EAAMiF,EAAK,CACtB,OAAAjF,EAAK,SAASA,EAAK,MAAM,GAAG,aAAaiF,CAAG,EAAE,eAAe,CAAC,EACvD,EACX,CACA,SAAS+M,GAAmBhS,EAAMvD,EAAKwV,EAAM,CACzC,IAAIhN,EAAMjF,EAAK,MAAM,UACrB,GAAIiF,aAAekG,GACf,GAAI8G,EAAK,QAAQ,GAAG,EAAI,GAAI,CACxB,GAAI,CAAE,MAAA1M,CAAM,EAAIN,EAAKxJ,EAAO8J,EAAM,WAAa,KAAO9I,EAAM,EAAI8I,EAAM,WAAaA,EAAM,UACzF,GAAI,CAAC9J,GAAQA,EAAK,QAAU,CAACA,EAAK,OAC9B,MAAO,GACX,IAAIyW,EAAWlS,EAAK,MAAM,IAAI,QAAQuF,EAAM,IAAM9J,EAAK,UAAYgB,EAAM,EAAI,GAAK,EAAE,EACpF,OAAOsV,GAAM/R,EAAM,IAAImL,GAAclG,EAAI,QAASiN,CAAQ,CAAC,CAC/D,SACUjN,EAAI,OAGT,GAAIjF,EAAK,eAAevD,EAAM,EAAI,UAAY,UAAU,EAAG,CAC5D,IAAIkH,EAAOgO,GAAmB3R,EAAK,MAAOvD,CAAG,EAC7C,OAAIkH,GAASA,aAAgB0M,GAClB0B,GAAM/R,EAAM2D,CAAI,EACpB,EACX,SACS,EAAE1E,IAAOgT,EAAK,QAAQ,GAAG,EAAI,IAAK,CACvC,IAAI1M,EAAQN,EAAI,MAAOxJ,EAAO8J,EAAM,WAAa,KAAO9I,EAAM,EAAI8I,EAAM,WAAaA,EAAM,UAAWlI,EACtG,GAAI,CAAC5B,GAAQA,EAAK,OACd,MAAO,GACX,IAAI0W,EAAU1V,EAAM,EAAI8I,EAAM,IAAM9J,EAAK,SAAW8J,EAAM,IAC1D,OAAM9J,EAAK,SAAW4B,EAAO2C,EAAK,QAAQ,OAAOmS,CAAO,IAAM,CAAC9U,EAAK,WAEhEgT,GAAc,aAAa5U,CAAI,EACxBsW,GAAM/R,EAAM,IAAIqQ,GAAc5T,EAAM,EAAIuD,EAAK,MAAM,IAAI,QAAQuF,EAAM,IAAM9J,EAAK,QAAQ,EAAI8J,CAAK,CAAC,EAEpGnG,GAIE2S,GAAM/R,EAAM,IAAImL,GAAcnL,EAAK,MAAM,IAAI,QAAQvD,EAAM,EAAI0V,EAAUA,EAAU1W,EAAK,QAAQ,CAAC,CAAC,EAGlG,GAXA,EAaf,MA3BI,OAAO,OA6BV,IAAIwJ,aAAeoL,IAAiBpL,EAAI,KAAK,SAC9C,OAAO8M,GAAM/R,EAAM,IAAImL,GAAc1O,EAAM,EAAIwI,EAAI,IAAMA,EAAI,KAAK,CAAC,EAElE,CACD,IAAItB,EAAOgO,GAAmB3R,EAAK,MAAOvD,CAAG,EAC7C,OAAIkH,EACOoO,GAAM/R,EAAM2D,CAAI,EACpB,EACX,EACJ,CACA,SAASyO,GAAQ3W,EAAM,CACnB,OAAOA,EAAK,UAAY,EAAIA,EAAK,UAAU,OAASA,EAAK,WAAW,MACxE,CACA,SAAS4W,GAAYjV,EAAKX,EAAK,CAC3B,IAAIY,EAAOD,EAAI,WACf,OAAOC,GAAQA,EAAK,MAAQ,IAAMZ,EAAM,GAAKW,EAAI,aAAeA,EAAI,UAAY,KACpF,CACA,SAASkV,GAAiBtS,EAAMvD,EAAK,CACjC,OAAOA,EAAM,EAAI8V,GAAuBvS,CAAI,EAAIwS,GAAsBxS,CAAI,CAC9E,CAGA,SAASuS,GAAuBvS,EAAM,CAClC,IAAIiF,EAAMjF,EAAK,kBAAkB,EAC7BvE,EAAOwJ,EAAI,UAAWlI,EAASkI,EAAI,YACvC,GAAI,CAACxJ,EACD,OACJ,IAAIgX,EAAUC,EAAYvK,EAAQ,GAMlC,IAFIxJ,IAASlD,EAAK,UAAY,GAAKsB,EAASqV,GAAQ3W,CAAI,GAAK4W,GAAY5W,EAAK,WAAWsB,CAAM,EAAG,EAAE,IAChGoL,EAAQ,MAER,GAAIpL,EAAS,EAAG,CACZ,GAAItB,EAAK,UAAY,EACjB,MAEC,CACD,IAAI+I,EAAS/I,EAAK,WAAWsB,EAAS,CAAC,EACvC,GAAIsV,GAAY7N,EAAQ,EAAE,EACtBiO,EAAWhX,EACXiX,EAAa,EAAE3V,UAEVyH,EAAO,UAAY,EACxB/I,EAAO+I,EACPzH,EAAStB,EAAK,UAAU,WAGxB,MACR,CACJ,KACK,IAAIkX,GAAYlX,CAAI,EACrB,MAEC,CACD,IAAImI,EAAOnI,EAAK,gBAChB,KAAOmI,GAAQyO,GAAYzO,EAAM,EAAE,GAC/B6O,EAAWhX,EAAK,WAChBiX,EAAalX,GAASoI,CAAI,EAC1BA,EAAOA,EAAK,gBAEhB,GAAKA,EAODnI,EAAOmI,EACP7G,EAASqV,GAAQ3W,CAAI,MARd,CAEP,GADAA,EAAOA,EAAK,WACRA,GAAQuE,EAAK,IACb,MACJjD,EAAS,CACb,CAKJ,EAEAoL,EACAyK,GAAY5S,EAAMvE,EAAMsB,CAAM,EACzB0V,GACLG,GAAY5S,EAAMyS,EAAUC,CAAU,CAC9C,CAGA,SAASF,GAAsBxS,EAAM,CACjC,IAAIiF,EAAMjF,EAAK,kBAAkB,EAC7BvE,EAAOwJ,EAAI,UAAWlI,EAASkI,EAAI,YACvC,GAAI,CAACxJ,EACD,OACJ,IAAIgH,EAAM2P,GAAQ3W,CAAI,EAClBgX,EAAUC,EACd,OACI,GAAI3V,EAAS0F,EAAK,CACd,GAAIhH,EAAK,UAAY,EACjB,MACJ,IAAIiJ,EAAQjJ,EAAK,WAAWsB,CAAM,EAClC,GAAIsV,GAAY3N,EAAO,CAAC,EACpB+N,EAAWhX,EACXiX,EAAa,EAAE3V,MAGf,MACR,KACK,IAAI4V,GAAYlX,CAAI,EACrB,MAEC,CACD,IAAIkI,EAAOlI,EAAK,YAChB,KAAOkI,GAAQ0O,GAAY1O,EAAM,CAAC,GAC9B8O,EAAW9O,EAAK,WAChB+O,EAAalX,GAASmI,CAAI,EAAI,EAC9BA,EAAOA,EAAK,YAEhB,GAAKA,EAODlI,EAAOkI,EACP5G,EAAS,EACT0F,EAAM2P,GAAQ3W,CAAI,MATX,CAEP,GADAA,EAAOA,EAAK,WACRA,GAAQuE,EAAK,IACb,MACJjD,EAAS0F,EAAM,CACnB,CAMJ,EAEAgQ,GACAG,GAAY5S,EAAMyS,EAAUC,CAAU,CAC9C,CACA,SAASC,GAAYvV,EAAK,CACtB,IAAIC,EAAOD,EAAI,WACf,OAAOC,GAAQA,EAAK,MAAQA,EAAK,KAAK,OAC1C,CACA,SAASwV,GAAcpX,EAAMsB,EAAQ,CACjC,KAAOtB,GAAQsB,GAAUtB,EAAK,WAAW,QAAU,CAACmB,GAAanB,CAAI,GACjEsB,EAASvB,GAASC,CAAI,EAAI,EAC1BA,EAAOA,EAAK,WAEhB,KAAOA,GAAQsB,EAAStB,EAAK,WAAW,QAAQ,CAC5C,IAAIkI,EAAOlI,EAAK,WAAWsB,CAAM,EACjC,GAAI4G,EAAK,UAAY,EACjB,OAAOA,EACX,GAAIA,EAAK,UAAY,GAAKA,EAAK,iBAAmB,QAC9C,MACJlI,EAAOkI,EACP5G,EAAS,CACb,CACJ,CACA,SAAS+V,GAAerX,EAAMsB,EAAQ,CAClC,KAAOtB,GAAQ,CAACsB,GAAU,CAACH,GAAanB,CAAI,GACxCsB,EAASvB,GAASC,CAAI,EACtBA,EAAOA,EAAK,WAEhB,KAAOA,GAAQsB,GAAQ,CACnB,IAAI4G,EAAOlI,EAAK,WAAWsB,EAAS,CAAC,EACrC,GAAI4G,EAAK,UAAY,EACjB,OAAOA,EACX,GAAIA,EAAK,UAAY,GAAKA,EAAK,iBAAmB,QAC9C,MACJlI,EAAOkI,EACP5G,EAAStB,EAAK,WAAW,MAC7B,CACJ,CACA,SAASmX,GAAY5S,EAAMvE,EAAMsB,EAAQ,CACrC,GAAItB,EAAK,UAAY,EAAG,CACpB,IAAI+I,EAAQE,GACRA,EAAQmO,GAAcpX,EAAMsB,CAAM,IAClCtB,EAAOiJ,EACP3H,EAAS,IAEJyH,EAASsO,GAAerX,EAAMsB,CAAM,KACzCtB,EAAO+I,EACPzH,EAASyH,EAAO,UAAU,OAElC,CACA,IAAIS,EAAMjF,EAAK,aAAa,EAC5B,GAAI,CAACiF,EACD,OACJ,GAAI1H,GAAmB0H,CAAG,EAAG,CACzB,IAAIhJ,EAAQ,SAAS,YAAY,EACjCA,EAAM,OAAOR,EAAMsB,CAAM,EACzBd,EAAM,SAASR,EAAMsB,CAAM,EAC3BkI,EAAI,gBAAgB,EACpBA,EAAI,SAAShJ,CAAK,CACtB,MACSgJ,EAAI,QACTA,EAAI,OAAOxJ,EAAMsB,CAAM,EAE3BiD,EAAK,YAAY,gBAAgB,EACjC,GAAI,CAAE,MAAA4E,CAAM,EAAI5E,EAEhB,WAAW,IAAM,CACTA,EAAK,OAAS4E,GACdgM,GAAe5Q,CAAI,CAC3B,EAAG,EAAE,CACT,CACA,SAAS+S,GAAc/S,EAAM7B,EAAK,CAC9B,IAAI+G,EAAOlF,EAAK,MAAM,IAAI,QAAQ7B,CAAG,EACrC,GAAI,EAAEU,IAAUK,KAAYgG,EAAK,OAAO,cAAe,CACnD,IAAIrD,EAAS7B,EAAK,YAAY7B,CAAG,EACjC,GAAIA,EAAM+G,EAAK,MAAM,EAAG,CACpB,IAAIV,EAASxE,EAAK,YAAY7B,EAAM,CAAC,EACjC6U,GAAOxO,EAAO,IAAMA,EAAO,QAAU,EACzC,GAAIwO,EAAMnR,EAAO,KAAOmR,EAAMnR,EAAO,QAAU,KAAK,IAAI2C,EAAO,KAAO3C,EAAO,IAAI,EAAI,EACjF,OAAO2C,EAAO,KAAO3C,EAAO,KAAO,MAAQ,KACnD,CACA,GAAI1D,EAAM+G,EAAK,IAAI,EAAG,CAClB,IAAIR,EAAQ1E,EAAK,YAAY7B,EAAM,CAAC,EAChC6U,GAAOtO,EAAM,IAAMA,EAAM,QAAU,EACvC,GAAIsO,EAAMnR,EAAO,KAAOmR,EAAMnR,EAAO,QAAU,KAAK,IAAI6C,EAAM,KAAO7C,EAAO,IAAI,EAAI,EAChF,OAAO6C,EAAM,KAAO7C,EAAO,KAAO,MAAQ,KAClD,CACJ,CAEA,OADe,iBAAiB7B,EAAK,GAAG,EAAE,WACvB,MAAQ,MAAQ,KACvC,CAIA,SAASiT,GAAiBjT,EAAMvD,EAAKwV,EAAM,CACvC,IAAIhN,EAAMjF,EAAK,MAAM,UAGrB,GAFIiF,aAAekG,IAAiB,CAAClG,EAAI,OAASgN,EAAK,QAAQ,GAAG,EAAI,IAElEhT,IAAOgT,EAAK,QAAQ,GAAG,EAAI,GAC3B,MAAO,GACX,GAAI,CAAE,MAAAiB,EAAO,IAAAC,CAAI,EAAIlO,EACrB,GAAI,CAACiO,EAAM,OAAO,eAAiBlT,EAAK,eAAevD,EAAM,EAAI,KAAO,MAAM,EAAG,CAC7E,IAAIkH,EAAOgO,GAAmB3R,EAAK,MAAOvD,CAAG,EAC7C,GAAIkH,GAASA,aAAgB0M,GACzB,OAAO0B,GAAM/R,EAAM2D,CAAI,CAC/B,CACA,GAAI,CAACuP,EAAM,OAAO,cAAe,CAC7B,IAAIxT,EAAOjD,EAAM,EAAIyW,EAAQC,EACzBC,EAASnO,aAAeoO,GAAevB,GAAU,KAAKpS,EAAMjD,CAAG,EAAIqV,GAAU,SAASpS,EAAMjD,CAAG,EACnG,OAAO2W,EAASrB,GAAM/R,EAAMoT,CAAM,EAAI,EAC1C,CACA,MAAO,EACX,CACA,SAASE,GAA2BtT,EAAMvD,EAAK,CAC3C,GAAI,EAAEuD,EAAK,MAAM,qBAAqBmL,IAClC,MAAO,GACX,GAAI,CAAE,MAAA5F,EAAO,QAAAiL,EAAS,MAAA+C,CAAM,EAAIvT,EAAK,MAAM,UAC3C,GAAI,CAACuF,EAAM,WAAWiL,CAAO,EACzB,MAAO,GACX,GAAI,CAAC+C,EACD,MAAO,GACX,GAAIvT,EAAK,eAAevD,EAAM,EAAI,UAAY,UAAU,EACpD,MAAO,GACX,IAAI+W,EAAW,CAACjO,EAAM,aAAe9I,EAAM,EAAI8I,EAAM,WAAaA,EAAM,WACxE,GAAIiO,GAAY,CAACA,EAAS,OAAQ,CAC9B,IAAIC,EAAKzT,EAAK,MAAM,GACpB,OAAIvD,EAAM,EACNgX,EAAG,OAAOlO,EAAM,IAAMiO,EAAS,SAAUjO,EAAM,GAAG,EAElDkO,EAAG,OAAOlO,EAAM,IAAKA,EAAM,IAAMiO,EAAS,QAAQ,EACtDxT,EAAK,SAASyT,CAAE,EACT,EACX,CACA,MAAO,EACX,CACA,SAASC,GAAe1T,EAAMvE,EAAMmJ,EAAO,CACvC5E,EAAK,YAAY,KAAK,EACtBvE,EAAK,gBAAkBmJ,EACvB5E,EAAK,YAAY,MAAM,CAC3B,CAMA,SAAS2T,GAAmB3T,EAAM,CAC9B,GAAI,CAACjB,IAAUiB,EAAK,MAAM,UAAU,MAAM,aAAe,EACrD,MAAO,GACX,GAAI,CAAE,UAAA4T,EAAW,YAAAC,CAAY,EAAI7T,EAAK,kBAAkB,EACxD,GAAI4T,GAAaA,EAAU,UAAY,GAAKC,GAAe,GACvDD,EAAU,YAAcA,EAAU,WAAW,iBAAmB,QAAS,CACzE,IAAI/W,EAAQ+W,EAAU,WACtBF,GAAe1T,EAAMnD,EAAO,MAAM,EAClC,WAAW,IAAM6W,GAAe1T,EAAMnD,EAAO,OAAO,EAAG,EAAE,CAC7D,CACA,MAAO,EACX,CAOA,SAASiX,GAAQlW,EAAO,CACpB,IAAI8E,EAAS,GACb,OAAI9E,EAAM,UACN8E,GAAU,KACV9E,EAAM,UACN8E,GAAU,KACV9E,EAAM,SACN8E,GAAU,KACV9E,EAAM,WACN8E,GAAU,KACPA,CACX,CACA,SAASqR,GAAe/T,EAAMpC,EAAO,CACjC,IAAIoW,EAAOpW,EAAM,QAASqU,EAAO6B,GAAQlW,CAAK,EAC9C,GAAIoW,GAAQ,GAAM/U,IAAO+U,GAAQ,IAAM/B,GAAQ,IAC3C,OAAOqB,GAA2BtT,EAAM,EAAE,GAAKsS,GAAiBtS,EAAM,EAAE,EAEvE,GAAKgU,GAAQ,IAAM,CAACpW,EAAM,UAAcqB,IAAO+U,GAAQ,IAAM/B,GAAQ,IACtE,OAAOqB,GAA2BtT,EAAM,CAAC,GAAKsS,GAAiBtS,EAAM,CAAC,EAErE,GAAIgU,GAAQ,IAAMA,GAAQ,GAC3B,MAAO,GAEN,GAAIA,GAAQ,IAAO/U,IAAO+U,GAAQ,IAAM/B,GAAQ,IAAM,CACvD,IAAIxV,EAAMuX,GAAQ,GAAMjB,GAAc/S,EAAMA,EAAK,MAAM,UAAU,IAAI,GAAK,MAAQ,GAAK,EAAK,GAC5F,OAAOgS,GAAmBhS,EAAMvD,EAAKwV,CAAI,GAAKK,GAAiBtS,EAAMvD,CAAG,CAC5E,SACSuX,GAAQ,IAAO/U,IAAO+U,GAAQ,IAAM/B,GAAQ,IAAM,CACvD,IAAIxV,EAAMuX,GAAQ,GAAMjB,GAAc/S,EAAMA,EAAK,MAAM,UAAU,IAAI,GAAK,MAAQ,EAAI,GAAM,EAC5F,OAAOgS,GAAmBhS,EAAMvD,EAAKwV,CAAI,GAAKK,GAAiBtS,EAAMvD,CAAG,CAC5E,KACK,IAAIuX,GAAQ,IAAO/U,IAAO+U,GAAQ,IAAM/B,GAAQ,IACjD,OAAOgB,GAAiBjT,EAAM,GAAIiS,CAAI,GAAKK,GAAiBtS,EAAM,EAAE,EAEnE,GAAIgU,GAAQ,IAAO/U,IAAO+U,GAAQ,IAAM/B,GAAQ,IACjD,OAAO0B,GAAmB3T,CAAI,GAAKiT,GAAiBjT,EAAM,EAAGiS,CAAI,GAAKK,GAAiBtS,EAAM,CAAC,EAE7F,GAAIiS,IAAShT,GAAM,IAAM,OACzB+U,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACnD,MAAO,GAEX,MAAO,EACX,CAEA,SAASC,GAAsBjU,EAAMkU,EAAO,CACxClU,EAAK,SAAS,kBAAmB6E,GAAK,CAAEqP,EAAQrP,EAAEqP,EAAOlU,CAAI,CAAG,CAAC,EACjE,IAAImU,EAAU,CAAC,EAAG,CAAE,QAAAC,EAAS,UAAAC,EAAW,QAAAC,CAAQ,EAAIJ,EACpD,KAAOG,EAAY,GAAKC,EAAU,GAAKF,EAAQ,YAAc,GAAKA,EAAQ,WAAW,YAAc,GAAG,CAClGC,IACAC,IACA,IAAI7Y,EAAO2Y,EAAQ,WACnBD,EAAQ,KAAK1Y,EAAK,KAAK,KAAMA,EAAK,OAASA,EAAK,KAAK,aAAeA,EAAK,MAAQ,IAAI,EACrF2Y,EAAU3Y,EAAK,OACnB,CACA,IAAI8Y,EAAavU,EAAK,SAAS,qBAAqB,GAAK2J,GAAc,WAAW3J,EAAK,MAAM,MAAM,EAC/FlC,EAAM0W,GAAY,EAAGvL,EAAOnL,EAAI,cAAc,KAAK,EACvDmL,EAAK,YAAYsL,EAAW,kBAAkBH,EAAS,CAAE,SAAUtW,CAAI,CAAC,CAAC,EACzE,IAAI2W,EAAaxL,EAAK,WAAYuC,EAAWkJ,EAAW,EACxD,KAAOD,GAAcA,EAAW,UAAY,IAAMjJ,EAAYmJ,GAAQF,EAAW,SAAS,YAAY,CAAC,IAAI,CACvG,QAASnT,EAAIkK,EAAU,OAAS,EAAGlK,GAAK,EAAGA,IAAK,CAC5C,IAAIgN,EAAUxQ,EAAI,cAAc0N,EAAUlK,CAAC,CAAC,EAC5C,KAAO2H,EAAK,YACRqF,EAAQ,YAAYrF,EAAK,UAAU,EACvCA,EAAK,YAAYqF,CAAO,EACxBoG,GACJ,CACAD,EAAaxL,EAAK,UACtB,CACIwL,GAAcA,EAAW,UAAY,GACrCA,EAAW,aAAa,gBAAiB,GAAGJ,CAAS,IAAIC,CAAO,GAAGI,EAAW,KAAKA,CAAQ,GAAK,EAAE,IAAI,KAAK,UAAUP,CAAO,CAAC,EAAE,EACnI,IAAIpL,EAAO/I,EAAK,SAAS,0BAA2B6E,GAAKA,EAAEqP,EAAOlU,CAAI,CAAC,GACnEkU,EAAM,QAAQ,YAAY,EAAGA,EAAM,QAAQ,KAAM;AAAA;AAAA,CAAM,EAC3D,MAAO,CAAE,IAAKjL,EAAM,KAAAF,EAAM,MAAAmL,CAAM,CACpC,CAEA,SAASU,GAAmB5U,EAAM+I,EAAM8L,EAAMC,EAAWC,EAAU,CAC/D,IAAIC,EAASD,EAAS,OAAO,KAAK,KAAK,KACnC3X,EAAK8W,EACT,GAAI,CAACW,GAAQ,CAAC9L,EACV,OAAO,KACX,IAAIkM,EAAS,CAAC,CAAClM,IAAS+L,GAAaE,GAAU,CAACH,GAChD,GAAII,EAAQ,CAER,GADAjV,EAAK,SAAS,sBAAuB6E,GAAK,CAAEkE,EAAOlE,EAAEkE,EAAMiM,GAAUF,EAAW9U,CAAI,CAAG,CAAC,EACpFgV,EACA,OAAAd,EAAQ,IAAIgB,EAAM5K,EAAS,KAAKtK,EAAK,MAAM,OAAO,KAAK+I,EAAK,QAAQ,SAAU;AAAA,CAAI,CAAC,CAAC,EAAG,EAAG,CAAC,EAC3F/I,EAAK,SAAS,kBAAmB6E,GAAK,CAAEqP,EAAQrP,EAAEqP,EAAOlU,EAAM,EAAI,CAAG,CAAC,EAChEkU,EAEX,IAAIiB,EAASnV,EAAK,SAAS,sBAAuB6E,GAAKA,EAAEkE,EAAMgM,EAAUD,EAAW9U,CAAI,CAAC,EACzF,GAAImV,EACAjB,EAAQiB,MAEP,CACD,IAAI3H,EAAQuH,EAAS,MAAM,EACvB,CAAE,OAAAK,CAAO,EAAIpV,EAAK,MAAOuU,EAAa5K,GAAc,WAAWyL,CAAM,EACzEhY,EAAM,SAAS,cAAc,KAAK,EAClC2L,EAAK,MAAM,eAAe,EAAE,QAAQsM,GAAS,CACzC,IAAI3R,EAAItG,EAAI,YAAY,SAAS,cAAc,GAAG,CAAC,EAC/CiY,GACA3R,EAAE,YAAY6Q,EAAW,cAAca,EAAO,KAAKC,EAAO7H,CAAK,CAAC,CAAC,CACzE,CAAC,CACL,CACJ,MAEIxN,EAAK,SAAS,sBAAuB6E,GAAK,CAAEgQ,EAAOhQ,EAAEgQ,EAAM7U,CAAI,CAAG,CAAC,EACnE5C,EAAMkY,GAAST,CAAI,EACfzV,IACAmW,GAAsBnY,CAAG,EAEjC,IAAIoY,EAAcpY,GAAOA,EAAI,cAAc,iBAAiB,EACxDqY,EAAYD,GAAe,gCAAgC,KAAKA,EAAY,aAAa,eAAe,GAAK,EAAE,EACnH,GAAIC,GAAaA,EAAU,CAAC,EACxB,QAASnU,EAAI,CAACmU,EAAU,CAAC,EAAGnU,EAAI,EAAGA,IAAK,CACpC,IAAIzE,EAAQO,EAAI,WAChB,KAAOP,GAASA,EAAM,UAAY,GAC9BA,EAAQA,EAAM,YAClB,GAAI,CAACA,EACD,MACJO,EAAMP,CACV,CAcJ,GAbKqX,IAEDA,GADalU,EAAK,SAAS,iBAAiB,GAAKA,EAAK,SAAS,WAAW,GAAK0V,GAAU,WAAW1V,EAAK,MAAM,MAAM,GACtG,WAAW5C,EAAK,CAC3B,mBAAoB,CAAC,EAAE6X,GAAUQ,GACjC,QAASV,EACT,aAAa3X,EAAK,CACd,OAAIA,EAAI,UAAY,MAAQ,CAACA,EAAI,aAC7BA,EAAI,YAAc,CAACuY,GAAc,KAAKvY,EAAI,WAAW,QAAQ,EACtD,CAAE,OAAQ,EAAK,EACnB,IACX,CACJ,CAAC,GAEDqY,EACAvB,EAAQ0B,GAAWC,GAAW3B,EAAO,CAACuB,EAAU,CAAC,EAAG,CAACA,EAAU,CAAC,CAAC,EAAGA,EAAU,CAAC,CAAC,UAGhFvB,EAAQgB,EAAM,QAAQY,GAAkB5B,EAAM,QAASa,CAAQ,EAAG,EAAI,EAClEb,EAAM,WAAaA,EAAM,QAAS,CAClC,IAAIG,EAAY,EAAGC,EAAU,EAC7B,QAAS7Y,EAAOyY,EAAM,QAAQ,WAAYG,EAAYH,EAAM,WAAa,CAACzY,EAAK,KAAK,KAAK,UAAW4Y,IAAa5Y,EAAOA,EAAK,WAAY,CACzI,QAASA,EAAOyY,EAAM,QAAQ,UAAWI,EAAUJ,EAAM,SAAW,CAACzY,EAAK,KAAK,KAAK,UAAW6Y,IAAW7Y,EAAOA,EAAK,UAAW,CACjIyY,EAAQ2B,GAAW3B,EAAOG,EAAWC,CAAO,CAChD,CAEJ,OAAAtU,EAAK,SAAS,kBAAmB6E,GAAK,CAAEqP,EAAQrP,EAAEqP,EAAOlU,EAAMiV,CAAM,CAAG,CAAC,EAClEf,CACX,CACA,IAAMyB,GAAgB,gHAStB,SAASG,GAAkBC,EAAUhB,EAAU,CAC3C,GAAIgB,EAAS,WAAa,EACtB,OAAOA,EACX,QAASrG,EAAIqF,EAAS,MAAOrF,GAAK,EAAGA,IAAK,CAEtC,IAAIsG,EADSjB,EAAS,KAAKrF,CAAC,EACT,eAAeqF,EAAS,MAAMrF,CAAC,CAAC,EAC/CuG,EAAUvT,EAAS,CAAC,EAmBxB,GAlBAqT,EAAS,QAAQta,GAAQ,CACrB,GAAI,CAACiH,EACD,OACJ,IAAIuG,EAAO+M,EAAM,aAAava,EAAK,IAAI,EAAGya,EAC1C,GAAI,CAACjN,EACD,OAAOvG,EAAS,KACpB,GAAIwT,EAASxT,EAAO,QAAUuT,EAAS,QAAUE,GAAalN,EAAMgN,EAAUxa,EAAMiH,EAAOA,EAAO,OAAS,CAAC,EAAG,CAAC,EAC5GA,EAAOA,EAAO,OAAS,CAAC,EAAIwT,MAE3B,CACGxT,EAAO,SACPA,EAAOA,EAAO,OAAS,CAAC,EAAI0T,GAAW1T,EAAOA,EAAO,OAAS,CAAC,EAAGuT,EAAS,MAAM,GACrF,IAAII,EAAUC,GAAa7a,EAAMwN,CAAI,EACrCvG,EAAO,KAAK2T,CAAO,EACnBL,EAAQA,EAAM,UAAUK,EAAQ,IAAI,EACpCJ,EAAWhN,CACf,CACJ,CAAC,EACGvG,EACA,OAAO4H,EAAS,KAAK5H,CAAM,CACnC,CACA,OAAOqT,CACX,CACA,SAASO,GAAa7a,EAAMwN,EAAMlN,EAAO,EAAG,CACxC,QAASuF,EAAI2H,EAAK,OAAS,EAAG3H,GAAKvF,EAAMuF,IACrC7F,EAAOwN,EAAK3H,CAAC,EAAE,OAAO,KAAMgJ,EAAS,KAAK7O,CAAI,CAAC,EACnD,OAAOA,CACX,CAGA,SAAS0a,GAAalN,EAAMgN,EAAUxa,EAAM8a,EAAS5I,EAAO,CACxD,GAAIA,EAAQ1E,EAAK,QAAU0E,EAAQsI,EAAS,QAAUhN,EAAK0E,CAAK,GAAKsI,EAAStI,CAAK,EAAG,CAClF,IAAInG,EAAQ2O,GAAalN,EAAMgN,EAAUxa,EAAM8a,EAAQ,UAAW5I,EAAQ,CAAC,EAC3E,GAAInG,EACA,OAAO+O,EAAQ,KAAKA,EAAQ,QAAQ,aAAaA,EAAQ,WAAa,EAAG/O,CAAK,CAAC,EAEnF,GADY+O,EAAQ,eAAeA,EAAQ,UAAU,EAC3C,UAAU5I,GAAS1E,EAAK,OAAS,EAAIxN,EAAK,KAAOwN,EAAK0E,EAAQ,CAAC,CAAC,EACtE,OAAO4I,EAAQ,KAAKA,EAAQ,QAAQ,OAAOjM,EAAS,KAAKgM,GAAa7a,EAAMwN,EAAM0E,EAAQ,CAAC,CAAC,CAAC,CAAC,CACtG,CACJ,CACA,SAASyI,GAAW3a,EAAMkS,EAAO,CAC7B,GAAIA,GAAS,EACT,OAAOlS,EACX,IAAIsa,EAAWta,EAAK,QAAQ,aAAaA,EAAK,WAAa,EAAG2a,GAAW3a,EAAK,UAAWkS,EAAQ,CAAC,CAAC,EAC/F6I,EAAO/a,EAAK,eAAeA,EAAK,UAAU,EAAE,WAAW6O,EAAS,MAAO,EAAI,EAC/E,OAAO7O,EAAK,KAAKsa,EAAS,OAAOS,CAAI,CAAC,CAC1C,CACA,SAASC,GAAWV,EAAUrW,EAAM3D,EAAMC,EAAI2R,EAAO2G,EAAS,CAC1D,IAAI7Y,EAAOiE,EAAO,EAAIqW,EAAS,WAAaA,EAAS,UAAWvO,EAAQ/L,EAAK,QAC7E,OAAIsa,EAAS,WAAa,IACtBzB,EAAU,GACV3G,EAAQ3R,EAAK,IACbwL,EAAQiP,GAAWjP,EAAO9H,EAAM3D,EAAMC,EAAI2R,EAAQ,EAAG2G,CAAO,GAC5D3G,GAAS5R,IACTyL,EAAQ9H,EAAO,EAAIjE,EAAK,eAAe,CAAC,EAAE,WAAW+L,EAAO8M,GAAW3G,CAAK,EAAE,OAAOnG,CAAK,EACpFA,EAAM,OAAO/L,EAAK,eAAeA,EAAK,UAAU,EAAE,WAAW6O,EAAS,MAAO,EAAI,CAAC,GACrFyL,EAAS,aAAarW,EAAO,EAAI,EAAIqW,EAAS,WAAa,EAAGta,EAAK,KAAK+L,CAAK,CAAC,CACzF,CACA,SAASqO,GAAW3B,EAAOG,EAAWC,EAAS,CAC3C,OAAID,EAAYH,EAAM,YAClBA,EAAQ,IAAIgB,EAAMuB,GAAWvC,EAAM,QAAS,GAAIG,EAAWH,EAAM,UAAW,EAAGA,EAAM,OAAO,EAAGG,EAAWH,EAAM,OAAO,GACvHI,EAAUJ,EAAM,UAChBA,EAAQ,IAAIgB,EAAMuB,GAAWvC,EAAM,QAAS,EAAGI,EAASJ,EAAM,QAAS,EAAG,CAAC,EAAGA,EAAM,UAAWI,CAAO,GACnGJ,CACX,CAIA,IAAMS,GAAU,CACZ,MAAO,CAAC,OAAO,EACf,MAAO,CAAC,OAAO,EACf,MAAO,CAAC,OAAO,EACf,QAAS,CAAC,OAAO,EACjB,SAAU,CAAC,OAAO,EAClB,IAAK,CAAC,QAAS,UAAU,EACzB,GAAI,CAAC,QAAS,OAAO,EACrB,GAAI,CAAC,QAAS,QAAS,IAAI,EAC3B,GAAI,CAAC,QAAS,QAAS,IAAI,CAC/B,EACI+B,GAAe,KACnB,SAASlC,IAAc,CACnB,OAAOkC,KAAiBA,GAAe,SAAS,eAAe,mBAAmB,OAAO,EAC7F,CACA,IAAIC,GAAU,KACd,SAASC,GAAiB/B,EAAM,CAC5B,IAAIgC,EAAe,OAAO,aAC1B,OAAKA,GAKAF,KACDA,GAAUE,EAAa,eAAiBA,EAAa,aAAa,uBAAwB,CAAE,WAAaC,GAAMA,CAAE,CAAC,GAC/GH,GAAQ,WAAW9B,CAAI,GANnBA,CAOf,CACA,SAASS,GAAST,EAAM,CACpB,IAAIkC,EAAQ,sBAAsB,KAAKlC,CAAI,EACvCkC,IACAlC,EAAOA,EAAK,MAAMkC,EAAM,CAAC,EAAE,MAAM,GACrC,IAAIhZ,EAAMyW,GAAY,EAAE,cAAc,KAAK,EACvCwC,EAAW,mBAAmB,KAAKnC,CAAI,EAAG5L,EAI9C,IAHIA,EAAO+N,GAAYrC,GAAQqC,EAAS,CAAC,EAAE,YAAY,CAAC,KACpDnC,EAAO5L,EAAK,IAAIgO,GAAK,IAAMA,EAAI,GAAG,EAAE,KAAK,EAAE,EAAIpC,EAAO5L,EAAK,IAAIgO,GAAK,KAAOA,EAAI,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GACzGlZ,EAAI,UAAY6Y,GAAiB/B,CAAI,EACjC5L,EACA,QAAS,EAAI,EAAG,EAAIA,EAAK,OAAQ,IAC7BlL,EAAMA,EAAI,cAAckL,EAAK,CAAC,CAAC,GAAKlL,EAC5C,OAAOA,CACX,CAMA,SAASwX,GAAsBnY,EAAK,CAChC,IAAIyM,EAAQzM,EAAI,iBAAiByB,GAAS,iCAAmC,4BAA4B,EACzG,QAASyC,EAAI,EAAGA,EAAIuI,EAAM,OAAQvI,IAAK,CACnC,IAAI7F,EAAOoO,EAAMvI,CAAC,EACd7F,EAAK,WAAW,QAAU,GAAKA,EAAK,aAAe,QAAYA,EAAK,YACpEA,EAAK,WAAW,aAAa2B,EAAI,cAAc,eAAe,GAAG,EAAG3B,CAAI,CAChF,CACJ,CACA,SAASma,GAAW1B,EAAOC,EAAS,CAChC,GAAI,CAACD,EAAM,KACP,OAAOA,EACX,IAAIkB,EAASlB,EAAM,QAAQ,WAAW,KAAK,OAAQgD,EACnD,GAAI,CACAA,EAAQ,KAAK,MAAM/C,CAAO,CAC9B,MACU,CACN,OAAOD,CACX,CACA,GAAI,CAAE,QAAAE,EAAS,UAAAC,EAAW,QAAAC,CAAQ,EAAIJ,EACtC,QAAS5S,EAAI4V,EAAM,OAAS,EAAG5V,GAAK,EAAGA,GAAK,EAAG,CAC3C,IAAI6V,EAAO/B,EAAO,MAAM8B,EAAM5V,CAAC,CAAC,EAChC,GAAI,CAAC6V,GAAQA,EAAK,iBAAiB,EAC/B,MACJ/C,EAAU9J,EAAS,KAAK6M,EAAK,OAAOD,EAAM5V,EAAI,CAAC,EAAG8S,CAAO,CAAC,EAC1DC,IACAC,GACJ,CACA,OAAO,IAAIY,EAAMd,EAASC,EAAWC,CAAO,CAChD,CAIA,IAAM8C,GAAW,CAAC,EACZC,GAAe,CAAC,EAChBC,GAAkB,CAAE,WAAY,GAAM,UAAW,EAAK,EACtDC,GAAN,KAAiB,CACb,aAAc,CACV,KAAK,SAAW,GAChB,KAAK,UAAY,KACjB,KAAK,YAAc,KACnB,KAAK,gBAAkB,EACvB,KAAK,UAAY,CAAE,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,GAAI,OAAQ,CAAE,EAC5D,KAAK,oBAAsB,KAC3B,KAAK,kBAAoB,EACzB,KAAK,aAAe,EACpB,KAAK,4BAA8B,GACnC,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,iBAAmB,EACxB,KAAK,UAAY,GACjB,KAAK,gBAAkB,KACvB,KAAK,iBAAmB,GACxB,KAAK,iBAAmB,CAAC,EACzB,KAAK,mBAAqB,KAC1B,KAAK,cAAgB,EACrB,KAAK,qBAAuB,GAE5B,KAAK,0BAA4B,EACjC,KAAK,eAAiB,EACtB,KAAK,cAAgB,OAAO,OAAO,IAAI,EACvC,KAAK,mBAAqB,IAC9B,CACJ,EACA,SAASC,GAAUxX,EAAM,CACrB,QAASpC,KAASwZ,GAAU,CACxB,IAAIK,EAAUL,GAASxZ,CAAK,EAC5BoC,EAAK,IAAI,iBAAiBpC,EAAOoC,EAAK,MAAM,cAAcpC,CAAK,EAAKA,GAAU,CACtE8Z,GAAmB1X,EAAMpC,CAAK,GAAK,CAAC+Z,GAAiB3X,EAAMpC,CAAK,IAC/DoC,EAAK,UAAY,EAAEpC,EAAM,QAAQyZ,MAClCI,EAAQzX,EAAMpC,CAAK,CAC3B,EAAG0Z,GAAgB1Z,CAAK,EAAI,CAAE,QAAS,EAAK,EAAI,MAAS,CAC7D,CAIImB,IACAiB,EAAK,IAAI,iBAAiB,QAAS,IAAM,IAAI,EACjD4X,GAAgB5X,CAAI,CACxB,CACA,SAAS6X,GAAmB7X,EAAMgQ,EAAQ,CACtChQ,EAAK,MAAM,oBAAsBgQ,EACjChQ,EAAK,MAAM,kBAAoB,KAAK,IAAI,CAC5C,CACA,SAAS8X,GAAa9X,EAAM,CACxBA,EAAK,YAAY,KAAK,EACtB,QAASmX,KAAQnX,EAAK,MAAM,cACxBA,EAAK,IAAI,oBAAoBmX,EAAMnX,EAAK,MAAM,cAAcmX,CAAI,CAAC,EACrE,aAAanX,EAAK,MAAM,gBAAgB,EACxC,aAAaA,EAAK,MAAM,2BAA2B,CACvD,CACA,SAAS4X,GAAgB5X,EAAM,CAC3BA,EAAK,SAAS,kBAAmB+X,GAAmB,CAChD,QAASZ,KAAQY,EACR/X,EAAK,MAAM,cAAcmX,CAAI,GAC9BnX,EAAK,IAAI,iBAAiBmX,EAAMnX,EAAK,MAAM,cAAcmX,CAAI,EAAIvZ,GAAS+Z,GAAiB3X,EAAMpC,CAAK,CAAC,CACnH,CAAC,CACL,CACA,SAAS+Z,GAAiB3X,EAAMpC,EAAO,CACnC,OAAOoC,EAAK,SAAS,kBAAmBoX,GAAY,CAChD,IAAIK,EAAUL,EAASxZ,EAAM,IAAI,EACjC,OAAO6Z,EAAUA,EAAQzX,EAAMpC,CAAK,GAAKA,EAAM,iBAAmB,EACtE,CAAC,CACL,CACA,SAAS8Z,GAAmB1X,EAAMpC,EAAO,CACrC,GAAI,CAACA,EAAM,QACP,MAAO,GACX,GAAIA,EAAM,iBACN,MAAO,GACX,QAASnC,EAAOmC,EAAM,OAAQnC,GAAQuE,EAAK,IAAKvE,EAAOA,EAAK,WACxD,GAAI,CAACA,GAAQA,EAAK,UAAY,IACzBA,EAAK,YAAcA,EAAK,WAAW,UAAUmC,CAAK,EACnD,MAAO,GACf,MAAO,EACX,CACA,SAASoa,GAAchY,EAAMpC,EAAO,CAC5B,CAAC+Z,GAAiB3X,EAAMpC,CAAK,GAAKwZ,GAASxZ,EAAM,IAAI,IACpDoC,EAAK,UAAY,EAAEpC,EAAM,QAAQyZ,MAClCD,GAASxZ,EAAM,IAAI,EAAEoC,EAAMpC,CAAK,CACxC,CACAyZ,GAAa,QAAU,CAACrX,EAAMiY,IAAW,CACrC,IAAIra,EAAQqa,EAEZ,GADAjY,EAAK,MAAM,SAAWpC,EAAM,SAAW,IAAMA,EAAM,SAC/C,CAAAsa,GAAoBlY,EAAMpC,CAAK,IAEnCoC,EAAK,MAAM,YAAcpC,EAAM,QAC/BoC,EAAK,MAAM,gBAAkB,KAAK,IAAI,EAIlC,EAAAb,IAAWN,IAAUjB,EAAM,SAAW,KAQ1C,GANIA,EAAM,SAAW,KACjBoC,EAAK,YAAY,WAAW,EAK5BhB,IAAOpB,EAAM,SAAW,IAAM,CAACA,EAAM,SAAW,CAACA,EAAM,QAAU,CAACA,EAAM,QAAS,CACjF,IAAIua,EAAM,KAAK,IAAI,EACnBnY,EAAK,MAAM,aAAemY,EAC1BnY,EAAK,MAAM,4BAA8B,WAAW,IAAM,CAClDA,EAAK,MAAM,cAAgBmY,IAC3BnY,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMvC,GAAS,GAAI,OAAO,CAAC,CAAC,EAClEuC,EAAK,MAAM,aAAe,EAElC,EAAG,GAAG,CACV,MACSA,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMpC,CAAK,CAAC,GAAKmW,GAAe/T,EAAMpC,CAAK,EACtFA,EAAM,eAAe,EAGrBia,GAAmB7X,EAAM,KAAK,CAEtC,EACAqX,GAAa,MAAQ,CAACrX,EAAMpC,IAAU,CAC9BA,EAAM,SAAW,KACjBoC,EAAK,MAAM,SAAW,GAC9B,EACAqX,GAAa,SAAW,CAACrX,EAAMiY,IAAW,CACtC,IAAIra,EAAQqa,EACZ,GAAIC,GAAoBlY,EAAMpC,CAAK,GAAK,CAACA,EAAM,UAC3CA,EAAM,SAAW,CAACA,EAAM,QAAUqB,IAAOrB,EAAM,QAC/C,OACJ,GAAIoC,EAAK,SAAS,iBAAkB6E,GAAKA,EAAE7E,EAAMpC,CAAK,CAAC,EAAG,CACtDA,EAAM,eAAe,EACrB,MACJ,CACA,IAAIqH,EAAMjF,EAAK,MAAM,UACrB,GAAI,EAAEiF,aAAekG,KAAkB,CAAClG,EAAI,MAAM,WAAWA,EAAI,GAAG,EAAG,CACnE,IAAI8D,EAAO,OAAO,aAAanL,EAAM,QAAQ,EACzCwa,EAAQ,IAAMpY,EAAK,MAAM,GAAG,WAAW+I,CAAI,EAAE,eAAe,EAC5D,CAAC,SAAS,KAAKA,CAAI,GAAK,CAAC/I,EAAK,SAAS,kBAAmB6E,GAAKA,EAAE7E,EAAMiF,EAAI,MAAM,IAAKA,EAAI,IAAI,IAAK8D,EAAMqP,CAAK,CAAC,GAC/GpY,EAAK,SAASoY,EAAM,CAAC,EACzBxa,EAAM,eAAe,CACzB,CACJ,EACA,SAASya,GAAYza,EAAO,CAAE,MAAO,CAAE,KAAMA,EAAM,QAAS,IAAKA,EAAM,OAAQ,CAAG,CAClF,SAAS0a,GAAO1a,EAAO2a,EAAO,CAC1B,IAAIhW,EAAKgW,EAAM,EAAI3a,EAAM,QAAS4a,EAAKD,EAAM,EAAI3a,EAAM,QACvD,OAAO2E,EAAKA,EAAKiW,EAAKA,EAAK,GAC/B,CACA,SAASC,GAAoBzY,EAAM0Y,EAAUva,EAAKwa,EAAQ/a,EAAO,CAC7D,GAAI+a,GAAU,GACV,MAAO,GACX,IAAIzT,EAAOlF,EAAK,MAAM,IAAI,QAAQ2Y,CAAM,EACxC,QAASrX,EAAI4D,EAAK,MAAQ,EAAG5D,EAAI,EAAGA,IAChC,GAAItB,EAAK,SAAS0Y,EAAU7T,GAAKvD,EAAI4D,EAAK,MAAQL,EAAE7E,EAAM7B,EAAK+G,EAAK,UAAWA,EAAK,OAAO5D,CAAC,EAAG1D,EAAO,EAAI,EACpGiH,EAAE7E,EAAM7B,EAAK+G,EAAK,KAAK5D,CAAC,EAAG4D,EAAK,OAAO5D,CAAC,EAAG1D,EAAO,EAAK,CAAC,EAC1D,MAAO,GAEf,MAAO,EACX,CACA,SAASgb,GAAgB5Y,EAAMmQ,EAAWH,EAAQ,CAG9C,GAFKhQ,EAAK,SACNA,EAAK,MAAM,EACXA,EAAK,MAAM,UAAU,GAAGmQ,CAAS,EACjC,OACJ,IAAIsD,EAAKzT,EAAK,MAAM,GAAG,aAAamQ,CAAS,EACzCH,GAAU,WACVyD,EAAG,QAAQ,UAAW,EAAI,EAC9BzT,EAAK,SAASyT,CAAE,CACpB,CACA,SAASoF,GAAkB7Y,EAAM2Y,EAAQ,CACrC,GAAIA,GAAU,GACV,MAAO,GACX,IAAIzT,EAAOlF,EAAK,MAAM,IAAI,QAAQ2Y,CAAM,EAAGld,EAAOyJ,EAAK,UACvD,OAAIzJ,GAAQA,EAAK,QAAU4U,GAAc,aAAa5U,CAAI,GACtDmd,GAAgB5Y,EAAM,IAAIqQ,GAAcnL,CAAI,EAAG,SAAS,EACjD,IAEJ,EACX,CACA,SAAS4T,GAAkB9Y,EAAM2Y,EAAQ,CACrC,GAAIA,GAAU,GACV,MAAO,GACX,IAAI1T,EAAMjF,EAAK,MAAM,UAAW+Y,EAAcC,EAC1C/T,aAAeoL,KACf0I,EAAe9T,EAAI,MACvB,IAAIC,EAAOlF,EAAK,MAAM,IAAI,QAAQ2Y,CAAM,EACxC,QAASrX,EAAI4D,EAAK,MAAQ,EAAG5D,EAAI,EAAGA,IAAK,CACrC,IAAI7F,EAAO6F,EAAI4D,EAAK,MAAQA,EAAK,UAAYA,EAAK,KAAK5D,CAAC,EACxD,GAAI+O,GAAc,aAAa5U,CAAI,EAAG,CAC9Bsd,GAAgB9T,EAAI,MAAM,MAAQ,GAClC3D,GAAK2D,EAAI,MAAM,OAASC,EAAK,OAAOD,EAAI,MAAM,MAAQ,CAAC,GAAKA,EAAI,MAAM,IACtE+T,EAAW9T,EAAK,OAAOD,EAAI,MAAM,KAAK,EAEtC+T,EAAW9T,EAAK,OAAO5D,CAAC,EAC5B,KACJ,CACJ,CACA,OAAI0X,GAAY,MACZJ,GAAgB5Y,EAAMqQ,GAAc,OAAOrQ,EAAK,MAAM,IAAKgZ,CAAQ,EAAG,SAAS,EACxE,IAGA,EAEf,CACA,SAASC,GAAkBjZ,EAAM7B,EAAKwa,EAAQ/a,EAAOsb,EAAY,CAC7D,OAAOT,GAAoBzY,EAAM,gBAAiB7B,EAAKwa,EAAQ/a,CAAK,GAChEoC,EAAK,SAAS,cAAe6E,GAAKA,EAAE7E,EAAM7B,EAAKP,CAAK,CAAC,IACpDsb,EAAaJ,GAAkB9Y,EAAM2Y,CAAM,EAAIE,GAAkB7Y,EAAM2Y,CAAM,EACtF,CACA,SAASQ,GAAkBnZ,EAAM7B,EAAKwa,EAAQ/a,EAAO,CACjD,OAAO6a,GAAoBzY,EAAM,sBAAuB7B,EAAKwa,EAAQ/a,CAAK,GACtEoC,EAAK,SAAS,oBAAqB6E,GAAKA,EAAE7E,EAAM7B,EAAKP,CAAK,CAAC,CACnE,CACA,SAASwb,GAAkBpZ,EAAM7B,EAAKwa,EAAQ/a,EAAO,CACjD,OAAO6a,GAAoBzY,EAAM,sBAAuB7B,EAAKwa,EAAQ/a,CAAK,GACtEoC,EAAK,SAAS,oBAAqB6E,GAAKA,EAAE7E,EAAM7B,EAAKP,CAAK,CAAC,GAC3Dyb,GAAmBrZ,EAAM2Y,EAAQ/a,CAAK,CAC9C,CACA,SAASyb,GAAmBrZ,EAAM2Y,EAAQ/a,EAAO,CAC7C,GAAIA,EAAM,QAAU,EAChB,MAAO,GACX,IAAIE,EAAMkC,EAAK,MAAM,IACrB,GAAI2Y,GAAU,GACV,OAAI7a,EAAI,eACJ8a,GAAgB5Y,EAAMmL,GAAc,OAAOrN,EAAK,EAAGA,EAAI,QAAQ,IAAI,EAAG,SAAS,EACxE,IAEJ,GAEX,IAAIoH,EAAOpH,EAAI,QAAQ6a,CAAM,EAC7B,QAAS,EAAIzT,EAAK,MAAQ,EAAG,EAAI,EAAG,IAAK,CACrC,IAAIzJ,EAAO,EAAIyJ,EAAK,MAAQA,EAAK,UAAYA,EAAK,KAAK,CAAC,EACpDiN,EAAUjN,EAAK,OAAO,CAAC,EAC3B,GAAIzJ,EAAK,cACLmd,GAAgB5Y,EAAMmL,GAAc,OAAOrN,EAAKqU,EAAU,EAAGA,EAAU,EAAI1W,EAAK,QAAQ,IAAI,EAAG,SAAS,UACnG4U,GAAc,aAAa5U,CAAI,EACpCmd,GAAgB5Y,EAAMqQ,GAAc,OAAOvS,EAAKqU,CAAO,EAAG,SAAS,MAEnE,UACJ,MAAO,EACX,CACJ,CACA,SAASmH,GAActZ,EAAM,CACzB,OAAOuZ,GAAevZ,CAAI,CAC9B,CACA,IAAMwZ,GAAqBva,GAAM,UAAY,UAC7CmY,GAAS,UAAY,CAACpX,EAAMiY,IAAW,CACnC,IAAIra,EAAQqa,EACZjY,EAAK,MAAM,SAAWpC,EAAM,SAC5B,IAAI6b,EAAUH,GAActZ,CAAI,EAC5BmY,EAAM,KAAK,IAAI,EAAGhB,EAAO,cACzBgB,EAAMnY,EAAK,MAAM,UAAU,KAAO,KAAOsY,GAAO1a,EAAOoC,EAAK,MAAM,SAAS,GAAK,CAACpC,EAAM4b,EAAkB,GACzGxZ,EAAK,MAAM,UAAU,QAAUpC,EAAM,SACjCoC,EAAK,MAAM,UAAU,MAAQ,cAC7BmX,EAAO,cACFnX,EAAK,MAAM,UAAU,MAAQ,gBAClCmX,EAAO,gBAEfnX,EAAK,MAAM,UAAY,CAAE,KAAMmY,EAAK,EAAGva,EAAM,QAAS,EAAGA,EAAM,QAAS,KAAAuZ,EAAM,OAAQvZ,EAAM,MAAO,EACnG,IAAIO,EAAM6B,EAAK,YAAYqY,GAAYza,CAAK,CAAC,EACxCO,IAEDgZ,GAAQ,eACJnX,EAAK,MAAM,WACXA,EAAK,MAAM,UAAU,KAAK,EAC9BA,EAAK,MAAM,UAAY,IAAI0Z,GAAU1Z,EAAM7B,EAAKP,EAAO,CAAC,CAAC6b,CAAO,IAE1DtC,GAAQ,cAAgBgC,GAAoBC,IAAmBpZ,EAAM7B,EAAI,IAAKA,EAAI,OAAQP,CAAK,EACrGA,EAAM,eAAe,EAGrBia,GAAmB7X,EAAM,SAAS,EAE1C,EACA,IAAM0Z,GAAN,KAAgB,CACZ,YAAY1Z,EAAM7B,EAAKP,EAAO6b,EAAS,CACnC,KAAK,KAAOzZ,EACZ,KAAK,IAAM7B,EACX,KAAK,MAAQP,EACb,KAAK,QAAU6b,EACf,KAAK,qBAAuB,GAC5B,KAAK,UAAY,KACjB,KAAK,SAAWzZ,EAAK,MAAM,IAC3B,KAAK,WAAa,CAAC,CAACpC,EAAM4b,EAAkB,EAC5C,KAAK,aAAe5b,EAAM,SAC1B,IAAIvB,EAAYsd,EAChB,GAAIxb,EAAI,OAAS,GACb9B,EAAa2D,EAAK,MAAM,IAAI,OAAO7B,EAAI,MAAM,EAC7Cwb,EAAYxb,EAAI,WAEf,CACD,IAAI+G,EAAOlF,EAAK,MAAM,IAAI,QAAQ7B,EAAI,GAAG,EACzC9B,EAAa6I,EAAK,OAClByU,EAAYzU,EAAK,MAAQA,EAAK,OAAO,EAAI,CAC7C,CACA,IAAMpB,EAAS2V,EAAU,KAAO7b,EAAM,OAChCoQ,EAAalK,EAAS9D,EAAK,QAAQ,YAAY8D,EAAQ,EAAI,EAAI,KACrE,KAAK,OAASkK,GAAcA,EAAW,QAAQ,UAAY,EAAIA,EAAW,QAAU,KACpF,GAAI,CAAE,UAAAmC,CAAU,EAAInQ,EAAK,MACrBpC,EAAM,QAAU,IACfvB,EAAW,KAAK,KAAK,WAAaA,EAAW,KAAK,KAAK,aAAe,IACnE8T,aAAqBE,IAAiBF,EAAU,MAAQwJ,GAAaxJ,EAAU,GAAKwJ,KACxF,KAAK,UAAY,CACb,KAAMtd,EACN,IAAKsd,EACL,QAAS,CAAC,EAAE,KAAK,QAAU,CAAC,KAAK,OAAO,WACxC,cAAe,CAAC,EAAE,KAAK,QAAUhb,IAAS,CAAC,KAAK,OAAO,aAAa,iBAAiB,EACzF,GACA,KAAK,QAAU,KAAK,YAAc,KAAK,UAAU,SAAW,KAAK,UAAU,iBAC3E,KAAK,KAAK,YAAY,KAAK,EACvB,KAAK,UAAU,UACf,KAAK,OAAO,UAAY,IACxB,KAAK,UAAU,eACf,WAAW,IAAM,CACT,KAAK,KAAK,MAAM,WAAa,MAC7B,KAAK,OAAO,aAAa,kBAAmB,OAAO,CAC3D,EAAG,EAAE,EACT,KAAK,KAAK,YAAY,MAAM,GAEhCqB,EAAK,KAAK,iBAAiB,UAAW,KAAK,GAAK,KAAK,GAAG,KAAK,IAAI,CAAC,EAClEA,EAAK,KAAK,iBAAiB,YAAa,KAAK,KAAO,KAAK,KAAK,KAAK,IAAI,CAAC,EACxE6X,GAAmB7X,EAAM,SAAS,CACtC,CACA,MAAO,CACH,KAAK,KAAK,KAAK,oBAAoB,UAAW,KAAK,EAAE,EACrD,KAAK,KAAK,KAAK,oBAAoB,YAAa,KAAK,IAAI,EACrD,KAAK,WAAa,KAAK,SACvB,KAAK,KAAK,YAAY,KAAK,EACvB,KAAK,UAAU,SACf,KAAK,OAAO,gBAAgB,WAAW,EACvC,KAAK,UAAU,eACf,KAAK,OAAO,gBAAgB,iBAAiB,EACjD,KAAK,KAAK,YAAY,MAAM,GAE5B,KAAK,sBACL,WAAW,IAAM4Q,GAAe,KAAK,IAAI,CAAC,EAC9C,KAAK,KAAK,MAAM,UAAY,IAChC,CACA,GAAGhT,EAAO,CAEN,GADA,KAAK,KAAK,EACN,CAAC,KAAK,KAAK,IAAI,SAASA,EAAM,MAAM,EACpC,OACJ,IAAIO,EAAM,KAAK,IACX,KAAK,KAAK,MAAM,KAAO,KAAK,WAC5BA,EAAM,KAAK,KAAK,YAAYka,GAAYza,CAAK,CAAC,GAClD,KAAK,mBAAmBA,CAAK,EACzB,KAAK,cAAgB,CAACO,EACtB0Z,GAAmB,KAAK,KAAM,SAAS,EAElCoB,GAAkB,KAAK,KAAM9a,EAAI,IAAKA,EAAI,OAAQP,EAAO,KAAK,UAAU,EAC7EA,EAAM,eAAe,EAEhBA,EAAM,QAAU,IACpB,KAAK,SAEDmB,IAAU,KAAK,WAAa,CAAC,KAAK,UAAU,KAAK,QAQjDF,IAAU,CAAC,KAAK,KAAK,MAAM,UAAU,SAClC,KAAK,IAAI,KAAK,IAAIV,EAAI,IAAM,KAAK,KAAK,MAAM,UAAU,IAAI,EAAG,KAAK,IAAIA,EAAI,IAAM,KAAK,KAAK,MAAM,UAAU,EAAE,CAAC,GAAK,IAC1Hya,GAAgB,KAAK,KAAM9G,GAAU,KAAK,KAAK,KAAK,MAAM,IAAI,QAAQ3T,EAAI,GAAG,CAAC,EAAG,SAAS,EAC1FP,EAAM,eAAe,GAGrBia,GAAmB,KAAK,KAAM,SAAS,CAE/C,CACA,KAAKja,EAAO,CACR,KAAK,mBAAmBA,CAAK,EAC7Bia,GAAmB,KAAK,KAAM,SAAS,EACnCja,EAAM,SAAW,GACjB,KAAK,KAAK,CAClB,CACA,mBAAmBA,EAAO,CAClB,CAAC,KAAK,eAAiB,KAAK,IAAI,KAAK,MAAM,EAAIA,EAAM,OAAO,EAAI,GAChE,KAAK,IAAI,KAAK,MAAM,EAAIA,EAAM,OAAO,EAAI,KACzC,KAAK,aAAe,GAC5B,CACJ,EACAwZ,GAAS,WAAapX,GAAQ,CAC1BA,EAAK,MAAM,UAAY,KAAK,IAAI,EAChCsZ,GAActZ,CAAI,EAClB6X,GAAmB7X,EAAM,SAAS,CACtC,EACAoX,GAAS,UAAYpX,GAAQ,CACzBA,EAAK,MAAM,UAAY,KAAK,IAAI,EAChC6X,GAAmB7X,EAAM,SAAS,CACtC,EACAoX,GAAS,YAAcpX,GAAQsZ,GAActZ,CAAI,EACjD,SAASkY,GAAoBlY,EAAMpC,EAAO,CACtC,OAAIoC,EAAK,UACE,GAWPjB,IAAU,KAAK,IAAInB,EAAM,UAAYoC,EAAK,MAAM,kBAAkB,EAAI,KACtEA,EAAK,MAAM,mBAAqB,KACzB,IAEJ,EACX,CAEA,IAAM4Z,GAAqBza,GAAU,IAAO,GAC5CkY,GAAa,iBAAmBA,GAAa,kBAAoBrX,GAAQ,CACrE,GAAI,CAACA,EAAK,UAAW,CACjBA,EAAK,YAAY,MAAM,EACvB,GAAI,CAAE,MAAA4E,CAAM,EAAI5E,EAAMkF,EAAON,EAAM,UAAU,IAC7C,GAAIA,EAAM,qBAAqBuG,KAC1BvG,EAAM,aACF,CAACM,EAAK,YAAcA,EAAK,cAAgBA,EAAK,WAAW,MAAM,KAAKgI,GAAKA,EAAE,KAAK,KAAK,YAAc,EAAK,GACzGrO,IAAUK,IAAW2a,GAA0B7Z,CAAI,GAEvDA,EAAK,WAAaA,EAAK,MAAM,aAAekF,EAAK,MAAM,EACvDqU,GAAevZ,EAAM,EAAI,EACzBA,EAAK,WAAa,aAGlBuZ,GAAevZ,EAAM,CAAC4E,EAAM,UAAU,KAAK,EAIvCjG,IAASiG,EAAM,UAAU,OAASM,EAAK,cAAgB,CAACA,EAAK,YAAcA,EAAK,WAAW,MAAM,OAAQ,CACzG,IAAID,EAAMjF,EAAK,kBAAkB,EACjC,QAASvE,EAAOwJ,EAAI,UAAWlI,EAASkI,EAAI,YAAaxJ,GAAQA,EAAK,UAAY,GAAKsB,GAAU,GAAI,CACjG,IAAIyH,EAASzH,EAAS,EAAItB,EAAK,UAAYA,EAAK,WAAWsB,EAAS,CAAC,EACrE,GAAI,CAACyH,EACD,MACJ,GAAIA,EAAO,UAAY,EAAG,CACtB,IAAIS,EAAMjF,EAAK,aAAa,EACxBiF,GACAA,EAAI,SAAST,EAAQA,EAAO,UAAU,MAAM,EAChD,KACJ,MAEI/I,EAAO+I,EACPzH,EAAS,EAEjB,CACJ,CAEJiD,EAAK,MAAM,UAAY,EAC3B,CACA8Z,GAAmB9Z,EAAM4Z,EAAkB,CAC/C,EACA,SAASC,GAA0B7Z,EAAM,CACrC,GAAI,CAAE,UAAA4T,EAAW,YAAAC,CAAY,EAAI7T,EAAK,kBAAkB,EACxD,GAAI,CAAC4T,GAAaA,EAAU,UAAY,GAAKC,GAAeD,EAAU,WAAW,OAC7E,MAAO,GACX,IAAIjQ,EAAOiQ,EAAU,WAAWC,CAAW,EAC3C,OAAOlQ,EAAK,UAAY,GAAKA,EAAK,iBAAmB,OACzD,CACA0T,GAAa,eAAiB,CAACrX,EAAMpC,IAAU,CACvCoC,EAAK,YACLA,EAAK,MAAM,UAAY,GACvBA,EAAK,MAAM,mBAAqBpC,EAAM,UACtCoC,EAAK,MAAM,0BAA4BA,EAAK,YAAY,eAAe,EAAE,OAASA,EAAK,MAAM,cAAgB,EAC7GA,EAAK,MAAM,gBAAkB,KACzBA,EAAK,MAAM,qBACXA,EAAK,YAAY,WAAW,EACvBA,EAAK,MAAM,2BAChB,QAAQ,QAAQ,EAAE,KAAK,IAAMA,EAAK,YAAY,MAAM,CAAC,EACzDA,EAAK,MAAM,gBACX8Z,GAAmB9Z,EAAM,EAAE,EAEnC,EACA,SAAS8Z,GAAmB9Z,EAAM+Z,EAAO,CACrC,aAAa/Z,EAAK,MAAM,gBAAgB,EACpC+Z,EAAQ,KACR/Z,EAAK,MAAM,iBAAmB,WAAW,IAAMuZ,GAAevZ,CAAI,EAAG+Z,CAAK,EAClF,CACA,SAASC,GAAiBha,EAAM,CAK5B,IAJIA,EAAK,YACLA,EAAK,MAAM,UAAY,GACvBA,EAAK,MAAM,mBAAqBia,GAAyB,GAEtDja,EAAK,MAAM,iBAAiB,OAAS,GACxCA,EAAK,MAAM,iBAAiB,IAAI,EAAE,iBAAiB,CAC3D,CACA,SAASka,GAAoBla,EAAM,CAC/B,IAAIiF,EAAMjF,EAAK,kBAAkB,EACjC,GAAI,CAACiF,EAAI,UACL,OAAO,KACX,IAAIkV,EAAard,GAAiBmI,EAAI,UAAWA,EAAI,WAAW,EAC5DmV,EAAYpd,GAAgBiI,EAAI,UAAWA,EAAI,WAAW,EAC9D,GAAIkV,GAAcC,GAAaD,GAAcC,EAAW,CACpD,IAAIC,EAAYD,EAAU,WAAYE,EAActa,EAAK,YAAY,oBACrE,GAAIma,GAAcG,GAAeF,GAAaE,EAC1C,OAAOA,EACX,GAAI,CAACD,GAAa,CAACA,EAAU,OAAOD,EAAU,SAAS,EACnD,OAAOA,EAEN,GAAIpa,EAAK,MAAM,iBAAmBoa,EAAW,CAC9C,IAAIG,EAAaJ,EAAW,WAC5B,GAAI,EAAE,CAACI,GAAc,CAACA,EAAW,OAAOJ,EAAW,SAAS,GACxD,OAAOC,CACf,CACJ,CACA,OAAOD,GAAcC,CACzB,CACA,SAASH,IAA2B,CAChC,IAAIrc,EAAQ,SAAS,YAAY,OAAO,EACxC,OAAAA,EAAM,UAAU,QAAS,GAAM,EAAI,EAC5BA,EAAM,SACjB,CAIA,SAAS2b,GAAevZ,EAAMwa,EAAa,GAAO,CAC9C,GAAI,EAAArb,IAAWa,EAAK,YAAY,cAAgB,GAIhD,IAFAA,EAAK,YAAY,WAAW,EAC5Bga,GAAiBha,CAAI,EACjBwa,GAAcxa,EAAK,SAAWA,EAAK,QAAQ,MAAO,CAClD,IAAIiF,EAAM8K,GAAiB/P,CAAI,EAAG1C,EAAM0C,EAAK,MAAM,UACnD,OAAIiF,GAAO,CAACA,EAAI,GAAG3H,CAAG,EAClB0C,EAAK,SAASA,EAAK,MAAM,GAAG,aAAaiF,CAAG,CAAC,GACvCjF,EAAK,YAAcwa,IAAe,CAACld,EAAI,MAAM,KAAKA,EAAI,MAAM,YAAYA,EAAI,EAAE,CAAC,EAAE,cACvF0C,EAAK,SAASA,EAAK,MAAM,GAAG,gBAAgB,CAAC,EAE7CA,EAAK,YAAYA,EAAK,KAAK,EACxB,EACX,CACA,MAAO,GACX,CACA,SAASya,GAAYza,EAAM5C,EAAK,CAG5B,GAAI,CAAC4C,EAAK,IAAI,WACV,OACJ,IAAIiJ,EAAOjJ,EAAK,IAAI,WAAW,YAAY,SAAS,cAAc,KAAK,CAAC,EACxEiJ,EAAK,YAAY7L,CAAG,EACpB6L,EAAK,MAAM,QAAU,6CACrB,IAAIhE,EAAM,aAAa,EAAGhJ,EAAQ,SAAS,YAAY,EACvDA,EAAM,mBAAmBmB,CAAG,EAI5B4C,EAAK,IAAI,KAAK,EACdiF,EAAI,gBAAgB,EACpBA,EAAI,SAAShJ,CAAK,EAClB,WAAW,IAAM,CACTgN,EAAK,YACLA,EAAK,WAAW,YAAYA,CAAI,EACpCjJ,EAAK,MAAM,CACf,EAAG,EAAE,CACT,CAIA,IAAM0a,GAAsBjc,IAAMC,GAAa,IAC1CM,IAAOK,GAAiB,IAC7B+X,GAAS,KAAOC,GAAa,IAAM,CAACrX,EAAMiY,IAAW,CACjD,IAAIra,EAAQqa,EACRhT,EAAMjF,EAAK,MAAM,UAAW2a,EAAM/c,EAAM,MAAQ,MACpD,GAAIqH,EAAI,MACJ,OAEJ,IAAI2V,EAAOF,GAAqB,KAAO9c,EAAM,cACzCsW,EAAQjP,EAAI,QAAQ,EAAG,CAAE,IAAA7H,EAAK,KAAA2L,CAAK,EAAIkL,GAAsBjU,EAAMkU,CAAK,EACxE0G,GACAhd,EAAM,eAAe,EACrBgd,EAAK,UAAU,EACfA,EAAK,QAAQ,YAAaxd,EAAI,SAAS,EACvCwd,EAAK,QAAQ,aAAc7R,CAAI,GAG/B0R,GAAYza,EAAM5C,CAAG,EAErBud,GACA3a,EAAK,SAASA,EAAK,MAAM,GAAG,gBAAgB,EAAE,eAAe,EAAE,QAAQ,UAAW,KAAK,CAAC,CAChG,EACA,SAAS6a,GAAgB3G,EAAO,CAC5B,OAAOA,EAAM,WAAa,GAAKA,EAAM,SAAW,GAAKA,EAAM,QAAQ,YAAc,EAAIA,EAAM,QAAQ,WAAa,IACpH,CACA,SAAS4G,GAAa9a,EAAMpC,EAAO,CAC/B,GAAI,CAACoC,EAAK,IAAI,WACV,OACJ,IAAI8U,EAAY9U,EAAK,MAAM,UAAYA,EAAK,MAAM,UAAU,MAAM,OAAO,KAAK,KAAK,KAC/E8D,EAAS9D,EAAK,IAAI,WAAW,YAAY,SAAS,cAAc8U,EAAY,WAAa,KAAK,CAAC,EAC9FA,IACDhR,EAAO,gBAAkB,QAC7BA,EAAO,MAAM,QAAU,6CACvBA,EAAO,MAAM,EACb,IAAIiX,EAAQ/a,EAAK,MAAM,UAAYA,EAAK,MAAM,aAAe,GAC7D,WAAW,IAAM,CACbA,EAAK,MAAM,EACP8D,EAAO,YACPA,EAAO,WAAW,YAAYA,CAAM,EACpCgR,EACAkG,GAAQhb,EAAM8D,EAAO,MAAO,KAAMiX,EAAOnd,CAAK,EAE9Cod,GAAQhb,EAAM8D,EAAO,YAAaA,EAAO,UAAWiX,EAAOnd,CAAK,CACxE,EAAG,EAAE,CACT,CACA,SAASod,GAAQhb,EAAM+I,EAAM8L,EAAMoG,EAAard,EAAO,CACnD,IAAIsW,EAAQU,GAAmB5U,EAAM+I,EAAM8L,EAAMoG,EAAajb,EAAK,MAAM,UAAU,KAAK,EACxF,GAAIA,EAAK,SAAS,cAAe6E,GAAKA,EAAE7E,EAAMpC,EAAOsW,GAASgB,EAAM,KAAK,CAAC,EACtE,MAAO,GACX,GAAI,CAAChB,EACD,MAAO,GACX,IAAIgH,EAAaL,GAAgB3G,CAAK,EAClCT,EAAKyH,EACHlb,EAAK,MAAM,GAAG,qBAAqBkb,EAAYD,CAAW,EAC1Djb,EAAK,MAAM,GAAG,iBAAiBkU,CAAK,EAC1C,OAAAlU,EAAK,SAASyT,EAAG,eAAe,EAAE,QAAQ,QAAS,EAAI,EAAE,QAAQ,UAAW,OAAO,CAAC,EAC7E,EACX,CACA,SAAS0H,GAAQC,EAAe,CAC5B,IAAIrS,EAAOqS,EAAc,QAAQ,YAAY,GAAKA,EAAc,QAAQ,MAAM,EAC9E,GAAIrS,EACA,OAAOA,EACX,IAAIsS,EAAOD,EAAc,QAAQ,eAAe,EAChD,OAAOC,EAAOA,EAAK,QAAQ,SAAU,GAAG,EAAI,EAChD,CACAhE,GAAa,MAAQ,CAACrX,EAAMiY,IAAW,CACnC,IAAIra,EAAQqa,EAKZ,GAAIjY,EAAK,WAAa,CAACb,GACnB,OACJ,IAAIyb,EAAOF,GAAqB,KAAO9c,EAAM,cACzCmd,EAAQ/a,EAAK,MAAM,UAAYA,EAAK,MAAM,aAAe,GACzD4a,GAAQI,GAAQhb,EAAMmb,GAAQP,CAAI,EAAGA,EAAK,QAAQ,WAAW,EAAGG,EAAOnd,CAAK,EAC5EA,EAAM,eAAe,EAErBkd,GAAa9a,EAAMpC,CAAK,CAChC,EACA,IAAM0d,GAAN,KAAe,CACX,YAAYpH,EAAOqH,EAAM9f,EAAM,CAC3B,KAAK,MAAQyY,EACb,KAAK,KAAOqH,EACZ,KAAK,KAAO9f,CAChB,CACJ,EACM+f,GAAmBvc,GAAM,SAAW,UAC1C,SAASwc,GAAUzb,EAAMpC,EAAO,CAC5B,IAAIgM,EACJ,OAAA5J,EAAK,SAAS,aAAc0b,GAAQ,CAAE9R,EAAOA,GAAQ8R,EAAK9d,CAAK,CAAG,CAAC,EAC5DgM,GAAQ,KAAO,CAACA,EAAO,CAAChM,EAAM4d,EAAgB,CACzD,CACApE,GAAS,UAAY,CAACpX,EAAMiY,IAAW,CACnC,IAAIra,EAAQqa,EACR0D,EAAY3b,EAAK,MAAM,UAG3B,GAFI2b,GACAA,EAAU,KAAK,EACf,CAAC/d,EAAM,aACP,OACJ,IAAIqH,EAAMjF,EAAK,MAAM,UACjB7B,EAAM8G,EAAI,MAAQ,KAAOjF,EAAK,YAAYqY,GAAYza,CAAK,CAAC,EAC5DnC,EACJ,GAAI,EAAA0C,GAAOA,EAAI,KAAO8G,EAAI,MAAQ9G,EAAI,MAAQ8G,aAAeoL,GAAgBpL,EAAI,GAAK,EAAIA,EAAI,MACzF,GAAI0W,GAAaA,EAAU,UAC5BlgB,EAAO4U,GAAc,OAAOrQ,EAAK,MAAM,IAAK2b,EAAU,UAAU,GAAG,UAE9D/d,EAAM,QAAUA,EAAM,OAAO,UAAY,EAAG,CACjD,IAAIP,EAAO2C,EAAK,QAAQ,YAAYpC,EAAM,OAAQ,EAAI,EAClDP,GAAQA,EAAK,KAAK,KAAK,KAAK,WAAaA,GAAQ2C,EAAK,UACtDvE,EAAO4U,GAAc,OAAOrQ,EAAK,MAAM,IAAK3C,EAAK,SAAS,EAClE,EACA,IAAIue,GAAgBngB,GAAQuE,EAAK,MAAM,WAAW,QAAQ,EACtD,CAAE,IAAA5C,EAAK,KAAA2L,EAAM,MAAAmL,CAAM,EAAID,GAAsBjU,EAAM4b,CAAY,GAE/D,CAAChe,EAAM,aAAa,MAAM,QAAU,CAACiB,IAAUC,GAAiB,MAChElB,EAAM,aAAa,UAAU,EACjCA,EAAM,aAAa,QAAQ8c,GAAqB,OAAS,YAAatd,EAAI,SAAS,EAEnFQ,EAAM,aAAa,cAAgB,WAC9B8c,IACD9c,EAAM,aAAa,QAAQ,aAAcmL,CAAI,EACjD/I,EAAK,SAAW,IAAIsb,GAASpH,EAAOuH,GAAUzb,EAAMpC,CAAK,EAAGnC,CAAI,CACpE,EACA2b,GAAS,QAAUpX,GAAQ,CACvB,IAAI6b,EAAW7b,EAAK,SACpB,OAAO,WAAW,IAAM,CAChBA,EAAK,UAAY6b,IACjB7b,EAAK,SAAW,KACxB,EAAG,EAAE,CACT,EACAqX,GAAa,SAAWA,GAAa,UAAY,CAACyE,EAAG,IAAM,EAAE,eAAe,EAC5EzE,GAAa,KAAO,CAACrX,EAAMpC,IAAU,CACjC,GAAI,CACAme,GAAW/b,EAAMpC,EAAOoC,EAAK,QAAQ,CACzC,QACA,CACIA,EAAK,SAAW,IACpB,CACJ,EACA,SAAS+b,GAAW/b,EAAMpC,EAAOie,EAAU,CACvC,GAAI,CAACje,EAAM,aACP,OACJ,IAAIoe,EAAWhc,EAAK,YAAYqY,GAAYza,CAAK,CAAC,EAClD,GAAI,CAACoe,EACD,OACJ,IAAIC,EAASjc,EAAK,MAAM,IAAI,QAAQgc,EAAS,GAAG,EAC5C9H,EAAQ2H,GAAYA,EAAS,MAC7B3H,EACAlU,EAAK,SAAS,kBAAmB6E,GAAK,CAAEqP,EAAQrP,EAAEqP,EAAOlU,EAAM,EAAK,CAAG,CAAC,EAGxEkU,EAAQU,GAAmB5U,EAAMmb,GAAQvd,EAAM,YAAY,EAAG8c,GAAqB,KAAO9c,EAAM,aAAa,QAAQ,WAAW,EAAG,GAAOqe,CAAM,EAEpJ,IAAIV,EAAO,CAAC,EAAEM,GAAYJ,GAAUzb,EAAMpC,CAAK,GAC/C,GAAIoC,EAAK,SAAS,aAAc6E,GAAKA,EAAE7E,EAAMpC,EAAOsW,GAASgB,EAAM,MAAOqG,CAAI,CAAC,EAAG,CAC9E3d,EAAM,eAAe,EACrB,MACJ,CACA,GAAI,CAACsW,EACD,OACJtW,EAAM,eAAe,EACrB,IAAIse,EAAYhI,EAAQiI,GAAUnc,EAAK,MAAM,IAAKic,EAAO,IAAK/H,CAAK,EAAI+H,EAAO,IAC1EC,GAAa,OACbA,EAAYD,EAAO,KACvB,IAAIxI,EAAKzT,EAAK,MAAM,GACpB,GAAIub,EAAM,CACN,GAAI,CAAE,KAAA9f,CAAK,EAAIogB,EACXpgB,EACAA,EAAK,QAAQgY,CAAE,EAEfA,EAAG,gBAAgB,CAC3B,CACA,IAAItV,EAAMsV,EAAG,QAAQ,IAAIyI,CAAS,EAC9BE,EAASlI,EAAM,WAAa,GAAKA,EAAM,SAAW,GAAKA,EAAM,QAAQ,YAAc,EACnFmI,EAAe5I,EAAG,IAKtB,GAJI2I,EACA3I,EAAG,iBAAiBtV,EAAKA,EAAK+V,EAAM,QAAQ,UAAU,EAEtDT,EAAG,aAAatV,EAAKA,EAAK+V,CAAK,EAC/BT,EAAG,IAAI,GAAG4I,CAAY,EACtB,OACJ,IAAInX,EAAOuO,EAAG,IAAI,QAAQtV,CAAG,EAC7B,GAAIie,GAAU/L,GAAc,aAAa6D,EAAM,QAAQ,UAAU,GAC7DhP,EAAK,WAAaA,EAAK,UAAU,WAAWgP,EAAM,QAAQ,UAAU,EACpET,EAAG,aAAa,IAAIpD,GAAcnL,CAAI,CAAC,MAEtC,CACD,IAAIqC,EAAMkM,EAAG,QAAQ,IAAIyI,CAAS,EAClCzI,EAAG,QAAQ,KAAKA,EAAG,QAAQ,KAAK,OAAS,CAAC,EAAE,QAAQ,CAAC6I,EAAOC,EAAKC,EAAUC,IAAUlV,EAAMkV,CAAK,EAChGhJ,EAAG,aAAahD,GAAiBzQ,EAAMkF,EAAMuO,EAAG,IAAI,QAAQlM,CAAG,CAAC,CAAC,CACrE,CACAvH,EAAK,MAAM,EACXA,EAAK,SAASyT,EAAG,QAAQ,UAAW,MAAM,CAAC,CAC/C,CACA2D,GAAS,MAAQpX,GAAQ,CACrBA,EAAK,MAAM,UAAY,KAAK,IAAI,EAC3BA,EAAK,UACNA,EAAK,YAAY,KAAK,EACtBA,EAAK,IAAI,UAAU,IAAI,qBAAqB,EAC5CA,EAAK,YAAY,MAAM,EACvBA,EAAK,QAAU,GACf,WAAW,IAAM,CACTA,EAAK,SAAWA,EAAK,SAAS,GAAK,CAACA,EAAK,YAAY,iBAAiB,GAAGA,EAAK,kBAAkB,CAAC,GACjG4Q,GAAe5Q,CAAI,CAC3B,EAAG,EAAE,EAEb,EACAoX,GAAS,KAAO,CAACpX,EAAMiY,IAAW,CAC9B,IAAIra,EAAQqa,EACRjY,EAAK,UACLA,EAAK,YAAY,KAAK,EACtBA,EAAK,IAAI,UAAU,OAAO,qBAAqB,EAC/CA,EAAK,YAAY,MAAM,EACnBpC,EAAM,eAAiBoC,EAAK,IAAI,SAASpC,EAAM,aAAa,GAC5DoC,EAAK,YAAY,iBAAiB,MAAM,EAC5CA,EAAK,QAAU,GAEvB,EACAoX,GAAS,YAAc,CAACpX,EAAMiY,IAAW,CAMrC,GAAIpZ,IAAUM,IALF8Y,EAKmB,WAAa,wBAAyB,CACjEjY,EAAK,YAAY,UAAU,EAC3B,GAAI,CAAE,eAAA0c,CAAe,EAAI1c,EAAK,MAC9B,WAAW,IAAM,CAMb,GALIA,EAAK,MAAM,gBAAkB0c,IAGjC1c,EAAK,IAAI,KAAK,EACdA,EAAK,MAAM,EACPA,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMvC,GAAS,EAAG,WAAW,CAAC,CAAC,GACrE,OACJ,GAAI,CAAE,QAAAkf,CAAQ,EAAI3c,EAAK,MAAM,UAEzB2c,GAAWA,EAAQ,IAAM,GACzB3c,EAAK,SAASA,EAAK,MAAM,GAAG,OAAO2c,EAAQ,IAAM,EAAGA,EAAQ,GAAG,EAAE,eAAe,CAAC,CACzF,EAAG,EAAE,CACT,CACJ,EAEA,QAAS1P,KAAQoK,GACbD,GAASnK,CAAI,EAAIoK,GAAapK,CAAI,EAEtC,SAAS2P,GAAYzP,EAAGC,EAAG,CACvB,GAAID,GAAKC,EACL,MAAO,GACX,QAAS1J,KAAKyJ,EACV,GAAIA,EAAEzJ,CAAC,IAAM0J,EAAE1J,CAAC,EACZ,MAAO,GACf,QAASA,KAAK0J,EACV,GAAI,EAAE1J,KAAKyJ,GACP,MAAO,GACf,MAAO,EACX,CACA,IAAM0P,GAAN,MAAMC,CAAW,CACb,YAAYC,EAAOvT,EAAM,CACrB,KAAK,MAAQuT,EACb,KAAK,KAAOvT,GAAQwT,GACpB,KAAK,KAAO,KAAK,KAAK,MAAQ,CAClC,CACA,IAAIC,EAASC,EAAMngB,EAAQogB,EAAW,CAClC,GAAI,CAAE,IAAAhf,EAAK,QAAAif,CAAQ,EAAIH,EAAQ,UAAUC,EAAK,KAAOC,EAAW,KAAK,KAAO,EAAI,GAAK,CAAC,EACtF,OAAOC,EAAU,KAAO,IAAIC,GAAWlf,EAAMpB,EAAQoB,EAAMpB,EAAQ,IAAI,CAC3E,CACA,OAAQ,CAAE,MAAO,EAAM,CACvB,GAAGugB,EAAO,CACN,OAAO,MAAQA,GACVA,aAAiBR,IACb,KAAK,KAAK,KAAO,KAAK,KAAK,KAAOQ,EAAM,KAAK,KAC1C,KAAK,OAASA,EAAM,OAASV,GAAY,KAAK,KAAMU,EAAM,IAAI,EAC9E,CACA,QAAQ7hB,EAAM,CACN,KAAK,KAAK,SACV,KAAK,KAAK,QAAQA,CAAI,CAC9B,CACJ,EACM8hB,GAAN,MAAMC,CAAW,CACb,YAAYlR,EAAO9C,EAAM,CACrB,KAAK,MAAQ8C,EACb,KAAK,KAAO9C,GAAQwT,EACxB,CACA,IAAIC,EAASC,EAAMngB,EAAQogB,EAAW,CAClC,IAAIphB,EAAOkhB,EAAQ,IAAIC,EAAK,KAAOC,EAAW,KAAK,KAAK,eAAiB,GAAK,CAAC,EAAIpgB,EAC/Ef,EAAKihB,EAAQ,IAAIC,EAAK,GAAKC,EAAW,KAAK,KAAK,aAAe,EAAI,EAAE,EAAIpgB,EAC7E,OAAOhB,GAAQC,EAAK,KAAO,IAAIqhB,GAAWthB,EAAMC,EAAI,IAAI,CAC5D,CACA,MAAM8f,EAAGoB,EAAM,CAAE,OAAOA,EAAK,KAAOA,EAAK,EAAI,CAC7C,GAAGI,EAAO,CACN,OAAO,MAAQA,GACVA,aAAiBE,GAAcZ,GAAY,KAAK,MAAOU,EAAM,KAAK,GAC/DV,GAAY,KAAK,KAAMU,EAAM,IAAI,CAC7C,CACA,OAAO,GAAGJ,EAAM,CAAE,OAAOA,EAAK,gBAAgBM,CAAY,CAC1D,SAAU,CAAE,CAChB,EACMC,GAAN,MAAMC,CAAS,CACX,YAAYpR,EAAO9C,EAAM,CACrB,KAAK,MAAQ8C,EACb,KAAK,KAAO9C,GAAQwT,EACxB,CACA,IAAIC,EAASC,EAAMngB,EAAQogB,EAAW,CAClC,IAAIphB,EAAOkhB,EAAQ,UAAUC,EAAK,KAAOC,EAAW,CAAC,EACrD,GAAIphB,EAAK,QACL,OAAO,KACX,IAAIC,EAAKihB,EAAQ,UAAUC,EAAK,GAAKC,EAAW,EAAE,EAClD,OAAInhB,EAAG,SAAWA,EAAG,KAAOD,EAAK,IACtB,KACJ,IAAIshB,GAAWthB,EAAK,IAAMgB,EAAQf,EAAG,IAAMe,EAAQ,IAAI,CAClE,CACA,MAAMtB,EAAMyhB,EAAM,CACd,GAAI,CAAE,MAAAxhB,EAAO,OAAAqB,CAAO,EAAItB,EAAK,QAAQ,UAAUyhB,EAAK,IAAI,EAAGrgB,EAC3D,OAAOE,GAAUmgB,EAAK,MAAQ,EAAErgB,EAAQpB,EAAK,MAAMC,CAAK,GAAG,QAAUqB,EAASF,EAAM,UAAYqgB,EAAK,EACzG,CACA,GAAGI,EAAO,CACN,OAAO,MAAQA,GACVA,aAAiBI,GAAYd,GAAY,KAAK,MAAOU,EAAM,KAAK,GAC7DV,GAAY,KAAK,KAAMU,EAAM,IAAI,CAC7C,CACA,SAAU,CAAE,CAChB,EAMMD,GAAN,MAAMM,CAAW,CAIb,YAIA5hB,EAKAC,EAIAmb,EAAM,CACF,KAAK,KAAOpb,EACZ,KAAK,GAAKC,EACV,KAAK,KAAOmb,CAChB,CAIA,KAAKpb,EAAMC,EAAI,CACX,OAAO,IAAI2hB,EAAW5hB,EAAMC,EAAI,KAAK,IAAI,CAC7C,CAIA,GAAGshB,EAAOvgB,EAAS,EAAG,CAClB,OAAO,KAAK,KAAK,GAAGugB,EAAM,IAAI,GAAK,KAAK,KAAOvgB,GAAUugB,EAAM,MAAQ,KAAK,GAAKvgB,GAAUugB,EAAM,EACrG,CAIA,IAAIL,EAASlgB,EAAQogB,EAAW,CAC5B,OAAO,KAAK,KAAK,IAAIF,EAAS,KAAMlgB,EAAQogB,CAAS,CACzD,CASA,OAAO,OAAOhf,EAAK4e,EAAOvT,EAAM,CAC5B,OAAO,IAAImU,EAAWxf,EAAKA,EAAK,IAAI0e,GAAWE,EAAOvT,CAAI,CAAC,CAC/D,CAKA,OAAO,OAAOzN,EAAMC,EAAIsQ,EAAO9C,EAAM,CACjC,OAAO,IAAImU,EAAW5hB,EAAMC,EAAI,IAAIuhB,GAAWjR,EAAO9C,CAAI,CAAC,CAC/D,CAMA,OAAO,KAAKzN,EAAMC,EAAIsQ,EAAO9C,EAAM,CAC/B,OAAO,IAAImU,EAAW5hB,EAAMC,EAAI,IAAIyhB,GAASnR,EAAO9C,CAAI,CAAC,CAC7D,CAKA,IAAI,MAAO,CAAE,OAAO,KAAK,KAAK,IAAM,CAIpC,IAAI,QAAS,CAAE,OAAO,KAAK,gBAAgB+T,EAAY,CAIvD,IAAI,QAAS,CAAE,OAAO,KAAK,gBAAgBV,EAAY,CAC3D,EACMe,GAAO,CAAC,EAAGZ,GAAS,CAAC,EAOrBa,GAAN,MAAMC,CAAc,CAIhB,YAAYC,EAAOtX,EAAU,CACzB,KAAK,MAAQsX,EAAM,OAASA,EAAQH,GACpC,KAAK,SAAWnX,EAAS,OAASA,EAAWmX,EACjD,CAMA,OAAO,OAAO9f,EAAKkgB,EAAa,CAC5B,OAAOA,EAAY,OAASC,GAAUD,EAAalgB,EAAK,EAAGkf,EAAM,EAAIzJ,EACzE,CASA,KAAKhG,EAAOhG,EAAK2W,EAAW,CACxB,IAAIxb,EAAS,CAAC,EACd,YAAK,UAAU6K,GAAgB,EAAWhG,GAAc,IAAW7E,EAAQ,EAAGwb,CAAS,EAChFxb,CACX,CACA,UAAU6K,EAAOhG,EAAK7E,EAAQ3F,EAAQmhB,EAAW,CAC7C,QAAS5c,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAI4b,EAAO,KAAK,MAAM5b,CAAC,EACnB4b,EAAK,MAAQ3V,GAAO2V,EAAK,IAAM3P,IAAU,CAAC2Q,GAAaA,EAAUhB,EAAK,IAAI,IAC1Exa,EAAO,KAAKwa,EAAK,KAAKA,EAAK,KAAOngB,EAAQmgB,EAAK,GAAKngB,CAAM,CAAC,CACnE,CACA,QAASuE,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAC3C,GAAI,KAAK,SAASA,CAAC,EAAIiG,GAAO,KAAK,SAASjG,EAAI,CAAC,EAAIiM,EAAO,CACxD,IAAI4Q,EAAW,KAAK,SAAS7c,CAAC,EAAI,EAClC,KAAK,SAASA,EAAI,CAAC,EAAE,UAAUiM,EAAQ4Q,EAAU5W,EAAM4W,EAAUzb,EAAQ3F,EAASohB,EAAUD,CAAS,CACzG,CAER,CAKA,IAAIjB,EAASnf,EAAKsgB,EAAS,CACvB,OAAI,MAAQ7K,IAAS0J,EAAQ,KAAK,QAAU,EACjC,KACJ,KAAK,SAASA,EAASnf,EAAK,EAAG,EAAGsgB,GAAWpB,EAAM,CAC9D,CAIA,SAASC,EAASxhB,EAAMsB,EAAQogB,EAAWiB,EAAS,CAChD,IAAIC,EACJ,QAAS/c,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAIgd,EAAS,KAAK,MAAMhd,CAAC,EAAE,IAAI2b,EAASlgB,EAAQogB,CAAS,EACrDmB,GAAUA,EAAO,KAAK,MAAM7iB,EAAM6iB,CAAM,GACvCD,IAAaA,EAAW,CAAC,IAAI,KAAKC,CAAM,EACpCF,EAAQ,UACbA,EAAQ,SAAS,KAAK,MAAM9c,CAAC,EAAE,IAAI,CAC3C,CACA,OAAI,KAAK,SAAS,OACPid,GAAY,KAAK,SAAUF,GAAY,CAAC,EAAGpB,EAASxhB,EAAMsB,EAAQogB,EAAWiB,CAAO,EAEpFC,EAAW,IAAIP,EAAcO,EAAS,KAAKG,EAAK,EAAGZ,EAAI,EAAIrK,EAC1E,CAOA,IAAIzV,EAAKkgB,EAAa,CAClB,OAAKA,EAAY,OAEb,MAAQzK,GACDuK,EAAc,OAAOhgB,EAAKkgB,CAAW,EACzC,KAAK,SAASlgB,EAAKkgB,EAAa,CAAC,EAH7B,IAIf,CACA,SAASlgB,EAAKkgB,EAAajhB,EAAQ,CAC/B,IAAI0J,EAAUpE,EAAa,EAC3BvE,EAAI,QAAQ,CAAC2gB,EAAWC,IAAgB,CACpC,IAAIC,EAAaD,EAAc3hB,EAAQ8Q,EACvC,GAAMA,EAAQ+Q,GAAiBZ,EAAaS,EAAWE,CAAU,EAIjE,KAFKlY,IACDA,EAAW,KAAK,SAAS,MAAM,GAC5BpE,EAAaoE,EAAS,QAAUA,EAASpE,CAAU,EAAIqc,GAC1Drc,GAAc,EACdoE,EAASpE,CAAU,GAAKqc,EACxBjY,EAASpE,EAAa,CAAC,EAAIoE,EAASpE,EAAa,CAAC,EAAE,SAASoc,EAAW5Q,EAAO8Q,EAAa,CAAC,EAE7FlY,EAAS,OAAOpE,EAAY,EAAGqc,EAAaA,EAAcD,EAAU,SAAUR,GAAUpQ,EAAO4Q,EAAWE,EAAa,EAAG3B,EAAM,CAAC,EACrI3a,GAAc,EAClB,CAAC,EACD,IAAI0b,EAAQc,GAAUxc,EAAayc,GAAad,CAAW,EAAIA,EAAa,CAACjhB,CAAM,EACnF,QAASuE,EAAI,EAAGA,EAAIyc,EAAM,OAAQzc,IACzByc,EAAMzc,CAAC,EAAE,KAAK,MAAMxD,EAAKigB,EAAMzc,CAAC,CAAC,GAClCyc,EAAM,OAAOzc,IAAK,CAAC,EAC3B,OAAO,IAAIwc,EAAcC,EAAM,OAAS,KAAK,MAAM,OAAOA,CAAK,EAAE,KAAKS,EAAK,EAAI,KAAK,MAAO/X,GAAY,KAAK,QAAQ,CACxH,CAKA,OAAOuX,EAAa,CAChB,OAAIA,EAAY,QAAU,GAAK,MAAQzK,GAC5B,KACJ,KAAK,YAAYyK,EAAa,CAAC,CAC1C,CACA,YAAYA,EAAajhB,EAAQ,CAC7B,IAAI0J,EAAW,KAAK,SAAUsX,EAAQ,KAAK,MAC3C,QAAS,EAAI,EAAG,EAAItX,EAAS,OAAQ,GAAK,EAAG,CACzC,IAAIoH,EACA9R,EAAO0K,EAAS,CAAC,EAAI1J,EAAQf,EAAKyK,EAAS,EAAI,CAAC,EAAI1J,EACxD,QAASwG,EAAI,EAAG2Z,EAAM3Z,EAAIya,EAAY,OAAQza,KACtC2Z,EAAOc,EAAYza,CAAC,IAChB2Z,EAAK,KAAOnhB,GAAQmhB,EAAK,GAAKlhB,IAC9BgiB,EAAYza,CAAC,EAAI,MAChBsK,IAAUA,EAAQ,CAAC,IAAI,KAAKqP,CAAI,GAG7C,GAAI,CAACrP,EACD,SACApH,GAAY,KAAK,WACjBA,EAAW,KAAK,SAAS,MAAM,GACnC,IAAIsY,EAAUtY,EAAS,EAAI,CAAC,EAAE,YAAYoH,EAAO9R,EAAO,CAAC,EACrDgjB,GAAWxL,GACX9M,EAAS,EAAI,CAAC,EAAIsY,GAGlBtY,EAAS,OAAO,EAAG,CAAC,EACpB,GAAK,EAEb,CACA,GAAIsX,EAAM,QACN,QAAS,EAAI,EAAGb,EAAM,EAAIc,EAAY,OAAQ,IAC1C,GAAId,EAAOc,EAAY,CAAC,EACpB,QAASza,EAAI,EAAGA,EAAIwa,EAAM,OAAQxa,IAC1Bwa,EAAMxa,CAAC,EAAE,GAAG2Z,EAAMngB,CAAM,IACpBghB,GAAS,KAAK,QACdA,EAAQ,KAAK,MAAM,MAAM,GAC7BA,EAAM,OAAOxa,IAAK,CAAC,GAGvC,OAAIkD,GAAY,KAAK,UAAYsX,GAAS,KAAK,MACpC,KACJA,EAAM,QAAUtX,EAAS,OAAS,IAAIqX,EAAcC,EAAOtX,CAAQ,EAAI8M,EAClF,CACA,SAASxW,EAAQtB,EAAM,CACnB,GAAI,MAAQ8X,GACR,OAAO,KACX,GAAI9X,EAAK,OACL,OAAOqiB,EAAc,MACzB,IAAIjhB,EAAOkhB,EACX,QAASzc,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAC3C,GAAI,KAAK,SAASA,CAAC,GAAKvE,EAAQ,CACxB,KAAK,SAASuE,CAAC,GAAKvE,IACpBF,EAAQ,KAAK,SAASyE,EAAI,CAAC,GAC/B,KACJ,CACJ,IAAIiM,EAAQxQ,EAAS,EAAGwK,EAAMgG,EAAQ9R,EAAK,QAAQ,KACnD,QAAS6F,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CACxC,IAAI0d,EAAM,KAAK,MAAM1d,CAAC,EACtB,GAAI0d,EAAI,KAAOzX,GAAOyX,EAAI,GAAKzR,GAAUyR,EAAI,gBAAgBzB,GAAa,CACtE,IAAIxhB,EAAO,KAAK,IAAIwR,EAAOyR,EAAI,IAAI,EAAIzR,EAAOvR,EAAK,KAAK,IAAIuL,EAAKyX,EAAI,EAAE,EAAIzR,EACvExR,EAAOC,IACN+hB,IAAUA,EAAQ,CAAC,IAAI,KAAKiB,EAAI,KAAKjjB,EAAMC,CAAE,CAAC,CACvD,CACJ,CACA,GAAI+hB,EAAO,CACP,IAAIkB,EAAW,IAAInB,EAAcC,EAAM,KAAKS,EAAK,EAAGZ,EAAI,EACxD,OAAO/gB,EAAQ,IAAIqiB,GAAgB,CAACD,EAAUpiB,CAAK,CAAC,EAAIoiB,CAC5D,CACA,OAAOpiB,GAAS0W,EACpB,CAIA,GAAG+J,EAAO,CACN,GAAI,MAAQA,EACR,MAAO,GACX,GAAI,EAAEA,aAAiBQ,IACnB,KAAK,MAAM,QAAUR,EAAM,MAAM,QACjC,KAAK,SAAS,QAAUA,EAAM,SAAS,OACvC,MAAO,GACX,QAAShc,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACnC,GAAI,CAAC,KAAK,MAAMA,CAAC,EAAE,GAAGgc,EAAM,MAAMhc,CAAC,CAAC,EAChC,MAAO,GACf,QAASA,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,GAAK,EAC3C,GAAI,KAAK,SAASA,CAAC,GAAKgc,EAAM,SAAShc,CAAC,GACpC,KAAK,SAASA,EAAI,CAAC,GAAKgc,EAAM,SAAShc,EAAI,CAAC,GAC5C,CAAC,KAAK,SAASA,EAAI,CAAC,EAAE,GAAGgc,EAAM,SAAShc,EAAI,CAAC,CAAC,EAC9C,MAAO,GACf,MAAO,EACX,CAIA,OAAO7F,EAAM,CACT,OAAO0jB,GAAc,KAAK,YAAY1jB,CAAI,CAAC,CAC/C,CAIA,YAAYA,EAAM,CACd,GAAI,MAAQ8X,GACR,OAAOqK,GACX,GAAIniB,EAAK,eAAiB,CAAC,KAAK,MAAM,KAAK8hB,GAAW,EAAE,EACpD,OAAO,KAAK,MAChB,IAAI7a,EAAS,CAAC,EACd,QAASpB,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAC7B,KAAK,MAAMA,CAAC,EAAE,gBAAgBic,IAChC7a,EAAO,KAAK,KAAK,MAAMpB,CAAC,CAAC,EAEjC,OAAOoB,CACX,CACA,WAAWmC,EAAG,CAAEA,EAAE,IAAI,CAAG,CAC7B,EAIAgZ,GAAc,MAAQ,IAAIA,GAAc,CAAC,EAAG,CAAC,CAAC,EAI9CA,GAAc,cAAgBsB,GAC9B,IAAM5L,GAAQsK,GAAc,MAItBqB,GAAN,MAAME,CAAgB,CAClB,YAAYC,EAAS,CACjB,KAAK,QAAUA,CACnB,CACA,IAAIpC,EAASnf,EAAK,CACd,IAAMwhB,EAAc,KAAK,QAAQ,IAAIC,GAAUA,EAAO,IAAItC,EAASnf,EAAKkf,EAAM,CAAC,EAC/E,OAAOoC,EAAgB,KAAKE,CAAW,CAC3C,CACA,SAASviB,EAAQF,EAAO,CACpB,GAAIA,EAAM,OACN,OAAOghB,GAAc,MACzB,IAAIhQ,EAAQ,CAAC,EACb,QAASvM,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC1C,IAAIoB,EAAS,KAAK,QAAQpB,CAAC,EAAE,SAASvE,EAAQF,CAAK,EAC/C6F,GAAU6Q,KAEV7Q,aAAkB0c,EAClBvR,EAAQA,EAAM,OAAOnL,EAAO,OAAO,EAEnCmL,EAAM,KAAKnL,CAAM,EACzB,CACA,OAAO0c,EAAgB,KAAKvR,CAAK,CACrC,CACA,GAAGyP,EAAO,CACN,GAAI,EAAEA,aAAiB8B,IACnB9B,EAAM,QAAQ,QAAU,KAAK,QAAQ,OACrC,MAAO,GACX,QAAShc,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IACrC,GAAI,CAAC,KAAK,QAAQA,CAAC,EAAE,GAAGgc,EAAM,QAAQhc,CAAC,CAAC,EACpC,MAAO,GACf,MAAO,EACX,CACA,OAAO7F,EAAM,CACT,IAAIiH,EAAQ8c,EAAS,GACrB,QAASle,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IAAK,CAC1C,IAAI+N,EAAS,KAAK,QAAQ/N,CAAC,EAAE,YAAY7F,CAAI,EAC7C,GAAK4T,EAAO,OAEZ,GAAI,CAAC3M,EACDA,EAAS2M,MAER,CACGmQ,IACA9c,EAASA,EAAO,MAAM,EACtB8c,EAAS,IAEb,QAASjc,EAAI,EAAGA,EAAI8L,EAAO,OAAQ9L,IAC/Bb,EAAO,KAAK2M,EAAO9L,CAAC,CAAC,CAC7B,CACJ,CACA,OAAOb,EAASyc,GAAcK,EAAS9c,EAASA,EAAO,KAAK8b,EAAK,CAAC,EAAIZ,EAC1E,CAGA,OAAO,KAAKyB,EAAS,CACjB,OAAQA,EAAQ,OAAQ,CACpB,IAAK,GAAG,OAAO9L,GACf,IAAK,GAAG,OAAO8L,EAAQ,CAAC,EACxB,QAAS,OAAO,IAAID,EAAgBC,EAAQ,MAAMnS,GAAKA,aAAa2Q,EAAa,EAAIwB,EACjFA,EAAQ,OAAO,CAACI,EAAGvS,IAAMuS,EAAE,OAAOvS,aAAa2Q,GAAgB3Q,EAAIA,EAAE,OAAO,EAAG,CAAC,CAAC,CAAC,CAC1F,CACJ,CACA,WAAWrI,EAAG,CACV,QAASvD,EAAI,EAAGA,EAAI,KAAK,QAAQ,OAAQA,IACrC,KAAK,QAAQA,CAAC,EAAE,WAAWuD,CAAC,CACpC,CACJ,EACA,SAAS0Z,GAAYmB,EAAarB,EAAUpB,EAASxhB,EAAMsB,EAAQogB,EAAWiB,EAAS,CACnF,IAAI3X,EAAWiZ,EAAY,MAAM,EAGjC,QAASpe,EAAI,EAAGqd,EAAaxB,EAAW7b,EAAI2b,EAAQ,KAAK,OAAQ3b,IAAK,CAClE,IAAIqe,EAAQ,EACZ1C,EAAQ,KAAK3b,CAAC,EAAE,QAAQ,CAACse,EAAUC,EAAQC,EAAUC,IAAW,CAC5D,IAAIC,EAASD,EAASD,GAAaD,EAASD,GAC5C,QAASte,EAAI,EAAGA,EAAImF,EAAS,OAAQnF,GAAK,EAAG,CACzC,IAAIiG,EAAMd,EAASnF,EAAI,CAAC,EACxB,GAAIiG,EAAM,GAAKqY,EAAWrY,EAAMoX,EAAagB,EACzC,SACJ,IAAIpS,EAAQ9G,EAASnF,CAAC,EAAIqd,EAAagB,EACnCE,GAAUtS,EACV9G,EAASnF,EAAI,CAAC,EAAIse,GAAYrS,EAAQ,GAAK,GAEtCqS,GAAYjB,GAAcqB,IAC/BvZ,EAASnF,CAAC,GAAK0e,EACfvZ,EAASnF,EAAI,CAAC,GAAK0e,EAE3B,CACAL,GAASK,CACb,CAAC,EACDrB,EAAa1B,EAAQ,KAAK3b,CAAC,EAAE,IAAIqd,EAAY,EAAE,CACnD,CAGA,IAAIsB,EAAc,GAClB,QAAS3e,EAAI,EAAGA,EAAImF,EAAS,OAAQnF,GAAK,EACtC,GAAImF,EAASnF,EAAI,CAAC,EAAI,EAAG,CACrB,GAAImF,EAASnF,EAAI,CAAC,GAAK,GAAI,CACvB2e,EAAc,GACdxZ,EAASnF,EAAI,CAAC,EAAI,GAClB,QACJ,CACA,IAAIvF,EAAOkhB,EAAQ,IAAIyC,EAAYpe,CAAC,EAAI6b,CAAS,EAAG+C,EAAYnkB,EAAOgB,EACvE,GAAImjB,EAAY,GAAKA,GAAazkB,EAAK,QAAQ,KAAM,CACjDwkB,EAAc,GACd,QACJ,CAEA,IAAIjkB,EAAKihB,EAAQ,IAAIyC,EAAYpe,EAAI,CAAC,EAAI6b,EAAW,EAAE,EAAGgD,EAAUnkB,EAAKe,EACrE,CAAE,MAAArB,EAAO,OAAQgjB,CAAY,EAAIjjB,EAAK,QAAQ,UAAUykB,CAAS,EACjEzB,EAAYhjB,EAAK,WAAWC,CAAK,EACrC,GAAI+iB,GAAaC,GAAewB,GAAaxB,EAAcD,EAAU,UAAY0B,EAAS,CACtF,IAAI7B,EAAS7X,EAASnF,EAAI,CAAC,EACtB,SAAS2b,EAASwB,EAAW1iB,EAAO,EAAG2jB,EAAYpe,CAAC,EAAI6b,EAAY,EAAGiB,CAAO,EAC/EE,GAAU/K,IACV9M,EAASnF,CAAC,EAAI4e,EACdzZ,EAASnF,EAAI,CAAC,EAAI6e,EAClB1Z,EAASnF,EAAI,CAAC,EAAIgd,IAGlB7X,EAASnF,EAAI,CAAC,EAAI,GAClB2e,EAAc,GAEtB,MAEIA,EAAc,EAEtB,CAEJ,GAAIA,EAAa,CACb,IAAIjC,EAAcoC,GAAiC3Z,EAAUiZ,EAAarB,EAAUpB,EAASlgB,EAAQogB,EAAWiB,CAAO,EACnHiC,EAAQpC,GAAUD,EAAaviB,EAAM,EAAG2iB,CAAO,EACnDC,EAAWgC,EAAM,MACjB,QAAS/e,EAAI,EAAGA,EAAImF,EAAS,OAAQnF,GAAK,EAClCmF,EAASnF,EAAI,CAAC,EAAI,IAClBmF,EAAS,OAAOnF,EAAG,CAAC,EACpBA,GAAK,GAEb,QAASA,EAAI,EAAGiC,EAAI,EAAGjC,EAAI+e,EAAM,SAAS,OAAQ/e,GAAK,EAAG,CACtD,IAAIvF,EAAOskB,EAAM,SAAS/e,CAAC,EAC3B,KAAOiC,EAAIkD,EAAS,QAAUA,EAASlD,CAAC,EAAIxH,GACxCwH,GAAK,EACTkD,EAAS,OAAOlD,EAAG,EAAG8c,EAAM,SAAS/e,CAAC,EAAG+e,EAAM,SAAS/e,EAAI,CAAC,EAAG+e,EAAM,SAAS/e,EAAI,CAAC,CAAC,CACzF,CACJ,CACA,OAAO,IAAIuc,GAAcQ,EAAS,KAAKG,EAAK,EAAG/X,CAAQ,CAC3D,CACA,SAASoY,GAAUyB,EAAOvjB,EAAQ,CAC9B,GAAI,CAACA,GAAU,CAACujB,EAAM,OAClB,OAAOA,EACX,IAAI5d,EAAS,CAAC,EACd,QAASpB,EAAI,EAAGA,EAAIgf,EAAM,OAAQhf,IAAK,CACnC,IAAI4b,EAAOoD,EAAMhf,CAAC,EAClBoB,EAAO,KAAK,IAAI2a,GAAWH,EAAK,KAAOngB,EAAQmgB,EAAK,GAAKngB,EAAQmgB,EAAK,IAAI,CAAC,CAC/E,CACA,OAAOxa,CACX,CACA,SAAS0d,GAAiC3Z,EAAUiZ,EAAa1B,EAAaf,EAASlgB,EAAQogB,EAAWiB,EAAS,CAE/G,SAASmC,EAAOC,EAAKrD,EAAW,CAC5B,QAAS7b,EAAI,EAAGA,EAAIkf,EAAI,MAAM,OAAQlf,IAAK,CACvC,IAAIgd,EAASkC,EAAI,MAAMlf,CAAC,EAAE,IAAI2b,EAASlgB,EAAQogB,CAAS,EACpDmB,EACAN,EAAY,KAAKM,CAAM,EAClBF,EAAQ,UACbA,EAAQ,SAASoC,EAAI,MAAMlf,CAAC,EAAE,IAAI,CAC1C,CACA,QAASA,EAAI,EAAGA,EAAIkf,EAAI,SAAS,OAAQlf,GAAK,EAC1Cif,EAAOC,EAAI,SAASlf,EAAI,CAAC,EAAGkf,EAAI,SAASlf,CAAC,EAAI6b,EAAY,CAAC,CACnE,CACA,QAAS7b,EAAI,EAAGA,EAAImF,EAAS,OAAQnF,GAAK,EAClCmF,EAASnF,EAAI,CAAC,GAAK,IACnBif,EAAO9Z,EAASnF,EAAI,CAAC,EAAGoe,EAAYpe,CAAC,EAAI6b,EAAY,CAAC,EAC9D,OAAOa,CACX,CACA,SAASY,GAAiB0B,EAAO7kB,EAAMsB,EAAQ,CAC3C,GAAItB,EAAK,OACL,OAAO,KACX,IAAI8L,EAAMxK,EAAStB,EAAK,SAAUoS,EAAQ,KAC1C,QAAS,EAAI,EAAGqP,EAAM,EAAIoD,EAAM,OAAQ,KAC/BpD,EAAOoD,EAAM,CAAC,IAAMpD,EAAK,KAAOngB,GAAUmgB,EAAK,GAAK3V,KACpDsG,IAAUA,EAAQ,CAAC,IAAI,KAAKqP,CAAI,EACjCoD,EAAM,CAAC,EAAI,MAGnB,OAAOzS,CACX,CACA,SAASiR,GAAa5H,EAAO,CACzB,IAAIxU,EAAS,CAAC,EACd,QAASpB,EAAI,EAAGA,EAAI4V,EAAM,OAAQ5V,IAC1B4V,EAAM5V,CAAC,GAAK,MACZoB,EAAO,KAAKwU,EAAM5V,CAAC,CAAC,EAC5B,OAAOoB,CACX,CAKA,SAASub,GAAUqC,EAAO7kB,EAAMsB,EAAQqhB,EAAS,CAC7C,IAAI3X,EAAW,CAAC,EAAGga,EAAW,GAC9BhlB,EAAK,QAAQ,CAACgjB,EAAWiC,IAAe,CACpC,IAAI7S,EAAQ+Q,GAAiB0B,EAAO7B,EAAWiC,EAAa3jB,CAAM,EAClE,GAAI8Q,EAAO,CACP4S,EAAW,GACX,IAAIE,EAAU1C,GAAUpQ,EAAO4Q,EAAW1hB,EAAS2jB,EAAa,EAAGtC,CAAO,EACtEuC,GAAWpN,IACX9M,EAAS,KAAKia,EAAYA,EAAajC,EAAU,SAAUkC,CAAO,CAC1E,CACJ,CAAC,EACD,IAAItR,EAASwP,GAAU4B,EAAW3B,GAAawB,CAAK,EAAIA,EAAO,CAACvjB,CAAM,EAAE,KAAKyhB,EAAK,EAClF,QAASld,EAAI,EAAGA,EAAI+N,EAAO,OAAQ/N,IAC1B+N,EAAO/N,CAAC,EAAE,KAAK,MAAM7F,EAAM4T,EAAO/N,CAAC,CAAC,IACjC8c,EAAQ,UACRA,EAAQ,SAAS/O,EAAO/N,CAAC,EAAE,IAAI,EACnC+N,EAAO,OAAO/N,IAAK,CAAC,GAE5B,OAAO+N,EAAO,QAAU5I,EAAS,OAAS,IAAIoX,GAAcxO,EAAQ5I,CAAQ,EAAI8M,EACpF,CAIA,SAASiL,GAAMrR,EAAGC,EAAG,CACjB,OAAOD,EAAE,KAAOC,EAAE,MAAQD,EAAE,GAAKC,EAAE,EACvC,CAKA,SAAS+R,GAAcmB,EAAO,CAC1B,IAAIM,EAAUN,EACd,QAAShf,EAAI,EAAGA,EAAIsf,EAAQ,OAAS,EAAGtf,IAAK,CACzC,IAAI4b,EAAO0D,EAAQtf,CAAC,EACpB,GAAI4b,EAAK,MAAQA,EAAK,GAClB,QAAS3Z,EAAIjC,EAAI,EAAGiC,EAAIqd,EAAQ,OAAQrd,IAAK,CACzC,IAAII,EAAOid,EAAQrd,CAAC,EACpB,GAAII,EAAK,MAAQuZ,EAAK,KAAM,CACpBvZ,EAAK,IAAMuZ,EAAK,KACZ0D,GAAWN,IACXM,EAAUN,EAAM,MAAM,GAG1BM,EAAQrd,CAAC,EAAII,EAAK,KAAKA,EAAK,KAAMuZ,EAAK,EAAE,EACzC2D,GAAYD,EAASrd,EAAI,EAAGI,EAAK,KAAKuZ,EAAK,GAAIvZ,EAAK,EAAE,CAAC,GAE3D,QACJ,KACK,CACGA,EAAK,KAAOuZ,EAAK,KACb0D,GAAWN,IACXM,EAAUN,EAAM,MAAM,GAG1BM,EAAQtf,CAAC,EAAI4b,EAAK,KAAKA,EAAK,KAAMvZ,EAAK,IAAI,EAC3Ckd,GAAYD,EAASrd,EAAG2Z,EAAK,KAAKvZ,EAAK,KAAMuZ,EAAK,EAAE,CAAC,GAEzD,KACJ,CACJ,CACR,CACA,OAAO0D,CACX,CACA,SAASC,GAAY3J,EAAO5V,EAAGuL,EAAM,CACjC,KAAOvL,EAAI4V,EAAM,QAAUsH,GAAM3R,EAAMqK,EAAM5V,CAAC,CAAC,EAAI,GAC/CA,IACJ4V,EAAM,OAAO5V,EAAG,EAAGuL,CAAI,CAC3B,CAEA,SAASiU,GAAgB9gB,EAAM,CAC3B,IAAI6N,EAAQ,CAAC,EACb,OAAA7N,EAAK,SAAS,cAAe6E,GAAK,CAC9B,IAAInC,EAASmC,EAAE7E,EAAK,KAAK,EACrB0C,GAAUA,GAAU6Q,IACpB1F,EAAM,KAAKnL,CAAM,CACzB,CAAC,EACG1C,EAAK,eACL6N,EAAM,KAAKgQ,GAAc,OAAO7d,EAAK,MAAM,IAAK,CAACA,EAAK,cAAc,IAAI,CAAC,CAAC,EACvEkf,GAAgB,KAAKrR,CAAK,CACrC,CAEA,IAAMkT,GAAiB,CACnB,UAAW,GACX,cAAe,GACf,sBAAuB,GACvB,WAAY,GACZ,kBAAmB,GACnB,QAAS,EACb,EAEMC,GAAcviB,IAAMC,IAAc,GAClCuiB,GAAN,KAAqB,CACjB,aAAc,CACV,KAAK,WAAa,KAClB,KAAK,aAAe,EACpB,KAAK,UAAY,KACjB,KAAK,YAAc,CACvB,CACA,IAAIhc,EAAK,CACL,KAAK,WAAaA,EAAI,WACtB,KAAK,aAAeA,EAAI,aACxB,KAAK,UAAYA,EAAI,UACrB,KAAK,YAAcA,EAAI,WAC3B,CACA,OAAQ,CACJ,KAAK,WAAa,KAAK,UAAY,IACvC,CACA,GAAGA,EAAK,CACJ,OAAOA,EAAI,YAAc,KAAK,YAAcA,EAAI,cAAgB,KAAK,cACjEA,EAAI,WAAa,KAAK,WAAaA,EAAI,aAAe,KAAK,WACnE,CACJ,EACMic,GAAN,KAAkB,CACd,YAAYlhB,EAAMmhB,EAAiB,CAC/B,KAAK,KAAOnhB,EACZ,KAAK,gBAAkBmhB,EACvB,KAAK,MAAQ,CAAC,EACd,KAAK,aAAe,GACpB,KAAK,SAAW,KAChB,KAAK,iBAAmB,IAAIF,GAC5B,KAAK,WAAa,KAClB,KAAK,4BAA8B,GACnC,KAAK,oBAAsB,KAC3B,KAAK,SAAW,OAAO,kBACnB,IAAI,OAAO,iBAAiBG,GAAa,CACrC,QAAS9f,EAAI,EAAGA,EAAI8f,EAAU,OAAQ9f,IAClC,KAAK,MAAM,KAAK8f,EAAU9f,CAAC,CAAC,EAC5B7C,IAAMC,IAAc,IAAM0iB,EAAU,KAAKlU,GAAKA,EAAE,MAAQ,aAAeA,EAAE,aAAa,QACtFA,EAAE,MAAQ,iBAAmBA,EAAE,SAAS,OAASA,EAAE,OAAO,UAAU,MAAM,EAK1E,KAAK,UAAU,EAEVnO,IAAUiB,EAAK,WAAaohB,EAAU,KAAKlU,GAAKA,EAAE,MAAQ,aAAeA,EAAE,OAAO,UAAY,IAAI,GAIvGlN,EAAK,MAAM,qBAAuB,GAClC,KAAK,UAAU,GAGf,KAAK,MAAM,CAEnB,CAAC,EACDghB,KACA,KAAK,WAAa/S,GAAK,CACnB,KAAK,MAAM,KAAK,CAAE,OAAQA,EAAE,OAAQ,KAAM,gBAAiB,SAAUA,EAAE,SAAU,CAAC,EAClF,KAAK,UAAU,CACnB,GAEJ,KAAK,kBAAoB,KAAK,kBAAkB,KAAK,IAAI,CAC7D,CACA,WAAY,CACJ,KAAK,aAAe,IACpB,KAAK,aAAe,OAAO,WAAW,IAAM,CAAE,KAAK,aAAe,GAAI,KAAK,MAAM,CAAG,EAAG,EAAE,EACjG,CACA,YAAa,CACL,KAAK,aAAe,KACpB,OAAO,aAAa,KAAK,YAAY,EACrC,KAAK,aAAe,GACpB,KAAK,MAAM,EAEnB,CACA,OAAQ,CACA,KAAK,WACL,KAAK,SAAS,YAAY,EAC1B,KAAK,SAAS,QAAQ,KAAK,KAAK,IAAK8S,EAAc,GAEnD,KAAK,YACL,KAAK,KAAK,IAAI,iBAAiB,2BAA4B,KAAK,UAAU,EAC9E,KAAK,iBAAiB,CAC1B,CACA,MAAO,CACH,GAAI,KAAK,SAAU,CACf,IAAIM,EAAO,KAAK,SAAS,YAAY,EACrC,GAAIA,EAAK,OAAQ,CACb,QAAS/f,EAAI,EAAGA,EAAI+f,EAAK,OAAQ/f,IAC7B,KAAK,MAAM,KAAK+f,EAAK/f,CAAC,CAAC,EAC3B,OAAO,WAAW,IAAM,KAAK,MAAM,EAAG,EAAE,CAC5C,CACA,KAAK,SAAS,WAAW,CAC7B,CACI,KAAK,YACL,KAAK,KAAK,IAAI,oBAAoB,2BAA4B,KAAK,UAAU,EACjF,KAAK,oBAAoB,CAC7B,CACA,kBAAmB,CACf,KAAK,KAAK,IAAI,cAAc,iBAAiB,kBAAmB,KAAK,iBAAiB,CAC1F,CACA,qBAAsB,CAClB,KAAK,KAAK,IAAI,cAAc,oBAAoB,kBAAmB,KAAK,iBAAiB,CAC7F,CACA,0BAA2B,CACvB,KAAK,4BAA8B,GACnC,WAAW,IAAM,KAAK,4BAA8B,GAAO,EAAE,CACjE,CACA,mBAAoB,CAChB,GAAKmQ,GAAqB,KAAK,IAAI,EAEnC,IAAI,KAAK,4BACL,OAAOb,GAAe,KAAK,IAAI,EAInC,GAAInS,IAAMC,IAAc,IAAM,CAAC,KAAK,KAAK,MAAM,UAAU,MAAO,CAC5D,IAAIuG,EAAM,KAAK,KAAK,kBAAkB,EAEtC,GAAIA,EAAI,WAAa9I,GAAqB8I,EAAI,UAAWA,EAAI,YAAaA,EAAI,WAAYA,EAAI,YAAY,EACtG,OAAO,KAAK,UAAU,CAC9B,CACA,KAAK,MAAM,EACf,CACA,iBAAkB,CACd,KAAK,iBAAiB,IAAI,KAAK,KAAK,kBAAkB,CAAC,CAC3D,CACA,sBAAsBA,EAAK,CACvB,GAAI,CAACA,EAAI,UACL,MAAO,GACX,IAAIqc,EAAY,IAAI,IAAKC,EACzB,QAASja,EAAOrC,EAAI,UAAWqC,EAAMA,EAAO3L,GAAW2L,CAAI,EACvDga,EAAU,IAAIha,CAAI,EACtB,QAASA,EAAOrC,EAAI,WAAYqC,EAAMA,EAAO3L,GAAW2L,CAAI,EACxD,GAAIga,EAAU,IAAIha,CAAI,EAAG,CACrBia,EAAYja,EACZ,KACJ,CACJ,IAAIjK,EAAOkkB,GAAa,KAAK,KAAK,QAAQ,YAAYA,CAAS,EAC/D,GAAIlkB,GAAQA,EAAK,eAAe,CAC5B,KAAM,YACN,OAAQkkB,EAAU,UAAY,EAAIA,EAAU,WAAaA,CAC7D,CAAC,EACG,YAAK,gBAAgB,EACd,EAEf,CACA,gBAAiB,CACb,GAAI,KAAK,SACL,QAASlY,KAAO,KAAK,SAAS,YAAY,EACtC,KAAK,MAAM,KAAKA,CAAG,EAC3B,OAAO,KAAK,KAChB,CACA,OAAQ,CACJ,GAAI,CAAE,KAAArJ,CAAK,EAAI,KACf,GAAI,CAACA,EAAK,SAAW,KAAK,aAAe,GACrC,OACJ,IAAIohB,EAAY,KAAK,eAAe,EAChCA,EAAU,SACV,KAAK,MAAQ,CAAC,GAClB,IAAInc,EAAMjF,EAAK,kBAAkB,EAC7BwhB,EAAS,CAAC,KAAK,6BAA+B,CAAC,KAAK,iBAAiB,GAAGvc,CAAG,GAAKwM,GAAqBzR,CAAI,GAAK,CAAC,KAAK,sBAAsBiF,CAAG,EAC7IlJ,EAAO,GAAIC,EAAK,GAAIylB,EAAW,GAAOC,EAAQ,CAAC,EACnD,GAAI1hB,EAAK,SACL,QAASsB,EAAI,EAAGA,EAAI8f,EAAU,OAAQ9f,IAAK,CACvC,IAAIoB,EAAS,KAAK,iBAAiB0e,EAAU9f,CAAC,EAAGogB,CAAK,EAClDhf,IACA3G,EAAOA,EAAO,EAAI2G,EAAO,KAAO,KAAK,IAAIA,EAAO,KAAM3G,CAAI,EAC1DC,EAAKA,EAAK,EAAI0G,EAAO,GAAK,KAAK,IAAIA,EAAO,GAAI1G,CAAE,EAC5C0G,EAAO,WACP+e,EAAW,IAEvB,CAEJ,GAAIC,EAAM,KAAKzK,GAAKA,EAAE,UAAY,IAAI,IAAMjX,EAAK,MAAM,aAAe,GAAKA,EAAK,MAAM,aAAe,KAGjG,QAASvE,KAAQimB,EACb,GAAIjmB,EAAK,UAAY,MAAQA,EAAK,WAAY,CAC1C,IAAIiJ,EAAQjJ,EAAK,YACjB,KAAOiJ,GAASA,EAAM,UAAY,GAAG,CACjC,GAAIA,EAAM,iBAAmB,QAAS,CAClCjJ,EAAK,WAAW,YAAYA,CAAI,EAChC,KACJ,CACAiJ,EAAQA,EAAM,UAClB,CACJ,UAEC/F,IAAS+iB,EAAM,OAAQ,CAC5B,IAAIC,EAAMD,EAAM,OAAOzK,GAAKA,EAAE,UAAY,IAAI,EAC9C,GAAI0K,EAAI,QAAU,EAAG,CACjB,GAAI,CAACxU,EAAGC,CAAC,EAAIuU,EACTxU,EAAE,YAAcA,EAAE,WAAW,YAAcC,EAAE,WAC7CA,EAAE,OAAO,EAETD,EAAE,OAAO,CACjB,KACK,CACD,GAAI,CAAE,UAAAyG,CAAU,EAAI,KAAK,iBACzB,QAASgO,KAAMD,EAAK,CAChB,IAAI/lB,EAASgmB,EAAG,WACZhmB,GAAUA,EAAO,UAAY,OAAS,CAACgY,GAAaiO,GAAY7hB,EAAM4T,CAAS,GAAKhY,IACpFgmB,EAAG,OAAO,CAClB,CACJ,CACJ,CACA,IAAIE,EAAU,KAIV/lB,EAAO,GAAKylB,GAAUxhB,EAAK,MAAM,UAAY,KAAK,IAAI,EAAI,KAC1D,KAAK,IAAIA,EAAK,MAAM,UAAWA,EAAK,MAAM,UAAU,IAAI,EAAI,KAAK,IAAI,EAAI,KACzEzC,GAAmB0H,CAAG,IAAM6c,EAAU/R,GAAiB/P,CAAI,IAC3D8hB,EAAQ,GAAGhQ,GAAU,KAAK9R,EAAK,MAAM,IAAI,QAAQ,CAAC,EAAG,CAAC,CAAC,GACvDA,EAAK,MAAM,UAAY,EACvB4Q,GAAe5Q,CAAI,EACnB,KAAK,iBAAiB,IAAIiF,CAAG,EAC7BjF,EAAK,kBAAkB,IAElBjE,EAAO,IAAMylB,KACdzlB,EAAO,KACPiE,EAAK,QAAQ,UAAUjE,EAAMC,CAAE,EAC/B+lB,GAAS/hB,CAAI,GAEbA,EAAK,MAAM,uBACXA,EAAK,MAAM,qBAAuB,GAClCgiB,GAA0BhiB,EAAM0hB,CAAK,GAEzC,KAAK,gBAAgB3lB,EAAMC,EAAIylB,EAAUC,CAAK,EAC1C1hB,EAAK,SAAWA,EAAK,QAAQ,MAC7BA,EAAK,YAAYA,EAAK,KAAK,EACrB,KAAK,iBAAiB,GAAGiF,CAAG,GAClC2L,GAAe5Q,CAAI,EACvB,KAAK,iBAAiB,IAAIiF,CAAG,EAErC,CACA,iBAAiBoE,EAAKqY,EAAO,CAEzB,GAAIA,EAAM,QAAQrY,EAAI,MAAM,EAAI,GAC5B,OAAO,KACX,IAAIhM,EAAO,KAAK,KAAK,QAAQ,YAAYgM,EAAI,MAAM,EAMnD,GALIA,EAAI,MAAQ,eACXhM,GAAQ,KAAK,KAAK,SAAWgM,EAAI,eAAiB,mBAE9CA,EAAI,eAAiB,SAAW,CAACA,EAAI,UAAY,CAACA,EAAI,OAAO,aAAa,OAAO,IAEtF,CAAChM,GAAQA,EAAK,eAAegM,CAAG,EAChC,OAAO,KACX,GAAIA,EAAI,MAAQ,YAAa,CACzB,QAAS/H,EAAI,EAAGA,EAAI+H,EAAI,WAAW,OAAQ/H,IAAK,CAC5C,IAAI7F,EAAO4N,EAAI,WAAW/H,CAAC,EAC3BogB,EAAM,KAAKjmB,CAAI,EACXA,EAAK,UAAY,IACjB,KAAK,oBAAsBA,EACnC,CACA,GAAI4B,EAAK,YAAcA,EAAK,YAAcA,EAAK,KAAO,CAACA,EAAK,WAAW,SAASgM,EAAI,MAAM,EACtF,MAAO,CAAE,KAAMhM,EAAK,UAAW,GAAIA,EAAK,QAAS,EACrD,IAAIuG,EAAOyF,EAAI,gBAAiB1F,EAAO0F,EAAI,YAC3C,GAAI5K,IAAMC,IAAc,IAAM2K,EAAI,WAAW,OAGzC,QAAS/H,EAAI,EAAGA,EAAI+H,EAAI,WAAW,OAAQ/H,IAAK,CAC5C,GAAI,CAAE,gBAAA2gB,EAAiB,YAAAC,CAAY,EAAI7Y,EAAI,WAAW/H,CAAC,GACnD,CAAC2gB,GAAmB,MAAM,UAAU,QAAQ,KAAK5Y,EAAI,WAAY4Y,CAAe,EAAI,KACpFre,EAAOqe,IACP,CAACC,GAAe,MAAM,UAAU,QAAQ,KAAK7Y,EAAI,WAAY6Y,CAAW,EAAI,KAC5Eve,EAAOue,EACf,CAEJ,IAAIpa,EAAalE,GAAQA,EAAK,YAAcyF,EAAI,OAC1C7N,GAASoI,CAAI,EAAI,EAAI,EACvB7H,EAAOsB,EAAK,gBAAgBgM,EAAI,OAAQvB,EAAY,EAAE,EACtDC,EAAWpE,GAAQA,EAAK,YAAc0F,EAAI,OACxC7N,GAASmI,CAAI,EAAI0F,EAAI,OAAO,WAAW,OACzCrN,EAAKqB,EAAK,gBAAgBgM,EAAI,OAAQtB,EAAU,CAAC,EACrD,MAAO,CAAE,KAAAhM,EAAM,GAAAC,CAAG,CACtB,KACK,QAAIqN,EAAI,MAAQ,aACV,CAAE,KAAMhM,EAAK,WAAaA,EAAK,OAAQ,GAAIA,EAAK,SAAWA,EAAK,MAAO,GAG9E,KAAK,oBAAsBgM,EAAI,OACxB,CACH,KAAMhM,EAAK,WACX,GAAIA,EAAK,SAKT,SAAUgM,EAAI,OAAO,WAAaA,EAAI,QAC1C,EAER,CACJ,EACI8Y,GAAa,IAAI,QACjBC,GAAiB,GACrB,SAASL,GAAS/hB,EAAM,CACpB,GAAI,CAAAmiB,GAAW,IAAIniB,CAAI,IAEvBmiB,GAAW,IAAIniB,EAAM,IAAI,EACrB,CAAC,SAAU,SAAU,UAAU,EAAE,QAAQ,iBAAiBA,EAAK,GAAG,EAAE,UAAU,IAAM,IAAI,CAExF,GADAA,EAAK,sBAAwBrB,GACzByjB,GACA,OACJ,QAAQ,KAAQ,0KAA0K,EAC1LA,GAAiB,EACrB,CACJ,CACA,SAASC,GAAsBriB,EAAM/D,EAAO,CACxC,IAAIyJ,EAAazJ,EAAM,eAAgB0J,EAAe1J,EAAM,YACxD2X,EAAY3X,EAAM,aAAc4X,EAAc5X,EAAM,UACpDqmB,EAAgBtiB,EAAK,SAASA,EAAK,MAAM,UAAU,MAAM,EAI7D,OAAI7D,GAAqBmmB,EAAc,KAAMA,EAAc,OAAQ1O,EAAWC,CAAW,IACrF,CAACnO,EAAYC,EAAciO,EAAWC,CAAW,EAAI,CAACD,EAAWC,EAAanO,EAAYC,CAAY,GACnG,CAAE,WAAAD,EAAY,aAAAC,EAAc,UAAAiO,EAAW,YAAAC,CAAY,CAC9D,CAGA,SAAS0O,GAA2BviB,EAAMmQ,EAAW,CACjD,GAAIA,EAAU,kBAAmB,CAC7B,IAAIlU,EAAQkU,EAAU,kBAAkBnQ,EAAK,IAAI,EAAE,CAAC,EACpD,GAAI/D,EACA,OAAOomB,GAAsBriB,EAAM/D,CAAK,CAChD,CACA,IAAI4R,EACJ,SAAS2U,EAAK5kB,EAAO,CACjBA,EAAM,eAAe,EACrBA,EAAM,yBAAyB,EAC/BiQ,EAAQjQ,EAAM,gBAAgB,EAAE,CAAC,CACrC,CAMA,OAAAoC,EAAK,IAAI,iBAAiB,cAAewiB,EAAM,EAAI,EACnD,SAAS,YAAY,QAAQ,EAC7BxiB,EAAK,IAAI,oBAAoB,cAAewiB,EAAM,EAAI,EAC/C3U,EAAQwU,GAAsBriB,EAAM6N,CAAK,EAAI,IACxD,CACA,SAASgU,GAAY7hB,EAAMvE,EAAM,CAC7B,QAASiI,EAAIjI,EAAK,WAAYiI,GAAKA,GAAK1D,EAAK,IAAK0D,EAAIA,EAAE,WAAY,CAChE,IAAIrG,EAAO2C,EAAK,QAAQ,YAAY0D,EAAG,EAAI,EAC3C,GAAIrG,GAAQA,EAAK,KAAK,QAClB,OAAOqG,CACf,CACA,OAAO,IACX,CAKA,SAASse,GAA0BhiB,EAAMyiB,EAAY,CACjD,IAAI/lB,EACJ,GAAI,CAAE,UAAAkX,EAAW,YAAAC,CAAY,EAAI7T,EAAK,kBAAkB,EACxD,QAASvE,KAAQgnB,EACb,KAAM/lB,EAAKjB,EAAK,cAAgB,MAAQiB,IAAO,OAAS,OAASA,EAAG,WAAa,KAAM,CACnF,IAAIgmB,EAAWjnB,EAAK,YACpB,KAAOinB,GAAaA,EAAS,UAAY,MAAQA,EAAS,UAAY,MAClEA,EAAWA,EAAS,YACxB,GAAIA,EAAU,CACV,IAAI9mB,EAAS8mB,EACb,OAAS,CACL,IAAI3e,EAAQnI,EAAO,WACnB,GAAI,CAACmI,GAASA,EAAM,UAAY,GAAKA,EAAM,iBAAmB,SAC1D,aAAa,KAAKA,EAAM,QAAQ,EAChC,MACJnI,EAASmI,CACb,CACAnI,EAAO,aAAaH,EAAMG,EAAO,UAAU,EACvCgY,GAAanY,GACbuE,EAAK,aAAa,EAAE,SAASvE,EAAMoY,CAAW,CACtD,MAEIpY,EAAK,WAAW,YAAYA,CAAI,CAExC,CAER,CAOA,SAASknB,GAAa3iB,EAAM4iB,EAAOC,EAAK,CACpC,GAAI,CAAE,KAAMjnB,EAAQ,WAAAkM,EAAY,SAAAC,EAAU,KAAAhM,EAAM,GAAAC,CAAG,EAAIgE,EAAK,QAAQ,WAAW4iB,EAAOC,CAAG,EACrFrlB,EAASwC,EAAK,kBAAkB,EAChC8iB,EACA7a,EAASzK,EAAO,WAQpB,GAPIyK,GAAUjI,EAAK,IAAI,SAASiI,EAAO,UAAY,EAAIA,EAASA,EAAO,UAAU,IAC7E6a,EAAO,CAAC,CAAE,KAAM7a,EAAQ,OAAQzK,EAAO,YAAa,CAAC,EAChDD,GAAmBC,CAAM,GAC1BslB,EAAK,KAAK,CAAE,KAAMtlB,EAAO,UAAW,OAAQA,EAAO,WAAY,CAAC,GAIpEqB,IAAUmB,EAAK,MAAM,cAAgB,EACrC,QAAS5D,EAAM2L,EAAU3L,EAAM0L,EAAY1L,IAAO,CAC9C,IAAIX,EAAOG,EAAO,WAAWQ,EAAM,CAAC,EAAGiB,EAAO5B,EAAK,WACnD,GAAIA,EAAK,UAAY,MAAQ,CAAC4B,EAAM,CAChC0K,EAAW3L,EACX,KACJ,CACA,GAAI,CAACiB,GAAQA,EAAK,KACd,KACR,CAEJ,IAAI0lB,EAAW/iB,EAAK,MAAM,IACtBgjB,EAAShjB,EAAK,SAAS,WAAW,GAAK0V,GAAU,WAAW1V,EAAK,MAAM,MAAM,EAC7EkT,EAAQ6P,EAAS,QAAQhnB,CAAI,EAC7BkJ,EAAM,KAAMnH,EAAMklB,EAAO,MAAMpnB,EAAQ,CACvC,QAASsX,EAAM,OACf,SAAUA,EAAM,OAAO,eAAeA,EAAM,MAAM,CAAC,EACnD,QAAS,GACT,KAAMpL,EACN,GAAIC,EACJ,mBAAoBmL,EAAM,OAAO,KAAK,YAAc,MAAQ,OAAS,GACrE,cAAe4P,EACf,aAAAG,GACA,QAAS/P,CACb,CAAC,EACD,GAAI4P,GAAQA,EAAK,CAAC,EAAE,KAAO,KAAM,CAC7B,IAAI7a,EAAS6a,EAAK,CAAC,EAAE,IAAK5a,EAAO4a,EAAK,CAAC,GAAKA,EAAK,CAAC,EAAE,IAChD5a,GAAQ,OACRA,EAAOD,GACXhD,EAAM,CAAE,OAAQgD,EAASlM,EAAM,KAAMmM,EAAOnM,CAAK,CACrD,CACA,MAAO,CAAE,IAAA+B,EAAK,IAAAmH,EAAK,KAAAlJ,EAAM,GAAAC,CAAG,CAChC,CACA,SAASinB,GAAa7lB,EAAK,CACvB,IAAIC,EAAOD,EAAI,WACf,GAAIC,EACA,OAAOA,EAAK,UAAU,EAErB,GAAID,EAAI,UAAY,MAAQA,EAAI,YAIjC,GAAI2B,IAAU,aAAa,KAAK3B,EAAI,WAAW,QAAQ,EAAG,CACtD,IAAI2O,EAAO,SAAS,cAAc,KAAK,EACvC,OAAAA,EAAK,YAAY,SAAS,cAAc,IAAI,CAAC,EACtC,CAAE,KAAAA,CAAK,CAClB,SACS3O,EAAI,WAAW,WAAaA,GAAO2B,IAAU,gBAAgB,KAAK3B,EAAI,WAAW,QAAQ,EAC9F,MAAO,CAAE,OAAQ,EAAK,UAGrBA,EAAI,UAAY,OAASA,EAAI,aAAa,kBAAkB,EACjE,MAAO,CAAE,OAAQ,EAAK,EAE1B,OAAO,IACX,CACA,IAAM8lB,GAAW,6KACjB,SAASC,GAAcnjB,EAAMjE,EAAMC,EAAIylB,EAAUgB,EAAY,CACzD,IAAIW,EAAgBpjB,EAAK,MAAM,4BAA8BA,EAAK,UAAYA,EAAK,MAAM,cAAgB,GAEzG,GADAA,EAAK,MAAM,0BAA4B,EACnCjE,EAAO,EAAG,CACV,IAAIiU,EAAShQ,EAAK,MAAM,kBAAoB,KAAK,IAAI,EAAI,GAAKA,EAAK,MAAM,oBAAsB,KAC3FwhB,EAASzR,GAAiB/P,EAAMgQ,CAAM,EAC1C,GAAIwR,GAAU,CAACxhB,EAAK,MAAM,UAAU,GAAGwhB,CAAM,EAAG,CAC5C,GAAI3iB,IAAUM,IACVa,EAAK,MAAM,cAAgB,IAAM,KAAK,IAAI,EAAI,IAAMA,EAAK,MAAM,iBAC/DA,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMvC,GAAS,GAAI,OAAO,CAAC,CAAC,EAClE,OACJ,IAAIgW,EAAKzT,EAAK,MAAM,GAAG,aAAawhB,CAAM,EACtCxR,GAAU,UACVyD,EAAG,QAAQ,UAAW,EAAI,EACrBzD,GAAU,OACfyD,EAAG,eAAe,EAClB2P,GACA3P,EAAG,QAAQ,cAAe2P,CAAa,EAC3CpjB,EAAK,SAASyT,CAAE,CACpB,CACA,MACJ,CACA,IAAI4P,EAAUrjB,EAAK,MAAM,IAAI,QAAQjE,CAAI,EACrCunB,EAASD,EAAQ,YAAYrnB,CAAE,EACnCD,EAAOsnB,EAAQ,OAAOC,EAAS,CAAC,EAChCtnB,EAAKgE,EAAK,MAAM,IAAI,QAAQhE,CAAE,EAAE,MAAMsnB,EAAS,CAAC,EAChD,IAAIre,EAAMjF,EAAK,MAAM,UACjBujB,EAAQZ,GAAa3iB,EAAMjE,EAAMC,CAAE,EACnC8B,EAAMkC,EAAK,MAAM,IAAKwjB,EAAU1lB,EAAI,MAAMylB,EAAM,KAAMA,EAAM,EAAE,EAC9DE,EAAcC,EAEd1jB,EAAK,MAAM,cAAgB,GAAK,KAAK,IAAI,EAAI,IAAMA,EAAK,MAAM,iBAC9DyjB,EAAezjB,EAAK,MAAM,UAAU,GACpC0jB,EAAgB,QAGhBD,EAAezjB,EAAK,MAAM,UAAU,KACpC0jB,EAAgB,SAEpB1jB,EAAK,MAAM,YAAc,KACzB,IAAI2jB,EAASC,GAASJ,EAAQ,QAASD,EAAM,IAAI,QAASA,EAAM,KAAME,EAAcC,CAAa,EAGjG,GAFIC,GACA3jB,EAAK,MAAM,kBACVhB,IAAOgB,EAAK,MAAM,aAAe,KAAK,IAAI,EAAI,KAAOb,KACtDsjB,EAAW,KAAKxL,GAAKA,EAAE,UAAY,GAAK,CAACiM,GAAS,KAAKjM,EAAE,QAAQ,CAAC,IACjE,CAAC0M,GAAUA,EAAO,MAAQA,EAAO,OAClC3jB,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMvC,GAAS,GAAI,OAAO,CAAC,CAAC,EAAG,CACrEuC,EAAK,MAAM,aAAe,EAC1B,MACJ,CACA,GAAI,CAAC2jB,EACD,GAAIlC,GAAYxc,aAAekG,IAAiB,CAAClG,EAAI,OAASA,EAAI,MAAM,WAAWA,EAAI,OAAO,GAC1F,CAACjF,EAAK,WAAa,EAAEujB,EAAM,KAAOA,EAAM,IAAI,QAAUA,EAAM,IAAI,MAChEI,EAAS,CAAE,MAAO1e,EAAI,KAAM,KAAMA,EAAI,GAAI,KAAMA,EAAI,EAAG,MAEtD,CACD,GAAIse,EAAM,IAAK,CACX,IAAIte,EAAM4e,GAAiB7jB,EAAMA,EAAK,MAAM,IAAKujB,EAAM,GAAG,EAC1D,GAAIte,GAAO,CAACA,EAAI,GAAGjF,EAAK,MAAM,SAAS,EAAG,CACtC,IAAIyT,EAAKzT,EAAK,MAAM,GAAG,aAAaiF,CAAG,EACnCme,GACA3P,EAAG,QAAQ,cAAe2P,CAAa,EAC3CpjB,EAAK,SAASyT,CAAE,CACpB,CACJ,CACA,MACJ,CAKAzT,EAAK,MAAM,UAAU,KAAOA,EAAK,MAAM,UAAU,IACjD2jB,EAAO,OAASA,EAAO,MACvB3jB,EAAK,MAAM,qBAAqBmL,KAC5BwY,EAAO,MAAQ3jB,EAAK,MAAM,UAAU,MAAQ2jB,EAAO,OAAS3jB,EAAK,MAAM,UAAU,KAAO,GACxFA,EAAK,MAAM,UAAU,MAAQujB,EAAM,KACnCI,EAAO,MAAQ3jB,EAAK,MAAM,UAAU,KAE/B2jB,EAAO,KAAO3jB,EAAK,MAAM,UAAU,IAAM2jB,EAAO,MAAQ3jB,EAAK,MAAM,UAAU,GAAK,GACvFA,EAAK,MAAM,UAAU,IAAMujB,EAAM,KACjCI,EAAO,MAAS3jB,EAAK,MAAM,UAAU,GAAK2jB,EAAO,KACjDA,EAAO,KAAO3jB,EAAK,MAAM,UAAU,KAMvCvB,IAAMC,IAAc,IAAMilB,EAAO,MAAQA,EAAO,MAAQ,GACxDA,EAAO,MAAQA,EAAO,OAASA,EAAO,MAAQJ,EAAM,MACpDA,EAAM,IAAI,YAAYI,EAAO,MAAQJ,EAAM,KAAO,EAAGI,EAAO,MAAQJ,EAAM,KAAO,CAAC,GAAK,UACvFI,EAAO,QACPA,EAAO,OACPA,EAAO,QAEX,IAAIzQ,EAAQqQ,EAAM,IAAI,eAAeI,EAAO,MAAQJ,EAAM,IAAI,EAC1DpQ,EAAMoQ,EAAM,IAAI,eAAeI,EAAO,KAAOJ,EAAM,IAAI,EACvDO,EAAShmB,EAAI,QAAQ6lB,EAAO,KAAK,EACjCI,EAAe7Q,EAAM,WAAWC,CAAG,GAAKD,EAAM,OAAO,eAAiB4Q,EAAO,IAAI,GAAKH,EAAO,KAGjG,IAAM3kB,IAAOgB,EAAK,MAAM,aAAe,KAAK,IAAI,EAAI,MAC/C,CAAC+jB,GAAgBtB,EAAW,KAAKxL,GAAKA,EAAE,UAAY,OAASA,EAAE,UAAY,GAAG,IAC9E,CAAC8M,GAAgB7Q,EAAM,IAAMqQ,EAAM,IAAI,QAAQ,OAC3C,CAACrQ,EAAM,WAAWC,CAAG,GAAK,CAACD,EAAM,OAAO,gBACzCA,EAAM,IAAMC,EAAI,KAAO,CAAC,KAAK,KAAKoQ,EAAM,IAAI,YAAYrQ,EAAM,IAAKC,EAAI,IAAK,GAAI,EAAE,CAAC,IACvFnT,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMvC,GAAS,GAAI,OAAO,CAAC,CAAC,EAAG,CACrEuC,EAAK,MAAM,aAAe,EAC1B,MACJ,CAEA,GAAIA,EAAK,MAAM,UAAU,OAAS2jB,EAAO,OACrCK,GAAmBlmB,EAAK6lB,EAAO,MAAOA,EAAO,KAAMzQ,EAAOC,CAAG,GAC7DnT,EAAK,SAAS,gBAAiB6E,GAAKA,EAAE7E,EAAMvC,GAAS,EAAG,WAAW,CAAC,CAAC,EAAG,CACpE0B,IAAWN,IACXmB,EAAK,YAAY,yBAAyB,EAC9C,MACJ,CAIInB,IAAU8kB,EAAO,MAAQA,EAAO,QAChC3jB,EAAK,MAAM,iBAAmB,KAAK,IAAI,GASvCb,IAAW,CAAC4kB,GAAgB7Q,EAAM,MAAM,GAAKC,EAAI,MAAM,GAAKA,EAAI,cAAgB,GAAKD,EAAM,OAASC,EAAI,OACxGoQ,EAAM,KAAOA,EAAM,IAAI,QAAUA,EAAM,IAAI,MAAQA,EAAM,IAAI,MAAQI,EAAO,OAC5EA,EAAO,MAAQ,EACfxQ,EAAMoQ,EAAM,IAAI,eAAeI,EAAO,KAAOJ,EAAM,IAAI,EACvD,WAAW,IAAM,CACbvjB,EAAK,SAAS,gBAAiB,SAAU6E,EAAG,CAAE,OAAOA,EAAE7E,EAAMvC,GAAS,GAAI,OAAO,CAAC,CAAG,CAAC,CAC1F,EAAG,EAAE,GAET,IAAIwmB,EAASN,EAAO,MAAOO,EAAOP,EAAO,KACrCQ,EAAQtc,GAAS,CACjB,IAAI4L,EAAK5L,GAAQ7H,EAAK,MAAM,GAAG,QAAQikB,EAAQC,EAAMX,EAAM,IAAI,MAAMI,EAAO,MAAQJ,EAAM,KAAMI,EAAO,KAAOJ,EAAM,IAAI,CAAC,EACzH,GAAIA,EAAM,IAAK,CACX,IAAIte,EAAM4e,GAAiB7jB,EAAMyT,EAAG,IAAK8P,EAAM,GAAG,EAM9Cte,GAAO,EAAEpG,IAAUmB,EAAK,WAAaiF,EAAI,QACxC0e,EAAO,OAASA,EAAO,MAAQ3jB,EAAK,MAAM,iBAAmB,KAAK,IAAI,EAAI,OAC1EiF,EAAI,MAAQgf,GAAUhf,EAAI,MAAQwO,EAAG,QAAQ,IAAIyQ,CAAI,EAAI,IAC1DzlB,IAAMwG,EAAI,OAASA,EAAI,MAAQgf,IAC/BxQ,EAAG,aAAaxO,CAAG,CAC3B,CACA,OAAIme,GACA3P,EAAG,QAAQ,cAAe2P,CAAa,EACpC3P,EAAG,eAAe,CAC7B,EACI2Q,EACJ,GAAIL,EACA,GAAI7Q,EAAM,KAAOC,EAAI,IAAK,CAGlB1U,IAAMC,IAAc,IAAMwU,EAAM,cAAgB,IAChDlT,EAAK,YAAY,yBAAyB,EAC1C,WAAW,IAAM4Q,GAAe5Q,CAAI,EAAG,EAAE,GAE7C,IAAIyT,EAAK0Q,EAAKnkB,EAAK,MAAM,GAAG,OAAOikB,EAAQC,CAAI,CAAC,EAC5C1W,EAAQ1P,EAAI,QAAQ6lB,EAAO,KAAK,EAAE,YAAY7lB,EAAI,QAAQ6lB,EAAO,IAAI,CAAC,EACtEnW,GACAiG,EAAG,YAAYjG,CAAK,EACxBxN,EAAK,SAASyT,CAAE,CACpB,SAEAkQ,EAAO,MAAQA,EAAO,OACjBS,EAAaC,GAAanR,EAAM,OAAO,QAAQ,IAAIA,EAAM,aAAcC,EAAI,YAAY,EAAG2Q,EAAO,OAAO,QAAQ,IAAIA,EAAO,aAAcH,EAAO,KAAOG,EAAO,MAAM,CAAC,CAAC,GAAI,CAC3K,IAAIrQ,EAAK0Q,EAAKnkB,EAAK,MAAM,EAAE,EACvBokB,EAAW,MAAQ,MACnB3Q,EAAG,QAAQwQ,EAAQC,EAAME,EAAW,IAAI,EAExC3Q,EAAG,WAAWwQ,EAAQC,EAAME,EAAW,IAAI,EAC/CpkB,EAAK,SAASyT,CAAE,CACpB,SACSP,EAAM,OAAO,MAAMA,EAAM,MAAM,CAAC,EAAE,QAAUA,EAAM,MAAM,GAAKC,EAAI,MAAM,GAAKA,EAAI,WAAa,EAAI,GAAI,CAE1G,IAAIpK,EAAOmK,EAAM,OAAO,YAAYA,EAAM,aAAcC,EAAI,YAAY,EACpEiF,EAAQ,IAAM+L,EAAKnkB,EAAK,MAAM,GAAG,WAAW+I,EAAMkb,EAAQC,CAAI,CAAC,EAC9DlkB,EAAK,SAAS,kBAAmB6E,GAAKA,EAAE7E,EAAMikB,EAAQC,EAAMnb,EAAMqP,CAAK,CAAC,GACzEpY,EAAK,SAASoY,EAAM,CAAC,CAC7B,MAEIpY,EAAK,SAASmkB,EAAK,CAAC,OAIxBnkB,EAAK,SAASmkB,EAAK,CAAC,CAE5B,CACA,SAASN,GAAiB7jB,EAAMlC,EAAKwmB,EAAW,CAC5C,OAAI,KAAK,IAAIA,EAAU,OAAQA,EAAU,IAAI,EAAIxmB,EAAI,QAAQ,KAClD,KACJ2S,GAAiBzQ,EAAMlC,EAAI,QAAQwmB,EAAU,MAAM,EAAGxmB,EAAI,QAAQwmB,EAAU,IAAI,CAAC,CAC5F,CAIA,SAASD,GAAa/mB,EAAKsG,EAAM,CAC7B,IAAI2gB,EAAWjnB,EAAI,WAAW,MAAOknB,EAAY5gB,EAAK,WAAW,MAC7D8d,EAAQ6C,EAAUxF,EAAUyF,EAAWrN,EAAMvQ,EAAM6d,EACvD,QAASnjB,EAAI,EAAGA,EAAIkjB,EAAU,OAAQljB,IAClCogB,EAAQ8C,EAAUljB,CAAC,EAAE,cAAcogB,CAAK,EAC5C,QAASpgB,EAAI,EAAGA,EAAIijB,EAAS,OAAQjjB,IACjCyd,EAAUwF,EAASjjB,CAAC,EAAE,cAAcyd,CAAO,EAC/C,GAAI2C,EAAM,QAAU,GAAK3C,EAAQ,QAAU,EACvCnY,EAAO8a,EAAM,CAAC,EACdvK,EAAO,MACPsN,EAAUhpB,GAASA,EAAK,KAAKmL,EAAK,SAASnL,EAAK,KAAK,CAAC,UAEjDimB,EAAM,QAAU,GAAK3C,EAAQ,QAAU,EAC5CnY,EAAOmY,EAAQ,CAAC,EAChB5H,EAAO,SACPsN,EAAUhpB,GAASA,EAAK,KAAKmL,EAAK,cAAcnL,EAAK,KAAK,CAAC,MAG3D,QAAO,KAEX,IAAI2S,EAAU,CAAC,EACf,QAAS9M,EAAI,EAAGA,EAAIsC,EAAK,WAAYtC,IACjC8M,EAAQ,KAAKqW,EAAO7gB,EAAK,MAAMtC,CAAC,CAAC,CAAC,EACtC,GAAIgJ,EAAS,KAAK8D,CAAO,EAAE,GAAG9Q,CAAG,EAC7B,MAAO,CAAE,KAAAsJ,EAAM,KAAAuQ,CAAK,CAC5B,CACA,SAAS6M,GAAmBU,EAAKnX,EAAOhG,EAAKod,EAAWC,EAAS,CAC7D,GACArd,EAAMgG,GAASqX,EAAQ,IAAMD,EAAU,KAEnCE,GAAsBF,EAAW,GAAM,EAAK,EAAIC,EAAQ,IACxD,MAAO,GACX,IAAI/S,EAAS6S,EAAI,QAAQnX,CAAK,EAE9B,GAAI,CAACoX,EAAU,OAAO,YAAa,CAC/B,IAAIjgB,EAAQmN,EAAO,UACnB,OAAOnN,GAAS,MAAQ6C,GAAOgG,EAAQ7I,EAAM,QACjD,CAEA,GAAImN,EAAO,aAAeA,EAAO,OAAO,QAAQ,MAAQ,CAACA,EAAO,OAAO,YACnE,MAAO,GACX,IAAIiT,EAAQJ,EAAI,QAAQG,GAAsBhT,EAAQ,GAAM,EAAI,CAAC,EAEjE,MAAI,CAACiT,EAAM,OAAO,aAAeA,EAAM,IAAMvd,GACzCsd,GAAsBC,EAAO,GAAM,EAAK,EAAIvd,EACrC,GAEJod,EAAU,OAAO,QAAQ,IAAIA,EAAU,YAAY,EAAE,GAAGG,EAAM,OAAO,OAAO,CACvF,CACA,SAASD,GAAsB3f,EAAM6f,EAASC,EAAS,CACnD,IAAIrX,EAAQzI,EAAK,MAAOqC,EAAMwd,EAAU7f,EAAK,IAAI,EAAIA,EAAK,IAC1D,KAAOyI,EAAQ,IAAMoX,GAAW7f,EAAK,WAAWyI,CAAK,GAAKzI,EAAK,KAAKyI,CAAK,EAAE,aACvEA,IACApG,IACAwd,EAAU,GAEd,GAAIC,EAAS,CACT,IAAIrhB,EAAOuB,EAAK,KAAKyI,CAAK,EAAE,WAAWzI,EAAK,WAAWyI,CAAK,CAAC,EAC7D,KAAOhK,GAAQ,CAACA,EAAK,QACjBA,EAAOA,EAAK,WACZ4D,GAER,CACA,OAAOA,CACX,CACA,SAASqc,GAASzW,EAAGC,EAAGjP,EAAKslB,EAAcC,EAAe,CACtD,IAAInW,EAAQJ,EAAE,cAAcC,EAAGjP,CAAG,EAClC,GAAIoP,GAAS,KACT,OAAO,KACX,GAAI,CAAE,EAAG0X,EAAM,EAAGC,CAAK,EAAI/X,EAAE,YAAYC,EAAGjP,EAAMgP,EAAE,KAAMhP,EAAMiP,EAAE,IAAI,EACtE,GAAIsW,GAAiB,MAAO,CACxB,IAAIyB,EAAS,KAAK,IAAI,EAAG5X,EAAQ,KAAK,IAAI0X,EAAMC,CAAI,CAAC,EACrDzB,GAAgBwB,EAAOE,EAAS5X,CACpC,CACA,GAAI0X,EAAO1X,GAASJ,EAAE,KAAOC,EAAE,KAAM,CACjC,IAAImO,EAAOkI,GAAgBlW,GAASkW,GAAgBwB,EAAO1X,EAAQkW,EAAe,EAClFlW,GAASgO,EACLhO,GAASA,EAAQH,EAAE,MAAQgY,GAAgBhY,EAAE,YAAYG,EAAQ,EAAGA,EAAQ,CAAC,CAAC,IAC9EA,GAASgO,EAAO,EAAI,IACxB2J,EAAO3X,GAAS2X,EAAOD,GACvBA,EAAO1X,CACX,SACS2X,EAAO3X,EAAO,CACnB,IAAIgO,EAAOkI,GAAgBlW,GAASkW,GAAgByB,EAAO3X,EAAQkW,EAAe,EAClFlW,GAASgO,EACLhO,GAASA,EAAQJ,EAAE,MAAQiY,GAAgBjY,EAAE,YAAYI,EAAQ,EAAGA,EAAQ,CAAC,CAAC,IAC9EA,GAASgO,EAAO,EAAI,IACxB0J,EAAO1X,GAAS0X,EAAOC,GACvBA,EAAO3X,CACX,CACA,MAAO,CAAE,MAAAA,EAAO,KAAA0X,EAAM,KAAAC,CAAK,CAC/B,CACA,SAASE,GAAgBvV,EAAK,CAC1B,GAAIA,EAAI,QAAU,EACd,MAAO,GACX,IAAI1C,EAAI0C,EAAI,WAAW,CAAC,EAAGzC,EAAIyC,EAAI,WAAW,CAAC,EAC/C,OAAO1C,GAAK,OAAUA,GAAK,OAAUC,GAAK,OAAUA,GAAK,KAC7D,CAeA,IAAMiY,GAAN,KAAiB,CAQb,YAAYC,EAAOC,EAAO,CACtB,KAAK,MAAQ,KAIb,KAAK,QAAU,GAIf,KAAK,YAAc,KACnB,KAAK,QAAU,GAIf,KAAK,WAAa,KAIlB,KAAK,cAAgB,KAIrB,KAAK,qBAAuB,OAI5B,KAAK,MAAQ,IAAIC,GACjB,KAAK,kBAAoB,CAAC,EAC1B,KAAK,YAAc,CAAC,EAMpB,KAAK,sBAAwB,GAM7B,KAAK,SAAW,KAChB,KAAK,OAASD,EACd,KAAK,MAAQA,EAAM,MACnB,KAAK,cAAgBA,EAAM,SAAW,CAAC,EACvC,KAAK,cAAc,QAAQE,EAAmB,EAC9C,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,IAAOH,GAASA,EAAM,OAAU,SAAS,cAAc,KAAK,EAC7DA,IACIA,EAAM,YACNA,EAAM,YAAY,KAAK,GAAG,EACrB,OAAOA,GAAS,WACrBA,EAAM,KAAK,GAAG,EACTA,EAAM,QACX,KAAK,QAAU,KAEvB,KAAK,SAAWI,GAAY,IAAI,EAChCC,GAAoB,IAAI,EACxB,KAAK,UAAYC,GAAe,IAAI,EACpC,KAAK,QAAUC,GAAY,KAAK,MAAM,IAAKC,GAAe,IAAI,EAAGC,GAAgB,IAAI,EAAG,KAAK,IAAK,IAAI,EACtG,KAAK,YAAc,IAAIC,GAAY,KAAM,CAACC,EAAMC,EAAIC,EAAUC,IAAUC,GAAc,KAAMJ,EAAMC,EAAIC,EAAUC,CAAK,CAAC,EACtH,KAAK,YAAY,MAAM,EACvBE,GAAU,IAAI,EACd,KAAK,kBAAkB,CAC3B,CAMA,IAAI,WAAY,CAAE,OAAO,KAAK,MAAM,SAAW,CAI/C,IAAI,OAAQ,CACR,GAAI,KAAK,OAAO,OAAS,KAAK,MAAO,CACjC,IAAIC,EAAO,KAAK,OAChB,KAAK,OAAS,CAAC,EACf,QAASC,KAAQD,EACb,KAAK,OAAOC,CAAI,EAAID,EAAKC,CAAI,EACjC,KAAK,OAAO,MAAQ,KAAK,KAC7B,CACA,OAAO,KAAK,MAChB,CAKA,OAAOjB,EAAO,CACNA,EAAM,iBAAmB,KAAK,OAAO,iBACrCkB,GAAgB,IAAI,EACxB,IAAIC,EAAY,KAAK,OACrB,KAAK,OAASnB,EACVA,EAAM,UACNA,EAAM,QAAQ,QAAQE,EAAmB,EACzC,KAAK,cAAgBF,EAAM,SAE/B,KAAK,iBAAiBA,EAAM,MAAOmB,CAAS,CAChD,CAMA,SAASnB,EAAO,CACZ,IAAIoB,EAAU,CAAC,EACf,QAASH,KAAQ,KAAK,OAClBG,EAAQH,CAAI,EAAI,KAAK,OAAOA,CAAI,EACpCG,EAAQ,MAAQ,KAAK,MACrB,QAASH,KAAQjB,EACboB,EAAQH,CAAI,EAAIjB,EAAMiB,CAAI,EAC9B,KAAK,OAAOG,CAAO,CACvB,CAKA,YAAYC,EAAO,CACf,KAAK,iBAAiBA,EAAO,KAAK,MAAM,CAC5C,CACA,iBAAiBA,EAAOF,EAAW,CAC/B,IAAIG,EACJ,IAAIN,EAAO,KAAK,MAAOO,EAAS,GAAOC,EAAY,GAG/CH,EAAM,aAAe,KAAK,YAC1BI,GAAiB,IAAI,EACrBD,EAAY,IAEhB,KAAK,MAAQH,EACb,IAAIK,EAAiBV,EAAK,SAAWK,EAAM,SAAW,KAAK,OAAO,SAAWF,EAAU,QACvF,GAAIO,GAAkB,KAAK,OAAO,SAAWP,EAAU,SAAW,KAAK,OAAO,WAAaA,EAAU,UAAW,CAC5G,IAAIQ,EAAYtB,GAAe,IAAI,EAC/BuB,GAAiBD,EAAW,KAAK,SAAS,IAC1C,KAAK,UAAYA,EACjBJ,EAAS,GAEjB,EACIG,GAAkBP,EAAU,iBAAmB,KAAK,OAAO,kBAC3DD,GAAgB,IAAI,EAExB,KAAK,SAAWf,GAAY,IAAI,EAChCC,GAAoB,IAAI,EACxB,IAAIyB,EAAYrB,GAAgB,IAAI,EAAGsB,EAAYvB,GAAe,IAAI,EAClEwB,EAASf,EAAK,SAAWK,EAAM,SAAW,CAACL,EAAK,IAAI,GAAGK,EAAM,GAAG,EAAI,QAClEA,EAAM,kBAAoBL,EAAK,kBAAoB,eAAiB,WACtEgB,EAAYT,GAAU,CAAC,KAAK,QAAQ,YAAYF,EAAM,IAAKS,EAAWD,CAAS,GAC/EG,GAAa,CAACX,EAAM,UAAU,GAAGL,EAAK,SAAS,KAC/CQ,EAAY,IAChB,IAAIS,EAAeF,GAAU,YAAcP,GAAa,KAAK,IAAI,MAAM,gBAAkB,MAAQU,GAAe,IAAI,EACpH,GAAIV,EAAW,CACX,KAAK,YAAY,KAAK,EAMtB,IAAIW,EAAiBH,IAAcI,IAAMC,KAAW,CAAC,KAAK,WACtD,CAACrB,EAAK,UAAU,OAAS,CAACK,EAAM,UAAU,OAASiB,GAAwBtB,EAAK,UAAWK,EAAM,SAAS,EAC9G,GAAIW,EAAW,CAKX,IAAIO,EAAeF,GAAU,KAAK,YAAc,KAAK,kBAAkB,EAAE,UAAa,KAClF,KAAK,YACL,KAAK,MAAM,gBAAkBG,GAAoB,IAAI,IACrDjB,GAAU,CAAC,KAAK,QAAQ,OAAOF,EAAM,IAAKS,EAAWD,EAAW,IAAI,KACpE,KAAK,QAAQ,gBAAgBC,CAAS,EACtC,KAAK,QAAQ,QAAQ,EACrB,KAAK,QAAUxB,GAAYe,EAAM,IAAKS,EAAWD,EAAW,KAAK,IAAK,IAAI,GAE1EU,IAAiB,CAAC,KAAK,aAAe,CAAC,KAAK,IAAI,SAAS,KAAK,WAAW,KACzEJ,EAAiB,GACzB,CAKIA,GACA,EAAE,KAAK,MAAM,WAAa,KAAK,YAAY,iBAAiB,GAAG,KAAK,kBAAkB,CAAC,GACnFM,GAAmB,IAAI,GAC3BC,GAAe,KAAMP,CAAc,GAGnCQ,GAAkB,KAAMtB,EAAM,SAAS,EACvC,KAAK,YAAY,gBAAgB,GAErC,KAAK,YAAY,MAAM,CAC3B,CACA,KAAK,kBAAkBL,CAAI,EACrB,GAAAM,EAAK,KAAK,YAAc,MAAQA,IAAO,SAAkBA,EAAG,MAAS,CAACN,EAAK,IAAI,GAAGK,EAAM,GAAG,GAC7F,KAAK,kBAAkB,KAAK,SAAUL,CAAI,EAC1Ce,GAAU,QACV,KAAK,IAAI,UAAY,EAEhBA,GAAU,eACf,KAAK,kBAAkB,EAElBE,GACLW,GAAeX,CAAY,CAEnC,CAIA,mBAAoB,CAChB,IAAIY,EAAW,KAAK,kBAAkB,EAAE,UACxC,GAAI,GAACA,GAAY,CAAC,KAAK,IAAI,SAASA,EAAS,UAAY,EAAIA,EAAWA,EAAS,UAAU,IACtF,GAAI,MAAK,SAAS,0BAA2BC,GAAKA,EAAE,IAAI,CAAC,EACzD,GAAI,KAAK,MAAM,qBAAqBC,GAAe,CACpD,IAAIC,EAAS,KAAK,QAAQ,YAAY,KAAK,MAAM,UAAU,IAAI,EAC3DA,EAAO,UAAY,GACnBC,GAAmB,KAAMD,EAAO,sBAAsB,EAAGH,CAAQ,CACzE,MAEII,GAAmB,KAAM,KAAK,YAAY,KAAK,MAAM,UAAU,KAAM,CAAC,EAAGJ,CAAQ,EAEzF,CACA,oBAAqB,CACjB,IAAIK,EACJ,KAAOA,EAAO,KAAK,YAAY,IAAI,GAC3BA,EAAK,SACLA,EAAK,QAAQ,CACzB,CACA,kBAAkBC,EAAW,CACzB,GAAI,CAACA,GAAaA,EAAU,SAAW,KAAK,MAAM,SAAW,KAAK,eAAiB,KAAK,kBAAmB,CACvG,KAAK,kBAAoB,KAAK,cAC9B,KAAK,mBAAmB,EACxB,QAASC,EAAI,EAAGA,EAAI,KAAK,cAAc,OAAQA,IAAK,CAChD,IAAIC,EAAS,KAAK,cAAcD,CAAC,EAC7BC,EAAO,KAAK,MACZ,KAAK,YAAY,KAAKA,EAAO,KAAK,KAAK,IAAI,CAAC,CACpD,CACA,QAASD,EAAI,EAAGA,EAAI,KAAK,MAAM,QAAQ,OAAQA,IAAK,CAChD,IAAIC,EAAS,KAAK,MAAM,QAAQD,CAAC,EAC7BC,EAAO,KAAK,MACZ,KAAK,YAAY,KAAKA,EAAO,KAAK,KAAK,IAAI,CAAC,CACpD,CACJ,KAEI,SAASD,EAAI,EAAGA,EAAI,KAAK,YAAY,OAAQA,IAAK,CAC9C,IAAIE,EAAa,KAAK,YAAYF,CAAC,EAC/BE,EAAW,QACXA,EAAW,OAAO,KAAMH,CAAS,CACzC,CAER,CACA,kBAAkBI,EAAUvC,EAAM,CAC9B,IAAIwC,EAAMD,EAAS,KAAME,EAAQ,GACjC,GAAID,EAAI,KAAO,KAAK,MAAM,IAAI,QAAQ,MAAQ,KAAK,MAAM,IAAI,OAAOA,EAAI,IAAI,GAAKA,EAAI,KACjFC,EAAQD,EAAI,SAEX,CACD,IAAIE,EAAWF,EAAI,MAAQ,KAAK,MAAM,IAAI,QAAQ,KAAOxC,EAAK,IAAI,QAAQ,OAC9D0C,EAAW,GAAKA,EAAW,KAAK,MAAM,IAAI,QAAQ,MAAQ,KAAK,MAAM,IAAI,OAAOA,CAAQ,IACvFF,EAAI,OACbC,EAAQC,EAChB,CACA,KAAK,SAAW,IAAIC,GAASJ,EAAS,MAAOA,EAAS,KAAME,EAAQ,EAAI,OAAYV,GAAc,OAAO,KAAK,MAAM,IAAKU,CAAK,CAAC,CACnI,CACA,SAASG,EAAUd,EAAG,CAClB,IAAIe,EAAO,KAAK,QAAU,KAAK,OAAOD,CAAQ,EAAGE,EACjD,GAAID,GAAQ,OAASC,EAAQhB,EAAIA,EAAEe,CAAI,EAAIA,GACvC,OAAOC,EACX,QAASV,EAAI,EAAGA,EAAI,KAAK,cAAc,OAAQA,IAAK,CAChD,IAAIS,EAAO,KAAK,cAAcT,CAAC,EAAE,MAAMQ,CAAQ,EAC/C,GAAIC,GAAQ,OAASC,EAAQhB,EAAIA,EAAEe,CAAI,EAAIA,GACvC,OAAOC,CACf,CACA,IAAIC,EAAU,KAAK,MAAM,QACzB,GAAIA,EACA,QAASX,EAAI,EAAGA,EAAIW,EAAQ,OAAQX,IAAK,CACrC,IAAIS,EAAOE,EAAQX,CAAC,EAAE,MAAMQ,CAAQ,EACpC,GAAIC,GAAQ,OAASC,EAAQhB,EAAIA,EAAEe,CAAI,EAAIA,GACvC,OAAOC,CACf,CACR,CAIA,UAAW,CAIP,GAAI1B,GAAI,CAGJ,IAAI4B,EAAO,KAAK,KAAK,cACrB,GAAIA,GAAQ,KAAK,IACb,MAAO,GACX,GAAI,CAACA,GAAQ,CAAC,KAAK,IAAI,SAASA,CAAI,EAChC,MAAO,GACX,KAAOA,GAAQ,KAAK,KAAOA,GAAQ,KAAK,IAAI,SAASA,CAAI,GAAG,CACxD,GAAIA,EAAK,iBAAmB,QACxB,MAAO,GACXA,EAAOA,EAAK,aAChB,CACA,MAAO,EACX,CACA,OAAO,KAAK,KAAK,eAAiB,KAAK,GAC3C,CAIA,OAAQ,CACJ,KAAK,YAAY,KAAK,EAClB,KAAK,UACLC,GAAmB,KAAK,GAAG,EAC/BvB,GAAe,IAAI,EACnB,KAAK,YAAY,MAAM,CAC3B,CAOA,IAAI,MAAO,CACP,IAAIwB,EAAS,KAAK,MAClB,GAAIA,GAAU,MACV,QAASC,EAAS,KAAK,IAAI,WAAYA,EAAQA,EAASA,EAAO,WAC3D,GAAIA,EAAO,UAAY,GAAMA,EAAO,UAAY,IAAMA,EAAO,KACzD,OAAKA,EAAO,eACR,OAAO,eAAeA,CAAM,EAAE,aAAe,IAAMA,EAAO,cAAc,aAAa,GAClF,KAAK,MAAQA,EAGhC,OAAOD,GAAU,QACrB,CAKA,YAAa,CACT,KAAK,MAAQ,IACjB,CAUA,YAAYE,EAAQ,CAChB,OAAOC,GAAY,KAAMD,CAAM,CACnC,CASA,YAAYE,EAAKC,EAAO,EAAG,CACvB,OAAOC,GAAY,KAAMF,EAAKC,CAAI,CACtC,CAWA,SAASD,EAAKC,EAAO,EAAG,CACpB,OAAO,KAAK,QAAQ,WAAWD,EAAKC,CAAI,CAC5C,CAWA,QAAQD,EAAK,CACT,IAAIG,EAAO,KAAK,QAAQ,OAAOH,CAAG,EAClC,OAAOG,EAAOA,EAAK,QAAU,IACjC,CAWA,SAAST,EAAMU,EAAQC,EAAO,GAAI,CAC9B,IAAIL,EAAM,KAAK,QAAQ,WAAWN,EAAMU,EAAQC,CAAI,EACpD,GAAIL,GAAO,KACP,MAAM,IAAI,WAAW,oCAAoC,EAC7D,OAAOA,CACX,CASA,eAAeM,EAAKvD,EAAO,CACvB,OAAOwD,GAAe,KAAMxD,GAAS,KAAK,MAAOuD,CAAG,CACxD,CAMA,UAAUE,EAAMC,EAAO,CACnB,OAAOC,GAAQ,KAAM,GAAIF,EAAM,GAAOC,GAAS,IAAI,eAAe,OAAO,CAAC,CAC9E,CAIA,UAAUE,EAAMF,EAAO,CACnB,OAAOC,GAAQ,KAAMC,EAAM,KAAM,GAAMF,GAAS,IAAI,eAAe,OAAO,CAAC,CAC/E,CASA,sBAAsBG,EAAO,CACzB,OAAOC,GAAsB,KAAMD,CAAK,CAC5C,CAKA,SAAU,CACD,KAAK,UAEVE,GAAa,IAAI,EACjB,KAAK,mBAAmB,EACpB,KAAK,SACL,KAAK,QAAQ,OAAO,KAAK,MAAM,IAAK,CAAC,EAAG5E,GAAgB,IAAI,EAAG,IAAI,EACnE,KAAK,IAAI,YAAc,IAElB,KAAK,IAAI,YACd,KAAK,IAAI,WAAW,YAAY,KAAK,GAAG,EAE5C,KAAK,QAAQ,QAAQ,EACrB,KAAK,QAAU,KACf6E,GAAiB,EACrB,CAMA,IAAI,aAAc,CACd,OAAO,KAAK,SAAW,IAC3B,CAIA,cAAcN,EAAO,CACjB,OAAOO,GAAc,KAAMP,CAAK,CACpC,CAIA,mBAAoB,CAChB,IAAIvB,EAAM,KAAK,aAAa,EAC5B,OAAKA,EAEE+B,IAAU,KAAK,KAAK,WAAa,IACpCC,GAAkB,KAAK,IAAI,aAAa,GAAK,KAAK,KAAOC,GAA2B,KAAMjC,CAAG,GAAKA,EAF3F,CAAE,UAAW,KAAM,YAAa,EAAG,WAAY,KAAM,aAAc,CAAE,CAGpF,CAIA,cAAe,CACX,OAAO,KAAK,KAAK,aAAa,CAClC,CACJ,EACA1D,GAAW,UAAU,SAAW,SAAU4F,EAAI,CAC1C,IAAIC,EAAsB,KAAK,OAAO,oBAClCA,EACAA,EAAoB,KAAK,KAAMD,CAAE,EAEjC,KAAK,YAAY,KAAK,MAAM,MAAMA,CAAE,CAAC,CAC7C,EACA,SAASnF,GAAe2C,EAAM,CAC1B,IAAI0C,EAAQ,OAAO,OAAO,IAAI,EAC9B,OAAAA,EAAM,MAAQ,cACdA,EAAM,gBAAkB,OAAO1C,EAAK,QAAQ,EAC5CA,EAAK,SAAS,aAAcY,GAAS,CAGjC,GAFI,OAAOA,GAAS,aAChBA,EAAQA,EAAMZ,EAAK,KAAK,GACxBY,EACA,QAAS+B,KAAQ/B,EACT+B,GAAQ,QACRD,EAAM,OAAS,IAAM9B,EAAM+B,CAAI,EAC1BA,GAAQ,QACbD,EAAM,OAASA,EAAM,MAAQA,EAAM,MAAQ,IAAM,IAAM9B,EAAM+B,CAAI,EAC5D,CAACD,EAAMC,CAAI,GAAKA,GAAQ,mBAAqBA,GAAQ,aAC1DD,EAAMC,CAAI,EAAI,OAAO/B,EAAM+B,CAAI,CAAC,EAEhD,CAAC,EACID,EAAM,YACPA,EAAM,UAAY,MACf,CAACE,GAAW,KAAK,EAAG5C,EAAK,MAAM,IAAI,QAAQ,KAAM0C,CAAK,CAAC,CAClE,CACA,SAASxF,GAAoB8C,EAAM,CAC/B,GAAIA,EAAK,WAAY,CACjB,IAAI6C,EAAM,SAAS,cAAc,KAAK,EACtCA,EAAI,UAAY,wBAChBA,EAAI,aAAa,mBAAoB,MAAM,EAC3CA,EAAI,aAAa,MAAO,EAAE,EAC1B7C,EAAK,cAAgB,CAAE,IAAA6C,EAAK,KAAMD,GAAW,OAAO5C,EAAK,MAAM,UAAU,KAAM6C,EAAK,CAAE,IAAK,GAAM,MAAO7C,EAAK,UAAW,CAAC,CAAE,CAC/H,MAEIA,EAAK,cAAgB,IAE7B,CACA,SAAS/C,GAAY+C,EAAM,CACvB,MAAO,CAACA,EAAK,SAAS,WAAYY,GAASA,EAAMZ,EAAK,KAAK,IAAM,EAAK,CAC1E,CACA,SAASZ,GAAwB0D,EAAMC,EAAM,CACzC,IAAIC,EAAQ,KAAK,IAAIF,EAAK,QAAQ,YAAYA,EAAK,IAAI,EAAGC,EAAK,QAAQ,YAAYA,EAAK,IAAI,CAAC,EAC7F,OAAOD,EAAK,QAAQ,MAAME,CAAK,GAAKD,EAAK,QAAQ,MAAMC,CAAK,CAChE,CACA,SAAS7F,GAAe6C,EAAM,CAC1B,IAAIiD,EAAS,OAAO,OAAO,IAAI,EAC/B,SAASC,EAAIC,EAAK,CACd,QAASxC,KAAQwC,EACR,OAAO,UAAU,eAAe,KAAKF,EAAQtC,CAAI,IAClDsC,EAAOtC,CAAI,EAAIwC,EAAIxC,CAAI,EACnC,CACA,OAAAX,EAAK,SAAS,YAAakD,CAAG,EAC9BlD,EAAK,SAAS,YAAakD,CAAG,EACvBD,CACX,CACA,SAASvE,GAAiB0E,EAAGC,EAAG,CAC5B,IAAIC,EAAK,EAAGC,EAAK,EACjB,QAAS5C,KAAQyC,EAAG,CAChB,GAAIA,EAAEzC,CAAI,GAAK0C,EAAE1C,CAAI,EACjB,MAAO,GACX2C,GACJ,CACA,QAASE,KAAKH,EACVE,IACJ,OAAOD,GAAMC,CACjB,CACA,SAASvG,GAAoBmD,EAAQ,CACjC,GAAIA,EAAO,KAAK,OAASA,EAAO,KAAK,mBAAqBA,EAAO,KAAK,kBAClE,MAAM,IAAI,WAAW,qEAAqE,CAClG,CCxwLA,SAAgBsD,GACdC,EACAC,EACG,CACH,OAAAD,EAAO,KAAO,CACZ,QAAS,iBACT,MAAO,SACP,GAAGC,GAGED,ECVT,IAAaE,GAAgD,CAC3D,KAAA,CAAOC,EAAMC,EAAGC,EAAOC,IAAS,CAE9B,IAAMC,EAAQJ,EAAK,MAEnB,MAAI,gBAAgB,KAAKI,CAAA,EAGhBA,EAGFF,EAAM,KAAKE,EAAO,CAAE,GAAGD,EAAM,OAAQ,CAAA,EAAI,GAElD,OAAA,CAASH,EAAMC,EAAGC,EAAOC,IAAS,CAChC,IAAME,EAASL,EAAK,QAAUE,EAAM,QAAQ,QAAU,IAChDI,EAAOJ,EAAM,MAAM,QAAA,EACnBK,EAAUL,EAAM,cAAcC,CAAA,EAChCC,EAAQG,EAAQ,KAAKF,EAASA,CAAA,EAClC,OAAAD,GAASG,EAAQ,KACfL,EAAM,kBAAkBF,EAAM,CAC5B,OAAQI,EACR,MAAOC,EACP,GAAGE,EAAQ,QAAA,EACZ,CAAC,EAEJH,GAASG,EAAQ,KAAKF,EAASA,CAAA,EAC/BC,EAAA,EACOF,GAET,SAAA,CAAWJ,EAAMC,EAAGC,EAAOC,IAAS,CAClC,IAAME,EAASL,EAAK,QAAUE,EAAM,QAAQ,UAAY,IAClDI,EAAOJ,EAAM,MAAM,UAAA,EACnBK,EAAUL,EAAM,cAAcC,CAAA,EAChCC,EAAQG,EAAQ,KAAKF,CAAA,EACzB,OAAAD,GAASG,EAAQ,KACfL,EAAM,kBAAkBF,EAAM,CAC5B,OAAQI,EACR,MAAOC,EACP,GAAGE,EAAQ,QAAA,EACZ,CAAC,EAEJH,GAASG,EAAQ,KAAKF,CAAA,EACtBC,EAAA,EACOF,ICxBEI,GAAgBC,GAAY,CAAA,EAAkB,YAAA,EAG9CC,GAAiBD,GAAY,CAAA,EAAmB,aAAA,EAIhDE,GAAeF,GAAY,CAAA,EAAmB,WAAA,EAG9CG,GAAYH,GAAY,CAAA,EAAc,QAAA,EAGtCI,GAAgBJ,GAAY,CAAA,EAAmB,YAAA,EAG/CK,GAAkBL,GAAY,CAAA,EAAgB,cAAA,EAG9CM,GAAmBN,GAC9B,CAAA,EACA,eAAA,EAMWO,GAAcP,GAAY,CAAA,EAAkB,UAAA,EAK5CQ,GAAcR,GAAY,CAAA,EAAkB,UAAA,EAG5CS,GAA+CT,GAC1DU,GAAA,EAAU,IAAIC,EAAA,EAAa,IAAIC,EAAA,EAC/B,QAAA,EAIWC,GAA4Bb,GACvC,CACE,SAAUV,GACV,OAAQ,CAAA,GAEV,wBAAA,ECzDWwB,GAAcC,GAAY,aAAA,EAIvC,SAAgBC,GAAOC,EAAmC,CACxD,IAAM7B,EAA0B8B,IAC9BA,EAAI,OAAOJ,EAAA,EAEJ,UACL,MAAMG,EAAUC,CAAA,EAChBA,EAAI,KAAKJ,EAAA,EAET,IAAa,CACXI,EAAI,WAAWJ,EAAA,KAKrB,OAAA3B,GAASC,EAAQ,CACf,YAAa,QAAA,CACd,EAEMA,ECRT,IAAa+B,GAAYJ,GAAY,WAAA,EAMrC,SAAgBK,GAAKC,EAAgC,CACnD,IAAMjC,EAA0B8B,IAC9BA,EACG,OAAOf,GAAWkB,CAAA,EAClB,OAAOhB,GAAiB,CAAA,CAAE,EAC1B,OAAOC,GAAkB,CAAA,CAAE,EAC3B,OAAOF,GAAe,CAAA,CAAE,EACxB,OAAOG,GAAa,CAAA,CAAE,EACtB,OAAOC,GAAa,CAAA,CAAE,EACtB,OAAOK,GAA2B,CACjC,SAAUvB,GACV,OAAQ,CAAA,EACT,EACA,OAAOmB,GAAWC,GAAA,EAAU,IAAIC,EAAA,EAAa,IAAIC,EAAA,CAAgB,EACjE,OAAOV,GAAc,CAACY,EAAA,CAAY,EAClC,OAAOK,EAAA,EAEH,SAAY,CACjB,MAAMD,EAAI,WAAWhB,EAAA,EACrB,IAAMoB,EAAUJ,EAAI,IAAIL,EAAA,EACxB,OAAAK,EAAI,IACFT,GACAC,GAAA,EAAU,IAAIC,EAAA,EAAa,IAAIC,GAAiBU,CAAA,CAAQ,EAG1DJ,EAAI,KAAKC,EAAA,EAET,IAAa,CACXD,EACG,OAAOf,EAAA,EACP,OAAOE,EAAA,EACP,OAAOC,EAAA,EACP,OAAOF,EAAA,EACP,OAAOG,EAAA,EACP,OAAOC,EAAA,EACP,OAAOK,EAAA,EACP,OAAOJ,EAAA,EACP,OAAOP,EAAA,EACP,WAAWiB,EAAA,KAIpB,OAAAhC,GAASC,EAAQ,CACf,YAAa,MAAA,CACd,EAEMA,EC7DT,IAAamC,GAAcR,GAAY,aAAA,EAI1BS,GAAiBxB,GAAY,CAAA,EAAmB,aAAA,EAGhDyB,GAAYzB,GAAY,CAAA,EAAc,QAAA,EAGtC0B,GAAW1B,GAAY,CAAA,EAAmC,OAAA,EAG1D2B,GAAW3B,GAAY,CAAA,EAAmC,OAAA,EAEvE,SAAS4B,GAAkDC,EAAS,CAClE,MAAO,CACL,GAAGA,EACH,SAAUA,EAAE,UAAU,IAAKC,IAAU,CAAE,SAAUD,EAAE,SAAU,GAAGC,GAAM,GAQ1E,IAAaC,GAA0Bb,IACrCA,EACG,OAAOO,GAAW,CAAA,CAAE,EACpB,OAAOC,GAAU,CAAA,CAAE,EACnB,OAAOC,GAAU,CAAA,CAAE,EACnB,OAAOH,GAAgB,CAACL,EAAA,CAAU,EAClC,OAAOI,EAAA,EAEH,SAAY,CACjB,MAAML,EAAI,WAAWM,EAAA,EAErB,IAAMQ,EAASd,EAAI,IAAIT,EAAA,EAGjBwB,EAFgBf,EAAI,IAAIZ,EAAA,EAEE,OAAA,CAC7B4B,EAAmBC,IAClBD,EAAI,IAAIC,EAAK,OAAQA,EAAK,OAAA,EAC5BH,CAAA,EAEFd,EAAI,IAAIT,GAAWwB,CAAA,EAQnB,IAAMF,EAAS,IAAIK,GAAO,CAAE,MANd,OAAO,YACnBlB,EAAI,IAAIQ,EAAA,EAAU,IAAA,CAAK,CAACW,EAAKR,CAAA,IAAO,CAACQ,EAAKT,GAAeC,CAAA,CAAE,CAAC,CAAC,EAK5B,MAHrB,OAAO,YACnBX,EAAI,IAAIS,EAAA,EAAU,IAAA,CAAK,CAACU,EAAKR,CAAA,IAAO,CAACQ,EAAKT,GAAeC,CAAA,CAAE,CAAC,CAAC,EAErB,EAE1C,OAAAX,EAAI,IAAIO,GAAWM,CAAA,EAEnBb,EAAI,KAAKK,EAAA,EAET,IAAa,CACXL,EACG,OAAOO,EAAA,EACP,OAAOC,EAAA,EACP,OAAOC,EAAA,EACP,OAAOH,EAAA,EACP,WAAWD,EAAA,KAKpBpC,GAAS4C,GAAQ,CACf,YAAa,QAAA,CACd,EC/CD,IAAaO,GAAb,KAA4B,2BAQhBpB,GAAa,CACrB,KAAAqB,GAAYrB,kBAoDc,CAC1B,GAAI,KAAAqB,IAAa,KAAM,MAAMC,GAAA,EAC7B,IAAMtB,EAAM,KAAAqB,GACNE,EAAsB,CAAA,EACtBC,EAAM,KAAK,IAAI,KAAK,IAAA,EAEpBC,EAAuB,CAC3B,IAAA,IAAW,CACT,IAAMC,EAAUC,GAAc,GAAGJ,CAAA,EAC3BK,EAAO5B,EAAI,IAAInB,EAAA,EACrB,OAAO6C,EAAQE,EAAK,MAAOA,EAAK,SAAUA,CAAA,GAE5C,OAASC,IACPN,EAAS,KAAKM,CAAA,EACPJ,GAET,KAAMK,EAAK,KAAK,IAAA,GASlB,SAASA,EAAKC,EAA6BC,EAAe,CACxD,IAAMC,EAAMT,EAAIO,CAAA,EAChB,OAAAR,EAAS,KAAKU,EAAID,CAAA,CAAQ,EACnBP,EAGT,OAAOA,GA1FTS,GAAa,IAAIC,GAGjBd,GAAmB,KAOnB,IAAI,KAAM,CACR,OAAO,KAAAA,GAIT,OAAUlD,EAAiBM,EAAe,CACxC,IAAMsD,EAAQ5D,EAAK,OAAO,KAAA+D,GAAgB,QAAA,EAC1C,OAAAH,EAAM,IAAItD,CAAA,EACHsD,EAOT,IAAIA,EAAuC,CACzC,OAAO,KAAAG,GAAgB,IAAIH,CAAA,EAAO,IAAA,EAOpC,OAAOA,EAAmC,CACxC,OAAO,KAAAG,GAAgB,OAAOH,CAAA,EAOhC,KAAKA,EAA6BC,EAAwB,CACxD,GAAI,KAAAX,IAAa,KAAM,MAAMC,GAAA,EAG7B,IAAMO,EADM,KAAK,IAAIE,CAAA,EACDC,CAAA,EACdJ,EAAO,KAAAP,GAAU,IAAIxC,EAAA,EAC3B,OAAOgD,EAAQD,EAAK,MAAOA,EAAK,SAAUA,CAAA,EAI5C,OAAOC,EAAkB,CACvB,GAAI,KAAAR,IAAa,KAAM,MAAMC,GAAA,EAC7B,IAAMM,EAAO,KAAAP,GAAU,IAAIxC,EAAA,EAC3B,OAAOgD,EAAQD,EAAK,MAAOA,EAAK,SAAUA,CAAA,IAyC9C,SAAgBQ,GAA4BjB,EAAM,SAAqB,CACrE,OAAOrC,IAAA,IAAA,IAAyB,IAAkBqC,CAAA,EAIpD,IAAakB,GAAcvD,GAAY,IAAIsC,GAAkB,UAAA,EAIhDkB,GAAmBxD,GAAY,CAACuB,EAAA,EAAc,eAAA,EAG9CkC,GAAgB1C,GAAY,eAAA,EAM5B0B,GAA4BvB,GAAQ,CAC/C,IAAMiC,EAAM,IAAIb,GAChB,OAAAa,EAAI,OAAOjC,CAAA,EACXA,EACG,OAAOqC,GAAaJ,CAAA,EACpB,OAAOK,GAAkB,CAACjC,EAAA,CAAY,EACtC,OAAOkC,EAAA,EACH,UACL,MAAMvC,EAAI,WAAWsC,EAAA,EAErBtC,EAAI,KAAKuC,EAAA,EAET,IAAa,CACXvC,EAAI,OAAOqC,EAAA,EAAa,OAAOC,EAAA,EAAkB,WAAWC,EAAA,KAKlEtE,GAASsD,GAAU,CACjB,YAAa,UAAA,CACd,EChJD,SAASiB,GAAmBC,EAAiC,CAO3D,OAAAA,EAAO,UANiBd,GACtBe,GACAC,GACAC,GACAC,EAAA,EAGKJ,EAKT,IAAaK,GAAb,KAA2B,2BAOf9C,GAAa,CACrB,KAAAqB,GAAYrB,YAWPyC,IACL,KAAAM,GAAa,KAAKN,CAAA,EAElB,IAAa,CACX,KAAAM,GAAe,KAAAA,GAAa,OAAQC,GAASA,IAASP,CAAA,yBAKvCQ,GAAkD,CACnE,IAAMC,EAAyB,CAAA,EAC/B,cAAO,QAAQD,CAAA,EAAS,QAAA,CAAS,CAAC9B,EAAKU,CAAA,IAAa,CAClD,GAAI,OAAOA,GAAY,WAAY,CACjC,IAAMsB,EAAa,CACjB,IAAAhC,EACA,MAAA,IAAaU,GAGf,KAAAkB,GAAa,KAAKI,CAAA,EAClBD,EAAO,KAAA,IAAW,CAChB,KAAAH,GAAe,KAAAA,GAAa,OAAQC,GAASA,IAASG,CAAA,SAGxD,KAAAJ,GAAa,KAAKlB,CAAA,EAClBqB,EAAO,KAAA,IAAW,CAChB,KAAAH,GAAe,KAAAA,GAAa,OAAQC,GAASA,IAASnB,CAAA,MAK5D,IAAa,CACXqB,EAAO,QAASE,GAAOA,EAAA,CAAI,2BAKT,CACpB,IAAMC,EAAOb,GAAmBc,EAAA,EAChC,OAAO,KAAK,gBAAgBD,CAAA,kBAIhB,CACZ,IAAMZ,EAAuC,CAAA,EAC7C,YAAAM,GAAa,QAASC,GAAS,CAC7BP,EAAOO,EAAK,GAAA,EAAO,CAAC,GAAIP,EAAOO,EAAK,GAAA,GAAQ,CAAA,EAAKA,CAAA,IAGX,OAAO,YAC7C,OAAO,QAAQP,CAAA,EAAQ,IAAA,CAAK,CAACtB,EAAKoC,CAAA,IAAW,CAC3C,IAAMC,EAAcD,EAAM,KAAA,CACvBE,EAAGC,KAAOA,EAAE,UAAY,KAAOD,EAAE,UAAY,GAAA,EAahD,MAAO,CAACtC,EAVF,CAAoB5C,EAAOoF,EAAU/B,IAAS,CAClD,IAAM5B,EAAM,KAAAqB,GACZ,GAAIrB,GAAO,KAAM,MAAM4D,GAAA,EAKvB,OAFgBjC,GAAc,GADb6B,EAAY,IAAKR,GAASA,EAAK,MAAMhD,CAAA,CAAI,CAAC,EAG5CzB,EAAOoF,EAAU/B,CAAA,EAGrB,GACb,GAlFNP,GAAmB,KAEnB0B,GAAwB,CAAA,EAOxB,IAAI,KAAM,CACR,OAAO,KAAA1B,KAgFEwC,GAAY/E,GAAY,IAAIgE,GAAiB,QAAA,EAI7CgB,GAAiBhF,GAAY,CAACuB,EAAA,EAAc,aAAA,EAG5C0D,GAAclE,GAAY,aAAA,EAM1B4C,GAA0BzC,GAAQ,CAC7C,IAAMgE,EAAK,IAAIlB,GACf,OAAAkB,EAAG,OAAOhE,CAAA,EACVA,EACG,OAAO6D,GAAWG,CAAA,EAClB,OAAOF,GAAgB,CAACzD,EAAA,CAAY,EACpC,OAAO0D,EAAA,EAEH,UACL,MAAM/D,EAAI,WAAW8D,EAAA,EAErB9D,EAAI,KAAK+D,EAAA,EAET,IAAa,CACX/D,EAAI,OAAO6D,EAAA,EAAW,OAAOC,EAAA,EAAgB,WAAWC,EAAA,KCvJjDE,GAAcpE,GAAY,aAAA,EAEjCqE,IAAA,IAAoB,CACxB,MAAMN,GAAA,IAIKO,GAAYrF,GAAYoF,GAAY,QAAA,EAIpCE,GAAiBtF,GAAY,CAAA,EAAmB,aAAA,EAMhDuF,GAA0BrE,IACrCA,EACG,OAAOmE,GAAWD,EAAA,EAClB,OAAOE,GAAgB,CAAC/D,EAAA,CAAY,EACpC,OAAO4D,EAAA,EAEH,SAAY,CACjB,MAAMjE,EAAI,WAAWoE,EAAA,EACrB,IAAMtD,EAASd,EAAI,IAAIT,EAAA,EACjBsB,EAASb,EAAI,IAAIO,EAAA,EAEvB,OAAAP,EAAI,IAAImE,GAAWG,GAAY,OAAOzD,EAAQC,CAAA,CAAO,EACrDd,EAAI,KAAKiE,EAAA,EACT,IAAa,CACXjE,EAAI,OAAOmE,EAAA,EAAW,OAAOC,EAAA,EAAgB,WAAWH,EAAA,KAK9DhG,GAASoG,GAAQ,CACf,YAAa,QAAA,CACd,ECtCD,IAAaE,GAAkB1E,GAAY,iBAAA,EAI9B2E,GAAqB1F,GAChC,CAAA,EACA,iBAAA,EAGI2F,IAAA,IAAoB,CACxB,MAAMb,GAAA,IAIKc,GAAgB5F,GAC3B2F,GACA,YAAA,EAOWE,GAA8B3E,IACzCA,EACG,OAAO0E,GAAeD,EAAA,EACtB,OAAOD,GAAoB,CAACnE,EAAA,CAAY,EACxC,OAAOkE,EAAA,EAEH,SAAY,CACjB,MAAMvE,EAAI,WAAWwE,EAAA,EACrB,IAAM1D,EAASd,EAAI,IAAIT,EAAA,EACjBsB,EAASb,EAAI,IAAIO,EAAA,EAEvB,OAAAP,EAAI,IAAI0E,GAAeE,GAAgB,OAAO/D,EAAQC,CAAA,CAAO,EAC7Dd,EAAI,KAAKuE,EAAA,EAET,IAAa,CACXvE,EACG,OAAO0E,EAAA,EACP,OAAOF,EAAA,EACP,WAAWD,EAAA,KAKpBtG,GAAS0G,GAAY,CACnB,YAAa,YAAA,CACd,EC/BD,IAAaE,GAAkB/F,GAAY,GAAoB,cAAA,EAGlDgG,GAAwBhG,GAClC6B,GAAMA,EACP,cAAA,EAKWoE,GAAsBjG,GACjC,CAAA,EACA,kBAAA,EAIWkG,GAAmBnF,GAAY,kBAAA,EAG5C,SAAgBoF,GACdC,EACAb,EACAxD,EACA,CACA,GAAI,OAAOqE,GAAiB,SAAU,OAAOb,EAAOa,CAAA,EAEpD,GAAIA,EAAa,OAAS,OACxB,OAAOC,GAAU,WAAWtE,CAAA,EAAQ,MAAMqE,EAAa,GAAA,EAEzD,GAAIA,EAAa,OAAS,OACxB,OAAOE,GAAK,SAASvE,EAAQqE,EAAa,KAAA,EAE5C,MAAMG,GAAaH,CAAA,EAGrB,IAAMI,GAAM,IAAIC,GAAU,wBAAA,EAMbC,GAA+BxF,IAC1CA,EACG,OAAO6E,GAAiB,EAAA,EACxB,OAAO9F,GAAgB,CAAA,CAAE,EACzB,OAAO+F,GAAwBnE,GAAMA,CAAA,EACrC,OAAOoE,GAAqB,CAC3Bd,GACAM,GACAhC,GACAwB,GACD,EACA,OAAOiB,EAAA,EAEH,SAAY,CACjB,MAAMhF,EAAI,WAAW+E,EAAA,EAErB,IAAMlE,EAASb,EAAI,IAAIO,EAAA,EACjB8D,EAASrE,EAAI,IAAImE,EAAA,EACjBsB,EAAQzF,EAAI,IAAId,EAAA,EAChBwG,EAAkB1F,EAAI,IAAI8E,EAAA,EAC1Ba,EAAe3F,EAAI,IAAIb,EAAA,EAEvByG,EAAMX,GADSjF,EAAI,IAAI6E,EAAA,EACIR,EAAQxD,CAAA,EACnCmD,EAAKhE,EAAI,IAAI6D,EAAA,EACbgC,EAAoB7B,EAAG,cAAA,EAEvB8B,EAAU,CACd,GAAGH,EACH,IAAII,GAAO,CACT,IAAAT,GACA,MAAO,CACL,KAAA,IAAY,CAAA,EAGZ,MAAA,CAAQU,EAAKC,EAAQC,EAAWC,IAAa,CAC3CnG,EAAI,IAAIjB,GAAgBoH,CAAA,IAG7B,EACDC,GAAiB,CAAE,MAAAX,CAAA,CAAO,EAC1BhD,GAAauB,EAAG,MAAA,CAAO,GAGzBhE,EAAI,IAAIb,GAAiB2G,CAAA,EAEzB,IAAM1F,EAAUsF,EAAgB,CAC9B,OAAA7E,EACA,IAAA+E,EACA,QAAAE,EACD,EAEKvH,EAAQ8H,GAAY,OAAOjG,CAAA,EACjC,OAAAJ,EAAI,IAAIjB,GAAgBR,CAAA,EACxByB,EAAI,KAAKgF,EAAA,EAET,IAAa,CACXa,EAAA,EACA7F,EACG,OAAO6E,EAAA,EACP,OAAO9F,EAAA,EACP,OAAO+F,EAAA,EACP,OAAOC,EAAA,EACP,WAAWC,EAAA,KAKpB/G,GAASuH,GAAa,CACpB,YAAa,aAAA,CACd,EC1HD,IAAac,GAAgBxH,GAAY,CAAA,EAAmB,WAAA,EAI/CyH,GAAqBzH,GAAY,CAACuB,EAAA,EAAc,gBAAA,EAGhDmG,GAAkB3G,GAAY,gBAAA,EAM9B4G,GAA6BzG,IACxCA,EACG,OAAOsG,GAAe,CAAA,CAAE,EACxB,OAAOC,GAAoB,CAAClG,EAAA,CAAY,EACxC,OAAOmG,EAAA,EAEH,UACL,MAAMxG,EAAI,WAAWuG,EAAA,EAErBvG,EAAI,KAAKwG,EAAA,EAET,IAAa,CACXxG,EACG,OAAOsG,EAAA,EACP,OAAOC,EAAA,EACP,WAAWC,EAAA,KAKpBvI,GAASwI,GAAW,CAClB,YAAa,WAAA,CACd,EC5BD,IAAaC,GAAkB7G,GAAY,iBAAA,EAI9B8G,GAAqB7H,GAChC,CAAA,EACA,iBAAA,EAIW8H,GAAuB9H,GAClC,CAAA,EACA,mBAAA,EAMW+H,GAAU/H,GAAY,KAAkB,MAAA,EAGxCgI,GAAahI,GAAY,KAAgC,SAAA,EAIzDiI,GAAejI,GAC1B,CAAA,EACA,WAAA,EAGF,SAASkI,GAAoBC,EAAYjH,EAAU,CACjD,IAAMkH,EAAY,SAAS,cAAc,KAAA,EACzCA,EAAU,UAAY,WACtBD,EAAK,YAAYC,CAAA,EACjBlH,EAAI,IAAI8G,GAAYI,CAAA,EAEpB,IAAMC,EAAQnH,EAAI,IAAI+G,EAAA,EACtB,cAAO,QAAQI,CAAA,EAAO,QAAA,CAAS,CAAChG,EAAK1C,CAAA,IACnCyI,EAAU,aAAa/F,EAAK1C,CAAA,CAAM,EAG7ByI,EAGT,SAASE,GAAeC,EAAc,CACpCA,EAAI,UAAU,IAAI,QAAA,EAClBA,EAAI,aAAa,OAAQ,SAAA,EAG3B,IAAMlG,GAAM,IAAIoE,GAAU,qBAAA,EAMb+B,GAA8BtH,IACzCA,EACG,OAAO6G,GAAS,SAAS,IAAA,EACzB,OAAOhI,GAAe,CAAA,CAAE,EACxB,OAAO+H,GAAsB,CAAA,CAAE,EAC/B,OAAOE,GAAY,IAAA,EACnB,OAAOC,GAAc,CAAA,CAAE,EACvB,OAAOJ,GAAoB,CAAC3B,GAAkBwB,EAAA,CAAgB,EAC9D,OAAOE,EAAA,EAEH,SAAY,CACjB,MAAM1G,EAAI,KAAKC,EAAA,EAEf,IAAMgH,EAAOjH,EAAI,IAAI6G,EAAA,GAAY,SAAS,KACpCU,EAAK,OAAON,GAAS,SAAW,SAAS,cAAcA,CAAA,EAAQA,EAErEjH,EAAI,OAAOb,GAAkBqI,GAAO,CAClC,IAAIzB,GAAO,CACT,IAAA5E,GACA,KAAOmG,GAAe,CACpB,IAAMJ,EAAYK,EAAKP,GAAoBO,EAAIvH,CAAA,EAAO,OAStD,OAPM,IAAkB,CACtB,GAAIkH,GAAaK,EAAI,CACnB,IAAMpH,EAASmH,EAAW,IAC1BC,EAAG,aAAaL,EAAW/G,CAAA,EAC3B+G,EAAU,YAAY/G,CAAA,KAG1B,EACO,CACL,QAAA,IAAe,CACT+G,GAAW,YACbA,GAAW,WAAW,aAAaI,EAAW,IAAKJ,CAAA,EAErDA,GAAW,OAAA,KAIlB,EACD,GAAGM,CAAA,CACJ,EAED,MAAMxH,EAAI,WAAW2G,EAAA,EAErB,IAAMpI,EAAQyB,EAAI,IAAIjB,EAAA,EAChBqB,EAAUJ,EAAI,IAAI4G,EAAA,EAGlBhF,EAAO,IAAI6F,GAAWF,EAAY,CACtC,MAAAhJ,EACA,UAJgB,OAAO,YAAYyB,EAAI,IAAIX,EAAA,CAAY,EAKvD,UAJgB,OAAO,YAAYW,EAAI,IAAIV,EAAA,CAAY,EAKvD,gBAAA,CAAkByC,EAAOH,EAAM8F,KAC7B1H,EACG,IAAIsG,EAAA,EACJ,KAAA,CAAM7C,EAAGC,KAAOA,EAAE,UAAY,KAAOD,EAAE,UAAY,GAAA,EACnD,IAAK7C,GAASA,EAAK,GAAA,EACnB,QAAS+G,GAAW,CACnB5F,EAAQ4F,EAAO5F,EAAOH,EAAM8F,CAAA,IAGzB3F,GAET,GAAG3B,EACJ,EACD,OAAAgH,GAAexF,EAAK,GAAA,EACpB5B,EAAI,IAAInB,GAAe+C,CAAA,EACvB5B,EAAI,KAAK0G,EAAA,EAET,IAAa,CACX9E,GAAM,QAAA,EACN5B,EACG,OAAO6G,EAAA,EACP,OAAOhI,EAAA,EACP,OAAO+H,EAAA,EACP,OAAOE,EAAA,EACP,OAAOC,EAAA,EACP,OAAOJ,EAAA,EACP,WAAWD,EAAA,KAKpBzI,GAASqJ,GAAY,CACnB,YAAa,YAAA,CACd,ECjJD,IAAYM,IAAL,SAAAA,EAAA,CAEL,OAAAA,EAAA,KAAA,OAEAA,EAAA,SAAA,WAEAA,EAAA,QAAA,UAEAA,EAAA,UAAA,YAEAA,EAAA,UAAA,oBAgBWC,GAAb,MAAaA,EAAO,qCA6HUC,EAAS,MACnC,KAAAC,GAAwBD,EAEjB,0BAKkBE,IACzB,KAAAC,GAAuBD,EAChB,kBAIUjI,IACjB,KAAAmI,GAAoB,KAAKnI,CAAA,EAClB,wBAIgBA,IACvB,KAAAmI,GAAsB,KAAAA,GAAoB,OAAQvH,GAAMA,IAAMZ,CAAA,EACvD,eAIO+F,GAA+C,CAC7D,IAAMqC,EAAW,CAACrC,CAAA,EAAS,KAAA,EAC3B,OAAAqC,EAAS,KAAA,EAAO,QAASjK,GAAW,CAClC,KAAAkK,GAAqB,IAAIlK,EAAQ,CAC/B,IAAK,OACL,QAAS,OACT,QAAS,OACV,IAGC,KAAAmK,KAAiBT,GAAa,SAChC,KAAAU,GAAcH,EAAU,KAAAC,EAAA,EAEnB,kBAIS,MAChBtC,GAEI,KAAAuC,KAAiBT,GAAa,UAChC,QAAQ,KACN,4HAAA,EAEK,IAAI,QAASW,GAAY,CAC9B,WAAA,IAAiB,CACfA,EAAQ,KAAK,OAAOzC,CAAA,CAAQ,GAC3B,EAAA,MAIP,MAAM,KAAA0C,GAAc,CAAC1C,CAAA,EAAS,KAAA,EAAQ,EAAA,EAC/B,kBAKS,SACZ,KAAAuC,KAAiBT,GAAa,SAAiB,MAE/C,KAAAS,KAAiBT,GAAa,SAAS,MAAM,KAAK,QAAA,EAEtD,KAAAa,GAAgBb,GAAa,QAAA,EAE7B,KAAAc,GAAA,EACA,KAAAJ,GAAc,CAAC,GAAG,KAAAF,GAAqB,KAAA,CAAM,EAAG,KAAAA,EAAA,EAEhD,MAAM,QAAQ,IACZ,CACE,KAAAO,GAAwB,KAAAC,EAAA,EACxB,KAAAD,GAAwB,KAAAP,EAAA,CAAqB,EAC7C,KAAA,CAAM,EAGV,KAAAK,GAAgBb,GAAa,OAAA,EACtB,mBAKU,MAAOiB,EAAe,KAErC,KAAAR,KAAiBT,GAAa,WAC9B,KAAAS,KAAiBT,GAAa,UAEvB,KAEL,KAAAS,KAAiBT,GAAa,SACzB,IAAI,QAASW,GAAY,CAC9B,WAAA,IAAiB,CACfA,EAAQ,KAAK,QAAQM,CAAA,CAAa,GACjC,EAAA,KAIHA,IAAc,KAAAX,GAAsB,CAAA,GAExC,KAAAO,GAAgBb,GAAa,SAAA,EAC7B,MAAM,KAAAY,GAAc,CAAC,GAAG,KAAAJ,GAAqB,KAAA,CAAM,EAAGS,CAAA,EACtD,MAAM,KAAAC,GAAA,EAEN,KAAAL,GAAgBb,GAAa,SAAA,EACtB,kBAKamB,GAA4BA,EAAO,KAAA1H,EAAA,mBAKlD,KAAA0G,GAME,CAAC,GAAG,KAAAa,GAAqB,OAAA,EAAU,GAAG,KAAAR,GAAqB,OAAA,CAAQ,EACvE,IAAA,CAAK,CAAE,IAAApI,CAAA,IAAUA,GAAK,WAAW,KAAA,CAAM,EACvC,OAAQW,GAAsB,EAAQA,CAAE,GAPzC,QAAQ,KACN,2IAAA,EAEK,CAAA,GArPX,OAAO,MAAO,CACZ,OAAO,IAAIkH,GAIbE,GAAmB,GAEnBM,GAAUT,GAAa,KAEvBM,GAA2B,CAAA,EAE3BD,GAAA,IAAA,GAGA/F,GAAsB,IAAIC,GAE1B6G,GAAkB,IAAIC,GAGtBb,GAA8C,IAAI,IAGlDQ,GAA8C,IAAI,IAGlDvH,GAAgB,IAAI6H,GAAI,KAAAhH,GAAiB,KAAA8G,EAAA,EAGzCN,GAAA,IAA+B,CAC7B,IAAMS,EAAerJ,GAAO,MAAOE,GAAQ,CACzC,MAAM,QAAQ,IACZ,KAAAkI,GAAoB,IAAK9E,GAAO,QAAQ,QAAQA,EAAGpD,CAAA,CAAI,CAAC,CAAC,IAGvDoJ,EAAkB,CACtBvI,GACAwD,GACAM,GACApD,GACAkB,GACAgE,GACAjB,GACA8B,GACApH,GAAK,IAAA,EACLiJ,GAEF,KAAAb,GAAcc,EAAiB,KAAAR,EAAA,GAIjCN,GAAA,CAAqBxC,EAA2BuD,IAA6B,CAC3EvD,EAAQ,QAAS5H,GAAW,CAC1B,IAAM8B,EAAM,KAAAqB,GAAU,QACpB,KAAA0G,GAAwB7J,EAAO,KAAO,MAAA,EAElCoL,EAAUpL,EAAO8B,CAAA,EACvBqJ,EAAM,IAAInL,EAAQ,CAAE,IAAA8B,EAAK,QAAAsJ,EAAS,QAAS,OAAW,KAK1Dd,GAAA,CAAqB1C,EAA2B5C,EAAS,KAChD,QAAQ,IACb,CAAC4C,CAAA,EAAS,KAAA,EAAO,IAAI,MAAO5H,GAAW,CAErC,IAAMqL,EADS,KAAAnB,GAAqB,IAAIlK,CAAA,GAChB,QASxB,OARIgF,EAAQ,KAAAkF,GAAqB,OAAOlK,CAAA,EAEtC,KAAAkK,GAAqB,IAAIlK,EAAQ,CAC/B,IAAK,OACL,QAAS,OACT,QAAS,OACV,EAEC,OAAOqL,GAAY,WAAmBA,EAAA,EAEnCA,GACP,EAKNT,GAA4B,SAAY,CACtC,MAAM,QAAQ,IACZ,CAAC,GAAG,KAAAF,GAAqB,QAAA,CAAS,EAAE,IAAI,MAAO,CAACtK,EAAG,CAAE,QAAAiL,CAAA,CAAA,IAC/C,OAAOA,GAAY,WAAmBA,EAAA,EAEnCA,EACP,EAEJ,KAAAX,GAAqB,MAAA,GAIvBH,GAAuBe,GAAyB,CAC9C,KAAAnB,GAAemB,EACf,KAAAvB,GAAqBuB,CAAA,GAIvBb,GAA+BU,GACtB,CAAC,GAAGA,EAAM,QAAA,CAAS,EAAE,IAAI,MAAO,CAAClI,EAAKsI,CAAA,IAAY,CACvD,GAAM,CAAE,IAAAzJ,EAAK,QAAAsJ,CAAA,EAAYG,EACzB,GAAI,CAACH,EAAS,OAEd,IAAMC,EAAU,MAAMD,EAAA,EAEtBD,EAAM,IAAIlI,EAAK,CAAE,IAAAnB,EAAK,QAAAsJ,EAAS,QAAAC,EAAS,IAK5C,IAAI,KAAM,CACR,OAAO,KAAAlI,GAIT,IAAI,QAAS,CACX,OAAO,KAAAgH,KCxIJ,SAASqB,IAAmB,CACjC,MAAO,CACL,MAAO,CACL,SAAUC,EACV,kBAAmBC,EACnB,SAAUC,CACZ,EACA,KAAM,CACJ,SAAUC,EACV,cAAeC,EACf,kBAAmBC,EACnB,cAAeC,EACf,SAAUC,EACV,aAAcD,CAChB,CACF,EAMA,SAASN,EAAcQ,EAAO,CAE5B,IAAMC,EAAO,CACX,KAAM,UACN,QAAS,OACT,WAAY,CAAC,UAAW,CAAC,gBAAiB,cAAc,CAAC,EACzD,SAAU,CAAC,CACb,EACA,KAAK,MACH,CACE,KAAM,OACN,KAAM,KACN,MAAO,GACP,KAAM,CAAC,MAAO,MAAO,UAAW,CAACA,CAAI,CAAC,CACxC,EACAD,CACF,CACF,CAMA,SAASP,GAAoB,CAC3B,KAAK,OAAO,CACd,CAMA,SAASI,GAAmB,CAC1B,IAAMK,EAAO,KAAK,OAAO,EACnBC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZA,EAAK,KAAOD,CACd,CAMA,SAASN,GAAoB,CAEvB,KAAK,KAAK,iBACd,KAAK,OAAO,EACZ,KAAK,KAAK,eAAiB,GAC7B,CAMA,SAASD,EAAaK,EAAO,CAC3B,IAAME,EAAO,KAAK,OAAO,EAAE,QAAQ,2BAA4B,EAAE,EAC3DC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZ,KAAK,KAAKH,CAAK,EACfG,EAAK,MAAQD,EAEb,IAAMD,EAAmCE,EAAK,KAAK,UAAU,CAAC,EACvDF,EAAK,KACLA,EAAK,QACZA,EAAK,SAAS,KAAK,CAAC,KAAM,OAAQ,MAAOC,CAAI,CAAC,EAC9C,KAAK,KAAK,eAAiB,MAC7B,CAMA,SAASR,EAAcM,EAAO,CAC5B,KAAK,MACH,CACE,KAAM,aACN,MAAO,GACP,KAAM,CACJ,MAAO,OACP,YAAa,CAAC,UAAW,CAAC,gBAAiB,aAAa,CAAC,EACzD,UAAW,CAAC,CACd,CACF,EACAA,CACF,EACA,KAAK,OAAO,CACd,CAMA,SAASD,EAAaC,EAAO,CAC3B,IAAME,EAAO,KAAK,OAAO,EACnBC,EAAO,KAAK,MAAM,KAAK,MAAM,OAAS,CAAC,EACtCA,EAAK,KACZ,KAAK,KAAKH,CAAK,EACfG,EAAK,MAAQD,EAGXC,EAAK,KAAK,UAEH,KAAK,CAAC,KAAM,OAAQ,MAAOD,CAAI,CAAC,CAC3C,CAMA,SAASJ,EAAaE,EAAO,CAC3B,KAAK,OAAO,MAAM,KAAK,KAAK,KAAMA,CAAK,EACvC,KAAK,OAAO,KAAK,KAAK,KAAK,KAAMA,CAAK,CACxC,CACF,CAUO,SAASI,GAAeC,EAAS,CACtC,IAAIC,GAAUD,GAAW,CAAC,GAAG,qBAE7B,OAAIC,GAAW,OACbA,EAAS,IAGXC,EAAW,KAAOC,EAEX,CACL,OAAQ,CACN,CAAC,UAAW,KAAM,YAAa,cAAc,EAC7C,CAAC,UAAW;AAAA,EAAM,YAAa,cAAc,EAC7C,CACE,UAAW,IACX,MAAOF,EAAS,OAAY,MAC5B,YAAa,UACf,EACA,CAAC,UAAW,IAAK,YAAa,cAAc,EAC5C,CAAC,QAAS,GAAM,UAAW,IAAK,MAAO,KAAK,CAC9C,EACA,SAAU,CAAC,KAAAG,EAAM,WAAAF,CAAU,CAC7B,EAQA,SAASE,EAAKN,EAAMO,EAAGC,EAAOC,EAAM,CAClC,IAAMC,EAAMV,EAAK,OAAS,GACpBW,EAAUH,EAAM,cAAcC,CAAI,EAClCG,EAAW,IAAI,OAAO,KAAK,IAAIC,GAAcH,EAAK,GAAG,EAAI,EAAG,CAAC,CAAC,EAC9DI,EAAON,EAAM,MAAM,UAAU,EAC/BO,EAAQJ,EAAQ,KAAKC,CAAQ,EAEjC,GAAIZ,EAAK,KAAM,CACb,IAAMgB,EAAUR,EAAM,MAAM,cAAc,EAC1CO,GAASJ,EAAQ,KACfH,EAAM,KAAKR,EAAK,KAAM,CACpB,MAAO;AAAA,EACP,OAAQe,EACR,OAAQ,CAAC,GAAG,EACZ,GAAGJ,EAAQ,QAAQ,CACrB,CAAC,CACH,EACAK,EAAQ,CACV,CAEA,OAAAD,GAASJ,EAAQ,KAAK;AAAA,CAAI,EAEtBD,IACFK,GAASJ,EAAQ,KAAKD,EAAM;AAAA,CAAI,GAGlCK,GAASJ,EAAQ,KAAKC,CAAQ,EAC9BE,EAAK,EACEC,CACT,CAQA,SAASX,EAAWJ,EAAMO,EAAGC,EAAO,CAClC,IAAIO,EAAQf,EAAK,OAAS,GACtBiB,EAAO,EAOX,IALKd,GAAQc,IAMX,IAAI,OAAO,WAAa,MAAM,OAAOA,CAAI,EAAI,UAAU,EAAE,KAAKF,CAAK,GAEnEE,IAGF,IAAML,EAAW,IAAI,OAAOK,CAAI,EAO9B,WAAW,KAAKF,CAAK,IAEnB,WAAW,KAAKA,CAAK,GAAK,WAAW,KAAKA,CAAK,GAE/C,UAAU,KAAKA,CAAK,KAEtBA,EAAQ,IAAMA,EAAQ,KAGxB,IAAIG,EAAQ,GASZ,KAAO,EAAEA,EAAQV,EAAM,OAAO,QAAQ,CACpC,IAAMW,EAAUX,EAAM,OAAOU,CAAK,EAKlC,GAAI,CAACC,EAAQ,QAAS,SAEtB,IAAMC,EAAaZ,EAAM,eAAeW,CAAO,EAE3CE,EAEJ,KAAQA,EAAQD,EAAW,KAAKL,CAAK,GAAI,CACvC,IAAIO,EAAWD,EAAM,MAInBN,EAAM,YAAYO,CAAQ,IAAM,IAChCP,EAAM,YAAYO,EAAW,CAAC,IAAM,IAEpCA,IAGFP,EAAQA,EAAM,MAAM,EAAGO,CAAQ,EAAI,IAAMP,EAAM,MAAMM,EAAM,MAAQ,CAAC,CACtE,CACF,CAEA,OAAOT,EAAWG,EAAQH,CAC5B,CAKA,SAASP,GAAiB,CACxB,MAAO,GACT,CACF,CCrTO,IAAMkB,GAAW,CACtB,SAAUC,GACV,SAAU,GACV,KAAM,UACR,EAGMC,GAAsB,CAC1B,SAAUC,GACV,QAAS,EACX,EAMA,SAASF,GAAmBG,EAASC,EAAIC,EAAK,CAC5C,IAAMC,EAAO,KACPC,EAAOD,EAAK,OAAOA,EAAK,OAAO,OAAS,CAAC,EACzCE,EAAcD,GAAQA,EAAK,CAAC,EAAE,OAAS,aAAeA,EAAK,CAAC,EAAE,eAAeA,EAAK,CAAC,EAAG,EAAI,EAAE,OAAS,EACvGE,EAAW,EACf,OAAOC,EAcP,SAASA,EAAMC,EAAM,CACnB,OAAAR,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,eAAe,EAC7BA,EAAQ,MAAM,uBAAuB,EAC9BS,EAAaD,CAAI,CAC1B,CAcA,SAASC,EAAaD,EAAM,CAC1B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACpBF,IACOG,GAELH,EAAW,EACNJ,EAAIM,CAAI,GAEjBR,EAAQ,KAAK,uBAAuB,EAC7BU,EAAaV,EAASW,EAAY,YAAY,EAAEH,CAAI,EAC7D,CAeA,SAASG,EAAWH,EAAM,CACxB,OAAIA,IAAS,MAAQI,EAAmBJ,CAAI,EACnCK,EAAUL,CAAI,GAEvBR,EAAQ,MAAM,mBAAmB,EACjCA,EAAQ,MAAM,cAAe,CAC3B,YAAa,QACf,CAAC,EACMc,EAAKN,CAAI,EAClB,CAcA,SAASM,EAAKN,EAAM,CAClB,OAAIA,IAAS,MAAQI,EAAmBJ,CAAI,GAC1CR,EAAQ,KAAK,aAAa,EAC1BA,EAAQ,KAAK,mBAAmB,EACzBa,EAAUL,CAAI,GAEnBA,IAAS,GACJN,EAAIM,CAAI,GAEjBR,EAAQ,QAAQQ,CAAI,EACbM,EACT,CAcA,SAASD,EAAUL,EAAM,CAGvB,OADAR,EAAQ,KAAK,eAAe,EACxBG,EAAK,UACAF,EAAGO,CAAI,EAETR,EAAQ,QAAQF,GAAqBiB,EAA2BC,CAAK,EAAER,CAAI,CACpF,CAeA,SAASO,EAA0BP,EAAM,CACvC,OAAOR,EAAQ,QAAQ,CACrB,SAAUiB,EACV,QAAS,EACX,EAAGD,EAAOE,CAAY,EAAEV,CAAI,CAC9B,CAcA,SAASU,EAAaV,EAAM,CAC1B,OAAQH,EAAcK,EAAaV,EAASmB,EAAoB,aAAcd,EAAc,CAAC,EAAIc,GAAoBX,CAAI,CAC3H,CAcA,SAASW,EAAmBX,EAAM,CAChC,OAAIA,IAAS,KACJQ,EAAMR,CAAI,EAEfI,EAAmBJ,CAAI,EAClBR,EAAQ,QAAQF,GAAqBiB,EAA2BC,CAAK,EAAER,CAAI,GAEpFR,EAAQ,MAAM,eAAe,EACtBoB,EAAaZ,CAAI,EAC1B,CAcA,SAASY,EAAaZ,EAAM,CAC1B,OAAIA,IAAS,MAAQI,EAAmBJ,CAAI,GAC1CR,EAAQ,KAAK,eAAe,EACrBmB,EAAmBX,CAAI,IAEhCR,EAAQ,QAAQQ,CAAI,EACbY,EACT,CAcA,SAASJ,EAAMR,EAAM,CACnB,OAAAR,EAAQ,KAAK,UAAU,EAChBC,EAAGO,CAAI,CAChB,CAGA,SAASS,EAAqBjB,EAASC,EAAIC,EAAK,CAC9C,IAAImB,EAAO,EAWX,OAAOX,EAAaV,EAASsB,EAAqB,aAAcnB,EAAK,OAAO,WAAW,QAAQ,KAAK,SAAS,cAAc,EAAI,OAAY,CAAC,EAc5I,SAASmB,EAAoBd,EAAM,CACjC,OAAAR,EAAQ,MAAM,eAAe,EAC7BA,EAAQ,MAAM,uBAAuB,EAC9BuB,EAAcf,CAAI,CAC3B,CAcA,SAASe,EAAcf,EAAM,CAC3B,OAAIA,IAAS,IACXa,IACArB,EAAQ,QAAQQ,CAAI,EACbe,GAELF,EAAOf,EACFJ,EAAIM,CAAI,GAEjBR,EAAQ,KAAK,uBAAuB,EAC7BU,EAAaV,EAASwB,EAAoB,YAAY,EAAEhB,CAAI,EACrE,CAcA,SAASgB,EAAmBhB,EAAM,CAChC,OAAIA,IAAS,MAAQI,EAAmBJ,CAAI,GAC1CR,EAAQ,KAAK,eAAe,EACrBC,EAAGO,CAAI,GAETN,EAAIM,CAAI,CACjB,CACF,CACF,CAMA,SAAST,GAA4BC,EAASC,EAAIC,EAAK,CACrD,IAAMC,EAAO,KACb,OAAOI,EAGP,SAASA,EAAMC,EAAM,CACnB,OAAIA,IAAS,KACJP,EAAGO,CAAI,GAEhBR,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,YAAY,EAClByB,EACT,CAGA,SAASA,EAAUjB,EAAM,CACvB,OAAOL,EAAK,OAAO,KAAKA,EAAK,IAAI,EAAE,IAAI,EAAID,EAAIM,CAAI,EAAIP,EAAGO,CAAI,CAChE,CACF,CCzUO,SAASkB,GAASC,EAAS,CAEhC,IAAIC,GADaD,GAAW,CAAC,GACP,qBACtB,OAAIC,GAAW,OACbA,EAAS,IAEJ,CACL,SAAUC,EACV,QAASC,GACT,SAAAC,GACA,KAAM,UACR,EAMA,SAASF,EAAiBG,EAASC,EAAIC,EAAK,CAC1C,IAAMC,EAAO,KACTC,EAAW,EAEXC,EAEAC,EACJ,OAAOC,EAcP,SAASA,EAAMC,EAAM,CACnB,OAAAR,EAAQ,MAAM,UAAU,EACxBA,EAAQ,MAAM,kBAAkB,EACzBS,EAAaD,CAAI,CAC1B,CAaA,SAASC,EAAaD,EAAM,CAC1B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACpBJ,IACOK,GAILL,EAAW,GAAK,CAACR,EACZM,EAAIM,CAAI,GAEjBR,EAAQ,KAAK,kBAAkB,EACxBU,EAAQF,CAAI,EACrB,CAYA,SAASE,EAAQF,EAAM,CACrB,OAAIA,IAAS,KACJN,EAAIM,CAAI,EAEbA,IAAS,IACXF,EAAQN,EAAQ,MAAM,kBAAkB,EACxCK,EAAO,EACAM,EAAcH,CAAI,GAIvBA,IAAS,IACXR,EAAQ,MAAM,OAAO,EACrBA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,OAAO,EACbU,GAELE,EAAmBJ,CAAI,GACzBR,EAAQ,MAAM,YAAY,EAC1BA,EAAQ,QAAQQ,CAAI,EACpBR,EAAQ,KAAK,YAAY,EAClBU,IAITV,EAAQ,MAAM,cAAc,EACrBa,EAAKL,CAAI,EAClB,CAYA,SAASK,EAAKL,EAAM,CAClB,OAAIA,IAAS,MAAQA,IAAS,IAAMA,IAAS,IAAMI,EAAmBJ,CAAI,GACxER,EAAQ,KAAK,cAAc,EACpBU,EAAQF,CAAI,IAErBR,EAAQ,QAAQQ,CAAI,EACbK,EACT,CAaA,SAASF,EAAcH,EAAM,CAE3B,OAAIA,IAAS,IACXR,EAAQ,QAAQQ,CAAI,EACpBH,IACOM,GAILN,IAASD,GACXJ,EAAQ,KAAK,kBAAkB,EAC/BA,EAAQ,KAAK,UAAU,EAChBC,EAAGO,CAAI,IAIhBF,EAAM,KAAO,eACNO,EAAKL,CAAI,EAClB,CACF,CACF,CAGA,SAASV,GAAgBgB,EAAQ,CAC/B,IAAIC,EAAgBD,EAAO,OAAS,EAChCE,EAAiB,EAEjBC,EAEAC,EAGJ,IAAKJ,EAAOE,CAAc,EAAE,CAAC,EAAE,OAAS,cAAgBF,EAAOE,CAAc,EAAE,CAAC,EAAE,OAAS,WAAaF,EAAOC,CAAa,EAAE,CAAC,EAAE,OAAS,cAAgBD,EAAOC,CAAa,EAAE,CAAC,EAAE,OAAS,UAI1L,IAHAE,EAAQD,EAGD,EAAEC,EAAQF,GACf,GAAID,EAAOG,CAAK,EAAE,CAAC,EAAE,OAAS,eAAgB,CAE5CH,EAAOC,CAAa,EAAE,CAAC,EAAE,KAAO,kBAChCD,EAAOE,CAAc,EAAE,CAAC,EAAE,KAAO,kBACjCA,GAAkB,EAClBD,GAAiB,EACjB,KACF,EAOJ,IAFAE,EAAQD,EAAiB,EACzBD,IACO,EAAEE,GAASF,GACZG,IAAU,OACRD,IAAUF,GAAiBD,EAAOG,CAAK,EAAE,CAAC,EAAE,OAAS,eACvDC,EAAQD,IAEDA,IAAUF,GAAiBD,EAAOG,CAAK,EAAE,CAAC,EAAE,OAAS,gBAC9DH,EAAOI,CAAK,EAAE,CAAC,EAAE,KAAO,eACpBD,IAAUC,EAAQ,IACpBJ,EAAOI,CAAK,EAAE,CAAC,EAAE,IAAMJ,EAAOG,EAAQ,CAAC,EAAE,CAAC,EAAE,IAC5CH,EAAO,OAAOI,EAAQ,EAAGD,EAAQC,EAAQ,CAAC,EAC1CH,GAAiBE,EAAQC,EAAQ,EACjCD,EAAQC,EAAQ,GAElBA,EAAQ,QAGZ,OAAOJ,CACT,CAMA,SAASf,GAASS,EAAM,CAEtB,OAAOA,IAAS,IAAM,KAAK,OAAO,KAAK,OAAO,OAAS,CAAC,EAAE,CAAC,EAAE,OAAS,iBACxE,CCtNO,SAASW,GAAKC,EAAS,CAC5B,MAAO,CACL,KAAM,CACH,GAAKC,EACR,EACA,KAAM,CACH,GAAKC,GAASF,CAAO,CACxB,CACF,CACF,CClBA,IAAMG,EAAN,MAAMC,UAAmB,KAAM,CAM7B,YAAYC,EAEZC,EAAO,CACL,IAAIC,EAAQ,sBAAwBF,EAChCG,EACAC,EACAC,EAAMJ,GAASA,EAAM,IACzB,GAAII,GAAOA,EAAI,OAASA,EAAI,IAAK,CAG/B,IAAIC,EAAQD,EAAI,MAAM,MAEtBF,EAAQE,EAAI,MACZD,EAAMC,EAAI,IACNF,IAAUG,EAAM,OAClBJ,GAAS,qBAETA,GAAS,iBAAmBC,EAAQ,GAAK,KAG3C,IAAII,EAAaD,EAAM,MAAMH,EAAOC,CAAG,EAAE,QAAQ,OAAQ,UAAU,EAE/DI,EACAL,EAAQ,GACVK,EAAO,SAAMF,EAAM,MAAMH,EAAQ,GAAIA,CAAK,EAE1CK,EAAOF,EAAM,MAAM,EAAGH,CAAK,EAE7B,IAAIM,EACAL,EAAM,GAAKE,EAAM,OACnBG,EAAQH,EAAM,MAAMF,EAAKA,EAAM,EAAE,EAAI,SAErCK,EAAQH,EAAM,MAAMF,CAAG,EAEzBF,GAASM,EAAOD,EAAaE,CAC/B,CACA,MAAMP,CAAK,EACX,KAAK,KAAO,aACZ,OAAO,eAAe,KAAMH,EAAW,SAAS,EAChD,KAAK,SAAWI,EACZA,GAAS,MAAQC,GAAO,OAC1B,KAAK,OAASA,EAAMD,GAEtB,KAAK,WAAaH,CACpB,CACF,EAOIU,GAAY,WACZC,GAAYC,GAAOA,EAAI,QAAQF,GAAW,KAAK,EAAE,YAAY,EAC7DG,GAAgB,CAClB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAM,SACN,IAAK,QACP,EACIC,GAAe,WAIfC,GAASC,GAAQ,OAAOA,CAAI,EAAE,QAAQF,GAAcG,GAASJ,GAAcI,CAAK,CAAC,EAMjFC,GAAcC,GACZA,EAAM,OAAS,YAMRA,EAAM,OAAS,QALpBA,EAAM,KAAK,SAAW,EACjBD,GAAYC,EAAM,KAAK,CAAC,CAAC,EAEzBA,EAQAA,EAAM,OAAS,OACjBD,GAAYC,EAAM,IAAI,EAEtBA,EAGPC,GAAsB,IAAI,IAAI,CAAC,UAAW,UAAW,MAAM,CAAC,EAM5DC,GAAiBF,GAASC,GAAoB,IAAIF,GAAYC,CAAK,EAAE,IAAI,EAMzEG,GAAkBC,GAAO,CAK3B,IAAIC,EAAW,sDAAsD,KAAKD,CAAG,EAC7E,OAAKC,EAIDA,EAAS,CAAC,IAAM,KAKhB,CAAC,6BAA6B,KAAKA,EAAS,CAAC,CAAC,EACzC,KAGFA,EAAS,CAAC,EAAE,YAAY,EAZtB,WAaX,EAMIC,GAAkB,CACpB,YAAa,CACX,KAAM,UACN,YAAa,mKACb,IAAK,oBACP,EACA,OAAQ,CACN,KAAM,CACJ,KAAM,CAAC,gBAAiB,OAAQ,QAAQ,CAC1C,EACA,YAAa,gDACb,IAAK,qBACP,EACA,MAAO,CACL,KAAM,UACN,YAAa,2DACf,EACA,MAAO,CACL,KAAM,UACN,YAAa,iCACf,EACA,aAAc,CACZ,KAAM,UACN,QAAS,GACT,IAAK,0BACL,eAAgB,4HAClB,EACA,WAAY,CACV,KAAM,SACN,QAAS,UACT,IAAK,4BACL,eAAgB,qIAChB,aAAcC,GAAS,IAAMA,CAC/B,EACA,OAAQ,CACN,KAAM,SACN,IAAK,oBACL,eAAgB,qGAChB,WAAY,CAAC,EACb,aAAc,CAACC,EAAKC,KAClBA,EAAK,KAAKD,CAAG,EACNC,EAEX,EACA,iBAAkB,CAChB,KAAM,SACN,YAAa,6NACb,UAAW,GAAK,KAAK,IAAI,EAAG,CAAC,EAC7B,IAAK,8BACL,aAAc,UAChB,EACA,iBAAkB,CAChB,KAAM,UACN,YAAa,iHACb,IAAK,2BACP,EACA,OAAQ,CACN,KAAM,CAAC,CACL,KAAM,CAAC,OAAQ,SAAU,OAAO,CAClC,EAAG,UAAW,UAAU,EACxB,YAAa,8HACb,IAAK,eACL,WAAY,EACd,EACA,MAAO,CACL,KAAM,CAAC,UAAW,UAAU,EAC5B,YAAa,6DACb,IAAK,aACP,EACA,QAAS,CACP,KAAM,SACN,QAAS,IACT,YAAa,8JACb,UAAWC,GAAK,KAAK,IAAI,EAAGA,CAAC,EAC7B,IAAK,qBACL,aAAc,QAChB,EACA,UAAW,CACT,KAAM,SACN,QAAS,IACT,YAAa,mLACb,UAAWC,GAAK,KAAK,IAAI,EAAGA,CAAC,EAC7B,IAAK,uBACL,aAAcA,GAAKA,IAAM,WAAa,IAAW,SAASA,CAAC,CAC7D,EACA,YAAa,CACX,KAAM,UACN,IAAK,EACP,CACF,EACA,SAASC,GAAgBC,EAAQ,CAC/B,GAAI,YAAaA,EACf,OAAOA,EAAO,QAEhB,IAAIC,EAAOD,EAAO,KACdE,EAAc,MAAM,QAAQD,CAAI,EAAIA,EAAK,CAAC,EAAIA,EAClD,GAAI,OAAOC,GAAgB,SACzB,OAAOA,EAAY,KAAK,CAAC,EAE3B,OAAQA,EAAa,CACnB,IAAK,UACH,MAAO,GACT,IAAK,SACH,MAAO,GACT,IAAK,SACH,MAAO,GACT,IAAK,SACH,MAAO,CAAC,CACZ,CACF,CAWA,IAAMC,GAAN,KAAe,CACb,YAAYC,EAAS,CACfA,IAAY,SACdA,EAAU,CAAC,GAGbA,EAAUA,GAAW,CAAC,EACtB,QAASC,KAAQ,OAAO,KAAKZ,EAAe,EAAG,CAC7C,IAAIO,EAASP,GAAgBY,CAAI,EAC7BC,EAAcF,EAAQC,CAAI,EAE9B,KAAKA,CAAI,EAAIC,IAAgB,OAAYN,EAAO,UAAYA,EAAO,UAAUM,CAAW,EAAIA,EAAcP,GAAgBC,CAAM,CAClI,CACF,CAKA,gBAAgBO,EAAWC,EAAUvC,EAAO,CAC1C,IAAIwC,EAAS,KAAK,OAMlB,GALI,OAAOA,GAAW,aAGpBA,EAASA,EAAOF,EAAWC,EAAUvC,CAAK,GAExC,GAACwC,GAAUA,IAAW,UAEnB,IAAIA,IAAW,IAAQA,IAAW,QACvC,MAAM,IAAI3C,EAAW,gEAAkE0C,EAAW,KAAOD,EAAY,KAAMtC,CAAK,EACvHwC,IAAW,OACpB,OAAO,QAAY,KAAe,QAAQ,KAAK,+DAAiED,EAAW,KAAOD,EAAY,IAAI,EAGlJ,OAAO,QAAY,KAAe,QAAQ,KAAK,uDAAyD,iBAAmBE,EAAS,MAAQD,EAAW,KAAOD,EAAY,IAAI,EAElL,CASA,kBAAkBA,EAAWC,EAAUvC,EAAO,CAC5C,IAAIwC,EAAS,KAAK,OAClB,GAAI,OAAOA,GAAW,WAKpB,GAAI,CACFA,EAASA,EAAOF,EAAWC,EAAUvC,CAAK,CAC5C,MAAgB,CACdwC,EAAS,OACX,CAEF,MAAI,CAACA,GAAUA,IAAW,SACjB,GACEA,IAAW,IAAQA,IAAW,QAChC,GACEA,IAAW,QACpB,OAAO,QAAY,KAAe,QAAQ,KAAK,+DAAiED,EAAW,KAAOD,EAAY,IAAI,EAC3I,KAGP,OAAO,QAAY,KAAe,QAAQ,KAAK,uDAAyD,iBAAmBE,EAAS,MAAQD,EAAW,KAAOD,EAAY,IAAI,EACvK,GAEX,CASA,UAAUG,EAAS,CACjB,GAAI,QAASA,GAAWA,EAAQ,KAAO,CAACA,EAAQ,SAAU,CACxD,IAAIlB,EAAWF,GAAgBoB,EAAQ,GAAG,EAC1C,GAAIlB,GAAY,KACd,MAAO,GAETkB,EAAQ,SAAWlB,CACrB,CACA,IAAImB,EAAQ,OAAO,KAAK,OAAU,WAAa,KAAK,MAAMD,CAAO,EAAI,KAAK,MAC1E,MAAO,EAAQC,CACjB,CACF,EAaMC,GAAN,KAAY,CACV,YAAYC,EAAIC,EAAMC,EAAS,CAC7B,KAAK,GAAKF,EACV,KAAK,KAAOC,EACZ,KAAK,QAAUC,CACjB,CAIA,KAAM,CACJ,OAAOC,GAAOC,GAAI,KAAK,EAAE,CAAC,CAC5B,CAIA,KAAM,CACJ,OAAOD,GAAOE,GAAI,KAAK,EAAE,CAAC,CAC5B,CAKA,SAAU,CACR,OAAOF,GAAOG,GAAQ,KAAK,EAAE,CAAC,CAChC,CAKA,SAAU,CACR,OAAOH,GAAOI,GAAQ,KAAK,EAAE,CAAC,CAChC,CAKA,OAAQ,CACN,OAAOJ,GAAOK,GAAM,KAAK,EAAE,CAAC,CAC9B,CAIA,MAAO,CACL,OAAOL,GAAOM,GAAO,KAAK,EAAE,CAAC,CAC/B,CAIA,SAAU,CACR,OAAO,KAAK,MAAQ,CACtB,CACF,EAEIC,GAAI,EACJC,GAAK,EACLC,GAAI,EACJC,GAAK,EACLC,GAAI,EACJC,GAAK,EACLC,GAAK,EACLC,GAAM,EAENd,GAAS,CAAC,IAAIJ,GAAMW,GAAG,EAAG,EAAK,EAAG,IAAIX,GAAMY,GAAI,EAAG,EAAI,EAAG,IAAIZ,GAAMa,GAAG,EAAG,EAAK,EAAG,IAAIb,GAAMc,GAAI,EAAG,EAAI,EAAG,IAAId,GAAMe,GAAG,EAAG,EAAK,EAAG,IAAIf,GAAMgB,GAAI,EAAG,EAAI,EAAG,IAAIhB,GAAMiB,GAAI,EAAG,EAAK,EAAG,IAAIjB,GAAMkB,GAAK,EAAG,EAAI,CAAC,EAE1Mb,GAAM,CAACU,GAAGC,GAAID,GAAGC,GAAIC,GAAIC,GAAKD,GAAIC,EAAG,EACrCZ,GAAM,CAACU,GAAIA,GAAIA,GAAIA,GAAIE,GAAKA,GAAKA,GAAKA,EAAG,EACzCX,GAAU,CAACM,GAAGC,GAAIC,GAAGC,GAAIC,GAAIC,GAAKD,GAAIC,EAAG,EACzCV,GAAU,CAACM,GAAIA,GAAIE,GAAIA,GAAIE,GAAKA,GAAKA,GAAKA,EAAG,EAC7CT,GAAQ,CAACG,GAAIA,GAAIE,GAAIA,GAAIE,GAAIA,GAAIE,GAAKA,EAAG,EACzCR,GAAS,CAACC,GAAGC,GAAIC,GAAGC,GAAID,GAAGC,GAAID,GAAGC,EAAE,EAEpCK,GAAU,CACZ,QAASf,GAAOO,EAAC,EACjB,KAAMP,GAAOS,EAAC,EACd,OAAQT,GAAOW,EAAC,EAChB,aAAcX,GAAOa,EAAE,CACzB,EAYIG,GAAa,CAAC,CAGhB,KAAM,QACN,OAAQ,CAAC,CAAC,IAAQ,GAAM,EAExB,CAAC,IAAQ,GAAM,CACf,CACF,EAAG,CAID,KAAM,WACN,OAAQ,CAAC,CAAC,KAAQ,IAAM,CAAC,CAC3B,EAAG,CAED,KAAM,WACN,OAAQ,CAAC,CAAC,KAAQ,IAAM,CAAC,CAC3B,EAAG,CAgBD,KAAM,UACN,OAAQ,CAAC,CAAC,KAAQ,IAAM,CAAC,CAC3B,EAAG,CACD,KAAM,WACN,OAAQ,CAAC,CAAC,KAAQ,IAAM,CAAC,CAC3B,EAAG,CAGD,KAAM,MACN,OAAQ,CAAC,CAAC,MAAQ,KAAM,EAExB,CAAC,MAAQ,KAAM,EAEf,CAAC,MAAQ,KAAM,CAEf,CACF,EAAG,CAED,KAAM,SACN,OAAQ,CAAC,CAAC,MAAQ,KAAM,CAAC,CAC3B,CAAC,EAKD,SAASC,GAAoBC,EAAW,CACtC,QAASC,EAAI,EAAGA,EAAIH,GAAW,OAAQG,IAErC,QADIC,EAASJ,GAAWG,CAAC,EAChBE,EAAK,EAAGA,EAAKD,EAAO,OAAO,OAAQC,IAAM,CAChD,IAAIC,EAAQF,EAAO,OAAOC,CAAE,EAC5B,GAAIH,GAAaI,EAAM,CAAC,GAAKJ,GAAaI,EAAM,CAAC,EAC/C,OAAOF,EAAO,IAElB,CAEF,OAAO,IACT,CAKA,IAAIG,GAAY,CAAC,EACjBP,GAAW,QAAQnC,GAAKA,EAAE,OAAO,QAAQ2C,GAAKD,GAAU,KAAK,GAAGC,CAAC,CAAC,CAAC,EASnE,SAASC,GAAmBP,EAAW,CACrC,QAASC,EAAI,EAAGA,EAAII,GAAU,OAAQJ,GAAK,EACzC,GAAID,GAAaK,GAAUJ,CAAC,GAAKD,GAAaK,GAAUJ,EAAI,CAAC,EAC3D,MAAO,GAGX,MAAO,EACT,CAiBA,IAAIO,GAAoBC,GAAWA,EAAU,IAAMA,EAC/CC,GAAW,GAkBXC,GAAW,SAAkBC,EAAeF,EAAU,CAExD,MAAO,QAAU,IAAME,EAAgBF,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAAwSE,EAAgB,MAAQ,KAAOA,EAAgB;AAAA;AAAA,WAAyC,GAAKA,GAAiB;AAAA;AAAA;AAAA,IAA4I,IAAMA,GAAiB,IAAMF,EAAW,YAAc,GAAKE,GAAiB,WACnqB,EACIC,GAAY,SAAmBD,EAAeF,EAAU,CAE1D,MAAO,SAAW,IAAME,EAAgBF,GAAY;AAAA;AAAA;AAAA,GAAiIE,EAAgB,MAAQ,KAAOA,EAAgB;AAAA;AAAA,UAAwC,GAAKA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,IAAkU,KAAOA,GAAiB,IAAMF,EAAW,YAAc,GAAKE,GAAiB,WACnrB,EACIE,GAAY,SAAmBF,EAAeF,EAAU,CAE1D,MAAO,SAAW,GAAKE,EAAgBF,GAAY;AAAA,GAAQE,EAAgB,KAAO,KAAOA,EAAgB;AAAA,iCAAsC,GAAKA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAA+Z,KAAOA,GAAiB,IAAMF,EAAW,YAAc,GAAKE,GAAiB,WACnpB,EACIG,GAAY,SAAmBH,EAAeF,EAAU,CAE1D,MAAO,SAAW,KAAOE,EAAgBF,GAAY;AAAA;AAAA;AAAA;AAAA;AAAA,GAAqUE,EAAgB,MAAQ,KAAOA,EAAgB;AAAA,IAAsC,GAAKA,GAAiB;AAAA;AAAA;AAAA,2BAAyH,KAAOA,GAAiB,IAAMF,EAAW;AAAA,WAAgB,GAAKE,GAAiB,WAC/qB,EACII,GAAY,SAAmBJ,EAAeF,EAAU,CAE1D,MAAO,SAAW,KAAOE,EAAgBF,GAAY;AAAA,wCAA6CE,EAAgB,MAAQ,KAAOA,EAAgB;AAAA,oCAAyC,GAAKA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,QAA8V,KAAOA,GAAiB,IAAMF,EAAW,YAAc,GAAKE,GAAiB,UAC7nB,EACIK,GAAY,SAAmBC,EAAG,CACpC,IAAIC,EAAID,EAAI,EACZ,MAAO,WAAaA,EAAI,QAAUC,EAAI,mBAAqBD,EAAI,IAAM,WACvE,EACIE,GAAW,SAAkBR,EAAeF,EAAUW,EAAe,CAKvE,IAAIC,EAAcD,EAAgB,GAAKX,EAAWE,EAClD,MAAO,SAAWA,EAAgBF,GAAY,WAAa,GAAKE,GAAiB;AAAA,OAAYU,EAAc;AAAA;AAAA;AAAA,wBAAwOZ,EAAW,YAAc,GAAKE,GAAiB,OACpY,EACIW,GAAW,SAAkB3C,EAAMgC,EAAeS,EAAe,CACnET,EAAgB,IAAOA,EACvB,IAAIY,EAAO,GACX,OAAQ5C,EAAM,CACZ,IAAK,WACH4C,EAAOb,GAASC,EAAeF,EAAQ,EACvC,MACF,IAAK,YACHc,EAAOX,GAAUD,EAAeF,EAAQ,EACxC,MACF,IAAK,YACHc,EAAOV,GAAUF,EAAeF,EAAQ,EACxC,MACF,IAAK,YACHc,EAAOT,GAAUH,EAAeF,EAAQ,EACxC,MACF,IAAK,YACHc,EAAOR,GAAUJ,EAAeF,EAAQ,EACxC,MACF,IAAK,WACHc,EAAOJ,GAASR,EAAeF,GAAUW,CAAa,CAC1D,CACA,OAAOG,CACT,EACIC,GAAY,SAAmBC,EAAMC,EAAQ,CAE/C,OAAQD,EAAM,CACZ,IAAK,SACH,OAAOlB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAAInB,GAAkB,gBAAkBmB,EAAS,QAAQ,EACvH,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAC9D,IAAK,SACH,OAAOnB,GAAkB,gBAAkBmB,EAAS,QAAQ,EAAInB,GAAkB,gBAAkBmB,EAAS,QAAQ,EACvH,QACE,MAAO,EACX,CACF,EACIH,GAAO,CAET,gBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAEjB,iBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+DAElB,UAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uCAEX,UAAW;AAAA;AAAA,iCACX,eAAgB;AAAA;AAAA;AAAA,gDAEhB,UAAW;AAAA;AAAA,gBACX,eAAgB;AAAA;AAAA,kBAEhB,YAAa;AAAA;AAAA;AAAA,uEACb,gBAAiB;AAAA;AAAA;AAAA;AAAA,qBACjB,gBAAiB;AAAA;AAAA;AAAA,sDACjB,oBAAqB;AAAA;AAAA;AAAA,yDAErB,SAAU;AAAA;AAAA;AAAA,yCACV,gBAAiBhB,GAAkB,2CAA2C,EAC9E,iBAAkBA,GAAkB,iCAAiC,EACrE,gBAAiBA,GAAkB,oCAAoC,EACvE,WAAYA,GAAkB,qCAAqC,EAEnE,WAAY;AAAA;AAAA;AAAA,4DACZ,UAAWA,GAAkB,yCAAyC,EACtE,SAAU;AAAA;AAAA;AAAA;AAAA,iEACV,cAAe;AAAA;AAAA;AAAA;AAAA,oEACf,WAAY;AAAA;AAAA;AAAA,uDACZ,WAAY;AAAA;AAAA;AAAA,4CACZ,YAAa;AAAA;AAAA;AAAA,4DACb,YAAa;AAAA;AAAA;AAAA,yDACb,WAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oCACZ,WAAY;AAAA;AAAA;AAAA,+DACZ,gBAAiB;AAAA;AAAA,0CACjB,WAAY;AAAA,yCACZ,gBAAiB;AAAA,8CACjB,aAAc;AAAA;AAAA;AAAA,mCACd,iBAAkB;AAAA;AAAA;AAAA,gEAClB,iBAAkB;AAAA;AAAA;AAAA,mEAClB,qBAAsB;AAAA;AAAA;AAAA;AAAA,0CACtB,UAAW;AAAA;AAAA;AAAA,8EACX,iBAAkBA,GAAkB,6CAA6C,EACjF,kBAAmBA,GAAkB,uCAAuC,EAC5E,iBAAkBA,GAAkB,0CAA0C,EAC9E,YAAa;AAAA;AAAA;AAAA,oDAEb,iBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,yEAClB,kBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,6EAEnB,OAAQ;AAAA;AAAA;AAAA;AAAA,oCAER,OAAQ;AAAA;AAAA;AAAA;AAAA,oDACR,OAAQ;AAAA;AAAA;AAAA;AAAA,kCACR,OAAQ;AAAA;AAAA;AAAA;AAAA,wBAER,IAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAEL,SAAU;AAAA,wEAEV,SAAU;AAAA,oEACV,SAAU;AAAA,oEACV,SAAU;AAAA,oEAEV,WAAY;AAAA,8EACZ,WAAY;AAAA,6EACZ,WAAY;AAAA,6EACZ,WAAY;AAAA,6EAIZ,kBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oEAEnB,mBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAGpB,yBAA0B;AAAA;AAAA;AAAA;AAAA;AAAA,mDAC1B,0BAA2B;AAAA;AAAA;AAAA;AAAA,4EAC3B,yBAA0B;AAAA;AAAA;AAAA;AAAA,iFAC1B,0BAA2B;AAAA;AAAA;AAAA;AAAA,sDAC7B,EACIoB,GAAY,SAAmBC,EAAOC,EAAW,CACnD,OAAQD,EAAO,CACb,IAAK,SACH,MAAO,qCAAuCC,EAAY;AAAA,iCAAsDA,EAAY,cAC9H,IAAK,SACH,MAAO,mCAAqCA,EAAY;AAAA,2BAAmDA,EAAY,cACzH,IAAK,OACH,MAAO,iBAAmBA,EAAY;AAAA,gCAAmE,CAACA,EAAY;AAAA,8CAAwFA,EAAY,aAC5N,IAAK,aACH,MAAO,iBAAmBA,EAAY;AAAA,gCAAmE,CAACA,EAAY;AAAA,8CAAwFA,EAAY;AAAA,gBAA+BA,EAAY;AAAA,gCAAmE,CAACA,EAAY;AAAA,8CAAwFA,EAAY,aAC3b,IAAK,SACH,MAAO,0BAA4BA,EAAY;AAAA,0BAAoDA,EAAY,eACjH,IAAK,SACH,MAAO,0BAA4BA,EAAY;AAAA,0BAAmDA,EAAY,eAChH,IAAK,QACH,MAAO,qCAAuCA,EAAY;AAAA,2BAA0CA,EAAY,aAClH,IAAK,QACH,MAAO,mCAAqCA,EAAY;AAAA,2BAA0CA,EAAY,aAChH,IAAK,SACH,MAAO;AAAA;AAAA,cAAsKA,EAAY,IAAM;AAAA;AAAA;AAAA;AAAA,OAAuRA,EAAY,IAAM;AAAA,sDAC1e,IAAK,SACH,MAAO;AAAA;AAAA,oDAAgMA,EAAY,GAAK;AAAA;AAAA;AAAA;AAAA;AAAA,OAA4UA,EAAY,KAAO;AAAA,iEACzjB,QAEE,MAAM,IAAI,MAAM,6BAA6B,CACjD,CACF,EAOMC,GAAN,KAAuB,CAErB,YAAYC,EAAU,CACpB,KAAK,SAAWA,EAChB,KAAK,QAAU,CAAC,EAChB,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,MAAQ,CAAC,CAChB,CACA,SAASC,EAAW,CAClB,OAAO,KAAK,QAAQ,SAASA,CAAS,CACxC,CAEA,QAAS,CAEP,QADIC,EAAO,SAAS,uBAAuB,EAClCjC,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCiC,EAAK,YAAY,KAAK,SAASjC,CAAC,EAAE,OAAO,CAAC,EAE5C,OAAOiC,CACT,CAEA,UAAW,CAGT,QAFIC,EAAS,GAEJlC,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCkC,GAAU,KAAK,SAASlC,CAAC,EAAE,SAAS,EAEtC,OAAOkC,CACT,CAKA,QAAS,CAIP,IAAIC,EAASC,GAASA,EAAM,OAAO,EACnC,OAAO,KAAK,SAAS,IAAID,CAAM,EAAE,KAAK,EAAE,CAC1C,CACF,EAUIE,GAAY,CAGd,GAAM,EAEN,GAAM,KAAO,KAEb,GAAM,KAAO,IAEb,GAAM,MAEN,GAAM,IAAM,IAEZ,GAAM,GAEN,GAAM,KAAO,KAEb,GAAM,MAAQ,KAEd,GAAM,IAAM,IAEZ,GAAM,KAAO,IAEb,GAAM,EAAI,MAGV,GAAM,IAAM,GACd,EAEIC,GAAe,CACjB,GAAM,GACN,GAAM,GACN,GAAM,EACR,EAKIC,GAAY,SAAmBC,EAAM,CACvC,OAAI,OAAOA,GAAS,WAClBA,EAAOA,EAAK,MAEPA,KAAQH,IAAaG,KAAQF,IAAgBE,IAAS,IAC/D,EAMIC,GAAgB,SAAuBC,EAAWzE,EAAS,CAC7D,IAAI0E,EACJ,GAAID,EAAU,QAAQL,GAEpBM,EAAQN,GAAUK,EAAU,IAAI,EAC9BzE,EAAQ,YAAY,EAAE,QACtBA,EAAQ,uBACDyE,EAAU,OAAS,KAE5BC,EAAQ1E,EAAQ,YAAY,EAAE,eACzB,CAGL,IAAI2E,EAcJ,GAbI3E,EAAQ,MAAM,QAAQ,EAExB2E,EAAc3E,EAAQ,YAAYA,EAAQ,MAAM,KAAK,CAAC,EAEtD2E,EAAc3E,EASZyE,EAAU,OAAS,KACrBC,EAAQC,EAAY,YAAY,EAAE,gBACzBF,EAAU,OAAS,KAC5BC,EAAQC,EAAY,YAAY,EAAE,SAElC,OAAM,IAAIjH,EAAW,kBAAoB+G,EAAU,KAAO,GAAG,EAE3DE,IAAgB3E,IAClB0E,GAASC,EAAY,eAAiB3E,EAAQ,eAElD,CACA,OAAO,KAAK,IAAIyE,EAAU,OAASC,EAAO1E,EAAQ,OAAO,CAC3D,EAKI4E,EAAS,SAAgBlF,EAAG,CAC9B,MAAO,CAACA,EAAE,QAAQ,CAAC,EAAI,IACzB,EAkBImF,GAAc,SAAqBC,EAAS,CAC9C,OAAOA,EAAQ,OAAOC,GAAOA,CAAG,EAAE,KAAK,GAAG,CAC5C,EACIC,GAAW,SAAkBF,EAAS9E,EAASiF,EAAO,CAOxD,GANA,KAAK,QAAUH,GAAW,CAAC,EAC3B,KAAK,WAAa,CAAC,EACnB,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,MAAQG,GAAS,CAAC,EACnBjF,EAAS,CACPA,EAAQ,MAAM,QAAQ,GACxB,KAAK,QAAQ,KAAK,QAAQ,EAE5B,IAAIV,EAAQU,EAAQ,SAAS,EACzBV,IACF,KAAK,MAAM,MAAQA,EAEvB,CACF,EAII4F,GAAS,SAAgBC,EAAS,CACpC,IAAIC,EAAO,SAAS,cAAcD,CAAO,EAEzCC,EAAK,UAAYP,GAAY,KAAK,OAAO,EAEzC,QAASQ,KAAO,OAAO,KAAK,KAAK,KAAK,EACpCD,EAAK,MAAMC,CAAG,EAAI,KAAK,MAAMA,CAAG,EAGlC,QAASC,KAAQ,OAAO,KAAK,KAAK,UAAU,EAC1CF,EAAK,aAAaE,EAAM,KAAK,WAAWA,CAAI,CAAC,EAG/C,QAAS,EAAI,EAAG,EAAI,KAAK,SAAS,OAAQ,IACxCF,EAAK,YAAY,KAAK,SAAS,CAAC,EAAE,OAAO,CAAC,EAE5C,OAAOA,CACT,EASIG,GAA4B,qBAI5BC,GAAW,SAAkBL,EAAS,CACxC,IAAIlB,EAAS,IAAMkB,EAEf,KAAK,QAAQ,SACflB,GAAU,WAActF,GAAOkG,GAAY,KAAK,OAAO,CAAC,EAAI,KAE9D,IAAIjE,EAAS,GAEb,QAASyE,KAAO,OAAO,KAAK,KAAK,KAAK,EACpCzE,GAAUrC,GAAU8G,CAAG,EAAI,IAAM,KAAK,MAAMA,CAAG,EAAI,IAEjDzE,IACFqD,GAAU,WAActF,GAAOiC,CAAM,EAAI,KAG3C,QAAS0E,KAAQ,OAAO,KAAK,KAAK,UAAU,EAAG,CAC7C,GAAIC,GAA0B,KAAKD,CAAI,EACrC,MAAM,IAAI5H,EAAW,2BAA6B4H,EAAO,GAAG,EAE9DrB,GAAU,IAAMqB,EAAO,KAAQ3G,GAAO,KAAK,WAAW2G,CAAI,CAAC,EAAI,GACjE,CACArB,GAAU,IAEV,QAASlC,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCkC,GAAU,KAAK,SAASlC,CAAC,EAAE,SAAS,EAEtC,OAAAkC,GAAU,KAAOkB,EAAU,IACpBlB,CACT,EAUMwB,GAAN,KAAW,CACT,YAAYX,EAAShB,EAAU9D,EAASiF,EAAO,CAC7CD,GAAS,KAAK,KAAMF,EAAS9E,EAASiF,CAAK,EAC3C,KAAK,SAAWnB,GAAY,CAAC,CAC/B,CAMA,aAAa4B,EAAWC,EAAO,CAC7B,KAAK,WAAWD,CAAS,EAAIC,CAC/B,CACA,SAAS5B,EAAW,CAClB,OAAO,KAAK,QAAQ,SAASA,CAAS,CACxC,CACA,QAAS,CACP,OAAOmB,GAAO,KAAK,KAAM,MAAM,CACjC,CACA,UAAW,CACT,OAAOM,GAAS,KAAK,KAAM,MAAM,CACnC,CACF,EAKMI,GAAN,KAAa,CACX,YAAYC,EAAMf,EAAShB,EAAU9D,EAAS,CAC5CgF,GAAS,KAAK,KAAMF,EAAS9E,CAAO,EACpC,KAAK,SAAW8D,GAAY,CAAC,EAC7B,KAAK,aAAa,OAAQ+B,CAAI,CAChC,CACA,aAAaH,EAAWC,EAAO,CAC7B,KAAK,WAAWD,CAAS,EAAIC,CAC/B,CACA,SAAS5B,EAAW,CAClB,OAAO,KAAK,QAAQ,SAASA,CAAS,CACxC,CACA,QAAS,CACP,OAAOmB,GAAO,KAAK,KAAM,GAAG,CAC9B,CACA,UAAW,CACT,OAAOM,GAAS,KAAK,KAAM,GAAG,CAChC,CACF,EAIMM,GAAN,KAAU,CACR,YAAYC,EAAKC,EAAKf,EAAO,CAC3B,KAAK,IAAMe,EACX,KAAK,IAAMD,EACX,KAAK,QAAU,CAAC,MAAM,EACtB,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,YAAc,EACnB,KAAK,MAAQd,CACf,CACA,SAASlB,EAAW,CAClB,OAAO,KAAK,QAAQ,SAASA,CAAS,CACxC,CACA,QAAS,CACP,IAAIqB,EAAO,SAAS,cAAc,KAAK,EACvCA,EAAK,IAAM,KAAK,IAChBA,EAAK,IAAM,KAAK,IAChBA,EAAK,UAAY,OAEjB,QAASC,KAAO,OAAO,KAAK,KAAK,KAAK,EACpCD,EAAK,MAAMC,CAAG,EAAI,KAAK,MAAMA,CAAG,EAElC,OAAOD,CACT,CACA,UAAW,CACT,IAAInB,EAAS,aAAgBtF,GAAO,KAAK,GAAG,EAAI,KAAQ,SAAYA,GAAO,KAAK,GAAG,EAAI,KAEnFiC,EAAS,GACb,QAASyE,KAAO,OAAO,KAAK,KAAK,KAAK,EACpCzE,GAAUrC,GAAU8G,CAAG,EAAI,IAAM,KAAK,MAAMA,CAAG,EAAI,IAErD,OAAIzE,IACFqD,GAAU,WAActF,GAAOiC,CAAM,EAAI,KAE3CqD,GAAU,MACHA,CACT,CACF,EACIgC,GAAgB,CAClB,OAAK,eACL,OAAK,eACL,OAAK,eAEL,OAAK,cACP,EAMMC,GAAN,KAAiB,CACf,YAAYtH,EAAM6E,EAAQ0C,EAAOC,EAAQC,EAAMC,EAAOxB,EAASG,EAAO,CACpE,KAAK,KAAOrG,EACZ,KAAK,OAAS6E,GAAU,EACxB,KAAK,MAAQ0C,GAAS,EACtB,KAAK,OAASC,GAAU,EACxB,KAAK,KAAOC,GAAQ,EACpB,KAAK,MAAQC,GAAS,EACtB,KAAK,QAAUxB,GAAW,CAAC,EAC3B,KAAK,MAAQG,GAAS,CAAC,EACvB,KAAK,YAAc,EAQnB,IAAIjD,EAASH,GAAoB,KAAK,KAAK,WAAW,CAAC,CAAC,EACpDG,GACF,KAAK,QAAQ,KAAKA,EAAS,WAAW,EAEpC,SAAS,KAAK,KAAK,IAAI,IAEzB,KAAK,KAAOiE,GAAc,KAAK,IAAI,EAEvC,CACA,SAASlC,EAAW,CAClB,OAAO,KAAK,QAAQ,SAASA,CAAS,CACxC,CAKA,QAAS,CACP,IAAIqB,EAAO,SAAS,eAAe,KAAK,IAAI,EACxCmB,EAAO,KACP,KAAK,OAAS,IAChBA,EAAO,SAAS,cAAc,MAAM,EACpCA,EAAK,MAAM,YAAc3B,EAAO,KAAK,MAAM,GAEzC,KAAK,QAAQ,OAAS,IACxB2B,EAAOA,GAAQ,SAAS,cAAc,MAAM,EAC5CA,EAAK,UAAY1B,GAAY,KAAK,OAAO,GAE3C,QAASQ,KAAO,OAAO,KAAK,KAAK,KAAK,EACpCkB,EAAOA,GAAQ,SAAS,cAAc,MAAM,EAC5CA,EAAK,MAAMlB,CAAG,EAAI,KAAK,MAAMA,CAAG,EAElC,OAAIkB,GACFA,EAAK,YAAYnB,CAAI,EACdmB,GAEAnB,CAEX,CAIA,UAAW,CAGT,IAAIoB,EAAY,GACZvC,EAAS,QACT,KAAK,QAAQ,SACfuC,EAAY,GACZvC,GAAU,WACVA,GAAUtF,GAAOkG,GAAY,KAAK,OAAO,CAAC,EAC1CZ,GAAU,KAEZ,IAAIrD,EAAS,GACT,KAAK,OAAS,IAChBA,GAAU,gBAAkBgE,EAAO,KAAK,MAAM,EAAI,KAEpD,QAASS,KAAO,OAAO,KAAK,KAAK,KAAK,EACpCzE,GAAUrC,GAAU8G,CAAG,EAAI,IAAM,KAAK,MAAMA,CAAG,EAAI,IAEjDzE,IACF4F,EAAY,GACZvC,GAAU,WAActF,GAAOiC,CAAM,EAAI,KAE3C,IAAI6F,EAAU9H,GAAO,KAAK,IAAI,EAC9B,OAAI6H,GACFvC,GAAU,IACVA,GAAUwC,EACVxC,GAAU,UACHA,GAEAwC,CAEX,CACF,EAIMC,GAAN,KAAc,CACZ,YAAY5C,EAAU6C,EAAY,CAChC,KAAK,SAAW7C,GAAY,CAAC,EAC7B,KAAK,WAAa6C,GAAc,CAAC,CACnC,CACA,QAAS,CACP,IAAIC,EAAQ,6BACRxB,EAAO,SAAS,gBAAgBwB,EAAO,KAAK,EAEhD,QAAStB,KAAQ,OAAO,KAAK,KAAK,UAAU,EAC1CF,EAAK,aAAaE,EAAM,KAAK,WAAWA,CAAI,CAAC,EAE/C,QAASvD,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCqD,EAAK,YAAY,KAAK,SAASrD,CAAC,EAAE,OAAO,CAAC,EAE5C,OAAOqD,CACT,CACA,UAAW,CACT,IAAInB,EAAS,0CAEb,QAASqB,KAAQ,OAAO,KAAK,KAAK,UAAU,EAC1CrB,GAAU,IAAMqB,EAAO,KAAQ3G,GAAO,KAAK,WAAW2G,CAAI,CAAC,EAAI,IAEjErB,GAAU,IACV,QAASlC,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxCkC,GAAU,KAAK,SAASlC,CAAC,EAAE,SAAS,EAEtC,OAAAkC,GAAU,SACHA,CACT,CACF,EACM4C,GAAN,KAAe,CACb,YAAYC,EAAUC,EAAW,CAC/B,KAAK,SAAWD,EAChB,KAAK,UAAYC,CACnB,CACA,QAAS,CACP,IAAIH,EAAQ,6BACRxB,EAAO,SAAS,gBAAgBwB,EAAO,MAAM,EACjD,OAAI,KAAK,UACPxB,EAAK,aAAa,IAAK,KAAK,SAAS,EAErCA,EAAK,aAAa,IAAK9B,GAAK,KAAK,QAAQ,CAAC,EAErC8B,CACT,CACA,UAAW,CACT,OAAI,KAAK,UACA,YAAezG,GAAO,KAAK,SAAS,EAAI,MAExC,YAAeA,GAAO2E,GAAK,KAAK,QAAQ,CAAC,EAAI,KAExD,CACF,EACM0D,GAAN,KAAe,CACb,YAAYL,EAAY,CACtB,KAAK,WAAaA,GAAc,CAAC,CACnC,CACA,QAAS,CACP,IAAIC,EAAQ,6BACRxB,EAAO,SAAS,gBAAgBwB,EAAO,MAAM,EAEjD,QAAStB,KAAQ,OAAO,KAAK,KAAK,UAAU,EAC1CF,EAAK,aAAaE,EAAM,KAAK,WAAWA,CAAI,CAAC,EAE/C,OAAOF,CACT,CACA,UAAW,CACT,IAAInB,EAAS,QACb,QAASqB,KAAQ,OAAO,KAAK,KAAK,UAAU,EAC1CrB,GAAU,IAAMqB,EAAO,KAAQ3G,GAAO,KAAK,WAAW2G,CAAI,CAAC,EAAI,IAEjE,OAAArB,GAAU,KACHA,CACT,CACF,EACA,SAASgD,GAAoBlI,EAAO,CAClC,GAAIA,aAAiBmH,GACnB,OAAOnH,EAEP,MAAM,IAAI,MAAM,+BAAiC,OAAOA,CAAK,EAAI,GAAG,CAExE,CACA,SAASmI,GAAWnI,EAAO,CACzB,GAAIA,aAAiB0G,GACnB,OAAO1G,EAEP,MAAM,IAAI,MAAM,sCAAwC,OAAOA,CAAK,EAAI,GAAG,CAE/E,CAOA,IAAIoI,GAAqB/B,GAAQA,aAAgBK,IAAQL,aAAgBQ,IAAUR,aAAgBvB,GAG/FuD,GAAkB,CACpB,cAAe,CACb,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,CAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,KAAO,KAAO,EAAG,GAAI,EAChC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,KAAO,EAAG,EAAG,OAAO,EAC/B,IAAO,CAAC,EAAG,GAAK,EAAG,EAAG,OAAO,EAC7B,IAAO,CAAC,EAAG,KAAO,EAAG,EAAG,OAAO,EAC/B,IAAO,CAAC,EAAG,GAAK,EAAG,EAAG,OAAO,EAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,CAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,CAAG,EAC9B,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,CAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,CAAG,EAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,KAAK,EACnC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,KAAK,EACnC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,EAAG,EAC5B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,C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EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,EAAG,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EACzB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OA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SAAK,CACH,KAAQ,MACR,KAAQ,OACV,EACA,SAAK,CACH,KAAQ,MACR,KAAQ,OACV,EACA,SAAK,CACH,KAAQ,MACR,KAAQ,YACV,EACA,SAAK,CACH,KAAQ,KACV,EACA,SAAK,CACH,KAAQ,KACV,CACF,EACIC,GAAiB,CACnB,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,qBACL,OAAK,qBACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,qBACL,OAAK,qBACL,OAAK,eACL,OAAK,eACL,OAA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AAmB,aAUlB,SAASC,GAAcC,EAAMC,EAAMC,EAAM,CAC9C,IAAMC,EAAQ,MAAQH,EAAK,SAAS,EAAE,EAAE,YAAY,EACpD,OAAOE,GAAQD,GAAQ,CAACH,GAAiB,KAAK,OAAO,aAAaG,CAAI,CAAC,EACnEE,EACAA,EAAQ,GACd,CCfA,IAAMC,GAAe,KAUd,SAASC,GAAUC,EAAMC,EAAMC,EAAM,CAC1C,IAAMC,EAAQ,KAAO,OAAOH,CAAI,EAChC,OAAOE,GAAQD,GAAQ,CAACH,GAAa,KAAK,OAAO,aAAaG,CAAI,CAAC,EAC/DE,EACAA,EAAQ,GACd,CCVO,IAAMC,GAA0B,CACrC,QACA,MACA,SACA,QACA,SACA,QACA,SACA,OACA,OACA,SACA,MACA,SACA,QACA,SACA,OACA,KACA,SACA,QACA,SACA,OACA,KACA,SACA,SACA,QACA,SACA,SACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,SACA,MACA,QACA,SACA,OACA,SACA,SACA,QACA,OACA,OACA,SACA,MACA,SACA,SACA,QACA,SACA,MACA,OACA,SACA,SACA,SACA,KACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,KACA,OACA,QACA,SACA,OACA,MACA,SACA,SACA,QACA,SACA,OACA,OACA,SACA,SACA,OACA,OACA,SACA,QACA,OACA,QACA,MACA,OACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,MACA,MACF,EC3GO,IAAMC,GAAyB,CACpC,KAAM,OACN,MAAO,OACP,KAAM,OACN,MAAO,OACP,OAAQ,OACR,IAAK,OACL,OAAQ,OACR,KAAM,OACN,IAAK,OACL,KAAM,OACN,KAAM,OACN,MAAO,OACP,IAAK,OACL,IAAK,OACL,IAAK,OACL,KAAM,OACN,IAAK,OACL,OAAQ,OACR,KAAM,OACN,KAAM,OACN,MAAO,OACP,MAAO,OACP,KAAM,OACN,OAAQ,OACR,MAAO,OACP,KAAM,OACN,KAAM,OACN,MAAO,OACP,OAAQ,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", - "names": ["require_extend", "__commonJSMin", "exports", "module", "hasOwn", "toStr", "defineProperty", "gOPD", "isArray", "arr", "isPlainObject", "obj", "hasOwnConstructor", "hasIsPrototypeOf", "key", "setProperty", "target", "options", "getProperty", "name", "extend", "src", "copy", "copyIsArray", "clone", "i", "length", "deep", "ErrorCode", "MilkdownError", "code", "message", "functionReplacer", "_", "value", "stringify", "x", "docTypeError", "type", "contextNotFound", "name", "timerNotFound", "ctxCallOutOfScope", "createNodeInParserFail", "nodeType", "attrs", "content", "heading", "serialize", "messages", "node", "acc", "title", "stackOverFlow", "parserMatchError", "serializerMatchError", "getAtomFromSchemaFail", "expectDomTypeError", "callCommandBeforeEditorView", "missingNodeInSchema", "name", "MilkdownError", "ErrorCode", "missingMarkInSchema", "Container", "slice", "context", "x", "contextNotFound", "Slice", "#watchers", "#value", "#emit", "watcher", "container", "value", "type", "updater", "w", "off", "SliceType", "name", "ctxCallOutOfScope", "createSlice", "Inspector", "#meta", "#container", "#clock", "#injectedSlices", "#consumedSlices", "#recordedTimers", "#waitTimers", "clock", "meta", "#getSlice", "timer", "duration", "#getTimer", "timerType", "promise", "start", "sliceType", "Ctx", "#inspector", "Clock", "timerNotFound", "Timer", "#promise", "#listener", "#eventUniqId", "#status", "resolve", "reject", "e", "#removeListener", "#waitTimeout", "event", "ifTimeout", "TimerType", "timeout", "createTimer", "emptyOptions", "toString", "value", "options", "settings", "includeImageAlt", "includeHtml", "one", "node", "all", "values", "result", "index", "element", "decodeNamedCharacterReference", "value", "characterReference", "character", "splice", "list", "start", "remove", "items", "end", "chunkStart", "parameters", "push", "hasOwnProperty", "combineExtensions", "extensions", "all", "index", "syntaxExtension", "extension", "hook", "left", "right", "code", "value", "constructs", "existing", "list", "before", "splice", "decodeNumericCharacterReference", "value", "base", "code", "normalizeIdentifier", "value", "asciiAlpha", "regexCheck", "asciiAlphanumeric", "asciiAtext", "asciiControl", "code", "asciiDigit", "asciiHexDigit", "asciiPunctuation", "markdownLineEnding", "markdownLineEndingOrSpace", "markdownSpace", "unicodePunctuation", "unicodeWhitespace", "regex", "check", "factorySpace", "effects", "ok", "type", "max", "limit", "size", "start", "code", "markdownSpace", "prefix", "content", "initializeContent", "effects", "contentStart", "afterContentStartConstruct", "paragraphInitial", "previous", "code", "factorySpace", "lineStart", "token", "data", "markdownLineEnding", "document", "initializeDocument", "containerConstruct", "tokenizeContainer", "effects", "self", "stack", "continued", "childFlow", "childToken", "lineStartOffset", "start", "code", "item", "documentContinue", "checkNewContainers", "closeFlow", "indexBeforeExits", "indexBeforeFlow", "point", "exitContainers", "index", "splice", "documentContinued", "flowStart", "thereIsANewContainer", "thereIsNoNewContainer", "containerContinue", "flowContinue", "writeToChild", "markdownLineEnding", "token", "endOfFile", "stream", "seen", "size", "entry", "ok", "nok", "factorySpace", "classifyCharacter", "code", "markdownLineEndingOrSpace", "unicodeWhitespace", "unicodePunctuation", "resolveAll", "constructs", "events", "context", "called", "index", "resolve", "attention", "resolveAllAttention", "tokenizeAttention", "events", "context", "index", "open", "group", "text", "openingSequence", "closingSequence", "use", "nextEvents", "offset", "start", "end", "movePoint", "push", "resolveAll", "splice", "effects", "ok", "attentionMarkers", "previous", "before", "classifyCharacter", "marker", "code", "inside", "token", "after", "close", "point", "autolink", "tokenizeAutolink", "effects", "ok", "nok", "size", "start", "code", "open", "asciiAlpha", "schemeOrEmailAtext", "emailAtext", "asciiAlphanumeric", "schemeInsideOrEmailAtext", "urlInside", "asciiControl", "emailAtSignOrDot", "asciiAtext", "emailLabel", "emailValue", "next", "blankLine", "tokenizeBlankLine", "effects", "ok", "nok", "start", "code", "markdownSpace", "factorySpace", "after", "markdownLineEnding", "blockQuote", "tokenizeBlockQuoteContinuation", "exit", "tokenizeBlockQuoteStart", "effects", "ok", "nok", "self", "start", "code", "state", "after", "markdownSpace", "contStart", "factorySpace", "contBefore", "characterEscape", "tokenizeCharacterEscape", "effects", "ok", "nok", "start", "code", "inside", "asciiPunctuation", "characterReference", "tokenizeCharacterReference", "effects", "ok", "nok", "self", "size", "max", "test", "start", "code", "open", "numeric", "asciiAlphanumeric", "value", "asciiHexDigit", "asciiDigit", "token", "decodeNamedCharacterReference", "nonLazyContinuation", "tokenizeNonLazyContinuation", "codeFenced", "tokenizeCodeFenced", "effects", "ok", "nok", "self", "closeStart", "tokenizeCloseStart", "initialPrefix", "sizeOpen", "marker", "start", "code", "beforeSequenceOpen", "tail", "sequenceOpen", "markdownSpace", "factorySpace", "infoBefore", "markdownLineEnding", "atNonLazyBreak", "after", "info", "metaBefore", "meta", "contentBefore", "contentStart", "beforeContentChunk", "contentChunk", "size", "startBefore", "beforeSequenceClose", "sequenceClose", "sequenceCloseAfter", "lineStart", "codeIndented", "tokenizeCodeIndented", "furtherStart", "tokenizeFurtherStart", "effects", "ok", "nok", "self", "start", "code", "factorySpace", "afterPrefix", "tail", "atBreak", "after", "markdownLineEnding", "inside", "codeText", "previous", "resolveCodeText", "tokenizeCodeText", "events", "tailExitIndex", "headEnterIndex", "index", "enter", "code", "effects", "ok", "nok", "self", "sizeOpen", "size", "token", "start", "sequenceOpen", "between", "sequenceClose", "markdownLineEnding", "data", "SpliceBuffer", "initial", "index", "start", "end", "stop", "deleteCount", "items", "count", "removed", "chunkedPush", "item", "n", "list", "right", "chunkStart", "subtokenize", "eventsArray", "jumps", "index", "event", "lineIndex", "otherIndex", "otherEvent", "parameters", "subevents", "more", "events", "SpliceBuffer", "subcontent", "splice", "eventIndex", "token", "context", "startPosition", "startPositions", "tokenizer", "childEvents", "gaps", "stream", "previous", "current", "adjust", "start", "breaks", "slice", "content", "resolveContent", "tokenizeContent", "continuationConstruct", "tokenizeContinuation", "events", "subtokenize", "effects", "ok", "previous", "chunkStart", "code", "chunkInside", "contentEnd", "markdownLineEnding", "contentContinue", "nok", "self", "startLookahead", "factorySpace", "prefixed", "tail", "factoryDestination", "effects", "ok", "nok", "type", "literalType", "literalMarkerType", "rawType", "stringType", "max", "limit", "balance", "start", "code", "enclosedBefore", "asciiControl", "raw", "enclosed", "markdownLineEnding", "enclosedEscape", "markdownLineEndingOrSpace", "rawEscape", "factoryLabel", "effects", "ok", "nok", "type", "markerType", "stringType", "self", "size", "seen", "start", "code", "atBreak", "markdownLineEnding", "labelInside", "markdownSpace", "labelEscape", "factoryTitle", "effects", "ok", "nok", "type", "markerType", "stringType", "marker", "start", "code", "begin", "atBreak", "markdownLineEnding", "factorySpace", "inside", "escape", "factoryWhitespace", "effects", "ok", "seen", "start", "code", "markdownLineEnding", "markdownSpace", "factorySpace", "definition", "tokenizeDefinition", "titleBefore", "tokenizeTitleBefore", "effects", "ok", "nok", "self", "identifier", "start", "code", "before", "factoryLabel", "labelAfter", "normalizeIdentifier", "markerAfter", "markdownLineEndingOrSpace", "factoryWhitespace", "destinationBefore", "factoryDestination", "destinationAfter", "after", "markdownSpace", "factorySpace", "afterWhitespace", "markdownLineEnding", "beforeMarker", "factoryTitle", "titleAfter", "titleAfterOptionalWhitespace", "hardBreakEscape", "tokenizeHardBreakEscape", "effects", "ok", "nok", "start", "code", "after", "markdownLineEnding", "headingAtx", "resolveHeadingAtx", "tokenizeHeadingAtx", "events", "context", "contentEnd", "contentStart", "content", "text", "splice", "effects", "ok", "nok", "size", "start", "code", "before", "sequenceOpen", "markdownLineEndingOrSpace", "atBreak", "sequenceFurther", "markdownLineEnding", "markdownSpace", "factorySpace", "data", "htmlBlockNames", "htmlRawNames", "htmlFlow", "resolveToHtmlFlow", "tokenizeHtmlFlow", "blankLineBefore", "tokenizeBlankLineBefore", "nonLazyContinuationStart", "tokenizeNonLazyContinuationStart", "events", "index", "effects", "ok", "nok", "self", "marker", "closingTag", "buffer", "markerB", "start", "code", "before", "open", "declarationOpen", "tagCloseStart", "continuationDeclarationInside", "asciiAlpha", "tagName", "commentOpenInside", "cdataOpenInside", "value", "continuation", "markdownLineEndingOrSpace", "slash", "name", "htmlRawNames", "htmlBlockNames", "basicSelfClosing", "completeClosingTagAfter", "completeAttributeNameBefore", "asciiAlphanumeric", "markdownSpace", "completeEnd", "completeAttributeName", "completeAttributeNameAfter", "completeAttributeValueBefore", "completeAttributeValueQuoted", "completeAttributeValueUnquoted", "completeAttributeValueQuotedAfter", "markdownLineEnding", "completeAfter", "continuationCommentInside", "continuationRawTagOpen", "continuationClose", "continuationCdataInside", "continuationAfter", "continuationStart", "continuationStartNonLazy", "continuationBefore", "continuationRawEndTag", "after", "blankLine", "htmlText", "tokenizeHtmlText", "effects", "ok", "nok", "self", "marker", "index", "returnState", "start", "code", "open", "declarationOpen", "tagCloseStart", "instruction", "asciiAlpha", "tagOpen", "commentOpenInside", "cdataOpenInside", "declaration", "commentEnd", "comment", "commentClose", "markdownLineEnding", "lineEndingBefore", "end", "value", "cdata", "cdataClose", "cdataEnd", "instructionClose", "tagClose", "asciiAlphanumeric", "tagCloseBetween", "markdownSpace", "markdownLineEndingOrSpace", "tagOpenBetween", "tagOpenAttributeName", "tagOpenAttributeNameAfter", "tagOpenAttributeValueBefore", "tagOpenAttributeValueQuoted", "tagOpenAttributeValueUnquoted", "tagOpenAttributeValueQuotedAfter", "lineEndingAfter", "factorySpace", "lineEndingAfterPrefix", "labelEnd", "resolveAllLabelEnd", "resolveToLabelEnd", "tokenizeLabelEnd", "resourceConstruct", "tokenizeResource", "referenceFullConstruct", "tokenizeReferenceFull", "referenceCollapsedConstruct", "tokenizeReferenceCollapsed", "events", "index", "newEvents", "token", "offset", "splice", "context", "open", "close", "media", "group", "label", "text", "push", "resolveAll", "effects", "ok", "nok", "self", "labelStart", "defined", "start", "code", "labelEndNok", "normalizeIdentifier", "after", "labelEndOk", "referenceNotFull", "resourceStart", "resourceBefore", "markdownLineEndingOrSpace", "factoryWhitespace", "resourceOpen", "resourceEnd", "factoryDestination", "resourceDestinationAfter", "resourceDestinationMissing", "resourceBetween", "factoryTitle", "resourceTitleAfter", "referenceFull", "factoryLabel", "referenceFullAfter", "referenceFullMissing", "referenceCollapsedStart", "referenceCollapsedOpen", "labelStartImage", "labelEnd", "tokenizeLabelStartImage", "effects", "ok", "nok", "self", "start", "code", "open", "after", "labelStartLink", "labelEnd", "tokenizeLabelStartLink", "effects", "ok", "nok", "self", "start", "code", "after", "lineEnding", "tokenizeLineEnding", "effects", "ok", "start", "code", "factorySpace", "thematicBreak", "tokenizeThematicBreak", "effects", "ok", "nok", "size", "marker", "start", "code", "before", "atBreak", "sequence", "markdownLineEnding", "markdownSpace", "factorySpace", "list", "tokenizeListContinuation", "tokenizeListEnd", "tokenizeListStart", "listItemPrefixWhitespaceConstruct", "tokenizeListItemPrefixWhitespace", "indentConstruct", "tokenizeIndent", "effects", "ok", "nok", "self", "tail", "initialSize", "size", "start", "code", "kind", "asciiDigit", "thematicBreak", "atMarker", "inside", "blankLine", "onBlank", "endOfPrefix", "otherPrefix", "markdownSpace", "notBlank", "factorySpace", "notInCurrentItem", "afterPrefix", "setextUnderline", "resolveToSetextUnderline", "tokenizeSetextUnderline", "events", "context", "index", "content", "text", "definition", "heading", "effects", "ok", "nok", "self", "marker", "start", "code", "paragraph", "before", "inside", "markdownSpace", "factorySpace", "after", "markdownLineEnding", "flow", "initializeFlow", "effects", "self", "initial", "blankLine", "atBlankEnding", "afterConstruct", "factorySpace", "content", "code", "resolver", "createResolver", "string", "initializeFactory", "text", "field", "resolveAllLineSuffixes", "initializeText", "effects", "self", "constructs", "start", "notText", "code", "atBreak", "data", "list", "index", "item", "extraResolver", "resolveAllText", "events", "context", "enter", "eventIndex", "chunks", "bufferIndex", "size", "tabs", "chunk", "token", "constructs_exports", "__export", "attentionMarkers", "contentInitial", "disable", "document", "flow", "flowInitial", "insideSpan", "string", "text", "document", "list", "blockQuote", "contentInitial", "definition", "flowInitial", "codeIndented", "flow", "headingAtx", "thematicBreak", "setextUnderline", "htmlFlow", "codeFenced", "string", "characterReference", "characterEscape", "text", "lineEnding", "labelStartImage", "attention", "autolink", "htmlText", "labelStartLink", "hardBreakEscape", "labelEnd", "codeText", "insideSpan", "resolver", "attentionMarkers", "disable", "createTokenizer", "parser", "initialize", "from", "point", "columnStart", "resolveAllConstructs", "chunks", "stack", "consumed", "effects", "constructFactory", "onsuccessfulconstruct", "onsuccessfulcheck", "consume", "enter", "exit", "context", "defineSkip", "now", "sliceSerialize", "sliceStream", "write", "state", "expectedCode", "slice", "push", "main", "addResult", "resolveAll", "token", "expandTabs", "serializeChunks", "sliceChunks", "_bufferIndex", "_index", "line", "column", "offset", "value", "accountForPotentialSkip", "chunkIndex", "chunk", "go", "code", "markdownLineEnding", "type", "fields", "construct", "info", "_", "onreturn", "hook", "constructs", "returnState", "bogusState", "listOfConstructs", "constructIndex", "currentConstruct", "handleListOfConstructs", "handleMapOfConstructs", "map", "start", "left", "all", "list", "handleConstruct", "store", "nok", "ok", "splice", "startPoint", "startPrevious", "startCurrentConstruct", "startEventsIndex", "startStack", "restore", "startIndex", "startBufferIndex", "endIndex", "endBufferIndex", "view", "head", "index", "result", "atTab", "parse", "options", "parser", "combineExtensions", "constructs_exports", "create", "content", "document", "flow", "string", "text", "initial", "creator", "from", "createTokenizer", "postprocess", "events", "subtokenize", "search", "preprocess", "column", "buffer", "start", "atCarriageReturn", "preprocessor", "value", "encoding", "end", "chunks", "match", "next", "startPosition", "endPosition", "code", "characterEscapeOrReference", "decodeString", "value", "decode", "$0", "$1", "$2", "head", "hex", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "stringifyPosition", "value", "position", "point", "index", "pos", "own", "fromMarkdown", "value", "encoding", "options", "compiler", "postprocess", "parse", "preprocess", "config", "opener", "link", "onenterdata", "heading", "blockQuote", "codeFlow", "buffer", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "onenterlistitemvalue", "list", "onenterlistordered", "paragraph", "onenterreference", "strong", "thematicBreak", "closer", "onexitatxheadingsequence", "onexitautolinkemail", "onexitautolinkprotocol", "onexitdata", "onexitcharacterreferencemarker", "onexitcharacterreferencevalue", "onexitcharacterreference", "onexitcodefenced", "onexitcodefencedfence", "onexitcodefencedfenceinfo", "onexitcodefencedfencemeta", "onexitcodeindented", "onexitcodetext", "onexitdefinitiondestinationstring", "onexitdefinitionlabelstring", "onexitdefinitiontitlestring", "onexithardbreak", "onexithtmlflow", "onexithtmltext", "onexitimage", "onexitlabel", "onexitlabeltext", "onexitlineending", "onexitlink", "onexitreferencestring", "onexitresourcedestinationstring", "onexitresourcetitlestring", "onexitresource", "onexitsetextheading", "onexitsetextheadinglinesequence", "onexitsetextheadingtext", "configure", "data", "compile", "events", "tree", "context", "enter", "exit", "resume", "listStack", "index", "tail", "prepareList", "handler", "defaultOnError", "point", "start", "length", "containerBalance", "listSpread", "lineIndex", "firstBlankLineIndex", "atMarker", "event", "tailIndex", "tailEvent", "item", "create", "and", "open", "token", "node", "errorHandler", "close", "onExitError", "stringifyPosition", "toString", "ancestor", "label", "normalizeIdentifier", "depth", "siblings", "text", "referenceType", "string", "decodeString", "fragment", "children", "type", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "d", "combined", "extensions", "extension", "key", "right", "left", "remarkParse", "options", "self", "parser", "doc", "fromMarkdown", "own", "zwitch", "key", "options", "settings", "one", "value", "parameters", "fn", "handlers", "id", "own", "configure", "base", "extension", "index", "key", "list", "map", "left", "right", "blockquote", "node", "_", "state", "info", "exit", "tracker", "value", "map", "line", "blank", "patternInScope", "stack", "pattern", "listInScope", "list", "none", "index", "hardBreak", "_", "_1", "state", "info", "index", "patternInScope", "longestStreak", "value", "substring", "source", "index", "expected", "count", "max", "formatCodeAsIndented", "node", "state", "checkFence", "state", "marker", "code", "node", "_", "state", "info", "marker", "checkFence", "raw", "suffix", "formatCodeAsIndented", "exit", "value", "map", "tracker", "sequence", "longestStreak", "subexit", "line", "blank", "checkQuote", "state", "marker", "definition", "node", "_", "state", "info", "quote", "checkQuote", "suffix", "exit", "subexit", "tracker", "value", "checkEmphasis", "state", "marker", "encodeCharacterReference", "code", "encodeInfo", "outside", "inside", "marker", "outsideKind", "classifyCharacter", "insideKind", "emphasis", "emphasisPeek", "node", "_", "state", "info", "marker", "checkEmphasis", "exit", "tracker", "before", "between", "betweenHead", "open", "encodeInfo", "encodeCharacterReference", "betweenTail", "close", "after", "_1", "convert", "test", "ok", "castFactory", "anyFactory", "propertiesFactory", "typeFactory", "tests", "checks", "index", "any", "parameters", "check", "checkAsRecord", "all", "node", "nodeAsRecord", "key", "type", "testFunction", "value", "parent", "looksLikeANode", "empty", "CONTINUE", "EXIT", "SKIP", "visitParents", "tree", "test", "visitor", "reverse", "check", "is", "convert", "step", "factory", "node", "index", "parents", "value", "name", "visit", "result", "subresult", "offset", "grandparents", "toResult", "nodeAsParent", "child", "visit", "tree", "testOrVisitor", "visitorOrReverse", "maybeReverse", "reverse", "test", "visitor", "visitParents", "overload", "node", "parents", "parent", "index", "formatHeadingAsSetext", "node", "state", "literalWithBreak", "visit", "EXIT", "toString", "heading", "node", "_", "state", "info", "rank", "tracker", "formatHeadingAsSetext", "exit", "subexit", "value", "sequence", "encodeCharacterReference", "html", "htmlPeek", "node", "image", "imagePeek", "node", "_", "state", "info", "quote", "checkQuote", "suffix", "exit", "subexit", "tracker", "value", "imageReference", "imageReferencePeek", "node", "_", "state", "info", "type", "exit", "subexit", "tracker", "value", "alt", "stack", "reference", "inlineCode", "inlineCodePeek", "node", "_", "state", "value", "sequence", "index", "pattern", "expression", "match", "position", "formatLinkAsAutolink", "node", "state", "raw", "toString", "link", "linkPeek", "node", "_", "state", "info", "quote", "checkQuote", "suffix", "tracker", "exit", "subexit", "formatLinkAsAutolink", "stack", "value", "linkReference", "linkReferencePeek", "node", "_", "state", "info", "type", "exit", "subexit", "tracker", "value", "text", "stack", "reference", "checkBullet", "state", "marker", "checkBulletOther", "state", "bullet", "checkBullet", "bulletOther", "checkBulletOrdered", "state", "marker", "checkRule", "state", "marker", "list", "node", "parent", "state", "info", "exit", "bulletCurrent", "bullet", "checkBulletOrdered", "checkBullet", "bulletOther", "checkBulletOther", "useDifferentMarker", "firstListItem", "checkRule", "index", "item", "value", "checkListItemIndent", "state", "style", "listItem", "node", "parent", "state", "info", "listItemIndent", "checkListItemIndent", "bullet", "checkBullet", "size", "tracker", "exit", "value", "map", "line", "index", "blank", "paragraph", "node", "_", "state", "info", "exit", "subexit", "value", "phrasing", "convert", "root", "node", "_", "state", "info", "d", "phrasing", "checkStrong", "state", "marker", "strong", "strongPeek", "node", "_", "state", "info", "marker", "checkStrong", "exit", "tracker", "before", "between", "betweenHead", "open", "encodeInfo", "encodeCharacterReference", "betweenTail", "close", "after", "_1", "text", "node", "_", "state", "info", "checkRuleRepetition", "state", "repetition", "thematicBreak", "_", "_1", "state", "value", "checkRule", "checkRuleRepetition", "handle", "blockquote", "hardBreak", "code", "definition", "emphasis", "heading", "html", "image", "imageReference", "inlineCode", "link", "linkReference", "list", "listItem", "paragraph", "root", "strong", "text", "thematicBreak", "join", "joinDefaults", "left", "right", "parent", "state", "formatCodeAsIndented", "formatHeadingAsSetext", "fullPhrasingSpans", "unsafe", "association", "node", "decodeString", "compilePattern", "pattern", "before", "containerPhrasing", "parent", "state", "info", "indexStack", "children", "results", "index", "before", "encodeAfter", "tracker", "child", "after", "handle", "value", "encodeCharacterReference", "encodingInfo", "containerFlow", "parent", "state", "info", "indexStack", "children", "tracker", "results", "index", "child", "between", "left", "right", "result", "eol", "indentLines", "value", "map", "result", "start", "line", "match", "one", "safe", "state", "input", "config", "value", "positions", "result", "infos", "index", "pattern", "patternInScope", "expression", "match", "before", "after", "position", "numerical", "start", "end", "escapeBackslashes", "encodeCharacterReference", "a", "b", "results", "whole", "track", "config", "options", "now", "lineShift", "line", "column", "move", "current", "shift", "value", "input", "chunks", "tail", "toMarkdown", "tree", "options", "settings", "state", "association", "containerPhrasingBound", "containerFlowBound", "track", "compilePattern", "enter", "handle", "indentLines", "join", "safeBound", "unsafe", "configure", "joinDefinition", "zwitch", "invalid", "unknown", "result", "name", "exit", "value", "node", "left", "right", "parent", "info", "containerPhrasing", "containerFlow", "config", "safe", "remarkStringify", "options", "self", "compiler", "tree", "toMarkdown", "bail", "error", "import_extend", "isPlainObject", "value", "prototype", "trough", "fns", "pipeline", "run", "use", "values", "middlewareIndex", "callback", "next", "error", "output", "fn", "index", "wrap", "middelware", "middleware", "called", "wrapped", "parameters", "fnExpectsCallback", "result", "done", "exception", "then", "value", "VFileMessage", "causeOrReason", "optionsOrParentOrPlace", "origin", "reason", "options", "legacyCause", "index", "parent", "start", "stringifyPosition", "minpath", "basename", "dirname", "extname", "join", "path", "assertPath", "start", "end", "index", "seenNonSlash", "firstNonSlashEnd", "extnameIndex", "unmatchedSlash", "startPart", "startDot", "preDotState", "code", "segments", "joined", "normalize", "absolute", "value", "normalizeString", "allowAboveRoot", "result", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "minproc", "cwd", "isUrl", "fileUrlOrPath", "urlToPath", "path", "isUrl", "error", "getPathFromURLPosix", "url", "pathname", "index", "third", "order", "VFile", "value", "options", "isUrl", "isUint8Array", "minproc", "index", "field", "minpath", "basename", "assertNonEmpty", "assertPart", "dirname", "assertPath", "extname", "path", "urlToPath", "stem", "causeOrReason", "optionsOrParentOrPlace", "origin", "message", "VFileMessage", "encoding", "part", "name", "CallableInstance", "property", "proto", "value", "apply", "own", "Processor", "_Processor", "CallableInstance", "trough", "destination", "index", "attacher", "extend", "key", "value", "assertUnfrozen", "self", "options", "transformer", "file", "realFile", "vfile", "parser", "assertParser", "done", "assertCompiler", "executor", "resolve", "reject", "parseTree", "error", "tree", "realDone", "compileTree", "compileResult", "looksLikeAValue", "complete", "result", "assertDone", "bail", "assertNode", "transformers", "outputTree", "resultingTree", "compiler", "parameters", "attachers", "namespace", "addPlugin", "addList", "addPreset", "add", "plugin", "plugins", "thing", "entryIndex", "primary", "rest", "currentPrimary", "isPlainObject", "unified", "name", "frozen", "node", "asyncName", "looksLikeAVFile", "VFile", "isUint8Array", "OrderedMap", "content", "key", "i", "found", "value", "newKey", "self", "place", "without", "f", "map", "result", "prop", "dist_default", "findDiffStart", "a", "b", "pos", "i", "childA", "childB", "j", "inner", "findDiffEnd", "posA", "posB", "iA", "iB", "size", "same", "minSize", "Fragment", "_Fragment", "content", "from", "to", "f", "nodeStart", "parent", "child", "end", "start", "blockSeparator", "leafText", "text", "first", "node", "nodeText", "other", "last", "result", "index", "current", "copy", "found", "p", "otherPos", "retIndex", "curPos", "cur", "n", "schema", "value", "array", "joined", "nodes", "offset", "compareDeep", "Mark", "_Mark", "type", "attrs", "set", "placed", "obj", "_", "json", "mark", "marks", "ReplaceError", "Slice", "_Slice", "openStart", "openEnd", "fragment", "insertInto", "removeRange", "openIsolating", "indexTo", "offsetTo", "dist", "insert", "replace", "$from", "$to", "slice", "replaceOuter", "depth", "close", "prepareSliceForReplace", "replaceThreeWay", "replaceTwoWay", "checkJoin", "main", "sub", "joinable", "$before", "$after", "addNode", "target", "addRange", "$start", "$end", "startIndex", "endIndex", "$along", "extra", "ResolvedPos", "_ResolvedPos", "path", "parentOffset", "val", "dOff", "tmp", "after", "next", "pred", "d", "NodeRange", "str", "doc", "rem", "cache", "resolveCache", "elt", "ResolveCache", "resolveCacheSize", "emptyAttrs", "Node", "_Node", "startPos", "includeParents", "name", "wrapMarks", "match", "replacement", "one", "two", "m", "TextNode", "_TextNode", "base", "ContentMatch", "_ContentMatch", "validEnd", "string", "nodeTypes", "stream", "TokenStream", "expr", "parseExpr", "dfa", "nfa", "checkForDeadEnds", "frag", "toEnd", "seen", "search", "types", "finished", "tp", "computed", "active", "scan", "out", "tok", "exprs", "parseExprSeq", "parseExprSubscript", "parseExprAtom", "parseExprRange", "parseNum", "min", "max", "resolveName", "typeName", "connect", "compile", "edge", "term", "edges", "loop", "cmp", "nullFrom", "labeled", "explore", "states", "state", "work", "dead", "defaultAttrs", "defaults", "attrName", "attr", "computeAttrs", "built", "given", "checkAttrs", "values", "initAttrs", "Attribute", "NodeType", "_NodeType", "spec", "group", "before", "matched", "markType", "topType", "validateType", "options", "MarkType", "_MarkType", "rank", "Schema", "instanceSpec", "prop", "dist_default", "contentExprCache", "contentExpr", "markExpr", "gatherMarks", "excl", "ok", "isTagRule", "rule", "isStyleRule", "DOMParser", "_DOMParser", "rules", "matchedStyles", "dom", "context", "ParseContext", "matches", "style", "priority", "blockTags", "ignoreTags", "listTags", "OPT_PRESERVE_WS", "OPT_PRESERVE_WS_FULL", "OPT_OPEN_LEFT", "wsOptionsFor", "preserveWhitespace", "NodeContext", "solid", "fill", "wrap", "parser", "isOpen", "topNode", "topContext", "topOptions", "top", "preserveWS", "lines", "nodeBefore", "domNodeBefore", "matchAfter", "outerWS", "ruleID", "normalizeList", "sync", "oldNeedsBlock", "innerMarks", "styles", "continueAfter", "nodeType", "startIn", "contentDOM", "cautious", "route", "penalty", "cx", "block", "nodeMarks", "markMayApply", "applyMarks", "textNode", "parts", "option", "useRoot", "minDepth", "part", "$context", "deflt", "prevItem", "selector", "DOMSerializer", "_DOMSerializer", "keep", "rendered", "add", "markDOM", "renderSpec", "inline", "toDOM", "structure", "xmlNS", "blockArraysIn", "gatherToDOM", "suspiciousAttributeCache", "suspiciousAttributes", "suspiciousAttributesInner", "tagName", "suspicious", "space", "innerContent", "lower16", "factor16", "makeRecover", "index", "offset", "recoverIndex", "value", "recoverOffset", "DEL_BEFORE", "DEL_AFTER", "DEL_ACROSS", "DEL_SIDE", "MapResult", "pos", "delInfo", "recover", "StepMap", "_StepMap", "ranges", "inverted", "diff", "i", "assoc", "simple", "oldIndex", "newIndex", "start", "oldSize", "newSize", "end", "side", "result", "del", "f", "oldStart", "newStart", "n", "Mapping", "_Mapping", "maps", "mirror", "from", "to", "map", "mirrors", "mapping", "startSize", "mirr", "m", "totalSize", "inverse", "corr", "stepsByID", "Step", "other", "schema", "json", "type", "id", "stepClass", "StepResult", "_StepResult", "doc", "failed", "message", "slice", "e", "ReplaceError", "mapFragment", "fragment", "parent", "mapped", "child", "Fragment", "AddMarkStep", "_AddMarkStep", "mark", "oldSlice", "$from", "Slice", "node", "RemoveMarkStep", "_RemoveMarkStep", "AddNodeMarkStep", "_AddNodeMarkStep", "updated", "newSet", "RemoveNodeMarkStep", "_RemoveNodeMarkStep", "ReplaceStep", "_ReplaceStep", "structure", "contentBetween", "ReplaceAroundStep", "_ReplaceAroundStep", "gapFrom", "gapTo", "insert", "gap", "inserted", "dist", "depth", "next", "addMark", "tr", "removed", "added", "removing", "adding", "marks", "s", "removeMark", "matched", "step", "toRemove", "MarkType", "set", "found", "style", "j", "clearIncompatible", "parentType", "match", "clearNewlines", "replSteps", "cur", "allowed", "newline", "fill", "canCut", "liftTarget", "range", "content", "contentBefore", "contentAfter", "endIndex", "lift", "target", "$to", "gapStart", "gapEnd", "before", "openStart", "d", "splitting", "after", "openEnd", "findWrapping", "nodeType", "attrs", "innerRange", "around", "findWrappingOutside", "inner", "findWrappingInside", "withAttrs", "startIndex", "outer", "inside", "innerMatch", "wrap", "wrappers", "setBlockType", "mapFrom", "attrsHere", "canChangeType", "convertNewlines", "pre", "supportLinebreak", "replaceLinebreaks", "startM", "endM", "replaceNewlines", "$pos", "setNodeMarkup", "newNode", "canSplit", "typesAfter", "base", "innerType", "rest", "overrideChild", "baseType", "split", "typeAfter", "canJoin", "joinable", "canAppendWithSubstitutedLinebreaks", "a", "b", "linebreakReplacement", "join", "tr", "pos", "depth", "convertNewlines", "linebreakReplacement", "$before", "beforeType", "pre", "supportLinebreak", "mapFrom", "$after", "replaceLinebreaks", "clearIncompatible", "mapping", "start", "ReplaceStep", "Slice", "$full", "replaceNewlines", "insertPoint", "doc", "nodeType", "$pos", "d", "index", "dropPoint", "slice", "content", "pass", "bias", "insertPos", "parent", "fits", "wrapping", "replaceStep", "from", "to", "$from", "$to", "fitsTrivially", "Fitter", "unplaced", "Fragment", "i", "node", "fit", "moveInline", "placedSize", "openStart", "openEnd", "ReplaceAroundStep", "startDepth", "cur", "sliceDepth", "fragment", "contentAt", "first", "frontierDepth", "type", "match", "wrap", "inject", "inner", "openAtEnd", "dropFromFragment", "taken", "add", "openEndCount", "next", "matches", "closeNodeStart", "toEnd", "addToFragment", "top", "level", "contentAfterFits", "after", "scan", "dropInner", "close", "attrs", "count", "frag", "open", "invalidMarks", "definesContent", "replaceRange", "targetDepths", "coveredDepths", "preferredTarget", "spec", "preferredTargetIndex", "leftNodes", "preferredDepth", "leftNode", "def", "j", "openDepth", "insert", "targetDepth", "expand", "closeFragment", "startSteps", "oldOpen", "newOpen", "replaceRangeWith", "point", "deleteRange", "shared", "isolated", "covered", "last", "result", "minDepth", "AttrStep", "_AttrStep", "Step", "attr", "value", "StepResult", "name", "updated", "StepMap", "schema", "json", "DocAttrStep", "_DocAttrStep", "TransformError", "message", "err", "Transform", "Mapping", "step", "map", "_f", "_t", "fromB", "toB", "range", "target", "lift", "wrappers", "setBlockType", "marks", "setNodeMarkup", "mark", "AddNodeMarkStep", "Mark", "RemoveNodeMarkStep", "set", "found", "steps", "typesAfter", "split", "addMark", "removeMark", "parentType", "classesById", "Selection", "$anchor", "$head", "ranges", "SelectionRange", "i", "tr", "content", "Slice", "lastNode", "lastParent", "mapFrom", "$from", "$to", "mapping", "selectionToInsertionEnd", "node", "from", "to", "$pos", "dir", "textOnly", "inner", "TextSelection", "findSelectionIn", "depth", "found", "bias", "AllSelection", "doc", "json", "cls", "id", "selectionClass", "warnedAboutTextSelection", "checkTextSelection", "_TextSelection", "marks", "other", "TextBookmark", "anchor", "head", "dPos", "_TextBookmark", "NodeSelection", "_NodeSelection", "$end", "deleted", "pos", "Fragment", "NodeBookmark", "_NodeBookmark", "_AllSelection", "sel", "AllBookmark", "index", "text", "child", "startLen", "last", "step", "ReplaceStep", "ReplaceAroundStep", "map", "end", "_from", "_to", "_newFrom", "newTo", "UPDATED_SEL", "UPDATED_MARKS", "UPDATED_SCROLL", "Transaction", "Transform", "state", "selection", "Mark", "mark", "time", "slice", "inheritMarks", "schema", "key", "value", "_", "bind", "f", "self", "FieldDesc", "name", "desc", "baseFields", "config", "instance", "_marks", "_old", "prev", "Configuration", "plugins", "plugin", "EditorState", "_EditorState", "ignore", "rootTr", "trs", "newState", "seen", "haveNew", "n", "oldState", "j", "newInstance", "fields", "field", "$config", "pluginFields", "result", "m", "prop", "Node", "bindProps", "obj", "target", "val", "Plugin", "spec", "createKey", "keys", "PluginKey", "deleteSelection", "state", "dispatch", "atBlockStart", "view", "$cursor", "joinBackward", "$cut", "findCutBefore", "range", "target", "liftTarget", "before", "deleteBarrier", "textblockAt", "NodeSelection", "depth", "delStep", "replaceStep", "Slice", "tr", "Selection", "joinTextblockBackward", "joinTextblocksAround", "joinTextblocksAround", "state", "$cut", "dispatch", "before", "beforeText", "beforePos", "child", "after", "afterText", "afterPos", "step", "replaceStep", "Slice", "ReplaceStep", "tr", "TextSelection", "textblockAt", "node", "side", "only", "scan", "selectNodeBackward", "view", "$head", "empty", "findCutBefore", "NodeSelection", "$pos", "i", "atBlockEnd", "$cursor", "joinForward", "findCutAfter", "deleteBarrier", "delStep", "Selection", "selectNodeForward", "parent", "newlineInCode", "state", "dispatch", "$head", "$anchor", "defaultBlockAt", "match", "i", "type", "exitCode", "above", "after", "pos", "tr", "Selection", "createParagraphNear", "sel", "$from", "$to", "AllSelection", "side", "TextSelection", "liftEmptyBlock", "$cursor", "before", "canSplit", "range", "target", "liftTarget", "splitBlockAs", "splitNode", "NodeSelection", "types", "splitDepth", "deflt", "atEnd", "atStart", "d", "splitType", "splitPos", "can", "first", "$first", "splitBlock", "selectAll", "state", "dispatch", "AllSelection", "joinMaybeClear", "$pos", "before", "after", "index", "canJoin", "deleteBarrier", "$cut", "dir", "conn", "match", "isolated", "canDelAfter", "end", "wrap", "Fragment", "i", "tr", "ReplaceAroundStep", "Slice", "$joinAt", "selAfter", "Selection", "range", "target", "liftTarget", "textblockAt", "at", "afterText", "afterDepth", "selectTextblockSide", "side", "sel", "depth", "TextSelection", "selectTextblockStart", "selectTextblockEnd", "wrapIn", "nodeType", "attrs", "$from", "$to", "wrapping", "findWrapping", "setBlockType", "applicable", "from", "to", "node", "pos", "markApplies", "doc", "ranges", "type", "enterAtoms", "can", "removeInlineAtoms", "result", "SelectionRange", "toggleMark", "markType", "options", "removeWhenPresent", "dropSpace", "empty", "$cursor", "add", "r", "missing", "parent", "start", "spaceStart", "spaceEnd", "chainCommands", "commands", "state", "dispatch", "view", "i", "backspace", "deleteSelection", "joinBackward", "selectNodeBackward", "del", "joinForward", "selectNodeForward", "pcBaseKeymap", "newlineInCode", "createParagraphNear", "liftEmptyBlock", "splitBlock", "exitCode", "selectAll", "macBaseKeymap", "selectTextblockStart", "selectTextblockEnd", "key", "mac", "baseKeymap", "InputRule", "match", "handler", "options", "stringHandler", "string", "state", "start", "end", "insert", "offset", "cutOff", "undoInputRule", "state", "dispatch", "plugins", "i", "plugin", "undoable", "tr", "toUndo", "j", "marks", "emDash", "InputRule", "ellipsis", "openDoubleQuote", "closeDoubleQuote", "openSingleQuote", "closeSingleQuote", "wrappingInputRule", "regexp", "nodeType", "getAttrs", "joinPredicate", "InputRule", "state", "match", "start", "end", "attrs", "tr", "$start", "range", "wrapping", "findWrapping", "before", "canJoin", "textblockTypeInputRule", "nav", "doc", "agent", "ie_edge", "ie_upto10", "ie_11up", "ie", "ie_version", "gecko", "gecko_version", "_chrome", "chrome", "chrome_version", "safari", "ios", "mac", "android", "webkit", "webkit_version", "run", "view", "from", "to", "text", "rules", "plugin", "state", "$from", "textBefore", "_matcher", "matcher", "match", "tr", "customInputRulesKey", "PluginKey", "customInputRules", "Plugin", "prev", "stored", "$cursor", "event", "android", "chrome", "f", "markRule", "regexp", "markType", "options", "InputRule", "start", "end", "_a", "_b", "_c", "_d", "matchLength", "group", "fullMatch", "initialStoredMarks", "markEnd", "captured", "result", "startSpaces", "textStart", "textEnd", "attrs", "cloneTr", "tr", "equalNodeType", "nodeType", "node", "isTextOnlySlice", "slice", "_node", "findParent", "predicate", "$pos", "depth", "node", "from", "to", "findParentNodeType", "nodeType", "getNodeFromSchema", "type", "schema", "target", "getAtomFromSchemaFail", "findParentNodeClosestToPos", "predicate", "$pos", "i", "node", "findSelectedNodeOfType", "selection", "nodeType", "NodeSelection", "node", "$from", "equalNodeType", "findNodeInSelection", "state", "doc", "from", "to", "hasNode", "pos", "target", "n", "p", "base", "shift", "mac", "ie", "i", "code", "keyName", "event", "ignoreKey", "name", "mac", "windows", "normalizeKeyName", "name", "parts", "result", "alt", "ctrl", "shift", "meta", "i", "mod", "normalize", "map", "copy", "prop", "modifiers", "event", "keymap", "bindings", "Plugin", "keydownHandler", "view", "keyName", "baseName", "direct", "noShift", "base", "fromCode", "StackElement", "Stack", "node", "el", "stackOverFlow", "ParserStackElement", "type", "content", "attrs", "rest", "ParserState", "#marks", "Mark", "schema", "remark", "state", "text", "nodeType", "#closeNodeAndPush", "#addNodeAndPush", "e", "markType", "topElement", "prevNode", "currNode", "merged", "#maybeMerge", "doc", "nodes", "#runNode", "markdown", "tree", "#hasText", "a", "b", "#matchTarget", "result", "x", "parserMatchError", "element", "createNodeInParserFail", "SerializerStackElement", "children", "value", "props", "isFragment", "SerializerState", "mark", "#openMark", "#closeMark", "serializerMatchError", "#runProseNode", "#runProseMark", "marks", "getPriority", "#searchType", "child", "searchNode", "firstChild", "target", "tmp", "#maybeMergeChildren", "nextChildren", "index", "last", "currChildren", "currRest", "prevChildren", "prevRest", "next", "#createMarkdownNode", "#moveSpaces", "onPush", "startSpaces", "endSpaces", "first", "findIndex", "lastChild", "trimmed", "trim", "domIndex", "node", "index", "parentNode", "parent", "reusedRange", "textRange", "from", "to", "range", "clearReusedRange", "isEquivalentPosition", "off", "targetNode", "targetOff", "scanFor", "atomElements", "dir", "_a", "nodeSize", "hasBlockDesc", "child", "textNodeBefore$1", "offset", "textNodeAfter$1", "isOnEdge", "atStart", "atEnd", "dom", "desc", "cur", "selectionCollapsed", "domSel", "keyEvent", "keyCode", "key", "event", "deepActiveElement", "doc", "elt", "caretFromPoint", "x", "y", "pos", "nav", "agent", "ie_edge", "ie_upto10", "ie_11up", "ie", "ie_version", "gecko", "_chrome", "chrome", "chrome_version", "safari", "ios", "mac", "windows", "android", "webkit", "webkit_version", "windowRect", "vp", "getSide", "value", "side", "clientRect", "rect", "scaleX", "scaleY", "scrollRectIntoView", "view", "startDOM", "scrollThreshold", "scrollMargin", "atTop", "bounding", "moveX", "moveY", "startX", "startY", "dX", "dY", "storeScrollPos", "refDOM", "refTop", "localRect", "scrollStack", "stack", "resetScrollPos", "newRefTop", "restoreScrollStack", "dTop", "i", "top", "left", "preventScrollSupported", "focusPreventScroll", "stored", "findOffsetInNode", "coords", "closest", "dxClosest", "coordsClosest", "rowBot", "rowTop", "firstBelow", "coordsBelow", "childIndex", "rects", "dx", "findOffsetInText", "len", "result", "singleRect", "inRect", "targetKludge", "posFromElement", "bias", "posFromCaret", "outsideBlock", "sawBlock", "elementFromPoint", "element", "box", "startI", "j", "posAtCoords", "caret", "p", "next", "prev", "nonZero", "target", "first", "BIDI", "coordsAtPos", "atom", "supportEmptyRange", "rectBefore", "rectAfter", "flattenV", "takeSide", "before", "flattenH", "after", "withFlushedState", "state", "f", "viewState", "active", "endOfTextblockVertical", "sel", "$pos", "nearest", "boxes", "maybeRTL", "endOfTextblockHorizontal", "$head", "oldNode", "oldOff", "anchorNode", "anchorOffset", "oldBidiLevel", "parentDOM", "newNode", "newOff", "cachedState", "cachedDir", "cachedResult", "endOfTextblock", "NOT_DIRTY", "CHILD_DIRTY", "CONTENT_DIRTY", "NODE_DIRTY", "ViewDesc", "children", "contentDOM", "widget", "mark", "outerDeco", "innerDeco", "nodeName", "size", "domBefore", "domAfter", "search", "onlyNodes", "nodeDOM", "scan", "end", "inner", "curPos", "TrailingHackViewDesc", "WidgetViewDesc", "enter", "base", "fromOffset", "toOffset", "childBase", "anchor", "head", "force", "anchorDOM", "headDOM", "selRange", "brKludge", "domSelExtended", "tmp", "mutation", "startInside", "endInside", "level", "dirty", "text", "self", "wrap", "stop", "CompositionViewDesc", "textDOM", "mut", "MarkViewDesc", "_MarkViewDesc", "spec", "inline", "custom", "DOMSerializer", "copy", "nodes", "replaceNodes", "NodeViewDesc", "_NodeViewDesc", "descObj", "applyOuterDeco", "CustomNodeViewDesc", "TextViewDesc", "rule", "Fragment", "sameOuterDeco", "composition", "localComposition", "compositionInChild", "updater", "ViewTreeUpdater", "iterDeco", "insideNode", "Mark", "compIndex", "renderDescs", "iosHacks", "TextSelection", "textNode", "textPos", "findTextInFragment", "topNode", "needsWrap", "oldDOM", "patchOuterDeco", "computeOuterDeco", "docViewDesc", "docView", "_TextViewDesc", "skip", "descs", "written", "childDOM", "rm", "OuterDecoLevel", "noDeco", "attrs", "name", "val", "outerDOM", "prevComputed", "curComputed", "curDOM", "deco", "patchAttributes", "prevList", "curList", "prop", "m", "a", "b", "lock", "preMatch", "start", "marks", "parentIndex", "keep", "depth", "maxKeep", "found", "scanTo", "markDesc", "targetDesc", "e", "domNode", "nextDOM", "updated", "locked", "wrapper", "ch", "lastChild", "hack", "frag", "parentDesc", "curDesc", "descI", "fI", "matched", "matches", "outer", "compareSide", "onWidget", "onNode", "locals", "decoIndex", "restNode", "widgets", "cutAt", "d", "oldCSS", "childStart", "str", "replacement", "selectionFromDOM", "origin", "nearestDesc", "inWidget", "selection", "nearestDescNode", "NodeSelection", "min", "max", "$anchor", "selectionBetween", "editorOwnsSelection", "hasSelection", "selectionToDOM", "syncNodeSelection", "curSel", "selectCursorWrapper", "resetEditableFrom", "resetEditableTo", "brokenSelectBetweenUneditable", "temporarilyEditableNear", "resetEditable", "removeClassOnSelectionChange", "setEditable", "img", "clearNodeSelection", "hasFocusAndSelection", "anchorInRightPlace", "moveSelectionBlock", "$side", "$start", "Selection", "apply", "selectHorizontally", "mods", "$newHead", "nodePos", "nodeLen", "isIgnorable", "skipIgnoredNodes", "skipIgnoredNodesBefore", "skipIgnoredNodesAfter", "moveNode", "moveOffset", "isBlockNode", "setSelFocus", "textNodeAfter", "textNodeBefore", "findDirection", "mid", "selectVertically", "$from", "$to", "beyond", "AllSelection", "stopNativeHorizontalDelete", "empty", "nextNode", "tr", "switchEditable", "safariDownArrowBug", "focusNode", "focusOffset", "getMods", "captureKeyDown", "code", "serializeForClipboard", "slice", "context", "content", "openStart", "openEnd", "serializer", "detachedDoc", "firstChild", "wrappers", "wrapMap", "parseFromClipboard", "html", "plainText", "$context", "inCode", "asText", "Slice", "parsed", "schema", "block", "readHTML", "restoreReplacedSpaces", "contextNode", "sliceData", "DOMParser", "inlineParents", "addContext", "closeSlice", "normalizeSiblings", "fragment", "match", "lastWrap", "inLast", "addToSibling", "closeRight", "wrapped", "withWrappers", "sibling", "fill", "closeRange", "_detachedDoc", "_policy", "maybeWrapTrusted", "trustedTypes", "s", "metas", "firstTag", "n", "array", "type", "handlers", "editHandlers", "passiveHandlers", "InputState", "initInput", "handler", "eventBelongsToView", "runCustomHandler", "ensureListeners", "setSelectionOrigin", "destroyInput", "currentHandlers", "dispatchEvent", "_event", "inOrNearComposition", "now", "deflt", "eventCoords", "isNear", "click", "dy", "runHandlerOnContext", "propName", "inside", "updateSelection", "selectClickedLeaf", "selectClickedNode", "selectedNode", "selectAt", "handleSingleClick", "selectNode", "handleDoubleClick", "handleTripleClick", "defaultTripleClick", "forceDOMFlush", "endComposition", "selectNodeModifier", "flushed", "MouseDown", "targetPos", "timeoutComposition", "selectionBeforeUneditable", "scheduleComposeEnd", "delay", "clearComposition", "timestampFromCustomEvent", "findCompositionNode", "textBefore", "textAfter", "descAfter", "lastChanged", "descBefore", "restarting", "captureCopy", "brokenClipboardAPI", "cut", "data", "sliceSingleNode", "capturePaste", "plain", "doPaste", "preferPlain", "singleNode", "getText", "clipboardData", "uris", "Dragging", "move", "dragCopyModifier", "dragMoves", "test", "mouseDown", "draggedSlice", "dragging", "_", "handleDrop", "eventPos", "$mouse", "insertPos", "dropPoint", "isNode", "beforeInsert", "_from", "_to", "_newFrom", "newTo", "domChangeCount", "$cursor", "compareObjs", "WidgetType", "_WidgetType", "toDOM", "noSpec", "mapping", "span", "oldOffset", "deleted", "Decoration", "other", "InlineType", "_InlineType", "NodeType", "_NodeType", "_Decoration", "none", "DecorationSet", "_DecorationSet", "local", "decorations", "buildTree", "predicate", "childOff", "options", "newLocal", "mapped", "mapChildren", "byPos", "childNode", "childOffset", "baseOffset", "takeSpansForNode", "moveSpans", "withoutNulls", "removed", "dec", "localSet", "DecorationGroup", "removeOverlap", "_DecorationGroup", "members", "mappedDecos", "member", "sorted", "r", "oldChildren", "moved", "oldStart", "oldEnd", "newStart", "newEnd", "dSize", "mustRebuild", "fromLocal", "toLocal", "mapAndGatherRemainingDecorations", "built", "spans", "gather", "set", "hasNulls", "localStart", "subtree", "working", "insertAhead", "viewDecorations", "observeOptions", "useCharData", "SelectionState", "DOMObserver", "handleDOMChange", "mutations", "take", "ancestors", "container", "newSel", "typeOver", "added", "brs", "br", "blockParent", "readSel", "checkCSS", "fixUpBadSafariComposition", "previousSibling", "nextSibling", "cssChecked", "cssCheckWarned", "rangeToSelectionRange", "currentAnchor", "safariShadowSelectionRange", "read", "addedNodes", "nextCell", "parseBetween", "from_", "to_", "find", "startDoc", "parser", "ruleFromNode", "isInline", "readDOMChange", "compositionID", "$before", "shared", "parse", "compare", "preferredPos", "preferredSide", "change", "findDiff", "resolveSelection", "$fromA", "inlineChange", "looksLikeBackspace", "chFrom", "chTo", "mkTr", "markChange", "isMarkChange", "parsedSel", "curMarks", "prevMarks", "update", "old", "$newStart", "$newEnd", "skipClosingAndOpening", "$next", "fromEnd", "mayOpen", "endA", "endB", "adjust", "isSurrogatePair", "EditorView", "place", "props", "InputState", "checkStateComponent", "getEditable", "updateCursorWrapper", "buildNodeViews", "docViewDesc", "computeDocDeco", "viewDecorations", "DOMObserver", "from", "to", "typeOver", "added", "readDOMChange", "initInput", "prev", "name", "ensureListeners", "prevProps", "updated", "state", "_a", "redraw", "updateSel", "clearComposition", "pluginsChanged", "nodeViews", "changedNodeViews", "innerDeco", "outerDeco", "scroll", "updateDoc", "oldScrollPos", "storeScrollPos", "forceSelUpdate", "ie", "chrome", "selectionContextChanged", "chromeKludge", "findCompositionNode", "anchorInRightPlace", "selectionToDOM", "syncNodeSelection", "resetScrollPos", "startDOM", "f", "NodeSelection", "target", "scrollRectIntoView", "view", "prevState", "i", "plugin", "pluginView", "dragging", "sel", "found", "movedPos", "Dragging", "propName", "prop", "value", "plugins", "node", "focusPreventScroll", "cached", "search", "coords", "posAtCoords", "pos", "side", "coordsAtPos", "desc", "offset", "bias", "dir", "endOfTextblock", "html", "event", "doPaste", "text", "slice", "serializeForClipboard", "destroyInput", "clearReusedRange", "dispatchEvent", "safari", "deepActiveElement", "safariShadowSelectionRange", "tr", "dispatchTransaction", "attrs", "attr", "Decoration", "dom", "sel1", "sel2", "depth", "result", "add", "obj", "a", "b", "nA", "nB", "_", "withMeta", "plugin", "meta", "remarkHandlers", "node", "_", "state", "info", "value", "marker", "exit", "tracker", "editorViewCtx", "createSlice", "editorStateCtx", "initTimerCtx", "editorCtx", "inputRulesCtx", "prosePluginsCtx", "remarkPluginsCtx", "nodeViewCtx", "markViewCtx", "remarkCtx", "unified", "remarkParse", "remarkStringify", "remarkStringifyOptionsCtx", "ConfigReady", "createTimer", "config", "configure", "ctx", "InitReady", "init", "editor", "options", "SchemaReady", "schemaTimerCtx", "schemaCtx", "nodesCtx", "marksCtx", "extendPriority", "x", "rule", "schema", "remark", "processor", "acc", "plug", "Schema", "key", "CommandManager", "#ctx", "callCommandBeforeEditorView", "commands", "get", "chains", "chained", "chainCommands", "view", "command", "pipe", "slice", "payload", "cmd", "#container", "Container", "createCmdKey", "commandsCtx", "commandsTimerCtx", "CommandsReady", "overrideBaseKeymap", "keymap", "undoInputRule", "deleteSelection", "joinTextblockBackward", "selectNodeBackward", "KeymapManager", "#keymap", "item", "keymaps", "remove", "keymapItem", "fn", "base", "baseKeymap", "items", "sortedItems", "a", "b", "dispatch", "ctxCallOutOfScope", "keymapCtx", "keymapTimerCtx", "KeymapReady", "km", "ParserReady", "outOfScope$1", "parserCtx", "parserTimerCtx", "parser", "ParserState", "SerializerReady", "serializerTimerCtx", "outOfScope", "serializerCtx", "serializer", "SerializerState", "defaultValueCtx", "editorStateOptionsCtx", "editorStateTimerCtx", "EditorStateReady", "getDoc", "defaultValue", "DOMParser", "Node", "docTypeError", "key$1", "PluginKey", "editorState", "rules", "optionsOverride", "prosePlugins", "doc", "disposeBaseKeymap", "plugins", "Plugin", "_tr", "_value", "_oldState", "newState", "customInputRules", "EditorState", "pasteRulesCtx", "pasteRulesTimerCtx", "PasteRulesReady", "pasteRule", "EditorViewReady", "editorViewTimerCtx", "editorViewOptionsCtx", "rootCtx", "rootDOMCtx", "rootAttrsCtx", "createViewContainer", "root", "container", "attrs", "prepareViewDom", "dom", "editorView", "el", "xs", "EditorView", "isPlainText", "runner", "EditorStatus", "Editor", "enable", "#enableInspector", "onChange", "#onStatusChange", "#configureList", "_plugins", "#usrPluginStore", "#status", "#prepare", "resolve", "#cleanup", "#setStatus", "#loadInternal", "#loadPluginInStore", "#sysPluginStore", "clearPlugins", "#cleanupInternal", "action", "#clock", "Clock", "Ctx", "configPlugin", "internalPlugins", "store", "handler", "cleanup", "status", "loader", "mathFromMarkdown", "enterMathFlow", "enterMathFlowMeta", "enterMathText", "exitMathFlow", "exitMathFlowFence", "exitMathFlowMeta", "exitMathData", "exitMathText", "token", "code", "data", "node", "mathToMarkdown", "options", "single", "inlineMath", "inlineMathPeek", "math", "_", "state", "info", "raw", "tracker", "sequence", "longestStreak", "exit", "value", "subexit", "size", "index", "pattern", "expression", "match", "position", "mathFlow", "tokenizeMathFenced", "nonLazyContinuation", "tokenizeNonLazyContinuation", "effects", "ok", "nok", "self", "tail", "initialSize", "sizeOpen", "start", "code", "sequenceOpen", "factorySpace", "metaBefore", "markdownLineEnding", "metaAfter", "meta", "beforeNonLazyContinuation", "after", "tokenizeClosingFence", "contentStart", "beforeContentChunk", "contentChunk", "size", "beforeSequenceClose", "sequenceClose", "afterSequenceClose", "lineStart", "mathText", "options", "single", "tokenizeMathText", "resolveMathText", "previous", "effects", "ok", "nok", "self", "sizeOpen", "size", "token", "start", "code", "sequenceOpen", "between", "sequenceClose", "markdownLineEnding", "data", "events", "tailExitIndex", "headEnterIndex", "index", "enter", "math", "options", "mathFlow", "mathText", "ParseError", "_ParseError", "message", "token", "error", "start", "end", "loc", "input", "underlined", "left", "right", "uppercase", "hyphenate", "str", "ESCAPE_LOOKUP", "ESCAPE_REGEX", "escape", "text", "match", "getBaseElem", "group", "characterNodesTypes", "isCharacterBox", "protocolFromUrl", "url", "protocol", "SETTINGS_SCHEMA", "color", "def", "defs", "s", "n", "getDefaultValue", "schema", "type", "defaultType", "Settings", "options", "prop", "optionValue", "errorCode", "errorMsg", "strict", "context", "trust", "Style", "id", "size", "cramped", "styles", "sup", "sub", "fracNum", "fracDen", "cramp", "text$1", "D", "Dc", "T", "Tc", "S", "Sc", "SS", "SSc", "Style$1", "scriptData", "scriptFromCodepoint", "codepoint", "i", "script", "_i", "block", "allBlocks", "b", "supportedCodepoint", "doubleBrushStroke", "svgPath", "hLinePad", "sqrtMain", "extraVinculum", "sqrtSize1", "sqrtSize2", "sqrtSize3", "sqrtSize4", "phasePath", "y", "x", "sqrtTall", "viewBoxHeight", "vertSegment", "sqrtPath", "path", "innerPath", "name", "height", "tallDelim", "label", "midHeight", "DocumentFragment", "children", "className", "frag", "markup", "toText", "child", "ptPerUnit", "relativeUnit", "validUnit", "unit", "calculateSize", "sizeValue", "scale", "unitOptions", "makeEm", "createClass", "classes", "cls", "initNode", "style", "toNode", "tagName", "node", "key", "attr", "invalidAttributeNameRegex", "toMarkup", "Span", "attribute", "value", "Anchor", "href", "Img", "src", "alt", "iCombinations", "SymbolNode", "depth", "italic", "skew", "width", "span", "needsSpan", "escaped", "SvgNode", "attributes", "svgNS", "PathNode", "pathName", "alternate", "LineNode", "assertSymbolDomNode", "assertSpan", "hasHtmlDomChildren", "fontMetricsData", "sigmasAndXis", "extraCharacterMap", "setFontMetrics", "fontName", "metrics", "getCharacterMetrics", "character", "font", "mode", "ch", "fontMetricsBySizeIndex", "getGlobalMetrics", "sizeIndex", "ATOMS", "NON_ATOMS", "symbols", "defineSymbol", "replace", "acceptUnicodeChar", "math", "main", "ams", "accent", "bin", "close", "inner", "mathord", "op", "open", "punct", "rel", "spacing", "textord", "ligatures", "mathTextSymbols", "textSymbols", "_ch", "letters", "_i2", "_ch2", "wideChar", "_i3", "_ch3", "_i4", "_ch4", "extraLatin", "_i5", "_ch5", "wideLatinLetterData", "wideNumeralData", "wideCharacterFont", "H", "L", "codePoint", "j", "lookupSymbol", "replacement", "makeSymbol", "lookup", "symbolNode", "mathsym", "boldsymbol", "makeOrd", "isFont", "fontOrFamily", "wideFontName", "wideFontClass", "fontClasses", "fontData", "fontMap", "retrieveTextFontName", "parts", "makeFragment", "_fontName", "_fontName2", "_fontName3", "canCombine", "prev", "next", "_key", "tryCombineChars", "chars", "sizeElementFromChildren", "elem", "maxFontSize", "makeSpan", "makeSvgSpan", "makeLineSpan", "thickness", "line", "makeAnchor", "anchor", "fragment", "wrapFragment", "getVListChildrenAndDepth", "params", "oldChildren", "_depth", "currPos", "diff", "bottom", "firstChild", "makeVList", "pstrutSize", "pstrut", "realChildren", "minPos", "maxPos", "_child", "_elem", "childWrap", "vlist", "rows", "emptySpan", "depthStrut", "topStrut", "vtable", "makeGlue", "measurement", "rule", "fontFamily", "fontWeight", "fontShape", "baseFontName", "fontStylesName", "svgData", "staticSvg", "svgNode", "thinspace", "mediumspace", "thickspace", "spacings", "tightSpacings", "_functions", "_htmlGroupBuilders", "_mathmlGroupBuilders", "defineFunction", "_ref", "names", "props", "handler", "htmlBuilder", "mathmlBuilder", "data", "defineFunctionBuilders", "_ref2", "normalizeArgument", "arg", "ordargument", "binLeftCanceller", "binRightCanceller", "styleMap$1", "DomEnum", "buildExpression$1", "expression", "isRealGroup", "surrounding", "groups", "output", "buildGroup$1", "glueOptions", "dummyPrev", "dummyNext", "isRoot", "_traverseNonSpaceNodes", "prevType", "_tightSpacings$prevTy", "_spacings$prevType", "getTypeOfDomTree", "space", "nodes", "callback", "partialGroup", "checkPartialGroup", "nonspace", "result", "index", "_getOutermostNode", "side", "makeNullDelimiter", "moreClasses", "baseOptions", "groupNode", "multiplier", "buildHTMLUnbreakable", "body", "strut", "buildHTML", "tree", "tag", "eqnNum", "nobreak", "tagChild", "htmlNode", "newDocumentFragment", "MathNode", "TextNode", "SpaceNode", "noVariantSymbols", "rowLikeTypes", "makeText", "makeRow", "getVariant", "isNumberPunctuation", "buildExpression", "isOrdgroup", "buildGroup", "lastGroup", "_group", "base", "lastChild", "buildExpressionRow", "buildMathML", "texExpression", "isDisplayMode", "forMathmlOnly", "wrapper", "annotation", "semantics", "wrapperClass", "sizeStyleMap", "sizeMultipliers", "sizeAtStyle", "Options", "_Options", "extension", "wantSize", "oldOptions", "optionsFromSettings", "settings", "displayWrap", "buildTree", "katexNode", "mathMLNode", "_htmlNode", "buildHTMLTree", "stretchyCodePoint", "stretchyMathML", "katexImagesData", "wideAccentLabels", "stretchySvg", "buildSvgSpan_", "viewBoxWidth", "grp", "numChars", "_height", "imgIndex", "spans", "paths", "_minWidth", "_viewBoxHeight", "_height2", "numSvgChildren", "widthClasses", "aligns", "align1", "_path", "_svgNode", "_span", "minWidth", "stretchyEnclose", "topPad", "bottomPad", "img", "totalHeight", "lines", "assertNodeType", "assertSymbolNodeType", "typedNode", "checkSymbolNodeType", "getBaseSymbol", "htmlBuilder$a", "supSubGroup", "mustShift", "_getBaseSymbol$skew", "_getBaseSymbol", "accentBelow", "clearance", "accentBody", "accentFull", "accentWrap", "mathmlBuilder$9", "accentNode", "NON_STRETCHY_ACCENT_REGEX", "args", "isStretchy", "isShifty", "parser", "funcName", "innerGroup", "kern", "paddedNode", "optArgs", "newOptions", "upperGroup", "arrowPrefix", "lowerGroup", "arrowBody", "arrowShift", "upperShift", "lowerShift", "arrowNode", "upperNode", "lowerNode", "_lowerNode", "htmlBuilder$9", "elements", "mathmlBuilder$8", "binrelClass", "atom", "_ref3", "baseArg", "shiftedArg", "mclass", "baseOp", "supsub", "cdArrowFunctionName", "newCell", "isStartOfArrow", "isLabelEnd", "endChar", "cdArrow", "arrowChar", "labels", "leftLabel", "bareArrow", "sizedArrow", "rightLabel", "arrowGroup", "arrow", "parseCD", "parsedRows", "row", "rowNodes", "cell", "labelNum", "inLabel", "k", "wrappedArrow", "cols", "parent", "number", "code", "htmlBuilder$8", "mathmlBuilder$7", "breakOnTokenText", "newLine", "globalMap", "checkControlSequence", "tok", "getRHS", "letCommand", "global", "macro", "numArgs", "insert", "delimiters", "tokens", "_ref4", "middle", "getMetrics", "symbol", "styleWrap", "delim", "toStyle", "delimSizeMultiplier", "centerSpan", "shift", "makeSmallDelim", "center", "mathrmSize", "makeLargeDelim", "makeGlyphSpan", "sizeClass", "corner", "makeInner", "lapInEms", "lap", "verts", "doubleVerts", "makeStackedDelim", "heightTotal", "top", "repeat", "svgLabel", "topMetrics", "topHeightTotal", "repeatMetrics", "repeatHeightTotal", "bottomMetrics", "bottomHeightTotal", "middleHeightTotal", "middleFactor", "middleMetrics", "minHeight", "repeatCount", "realHeightTotal", "axisHeight", "stack", "pathStr", "svg", "innerHeight", "_innerHeight", "vbPad", "emPad", "sqrtSvg", "sqrtName", "pathNode", "makeSqrtImage", "traverseSequence", "stackLargeDelimiterSequence", "sizeMultiplier", "spanHeight", "texHeight", "advanceWidth", "sizeToMaxHeight", "stackLargeDelimiters", "stackAlwaysDelimiters", "stackNeverDelimiters", "makeSizedDelim", "stackNeverDelimiterSequence", "stackAlwaysDelimiterSequence", "delimTypeToFont", "delimKind", "sequence", "delimType", "heightDepth", "makeCustomSizedDelim", "makeLeftRightDelim", "delimiterFactor", "delimiterExtend", "maxDistFromAxis", "delimiterSizes", "checkDelimiter", "symDelim", "assertParsed", "innerDepth", "hadMiddle", "leftDelim", "middleDelim", "isMiddle", "rightDelim", "colorOptions", "leftNode", "rightNode", "textNode", "middleNode", "htmlBuilder$7", "imgShift", "isSingleChar", "lineWeight", "angleHeight", "ruleThickness", "mathmlBuilder$6", "fboxsep", "thk", "borderColor", "backgroundColor", "_ref5", "_ref6", "_environments", "defineEnvironment", "_macros", "defineMacro", "SourceLocation", "_SourceLocation", "lexer", "first", "second", "Token", "_Token", "endToken", "getHLines", "hlineInfo", "nxt", "validateAmsEnvironmentContext", "gatherEnvironments", "getAutoTag", "parseArray", "hskipBeforeAndAfter", "addJot", "arraystretch", "colSeparationType", "autoTag", "singleRow", "emptySingleRow", "maxNumCols", "leqno", "stretch", "rowGaps", "hLinesBeforeRow", "tags", "beginRow", "endRow", "cellBody", "dCellStyle", "envName", "htmlBuilder$6", "r", "c", "nr", "nc", "hlines", "pt", "arraycolsep", "localMultiplier", "baselineskip", "jot", "arrayskip", "arstrutHeight", "arstrutDepth", "setHLinePos", "hlinesInGap", "inrow", "outrow", "elt", "rowGap", "gap", "offset", "colDescriptions", "colSep", "colDescrNum", "tagSpans", "rw", "tagSpan", "_colDescr3", "colDescr", "firstSeparator", "_colDescr", "lineType", "separator", "_shift", "sepwidth", "_colDescr$pregap", "_colDescr2", "colElems", "_shift2", "colVList", "colSpan", "_colDescr$postgap", "_colDescr4", "tableBody", "dashes", "vListElems", "hline", "lineShift", "eqnNumCol", "tagCol", "alignMap", "mathmlBuilder$5", "tbl", "glue", "table", "menclose", "align", "columnLines", "prevTypeWasAlign", "iStart", "iEnd", "col", "_cols", "rowLines", "alignedHandler", "separationType", "isSplit", "res", "numMaths", "numCols", "emptyGroup", "arg0", "isAligned", "styling", "ordgroup", "curMaths", "pregap", "symNode", "colalign", "nde", "ca", "colAlign", "payload", "environments", "nameGroup", "env", "_args", "endNameToken", "htmlBuilder$5", "mathmlBuilder$4", "fontAliases", "func", "htmlBuilder$4", "nstyle", "dstyle", "numerm", "hStrut", "dStrut", "denomm", "ruleWidth", "ruleSpacing", "numShift", "denomShift", "frac", "midShift", "candidateClearance", "delimSize", "mathmlBuilder$3", "withDelims", "leftOp", "rightOp", "wrapWithStyle", "numer", "denom", "hasBarLine", "continued", "replaceWith", "stylArray", "delimFromValue", "delimString", "barNode", "barSize", "styl", "textOrd", "htmlBuilder$3", "braceBody", "vSpan", "mathmlBuilder$2", "trustContext", "item", "firstEquals", "_value", "sizeData", "totalheight", "attributeStr", "keyVal", "mathFunction", "muUnit", "dimension", "fix", "outerMode", "chooseMathStyle", "assembleSupSub", "supGroup", "subGroup", "slant", "baseShift", "subIsSingleCharacter", "finalGroup", "_bottom", "spacer", "noSuccessor", "htmlBuilder$2", "hasLimits", "large", "stash", "oval", "mathmlBuilder$1", "operator", "singleCharBigOps", "fName", "singleCharIntegrals", "htmlBuilder$1", "childText", "isAllString", "word", "identifier", "defaultRuleThickness", "phantom", "amount", "dy", "sizingGroup", "pos", "sizeFuncs", "smashHeight", "smashDepth", "tbArg", "letter", "smashedNode", "theta", "phi", "lineClearance", "minDelimiterHeight", "delimDepth", "rootm", "toShift", "rootVList", "rootVListWrap", "styleMap", "newStyle", "styleAttributes", "htmlBuilderDelegate", "delegate", "_delegate", "isSup", "builderDelegate", "valueBase", "valueSup", "valueSub", "supm", "subm", "supShift", "subShift", "isCharBox", "_newOptions", "minSupShift", "marginRight", "marginLeft", "isOiint", "maxWidth", "psi", "vlistElem", "_vlistElem", "isBrace", "isOver", "nodeType", "_base2", "_base", "variant", "defaultVariant", "cssSpace", "regularSpace", "ord", "pad", "padNode", "textFontFamilies", "textFontWeights", "textFontShapes", "optionsWithFont", "mpadded", "makeVerb", "functions", "spaceRegexString", "controlWordRegexString", "controlSymbolRegexString", "controlWordWhitespaceRegexString", "controlSpaceRegexString", "combiningDiacriticalMarkString", "combiningDiacriticalMarksEndRegex", "tokenRegexString", "Lexer", "char", "nlIndex", "Namespace", "builtins", "globalMacros", "undefs", "undef", "macros", "t", "nextToken", "digitToNumber", "digit", "newcommand", "existsOK", "nonexistsOK", "skipIfExists", "exists", "argText", "dotsByToken", "dotsbGroups", "thedots", "spaceAfterDots", "latexRaiseA", "braketHelper", "one", "middleDouble", "oldMiddle", "oldMiddleDouble", "midMacro", "double", "doubled", "expanded", "implicitCommands", "MacroExpander", "newMode", "isOptional", "delims", "isDelimited", "expandableOnly", "topToken", "expansion", "oldStackLength", "definition", "catcode", "stripped", "bodyLexer", "unicodeSubRegEx", "uSubsAndSups", "unicodeAccents", "unicodeSymbols", "Parser", "_Parser", "consume", "parse", "oldToken", "breakOnInfix", "lex", "overIndex", "numerNode", "denomNode", "numerBody", "denomBody", "_node", "symbolToken", "textordArray", "colorNode", "superscript", "subscript", "limits", "prime", "primes", "isSub", "subsupTokens", "funcData", "totalArgs", "argType", "optional", "_group2", "modeName", "argToken", "regex", "firstToken", "lastToken", "isBlank", "groupEnd", "a", "v", "afterNext", "nucleus", "star", "family", "command", "parseTree", "toParse", "render", "baseNode", "renderToDomTree", "renderToString", "generateParseTree", "renderError", "renderToHTMLTree", "version", "__domTree", "katex", "emptyOptions", "remarkMath", "options", "self", "settings", "data", "micromarkExtensions", "fromMarkdownExtensions", "toMarkdownExtensions", "math", "mathFromMarkdown", "mathToMarkdown", "random", "bytes", "customRandom", "alphabet", "defaultSize", "getRandom", "safeByteCutoff", "mask", "size", "id", "j", "step", "customAlphabet", "nanoid", "customAlphabet", "$command", "key", "cmd", "cmdKey", "createCmdKey", "plugin", "ctx", "CommandsReady", "command", "commandsCtx", "payload", "$inputRule", "inputRule", "plugin", "ctx", "SchemaReady", "ir", "inputRulesCtx", "irs", "x", "$pasteRule", "pasteRule", "plugin", "ctx", "SchemaReady", "pr", "pasteRulesCtx", "prs", "x", "$mark", "id", "schema", "plugin", "ctx", "markSchema", "marksCtx", "ns", "n", "x", "markType", "schemaCtx", "missingMarkInSchema", "$node", "id", "schema", "plugin", "ctx", "nodeSchema", "nodesCtx", "ns", "n", "x", "nodeType", "schemaCtx", "missingNodeInSchema", "$prose", "prose", "prosePlugin", "plugin", "ctx", "SchemaReady", "prosePluginsCtx", "ps", "x", "$shortcut", "shortcut", "plugin", "ctx", "KeymapReady", "km", "keymapCtx", "keymap", "dispose", "$ctx", "value", "name", "slice", "createSlice", "plugin", "ctx", "$nodeSchema", "id", "schema", "schemaCtx", "nodeSchema", "$node", "result", "handler", "$markSchema", "markSchema", "$mark", "$useKeymap", "userKeymap", "keymapDef", "key", "shortcuts", "priority", "$shortcut", "keys", "keymapTuple", "command", "target", "targetKeys", "targetKey", "$nodeAttr", "$markAttr", "$remark", "remark", "initialOptions", "options", "InitReady", "remarkPlugin", "remarkPluginsCtx", "rp", "x", "callCommand", "payload", "commandsCtx", "getMarkdown", "range", "ctx", "view", "editorViewCtx", "schema", "schemaCtx", "serializer", "serializerCtx", "slice", "doc", "replaceAll", "markdown", "flush", "ctx", "view", "editorViewCtx", "doc", "parserCtx", "state", "Slice", "schema", "schemaCtx", "newOptions", "editorStateOptionsCtx", "prosePluginsCtx", "EditorState", "markdownToSlice", "markdown", "ctx", "doc", "parserCtx", "schema", "schemaCtx", "dom", "DOMSerializer", "DOMParser", "replaceRange", "markdown", "range", "ctx", "view", "editorViewCtx", "slice", "markdownToSlice", "splitListItem", "itemType", "itemAttrs", "state", "dispatch", "$from", "$to", "node", "grandParent", "wrap", "Fragment", "depthBefore", "d", "depthAfter", "start", "tr", "Slice", "sel", "pos", "Selection", "nextType", "types", "canSplit", "liftListItem", "itemType", "state", "dispatch", "$from", "$to", "range", "node", "liftToOuterList", "liftOutOfList", "tr", "end", "endOfList", "ReplaceAroundStep", "Slice", "Fragment", "NodeRange", "target", "liftTarget", "$after", "canJoin", "list", "pos", "i", "e", "$start", "item", "atStart", "atEnd", "parent", "indexBefore", "start", "sinkListItem", "startIndex", "nodeBefore", "nestedBefore", "inner", "slice", "before", "after", "definitions", "tree", "cache", "visit", "definition", "id", "clean", "identifier", "value", "remarkInlineLinks", "tree", "definition", "definitions", "visit", "node", "index", "parent", "SKIP", "def", "serializeText", "state", "node", "contentArr", "n", "_", "Fragment", "withMeta", "plugin", "meta", "emphasisAttr", "$markAttr", "emphasisSchema", "$markSchema", "ctx", "remarkStringifyOptionsCtx", "value", "mark", "markType", "toggleEmphasisCommand", "$command", "toggleMark", "emphasisStarInputRule", "$inputRule", "markRule", "fullMatch", "start", "emphasisUnderscoreInputRule", "emphasisKeymap", "$useKeymap", "commands", "commandsCtx", "strongAttr", "strongSchema", "m", "toggleStrongCommand", "strongInputRule", "match", "strongKeymap", "inlineCodeAttr", "inlineCodeSchema", "toggleInlineCodeCommand", "dispatch", "selection", "tr", "from", "to", "x", "name", "t", "inlineCodeInputRule", "inlineCodeKeymap", "linkAttr", "linkSchema", "dom", "expectDomTypeError", "url", "title", "toggleLinkCommand", "payload", "updateLinkCommand", "pos", "p", "type", "end", "linkMark", "TextSelection", "docSchema", "$node", "visitEmptyLine", "ast", "visitParents", "parents", "parent", "index", "remarkPreserveEmptyLinePlugin", "$remark", "paragraphAttr", "$nodeAttr", "paragraphSchema", "$nodeSchema", "lastNode", "editorViewCtx", "shouldPreserveEmptyLine", "turnIntoTextCommand", "setBlockType", "paragraphKeymap", "headingIndex", "i", "defaultHeadingIdGenerator", "headingIdGenerator", "$ctx", "headingAttr", "headingSchema", "getId", "depth", "wrapInHeadingInputRule", "textblockTypeInputRule", "$from", "level", "wrapInHeadingCommand", "downgradeHeadingCommand", "view", "headingKeymap", "blockquoteAttr", "blockquoteSchema", "wrapInBlockquoteInputRule", "wrappingInputRule", "wrapInBlockquoteCommand", "wrapIn", "blockquoteKeymap", "codeBlockAttr", "codeBlockSchema", "attr", "language", "languageAttrs", "createCodeBlockInputRule", "createCodeBlockCommand", "updateCodeBlockLanguageCommand", "codeBlockKeymap", "imageAttr", "imageSchema", "alt", "insertImageCommand", "src", "updateImageCommand", "nodeWithPos", "findSelectedNodeOfType", "newAttrs", "insertImageInputRule", "InputRule", "matched", "hardbreakAttr", "hardbreakSchema", "insertHardbreakCommand", "Selection", "hardbreakKeymap", "hrAttr", "hrSchema", "insertHrInputRule", "insertHrCommand", "paragraph", "_tr", "sel", "bulletListAttr", "bulletListSchema", "ordered", "spread", "wrapInBulletListInputRule", "wrapInBulletListCommand", "bulletListKeymap", "orderedListAttr", "orderedListSchema", "wrapInOrderedListInputRule", "wrapInOrderedListCommand", "orderedListKeymap", "listItemAttr", "listItemSchema", "label", "listType", "sinkListItemCommand", "sinkListItem", "liftListItemCommand", "liftListItem", "splitListItemCommand", "splitListItem", "liftFirstListItem", "empty", "joinBackward", "liftFirstListItemCommand", "listItemKeymap", "textSchema", "htmlAttr", "htmlSchema", "span", "schema", "inputRules", "markInputRules", "isMarkSelectedCommand", "doc", "isNodeSelectedCommand", "nodeType", "findNodeInSelection", "clearTextInCurrentBlockCommand", "$to", "right", "left", "setBlockTypeCommand", "attrs", "wrapInBlockTypeCommand", "blockRange", "wrapping", "findWrapping", "addBlockTypeCommand", "Node", "selectTextNearPosCommand", "clamp", "min", "max", "$pos", "keymap", "remarkAddOrderInListPlugin", "tree", "visit", "child", "remarkLineBreak", "find", "result", "position", "remarkInlineLinkPlugin", "remarkInlineLinks", "isParent", "isHTML", "flatMapWithDepth", "fn", "transform", "out", "nthChild", "xs", "j", "item", "BLOCK_CONTAINER_TYPES", "remarkHtmlTransformer", "_index", "remarkMarker", "file", "getMarker", "inlineNodesCursorPlugin", "$prose", "lock", "Plugin", "PluginKey", "e", "leftDec", "Decoration", "rightDec", "DecorationSet", "hardbreakClearMarkPlugin", "trs", "_oldState", "newState", "step", "ReplaceStep", "AddMarkStep", "hardbreakFilterNodes", "hardbreakFilterPlugin", "notIn", "isInsertHr", "curDepth", "canApply", "syncHeadingIdPlugin", "headingIdPluginKey", "updateId", "found", "idMap", "id", "prevState", "syncListOrderPlugin", "syncOrderLabel", "transactions", "orderedListType", "bulletListType", "listItemType", "handleNodeItem", "order", "changed", "expectedLabel", "needDispatch", "base", "_parent", "plugins", "commonmark", "readFromCache: (key: Node) => TableMap | undefined", "addToCache: (key: Node, value: TableMap) => TableMap", "cache", "readFromCache", "key", "addToCache", "value", "cache: (Node | TableMap)[]", "cachePos", "i", "TableMap", "width: number", "height: number", "map: number[]", "problems: Problem[] | null", "width", "height", "map", "problems", "pos", "curPos", "left", "top", "right", "bottom", "j", "axis", "dir", "a", "b", "leftA", "rightA", "topA", "bottomA", "leftB", "rightB", "topB", "bottomB", "rect", "result: number[]", "seen: Record<number, boolean>", "row", "col", "index", "seen", "result", "table", "rowStart", "rowEnd", "rowEndIndex", "computeMap", "findWidth", "mapPos", "colWidths: ColWidths", "e", "rowNode", "cellNode", "colspan", "rowspan", "colwidth", "h", "start", "w", "colW", "widthIndex", "prev", "colWidths", "expectedPos", "missing", "tableMap", "badWidths", "findBadColWidths", "hasRowSpan", "rowWidth", "prevRow", "cell", "node", "updated", "attrs", "colWidth", "freshColWidth", "result: ColWidths", "getCellAttrs", "dom", "extraAttrs", "widthAttr", "widths", "result: MutableAttrs", "prop", "getter", "setCellAttrs", "attrs: MutableAttrs", "setter", "validateColwidth", "item", "tableNodes", "options", "cellAttrs: Record<string, AttributeSpec>", "cellAttrs", "tableNodeTypes", "schema", "name", "type", "role", "tableEditingKey", "PluginKey", "cellAround", "$pos", "d", "isInTable", "state", "$head", "d", "selectionCell", "sel", "$cell", "cellAround", "cellNear", "$pos", "after", "pos", "role", "before", "pointsAtCell", "moveCellForward", "inSameTable", "$cellA", "$cellB", "nextCell", "$pos", "axis", "dir", "table", "map", "TableMap", "tableStart", "moved", "removeColSpan", "attrs", "pos", "result: CellAttrs", "result", "w", "addColSpan", "i", "columnIsHeader", "col", "headerCell", "tableNodeTypes", "row", "CellSelection", "Selection", "$anchorCell", "$headCell", "rect", "doc", "cells", "p", "ranges", "cell", "from", "SelectionRange", "mapping", "pointsAtCell", "inSameTable", "tableChanged", "TextSelection", "seen: Record<number, boolean>", "rows", "rowContent", "index", "seen", "cellRect", "extraLeft", "extraRight", "Fragment", "fragment", "Slice", "tr", "content", "mapFrom", "$from", "$to", "sel", "node", "f", "anchorTop", "headTop", "anchorBottom", "headBottom", "anchorRect", "headRect", "anchorLeft", "headLeft", "anchorRight", "headRight", "other", "json", "anchorCell", "headCell", "CellBookmark", "anchor: number", "head: number", "anchor", "head", "drawCellSelection", "state", "cells: Decoration[]", "Decoration", "DecorationSet", "isCellBoundarySelection", "afterFrom", "beforeTo", "depth", "d", "isTextSelectionAcrossCells", "fromCellBoundaryNode: Node | undefined", "toCellBoundaryNode: Node | undefined", "fromCellBoundaryNode", "toCellBoundaryNode", "normalizeSelection", "allowTableNodeSelection", "normalize: Selection | undefined", "role: string | undefined", "NodeSelection", "role", "normalize", "$cell", "start", "lastCell", "fixTablesKey", "PluginKey", "changedDescendants", "old", "cur", "offset", "oldSize", "curSize", "outer", "j", "child", "scan", "e", "fixTables", "oldState", "tr: Transaction | undefined", "check", "fixTable", "tablePos", "mustAdd: number[]", "mustAdd", "prob", "first", "last", "end", "add", "role: TableRole", "nodes: Node[]", "nodes", "side", "convertTableNodeToArrayOfRows", "tableNode", "rows: (Node | null)[][]", "rowCount", "colCount", "rowIndex", "row: (Node | null)[]", "colIndex", "cellIndex", "cellPos", "topCellIndex", "leftCellIndex", "convertArrayOfRowsToTableNode", "arrayOfNodes", "newRows: Node[]", "oldRow: Node", "newCells: Node[]", "oldCell", "newCell", "newCells", "newRow", "oldRow", "newRows", "moveRowInArrayOfRows", "indexesOrigin", "indexesTarget", "directionOverride", "direction", "rowsExtracted", "positionOffset", "target: number", "target", "findTable", "$pos", "findParentNode", "node", "findParentNode", "predicate", "$pos", "depth", "node", "getCellsInColumn", "columnIndex", "selection", "table", "findTable", "map", "TableMap", "nodePos", "pos", "getCellsInRow", "rowIndex", "getSelectionRangeInColumn", "tr", "startColIndex", "endColIndex", "startIndex", "endIndex", "i", "cells", "cell", "maybeEndIndex", "indexes", "maybeCells", "firstSelectedColumnCells", "firstRowCells", "$anchor", "headCell", "columnCells", "j", "getSelectionRangeInRow", "startRowIndex", "endRowIndex", "firstSelectedRowCells", "firstColumnCells", "rowCells", "transpose", "array", "_", "column", "moveColumn", "moveColParams", "originIndex", "targetIndex", "select", "indexesOriginColumn", "_getSelectionRangeInC", "indexesTargetColumn", "_getSelectionRangeInC2", "newTable", "moveTableColumn", "start", "index", "lastCell", "$lastCell", "firstCell", "$firstCell", "CellSelection", "indexesOrigin", "indexesTarget", "direction", "rows", "convertTableNodeToArrayOfRows", "moveRowInArrayOfRows", "convertArrayOfRowsToTableNode", "moveRow", "moveRowParams", "indexesOriginRow", "_getSelectionRangeInR", "indexesTargetRow", "_getSelectionRangeInR2", "moveTableRow", "selectedRect", "state", "sel", "selectionCell", "tableStart", "addColumn", "col", "refColumn: number | null", "columnIsHeader", "refColumn", "row", "addColSpan", "type", "tableNodeTypes", "addColumnBefore", "dispatch", "isInTable", "rect", "addColumnAfter", "removeColumn", "mapStart", "attrs", "removeColSpan", "deleteColumn", "removeRow", "tr", "map", "table", "tableStart", "row", "rowPos", "i", "nextRow", "mapFrom", "seen", "col", "index", "pos", "attrs", "cell", "copy", "newPos", "deleteRow", "state", "dispatch", "isInTable", "rect", "selectedRect", "TableMap", "setCellAttr", "name", "value", "state", "dispatch", "isInTable", "$cell", "selectionCell", "tr", "CellSelection", "node", "pos", "deprecated_toggleHeader", "type", "types", "tableNodeTypes", "rect", "selectedRect", "cells", "nodes", "i", "isHeaderEnabledByType", "cellPositions", "cell", "toggleHeader", "options", "isHeaderRowEnabled", "isHeaderColumnEnabled", "selectionStartsAt", "cellsRect", "newType", "relativeCellPos", "cellPos", "toggleHeaderRow: Command", "toggleHeaderColumn: Command", "toggleHeaderCell: Command", "findNextCell", "dir", "before", "row", "rowEnd", "rowNode", "lastChild", "table", "rowStart", "goToNextCell", "direction", "TextSelection", "moveCellForward", "deleteTable", "$pos", "d", "deleteCellSelection", "sel", "baseContent", "Slice", "moveTableRow", "originIndex", "targetIndex", "select", "moveRow", "moveTableColumn", "moveColumn", "pastedCells", "slice", "content", "openStart", "openEnd", "first", "role", "schema", "rows", "left", "right", "fitSlice", "ensureRectangular", "widths: ColWidths", "j", "rowspan", "colspan", "r", "widths", "width", "Fragment", "empty", "nodeType", "Transform", "clipCells", "height", "newWidth", "newHeight", "added: number[]", "newRows: Fragment[]", "frag", "col", "added", "removeColSpan", "newRows", "source", "growTable", "map", "start", "mapFrom", "emptyHead", "cells: Node[]", "add: Node", "add", "header", "emptyRow", "isolateHorizontal", "top", "found", "index", "cellTop", "cellLeft", "isolateVertical", "bottom", "updatePos", "insertCells", "tableStart", "TableMap", "recomp", "from", "to", "handleKeyDown", "keydownHandler", "arrow", "shiftArrow", "maybeSetSelection", "selection", "axis", "view", "Selection", "end", "atEndOfCell", "$next", "nextCell", "newSel", "cellSel: CellSelection", "cellSel", "$head", "handleTripleClick", "doc", "cellAround", "handlePaste", "_", "handleMouseDown", "startEvent", "startDOMCell", "domInCell", "$anchor", "setCellSelection", "_cellUnderMouse", "cellUnderMouse", "$anchor$1", "event", "starting", "tableEditingKey", "inSameTable", "stop", "move", "_event", "anchor", "parent", "dirStr: 'up' | 'down' | 'left' | 'right'", "dirStr", "dom", "mousePos", "inside", "TableView", "node: Node", "defaultCellMinWidth: number", "defaultCellMinWidth", "updateColumnsOnResize", "record", "colgroup", "overrideCol", "overrideValue", "totalWidth", "fixedWidth", "nextDOM", "colwidth", "hasWidth", "cssWidth", "col$1", "after", "_nextDOM$parentNode", "columnResizingPluginKey", "PluginKey", "columnResizing", "handleWidth", "cellMinWidth", "View", "lastColumnResizable", "plugin", "Plugin", "nodeViews", "_plugin$spec", "tableName", "ResizeState", "prev", "pluginState", "handleMouseMove", "handleMouseLeave", "handleDecorations", "activeHandle: number", "dragging: Dragging | false", "activeHandle", "dragging", "action", "handle", "pointsAtCell", "target", "domCellAround", "edgeCell", "updateHandle", "win", "_view$dom$ownerDocume", "currentColWidth", "finish", "event$1", "updateColumnWidth", "draggedWidth", "dragged", "displayColumnWidth", "domWidth", "parts", "side", "offset", "resizeMinWidth", "mapIndex", "attrs", "zeroes", "dom: Node | null", "n", "decorations", "DecorationSet", "_columnResizingPlugin", "Decoration", "tableEditing", "allowTableNodeSelection", "cur", "set", "deleted", "drawCellSelection", "oldState", "normalizeSelection", "fixTables", "nav", "agent", "ie_edge", "ie_upto10", "ie_11up", "ie", "safari", "key", "PluginKey", "isComposing", "spec", "createDecorations", "state", "$from", "$to", "to", "deco", "Decoration", "createSpan", "DecorationSet", "view", "span", "imeSpan", "Plugin", "ccount", "value", "character", "source", "count", "index", "escapeStringRegexp", "string", "findAndReplace", "tree", "list", "options", "ignored", "convert", "pairs", "toPairs", "pairIndex", "visitParents", "visitor", "node", "parents", "index", "grandparent", "parent", "siblings", "handler", "find", "replace", "start", "change", "nodes", "match", "position", "matchObject", "value", "tupleOrList", "result", "tuple", "toExpression", "toFunction", "escapeStringRegexp", "inConstruct", "notInConstruct", "gfmAutolinkLiteralFromMarkdown", "transformGfmAutolinkLiterals", "enterLiteralAutolink", "enterLiteralAutolinkValue", "exitLiteralAutolink", "exitLiteralAutolinkEmail", "exitLiteralAutolinkHttp", "exitLiteralAutolinkWww", "gfmAutolinkLiteralToMarkdown", "token", "node", "tree", "findAndReplace", "findUrl", "findEmail", "_", "protocol", "domain", "path", "match", "prefix", "previous", "isCorrectDomain", "parts", "splitUrl", "result", "atext", "label", "url", "trailExec", "trail", "closingParenIndex", "openingParens", "ccount", "closingParens", "email", "code", "unicodeWhitespace", "unicodePunctuation", "footnoteReference", "footnoteReferencePeek", "enterFootnoteCallString", "enterFootnoteCall", "token", "enterFootnoteDefinitionLabelString", "enterFootnoteDefinition", "exitFootnoteCallString", "label", "node", "normalizeIdentifier", "exitFootnoteCall", "exitFootnoteDefinitionLabelString", "exitFootnoteDefinition", "_", "state", "info", "tracker", "value", "exit", "subexit", "gfmFootnoteFromMarkdown", "gfmFootnoteToMarkdown", "options", "firstLineBlank", "footnoteDefinition", "mapAll", "mapExceptFirst", "line", "index", "blank", "constructsWithoutStrikethrough", "handleDelete", "peekDelete", "gfmStrikethroughFromMarkdown", "enterStrikethrough", "exitStrikethrough", "gfmStrikethroughToMarkdown", "token", "node", "_", "state", "info", "tracker", "exit", "value", "defaultStringLength", "value", "markdownTable", "table", "options", "settings", "align", "stringLength", "alignments", "cellMatrix", "sizeMatrix", "longestCellByColumn", "mostCellsPerRow", "rowIndex", "row", "sizes", "columnIndex", "cell", "serialize", "size", "toAlignment", "code", "before", "after", "lines", "line", "gfmTableFromMarkdown", "enterTable", "enterCell", "enterRow", "exitCodeText", "exitTable", "exit", "token", "align", "d", "value", "replace", "node", "$0", "$1", "gfmTableToMarkdown", "options", "settings", "padding", "alignDelimiters", "stringLength", "around", "inlineCodeWithTable", "handleTable", "handleTableCell", "handleTableRow", "_", "state", "info", "serializeData", "handleTableAsData", "row", "handleTableRowAsData", "subexit", "matrix", "markdownTable", "children", "index", "result", "parent", "handle", "gfmTaskListItemFromMarkdown", "exitCheck", "exitParagraphWithTaskListItem", "gfmTaskListItemToMarkdown", "listItemWithTaskListItem", "token", "node", "parent", "head", "siblings", "index", "firstParaghraph", "sibling", "state", "info", "checkable", "checkbox", "tracker", "value", "handle", "check", "$0", "gfmFromMarkdown", "gfmAutolinkLiteralFromMarkdown", "gfmFootnoteFromMarkdown", "gfmStrikethroughFromMarkdown", "gfmTableFromMarkdown", "gfmTaskListItemFromMarkdown", "gfmToMarkdown", "options", "gfmAutolinkLiteralToMarkdown", "gfmFootnoteToMarkdown", "gfmStrikethroughToMarkdown", "gfmTableToMarkdown", "gfmTaskListItemToMarkdown", "wwwPrefix", "tokenizeWwwPrefix", "domain", "tokenizeDomain", "path", "tokenizePath", "trail", "tokenizeTrail", "emailDomainDotTrail", "tokenizeEmailDomainDotTrail", "wwwAutolink", "tokenizeWwwAutolink", "previousWww", "protocolAutolink", "tokenizeProtocolAutolink", "previousProtocol", "emailAutolink", "tokenizeEmailAutolink", "previousEmail", "text", "gfmAutolinkLiteral", "code", "effects", "ok", "nok", "self", "dot", "data", "start", "gfmAtext", "previousUnbalanced", "atext", "emailDomain", "emailDomainAfter", "emailDomainDot", "asciiAlphanumeric", "asciiAlpha", "wwwStart", "wwwAfter", "buffer", "seen", "protocolStart", "protocolPrefixInside", "protocol", "protocolSlashesInside", "afterProtocol", "asciiControl", "markdownLineEndingOrSpace", "unicodeWhitespace", "unicodePunctuation", "protocolAfter", "size", "wwwPrefixInside", "wwwPrefixAfter", "underscoreInLastSegment", "underscoreInLastLastSegment", "domainInside", "domainAfter", "domainAtPunctuation", "sizeOpen", "sizeClose", "pathInside", "pathAtPunctuation", "trailCharacterReferenceStart", "trailBracketAfter", "trailCharacterReferenceInside", "after", "events", "index", "result", "token", "indent", "tokenizeIndent", "gfmFootnote", "tokenizeDefinitionStart", "tokenizeDefinitionContinuation", "gfmFootnoteDefinitionEnd", "tokenizeGfmFootnoteCall", "tokenizePotentialGfmFootnoteCall", "resolveToPotentialGfmFootnoteCall", "effects", "ok", "nok", "self", "index", "defined", "labelStart", "token", "start", "code", "id", "normalizeIdentifier", "events", "context", "call", "marker", "string", "chunk", "replacement", "size", "data", "callStart", "callData", "markdownLineEndingOrSpace", "callEscape", "identifier", "labelAtMarker", "labelInside", "labelAfter", "labelEscape", "factorySpace", "whitespaceAfter", "blankLine", "afterPrefix", "tail", "gfmStrikethrough", "options", "single", "tokenizer", "tokenizeStrikethrough", "resolveAllStrikethrough", "events", "context", "index", "open", "strikethrough", "text", "nextEvents", "insideSpan", "splice", "resolveAll", "effects", "ok", "nok", "previous", "size", "start", "code", "more", "before", "classifyCharacter", "token", "after", "EditMap", "index", "remove", "add", "addImplementation", "events", "a", "b", "vecs", "slice", "element", "editMap", "at", "gfmTableAlign", "events", "index", "inDelimiterRow", "align", "event", "alignIndex", "gfmTable", "tokenizeTable", "resolveTable", "effects", "ok", "nok", "self", "size", "sizeB", "seen", "start", "code", "index", "type", "tail", "next", "bodyRowStart", "headRowBefore", "headRowStart", "headRowBreak", "markdownLineEnding", "headDelimiterStart", "markdownSpace", "factorySpace", "headRowData", "markdownLineEndingOrSpace", "headRowEscape", "headDelimiterBefore", "headDelimiterValueBefore", "headDelimiterCellBefore", "headDelimiterNok", "headDelimiterLeftAlignmentAfter", "headDelimiterCellAfter", "headDelimiterFiller", "headDelimiterRightAlignmentAfter", "bodyRowBreak", "bodyRowData", "bodyRowEscape", "events", "context", "inFirstCellAwaitingPipe", "rowKind", "lastCell", "cell", "afterHeadAwaitingFirstBodyRow", "lastTableEnd", "currentTable", "currentBody", "currentCell", "map", "EditMap", "event", "token", "flushTableEnd", "flushCell", "gfmTableAlign", "range", "rowEnd", "previousCell", "groupName", "valueName", "getPoint", "now", "relatedStart", "relatedEnd", "valueToken", "end", "a", "table", "tableBody", "exits", "related", "side", "tasklistCheck", "tokenizeTasklistCheck", "gfmTaskListItem", "effects", "ok", "nok", "self", "open", "code", "inside", "markdownLineEndingOrSpace", "close", "after", "markdownLineEnding", "markdownSpace", "spaceThenNonSpace", "factorySpace", "gfm", "options", "combineExtensions", "gfmAutolinkLiteral", "gfmFootnote", "gfmStrikethrough", "gfmTable", "gfmTaskListItem", "emptyOptions", "remarkGfm", "options", "self", "settings", "data", "micromarkExtensions", "fromMarkdownExtensions", "toMarkdownExtensions", "gfm", "gfmFromMarkdown", "gfmToMarkdown", "withMeta", "plugin", "meta", "strikethroughAttr", "$markAttr", "strikethroughSchema", "$markSchema", "ctx", "value", "mark", "node", "state", "markType", "toggleStrikethroughCommand", "$command", "toggleMark", "strikethroughInputRule", "$inputRule", "markRule", "strikethroughKeymap", "$useKeymap", "commands", "commandsCtx", "originalSchema", "tableNodes", "dom", "attrs", "tableSchema", "$nodeSchema", "type", "align", "children", "x", "i", "firstLine", "cell", "tableHeaderRowSchema", "tableRowSchema", "tableCellSchema", "tableHeaderSchema", "createTable", "rowsCount", "colsCount", "cells", "headerCells", "rows", "_", "selectLine", "type", "index", "pos", "tr", "$pos", "$node", "findParentNodeClosestToPos", "node", "table", "isRowSelection", "map", "TableMap", "lastCell", "$lastCell", "createCellSelection", "CellSelection", "firstCell", "$firstCell", "cloneTr", "selectRow", "selectCol", "addRowWithAlignment", "ctx", "tableStart", "row", "rowPos", "acc", "_", "i", "cells", "col", "headerCol", "tableCellSchema", "tableRowSchema", "getAllCellsInTable", "selection", "findTable", "nodePos", "selectTable", "last", "goToPrevTableCellCommand", "$command", "goToNextCell", "withMeta", "goToNextTableCellCommand", "exitTable", "state", "dispatch", "isInTable", "$head", "findParentNodeType", "tableSchema", "to", "paragraphSchema", "Selection", "insertTableCommand", "from", "createTable", "_tr", "sel", "moveRowCommand", "moveTableRow", "moveColCommand", "moveTableColumn", "selectRowCommand", "payload", "selectColCommand", "selectTableCommand", "deleteSelectedCellsCommand", "isRow", "isCol", "deleteTable", "deleteColumn", "deleteRow", "addColBeforeCommand", "addColumnBefore", "addColAfterCommand", "addColumnAfter", "addRowBeforeCommand", "rect", "selectedRect", "addRowAfterCommand", "setAlignCommand", "alignment", "setCellAttr", "insertTableInputRule", "$inputRule", "InputRule", "match", "start", "end", "$start", "tableNode", "TextSelection", "tablePasteRule", "$pasteRule", "slice", "_view", "isPlainText", "fixTable", "rowsCount", "colsCount", "headerRow", "firstDataRow", "headerCells", "cell", "tableHeaderSchema", "newHeaderRow", "remainingRows", "tableCells", "Slice", "Fragment", "wrapOrphanedRows", "fragment", "rowType", "nodes", "pendingRows", "hasOrphans", "flushPendingRows", "emptyHeaderRow", "tableHeaderRowSchema", "fixFragment", "result", "changed", "fixed", "fixedNode", "fixedContent", "cleanEmptyParagraphs", "allNodes", "next", "tableKeymap", "$useKeymap", "commands", "commandsCtx", "id$1", "markdownId", "footnoteDefinitionSchema", "$nodeSchema", "dom", "expectDomTypeError", "label", "id", "footnoteReferenceSchema", "extendListItemSchemaForTask", "listItemSchema", "prev", "baseSchema", "checked", "listType", "spread", "wrapInTaskListInputRule", "depth", "finPos", "keymap", "strikethroughKeymap", "inputRules", "markInputRules", "strikethroughInputRule", "pasteRules", "autoInsertSpanPlugin", "$prose", "imeSpan", "columnResizingPlugin", "columnResizing", "tableEditingPlugin", "tableEditing", "remarkGFMPlugin", "$remark", "remarkGfm", "pluginKey", "PluginKey", "getChildIndex", "parent", "child", "_offset", "keepTableAlignPlugin", "Plugin", "oldState", "check", "tableRow", "tableHeaderRow", "headerCell", "align", "plugins", "schema", "strikethroughAttr", "strikethroughSchema", "toggleStrikethroughCommand", "gfm", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "baseGetTag_default", "isObjectLike", "value", "isObjectLike_default", "symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "isSymbol_default", "reWhitespace", "trimmedEndIndex", "string", "index", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "baseTrim_default", "isObject", "value", "type", "isObject_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "toNumber_default", "now", "root_default", "now_default", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber_default", "isObject_default", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "now_default", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "debounce_default", "ListenerManager", "fn", "listenerCtx", "createSlice", "key", "PluginKey", "listener", "ctx", "InitReady", "listeners", "SerializerReady", "serializer", "serializerCtx", "prevDoc", "prevMarkdown", "prevSelection", "latestTr", "debouncedHandler", "debounce_default", "doc", "markdown", "plugin", "Plugin", "_", "instance", "tr", "currentSelection", "prosePluginsCtx", "x", "EditorViewReady", "isPureText", "content", "child", "withMeta", "plugin", "meta", "dispatchPasteSlice", "view", "slice", "node", "isTextOnlySlice", "clipboard", "$prose", "ctx", "schema", "schemaCtx", "editorViewOptionsCtx", "prev", "html", "prevTransform", "Plugin", "PluginKey", "event", "preProcessedSlice", "parser", "parserCtx", "editable", "clipboardData", "text", "vscodeData", "language", "tr", "codeBlock", "getNodeFromSchema", "TextSelection", "domParser", "DOMParser", "dom", "DOMSerializer", "template", "serializer", "serializerCtx", "doc", "GOOD_LEAF_SIZE", "RopeSequence", "other", "Append", "from", "to", "i", "f", "result", "elt", "values", "Leaf", "prototypeAccessors", "start", "left", "right", "leftLen", "inner", "dist_default", "max_empty_items", "Branch", "_Branch", "items", "eventCount", "state", "preserveItems", "end", "remap", "mapFrom", "transform", "selection", "remaining", "addAfter", "addBefore", "item", "i", "Item", "step", "map", "histOptions", "newItems", "oldItems", "lastItem", "merged", "overflow", "DEPTH_OVERFLOW", "cutOffEvents", "from", "to", "maps", "Mapping", "mirrorPos", "array", "rebasedTransform", "rebasedCount", "rebasedItems", "start", "mapping", "newUntil", "iRebased", "pos", "newMaps", "branch", "count", "upto", "events", "newItem", "last", "dist_default", "n", "cutPoint", "_Item", "mirrorOffset", "other", "HistoryState", "done", "undone", "prevRanges", "prevTime", "prevComposition", "applyTransaction", "history", "tr", "options", "historyTr", "historyKey", "rebased", "closeHistoryKey", "appended", "mustPreserveItems", "rangesFor", "composition", "newGroup", "isAdjacentTo", "mapRanges", "adjacent", "result", "_from", "_to", "ranges", "histTransaction", "redo", "pop", "added", "newHist", "cachedPreserveItems", "cachedPreserveItemsPlugins", "plugins", "historyKey", "PluginKey", "closeHistoryKey", "history", "config", "Plugin", "HistoryState", "Branch", "tr", "hist", "state", "applyTransaction", "view", "e", "inputType", "command", "undo", "redo", "buildCommand", "scroll", "dispatch", "histTransaction", "undoNoScroll", "redoNoScroll", "withMeta", "plugin", "meta", "undoCommand", "$command", "undo", "redoCommand", "redo", "historyProviderConfig", "$ctx", "historyProviderPlugin", "$prose", "ctx", "history", "historyKeymap", "$useKeymap", "commands", "commandsCtx", "trailingConfig", "$ctx", "lastNode", "state", "trailingPlugin", "$prose", "ctx", "trailingPluginKey", "PluginKey", "shouldAppend", "getNode", "plugin", "Plugin", "_", "tr", "value", "__", "doc", "nodeType", "shouldInsertNodeAtEnd", "endPosition", "trailing", "CODE_BLOCK_TONES", "CODE_BLOCK_CLASSES", "normalizeCodeBlockTone", "value", "nextCodeBlockTone", "current", "index", "codeBlockToneLabel", "tone", "labels", "escapeHtml", "value", "DEFAULT_SAFE_INLINE_HTML_TAGS", "renderKatexHtml", "expression", "displayMode", "options", "escapeHtml", "katex", "normalizeFootnoteId", "id", "resolveFootnoteReference", "footnotes", "label", "normalizedId", "hasFootnote", "isSafeInlineHtmlTag", "value", "policy", "normalized", "DEFAULT_SAFE_INLINE_HTML_TAGS", "renderInertInlineHtml", "escapeHtml", "detectBlockquoteAdmonition", "text", "lines", "match", "type", "rest", "ShikiError", "message", "clone", "something", "doClone", "cloneArray", "cloneObj", "arr", "r", "i", "len", "obj", "key", "mergeObjects", "target", "sources", "source", "basename", "path", "idx", "CAPTURING_REGEX_SOURCE", "RegexSource", "regexSource", "captureSource", "captureIndices", "match", "index", "commandIndex", "command", "capture", "result", "strcmp", "a", "b", "strArrCmp", "len1", "len2", "res", "isValidHexColor", "hex", "escapeRegExpCharacters", "value", "CachedFn", "fn", "Theme", "_colorMap", "_defaults", "_root", "colorMap", "parseTheme", "resolveParsedThemeRules", "scopeName", "scopePath", "effectiveRule", "v", "_scopePathMatchesParentScopes", "StyleAttributes", "ScopeStack", "_ScopeStack", "parent", "scopeNames", "name", "segments", "item", "other", "base", "parentScopes", "scopePattern", "scopeMustMatch", "_matchesScope", "fontStyle", "foregroundId", "backgroundId", "settings", "resultLen", "entry", "scopes", "_scope", "j", "lenJ", "foreground", "background", "scope", "ParsedThemeRule", "FontStyle", "FontStyle2", "parsedThemeRules", "defaultFontStyle", "defaultForeground", "defaultBackground", "incomingDefaults", "ColorMap", "defaults", "root", "ThemeTrieElement", "ThemeTrieElementRule", "rule", "color", "emptyParentScopes", "_ThemeTrieElementRule", "scopeDepth", "_ThemeTrieElement", "_mainRule", "rulesWithParentScopes", "_children", "aParentIndex", "bParentIndex", "parentScopeLengthDiff", "dotIndex", "head", "tail", "rules", "child", "EncodedTokenMetadata", "_EncodedTokenMetadata", "encodedTokenAttributes", "languageId", "tokenType", "containsBalancedBrackets", "_languageId", "_tokenType", "_containsBalancedBracketsBit", "_fontStyle", "_foreground", "_background", "createMatchers", "selector", "matchesName", "results", "tokenizer", "newTokenizer", "token", "priority", "matcher", "parseConjunction", "parseOperand", "expressionToNegate", "matcherInput", "expressionInParents", "parseInnerExpression", "isIdentifier", "identifiers", "matchers", "matcher2", "input", "regex", "match", "res", "disposeOnigString", "str", "TopLevelRuleReference", "scopeName", "TopLevelRepositoryRuleReference", "ruleName", "ExternalReferenceCollector", "reference", "key", "ScopeDependencyProcessor", "repo", "initialScopeName", "q", "deps", "dep", "collectReferencesOfReference", "baseGrammarScopeName", "result", "selfGrammar", "baseGrammar", "collectExternalReferencesInTopLevelRule", "collectExternalReferencesInTopLevelRepositoryRule", "injections", "injection", "context", "rule", "collectExternalReferencesInRules", "rules", "patternRepository", "mergeObjects", "include", "parseInclude", "newContext", "BaseReference", "SelfReference", "RelativeReference", "TopLevelReference", "TopLevelRepositoryReference", "indexOfSharp", "HAS_BACK_REFERENCES", "BACK_REFERENCING_END", "endRuleId", "whileRuleId", "Rule", "$location", "id", "name", "contentName", "RegexSource", "location", "basename", "lineText", "captureIndices", "CaptureRule", "retokenizeCapturedWithRuleId", "grammar", "out", "endRegexSource", "allowA", "allowG", "MatchRule", "match", "captures", "RegExpSource", "RegExpSourceList", "IncludeOnlyRule", "patterns", "pattern", "BeginEndRule", "begin", "beginCaptures", "end", "endCaptures", "applyEndPatternLast", "BeginWhileRule", "_while", "whileCaptures", "whileRuleId", "RuleFactory", "_RuleFactory", "helper", "desc", "repository", "mergeObjects", "maximumCaptureId", "captureId", "numericCaptureId", "i", "len", "ruleId", "reference", "parseInclude", "localIncludedRule", "externalGrammarName", "externalGrammarInclude", "externalGrammar", "externalIncludedRule", "rule", "skipRule", "_RegExpSource", "regExpSource", "lastPushedPos", "output", "hasAnchor", "pos", "nextCh", "HAS_BACK_REFERENCES", "newSource", "capturedValues", "capture", "BACK_REFERENCING_END", "g1", "escapeRegExpCharacters", "A0_G0_result", "A0_G1_result", "A1_G0_result", "A1_G1_result", "ch", "item", "index", "onigLib", "regExps", "e", "CompiledRule", "rules", "r", "string", "startPosition", "options", "result", "BasicScopeAttributes", "languageId", "tokenType", "BasicScopeAttributesProvider", "_BasicScopeAttributesProvider", "initialLanguageId", "embeddedLanguages", "ScopeMatcher", "scopeName", "CachedFn", "standardTokenType", "scope", "m", "values", "escapedScopes", "value", "DebugFlags", "UseOnigurumaFindOptions", "TokenizeStringResult", "stack", "stoppedEarly", "_tokenizeString", "isFirstLine", "linePos", "lineTokens", "checkWhileConditions", "timeLimit", "lineLength", "STOP", "anchorPosition", "whileCheckResult", "_checkWhileConditions", "startTime", "scanNext", "matchRuleOrInjections", "matchedRuleId", "hasAdvanced", "endRuleId", "poppedRule", "handleCaptures", "popped", "_rule", "beforePush", "nameScopesList", "pushedRule", "contentNameScopesList", "whileRules", "node", "nodeRule", "whileRule", "ruleScanner", "findOptions", "prepareRuleWhileSearch", "matchResult", "matchRule", "injections", "injectionResult", "matchInjections", "matchResultScore", "injectionResultScore", "prepareRuleSearch", "bestMatchRating", "bestMatchCaptureIndices", "bestMatchRuleId", "bestMatchResultPriority", "scopes", "injection", "matchRating", "ruleScanner2", "getFindOptions", "lineTextContent", "localStack", "maxEnd", "captureRule", "captureIndex", "stackClone", "onigSubStr", "disposeOnigString", "captureRuleScopeName", "captureRuleScopesList", "LocalStackElement", "endPos", "createGrammar", "initialLanguage", "tokenTypes", "balancedBracketSelectors", "grammarRepository", "Grammar", "collectInjections", "selector", "ruleFactoryHelper", "matchers", "createMatchers", "nameMatcher", "matcher", "identifers", "lastIndex", "identifier", "scopesAreMatching", "thisScopeName", "_rootScopeName", "_onigLib", "initGrammar", "sources", "scopeName2", "rawInjections", "expression", "injectionScopeNames", "injectionScopeName", "injectionGrammar", "i1", "i2", "factory", "rawIncludedGrammar", "prevState", "emitBinaryTokens", "StateStackImpl", "rawDefaultMetadata", "defaultStyle", "defaultMetadata", "EncodedTokenMetadata", "rootScopeName", "scopeList", "AttributedScopeStack", "onigLineText", "LineTokens", "base", "clone", "_AttributedScopeStack", "parent", "scopePath", "tokenAttributes", "namesScopeList", "current", "scopeNames", "frame", "ScopeStack", "rawRootMetadata", "rootStyle", "resolvedTokenAttributes", "other", "a", "b", "existingTokenAttributes", "basicScopeAttributes", "styleAttributes", "fontStyle", "foreground", "background", "target", "rawMetadata", "newPath", "scopeThemeMatchResult", "metadata", "self", "_StateStackImpl", "enterPos", "anchorPos", "beginRuleCapturedEOL", "endRule", "el", "res", "outIndex", "contentNameScopeStack", "BalancedBracketSelectors", "balancedBracketScopes", "unbalancedBracketScopes", "excluder", "includer", "tokenTypeOverrides", "endIndex", "scopesList", "containsBalancedBrackets", "scopes2", "SyncRegistry", "theme", "targetScope", "rawGrammar", "Registry", "Theme", "colorMap", "initialScopeName", "configuration", "dependencyProcessor", "ScopeDependencyProcessor", "request", "INITIAL", "resolveColorReplacements", "theme", "options", "replacements", "themeName", "key", "value", "applyColorReplacements", "color", "toArray", "x", "normalizeGetter", "p", "r", "isPlainLang", "lang", "isSpecialLang", "isNoneTheme", "isSpecialTheme", "splitLines", "code", "preserveEnding", "parts", "index", "lines", "line", "VSCODE_FALLBACK_EDITOR_FG", "VSCODE_FALLBACK_EDITOR_BG", "RESOLVED_KEY", "normalizeTheme", "rawTheme", "bg", "fg", "globalSetting", "s", "replacementCount", "replacementMap", "getReplacementColor", "hex", "setting", "replaceFg", "replaceBg", "clone", "replacement", "resolveLangs", "langs", "l", "resolveThemes", "themes", "i", "resolveLangAlias", "name", "alias", "resolved", "ShikiError", "Registry", "_resolver", "_themes", "_langs", "_alias", "t", "_theme", "textmateTheme", "Theme", "embeddedLazilyBy", "grammarConfig", "g", "e", "langsGraphArray", "missingLangs", "_", "dependents", "embedded", "embeddedLang", "Resolver", "engine", "patterns", "langIdOrAlias", "scopeName", "a", "scopeParts", "injections", "subScopeName", "instancesCount", "createShikiPrimitive", "isDisposed", "_registry", "_lastTheme", "resolveLangAlias$1", "getLanguage", "ensureNotDisposed", "_lang", "getTheme", "setTheme", "getLoadedThemes", "getLoadedLanguages", "loadLanguageSync", "loadLanguage", "loadThemeSync", "loadTheme", "dispose", "createShikiPrimitiveAsync", "options", "themes", "langs", "engine", "resolveThemes", "resolveLangs", "createShikiPrimitive", "_grammarStateMap", "setLastGrammarStateToMap", "keys", "state", "getLastGrammarStateFromMap", "GrammarState", "lang", "themes", "toArray", "theme", "INITIAL", "args", "stacksMap", "stack", "getScopes", "scopes", "visited", "pushScope", "name", "getGrammarStack", "ShikiError", "codeToTokensBase", "primitive", "code", "options", "themeName", "isPlainLang", "isNoneTheme", "splitLines", "line", "colorMap", "_grammar", "tokenizeWithTheme", "getLastGrammarState", "_tokenizeWithTheme", "grammar", "result", "grammarState", "colorReplacements", "resolveColorReplacements", "tokenizeMaxLineLength", "tokenizeTimeLimit", "lines", "stateStack", "actual", "final", "i", "len", "lineOffset", "resultWithScopes", "tokensWithScopes", "tokensWithScopesIndex", "tokensLength", "j", "startIndex", "nextStartIndex", "metadata", "color", "applyColorReplacements", "EncodedTokenMetadata", "fontStyle", "token", "themeSettingsSelectors", "setting", "selectors", "scope", "selector", "offset", "tokenWithScopes", "tokenWithScopesText", "explainThemeScopesNameOnly", "explainThemeScopesFull", "themeSelectors", "explainThemeScope", "matchesOne", "matches", "parentScopes", "selectorParentIndex", "parentIndex", "settings", "selectorPieces", "codeToTokensWithThemes", "codeToTokensBaseFn", "themedTokens", "t", "tokens", "alignThemesTokenization", "mergedTokens", "lineIdx", "_token", "tokenIdx", "mergedToken", "themeIdx", "_", "__", "___", "styles", "mergedGrammarState", "s", "outThemes", "count", "outLines", "indexes", "current", "minLength", "n", "htmlVoidElements", "Schema", "property", "normal", "space", "merge", "definitions", "space", "property", "normal", "definition", "Schema", "normalize", "value", "Info", "property", "attribute", "types_exports", "__export", "boolean", "booleanish", "commaOrSpaceSeparated", "commaSeparated", "number", "overloadedBoolean", "spaceSeparated", "powers", "increment", "checks", "types_exports", "DefinedInfo", "Info", "property", "attribute", "mask", "space", "index", "mark", "check", "values", "key", "value", "create", "definition", "properties", "normals", "property", "value", "info", "DefinedInfo", "normalize", "Schema", "aria", "create", "booleanish", "number", "spaceSeparated", "_", "property", "caseSensitiveTransform", "attributes", "attribute", "caseInsensitiveTransform", "attributes", "property", "caseSensitiveTransform", "html", "create", "commaSeparated", "spaceSeparated", "boolean", "number", "booleanish", "overloadedBoolean", "caseInsensitiveTransform", "svg", "create", "commaOrSpaceSeparated", "number", "spaceSeparated", "boolean", "commaSeparated", "caseSensitiveTransform", "xlink", "create", "_", "property", "xmlns", "create", "caseInsensitiveTransform", "xml", "create", "_", "property", "cap", "dash", "valid", "find", "schema", "value", "normal", "normalize", "property", "Type", "Info", "rest", "camelcase", "dashes", "kebab", "DefinedInfo", "$0", "html", "merge", "aria", "xlink", "xmlns", "xml", "svg", "defaultSubsetRegex", "surrogatePairsRegex", "controlCharactersRegex", "regexEscapeRegex", "subsetToRegexCache", "core", "value", "options", "charactersToExpressionCached", "basic", "surrogate", "pair", "index", "all", "character", "subset", "cached", "charactersToExpression", "groups", "hexadecimalRegex", "toHexadecimal", "code", "next", "omit", "value", "decimalRegex", "toDecimal", "code", "next", "omit", "value", "characterEntitiesLegacy", "characterEntitiesHtml4", "dangerous", "own", "characters", "key", "characterEntitiesHtml4", "notAlphanumericRegex", "toNamed", "code", "next", "omit", "attribute", "character", "name", "value", "characterEntitiesLegacy", "dangerous", "formatSmart", "code", "next", "options", "numeric", "toHexadecimal", "named", "toNamed", "decimal", "toDecimal", "stringifyEntities", "value", "options", "core", "formatSmart", "htmlCommentRegex", "bogusCommentEntitySubset", "commentEntitySubset", "comment", "node", "_1", "_2", "state", "stringifyEntities", "encode", "$0", "doctype", "_1", "_2", "_3", "state", "stringify", "values", "options", "settings", "stringify", "values", "re", "whitespace", "thing", "empty", "value", "siblingAfter", "siblings", "siblingBefore", "emptyChildren", "increment", "sibling", "parent", "index", "includeWhitespace", "offset", "next", "whitespace", "own", "omission", "handlers", "omit", "node", "index", "parent", "closing", "omission", "body", "headOrColgroupOrCaption", "dd", "dt", "html", "li", "optgroup", "option", "p", "rubyElement", "tbody", "cells", "tfoot", "thead", "tr", "_", "index", "parent", "next", "siblingAfter", "whitespace", "opening", "omission", "body", "colgroup", "head", "html", "tbody", "node", "siblingAfter", "seen", "child", "whitespace", "index", "parent", "previous", "siblingBefore", "closing", "constants", "element", "node", "index", "parent", "state", "schema", "omit", "selfClosing", "parts", "last", "svg", "attributes", "serializeAttributes", "content", "opening", "closing", "properties", "values", "key", "value", "serializeAttribute", "info", "find", "x", "y", "quote", "result", "name", "stringifyEntities", "stringify", "ccount", "textEntitySubset", "text", "node", "_", "parent", "state", "stringifyEntities", "raw", "node", "index", "parent", "state", "text", "root", "node", "_1", "_2", "state", "handle", "zwitch", "invalid", "unknown", "comment", "doctype", "element", "raw", "root", "text", "node", "node_", "emptyOptions", "emptyCharacterReferences", "emptyChildren", "toHtml", "tree", "options", "options_", "quote", "alternative", "one", "all", "htmlVoidElements", "svg", "html", "node", "index", "parent", "handle", "results", "children", "addClassToHast", "node", "className", "targets", "c", "createPositionConverter", "code", "lines", "splitLines", "line", "indexToPos", "index", "character", "lineText", "posToIndex", "i", "DEFAULT_COLOR_LIGHT_DARK", "COLOR_KEYS", "splitToken", "token", "offsets", "lastOffset", "tokens", "offset", "splitTokens", "breakpoints", "sorted", "b", "line", "breakpointsInToken", "i", "a", "flatTokenVariants", "merged", "variantsOrder", "cssVariablePrefix", "defaultColor", "colorsRendering", "styles", "t", "getTokenStyleObject", "styleKeys", "mergedStyles", "varKey", "idx", "key", "keyName", "cur", "value", "lightIndex", "darkIndex", "ShikiError", "FontStyle", "decorations", "stringifyTokenStyle", "transformerDecorations", "map", "getContext", "shiki", "normalizePosition", "p", "converter", "character", "createPositionConverter", "d", "verifyIntersections", "codeEl", "ctx", "lines", "applyLineSection", "start", "end", "decoration", "lineEl", "text", "startIndex", "endIndex", "stringify", "children", "applyDecoration", "wrapper", "applyLine", "el", "type", "properties", "transform", "addClassToHast", "lineApplies", "items", "foo", "j", "bar", "isFooHasBarStart", "isFooHasBarEnd", "isBarHasFooStart", "isBarHasFooEnd", "builtInTransformers", "getTransformers", "options", "transformers", "sortTransformersByEnforcement", "pre", "post", "normal", "transformer", "namedColors", "findSequence", "position", "nextEscape", "nextClose", "parseColor", "sequence", "colorMode", "rgb", "x", "index", "parseSequence", "commands", "code", "codeInt", "color", "createAnsiSequenceParser", "foreground", "background", "decorations2", "findResult", "styleToken", "defaultNamedColorsMap", "createColorPalette", "namedColorsMap", "namedColor", "name", "rgbColor", "colorTable", "getColorTable", "levels", "r", "g", "level", "tableColor", "defaultAnsiColors", "tokenizeAnsiWithTheme", "theme", "fileContents", "colorReplacements", "resolveColorReplacements", "splitLines", "colorPalette", "parser", "bgColor", "applyColorReplacements", "dimColor", "fontStyle", "hexMatch", "hex", "alpha", "cssVarMatch", "codeToTokensBase", "primitive", "lang", "themeName", "isPlainLang", "isNoneTheme", "codeToTokens", "bg", "fg", "rootStyle", "grammarState", "themes", "themeTokens", "codeToTokensWithThemes", "getLastGrammarStateFromMap", "themeRegs", "themesOrder", "setLastGrammarStateToMap", "themeColorReplacements", "mapThemeColors", "_theme", "property", "cssVar", "codeToHast", "transformerContext", "_code", "_options", "input", "mergeWhitespaces", "mergeSameStyleTokens", "mergeWhitespaceTokens", "splitWhitespaceTokens", "mergeAdjacentStyledTokens", "contextSource", "tokensToHast", "root", "structure", "tabindex", "preNode", "codeNode", "lineNodes", "context", "lineNode", "col", "tokenNode", "style", "syntheticLines", "currentLine", "child", "transformedCode", "result", "newLine", "carryOnContent", "firstOffset", "couldMerge", "match", "leading", "content", "trailing", "expanded", "prevToken", "prevStyle", "currentStyle", "isPrevDecorated", "isDecorated", "hastToHtml", "toHtml", "codeToHtml", "createHighlighterCore", "createShikiPrimitiveAsync", "args", "getLastGrammarState", "JavaScriptScanner", "patterns", "options", "forgiving", "cache", "regexConstructor", "p", "cached", "regex", "e", "string", "startPosition", "_options", "str", "pending", "toResult", "index", "match", "offset", "indice", "i", "regexp", "minIndex", "m", "cpOf", "char", "getOrInsert", "map", "key", "defaultValue", "PosixClassNames", "r", "throwIfNullish", "value", "msg", "charClassOpenPattern", "r", "sharedEscapesPattern", "quantifierRe", "tokenRe", "charClassTokenRe", "tokenize", "pattern", "options", "opts", "flagProperties", "getFlagProperties", "xStack", "context", "isXOn", "tokens", "match", "result", "getTokenWithDetails", "potentialUnnamedCaptureTokens", "numNamedAndOptInUnnamedCaptures", "t", "i", "numCaptures", "splitEscapedNumberToken", "m", "lastIndex", "m0", "m1", "getAllTokensForCharClass", "createAssertionToken", "createSubroutineToken", "createBackreferenceToken", "createDirectiveToken", "createCharacterSetToken", "tokenizeSharedEscape", "tokenizeNamedCallout", "tokenizeFlagModifier", "createGroupOpenToken", "createGroupCloseToken", "end", "re", "kind", "createAlternatorToken", "splitQuantifierMatch", "createCharacterToken", "cpOf", "opener", "createCharacterClassOpenToken", "numCharClassesOpen", "createCharacterClassCloseToken", "tokenizeAnyTokenWithinCharClass", "raw", "posix", "PosixClassNames", "createCharacterClassHyphenToken", "createCharacterClassIntersectorToken", "inCharClass", "char1", "tokenizeControlCharacter", "tokenizeShorthand", "tokenizeUnicodeProperty", "bytes", "hex", "decoded", "encoder", "char", "byte", "getValidatedHexCharCode", "EscapeCharCodes", "createEscapedNumberToken", "value", "negate", "throwIfNullish", "createNamedCalloutToken", "tag", "args", "createQuantifierToken", "min", "max", "CalloutNames", "on", "off", "enabledFlags", "getFlagGroupSwitches", "disabledFlags", "flagChanges", "callout", "name", "argsArray", "arg", "arg0", "arg1", "arg2", "tokenizeQuantifier", "minStr", "maxStr", "limit", "lower", "p", "neg", "flags", "obj", "token", "matches", "str", "withG", "parts", "hasOnlyChild", "node", "props", "kid", "key", "isQuantifiable", "node", "quantifiableTypes", "parse", "pattern", "options", "opts", "tokenized", "tokenize", "walk", "parent", "state", "token", "context", "createAlternative", "parseAssertion", "parseBackreference", "createCharacter", "parseCharacterClassHyphen", "parseCharacterClassOpen", "parseCharacterSet", "createDirective", "parseGroupOpen", "createNamedCallout", "parseQuantifier", "parseSubroutine", "ast", "createRegex", "createFlags", "top", "node", "capturingGroups", "hasNumberedRef", "namedGroupsByName", "subroutines", "ref", "r", "kind", "createAssertion", "throwIfNullish", "raw", "hasKWrapper", "fromNum", "num", "isRelative", "numCapturesToLeft", "orphan", "createBackreference", "numberedRef", "_", "tokens", "prevSiblingNode", "nextToken", "nextNode", "createCharacterClassRange", "cpOf", "negate", "intersections", "createCharacterClass", "ccFirstToken", "throwIfUnclosedCharacterClass", "cc", "value", "normalizeUnknownPropertyNames", "skipPropertyNameValidation", "unicodePropertyMap", "normalized", "slug", "PosixClassNames", "createUnicodeProperty", "createPosixClass", "createCharacterSet", "skipLookbehindValidation", "createByGroupKind", "isThisAbsenceFunction", "isThisLookbehind", "isLookbehind", "isThisNegLookbehind", "getOrInsert", "throwIfUnclosedGroup", "alt", "child", "msg", "isLookahead", "min", "max", "quantifiedNode", "isQuantifiable", "createQuantifier", "createSubroutine", "createAbsenceFunction", "getBodyForAlternativeContainer", "getBodyForElementContainer", "createCapturingGroup", "number", "isValidGroupName", "charCode", "hex", "flags", "createGroup", "atomic", "createLookaroundAssertion", "tag", "args", "name", "body", "normalizeUnicodePropertyName", "m", "first", "traverse", "root", "visitor", "state", "traverseArray", "array", "parent", "i", "keyShift", "traverseNode", "node", "key", "container", "skipTraversingKidsOfPath", "path", "arrayContainer", "numericKey", "shifted", "newNode", "options", "traverseNew", "throwIfNullish", "newNodes", "keyShiftInLoop", "type", "anyTypeVisitor", "thisTypeVisitor", "enterAllFn", "enterThisFn", "value", "noncapturingDelim", "incrementIfAtLeast", "arr", "threshold", "i", "spliceStr", "str", "pos", "oldValue", "newValue", "Context", "replaceUnescaped", "expression", "needle", "replacement", "context", "re", "negated", "numCharClassesOpen", "result", "match", "m", "$skip", "forEachUnescaped", "callback", "execUnescaped", "pos", "hasUnescaped", "getGroupContents", "contentsStartPos", "token", "contentsEndPos", "numGroupsOpen", "atomicPluginToken", "noncapturingDelim", "atomic", "expression", "data", "hiddenCaptures", "captureTransfers", "aGDelim", "emulatedAGDelim", "captureNumMap", "addedHiddenCaptures", "numCapturesBeforeAG", "numAGs", "aGPos", "hasProcessedAG", "numCharClassesOpen", "numGroupsOpenInAG", "inAG", "match", "m", "index", "capturingStart", "noncapturingStart", "addedCaptureNum", "incrementIfAtLeast", "newCaptureTransfers", "from", "to", "f", "replaceUnescaped", "backrefNum", "wrappedBackrefNum", "bNum", "Context", "baseQuantifier", "possessivePluginToken", "possessive", "openGroupIndices", "lastGroupIndex", "lastCharClassIndex", "lastToken", "qBase", "qMod", "invalidQ", "charsAdded", "spliceStr", "nodeIndex", "r", "gRToken", "recursiveToken", "namedCaptureDelim", "captureDelim", "token", "overlappingRecursionMsg", "recursion", "pattern", "data", "hiddenCaptures", "mode", "captureTransfers", "hasUnescaped", "Context", "addedHiddenCaptures", "hasNumberedBackref", "groupContentsStartPos", "openGroups", "hasRecursed", "numCharClassesOpen", "numCapturesPassed", "match", "captureName", "rDepth", "gRNameOrNum", "gRDepth", "assertMaxInBounds", "left", "right", "reps", "makeRecursive", "mapCaptureTransfers", "isWithinReffedGroup", "g", "startPos", "groupContents", "getGroupContents", "groupContentsLeft", "groupContentsRight", "numAddedHiddenCapturesPreExpansion", "expansion", "pre", "post", "isUnnamedCapture", "max", "errMsg", "isSubpattern", "namesInRecursed", "forEachUnescaped", "rest", "repeatWithDepth", "direction", "getDepthNum", "i", "result", "depthNum", "replaceUnescaped", "m", "unnamed", "backref", "suffix", "addedCaptureNum", "incrementIfAtLeast", "arr", "threshold", "numCapturesAddedInExpansion", "numCapturesInLeft", "recursionDelimCaptureNum", "newCaptureTransfers", "from", "to", "numCapturesInRight", "numCapturesAddedInLeft", "newTo", "newFrom", "f", "cp", "r", "envFlags", "globalRegExp", "getNewCurrentFlags", "current", "enable", "disable", "getOrInsert", "map", "key", "defaultValue", "isMinTarget", "target", "min", "EsVersion", "throwIfNullish", "value", "msg", "Target", "getOptions", "options", "opts", "asciiSpaceChar", "CharsWithoutIgnoreCaseExpansion", "defaultWordChar", "getIgnoreCaseMatchChars", "char", "set", "lower", "upper", "title", "LowerToTitleCaseMap", "altLower", "LowerToAlternativeLowerCaseMap", "altUpper", "LowerToAlternativeUpperCaseMap", "JsUnicodePropertyMap", "p", "w", "titleEntry", "titleRange", "PosixClassMap", "range", "start", "end", "i", "codePoint", "UnicodePropertiesWithSpecificCase", "transform", "ast", "addParentProperties", "firstPassState", "S", "FirstPassVisitor", "globalFlags", "secondPassState", "SecondPassVisitor", "thirdPassState", "ThirdPassVisitor", "node", "parent", "replaceWith", "body", "kind", "innerGroup", "A", "K", "Q", "outerGroup", "_", "setParentDeep", "flagDirectivesByAlt", "flagDirectives", "el", "forwardSiblingAlt", "flags", "getCombinedFlagModsFromFlagNodes", "flagGroup", "container", "root", "remove", "state", "negate", "asciiWordBoundaries", "avoidSubclass", "supportedGNodes", "wordIsAscii", "b", "F", "m", "parseFragment", "prev", "isAlwaysNonZeroLength", "setParent", "B", "jsGroupNameMap", "ref", "isValidJsGroupName", "getAndStoreJsGroupName", "subroutineRefMap", "name", "cc", "C", "accuracy", "minTargetEs2024", "digitIsAscii", "spaceIsAscii", "E", "setNegate", "eBase", "emoji", "ascii", "slug", "removeAllPrevSiblings", "removeAllNextSiblings", "firstAlt", "topLevel", "o", "lookbehind", "f", "group", "leadingGs", "hasAltWithLeadG", "hasAltWithoutLeadG", "alt", "leadingG", "getLeadingG", "g", "passedLookbehind", "strategy", "multiplexCapturesToLeftByRef", "reffedNodesByReferencer", "orphan", "skip", "groupOriginByCopy", "groupsByName", "openRefs", "origin", "recursion", "createRecursion", "multiplexNodes", "multiplex", "groupsWithSameName", "hasDuplicateNameToRemove", "groupInfo", "isRecursive", "reffed", "reffedGroupNode", "isGlobalRecursion", "expandedSubroutine", "cloneCapturingGroup", "replacement", "reffedGroupFlagMods", "getAllParents", "reffedGroupFlags", "areFlagsEqual", "getFlagModsFromFlags", "participants", "canParticipateWithNode", "k", "numCapsNeeded", "emptyCapture", "P", "a", "capture", "rightmostPoint", "kidsOfParent", "getKids", "kid", "isAncestorOf", "obj", "originMap", "up", "up2", "store", "O", "filterFn", "results", "jsName", "flagNodes", "flagProps", "combinedFlags", "prop", "dotAll", "ignoreCase", "mods", "els", "firstToConsider", "isLoneGLookaround", "isAlwaysZeroLength", "gNodesForGroup", "descendant", "kids", "type", "types", "pattern", "alts", "J", "generate", "minTargetEs2025", "recursionLimit", "hasCaseInsensitiveNode", "hasCaseSensitiveNode", "iStack", "traverse", "FlagModifierVisitor", "isIOn", "appliedGlobalFlags", "lastNode", "gen", "generator", "result", "isAnyGroup", "currentModI", "charHasCase", "getCasesOutsideCharClassRange", "number", "data", "escaped", "getCharEscape", "cases", "isLiteralHyphen", "createCharacter", "genClass", "negatedChildClasses", "createGroup", "groupFirstAlt", "newAlt", "createAlternative", "firstEl", "max", "escOpts", "minStr", "maxStr", "extraChars", "charsOutsideRange", "getCodePointRangesFromChars", "atomic", "currentFlags", "contents", "getGroupPrefix", "getQuantifierStr", "limit", "BaseEscapeChars", "CharClassEscapeChars", "CharClassEscapeCharsFlagV", "CharCodeEscapeMap", "casedRe", "firstOnly", "found", "caseOfChar", "num", "escDigit", "inCharClass", "useFlagV", "isDigitCharCode", "escapeChars", "chars", "codePoints", "values", "flagMods", "useFlagMods", "base", "EmulatedRegExp", "_EmulatedRegExp", "#captureMap", "#compiled", "#pattern", "#nameMap", "#strategy", "lazyCompile", "re", "createCaptureMap", "str", "rest", "useLastIndex", "pos", "match", "#execCore", "adjustMatchDetailsForOffset", "matchCopy", "indicesCopy", "mappedNums", "hidden", "transferTo", "to", "createNameMap", "offset", "input", "hasIndices", "indices", "arr", "groupIndices", "hiddenCaptures", "transfers", "captureMap", "from", "numCharClassesOpen", "numCaptures", "toRegExp", "d", "toRegExpDetails", "onigurumaAst", "parse", "regexPlusAst", "generated", "recursionResult", "possessiveResult", "possessive", "atomicResult", "details", "defaultJavaScriptRegexConstructor", "pattern", "options", "toRegExp", "createJavaScriptRegexEngine", "_options", "patterns", "JavaScriptScanner", "s", "lang", "css_default", "lang", "go_default", "lang", "javascript_default", "lang", "html_default", "javascript_default", "css_default", "lang", "json_default", "lang", "jsx_default", "lang", "markdown_default", "lang", "python_default", "lang", "shellscript_default", "lang", "sql_default", "lang", "tsx_default", "lang", "typescript_default", "lang", "yaml_default", "dark_plus_default", "light_plus_default", "SHIKI_LIGHT_THEME", "SHIKI_DARK_THEME", "LANGUAGE_ALIASES", "SUPPORTED_LANGUAGES", "normalizeCodeLanguage", "language", "raw", "normalized", "highlighterPromise", "highlightCodeBlockHtml", "code", "language", "normalizedLanguage", "normalizeCodeLanguage", "html", "getHighlighter", "SHIKI_LIGHT_THEME", "SHIKI_DARK_THEME", "extractCodeHtml", "renderPlainCodeLinesHtml", "line", "escapeHtml", "highlighterPromise", "createHighlighterCore", "light_plus_default", "dark_plus_default", "css_default", "go_default", "html_default", "javascript_default", "json_default", "jsx_default", "markdown_default", "python_default", "shellscript_default", "sql_default", "tsx_default", "typescript_default", "yaml_default", "createJavaScriptRegexEngine", "fallbackCode", "match", "TOOLBAR_GROUPS", "HEADING_MENU_ACTIONS", "MORE_MENU_ACTIONS", "SUPER_MARKDOWN_ISSUES_URL", "TOOLBAR_CODICON_ACTIONS", "TOOLBAR_CUSTOM_ICONS", "customSvg", "renderToolbarIcon", "action", "customIcon", "content", "vscode", "payloadElement", "templatePayload", "payloadText", "payload", "translations", "toolbarText", "codeCopyLabels", "codeToneLabels", "visualLabels", "mathRenderOptions", "sourceEditor", "mustElement", "visualEditor", "previewElement", "toolbarElement", "sidePanelElement", "sidePanelToggleElement", "sidePanelCollapseElement", "outlineCurrentElement", "outlineElement", "searchElement", "currentMarkdown", "currentMode", "normalizeMode", "currentLayout", "normalizeLayout", "previewState", "normalizePreviewState", "imageResources", "normalizeImageResources", "milkdownEditor", "milkdownReady", "milkdownReadyPromise", "visualImageObserver", "mermaidRuntimePromise", "mermaidRenderQueue", "applyingHostUpdate", "applyingMilkdownUpdate", "scrollSyncSuppressTarget", "editorScrollFrame", "scrollSyncReleaseTimer", "activeSourceSelection", "sidePanelOpen", "currentOutlineHeadings", "activeOutlineId", "boot", "renderToolbar", "renderPreview", "renderSidePanels", "bindEvents", "applyLayout", "setScriptState", "post", "error", "setScriptError", "getErrorMessage", "id", "element", "type", "body", "debounce", "fn", "delay", "timer", "args", "syncToHost", "mode", "layout", "value", "candidate", "item", "state", "diag", "message", "parts", "label", "name", "fallback", "escapeHtml", "escapeAttribute", "closestElement", "target", "selector", "TOOLBAR_GROUPS", "group", "renderToolbarItem", "action", "toolbarMenu", "toolbarTitle", "toolbarIcon", "HEADING_MENU_ACTIONS", "MORE_MENU_ACTIONS", "toolbarButton", "title", "icon", "menuActions", "className", "toolbarMenuButton", "renderToolbarIcon", "heading", "rememberSourceSelection", "syncMilkdownFromMarkdown", "eventName", "event", "menuToggle", "toggleToolbarMenu", "buttonElement", "closeToolbarMenus", "handleToolbarAction", "handleCodeBlockActionClick", "toggleSidePanelFromEvent", "setSidePanelOpen", "revealActiveOutlineItem", "handleOutlineClick", "handleHostMessage", "setMarkdown", "insertMarkdown", "image", "markdown", "preview", "nextImageResources", "resolveVisualImagesSoon", "runMermaid", "bindEditorScrollSync", "resolveVisualImages", "resources", "resource", "key", "imageSourceKeys", "rawSource", "resolved", "resolveImageResource", "source", "candidates", "normalized", "stripHashAndQuery", "decoded", "decodeUriSafe", "componentDecoded", "decodeUriComponentSafe", "encoded", "withoutDot", "startVisualImageObserver", "mutations", "mutation", "node", "createCodeBlockCopyButton", "button", "CODE_BLOCK_CLASSES", "createCodeBlockToneButton", "tone", "normalizedTone", "normalizeCodeBlockTone", "codeBlockToneLabel", "updateToneButtonTitle", "createCodeBlockNodeView", "view", "getPos", "currentNode", "highlightVersion", "mermaidVersion", "dom", "caption", "languageField", "language", "languageInput", "actions", "copyButton", "toneButton", "bindCodeBlockActionButton", "copyCodeFromButton", "cycleCodeBlockTone", "pre", "code", "highlightPre", "highlightCode", "codeFrame", "mermaidPreview", "mermaidSource", "updateLanguage", "nextNode", "rawLanguage", "getCodeBlockLanguage", "isMermaid", "isMermaidCodeBlock", "nextLanguage", "normalizeCodeLanguage", "displayLanguage", "toLanguageClassName", "updateHighlight", "version", "codeText", "codeLanguage", "highlightCodeBlockHtml", "html", "updateMermaidPreview", "resetMermaidElement", "queueMermaidElementRender", "openMermaidSource", "closeLanguageEditor", "commit", "updateNodeAttrs", "syncCurrentMarkdownFromMilkdownSoon", "stopCodeBlockActionEvent", "handler", "remarkMathPlugin", "$remark", "remarkMath", "remarkSafeInlineHtmlPlugin", "tree", "transformSafeInlineHtmlTree", "mathInlineSchema", "$nodeSchema", "mathBlockSchema", "safeHtmlInlineSchema", "tag", "normalizeSafeHtmlTag", "transformSafeInlineHtmlChildren", "children", "next", "index", "child", "getOpeningSafeHtmlTag", "closeIndex", "findClosingSafeHtmlTag", "match", "isSafeInlineHtmlTag", "startIndex", "depth", "openPattern", "closePattern", "createMathInlineNodeView", "input", "setEditing", "editing", "getNodeTextAttribute", "commitInlineMath", "handleInlineMathKey", "update", "renderKatexHtml", "createMathBlockNodeView", "updateTimer", "controls", "editButton", "doneButton", "showEditor", "hideEditor", "createFootnoteReferenceNodeView", "model", "resolveFootnoteReference", "createFootnoteDefinitionNodeView", "content", "createHtmlNodeView", "renderInertInlineHtml", "createSafeHtmlInlineNodeView", "nextTag", "createBlockquoteNodeView", "renderedBody", "renderAdmonitionBody", "paragraph", "admonition", "detectBlockquoteAdmonition", "attrs", "pos", "transaction", "registerVisualNodeViews", "views", "visualNodeViews", "ids", "nodeId", "nodes", "render", "mermaid", "loadMermaid", "markMermaidRenderError", "renderMermaidNode", "src", "resolve", "reject", "script", "setMode", "applyMode", "notify", "ensureMilkdown", "Editor", "ctx", "rootCtx", "defaultValueCtx", "listenerCtx", "_ctx", "nodeViewCtx", "commonmark", "gfm", "listener", "clipboard", "history", "trailing", "replaceAll", "SUPER_MARKDOWN_ISSUES_URL", "chooseImagesForInsert", "applySourceToolbarAction", "applyMilkdownToolbarAction", "callCommand", "wrapInHeadingCommand", "commands", "toggleStrongCommand", "toggleEmphasisCommand", "toggleStrikethroughCommand", "toggleInlineCodeCommand", "toggleLinkCommand", "insertHrCommand", "wrapInBlockquoteCommand", "wrapInBulletListCommand", "wrapInOrderedListCommand", "createCodeBlockCommand", "insertTableCommand", "surroundMilkdownSelection", "prefix", "suffix", "domSelection", "replaceMarkdownTextSelection", "editorViewCtx", "from", "to", "empty", "selected", "getMarkdown", "replaceRange", "insertMarkdownSnippetFromVisualSelection", "insertSourceSnippet", "snippet", "selectedIndex", "trimmed", "replaceSourceSelection", "wrappers", "snippets", "selection", "getSourceSelection", "insertion", "needsBlockPadding", "position", "max", "files", "images", "readImageFileData", "file", "reader", "wrapper", "open", "menu", "toggle", "positionToolbarMenu", "rect", "menuWidth", "alignedLeft", "left", "headings", "extractHeadings", "renderOutline", "inFence", "line", "text", "baseSlug", "query", "filtered", "getOutlineId", "updateActiveOutlineFromScroll", "scrollVisualEditorToHeading", "previewTarget", "findPreviewElementForLine", "scrollElementIntoContainer", "scrollToLine", "setActiveOutlineId", "origin", "getFirstVisiblePreviewSourceLine", "getFirstVisibleVisualHeadingLine", "getFirstVisibleSourceLine", "active", "cssEscape", "safeLine", "clampSourceLine", "scrollSourceEditorToLine", "isSplitSyncMode", "scheduleScrollSync", "syncPreviewToSourceLine", "syncSourceToPreviewLine", "callback", "runSyncedScroll", "previewRect", "targetRect", "nextTop", "findVisualHeadingForLine", "headingIndex", "outlineHeading", "tagName", "container", "containerRect", "elements", "elementLine", "getPreviewSourceLine", "bestLine", "bestDistance", "distance", "visualRect", "bestIndex", "lineHeight", "getSourceLineHeight", "maxScrollTop", "style", "fontSize", "lines", "block", "nextTone", "nextCodeBlockTone", "renderedBlock", "getCodeBlockText", "copySource", "clone"] + "sources": ["../../node_modules/extend/index.js", "../../node_modules/@milkdown/exception/src/code.ts", "../../node_modules/@milkdown/exception/src/error.ts", "../../node_modules/@milkdown/exception/src/index.ts", "../../node_modules/@milkdown/ctx/src/context/container.ts", "../../node_modules/@milkdown/ctx/src/context/slice.ts", "../../node_modules/@milkdown/ctx/src/inspector/inspector.ts", "../../node_modules/@milkdown/ctx/src/plugin/ctx.ts", "../../node_modules/@milkdown/ctx/src/timer/clock.ts", "../../node_modules/@milkdown/ctx/src/timer/timer.ts", "../../node_modules/mdast-util-to-string/lib/index.js", "../../node_modules/decode-named-character-reference/index.dom.js", "../../node_modules/micromark-util-chunked/index.js", "../../node_modules/micromark-util-combine-extensions/index.js", "../../node_modules/micromark-util-decode-numeric-character-reference/index.js", "../../node_modules/micromark-util-normalize-identifier/index.js", "../../node_modules/micromark-util-character/index.js", "../../node_modules/micromark-factory-space/index.js", "../../node_modules/micromark/lib/initialize/content.js", "../../node_modules/micromark/lib/initialize/document.js", "../../node_modules/micromark-util-classify-character/index.js", "../../node_modules/micromark-util-resolve-all/index.js", "../../node_modules/micromark-core-commonmark/lib/attention.js", "../../node_modules/micromark-core-commonmark/lib/autolink.js", "../../node_modules/micromark-core-commonmark/lib/blank-line.js", "../../node_modules/micromark-core-commonmark/lib/block-quote.js", "../../node_modules/micromark-core-commonmark/lib/character-escape.js", "../../node_modules/micromark-core-commonmark/lib/character-reference.js", "../../node_modules/micromark-core-commonmark/lib/code-fenced.js", "../../node_modules/micromark-core-commonmark/lib/code-indented.js", "../../node_modules/micromark-core-commonmark/lib/code-text.js", "../../node_modules/micromark-util-subtokenize/lib/splice-buffer.js", "../../node_modules/micromark-util-subtokenize/index.js", "../../node_modules/micromark-core-commonmark/lib/content.js", "../../node_modules/micromark-factory-destination/index.js", "../../node_modules/micromark-factory-label/index.js", "../../node_modules/micromark-factory-title/index.js", "../../node_modules/micromark-factory-whitespace/index.js", "../../node_modules/micromark-core-commonmark/lib/definition.js", "../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js", "../../node_modules/micromark-core-commonmark/lib/heading-atx.js", "../../node_modules/micromark-util-html-tag-name/index.js", "../../node_modules/micromark-core-commonmark/lib/html-flow.js", "../../node_modules/micromark-core-commonmark/lib/html-text.js", "../../node_modules/micromark-core-commonmark/lib/label-end.js", "../../node_modules/micromark-core-commonmark/lib/label-start-image.js", "../../node_modules/micromark-core-commonmark/lib/label-start-link.js", "../../node_modules/micromark-core-commonmark/lib/line-ending.js", "../../node_modules/micromark-core-commonmark/lib/thematic-break.js", "../../node_modules/micromark-core-commonmark/lib/list.js", "../../node_modules/micromark-core-commonmark/lib/setext-underline.js", "../../node_modules/micromark/lib/initialize/flow.js", "../../node_modules/micromark/lib/initialize/text.js", "../../node_modules/micromark/lib/constructs.js", "../../node_modules/micromark/lib/create-tokenizer.js", "../../node_modules/micromark/lib/parse.js", "../../node_modules/micromark/lib/postprocess.js", "../../node_modules/micromark/lib/preprocess.js", "../../node_modules/micromark-util-decode-string/index.js", "../../node_modules/unist-util-stringify-position/lib/index.js", "../../node_modules/mdast-util-from-markdown/lib/index.js", "../../node_modules/remark-parse/lib/index.js", "../../node_modules/zwitch/index.js", "../../node_modules/mdast-util-to-markdown/lib/configure.js", "../../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js", "../../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js", "../../node_modules/mdast-util-to-markdown/lib/handle/break.js", "../../node_modules/longest-streak/index.js", "../../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-fence.js", "../../node_modules/mdast-util-to-markdown/lib/handle/code.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-quote.js", "../../node_modules/mdast-util-to-markdown/lib/handle/definition.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js", "../../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js", "../../node_modules/mdast-util-to-markdown/lib/util/encode-info.js", "../../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js", "../../node_modules/unist-util-is/lib/index.js", "../../node_modules/unist-util-visit-parents/lib/index.js", "../../node_modules/unist-util-visit/lib/index.js", "../../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js", "../../node_modules/mdast-util-to-markdown/lib/handle/heading.js", "../../node_modules/mdast-util-to-markdown/lib/handle/html.js", "../../node_modules/mdast-util-to-markdown/lib/handle/image.js", "../../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js", "../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js", "../../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js", "../../node_modules/mdast-util-to-markdown/lib/handle/link.js", "../../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-rule.js", "../../node_modules/mdast-util-to-markdown/lib/handle/list.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js", "../../node_modules/mdast-util-to-markdown/lib/handle/list-item.js", "../../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js", "../../node_modules/mdast-util-phrasing/lib/index.js", "../../node_modules/mdast-util-to-markdown/lib/handle/root.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-strong.js", "../../node_modules/mdast-util-to-markdown/lib/handle/strong.js", "../../node_modules/mdast-util-to-markdown/lib/handle/text.js", "../../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js", "../../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js", "../../node_modules/mdast-util-to-markdown/lib/handle/index.js", "../../node_modules/mdast-util-to-markdown/lib/join.js", "../../node_modules/mdast-util-to-markdown/lib/unsafe.js", "../../node_modules/mdast-util-to-markdown/lib/util/association.js", "../../node_modules/mdast-util-to-markdown/lib/util/compile-pattern.js", "../../node_modules/mdast-util-to-markdown/lib/util/container-phrasing.js", "../../node_modules/mdast-util-to-markdown/lib/util/container-flow.js", "../../node_modules/mdast-util-to-markdown/lib/util/indent-lines.js", "../../node_modules/mdast-util-to-markdown/lib/util/safe.js", "../../node_modules/mdast-util-to-markdown/lib/util/track.js", "../../node_modules/mdast-util-to-markdown/lib/index.js", "../../node_modules/remark-stringify/lib/index.js", "../../node_modules/bail/index.js", "../../node_modules/unified/lib/index.js", "../../node_modules/unified/node_modules/is-plain-obj/index.js", "../../node_modules/trough/lib/index.js", "../../node_modules/vfile-message/lib/index.js", "../../node_modules/vfile/lib/minpath.browser.js", "../../node_modules/vfile/lib/minproc.browser.js", "../../node_modules/vfile/lib/minurl.shared.js", "../../node_modules/vfile/lib/minurl.browser.js", "../../node_modules/vfile/lib/index.js", "../../node_modules/unified/lib/callable-instance.js", "../../node_modules/orderedmap/dist/index.js", "../../node_modules/prosemirror-model/dist/index.js", "../../node_modules/prosemirror-transform/dist/index.js", "../../node_modules/prosemirror-state/dist/index.js", "../../node_modules/prosemirror-commands/dist/index.js", "../../node_modules/prosemirror-inputrules/dist/index.js", "../../node_modules/@milkdown/prose/src/toolkit/browser.ts", "../../node_modules/@milkdown/prose/src/toolkit/input-rules/custom-input-rules.ts", "../../node_modules/@milkdown/prose/src/toolkit/input-rules/mark-rule.ts", "../../node_modules/@milkdown/prose/src/toolkit/input-rules/node-rule.ts", "../../node_modules/@milkdown/prose/src/toolkit/position/index.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/helper.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/node.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/schema.ts", "../../node_modules/@milkdown/prose/src/toolkit/prose/selection.ts", "../../node_modules/w3c-keyname/index.js", "../../node_modules/prosemirror-keymap/dist/index.js", "../../node_modules/@milkdown/transformer/src/utility/stack.ts", "../../node_modules/@milkdown/transformer/src/parser/stack-element.ts", "../../node_modules/@milkdown/transformer/src/parser/state.ts", "../../node_modules/@milkdown/transformer/src/serializer/stack-element.ts", "../../node_modules/@milkdown/transformer/src/serializer/state.ts", "../../node_modules/prosemirror-view/dist/index.js", "../../node_modules/@milkdown/core/src/__internal__/utils.ts", "../../node_modules/@milkdown/core/src/__internal__/remark-handlers.ts", "../../node_modules/@milkdown/core/src/internal-plugin/atoms.ts", "../../node_modules/@milkdown/core/src/internal-plugin/config.ts", "../../node_modules/@milkdown/core/src/internal-plugin/init.ts", "../../node_modules/@milkdown/core/src/internal-plugin/schema.ts", "../../node_modules/@milkdown/core/src/internal-plugin/commands.ts", "../../node_modules/@milkdown/core/src/internal-plugin/keymap.ts", "../../node_modules/@milkdown/core/src/internal-plugin/parser.ts", "../../node_modules/@milkdown/core/src/internal-plugin/serializer.ts", "../../node_modules/@milkdown/core/src/internal-plugin/editor-state.ts", "../../node_modules/@milkdown/core/src/internal-plugin/paste-rule.ts", "../../node_modules/@milkdown/core/src/internal-plugin/editor-view.ts", "../../node_modules/@milkdown/core/src/editor/editor.ts", "../../node_modules/mdast-util-math/lib/index.js", "../../node_modules/micromark-extension-math/lib/math-flow.js", "../../node_modules/micromark-extension-math/lib/math-text.js", "../../node_modules/micromark-extension-math/lib/syntax.js", "../../node_modules/katex/dist/katex.mjs", "../../node_modules/remark-math/lib/index.js", "../../node_modules/nanoid/index.browser.js", "../../node_modules/@milkdown/utils/src/composable/utils.ts", "../../node_modules/@milkdown/utils/src/composable/$command.ts", "../../node_modules/@milkdown/utils/src/composable/$input-rule.ts", "../../node_modules/@milkdown/utils/src/composable/$paste-rule.ts", "../../node_modules/@milkdown/utils/src/composable/$mark.ts", "../../node_modules/@milkdown/utils/src/composable/$node.ts", "../../node_modules/@milkdown/utils/src/composable/$prose.ts", "../../node_modules/@milkdown/utils/src/composable/$shortcut.ts", "../../node_modules/@milkdown/utils/src/composable/$view.ts", "../../node_modules/@milkdown/utils/src/composable/$ctx.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$node-schema.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$mark-schema.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$use-keymap.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$attr.ts", "../../node_modules/@milkdown/utils/src/composable/composed/$remark.ts", "../../node_modules/@milkdown/utils/src/macro/call-command.ts", "../../node_modules/@milkdown/utils/src/macro/force-update.ts", "../../node_modules/@milkdown/utils/src/macro/get-html.ts", "../../node_modules/@milkdown/utils/src/macro/get-markdown.ts", "../../node_modules/@milkdown/utils/src/macro/insert.ts", "../../node_modules/@milkdown/utils/src/macro/outline.ts", "../../node_modules/@milkdown/utils/src/macro/replace-all.ts", "../../node_modules/@milkdown/utils/src/macro/set-attr.ts", "../../node_modules/@milkdown/utils/src/macro/markdown-to-slice.ts", "../../node_modules/@milkdown/utils/src/macro/insert-pos.ts", "../../node_modules/@milkdown/utils/src/macro/replace-range.ts", "../../node_modules/@milkdown/utils/src/pipe.ts", "../../node_modules/prosemirror-schema-list/dist/index.js", "../../node_modules/mdast-util-definitions/lib/index.js", "../../node_modules/remark-inline-links/lib/index.js", "../../node_modules/@milkdown/preset-commonmark/src/__internal__/serialize-text.ts", "../../node_modules/@milkdown/preset-commonmark/src/__internal__/with-meta.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/emphasis.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/strong.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/inline-code.ts", "../../node_modules/@milkdown/preset-commonmark/src/mark/link.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/doc.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-preserve-empty-line.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/paragraph.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/heading.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/blockquote.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/code-block.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/image.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/hardbreak.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/hr.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/bullet-list.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/ordered-list.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/list-item.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/text.ts", "../../node_modules/@milkdown/preset-commonmark/src/node/html.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/schema.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/inputrules.ts", "../../node_modules/@milkdown/preset-commonmark/src/commands/index.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/commands.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/keymap.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-add-order-in-list-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-line-break.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-inline-link-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-html-transformer.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/remark-marker-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/inline-nodes-cursor-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/hardbreak-clear-mark-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/hardbreak-filter-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/sync-heading-id-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/plugin/sync-list-order-plugin.ts", "../../node_modules/@milkdown/preset-commonmark/src/composed/plugins.ts", "../../node_modules/@milkdown/preset-commonmark/src/index.ts", "../../node_modules/prosemirror-tables/src/tablemap.ts", "../../node_modules/prosemirror-tables/src/schema.ts", "../../node_modules/prosemirror-tables/src/util.ts", "../../node_modules/prosemirror-tables/src/cellselection.ts", "../../node_modules/prosemirror-tables/src/fixtables.ts", "../../node_modules/prosemirror-tables/src/utils/convert.ts", "../../node_modules/prosemirror-tables/src/utils/move-row-in-array-of-rows.ts", "../../node_modules/prosemirror-tables/src/utils/query.ts", "../../node_modules/prosemirror-tables/src/utils/get-cells.ts", "../../node_modules/prosemirror-tables/src/utils/selection-range.ts", "../../node_modules/prosemirror-tables/src/utils/transpose.ts", "../../node_modules/prosemirror-tables/src/utils/move-column.ts", "../../node_modules/prosemirror-tables/src/utils/move-row.ts", "../../node_modules/prosemirror-tables/src/commands.ts", "../../node_modules/prosemirror-tables/src/copypaste.ts", "../../node_modules/prosemirror-tables/src/input.ts", "../../node_modules/prosemirror-tables/src/tableview.ts", "../../node_modules/prosemirror-tables/src/columnresizing.ts", "../../node_modules/prosemirror-tables/src/index.ts", "../../node_modules/prosemirror-safari-ime-span/dist/index.js", "../../node_modules/ccount/index.js", "../../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js", "../../node_modules/mdast-util-find-and-replace/lib/index.js", "../../node_modules/mdast-util-gfm-autolink-literal/lib/index.js", "../../node_modules/mdast-util-gfm-footnote/lib/index.js", "../../node_modules/mdast-util-gfm-strikethrough/lib/index.js", "../../node_modules/markdown-table/index.js", "../../node_modules/mdast-util-gfm-table/lib/index.js", "../../node_modules/mdast-util-gfm-task-list-item/lib/index.js", "../../node_modules/mdast-util-gfm/lib/index.js", "../../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js", "../../node_modules/micromark-extension-gfm-footnote/lib/syntax.js", "../../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js", "../../node_modules/micromark-extension-gfm-table/lib/edit-map.js", "../../node_modules/micromark-extension-gfm-table/lib/infer.js", "../../node_modules/micromark-extension-gfm-table/lib/syntax.js", "../../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js", "../../node_modules/micromark-extension-gfm/index.js", "../../node_modules/remark-gfm/lib/index.js", "../../node_modules/@milkdown/preset-gfm/src/__internal__/with-meta.ts", "../../node_modules/@milkdown/preset-gfm/src/mark/strike-through.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/schema.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/create-table.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/get-cells-in-col.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/get-cells-in-row.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/select-line.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/add-row-with-alignment.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/get-all-cells-in-table.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/utils/select-table.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/command.ts", "../../node_modules/@milkdown/preset-gfm/src/node/table/input.ts", "../../node_modules/@milkdown/preset-gfm/src/node/footnote/definition.ts", "../../node_modules/@milkdown/preset-gfm/src/node/footnote/reference.ts", "../../node_modules/@milkdown/preset-gfm/src/node/task-list-item.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/keymap.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/inputrules.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/pasterules.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/auto-insert-span-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/column-resizing-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/table-editing-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/remark-gfm-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/plugin/keep-table-align-plugin.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/plugins.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/schema.ts", "../../node_modules/@milkdown/preset-gfm/src/composed/commands.ts", "../../node_modules/@milkdown/preset-gfm/src/index.ts", "../../node_modules/lodash-es/_freeGlobal.js", "../../node_modules/lodash-es/_root.js", "../../node_modules/lodash-es/_Symbol.js", "../../node_modules/lodash-es/_getRawTag.js", "../../node_modules/lodash-es/_objectToString.js", "../../node_modules/lodash-es/_baseGetTag.js", "../../node_modules/lodash-es/isObjectLike.js", "../../node_modules/lodash-es/isSymbol.js", "../../node_modules/lodash-es/_trimmedEndIndex.js", "../../node_modules/lodash-es/_baseTrim.js", "../../node_modules/lodash-es/isObject.js", "../../node_modules/lodash-es/toNumber.js", "../../node_modules/lodash-es/now.js", "../../node_modules/lodash-es/debounce.js", "../../node_modules/@milkdown/plugin-listener/src/index.ts", "../../node_modules/@milkdown/plugin-clipboard/src/__internal__/is-pure-text.ts", "../../node_modules/@milkdown/plugin-clipboard/src/__internal__/with-meta.ts", "../../node_modules/@milkdown/plugin-clipboard/src/index.ts", "../../node_modules/rope-sequence/dist/index.js", "../../node_modules/prosemirror-history/dist/index.js", "../../node_modules/@milkdown/plugin-history/src/index.ts", "../../node_modules/@milkdown/plugin-trailing/src/index.ts", "../../node_modules/@milkdown/plugin-upload/src/default-uploader.ts", "../../node_modules/@milkdown/plugin-upload/src/upload.ts", "../../node_modules/@milkdown/plugin-upload/src/index.ts", "../../src/markdown/codeBlockActions.ts", "../../src/utils/html.ts", "../../src/markdown/features.ts", "../../node_modules/@shikijs/types/dist/index.mjs", "../../node_modules/@shikijs/vscode-textmate/dist/index.js", "../../node_modules/@shikijs/primitive/dist/index.mjs", "../../node_modules/html-void-elements/index.js", "../../node_modules/property-information/lib/util/schema.js", "../../node_modules/property-information/lib/util/merge.js", "../../node_modules/property-information/lib/normalize.js", "../../node_modules/property-information/lib/util/info.js", "../../node_modules/property-information/lib/util/types.js", "../../node_modules/property-information/lib/util/defined-info.js", "../../node_modules/property-information/lib/util/create.js", "../../node_modules/property-information/lib/aria.js", "../../node_modules/property-information/lib/util/case-sensitive-transform.js", "../../node_modules/property-information/lib/util/case-insensitive-transform.js", "../../node_modules/property-information/lib/html.js", "../../node_modules/property-information/lib/svg.js", "../../node_modules/property-information/lib/xlink.js", "../../node_modules/property-information/lib/xmlns.js", "../../node_modules/property-information/lib/xml.js", "../../node_modules/property-information/lib/find.js", "../../node_modules/property-information/index.js", "../../node_modules/stringify-entities/lib/core.js", "../../node_modules/stringify-entities/lib/util/to-hexadecimal.js", "../../node_modules/stringify-entities/lib/util/to-decimal.js", "../../node_modules/character-entities-legacy/index.js", "../../node_modules/character-entities-html4/index.js", "../../node_modules/stringify-entities/lib/constant/dangerous.js", "../../node_modules/stringify-entities/lib/util/to-named.js", "../../node_modules/stringify-entities/lib/util/format-smart.js", "../../node_modules/stringify-entities/lib/index.js", "../../node_modules/hast-util-to-html/lib/handle/comment.js", "../../node_modules/hast-util-to-html/lib/handle/doctype.js", "../../node_modules/comma-separated-tokens/index.js", "../../node_modules/space-separated-tokens/index.js", "../../node_modules/hast-util-whitespace/lib/index.js", "../../node_modules/hast-util-to-html/lib/omission/util/siblings.js", "../../node_modules/hast-util-to-html/lib/omission/omission.js", "../../node_modules/hast-util-to-html/lib/omission/closing.js", "../../node_modules/hast-util-to-html/lib/omission/opening.js", "../../node_modules/hast-util-to-html/lib/handle/element.js", "../../node_modules/hast-util-to-html/lib/handle/text.js", "../../node_modules/hast-util-to-html/lib/handle/raw.js", "../../node_modules/hast-util-to-html/lib/handle/root.js", "../../node_modules/hast-util-to-html/lib/handle/index.js", "../../node_modules/hast-util-to-html/lib/index.js", "../../node_modules/@shikijs/core/dist/index.mjs", "../../node_modules/@shikijs/engine-javascript/dist/scanner-BFcBmQR1.mjs", "../../node_modules/oniguruma-parser/src/utils.ts", "../../node_modules/oniguruma-parser/src/tokenizer/tokenize.ts", "../../node_modules/oniguruma-parser/src/parser/node-utils.ts", "../../node_modules/oniguruma-parser/src/parser/parse.ts", "../../node_modules/oniguruma-parser/src/traverser/traverse.ts", "../../node_modules/regex/src/utils-internals.js", "../../node_modules/regex-utilities/src/index.js", "../../node_modules/regex/src/atomic.js", "../../node_modules/regex-recursion/src/index.js", "../../node_modules/oniguruma-to-es/src/utils.js", "../../node_modules/oniguruma-to-es/src/options.js", "../../node_modules/oniguruma-to-es/src/unicode.js", "../../node_modules/oniguruma-to-es/src/transform.js", "../../node_modules/oniguruma-to-es/src/generate.js", "../../node_modules/oniguruma-to-es/src/subclass.js", "../../node_modules/oniguruma-to-es/src/index.js", "../../node_modules/@shikijs/engine-javascript/dist/engine-compile.mjs", "../../node_modules/@shikijs/langs/dist/css.mjs", "../../node_modules/@shikijs/langs/dist/go.mjs", "../../node_modules/@shikijs/langs/dist/javascript.mjs", "../../node_modules/@shikijs/langs/dist/html.mjs", "../../node_modules/@shikijs/langs/dist/json.mjs", "../../node_modules/@shikijs/langs/dist/jsx.mjs", "../../node_modules/@shikijs/langs/dist/markdown.mjs", "../../node_modules/@shikijs/langs/dist/python.mjs", "../../node_modules/@shikijs/langs/dist/shellscript.mjs", "../../node_modules/@shikijs/langs/dist/sql.mjs", "../../node_modules/@shikijs/langs/dist/tsx.mjs", "../../node_modules/@shikijs/langs/dist/typescript.mjs", "../../node_modules/@shikijs/langs/dist/yaml.mjs", "../../node_modules/@shikijs/themes/dist/dark-plus.mjs", "../../node_modules/@shikijs/themes/dist/light-plus.mjs", "../../src/markdown/highlightLanguage.ts", "highlight-runtime.ts", "../../src/wysiwyg/toolbar.ts", "editor-runtime.ts"], + "sourcesContent": ["'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "export enum ErrorCode {\n docTypeError = 'docTypeError',\n contextNotFound = 'contextNotFound',\n timerNotFound = 'timerNotFound',\n ctxCallOutOfScope = 'ctxCallOutOfScope',\n createNodeInParserFail = 'createNodeInParserFail',\n stackOverFlow = 'stackOverFlow',\n parserMatchError = 'parserMatchError',\n serializerMatchError = 'serializerMatchError',\n getAtomFromSchemaFail = 'getAtomFromSchemaFail',\n expectDomTypeError = 'expectDomTypeError',\n callCommandBeforeEditorView = 'callCommandBeforeEditorView',\n missingRootElement = 'missingRootElement',\n missingNodeInSchema = 'missingNodeInSchema',\n missingMarkInSchema = 'missingMarkInSchema',\n\n // collab plugin\n ctxNotBind = 'ctxNotBind',\n missingYjsDoc = 'missingYjsDoc',\n}\n", "import type { ErrorCode } from './code'\n\nexport class MilkdownError extends Error {\n public code: string\n constructor(code: ErrorCode, message: string) {\n super(message)\n this.name = 'MilkdownError'\n this.code = code\n }\n}\n", "import { ErrorCode } from './code'\nimport { MilkdownError } from './error'\n\nconst functionReplacer = (_: string, value: unknown) =>\n typeof value === 'function' ? '[Function]' : value\n\nconst stringify = (x: unknown): string => JSON.stringify(x, functionReplacer)\n\nexport function docTypeError(type: unknown) {\n return new MilkdownError(\n ErrorCode.docTypeError,\n `Doc type error, unsupported type: ${stringify(type)}`\n )\n}\n\nexport function contextNotFound(name: string) {\n return new MilkdownError(\n ErrorCode.contextNotFound,\n `Context \"${name}\" not found, do you forget to inject it?`\n )\n}\n\nexport function timerNotFound(name: string) {\n return new MilkdownError(\n ErrorCode.timerNotFound,\n `Timer \"${name}\" not found, do you forget to record it?`\n )\n}\n\nexport function ctxCallOutOfScope() {\n return new MilkdownError(\n ErrorCode.ctxCallOutOfScope,\n 'Should not call a context out of the plugin.'\n )\n}\n\nexport function createNodeInParserFail(\n nodeType: object,\n attrs?: unknown,\n content?: unknown[]\n) {\n const nodeTypeName = 'name' in nodeType ? nodeType.name : nodeType\n const heading = `Cannot create node for ${nodeTypeName}`\n const serialize = (x: unknown): string => {\n if (x == null) return 'null'\n\n if (Array.isArray(x)) {\n return `[${x.map(serialize).join(', ')}]`\n }\n\n if (typeof x === 'object') {\n if ('toJSON' in x && typeof (x as any).toJSON === 'function') {\n return JSON.stringify((x as any).toJSON())\n }\n\n if ('spec' in x) {\n return JSON.stringify((x as any).spec)\n }\n\n return JSON.stringify(x)\n }\n\n if (\n typeof x === 'string' ||\n typeof x === 'number' ||\n typeof x === 'boolean'\n ) {\n return JSON.stringify(x)\n }\n\n if (typeof x === 'function') {\n return `[Function: ${(x as Function).name || 'anonymous'}]`\n }\n\n try {\n return String(x)\n } catch {\n return '[Unserializable]'\n }\n }\n\n const headingMessage = ['[Description]', heading] as const\n const attrsMessage = ['[Attributes]', attrs] as const\n const contentMessage = [\n '[Content]',\n (content ?? []).map((node) => {\n if (!node) return 'null'\n\n if (typeof node === 'object' && 'type' in node) {\n return `${node}`\n }\n\n return serialize(node)\n }),\n ] as const\n\n const messages = [headingMessage, attrsMessage, contentMessage].reduce(\n (acc, [title, value]) => {\n const message = `${title}: ${serialize(value)}.`\n return acc.concat(message)\n },\n [] as string[]\n )\n\n return new MilkdownError(\n ErrorCode.createNodeInParserFail,\n messages.join('\\n')\n )\n}\n\nexport function stackOverFlow() {\n return new MilkdownError(\n ErrorCode.stackOverFlow,\n 'Stack over flow, cannot pop on an empty stack.'\n )\n}\n\nexport function parserMatchError(node: unknown) {\n return new MilkdownError(\n ErrorCode.parserMatchError,\n `Cannot match target parser for node: ${stringify(node)}.`\n )\n}\n\nexport function serializerMatchError(node: unknown) {\n return new MilkdownError(\n ErrorCode.serializerMatchError,\n `Cannot match target serializer for node: ${stringify(node)}.`\n )\n}\n\nexport function getAtomFromSchemaFail(type: 'mark' | 'node', name: string) {\n return new MilkdownError(\n ErrorCode.getAtomFromSchemaFail,\n `Cannot get ${type}: ${name} from schema.`\n )\n}\n\nexport function expectDomTypeError(node: unknown) {\n return new MilkdownError(\n ErrorCode.expectDomTypeError,\n `Expect to be a dom, but get: ${stringify(node)}.`\n )\n}\n\nexport function callCommandBeforeEditorView() {\n return new MilkdownError(\n ErrorCode.callCommandBeforeEditorView,\n \"You're trying to call a command before editor view initialized, make sure to get commandManager from ctx after editor view has been initialized\"\n )\n}\n\nexport function missingRootElement() {\n return new MilkdownError(\n ErrorCode.missingRootElement,\n 'Missing root element, milkdown cannot find root element of the editor.'\n )\n}\n\nexport function missingNodeInSchema(name: string) {\n return new MilkdownError(\n ErrorCode.missingNodeInSchema,\n `Missing node in schema, milkdown cannot find \"${name}\" in schema.`\n )\n}\n\nexport function missingMarkInSchema(name: string) {\n return new MilkdownError(\n ErrorCode.missingMarkInSchema,\n `Missing mark in schema, milkdown cannot find \"${name}\" in schema.`\n )\n}\n\nexport function ctxNotBind() {\n return new MilkdownError(\n ErrorCode.ctxNotBind,\n 'Context not bind, please make sure the plugin has been initialized.'\n )\n}\n\nexport function missingYjsDoc() {\n return new MilkdownError(\n ErrorCode.missingYjsDoc,\n 'Missing yjs doc, please make sure you have bind one.'\n )\n}\n", "import { contextNotFound } from '@milkdown/exception'\n\nimport type { Slice, SliceType } from './slice'\n\n/// @internal\nexport type SliceMap = Map<symbol, Slice>\n\n/// Container is a map of slices.\nexport class Container {\n /// @internal\n sliceMap: SliceMap = new Map()\n\n /// Get a slice from the container by slice type or slice name.\n get = <T, N extends string = string>(\n slice: SliceType<T, N> | N\n ): Slice<T, N> => {\n const context =\n typeof slice === 'string'\n ? [...this.sliceMap.values()].find((x) => x.type.name === slice)\n : this.sliceMap.get(slice.id)\n\n if (!context) {\n const name = typeof slice === 'string' ? slice : slice.name\n throw contextNotFound(name)\n }\n return context as Slice<T, N>\n }\n\n /// Remove a slice from the container by slice type or slice name.\n remove = <T, N extends string = string>(slice: SliceType<T, N> | N): void => {\n const context =\n typeof slice === 'string'\n ? [...this.sliceMap.values()].find((x) => x.type.name === slice)\n : this.sliceMap.get(slice.id)\n\n if (!context) return\n\n this.sliceMap.delete(context.type.id)\n }\n\n /// Check if the container has a slice by slice type or slice name.\n has = <T, N extends string = string>(slice: SliceType<T, N> | N): boolean => {\n if (typeof slice === 'string')\n return [...this.sliceMap.values()].some((x) => x.type.name === slice)\n\n return this.sliceMap.has(slice.id)\n }\n}\n", "import { ctxCallOutOfScope } from '@milkdown/exception'\n\nimport type { SliceMap } from './container'\n\n/// Slice is a value of slice type.\nexport class Slice<T = any, N extends string = string> {\n /// The type of the slice.\n readonly type: SliceType<T, N>\n\n /// @internal\n #watchers: Array<(value: T) => unknown> = []\n\n /// @internal\n #value: T\n\n /// @internal\n #emit = () => {\n this.#watchers.forEach((watcher) => watcher(this.#value))\n }\n\n /// @internal\n constructor(container: SliceMap, value: T, type: SliceType<T, N>) {\n this.type = type\n this.#value = value\n container.set(type.id, this)\n }\n\n /// Add a watcher for changes in the slice.\n /// Returns a function to remove the watcher.\n on(watcher: (value: T) => unknown) {\n this.#watchers.push(watcher)\n return () => {\n this.#watchers = this.#watchers.filter((w) => w !== watcher)\n }\n }\n\n /// Add a one-time watcher for changes in the slice.\n /// The watcher will be removed after it is called.\n /// Returns a function to remove the watcher.\n once(watcher: (value: T) => unknown) {\n const off = this.on((value) => {\n watcher(value)\n off()\n })\n return off\n }\n\n /// Remove a watcher.\n off(watcher: (value: T) => unknown) {\n this.#watchers = this.#watchers.filter((w) => w !== watcher)\n }\n\n /// Remove all watchers.\n offAll() {\n this.#watchers = []\n }\n\n /// Set the value of the slice.\n set = (value: T) => {\n this.#value = value\n this.#emit()\n }\n\n /// Get the value of the slice.\n get = () => this.#value\n\n /// Update the value of the slice with a callback.\n update = (updater: (prev: T) => T) => {\n this.#value = updater(this.#value)\n this.#emit()\n }\n}\n\n/// Slice type can be used to create slices in different containers.\nexport class SliceType<T = any, N extends string = string> {\n /// The unique id of the slice type.\n readonly id: symbol\n /// The name of the slice type.\n readonly name: N\n /// @internal\n readonly _typeInfo: () => T\n /// @internal\n readonly _defaultValue: T\n\n /// Create a slice type with a default value and a name.\n /// The name should be unique in the container.\n constructor(value: T, name: N) {\n this.id = Symbol(`Context-${name}`)\n this.name = name\n this._defaultValue = value\n this._typeInfo = (): T => {\n throw ctxCallOutOfScope()\n }\n }\n\n /// Create a slice with a container.\n /// You can also pass a value to override the default value.\n create(container: SliceMap, value: T = this._defaultValue): Slice<T, N> {\n return new Slice(container, value, this)\n }\n}\n\n/// Create a slice type with a default value and a name.\n/// This is equivalent to `new SliceType(value, name)`.\nexport const createSlice = <T = any, N extends string = string>(\n value: T,\n name: N\n) => new SliceType(value, name)\n", "import type { Container, SliceType } from '../context'\nimport type { Clock, TimerStatus, TimerType } from '../timer'\nimport type { Meta } from './meta'\n\nexport interface Telemetry {\n metadata: Meta\n injectedSlices: { name: string; value: unknown }[]\n consumedSlices: { name: string; value: unknown }[]\n recordedTimers: { name: string; duration: number; status: TimerStatus }[]\n waitTimers: { name: string; duration: number; status: TimerStatus }[]\n}\n\n/// The inspector object that is used to inspect the runtime environment of a ctx.\nexport class Inspector {\n /// @internal\n readonly #meta: Meta\n\n /// @internal\n readonly #container: Container\n\n /// @internal\n readonly #clock: Clock\n\n /// @internal\n readonly #injectedSlices: Set<SliceType | string> = new Set()\n\n /// @internal\n readonly #consumedSlices: Set<SliceType | string> = new Set()\n\n /// @internal\n readonly #recordedTimers: Map<\n TimerType,\n { duration: number; start: number }\n > = new Map()\n\n /// @internal\n readonly #waitTimers: Map<TimerType, { duration: number }> = new Map()\n\n /// Create an inspector with container, clock and metadata.\n constructor(container: Container, clock: Clock, meta: Meta) {\n this.#container = container\n this.#clock = clock\n this.#meta = meta\n }\n\n /// Read the runtime telemetry as an object of the ctx.\n read = (): Telemetry => {\n return {\n metadata: this.#meta,\n injectedSlices: [...this.#injectedSlices].map((slice) => ({\n name: typeof slice === 'string' ? slice : slice.name,\n value: this.#getSlice(slice),\n })),\n consumedSlices: [...this.#consumedSlices].map((slice) => ({\n name: typeof slice === 'string' ? slice : slice.name,\n value: this.#getSlice(slice),\n })),\n recordedTimers: [...this.#recordedTimers].map(\n ([timer, { duration }]) => ({\n name: timer.name,\n duration,\n status: this.#getTimer(timer),\n })\n ),\n waitTimers: [...this.#waitTimers].map(([timer, { duration }]) => ({\n name: timer.name,\n duration,\n status: this.#getTimer(timer),\n })),\n }\n }\n\n /// @internal\n readonly onRecord = (timerType: TimerType) => {\n this.#recordedTimers.set(timerType, { start: Date.now(), duration: 0 })\n }\n\n /// @internal\n readonly onClear = (timerType: TimerType) => {\n this.#recordedTimers.delete(timerType)\n }\n\n /// @internal\n readonly onDone = (timerType: TimerType) => {\n const timer = this.#recordedTimers.get(timerType)\n if (!timer) return\n timer.duration = Date.now() - timer.start\n }\n\n /// @internal\n readonly onWait = (timerType: TimerType, promise: Promise<void>) => {\n const start = Date.now()\n promise\n .finally(() => {\n this.#waitTimers.set(timerType, { duration: Date.now() - start })\n })\n .catch(console.error)\n }\n\n /// @internal\n readonly onInject = (sliceType: SliceType | string) => {\n this.#injectedSlices.add(sliceType)\n }\n\n /// @internal\n readonly onRemove = (sliceType: SliceType | string) => {\n this.#injectedSlices.delete(sliceType)\n }\n\n /// @internal\n readonly onUse = (sliceType: SliceType | string) => {\n this.#consumedSlices.add(sliceType)\n }\n\n /// @internal\n #getSlice = (sliceType: SliceType | string) => {\n return this.#container.get(sliceType).get()\n }\n\n /// @internal\n #getTimer = (timerType: TimerType) => {\n return this.#clock.get(timerType).status\n }\n}\n", "import type { Container, Slice, SliceType } from '../context'\nimport type { Meta } from '../inspector'\nimport type { Clock, TimerType } from '../timer'\n\nimport { Inspector } from '../inspector'\n\n/// The ctx object that can be accessed in plugin and action.\nexport class Ctx {\n /// @internal\n readonly #container: Container\n /// @internal\n readonly #clock: Clock\n /// @internal\n readonly #meta?: Meta\n /// @internal\n readonly #inspector?: Inspector\n\n /// Create a ctx object with container and clock.\n constructor(container: Container, clock: Clock, meta?: Meta) {\n this.#container = container\n this.#clock = clock\n this.#meta = meta\n if (meta) this.#inspector = new Inspector(container, clock, meta)\n }\n\n /// Get metadata of the ctx.\n get meta() {\n return this.#meta\n }\n\n /// Get the inspector of the ctx.\n get inspector() {\n return this.#inspector\n }\n\n /// Produce a new ctx with metadata.\n /// The new ctx will link to the same container and clock with the current ctx.\n /// If the metadata is empty, it will return the current ctx.\n readonly produce = (meta?: Meta) => {\n if (meta && Object.keys(meta).length)\n return new Ctx(this.#container, this.#clock, { ...meta })\n\n return this\n }\n\n /// Add a slice into the ctx.\n readonly inject = <T>(sliceType: SliceType<T>, value?: T) => {\n const slice = sliceType.create(this.#container.sliceMap)\n if (value != null) slice.set(value)\n\n this.#inspector?.onInject(sliceType)\n\n return this\n }\n\n /// Remove a slice from the ctx.\n readonly remove = <T, N extends string = string>(\n sliceType: SliceType<T, N> | N\n ) => {\n this.#container.remove(sliceType)\n this.#inspector?.onRemove(sliceType)\n return this\n }\n\n /// Add a timer into the ctx.\n readonly record = (timerType: TimerType) => {\n timerType.create(this.#clock.store)\n this.#inspector?.onRecord(timerType)\n return this\n }\n\n /// Remove a timer from the ctx.\n readonly clearTimer = (timerType: TimerType) => {\n this.#clock.remove(timerType)\n this.#inspector?.onClear(timerType)\n return this\n }\n\n /// Check if the ctx has a slice.\n readonly isInjected = <T, N extends string = string>(\n sliceType: SliceType<T, N> | N\n ) => this.#container.has(sliceType)\n\n /// Check if the ctx has a timer.\n readonly isRecorded = (timerType: TimerType) => this.#clock.has(timerType)\n\n /// Get a slice from the ctx.\n readonly use = <T, N extends string = string>(\n sliceType: SliceType<T, N> | N\n ): Slice<T, N> => {\n this.#inspector?.onUse(sliceType)\n return this.#container.get(sliceType)\n }\n\n /// Get a slice value from the ctx.\n readonly get = <T, N extends string>(sliceType: SliceType<T, N> | N) =>\n this.use(sliceType).get()\n\n /// Get a slice value from the ctx.\n readonly set = <T, N extends string>(\n sliceType: SliceType<T, N> | N,\n value: T\n ) => this.use(sliceType).set(value)\n\n /// Update a slice value from the ctx by a callback.\n readonly update = <T, N extends string>(\n sliceType: SliceType<T, N> | N,\n updater: (prev: T) => T\n ) => this.use(sliceType).update(updater)\n\n /// Get a timer from the ctx.\n readonly timer = (timer: TimerType) => this.#clock.get(timer)\n\n /// Resolve a timer from the ctx.\n readonly done = (timer: TimerType) => {\n this.timer(timer).done()\n this.#inspector?.onDone(timer)\n }\n\n /// Start a timer from the ctx.\n readonly wait = (timer: TimerType) => {\n const promise = this.timer(timer).start()\n this.#inspector?.onWait(timer, promise)\n return promise\n }\n\n /// Start a list of timers from the ctx, the list is stored in a slice in the ctx.\n /// This is equivalent to\n ///\n /// ```typescript\n /// Promise.all(ctx.get(slice).map(x => ctx.wait(x))).\n /// ```\n readonly waitTimers = async (slice: SliceType<TimerType[]>) => {\n await Promise.all(this.get(slice).map((x) => this.wait(x)))\n }\n}\n", "import { timerNotFound } from '@milkdown/exception'\n\nimport type { Timer, TimerType } from './timer'\n\n/// @internal\nexport type TimerMap = Map<symbol, Timer>\n\n/// Container is a map of timers.\nexport class Clock {\n /// @internal\n readonly store: TimerMap = new Map()\n\n /// Get a timer from the clock by timer type.\n get = (timer: TimerType) => {\n const meta = this.store.get(timer.id)\n if (!meta) throw timerNotFound(timer.name)\n return meta\n }\n\n /// Remove a timer from the clock by timer type.\n remove = (timer: TimerType) => {\n this.store.delete(timer.id)\n }\n\n // Check if the clock has a timer by timer type.\n has = (timer: TimerType) => {\n return this.store.has(timer.id)\n }\n}\n", "import type { TimerMap } from './clock'\n\nexport type TimerStatus = 'pending' | 'resolved' | 'rejected'\n\n/// Timer is a promise that can be resolved by calling done.\nexport class Timer {\n /// The type of the timer.\n readonly type: TimerType\n\n /// @internal\n #promise: Promise<void> | null = null\n /// @internal\n #listener: EventListener | null = null\n /// @internal\n readonly #eventUniqId: symbol\n /// @internal\n #status: TimerStatus = 'pending'\n\n /// @internal\n constructor(clock: TimerMap, type: TimerType) {\n this.#eventUniqId = Symbol(type.name)\n this.type = type\n clock.set(type.id, this)\n }\n\n /// The status of the timer.\n /// Can be `pending`, `resolved` or `rejected`.\n get status() {\n return this.#status\n }\n\n /// Start the timer, which will return a promise.\n /// If the timer is already started, it will return the same promise.\n /// If the timer is not resolved in the timeout, it will reject the promise.\n start = () => {\n this.#promise ??= new Promise((resolve, reject) => {\n this.#listener = (e: Event) => {\n if (!(e instanceof CustomEvent)) return\n\n if (e.detail.id === this.#eventUniqId) {\n this.#status = 'resolved'\n this.#removeListener()\n e.stopImmediatePropagation()\n resolve()\n }\n }\n\n this.#waitTimeout(() => {\n if (this.#status === 'pending') this.#status = 'rejected'\n\n this.#removeListener()\n reject(new Error(`Timing ${this.type.name} timeout.`))\n })\n\n this.#status = 'pending'\n addEventListener(this.type.name, this.#listener)\n })\n\n return this.#promise\n }\n\n /// Resolve the timer.\n done = () => {\n const event = new CustomEvent(this.type.name, {\n detail: { id: this.#eventUniqId },\n })\n dispatchEvent(event)\n }\n\n /// @internal\n #removeListener = () => {\n if (this.#listener) removeEventListener(this.type.name, this.#listener)\n }\n\n /// @internal\n #waitTimeout = (ifTimeout: () => void) => {\n setTimeout(() => {\n ifTimeout()\n }, this.type.timeout)\n }\n}\n\n/// Timer type can be used to create timers in different clocks.\nexport class TimerType {\n /// The unique id of the timer type.\n readonly id: symbol\n /// The name of the timer type.\n readonly name: string\n /// The timeout of the timer type.\n readonly timeout: number\n\n /// Create a timer type with a name and a timeout.\n /// The name should be unique in the clock.\n constructor(name: string, timeout = 3000) {\n this.id = Symbol(`Timer-${name}`)\n this.name = name\n this.timeout = timeout\n }\n\n /// Create a timer with a clock.\n create = (clock: TimerMap): Timer => {\n return new Timer(clock, this)\n }\n}\n\n/// Create a timer type with a name and a timeout.\n/// This is equivalent to `new TimerType(name, timeout)`.\nexport const createTimer = (name: string, timeout = 3000) =>\n new TimerType(name, timeout)\n", "/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions\n const includeImageAlt =\n typeof settings.includeImageAlt === 'boolean'\n ? settings.includeImageAlt\n : true\n const includeHtml =\n typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value\n }\n\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt\n }\n\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml)\n }\n }\n\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml)\n }\n\n return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array<string>} */\n const result = []\n let index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml)\n }\n\n return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Nodes}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object')\n}\n", "/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n const characterReference = '&' + value + ';'\n element.innerHTML = characterReference\n const character = element.textContent\n\n // Some named character references do not require the closing semicolon\n // (`¬`, for instance), which leads to situations where parsing the assumed\n // named reference of `¬it;` will result in the string `\u00ACit;`.\n // When we encounter a trailing semicolon after parsing, and the character\n // reference to decode was not a semicolon (`;`), we can assume that the\n // matching was not complete.\n if (\n character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n value !== 'semi'\n ) {\n return false\n }\n\n // If the decoded string is equal to the input, the character reference was\n // not valid.\n return character === characterReference ? false : character\n}\n", "/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array<T>} items\n * Items to inject into `list`.\n * @returns {undefined}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array<unknown>} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there\u2019s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it\u2019s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it\u2019s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array<T>} list\n * List to operate on.\n * @param {Array<T>} items\n * Items to add to `list`.\n * @returns {Array<T>}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}", "/**\n * @import {\n * Extension,\n * Handles,\n * HtmlExtension,\n * NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n /** @type {Record<string, unknown>} */\n const left = maybe || (all[hook] = {})\n /** @type {Record<string, unknown> | undefined} */\n const right = extension[hook]\n /** @type {string} */\n let code\n\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n * List of constructs to merge into.\n * @param {Array<unknown>} list\n * List of constructs to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {Array<unknown>} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {undefined}\n * Nothing.\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {keyof Handles} */\n let type\n\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type]\n }\n }\n }\n}\n", "/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55_295 && code < 57_344 ||\n // Noncharacters.\n code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n // Out of range\n code > 1_114_111) {\n return \"\\uFFFD\";\n }\n return String.fromCodePoint(code);\n}", "/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered \u201Cuppercase\u201D, such as U+03F4 (`\u03F4`), but if their\n * lowercase counterpart (U+03B8 (`\u03B8`)) is uppercased will result in a different\n * uppercase character (U+0398 (`\u0398`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, \" \")\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered \u201Cuppercase\u201D, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `\u2409` represents a tab (plus how much it expands) and `\u2420` represents a\n * single space.\n *\n * ```markdown\n * \u2409\n * \u2420\u2420\u2420\u2420\n * \u2409\u2420\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns {State}\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}", "/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n * Content.\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, contentStart, \"linePrefix\");\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter(\"paragraph\");\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter(\"chunkText\", {\n contentType: \"text\",\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit(\"chunkText\");\n effects.exit(\"paragraph\");\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit(\"chunkText\");\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}", "/**\n * @import {\n * Construct,\n * ContainerState,\n * InitialConstruct,\n * Initializer,\n * Point,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n * Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array<StackItem>} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it\u2019s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they\u2019re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there\u2019s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can\u2019t have containers \u201Cpierce\u201D into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we\u2019d be interrupting it w/ a new container if there\u2019s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter(\"chunkFlow\", {\n _tokenizer: childFlow,\n contentType: \"flow\",\n previous: childToken\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit(\"chunkFlow\"), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit(\"chunkFlow\"));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * Token.\n * @param {boolean | undefined} [endOfFile]\n * Whether the token is at the end of the file (default: `false`).\n * @returns {undefined}\n * Nothing.\n */\n function writeToChild(token, endOfFile) {\n const stream = self.sliceStream(token);\n if (endOfFile) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can\u2019t \u201Cunmake\u201D it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which \u201Cunmakes\u201D the first line\n // and turns the whole into one content block.\n //\n // We\u2019ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending\u2026\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // \u2026and either is not ended yet\u2026\n !childFlow.events[index][1].end ||\n // \u2026or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there\u2019s still something open, which means it\u2019s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = {\n ...point\n };\n index++;\n }\n\n // Inject the exits earlier (they\u2019re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * Size.\n * @returns {undefined}\n * Nothing.\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n * Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > \uD83D\uDC49 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}", "/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array<Event>}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array<Resolver>} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n", "/**\n * @import {\n * Code,\n * Construct,\n * Event,\n * Point,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n resolveAll: resolveAllAttention,\n tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array<Event>} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it\u2019s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don\u2019t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = {\n ...events[open][1].end\n };\n const end = {\n ...events[index][1].start\n };\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start,\n end: {\n ...events[open][1].end\n }\n };\n closingSequence = {\n type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n start: {\n ...events[index][1].start\n },\n end\n };\n text = {\n type: use > 1 ? \"strongText\" : \"emphasisText\",\n start: {\n ...events[open][1].end\n },\n end: {\n ...events[index][1].start\n }\n };\n group = {\n type: use > 1 ? \"strong\" : \"emphasis\",\n start: {\n ...openingSequence.start\n },\n end: {\n ...closingSequence.end\n }\n };\n events[open][1].end = {\n ...openingSequence.start\n };\n events[index][1].start = {\n ...closingSequence.end\n };\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * Point.\n * @param {number} offset\n * Amount to move.\n * @returns {undefined}\n * Nothing.\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"autolink\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.enter(\"autolinkProtocol\");\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n if (code === 64) {\n return nok(code);\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * > | a<user@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | a<https://example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit(\"autolinkProtocol\");\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | a<user.name@example.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n effects.enter(\"autolinkMarker\");\n effects.consume(code);\n effects.exit(\"autolinkMarker\");\n effects.exit(\"autolink\");\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | a<user.name@ex-ample.com>b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n partial: true,\n tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n *\n * ```markdown\n * > | \u2420\u2420\u240A\n * ^\n * > | \u240A\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n *\n * ```markdown\n * > | \u2420\u2420\u240A\n * ^\n * > | \u240A\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit,\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter(\"blockQuote\", {\n _container: true\n });\n state.open = true;\n }\n effects.enter(\"blockQuotePrefix\");\n effects.enter(\"blockQuoteMarker\");\n effects.consume(code);\n effects.exit(\"blockQuoteMarker\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter(\"blockQuotePrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"blockQuotePrefixWhitespace\");\n effects.exit(\"blockQuotePrefix\");\n return ok;\n }\n effects.exit(\"blockQuotePrefix\");\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit(\"blockQuote\");\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterEscape\");\n effects.enter(\"escapeMarker\");\n effects.consume(code);\n effects.exit(\"escapeMarker\");\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter(\"characterEscapeValue\");\n effects.consume(code);\n effects.exit(\"characterEscapeValue\");\n effects.exit(\"characterEscape\");\n return ok;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"characterReference\");\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter(\"characterReferenceMarkerNumeric\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerNumeric\");\n return numeric;\n }\n effects.enter(\"characterReferenceValue\");\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter(\"characterReferenceMarkerHexadecimal\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarkerHexadecimal\");\n effects.enter(\"characterReferenceValue\");\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter(\"characterReferenceValue\");\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit(\"characterReferenceValue\");\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter(\"characterReferenceMarker\");\n effects.consume(code);\n effects.exit(\"characterReferenceMarker\");\n effects.exit(\"characterReference\");\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n partial: true,\n tokenize: tokenizeNonLazyContinuation\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n concrete: true,\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n partial: true,\n tokenize: tokenizeCloseStart\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter(\"codeFenced\");\n effects.enter(\"codeFencedFence\");\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFencedFenceInfo\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceInfo\");\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter(\"codeFencedFenceMeta\");\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit(\"codeFencedFenceMeta\");\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit(\"codeFenced\");\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter(\"codeFencedFence\");\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter(\"codeFencedFenceSequence\");\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit(\"codeFencedFenceSequence\");\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFencedFence\");\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n partial: true,\n tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter(\"codeIndented\");\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter(\"codeFlowValue\");\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"codeFlowValue\");\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit(\"codeIndented\");\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can\u2019t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can\u2019t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, \"linePrefix\", 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Previous,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n previous,\n resolve: resolveCodeText,\n tokenize: tokenizeCodeText\n};\n\n// To do: next major: don\u2019t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === \"codeTextData\") {\n // Then we have padding.\n events[headEnterIndex][1].type = \"codeTextPadding\";\n events[tailExitIndex][1].type = \"codeTextPadding\";\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = \"codeTextData\";\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"codeText\");\n effects.enter(\"codeTextSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit(\"codeTextSequence\");\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don\u2019t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter(\"codeTextSequence\");\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter(\"codeTextData\");\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit(\"codeTextData\");\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit(\"codeTextSequence\");\n effects.exit(\"codeText\");\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = \"codeTextData\";\n return data(code);\n }\n}", "/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n * - Array-length modifications at the high end of an array (push/pop) are\n * expected to be common and are implemented in (amortized) time\n * proportional to the number of elements added or removed, whereas\n * other operations (shift/unshift and splice) are much less efficient.\n * - Function arguments are passed on the stack, so adding tens of thousands\n * of elements to an array with `arr.push(...newElements)` will frequently\n * cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n * Item type.\n */\nexport class SpliceBuffer {\n /**\n * @param {ReadonlyArray<T> | null | undefined} [initial]\n * Initial items (optional).\n * @returns\n * Splice buffer.\n */\n constructor(initial) {\n /** @type {Array<T>} */\n this.left = initial ? [...initial] : [];\n /** @type {Array<T>} */\n this.right = [];\n }\n\n /**\n * Array access;\n * does not move the cursor.\n *\n * @param {number} index\n * Index.\n * @return {T}\n * Item.\n */\n get(index) {\n if (index < 0 || index >= this.left.length + this.right.length) {\n throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n }\n if (index < this.left.length) return this.left[index];\n return this.right[this.right.length - index + this.left.length - 1];\n }\n\n /**\n * The length of the splice buffer, one greater than the largest index in the\n * array.\n */\n get length() {\n return this.left.length + this.right.length;\n }\n\n /**\n * Remove and return `list[0]`;\n * moves the cursor to `0`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n shift() {\n this.setCursor(0);\n return this.right.pop();\n }\n\n /**\n * Slice the buffer to get an array;\n * does not move the cursor.\n *\n * @param {number} start\n * Start.\n * @param {number | null | undefined} [end]\n * End (optional).\n * @returns {Array<T>}\n * Array of items.\n */\n slice(start, end) {\n /** @type {number} */\n const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n if (stop < this.left.length) {\n return this.left.slice(start, stop);\n }\n if (start > this.left.length) {\n return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n }\n return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n }\n\n /**\n * Mimics the behavior of Array.prototype.splice() except for the change of\n * interface necessary to avoid segfaults when patching in very large arrays.\n *\n * This operation moves cursor is moved to `start` and results in the cursor\n * placed after any inserted items.\n *\n * @param {number} start\n * Start;\n * zero-based index at which to start changing the array;\n * negative numbers count backwards from the end of the array and values\n * that are out-of bounds are clamped to the appropriate end of the array.\n * @param {number | null | undefined} [deleteCount=0]\n * Delete count (default: `0`);\n * maximum number of elements to delete, starting from start.\n * @param {Array<T> | null | undefined} [items=[]]\n * Items to include in place of the deleted items (default: `[]`).\n * @return {Array<T>}\n * Any removed items.\n */\n splice(start, deleteCount, items) {\n /** @type {number} */\n const count = deleteCount || 0;\n this.setCursor(Math.trunc(start));\n const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n if (items) chunkedPush(this.left, items);\n return removed.reverse();\n }\n\n /**\n * Remove and return the highest-numbered item in the array, so\n * `list[list.length - 1]`;\n * Moves the cursor to `length`.\n *\n * @returns {T | undefined}\n * Item, optional.\n */\n pop() {\n this.setCursor(Number.POSITIVE_INFINITY);\n return this.left.pop();\n }\n\n /**\n * Inserts a single item to the high-numbered side of the array;\n * moves the cursor to `length`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n push(item) {\n this.setCursor(Number.POSITIVE_INFINITY);\n this.left.push(item);\n }\n\n /**\n * Inserts many items to the high-numbered side of the array.\n * Moves the cursor to `length`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n pushMany(items) {\n this.setCursor(Number.POSITIVE_INFINITY);\n chunkedPush(this.left, items);\n }\n\n /**\n * Inserts a single item to the low-numbered side of the array;\n * Moves the cursor to `0`.\n *\n * @param {T} item\n * Item.\n * @returns {undefined}\n * Nothing.\n */\n unshift(item) {\n this.setCursor(0);\n this.right.push(item);\n }\n\n /**\n * Inserts many items to the low-numbered side of the array;\n * moves the cursor to `0`.\n *\n * @param {Array<T>} items\n * Items.\n * @returns {undefined}\n * Nothing.\n */\n unshiftMany(items) {\n this.setCursor(0);\n chunkedPush(this.right, items.reverse());\n }\n\n /**\n * Move the cursor to a specific position in the array. Requires\n * time proportional to the distance moved.\n *\n * If `n < 0`, the cursor will end up at the beginning.\n * If `n > length`, the cursor will end up at the end.\n *\n * @param {number} n\n * Position.\n * @return {undefined}\n * Nothing.\n */\n setCursor(n) {\n if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n if (n < this.left.length) {\n // Move cursor to the this.left\n const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n chunkedPush(this.right, removed.reverse());\n } else {\n // Move cursor to the this.right\n const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n chunkedPush(this.left, removed.reverse());\n }\n }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n * Item type.\n * @param {Array<T>} list\n * List to inject into.\n * @param {ReadonlyArray<T>} right\n * Items to inject.\n * @return {undefined}\n * Nothing.\n */\nfunction chunkedPush(list, right) {\n /** @type {number} */\n let chunkStart = 0;\n if (right.length < 10000) {\n list.push(...right);\n } else {\n while (chunkStart < right.length) {\n list.push(...right.slice(chunkStart, chunkStart + 10000));\n chunkStart += 10000;\n }\n }\n}", "/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n /** @type {Record<string, number>} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array<Event>} */\n let parameters;\n /** @type {Array<Event>} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n const events = new SpliceBuffer(eventsArray);\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events.get(index);\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === \"content\") {\n break;\n }\n if (subevents[otherIndex][1].type === \"chunkText\") {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events.get(otherIndex);\n if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events.get(lineIndex)[1].type = \"lineEndingBlank\";\n }\n otherEvent[1].type = \"lineEnding\";\n lineIndex = otherIndex;\n }\n } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n // Move past.\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = {\n ...events.get(lineIndex)[1].start\n };\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n events.splice(lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n\n // The changes to the `events` buffer must be copied back into the eventsArray\n splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n * Events.\n * @param {number} eventIndex\n * Index.\n * @returns {Record<string, number>}\n * Gaps.\n */\nfunction subcontent(events, eventIndex) {\n const token = events.get(eventIndex)[1];\n const context = events.get(eventIndex)[2];\n let startPosition = eventIndex - 1;\n /** @type {Array<number>} */\n const startPositions = [];\n let tokenizer = token._tokenizer;\n if (!tokenizer) {\n tokenizer = context.parser[token.contentType](token.start);\n if (token._contentTypeTextTrailing) {\n tokenizer._contentTypeTextTrailing = true;\n }\n }\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record<string, number>} */\n const gaps = {};\n /** @type {Array<Chunk>} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events.get(++startPosition)[1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there\u2019s one more token (which is the cases for lines that end in an\n // EOF), that\u2019s perfect: the last point we found starts it.\n // If there isn\u2019t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren\u2019t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.push([start, start + slice.length - 1]);\n events.splice(start, 2, slice);\n }\n jumps.reverse();\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}", "/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n resolve: resolveContent,\n tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n partial: true,\n tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it\u2019s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter(\"content\");\n previous = effects.enter(\"chunkContent\", {\n contentType: \"content\"\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit(\"chunkContent\");\n effects.exit(\"content\");\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit(\"chunkContent\");\n previous.next = effects.enter(\"chunkContent\", {\n contentType: \"content\",\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit(\"chunkContent\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, prefixed, \"linePrefix\");\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | <aa>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | <a\\*a>\n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit(\"chunkString\");\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn\u2019t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}", "/**\n * @import {\n * Effects,\n * State,\n * TokenizeContext,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > \uD83D\uDC49 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we\u2019ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn\u2019t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return atBreak;\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}", "/**\n * @import {\n * Code,\n * Effects,\n * State,\n * TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can\u2019t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, atBreak, \"linePrefix\");\n }\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}", "/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns {State}\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n }\n return ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n partial: true,\n tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter(\"definition\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don\u2019t need to reset the way `markdown-rs` does.\n nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter(\"definitionMarker\");\n effects.consume(code);\n effects.exit(\"definitionMarker\");\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don\u2019t need to reset the way `markdown-rs` does.\n nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"definition\");\n\n // Note: we don\u2019t care about uniqueness.\n // It\u2019s likely that that doesn\u2019t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You\u2019d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"hardBreakEscape\");\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit(\"hardBreakEscape\");\n return ok(code);\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n resolve: resolveHeadingAtx,\n tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === \"whitespace\") {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: \"atxHeadingText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: \"chunkText\",\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: \"text\"\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter(\"atxHeading\");\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter(\"atxHeadingSequence\");\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"atxHeading\");\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, \"whitespace\")(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter(\"atxHeadingText\");\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal \u201Cvisible\u201D hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit(\"atxHeadingSequence\");\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"atxHeadingText\");\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}", "/**\n * List of lowercase HTML \u201Cblock\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn\u2019t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'search',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML \u201Craw\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n", "/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n concrete: true,\n name: 'htmlFlow',\n resolveTo: resolveToHtmlFlow,\n tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n partial: true,\n tokenize: tokenizeBlankLineBefore\n};\nconst nonLazyContinuationStart = {\n partial: true,\n tokenize: tokenizeNonLazyContinuationStart\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | <x />\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"htmlFlow\");\n effects.enter(\"htmlFlowData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | <x />\n * ^\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we\u2019re in an instruction instead of a declaration, we\u2019re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * > | <!--xxx-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<!-`, inside a comment, at another `-`.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After `<![`, inside CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | </x>\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n // Always the case.\n effects.consume(code);\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | <ab>\n * ^^\n * > | </ab>\n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > | <div/>\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | <x/>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | <a />\n * ^\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * > | <a >\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | <a :b>\n * ^\n * > | <a _b>\n * ^\n * > | <a b>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | <a b>\n * ^\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * > | <a b='c'>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | <a b=c>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | <a b=\"c\">\n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | <x>\n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit(\"htmlFlowData\");\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | <x>\n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | <x>\n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter(\"htmlFlowData\");\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | <!--xxx-->\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `</`, in a raw tag name.\n *\n * ```markdown\n * > | <script>console.log(1)</script>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n // Always the case.\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | <!-->\n * ^\n * > | <?>\n * ^\n * > | <!q>\n * ^\n * > | <!--ab-->\n * ^\n * > | <![CDATA[>&<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"htmlFlowData\");\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | <!doctype>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit(\"htmlFlow\");\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > | <div>\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return effects.attempt(blankLine, ok, nok);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code> | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"htmlText\");\n effects.enter(\"htmlTextData\");\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After `<!`, at declaration, comment, or CDATA.\n *\n * ```markdown\n * > | a <!doctype> c\n * ^\n * > | a <!--b--> c\n * ^\n * > | a <![CDATA[>&<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after `<!-`, at another `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a <!--b--> c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After `<![`, in CDATA, expecting `CDATA[`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = \"CDATA[\";\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a <![CDATA[>&<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a <!b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a <?b?> c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After `</`, in closing tag, at tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After `</x`, in a tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a </b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After `<x`, in opening tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a <b> c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a <b c> d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a <b c=d> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a <b c=\"d\"> e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit(\"htmlTextData\");\n effects.exit(\"htmlText\");\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a <!--a\n * ^\n * | b-->\n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit(\"htmlTextData\");\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a <!--a\n * > | b-->\n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter(\"htmlTextData\");\n return returnState(code);\n }\n}", "/**\n * @import {\n * Construct,\n * Event,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer,\n * Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n resolveAll: resolveAllLabelEnd,\n resolveTo: resolveToLabelEnd,\n tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n /** @type {Array<Event>} */\n const newEvents = [];\n while (++index < events.length) {\n const token = events[index][1];\n newEvents.push(events[index]);\n if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n // Remove the marker.\n const offset = token.type === \"labelImage\" ? 4 : 2;\n token.type = \"data\";\n index += offset;\n }\n }\n\n // If the events are equal, we don't have to copy newEvents to events\n if (events.length !== newEvents.length) {\n splice(events, 0, events.length, newEvents);\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array<Event>} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we\u2019ve been here before.\n if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can\u2019t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n open = index;\n if (token.type !== \"labelLink\") {\n offset = 2;\n break;\n }\n }\n } else if (token.type === \"labelEnd\") {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n const label = {\n type: \"label\",\n start: {\n ...events[open][1].start\n },\n end: {\n ...events[close][1].end\n }\n };\n const text = {\n type: \"labelText\",\n start: {\n ...events[open + offset + 2][1].end\n },\n end: {\n ...events[close - 2][1].start\n }\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === \"labelImage\" || self.events[index][1].type === \"labelLink\") && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we\u2019d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can\u2019t have that, so it\u2019s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter(\"labelEnd\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelEnd\");\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it\u2019s nothing.\n *\n * There was an okay opening, but we didn\u2019t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter(\"resource\");\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter(\"resourceMarker\");\n effects.consume(code);\n effects.exit(\"resourceMarker\");\n effects.exit(\"resource\");\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there\u2019s a `[`.\n\n effects.enter(\"reference\");\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter(\"referenceMarker\");\n effects.consume(code);\n effects.exit(\"referenceMarker\");\n effects.exit(\"reference\");\n return ok;\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelImage\");\n effects.enter(\"labelImageMarker\");\n effects.consume(code);\n effects.exit(\"labelImageMarker\");\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelImage\");\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n * <p>!<a href=\\\"b\\\">^a</a></p>\n * <p>!<a href=\\\"c\\\">^a</a></p>\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn\u2019t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n resolveAll: labelEnd.resolveAll,\n tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"labelLink\");\n effects.enter(\"labelMarker\");\n effects.consume(code);\n effects.exit(\"labelMarker\");\n effects.exit(\"labelLink\");\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn\u2019t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}", "/**\n * @import {\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return factorySpace(effects, ok, \"linePrefix\");\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(\"thematicBreak\");\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter(\"thematicBreakSequence\");\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit(\"thematicBreak\");\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit(\"thematicBreakSequence\");\n return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * Exiter,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd,\n name: 'list',\n tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n partial: true,\n tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n partial: true,\n tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === \"listUnordered\") {\n effects.enter(\"listItemPrefix\");\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter(\"listItemPrefix\");\n effects.enter(\"listItemValue\");\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit(\"listItemValue\");\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter(\"listItemMarker\");\n effects.consume(code);\n effects.exit(\"listItemMarker\");\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can\u2019t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter(\"listItemPrefixWhitespace\");\n effects.consume(code);\n effects.exit(\"listItemPrefixWhitespace\");\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we\u2019re closing flow, we\u2019re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n }\n}", "/**\n * @import {\n * Code,\n * Construct,\n * Resolver,\n * State,\n * TokenizeContext,\n * Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n resolveTo: resolveToSetextUnderline,\n tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === \"content\") {\n content = index;\n break;\n }\n if (events[index][1].type === \"paragraph\") {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === \"content\") {\n // Remove the content end (if needed we\u2019ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === \"definition\") {\n definition = index;\n }\n }\n }\n const heading = {\n type: \"setextHeading\",\n start: {\n ...events[content][1].start\n },\n end: {\n ...events[events.length - 1][1].end\n }\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = \"setextHeadingText\";\n\n // If we have definitions in the content, we\u2019ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = {\n ...events[definition][1].end\n };\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable<Code>} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n paragraph = self.events[index][1].type === \"paragraph\";\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter(\"setextHeadingLine\");\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter(\"setextHeadingLineSequence\");\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit(\"setextHeadingLineSequence\");\n return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"setextHeadingLine\");\n return ok(code);\n }\n return nok(code);\n }\n}", "/**\n * @import {\n * InitialConstruct,\n * Initializer,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * Self.\n * @type {Initializer}\n * Initializer.\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEndingBlank\");\n effects.consume(code);\n effects.exit(\"lineEndingBlank\");\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n self.currentConstruct = undefined;\n return initial;\n }\n}", "/**\n * @import {\n * Code,\n * InitialConstruct,\n * Initializer,\n * Resolver,\n * State,\n * TokenizeContext\n * } from 'micromark-util-types'\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * Field.\n * @returns {InitialConstruct}\n * Construct.\n */\nfunction initializeFactory(field) {\n return {\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n tokenize: initializeText\n };\n\n /**\n * @this {TokenizeContext}\n * Context.\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter(\"data\");\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit(\"data\");\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether the code is a break.\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * Resolver.\n * @returns {Resolver}\n * Resolver.\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === \"data\") {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== \"data\") {\n // Don\u2019t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can\u2019t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n\n // Allow final trailing whitespace.\n if (context._contentTypeTextTrailing && eventIndex === events.length) {\n size = 0;\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n start: {\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n _index: data.start._index + index,\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size\n },\n end: {\n ...data.end\n }\n };\n data.end = {\n ...token.start\n };\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}", "/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};", "/**\n * @import {\n * Chunk,\n * Code,\n * ConstructRecord,\n * Construct,\n * Effects,\n * InitialConstruct,\n * ParseContext,\n * Point,\n * State,\n * TokenizeContext,\n * Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n * Restore the state.\n * @returns {undefined}\n * Nothing.\n *\n * @typedef Info\n * Info.\n * @property {Restore} restore\n * Restore.\n * @property {number} from\n * From.\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * Construct.\n * @param {Info} info\n * Info.\n * @returns {undefined}\n * Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn\u2019t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * Parser.\n * @param {InitialConstruct} initialize\n * Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n * Point (optional).\n * @returns {TokenizeContext}\n * Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = {\n _bufferIndex: -1,\n _index: 0,\n line: from && from.line || 1,\n column: from && from.column || 1,\n offset: from && from.offset || 0\n };\n /** @type {Record<string, number>} */\n const columnStart = {};\n /** @type {Array<Construct>} */\n const resolveAllConstructs = [];\n /** @type {Array<Chunk>} */\n let chunks = [];\n /** @type {Array<Token>} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n consume,\n enter,\n exit,\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n code: null,\n containerState: {},\n defineSkip,\n events: [],\n now,\n parser,\n previous: null,\n sliceSerialize,\n sliceStream,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | undefined}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we\u2019re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n } = point;\n return {\n _bufferIndex,\n _index,\n line,\n column,\n offset\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {undefined}\n * Nothing.\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we\u2019re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * Code.\n * @returns {undefined}\n * Nothing.\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n if (point._bufferIndex ===\n // Points w/ non-negative `_bufferIndex` reference\n // strings.\n /** @type {string} */\n chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * Callback.\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n * Fields.\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array<Construct> | ConstructRecord | Construct} constructs\n * Constructs.\n * @param {State} returnState\n * State.\n * @param {State | undefined} [bogusState]\n * State.\n * @returns {State}\n * State.\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {ReadonlyArray<Construct>} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // Looks like a construct.\n handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const left = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {ReadonlyArray<Construct>} list\n * Constructs.\n * @returns {State}\n * State.\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * Construct.\n * @returns {State}\n * State.\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn\u2019t work because `inspect` in document does a check\n // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a \u201Clive binding\u201D, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * Construct.\n * @param {number} from\n * From.\n * @returns {undefined}\n * Nothing.\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n * Info.\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n from: startEventsIndex,\n restore\n };\n\n /**\n * Restore state.\n *\n * @returns {undefined}\n * Nothing.\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it\u2019s on a column\n * skip.\n *\n * @returns {undefined}\n * Nothing.\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n * Token.\n * @returns {Array<Chunk>}\n * Chunks.\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array<Chunk>} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n /* c8 ignore next 4 -- used to be used, no longer */\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n * Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n * Whether to expand tabs (default: `false`).\n * @returns {string}\n * Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array<string>} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = \"\\r\";\n break;\n }\n case -4:\n {\n value = \"\\n\";\n break;\n }\n case -3:\n {\n value = \"\\r\" + \"\\n\";\n break;\n }\n case -2:\n {\n value = expandTabs ? \" \" : \"\\t\";\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = \" \";\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}", "/**\n * @import {\n * Create,\n * FullNormalizedExtension,\n * InitialConstruct,\n * ParseContext,\n * ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ParseContext}\n * Parser.\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n constructs,\n content: create(content),\n defined: [],\n document: create(document),\n flow: create(flow),\n lazy: {},\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n * Construct to start with.\n * @returns {Create}\n * Create a tokenizer.\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n * Events.\n * @returns {Array<Event>}\n * Events.\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}", "/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n * Preprocess a value.\n * @param {Value} value\n * Value.\n * @param {Encoding | null | undefined} [encoding]\n * Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n * Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n * Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n * Preprocess a value.\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n // eslint-disable-next-line complexity\n function preprocessor(value, encoding, end) {\n /** @type {Array<Chunk>} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}", "import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * Match.\n * @param {string} $1\n * Character escape.\n * @param {string} $2\n * Character reference.\n * @returns {string}\n * Decoded value\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n", "/**\n * @import {\n * Break,\n * Blockquote,\n * Code,\n * Definition,\n * Emphasis,\n * Heading,\n * Html,\n * Image,\n * InlineCode,\n * Link,\n * ListItem,\n * List,\n * Nodes,\n * Paragraph,\n * PhrasingContent,\n * ReferenceType,\n * Root,\n * Strong,\n * Text,\n * ThematicBreak\n * } from 'mdast'\n * @import {\n * Encoding,\n * Event,\n * Token,\n * Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n * CompileContext,\n * CompileData,\n * Config,\n * Extension,\n * Handle,\n * OnEnterError,\n * Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n * Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n * Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {Root}\n * mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n if (encoding && typeof encoding === 'object') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n characterReference: onexitcharacterreference,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array<Event>} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n data\n };\n /** @type {Array<number>} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n switch (event[1].type) {\n case \"listUnordered\":\n case \"listOrdered\":\n case \"blockQuote\":\n {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n break;\n }\n case \"lineEndingBlank\":\n {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n break;\n }\n case \"linePrefix\":\n case \"listItemValue\":\n case \"listItemMarker\":\n case \"listItemPrefix\":\n case \"listItemPrefixWhitespace\":\n {\n // Empty.\n\n break;\n }\n default:\n {\n atMarker = undefined;\n }\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = \"lineEndingBlank\";\n listSpread = true;\n }\n tailEvent[1].type = \"lineEnding\";\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === \"listItemPrefix\") {\n /** @type {Token} */\n const item = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we\u2019ll add `end` in a second.\n end: undefined\n };\n listItem = item;\n events.splice(index, 0, ['enter', item, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Nodes} create\n * Create a node.\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['buffer']}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @type {CompileContext['enter']}\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = parent.children;\n siblings.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler || undefined]);\n node.position = {\n start: point(token.start),\n // @ts-expect-error: `end` will be patched later.\n end: undefined\n };\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle | undefined} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {undefined}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @type {CompileContext['exit']}\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it\u2019s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n }\n\n /**\n * @type {CompileContext['resume']}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n this.data.expectingFirstListItemValue = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (this.data.expectingFirstListItemValue) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n this.data.expectingFirstListItemValue = undefined;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (this.data.flowCodeInside) return;\n this.buffer();\n this.data.flowCodeInside = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n this.data.flowCodeInside = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n this.data.setextHeadingSlurpLineEnding = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n this.data.setextHeadingSlurpLineEnding = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n /** @type {Array<Nodes>} */\n const siblings = node.children;\n let tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start),\n // @ts-expect-error: we\u2019ll add `end` later.\n end: undefined\n };\n siblings.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we\u2019re at a hard break, include the line ending in there.\n if (this.data.atHardBreak) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n this.data.atHardBreak = undefined;\n return;\n }\n if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n this.data.atHardBreak = true;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n\n // To do: clean.\n if (this.data.inReference) {\n /** @type {ReferenceType} */\n const referenceType = this.data.referenceType || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n this.data.referenceType = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n this.data.inReference = true;\n if (node.type === 'link') {\n /** @type {Array<PhrasingContent>} */\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n this.data.inReference = undefined;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n this.data.referenceType = 'collapsed';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n this.data.referenceType = 'full';\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n this.data.characterReferenceType = token.type;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = this.data.characterReferenceType;\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n this.data.characterReferenceType = undefined;\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack[this.stack.length - 1];\n tail.value += value;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreference(token) {\n const tail = this.stack.pop();\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n return {\n type: 'heading',\n // @ts-expect-error `depth` will be set later.\n depth: 0,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {Html} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'canContainEols':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'transforms':\n {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n break;\n }\n case 'enter':\n case 'exit':\n {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n break;\n }\n // No default\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkParse(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.parser = parser\n\n /**\n * @type {Parser}\n */\n function parser(doc) {\n return fromMarkdown(doc, {\n ...self.data('settings'),\n ...options,\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n }\n}\n", "/**\n * @callback Handler\n * Handle a value, with a certain ID field set to a certain value.\n * The ID field is passed to `zwitch`, and it\u2019s value is this function\u2019s\n * place on the `handlers` record.\n * @param {...any} parameters\n * Arbitrary parameters passed to the zwitch.\n * The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback UnknownHandler\n * Handle values that do have a certain ID field, but it\u2019s set to a value\n * that is not listed in the `handlers` record.\n * @param {unknown} value\n * An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {any}\n * Anything!\n */\n\n/**\n * @callback InvalidHandler\n * Handle values that do not have a certain ID field.\n * @param {unknown} value\n * Any unknown value.\n * @param {...any} rest\n * Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n * This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n * Configuration (required).\n * @property {Invalid} [invalid]\n * Handler to use for invalid values.\n * @property {Unknown} [unknown]\n * Handler to use for unknown values.\n * @property {Handlers} [handlers]\n * Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n * Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n * Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n const settings = options || {}\n\n /**\n * Handle one value.\n *\n * Based on the bound `key`, a respective handler will be called.\n * If `value` is not an object, or doesn\u2019t have a `key` property, the special\n * \u201Cinvalid\u201D handler will be called.\n * If `value` has an unknown `key`, the special \u201Cunknown\u201D handler will be\n * called.\n *\n * All arguments, and the context object, are passed through to the handler,\n * and it\u2019s result is returned.\n *\n * @this {unknown}\n * Any context object.\n * @param {unknown} [value]\n * Any value.\n * @param {...unknown} parameters\n * Arbitrary parameters passed to the zwitch.\n * @property {Handler} invalid\n * Handle for values that do not have a certain ID field.\n * @property {Handler} unknown\n * Handle values that do have a certain ID field, but it\u2019s set to a value\n * that is not listed in the `handlers` record.\n * @property {Handlers} handlers\n * Record of handlers.\n * @returns {unknown}\n * Anything.\n */\n function one(value, ...parameters) {\n /** @type {Handler|undefined} */\n let fn = one.invalid\n const handlers = one.handlers\n\n if (value && own.call(value, key)) {\n // @ts-expect-error Indexable.\n const id = String(value[key])\n // @ts-expect-error Indexable.\n fn = own.call(handlers, id) ? handlers[id] : one.unknown\n }\n\n if (fn) {\n return fn.call(this, value, ...parameters)\n }\n }\n\n one.handlers = settings.handlers || {}\n one.invalid = settings.invalid\n one.unknown = settings.unknown\n\n // @ts-expect-error: matches!\n return one\n}\n", "/**\n * @import {Options, State} from './types.js'\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {State} base\n * @param {Options} extension\n * @returns {State}\n */\nexport function configure(base, extension) {\n let index = -1\n /** @type {keyof Options} */\n let key\n\n // First do subextensions.\n if (extension.extensions) {\n while (++index < extension.extensions.length) {\n configure(base, extension.extensions[index])\n }\n }\n\n for (key in extension) {\n if (own.call(extension, key)) {\n switch (key) {\n case 'extensions': {\n // Empty.\n break\n }\n\n /* c8 ignore next 4 */\n case 'unsafe': {\n list(base[key], extension[key])\n break\n }\n\n case 'join': {\n list(base[key], extension[key])\n break\n }\n\n case 'handlers': {\n map(base[key], extension[key])\n break\n }\n\n default: {\n // @ts-expect-error: matches.\n base.options[key] = extension[key]\n }\n }\n }\n }\n\n return base\n}\n\n/**\n * @template T\n * @param {Array<T>} left\n * @param {Array<T> | null | undefined} right\n */\nfunction list(left, right) {\n if (right) {\n left.push(...right)\n }\n}\n\n/**\n * @template T\n * @param {Record<string, T>} left\n * @param {Record<string, T> | null | undefined} right\n */\nfunction map(left, right) {\n if (right) {\n Object.assign(left, right)\n }\n}\n", "/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Blockquote} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function blockquote(node, _, state, info) {\n const exit = state.enter('blockquote')\n const tracker = state.createTracker(info)\n tracker.move('> ')\n tracker.shift(2)\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return '>' + (blank ? '' : ' ') + line\n}\n", "/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe} pattern\n * @returns {boolean}\n */\nexport function patternInScope(stack, pattern) {\n return (\n listInScope(stack, pattern.inConstruct, true) &&\n !listInScope(stack, pattern.notInConstruct, false)\n )\n}\n\n/**\n * @param {Array<ConstructName>} stack\n * @param {Unsafe['inConstruct']} list\n * @param {boolean} none\n * @returns {boolean}\n */\nfunction listInScope(stack, list, none) {\n if (typeof list === 'string') {\n list = [list]\n }\n\n if (!list || list.length === 0) {\n return none\n }\n\n let index = -1\n\n while (++index < list.length) {\n if (stack.includes(list[index])) {\n return true\n }\n }\n\n return false\n}\n", "/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * @param {Break} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function hardBreak(_, _1, state, info) {\n let index = -1\n\n while (++index < state.unsafe.length) {\n // If we can\u2019t put eols in this construct (setext headings, tables), use a\n // space instead.\n if (\n state.unsafe[index].character === '\\n' &&\n patternInScope(state.stack, state.unsafe[index])\n ) {\n return /[ \\t]/.test(info.before) ? '' : ' '\n }\n }\n\n return '\\\\\\n'\n}\n", "/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n * Content to search in.\n * @param {string} substring\n * Substring to look for, typically one character.\n * @returns {number}\n * Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n const source = String(value)\n let index = source.indexOf(substring)\n let expected = index\n let count = 0\n let max = 0\n\n if (typeof substring !== 'string') {\n throw new TypeError('Expected substring')\n }\n\n while (index !== -1) {\n if (index === expected) {\n if (++count > max) {\n max = count\n }\n } else {\n count = 1\n }\n\n expected = index + substring.length\n index = source.indexOf(substring, expected)\n }\n\n return max\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * @param {Code} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatCodeAsIndented(node, state) {\n return Boolean(\n state.options.fences === false &&\n node.value &&\n // If there\u2019s no info\u2026\n !node.lang &&\n // And there\u2019s a non-whitespace character\u2026\n /[^ \\r\\n]/.test(node.value) &&\n // And the value doesn\u2019t start or end in a blank\u2026\n !/^[\\t ]*(?:[\\r\\n]|$)|(?:^|[\\r\\n])[\\t ]*$/.test(node.value)\n )\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['fence'], null | undefined>}\n */\nexport function checkFence(state) {\n const marker = state.options.fence || '`'\n\n if (marker !== '`' && marker !== '~') {\n throw new Error(\n 'Cannot serialize code with `' +\n marker +\n '` for `options.fence`, expected `` ` `` or `~`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * @param {Code} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function code(node, _, state, info) {\n const marker = checkFence(state)\n const raw = node.value || ''\n const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n\n if (formatCodeAsIndented(node, state)) {\n const exit = state.enter('codeIndented')\n const value = state.indentLines(raw, map)\n exit()\n return value\n }\n\n const tracker = state.createTracker(info)\n const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n const exit = state.enter('codeFenced')\n let value = tracker.move(sequence)\n\n if (node.lang) {\n const subexit = state.enter(`codeFencedLang${suffix}`)\n value += tracker.move(\n state.safe(node.lang, {\n before: value,\n after: ' ',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n if (node.lang && node.meta) {\n const subexit = state.enter(`codeFencedMeta${suffix}`)\n value += tracker.move(' ')\n value += tracker.move(\n state.safe(node.meta, {\n before: value,\n after: '\\n',\n encode: ['`'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n}\n\n/** @type {Map} */\nfunction map(line, _, blank) {\n return (blank ? '' : ' ') + line\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['quote'], null | undefined>}\n */\nexport function checkQuote(state) {\n const marker = state.options.quote || '\"'\n\n if (marker !== '\"' && marker !== \"'\") {\n throw new Error(\n 'Cannot serialize title with `' +\n marker +\n '` for `options.quote`, expected `\"`, or `\\'`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * @param {Definition} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function definition(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('definition')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n value += tracker.move(\n state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n )\n value += tracker.move(']: ')\n\n subexit()\n\n if (\n // If there\u2019s no url, or\u2026\n !node.url ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : '\\n',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n exit()\n\n return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n */\nexport function checkEmphasis(state) {\n const marker = state.options.emphasis || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize emphasis with `' +\n marker +\n '` for `options.emphasis`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n", "/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n * Code point to encode.\n * @returns {string}\n * Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n", "/**\n * @import {EncodeSides} from '../types.js'\n */\n\nimport {classifyCharacter} from 'micromark-util-classify-character'\n\n/**\n * Check whether to encode (as a character reference) the characters\n * surrounding an attention run.\n *\n * Which characters are around an attention run influence whether it works or\n * not.\n *\n * See <https://github.com/orgs/syntax-tree/discussions/60> for more info.\n * See this markdown in a particular renderer to see what works:\n *\n * ```markdown\n * | | A (letter inside) | B (punctuation inside) | C (whitespace inside) | D (nothing inside) |\n * | ----------------------- | ----------------- | ---------------------- | --------------------- | ------------------ |\n * | 1 (letter outside) | x*y*z | x*.*z | x* *z | x**z |\n * | 2 (punctuation outside) | .*y*. | .*.*. | .* *. | .**. |\n * | 3 (whitespace outside) | x *y* z | x *.* z | x * * z | x ** z |\n * | 4 (nothing outside) | *x* | *.* | * * | ** |\n * ```\n *\n * @param {number} outside\n * Code point on the outer side of the run.\n * @param {number} inside\n * Code point on the inner side of the run.\n * @param {'*' | '_'} marker\n * Marker of the run.\n * Underscores are handled more strictly (they form less often) than\n * asterisks.\n * @returns {EncodeSides}\n * Whether to encode characters.\n */\n// Important: punctuation must never be encoded.\n// Punctuation is solely used by markdown constructs.\n// And by encoding itself.\n// Encoding them will break constructs or double encode things.\nexport function encodeInfo(outside, inside, marker) {\n const outsideKind = classifyCharacter(outside)\n const insideKind = classifyCharacter(inside)\n\n // Letter outside:\n if (outsideKind === undefined) {\n return insideKind === undefined\n ? // Letter inside:\n // we have to encode *both* letters for `_` as it is looser.\n // it already forms for `*` (and GFMs `~`).\n marker === '_'\n ? {inside: true, outside: true}\n : {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode both (letter, whitespace).\n {inside: true, outside: true}\n : // Punctuation inside: encode outer (letter)\n {inside: false, outside: true}\n }\n\n // Whitespace outside:\n if (outsideKind === 1) {\n return insideKind === undefined\n ? // Letter inside: already forms.\n {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode both (whitespace).\n {inside: true, outside: true}\n : // Punctuation inside: already forms.\n {inside: false, outside: false}\n }\n\n // Punctuation outside:\n return insideKind === undefined\n ? // Letter inside: already forms.\n {inside: false, outside: false}\n : insideKind === 1\n ? // Whitespace inside: encode inner (whitespace).\n {inside: true, outside: false}\n : // Punctuation inside: already forms.\n {inside: false, outside: false}\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nemphasis.peek = emphasisPeek\n\n/**\n * @param {Emphasis} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function emphasis(node, _, state, info) {\n const marker = checkEmphasis(state)\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n const before = tracker.move(marker)\n\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n )\n const betweenHead = between.charCodeAt(0)\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n )\n\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1)\n }\n\n const betweenTail = between.charCodeAt(between.length - 1)\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n }\n\n const after = tracker.move(marker)\n\n exit()\n\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n }\n return before + between + after\n}\n\n/**\n * @param {Emphasis} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction emphasisPeek(_, _1, state) {\n return state.options.emphasis || '*'\n}\n", "/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node\u2019s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node\u2019s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node\u2019s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node\u2019s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node\u2019s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node\u2019s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you\u2019re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn\u2019t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn\u2019t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node\u2019s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn\u2019t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn\u2019t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it\u2019s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn\u2019t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Heading} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatHeadingAsSetext(node, state) {\n let literalWithBreak = false\n\n // Look for literals with a line break.\n // Note that this also\n visit(node, function (node) {\n if (\n ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n node.type === 'break'\n ) {\n literalWithBreak = true\n return EXIT\n }\n })\n\n return Boolean(\n (!node.depth || node.depth < 3) &&\n toString(node) &&\n (state.options.setext || literalWithBreak)\n )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * @param {Heading} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function heading(node, _, state, info) {\n const rank = Math.max(Math.min(6, node.depth || 1), 1)\n const tracker = state.createTracker(info)\n\n if (formatHeadingAsSetext(node, state)) {\n const exit = state.enter('headingSetext')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...tracker.current(),\n before: '\\n',\n after: '\\n'\n })\n subexit()\n exit()\n\n return (\n value +\n '\\n' +\n (rank === 1 ? '=' : '-').repeat(\n // The whole size\u2026\n value.length -\n // Minus the position of the character after the last EOL (or\n // 0 if there is none)\u2026\n (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n )\n )\n }\n\n const sequence = '#'.repeat(rank)\n const exit = state.enter('headingAtx')\n const subexit = state.enter('phrasing')\n\n // Note: for proper tracking, we should reset the output positions when there\n // is no content returned, because then the space is not output.\n // Practically, in that case, there is no content, so it doesn\u2019t matter that\n // we\u2019ve tracked one too many characters.\n tracker.move(sequence + ' ')\n\n let value = state.containerPhrasing(node, {\n before: '# ',\n after: '\\n',\n ...tracker.current()\n })\n\n if (/^[\\t ]/.test(value)) {\n // To do: what effect has the character reference on tracking?\n value = encodeCharacterReference(value.charCodeAt(0)) + value.slice(1)\n }\n\n value = value ? sequence + ' ' + value : sequence\n\n if (state.options.closeAtx) {\n value += ' ' + sequence\n }\n\n subexit()\n exit()\n\n return value\n}\n", "/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * @param {Html} node\n * @returns {string}\n */\nexport function html(node) {\n return node.value || ''\n}\n\n/**\n * @returns {string}\n */\nfunction htmlPeek() {\n return '<'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * @param {Image} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function image(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const exit = state.enter('image')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n value += tracker.move(\n state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n )\n value += tracker.move('](')\n\n subexit()\n\n if (\n // If there\u2019s no url but there is a title\u2026\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n exit()\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imagePeek() {\n return '!'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * @param {ImageReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function imageReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('imageReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('![')\n const alt = state.safe(node.alt, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(alt + '][')\n\n subexit()\n // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn\u2019t matter that\n // we\u2019ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !alt || alt !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction imageReferencePeek() {\n return '!'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * @param {InlineCode} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nexport function inlineCode(node, _, state) {\n let value = node.value || ''\n let sequence = '`'\n let index = -1\n\n // If there is a single grave accent on its own in the code, use a fence of\n // two.\n // If there are two in a row, use one.\n while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n sequence += '`'\n }\n\n // If this is not just spaces or eols (tabs don\u2019t count), and either the\n // first or last character are a space, eol, or tick, then pad with spaces.\n if (\n /[^ \\r\\n]/.test(value) &&\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) || /^`|`$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can\u2019t escape characters in `inlineCode`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.charCodeAt(position) === 10 /* `\\n` */ &&\n value.charCodeAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n}\n\n/**\n * @returns {string}\n */\nfunction inlineCodePeek() {\n return '`'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * @param {Link} node\n * @param {State} state\n * @returns {boolean}\n */\nexport function formatLinkAsAutolink(node, state) {\n const raw = toString(node)\n\n return Boolean(\n !state.options.resourceLink &&\n // If there\u2019s a url\u2026\n node.url &&\n // And there\u2019s a no title\u2026\n !node.title &&\n // And the content of `node` is a single text node\u2026\n node.children &&\n node.children.length === 1 &&\n node.children[0].type === 'text' &&\n // And if the url is the same as the content\u2026\n (raw === node.url || 'mailto:' + raw === node.url) &&\n // And that starts w/ a protocol\u2026\n /^[a-z][a-z+.-]+:/i.test(node.url) &&\n // And that doesn\u2019t contain ASCII control codes (character escapes and\n // references don\u2019t work), space, or angle brackets\u2026\n !/[\\0- <>\\u007F]/.test(node.url)\n )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function link(node, _, state, info) {\n const quote = checkQuote(state)\n const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n const tracker = state.createTracker(info)\n /** @type {Exit} */\n let exit\n /** @type {Exit} */\n let subexit\n\n if (formatLinkAsAutolink(node, state)) {\n // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n const stack = state.stack\n state.stack = []\n exit = state.enter('autolink')\n let value = tracker.move('<')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '>',\n ...tracker.current()\n })\n )\n value += tracker.move('>')\n exit()\n state.stack = stack\n return value\n }\n\n exit = state.enter('link')\n subexit = state.enter('label')\n let value = tracker.move('[')\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: '](',\n ...tracker.current()\n })\n )\n value += tracker.move('](')\n subexit()\n\n if (\n // If there\u2019s no url but there is a title\u2026\n (!node.url && node.title) ||\n // If there are control characters or whitespace.\n /[\\0- \\u007F]/.test(node.url)\n ) {\n subexit = state.enter('destinationLiteral')\n value += tracker.move('<')\n value += tracker.move(\n state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n )\n value += tracker.move('>')\n } else {\n // No whitespace, raw is prettier.\n subexit = state.enter('destinationRaw')\n value += tracker.move(\n state.safe(node.url, {\n before: value,\n after: node.title ? ' ' : ')',\n ...tracker.current()\n })\n )\n }\n\n subexit()\n\n if (node.title) {\n subexit = state.enter(`title${suffix}`)\n value += tracker.move(' ' + quote)\n value += tracker.move(\n state.safe(node.title, {\n before: value,\n after: quote,\n ...tracker.current()\n })\n )\n value += tracker.move(quote)\n subexit()\n }\n\n value += tracker.move(')')\n\n exit()\n return value\n}\n\n/**\n * @param {Link} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @returns {string}\n */\nfunction linkPeek(node, _, state) {\n return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * @param {LinkReference} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function linkReference(node, _, state, info) {\n const type = node.referenceType\n const exit = state.enter('linkReference')\n let subexit = state.enter('label')\n const tracker = state.createTracker(info)\n let value = tracker.move('[')\n const text = state.containerPhrasing(node, {\n before: value,\n after: ']',\n ...tracker.current()\n })\n value += tracker.move(text + '][')\n\n subexit()\n // Hide the fact that we\u2019re in phrasing, because escapes don\u2019t work.\n const stack = state.stack\n state.stack = []\n subexit = state.enter('reference')\n // Note: for proper tracking, we should reset the output positions when we end\n // up making a `shortcut` reference, because then there is no brace output.\n // Practically, in that case, there is no content, so it doesn\u2019t matter that\n // we\u2019ve tracked one too many characters.\n const reference = state.safe(state.associationId(node), {\n before: value,\n after: ']',\n ...tracker.current()\n })\n subexit()\n state.stack = stack\n exit()\n\n if (type === 'full' || !text || text !== reference) {\n value += tracker.move(reference + ']')\n } else if (type === 'shortcut') {\n // Remove the unwanted `[`.\n value = value.slice(0, -1)\n } else {\n value += tracker.move(']')\n }\n\n return value\n}\n\n/**\n * @returns {string}\n */\nfunction linkReferencePeek() {\n return '['\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBullet(state) {\n const marker = state.options.bullet || '*'\n\n if (marker !== '*' && marker !== '+' && marker !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bullet`, expected `*`, `+`, or `-`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bullet'], null | undefined>}\n */\nexport function checkBulletOther(state) {\n const bullet = checkBullet(state)\n const bulletOther = state.options.bulletOther\n\n if (!bulletOther) {\n return bullet === '*' ? '-' : '*'\n }\n\n if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n throw new Error(\n 'Cannot serialize items with `' +\n bulletOther +\n '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n )\n }\n\n if (bulletOther === bullet) {\n throw new Error(\n 'Expected `bullet` (`' +\n bullet +\n '`) and `bulletOther` (`' +\n bulletOther +\n '`) to be different'\n )\n }\n\n return bulletOther\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n */\nexport function checkBulletOrdered(state) {\n const marker = state.options.bulletOrdered || '.'\n\n if (marker !== '.' && marker !== ')') {\n throw new Error(\n 'Cannot serialize items with `' +\n marker +\n '` for `options.bulletOrdered`, expected `.` or `)`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['rule'], null | undefined>}\n */\nexport function checkRule(state) {\n const marker = state.options.rule || '*'\n\n if (marker !== '*' && marker !== '-' && marker !== '_') {\n throw new Error(\n 'Cannot serialize rules with `' +\n marker +\n '` for `options.rule`, expected `*`, `-`, or `_`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {List} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function list(node, parent, state, info) {\n const exit = state.enter('list')\n const bulletCurrent = state.bulletCurrent\n /** @type {string} */\n let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n /** @type {string} */\n const bulletOther = node.ordered\n ? bullet === '.'\n ? ')'\n : '.'\n : checkBulletOther(state)\n let useDifferentMarker =\n parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n if (!node.ordered) {\n const firstListItem = node.children ? node.children[0] : undefined\n\n // If there\u2019s an empty first list item directly in two list items,\n // we have to use a different bullet:\n //\n // ```markdown\n // * - *\n // ```\n //\n // \u2026because otherwise it would become one big thematic break.\n if (\n // Bullet could be used as a thematic break marker:\n (bullet === '*' || bullet === '-') &&\n // Empty first list item:\n firstListItem &&\n (!firstListItem.children || !firstListItem.children[0]) &&\n // Directly in two other list items:\n state.stack[state.stack.length - 1] === 'list' &&\n state.stack[state.stack.length - 2] === 'listItem' &&\n state.stack[state.stack.length - 3] === 'list' &&\n state.stack[state.stack.length - 4] === 'listItem' &&\n // That are each the first child.\n state.indexStack[state.indexStack.length - 1] === 0 &&\n state.indexStack[state.indexStack.length - 2] === 0 &&\n state.indexStack[state.indexStack.length - 3] === 0\n ) {\n useDifferentMarker = true\n }\n\n // If there\u2019s a thematic break at the start of the first list item,\n // we have to use a different bullet:\n //\n // ```markdown\n // * ---\n // ```\n //\n // \u2026because otherwise it would become one big thematic break.\n if (checkRule(state) === bullet && firstListItem) {\n let index = -1\n\n while (++index < node.children.length) {\n const item = node.children[index]\n\n if (\n item &&\n item.type === 'listItem' &&\n item.children &&\n item.children[0] &&\n item.children[0].type === 'thematicBreak'\n ) {\n useDifferentMarker = true\n break\n }\n }\n }\n }\n\n if (useDifferentMarker) {\n bullet = bulletOther\n }\n\n state.bulletCurrent = bullet\n const value = state.containerFlow(node, info)\n state.bulletLastUsed = bullet\n state.bulletCurrent = bulletCurrent\n exit()\n return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n */\nexport function checkListItemIndent(state) {\n const style = state.options.listItemIndent || 'one'\n\n if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n throw new Error(\n 'Cannot serialize items with `' +\n style +\n '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n )\n }\n\n return style\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * @param {ListItem} node\n * @param {Parents | undefined} parent\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function listItem(node, parent, state, info) {\n const listItemIndent = checkListItemIndent(state)\n let bullet = state.bulletCurrent || checkBullet(state)\n\n // Add the marker value for ordered lists.\n if (parent && parent.type === 'list' && parent.ordered) {\n bullet =\n (typeof parent.start === 'number' && parent.start > -1\n ? parent.start\n : 1) +\n (state.options.incrementListMarker === false\n ? 0\n : parent.children.indexOf(node)) +\n bullet\n }\n\n let size = bullet.length + 1\n\n if (\n listItemIndent === 'tab' ||\n (listItemIndent === 'mixed' &&\n ((parent && parent.type === 'list' && parent.spread) || node.spread))\n ) {\n size = Math.ceil(size / 4) * 4\n }\n\n const tracker = state.createTracker(info)\n tracker.move(bullet + ' '.repeat(size - bullet.length))\n tracker.shift(size)\n const exit = state.enter('listItem')\n const value = state.indentLines(\n state.containerFlow(node, tracker.current()),\n map\n )\n exit()\n\n return value\n\n /** @type {Map} */\n function map(line, index, blank) {\n if (index) {\n return (blank ? '' : ' '.repeat(size)) + line\n }\n\n return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n }\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * @param {Paragraph} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function paragraph(node, _, state, info) {\n const exit = state.enter('paragraph')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, info)\n subexit()\n exit()\n return value\n}\n", "/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > \uD83D\uDC49 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @returns\n * Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n (\n convert([\n 'break',\n 'delete',\n 'emphasis',\n // To do: next major: removed since footnotes were added to GFM.\n 'footnote',\n 'footnoteReference',\n 'image',\n 'imageReference',\n 'inlineCode',\n // Enabled by `mdast-util-math`:\n 'inlineMath',\n 'link',\n 'linkReference',\n // Enabled by `mdast-util-mdx`:\n 'mdxJsxTextElement',\n // Enabled by `mdast-util-mdx`:\n 'mdxTextExpression',\n 'strong',\n 'text',\n // Enabled by `mdast-util-directive`:\n 'textDirective'\n ])\n )\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * @param {Root} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function root(node, _, state, info) {\n // Note: `html` nodes are ambiguous.\n const hasPhrasing = node.children.some(function (d) {\n return phrasing(d)\n })\n\n const container = hasPhrasing ? state.containerPhrasing : state.containerFlow\n return container.call(state, node, info)\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['strong'], null | undefined>}\n */\nexport function checkStrong(state) {\n const marker = state.options.strong || '*'\n\n if (marker !== '*' && marker !== '_') {\n throw new Error(\n 'Cannot serialize strong with `' +\n marker +\n '` for `options.strong`, expected `*`, or `_`'\n )\n }\n\n return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {encodeInfo} from '../util/encode-info.js'\n\nstrong.peek = strongPeek\n\n/**\n * @param {Strong} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function strong(node, _, state, info) {\n const marker = checkStrong(state)\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n const before = tracker.move(marker + marker)\n\n let between = tracker.move(\n state.containerPhrasing(node, {\n after: marker,\n before,\n ...tracker.current()\n })\n )\n const betweenHead = between.charCodeAt(0)\n const open = encodeInfo(\n info.before.charCodeAt(info.before.length - 1),\n betweenHead,\n marker\n )\n\n if (open.inside) {\n between = encodeCharacterReference(betweenHead) + between.slice(1)\n }\n\n const betweenTail = between.charCodeAt(between.length - 1)\n const close = encodeInfo(info.after.charCodeAt(0), betweenTail, marker)\n\n if (close.inside) {\n between = between.slice(0, -1) + encodeCharacterReference(betweenTail)\n }\n\n const after = tracker.move(marker + marker)\n\n exit()\n\n state.attentionEncodeSurroundingInfo = {\n after: close.outside,\n before: open.outside\n }\n return before + between + after\n}\n\n/**\n * @param {Strong} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nfunction strongPeek(_, _1, state) {\n return state.options.strong || '*'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * @param {Text} node\n * @param {Parents | undefined} _\n * @param {State} state\n * @param {Info} info\n * @returns {string}\n */\nexport function text(node, _, state, info) {\n return state.safe(node.value, info)\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * @param {State} state\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n */\nexport function checkRuleRepetition(state) {\n const repetition = state.options.ruleRepetition || 3\n\n if (repetition < 3) {\n throw new Error(\n 'Cannot serialize rules with repetition `' +\n repetition +\n '` for `options.ruleRepetition`, expected `3` or more'\n )\n }\n\n return repetition\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * @param {ThematicBreak} _\n * @param {Parents | undefined} _1\n * @param {State} state\n * @returns {string}\n */\nexport function thematicBreak(_, _1, state) {\n const value = (\n checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n ).repeat(checkRuleRepetition(state))\n\n return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n", "import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n blockquote,\n break: hardBreak,\n code,\n definition,\n emphasis,\n hardBreak,\n heading,\n html,\n image,\n imageReference,\n inlineCode,\n link,\n linkReference,\n list,\n listItem,\n paragraph,\n root,\n strong,\n text,\n thematicBreak\n}\n", "/**\n * @import {Join} from 'mdast-util-to-markdown'\n */\n\nimport {formatCodeAsIndented} from './util/format-code-as-indented.js'\nimport {formatHeadingAsSetext} from './util/format-heading-as-setext.js'\n\n/** @type {Array<Join>} */\nexport const join = [joinDefaults]\n\n/** @type {Join} */\nfunction joinDefaults(left, right, parent, state) {\n // Indented code after list or another indented code.\n if (\n right.type === 'code' &&\n formatCodeAsIndented(right, state) &&\n (left.type === 'list' ||\n (left.type === right.type && formatCodeAsIndented(left, state)))\n ) {\n return false\n }\n\n // Join children of a list or an item.\n // In which case, `parent` has a `spread` field.\n if ('spread' in parent && typeof parent.spread === 'boolean') {\n if (\n left.type === 'paragraph' &&\n // Two paragraphs.\n (left.type === right.type ||\n right.type === 'definition' ||\n // Paragraph followed by a setext heading.\n (right.type === 'heading' && formatHeadingAsSetext(right, state)))\n ) {\n return\n }\n\n return parent.spread ? 1 : 0\n }\n}\n", "/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain things like attention (emphasis, strong), images, or links.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * @type {Array<ConstructName>}\n */\nconst fullPhrasingSpans = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\n/** @type {Array<Unsafe>} */\nexport const unsafe = [\n {character: '\\t', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {character: '\\t', before: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {\n character: '\\t',\n inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde']\n },\n {\n character: '\\r',\n inConstruct: [\n 'codeFencedLangGraveAccent',\n 'codeFencedLangTilde',\n 'codeFencedMetaGraveAccent',\n 'codeFencedMetaTilde',\n 'destinationLiteral',\n 'headingAtx'\n ]\n },\n {\n character: '\\n',\n inConstruct: [\n 'codeFencedLangGraveAccent',\n 'codeFencedLangTilde',\n 'codeFencedMetaGraveAccent',\n 'codeFencedMetaTilde',\n 'destinationLiteral',\n 'headingAtx'\n ]\n },\n {character: ' ', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {character: ' ', before: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n {\n character: ' ',\n inConstruct: ['codeFencedLangGraveAccent', 'codeFencedLangTilde']\n },\n // An exclamation mark can start an image, if it is followed by a link or\n // a link reference.\n {\n character: '!',\n after: '\\\\[',\n inConstruct: 'phrasing',\n notInConstruct: fullPhrasingSpans\n },\n // A quote can break out of a title.\n {character: '\"', inConstruct: 'titleQuote'},\n // A number sign could start an ATX heading if it starts a line.\n {atBreak: true, character: '#'},\n {character: '#', inConstruct: 'headingAtx', after: '(?:[\\r\\n]|$)'},\n // Dollar sign and percentage are not used in markdown.\n // An ampersand could start a character reference.\n {character: '&', after: '[#A-Za-z]', inConstruct: 'phrasing'},\n // An apostrophe can break out of a title.\n {character: \"'\", inConstruct: 'titleApostrophe'},\n // A left paren could break out of a destination raw.\n {character: '(', inConstruct: 'destinationRaw'},\n // A left paren followed by `]` could make something into a link or image.\n {\n before: '\\\\]',\n character: '(',\n inConstruct: 'phrasing',\n notInConstruct: fullPhrasingSpans\n },\n // A right paren could start a list item or break out of a destination\n // raw.\n {atBreak: true, before: '\\\\d+', character: ')'},\n {character: ')', inConstruct: 'destinationRaw'},\n // An asterisk can start thematic breaks, list items, emphasis, strong.\n {atBreak: true, character: '*', after: '(?:[ \\t\\r\\n*])'},\n {character: '*', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n // A plus sign could start a list item.\n {atBreak: true, character: '+', after: '(?:[ \\t\\r\\n])'},\n // A dash can start thematic breaks, list items, and setext heading\n // underlines.\n {atBreak: true, character: '-', after: '(?:[ \\t\\r\\n-])'},\n // A dot could start a list item.\n {atBreak: true, before: '\\\\d+', character: '.', after: '(?:[ \\t\\r\\n]|$)'},\n // Slash, colon, and semicolon are not used in markdown for constructs.\n // A less than can start html (flow or text) or an autolink.\n // HTML could start with an exclamation mark (declaration, cdata, comment),\n // slash (closing tag), question mark (instruction), or a letter (tag).\n // An autolink also starts with a letter.\n // Finally, it could break out of a destination literal.\n {atBreak: true, character: '<', after: '[!/?A-Za-z]'},\n {\n character: '<',\n after: '[!/?A-Za-z]',\n inConstruct: 'phrasing',\n notInConstruct: fullPhrasingSpans\n },\n {character: '<', inConstruct: 'destinationLiteral'},\n // An equals to can start setext heading underlines.\n {atBreak: true, character: '='},\n // A greater than can start block quotes and it can break out of a\n // destination literal.\n {atBreak: true, character: '>'},\n {character: '>', inConstruct: 'destinationLiteral'},\n // Question mark and at sign are not used in markdown for constructs.\n // A left bracket can start definitions, references, labels,\n {atBreak: true, character: '['},\n {character: '[', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n {character: '[', inConstruct: ['label', 'reference']},\n // A backslash can start an escape (when followed by punctuation) or a\n // hard break (when followed by an eol).\n // Note: typical escapes are handled in `safe`!\n {character: '\\\\', after: '[\\\\r\\\\n]', inConstruct: 'phrasing'},\n // A right bracket can exit labels.\n {character: ']', inConstruct: ['label', 'reference']},\n // Caret is not used in markdown for constructs.\n // An underscore can start emphasis, strong, or a thematic break.\n {atBreak: true, character: '_'},\n {character: '_', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n // A grave accent can start code (fenced or text), or it can break out of\n // a grave accent code fence.\n {atBreak: true, character: '`'},\n {\n character: '`',\n inConstruct: ['codeFencedLangGraveAccent', 'codeFencedMetaGraveAccent']\n },\n {character: '`', inConstruct: 'phrasing', notInConstruct: fullPhrasingSpans},\n // Left brace, vertical bar, right brace are not used in markdown for\n // constructs.\n // A tilde can start code (fenced).\n {atBreak: true, character: '~'}\n]\n", "/**\n * @import {AssociationId} from '../types.js'\n */\n\nimport {decodeString} from 'micromark-util-decode-string'\n\n/**\n * Get an identifier from an association to match it to others.\n *\n * Associations are nodes that match to something else through an ID:\n * <https://github.com/syntax-tree/mdast#association>.\n *\n * The `label` of an association is the string value: character escapes and\n * references work, and casing is intact.\n * The `identifier` is used to match one association to another:\n * controversially, character escapes and references don\u2019t work in this\n * matching: `©` does not match `\u00A9`, and `\\+` does not match `+`.\n *\n * But casing is ignored (and whitespace) is trimmed and collapsed: ` A\\nb`\n * matches `a b`.\n * So, we do prefer the label when figuring out how we\u2019re going to serialize:\n * it has whitespace, casing, and we can ignore most useless character\n * escapes and all character references.\n *\n * @type {AssociationId}\n */\nexport function association(node) {\n if (node.label || !node.identifier) {\n return node.label || ''\n }\n\n return decodeString(node.identifier)\n}\n", "/**\n * @import {CompilePattern} from '../types.js'\n */\n\n/**\n * @type {CompilePattern}\n */\nexport function compilePattern(pattern) {\n if (!pattern._compiled) {\n const before =\n (pattern.atBreak ? '[\\\\r\\\\n][\\\\t ]*' : '') +\n (pattern.before ? '(?:' + pattern.before + ')' : '')\n\n pattern._compiled = new RegExp(\n (before ? '(' + before + ')' : '') +\n (/[|\\\\{}()[\\]^$+*?.-]/.test(pattern.character) ? '\\\\' : '') +\n pattern.character +\n (pattern.after ? '(?:' + pattern.after + ')' : ''),\n 'g'\n )\n }\n\n return pattern._compiled\n}\n", "/**\n * @import {Handle, Info, State} from 'mdast-util-to-markdown'\n * @import {PhrasingParents} from '../types.js'\n */\n\nimport {encodeCharacterReference} from './encode-character-reference.js'\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @param {PhrasingParents} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nexport function containerPhrasing(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n /** @type {Array<string>} */\n const results = []\n let index = -1\n let before = info.before\n /** @type {string | undefined} */\n let encodeAfter\n\n indexStack.push(-1)\n let tracker = state.createTracker(info)\n\n while (++index < children.length) {\n const child = children[index]\n /** @type {string} */\n let after\n\n indexStack[indexStack.length - 1] = index\n\n if (index + 1 < children.length) {\n /** @type {Handle} */\n // @ts-expect-error: hush, it\u2019s actually a `zwitch`.\n let handle = state.handle.handlers[children[index + 1].type]\n /** @type {Handle} */\n // @ts-expect-error: hush, it\u2019s actually a `zwitch`.\n if (handle && handle.peek) handle = handle.peek\n after = handle\n ? handle(children[index + 1], parent, state, {\n before: '',\n after: '',\n ...tracker.current()\n }).charAt(0)\n : ''\n } else {\n after = info.after\n }\n\n // In some cases, html (text) can be found in phrasing right after an eol.\n // When we\u2019d serialize that, in most cases that would be seen as html\n // (flow).\n // As we can\u2019t escape or so to prevent it from happening, we take a somewhat\n // reasonable approach: replace that eol with a space.\n // See: <https://github.com/syntax-tree/mdast-util-to-markdown/issues/15>\n if (\n results.length > 0 &&\n (before === '\\r' || before === '\\n') &&\n child.type === 'html'\n ) {\n results[results.length - 1] = results[results.length - 1].replace(\n /(\\r?\\n|\\r)$/,\n ' '\n )\n before = ' '\n\n // To do: does this work to reset tracker?\n tracker = state.createTracker(info)\n tracker.move(results.join(''))\n }\n\n let value = state.handle(child, parent, state, {\n ...tracker.current(),\n after,\n before\n })\n\n // If we had to encode the first character after the previous node and it\u2019s\n // still the same character,\n // encode it.\n if (encodeAfter && encodeAfter === value.slice(0, 1)) {\n value =\n encodeCharacterReference(encodeAfter.charCodeAt(0)) + value.slice(1)\n }\n\n const encodingInfo = state.attentionEncodeSurroundingInfo\n state.attentionEncodeSurroundingInfo = undefined\n encodeAfter = undefined\n\n // If we have to encode the first character before the current node and\n // it\u2019s still the same character,\n // encode it.\n if (encodingInfo) {\n if (\n results.length > 0 &&\n encodingInfo.before &&\n before === results[results.length - 1].slice(-1)\n ) {\n results[results.length - 1] =\n results[results.length - 1].slice(0, -1) +\n encodeCharacterReference(before.charCodeAt(0))\n }\n\n if (encodingInfo.after) encodeAfter = after\n }\n\n tracker.move(value)\n results.push(value)\n before = value.slice(-1)\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {FlowChildren, FlowParents, TrackFields} from '../types.js'\n */\n\n/**\n * @param {FlowParents} parent\n * Parent of flow nodes.\n * @param {State} state\n * Info passed around about the current state.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nexport function containerFlow(parent, state, info) {\n const indexStack = state.indexStack\n const children = parent.children || []\n const tracker = state.createTracker(info)\n /** @type {Array<string>} */\n const results = []\n let index = -1\n\n indexStack.push(-1)\n\n while (++index < children.length) {\n const child = children[index]\n\n indexStack[indexStack.length - 1] = index\n\n results.push(\n tracker.move(\n state.handle(child, parent, state, {\n before: '\\n',\n after: '\\n',\n ...tracker.current()\n })\n )\n )\n\n if (child.type !== 'list') {\n state.bulletLastUsed = undefined\n }\n\n if (index < children.length - 1) {\n results.push(\n tracker.move(between(child, children[index + 1], parent, state))\n )\n }\n }\n\n indexStack.pop()\n\n return results.join('')\n}\n\n/**\n * @param {FlowChildren} left\n * @param {FlowChildren} right\n * @param {FlowParents} parent\n * @param {State} state\n * @returns {string}\n */\nfunction between(left, right, parent, state) {\n let index = state.join.length\n\n while (index--) {\n const result = state.join[index](left, right, parent, state)\n\n if (result === true || result === 1) {\n break\n }\n\n if (typeof result === 'number') {\n return '\\n'.repeat(1 + result)\n }\n\n if (result === false) {\n return '\\n\\n<!---->\\n\\n'\n }\n }\n\n return '\\n\\n'\n}\n", "/**\n * @import {IndentLines} from '../types.js'\n */\n\nconst eol = /\\r?\\n|\\r/g\n\n/**\n * @type {IndentLines}\n */\nexport function indentLines(value, map) {\n /** @type {Array<string>} */\n const result = []\n let start = 0\n let line = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = eol.exec(value))) {\n one(value.slice(start, match.index))\n result.push(match[0])\n start = match.index + match[0].length\n line++\n }\n\n one(value.slice(start))\n\n return result.join('')\n\n /**\n * @param {string} value\n */\n function one(value) {\n result.push(map(value, line, !value))\n }\n}\n", "/**\n * @import {SafeConfig, State} from 'mdast-util-to-markdown'\n */\n\nimport {encodeCharacterReference} from './encode-character-reference.js'\nimport {patternInScope} from './pattern-in-scope.js'\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What \u201Cconstructs\u201D we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @param {State} state\n * Info passed around about the current state.\n * @param {string | null | undefined} input\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nexport function safe(state, input, config) {\n const value = (config.before || '') + (input || '') + (config.after || '')\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const result = []\n /** @type {Record<number, {before: boolean, after: boolean}>} */\n const infos = {}\n let index = -1\n\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n if (!patternInScope(state.stack, pattern)) {\n continue\n }\n\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(value))) {\n const before = 'before' in pattern || Boolean(pattern.atBreak)\n const after = 'after' in pattern\n const position = match.index + (before ? match[1].length : 0)\n\n if (positions.includes(position)) {\n if (infos[position].before && !before) {\n infos[position].before = false\n }\n\n if (infos[position].after && !after) {\n infos[position].after = false\n }\n } else {\n positions.push(position)\n infos[position] = {before, after}\n }\n }\n }\n\n positions.sort(numerical)\n\n let start = config.before ? config.before.length : 0\n const end = value.length - (config.after ? config.after.length : 0)\n index = -1\n\n while (++index < positions.length) {\n const position = positions[index]\n\n // Character before or after matched:\n if (position < start || position >= end) {\n continue\n }\n\n // If this character is supposed to be escaped because it has a condition on\n // the next character, and the next character is definitly being escaped,\n // then skip this escape.\n if (\n (position + 1 < end &&\n positions[index + 1] === position + 1 &&\n infos[position].after &&\n !infos[position + 1].before &&\n !infos[position + 1].after) ||\n (positions[index - 1] === position - 1 &&\n infos[position].before &&\n !infos[position - 1].before &&\n !infos[position - 1].after)\n ) {\n continue\n }\n\n if (start !== position) {\n // If we have to use a character reference, an ampersand would be more\n // correct, but as backslashes only care about punctuation, either will\n // do the trick\n result.push(escapeBackslashes(value.slice(start, position), '\\\\'))\n }\n\n start = position\n\n if (\n /[!-/:-@[-`{-~]/.test(value.charAt(position)) &&\n (!config.encode || !config.encode.includes(value.charAt(position)))\n ) {\n // Character escape.\n result.push('\\\\')\n } else {\n // Character reference.\n result.push(encodeCharacterReference(value.charCodeAt(position)))\n start++\n }\n }\n\n result.push(escapeBackslashes(value.slice(start, end), config.after))\n\n return result.join('')\n}\n\n/**\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction numerical(a, b) {\n return a - b\n}\n\n/**\n * @param {string} value\n * @param {string} after\n * @returns {string}\n */\nfunction escapeBackslashes(value, after) {\n const expression = /\\\\(?=[!-/:-@[-`{-~])/g\n /** @type {Array<number>} */\n const positions = []\n /** @type {Array<string>} */\n const results = []\n const whole = value + after\n let index = -1\n let start = 0\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(whole))) {\n positions.push(match.index)\n }\n\n while (++index < positions.length) {\n if (start !== positions[index]) {\n results.push(value.slice(start, positions[index]))\n }\n\n results.push('\\\\')\n start = positions[index]\n }\n\n results.push(value.slice(start))\n\n return results.join('')\n}\n", "/**\n * @import {CreateTracker, TrackCurrent, TrackMove, TrackShift} from '../types.js'\n */\n\n/**\n * Track positional info in the output.\n *\n * @type {CreateTracker}\n */\nexport function track(config) {\n // Defaults are used to prevent crashes when older utilities somehow activate\n // this code.\n /* c8 ignore next 5 */\n const options = config || {}\n const now = options.now || {}\n let lineShift = options.lineShift || 0\n let line = now.line || 1\n let column = now.column || 1\n\n return {move, current, shift}\n\n /**\n * Get the current tracked info.\n *\n * @type {TrackCurrent}\n */\n function current() {\n return {now: {line, column}, lineShift}\n }\n\n /**\n * Define an increased line shift (the typical indent for lines).\n *\n * @type {TrackShift}\n */\n function shift(value) {\n lineShift += value\n }\n\n /**\n * Move past some generated markdown.\n *\n * @type {TrackMove}\n */\n function move(input) {\n // eslint-disable-next-line unicorn/prefer-default-parameters\n const value = input || ''\n const chunks = value.split(/\\r?\\n|\\r/g)\n const tail = chunks[chunks.length - 1]\n line += chunks.length - 1\n column =\n chunks.length === 1 ? column + tail.length : 1 + tail.length + lineShift\n return value\n }\n}\n", "/**\n * @import {Info, Join, Options, SafeConfig, State} from 'mdast-util-to-markdown'\n * @import {Nodes} from 'mdast'\n * @import {Enter, FlowParents, PhrasingParents, TrackFields} from './types.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {configure} from './configure.js'\nimport {handle as handlers} from './handle/index.js'\nimport {join} from './join.js'\nimport {unsafe} from './unsafe.js'\nimport {association} from './util/association.js'\nimport {compilePattern} from './util/compile-pattern.js'\nimport {containerPhrasing} from './util/container-phrasing.js'\nimport {containerFlow} from './util/container-flow.js'\nimport {indentLines} from './util/indent-lines.js'\nimport {safe} from './util/safe.js'\nimport {track} from './util/track.js'\n\n/**\n * Turn an mdast syntax tree into markdown.\n *\n * @param {Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized markdown representing `tree`.\n */\nexport function toMarkdown(tree, options) {\n const settings = options || {}\n /** @type {State} */\n const state = {\n associationId: association,\n containerPhrasing: containerPhrasingBound,\n containerFlow: containerFlowBound,\n createTracker: track,\n compilePattern,\n enter,\n // @ts-expect-error: GFM / frontmatter are typed in `mdast` but not defined\n // here.\n handlers: {...handlers},\n // @ts-expect-error: add `handle` in a second.\n handle: undefined,\n indentLines,\n indexStack: [],\n join: [...join],\n options: {},\n safe: safeBound,\n stack: [],\n unsafe: [...unsafe]\n }\n\n configure(state, settings)\n\n if (state.options.tightDefinitions) {\n state.join.push(joinDefinition)\n }\n\n state.handle = zwitch('type', {\n invalid,\n unknown,\n handlers: state.handlers\n })\n\n let result = state.handle(tree, undefined, state, {\n before: '\\n',\n after: '\\n',\n now: {line: 1, column: 1},\n lineShift: 0\n })\n\n if (\n result &&\n result.charCodeAt(result.length - 1) !== 10 &&\n result.charCodeAt(result.length - 1) !== 13\n ) {\n result += '\\n'\n }\n\n return result\n\n /** @type {Enter} */\n function enter(name) {\n state.stack.push(name)\n return exit\n\n /**\n * @returns {undefined}\n */\n function exit() {\n state.stack.pop()\n }\n }\n}\n\n/**\n * @param {unknown} value\n * @returns {never}\n */\nfunction invalid(value) {\n throw new Error('Cannot handle value `' + value + '`, expected node')\n}\n\n/**\n * @param {unknown} value\n * @returns {never}\n */\nfunction unknown(value) {\n // Always a node.\n const node = /** @type {Nodes} */ (value)\n throw new Error('Cannot handle unknown node `' + node.type + '`')\n}\n\n/** @type {Join} */\nfunction joinDefinition(left, right) {\n // No blank line between adjacent definitions.\n if (left.type === 'definition' && left.type === right.type) {\n return 0\n }\n}\n\n/**\n * Serialize the children of a parent that contains phrasing children.\n *\n * These children will be joined flush together.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {PhrasingParents} parent\n * Parent of flow nodes.\n * @param {Info} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined together.\n */\nfunction containerPhrasingBound(parent, info) {\n return containerPhrasing(parent, this, info)\n}\n\n/**\n * Serialize the children of a parent that contains flow children.\n *\n * These children will typically be joined by blank lines.\n * What they are joined by exactly is defined by `Join` functions.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {FlowParents} parent\n * Parent of flow nodes.\n * @param {TrackFields} info\n * Info on where we are in the document we are generating.\n * @returns {string}\n * Serialized children, joined by (blank) lines.\n */\nfunction containerFlowBound(parent, info) {\n return containerFlow(parent, this, info)\n}\n\n/**\n * Make a string safe for embedding in markdown constructs.\n *\n * In markdown, almost all punctuation characters can, in certain cases,\n * result in something.\n * Whether they do is highly subjective to where they happen and in what\n * they happen.\n *\n * To solve this, `mdast-util-to-markdown` tracks:\n *\n * * Characters before and after something;\n * * What \u201Cconstructs\u201D we are in.\n *\n * This information is then used by this function to escape or encode\n * special characters.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {string | null | undefined} value\n * Raw value to make safe.\n * @param {SafeConfig} config\n * Configuration.\n * @returns {string}\n * Serialized markdown safe for embedding.\n */\nfunction safeBound(value, config) {\n return safe(this, value, config)\n}\n", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownOptions\n * @typedef {import('unified').Compiler<Root, string>} Compiler\n * @typedef {import('unified').Processor<undefined, undefined, undefined, Root, string>} Processor\n */\n\n/**\n * @typedef {Omit<ToMarkdownOptions, 'extensions'>} Options\n */\n\nimport {toMarkdown} from 'mdast-util-to-markdown'\n\n/**\n * Add support for serializing to markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkStringify(options) {\n /** @type {Processor} */\n // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n const self = this\n\n self.compiler = compiler\n\n /**\n * @type {Compiler}\n */\n function compiler(tree) {\n return toMarkdown(tree, {\n ...self.data('settings'),\n ...options,\n // Note: this option is not in the readme.\n // The goal is for it to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('toMarkdownExtensions') || []\n })\n }\n}\n", "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n", "/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n * Acceptable results from compilers.\n *\n * To register custom results, add them to\n * {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n * The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n * A **compiler** handles the compiling of a syntax tree to something else\n * (in most cases, text) (TypeScript type).\n *\n * It is used in the stringify phase and called with a {@linkcode Node}\n * and {@linkcode VFile} representation of the document to compile.\n * It should return the textual representation of the given tree (typically\n * `string`).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n * Tree to compile.\n * @param {VFile} file\n * File associated with `tree`.\n * @returns {Result}\n * New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n * something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The node that the parser yields (default: `Node`)\n * @callback Parser\n * A **parser** handles the parsing of text to a syntax tree.\n *\n * It is used in the parse phase and is called with a `string` and\n * {@linkcode VFile} of the document to parse.\n * It must return the syntax tree representation of the given file\n * ({@linkcode Node}).\n * @param {string} document\n * Document to parse.\n * @param {VFile} file\n * File associated with `document`.\n * @returns {Tree}\n * Node representing the given file.\n */\n\n/**\n * @typedef {(\n * Plugin<Array<any>, any, any> |\n * PluginTuple<Array<any>, any, any> |\n * Preset\n * )} Pluggable\n * Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n * List of plugins and presets.\n */\n\n// Note: we can\u2019t use `callback` yet as it messes up `this`:\n// <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n * Value that is expected as input (default: `Node`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=Input]\n * Value that is yielded as output (default: `Input`).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * (this: Processor, ...parameters: PluginParameters) =>\n * Input extends string ? // Parser.\n * Output extends Node | undefined ? undefined | void : never :\n * Output extends CompileResults ? // Compiler.\n * Input extends Node | undefined ? undefined | void : never :\n * Transformer<\n * Input extends Node ? Input : Node,\n * Output extends Node ? Output : Node\n * > | undefined | void\n * )} Plugin\n * Single plugin.\n *\n * Plugins configure the processors they are applied on in the following\n * ways:\n *\n * * they change the processor, such as the parser, the compiler, or by\n * configuring data\n * * they specify how to handle trees and files\n *\n * In practice, they are functions that can receive options and configure the\n * processor (`this`).\n *\n * > **Note**: plugins are called when the processor is *frozen*, not when\n * > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n * Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n * Value that is expected as input (optional).\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node it expects.\n * * If the plugin sets a {@linkcode Parser}, this should be\n * `string`.\n * * If the plugin sets a {@linkcode Compiler}, this should be the\n * node it expects.\n * @template [Output=undefined] (optional).\n * Value that is yielded as output.\n *\n * * If the plugin returns a {@linkcode Transformer}, this\n * should be the node that that yields.\n * * If the plugin sets a {@linkcode Parser}, this should be the\n * node that it yields.\n * * If the plugin sets a {@linkcode Compiler}, this should be\n * result it yields.\n * @typedef {(\n * [\n * plugin: Plugin<TupleParameters, Input, Output>,\n * ...parameters: TupleParameters\n * ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n * Sharable configuration.\n *\n * They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n * List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n * Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n * The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n * Callback called when the process is done.\n *\n * Called with either an error or a result.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {File | undefined} [file]\n * Processed file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n * Callback called when transformers are done.\n *\n * Called with either an error or results.\n * @param {Error | undefined} [error]\n * Fatal error (optional).\n * @param {Tree | undefined} [tree]\n * Transformed tree (optional).\n * @param {VFile | undefined} [file]\n * File (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n * Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n * Callback passed to transforms.\n *\n * If the signature of a `transformer` accepts a third argument, the\n * transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n * Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n * New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n * New, changed, file (optional).\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n * Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n * Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n * Transformers handle syntax trees and files.\n *\n * They are functions that are called each time a syntax tree and file are\n * passed through the run phase.\n * When an error occurs in them (either because it\u2019s thrown, returned,\n * rejected, or passed to `next`), the process stops.\n *\n * The run phase is handled by [`trough`][trough], see its documentation for\n * the exact semantics of these functions.\n *\n * > **Note**: you should likely ignore `next`: don\u2019t accept it.\n * > it supports callback-style async work.\n * > But promises are likely easier to reason about.\n *\n * [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n * Tree to handle.\n * @param {VFile} file\n * File to handle.\n * @param {TransformCallback<Output>} next\n * Callback.\n * @returns {(\n * Promise<Output | undefined | void> |\n * Promise<never> | // For some reason this is needed separately.\n * Output |\n * Error |\n * undefined |\n * void\n * )}\n * If you accept `next`, nothing.\n * Otherwise:\n *\n * * `Error` \u2014 fatal error to stop the process\n * * `Promise<undefined>` or `undefined` \u2014 the next transformer keeps using\n * same tree\n * * `Promise<Node>` or `Node` \u2014 new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n * Output of `parse`.\n * @template {Node | undefined} HeadTree\n * Input for `run`.\n * @template {Node | undefined} TailTree\n * Output for `run`.\n * @template {Node | undefined} CompileTree\n * Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n * Output of `stringify`.\n * @template {Node | string | undefined} Input\n * Input of plugin.\n * @template Output\n * Output of plugin (optional).\n * @typedef {(\n * Input extends string\n * ? Output extends Node | undefined\n * ? // Parser.\n * Processor<\n * Output extends undefined ? ParseTree : Output,\n * HeadTree,\n * TailTree,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Output extends CompileResults\n * ? Input extends Node | undefined\n * ? // Compiler.\n * Processor<\n * ParseTree,\n * HeadTree,\n * TailTree,\n * Input extends undefined ? CompileTree : Input,\n * Output extends undefined ? CompileResult : Output\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : Input extends Node | undefined\n * ? Output extends Node | undefined\n * ? // Transform.\n * Processor<\n * ParseTree,\n * HeadTree extends undefined ? Input : HeadTree,\n * Output extends undefined ? TailTree : Output,\n * CompileTree,\n * CompileResult\n * >\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * : // Unknown.\n * Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n * Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n * Node type that the transformer yields.\n * @typedef {(\n * Result extends Value | undefined ?\n * VFile :\n * VFile & {result: Result}\n * )} VFileWithOutput\n * Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n * If a result that is not acceptable on a `VFile` is used, that will\n * be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n * Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n * Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n * Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n * Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n * Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n /**\n * Create a processor.\n */\n constructor() {\n // If `Processor()` is called (w/o new), `copy` is called instead.\n super('copy')\n\n /**\n * Compiler to use (deprecated).\n *\n * @deprecated\n * Use `compiler` instead.\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.Compiler = undefined\n\n /**\n * Parser to use (deprecated).\n *\n * @deprecated\n * Use `parser` instead.\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.Parser = undefined\n\n // Note: the following fields are considered private.\n // However, they are needed for tests, and TSC generates an untyped\n // `private freezeIndex` field for, which trips `type-coverage` up.\n // Instead, we use `@deprecated` to visualize that they shouldn\u2019t be used.\n /**\n * Internal list of configured plugins.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Array<PluginTuple<Array<unknown>>>}\n */\n this.attachers = []\n\n /**\n * Compiler to use.\n *\n * @type {(\n * Compiler<\n * CompileTree extends undefined ? Node : CompileTree,\n * CompileResult extends undefined ? CompileResults : CompileResult\n * > |\n * undefined\n * )}\n */\n this.compiler = undefined\n\n /**\n * Internal state to track where we are while freezing.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {number}\n */\n this.freezeIndex = -1\n\n /**\n * Internal state to track whether we\u2019re frozen.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {boolean | undefined}\n */\n this.frozen = undefined\n\n /**\n * Internal state.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Data}\n */\n this.namespace = {}\n\n /**\n * Parser to use.\n *\n * @type {(\n * Parser<ParseTree extends undefined ? Node : ParseTree> |\n * undefined\n * )}\n */\n this.parser = undefined\n\n /**\n * Internal list of configured transformers.\n *\n * @deprecated\n * This is a private internal property and should not be used.\n * @type {Pipeline}\n */\n this.transformers = trough()\n }\n\n /**\n * Copy a processor.\n *\n * @deprecated\n * This is a private internal method and should not be used.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * New *unfrozen* processor ({@linkcode Processor}) that is\n * configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\n copy() {\n // Cast as the type parameters will be the same after attaching.\n const destination =\n /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n new Processor()\n )\n let index = -1\n\n while (++index < this.attachers.length) {\n const attacher = this.attachers[index]\n destination.use(...attacher)\n }\n\n destination.data(extend(true, {}, this.namespace))\n\n return destination\n }\n\n /**\n * Configure the processor with info available to all plugins.\n * Information is stored in an object.\n *\n * Typically, options can be given to a specific plugin, but sometimes it\n * makes sense to have information shared with several plugins.\n * For example, a list of HTML elements that are self-closing, which is\n * needed during all phases.\n *\n * > **Note**: setting information cannot occur on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * > **Note**: to register custom data in TypeScript, augment the\n * > {@linkcode Data} interface.\n *\n * @example\n * This example show how to get and set info:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * const processor = unified().data('alpha', 'bravo')\n *\n * processor.data('alpha') // => 'bravo'\n *\n * processor.data() // => {alpha: 'bravo'}\n *\n * processor.data({charlie: 'delta'})\n *\n * processor.data() // => {charlie: 'delta'}\n * ```\n *\n * @template {keyof Data} Key\n *\n * @overload\n * @returns {Data}\n *\n * @overload\n * @param {Data} dataset\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Key} key\n * @returns {Data[Key]}\n *\n * @overload\n * @param {Key} key\n * @param {Data[Key]} value\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @param {Data | Key} [key]\n * Key to get or set, or entire dataset to set, or nothing to get the\n * entire dataset (optional).\n * @param {Data[Key]} [value]\n * Value to set (optional).\n * @returns {unknown}\n * The current processor when setting, the value at `key` when getting, or\n * the entire dataset when getting without key.\n */\n data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', this.frozen)\n this.namespace[key] = value\n return this\n }\n\n // Get `key`.\n return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', this.frozen)\n this.namespace = key\n return this\n }\n\n // Get space.\n return this.namespace\n }\n\n /**\n * Freeze a processor.\n *\n * Frozen processors are meant to be extended and not to be configured\n * directly.\n *\n * When a processor is frozen it cannot be unfrozen.\n * New processors working the same way can be created by calling the\n * processor.\n *\n * It\u2019s possible to freeze processors explicitly by calling `.freeze()`.\n * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n * `.stringify()`, `.process()`, or `.processSync()` are called.\n *\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * The current processor.\n */\n freeze() {\n if (this.frozen) {\n return this\n }\n\n // Cast so that we can type plugins easier.\n // Plugins are supposed to be usable on different processors, not just on\n // this exact processor.\n const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n while (++this.freezeIndex < this.attachers.length) {\n const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n const transformer = attacher.call(self, ...options)\n\n if (typeof transformer === 'function') {\n this.transformers.use(transformer)\n }\n }\n\n this.frozen = true\n this.freezeIndex = Number.POSITIVE_INFINITY\n\n return this\n }\n\n /**\n * Parse text to a syntax tree.\n *\n * > **Note**: `parse` freezes the processor if not already *frozen*.\n *\n * > **Note**: `parse` performs the parse phase, not the run phase or other\n * > phases.\n *\n * @param {Compatible | undefined} [file]\n * file to parse (optional); typically `string` or `VFile`; any value\n * accepted as `x` in `new VFile(x)`.\n * @returns {ParseTree extends undefined ? Node : ParseTree}\n * Syntax tree representing `file`.\n */\n parse(file) {\n this.freeze()\n const realFile = vfile(file)\n const parser = this.parser || this.Parser\n assertParser('parse', parser)\n return parser(String(realFile), realFile)\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * > **Note**: `process` freezes the processor if not already *frozen*.\n *\n * > **Note**: `process` performs the parse, run, and stringify phases.\n *\n * @overload\n * @param {Compatible | undefined} file\n * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n * @returns {undefined}\n *\n * @overload\n * @param {Compatible | undefined} [file]\n * @returns {Promise<VFileWithOutput<CompileResult>>}\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`]; any value accepted as\n * `x` in `new VFile(x)`.\n * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n * Callback (optional).\n * @returns {Promise<VFile> | undefined}\n * Nothing if `done` is given.\n * Otherwise a promise, rejected with a fatal error or resolved with the\n * processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n process(file, done) {\n const self = this\n\n this.freeze()\n assertParser('process', this.parser || this.Parser)\n assertCompiler('process', this.compiler || this.Compiler)\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n * @param {(error: Error | undefined) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n const realFile = vfile(file)\n // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n // input of the first transform).\n const parseTree =\n /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n /** @type {unknown} */ (self.parse(realFile))\n )\n\n self.run(parseTree, realFile, function (error, tree, file) {\n if (error || !tree || !file) {\n return realDone(error)\n }\n\n // Assume `TailTree` (the output of the last transform) matches\n // `CompileTree` (the input of the compiler).\n const compileTree =\n /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n /** @type {unknown} */ (tree)\n )\n\n const compileResult = self.stringify(compileTree, file)\n\n if (looksLikeAValue(compileResult)) {\n file.value = compileResult\n } else {\n file.result = compileResult\n }\n\n realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n })\n\n /**\n * @param {Error | undefined} error\n * @param {VFileWithOutput<CompileResult> | undefined} [file]\n * @returns {undefined}\n */\n function realDone(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, file)\n }\n }\n }\n }\n\n /**\n * Process the given file as configured on the processor.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `processSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `processSync` performs the parse, run, and stringify phases.\n *\n * @param {Compatible | undefined} [file]\n * File (optional); typically `string` or `VFile`; any value accepted as\n * `x` in `new VFile(x)`.\n * @returns {VFileWithOutput<CompileResult>}\n * The processed file.\n *\n * The parsed, transformed, and compiled value is available at\n * `file.value` (see note).\n *\n * > **Note**: unified typically compiles by serializing: most\n * > compilers return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n processSync(file) {\n /** @type {boolean} */\n let complete = false\n /** @type {VFileWithOutput<CompileResult> | undefined} */\n let result\n\n this.freeze()\n assertParser('processSync', this.parser || this.Parser)\n assertCompiler('processSync', this.compiler || this.Compiler)\n\n this.process(file, realDone)\n assertDone('processSync', 'process', complete)\n assert(result, 'we either bailed on an error or have a tree')\n\n return result\n\n /**\n * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n */\n function realDone(error, file) {\n complete = true\n bail(error)\n result = file\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * > **Note**: `run` freezes the processor if not already *frozen*.\n *\n * > **Note**: `run` performs the run phase, not other phases.\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} file\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n * @returns {undefined}\n *\n * @overload\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * @param {Compatible | undefined} [file]\n * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {(\n * RunCallback<TailTree extends undefined ? Node : TailTree> |\n * Compatible\n * )} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n * Callback (optional).\n * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n * Nothing if `done` is given.\n * Otherwise, a promise rejected with a fatal error or resolved with the\n * transformed tree.\n */\n run(tree, file, done) {\n assertNode(tree)\n this.freeze()\n\n const transformers = this.transformers\n\n if (!done && typeof file === 'function') {\n done = file\n file = undefined\n }\n\n return done ? executor(undefined, done) : new Promise(executor)\n\n // Note: `void`s needed for TS.\n /**\n * @param {(\n * ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n * undefined\n * )} resolve\n * @param {(error: Error) => undefined | void} reject\n * @returns {undefined}\n */\n function executor(resolve, reject) {\n assert(\n typeof file !== 'function',\n '`file` can\u2019t be a `done` anymore, we checked'\n )\n const realFile = vfile(file)\n transformers.run(tree, realFile, realDone)\n\n /**\n * @param {Error | undefined} error\n * @param {Node} outputTree\n * @param {VFile} file\n * @returns {undefined}\n */\n function realDone(error, outputTree, file) {\n const resultingTree =\n /** @type {TailTree extends undefined ? Node : TailTree} */ (\n outputTree || tree\n )\n\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(resultingTree)\n } else {\n assert(done, '`done` is defined if `resolve` is not')\n done(undefined, resultingTree, file)\n }\n }\n }\n }\n\n /**\n * Run *transformers* on a syntax tree.\n *\n * An error is thrown if asynchronous transforms are configured.\n *\n * > **Note**: `runSync` freezes the processor if not already *frozen*.\n *\n * > **Note**: `runSync` performs the run phase, not other phases.\n *\n * @param {HeadTree extends undefined ? Node : HeadTree} tree\n * Tree to transform and inspect.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {TailTree extends undefined ? Node : TailTree}\n * Transformed tree.\n */\n runSync(tree, file) {\n /** @type {boolean} */\n let complete = false\n /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n let result\n\n this.run(tree, file, realDone)\n\n assertDone('runSync', 'run', complete)\n assert(result, 'we either bailed on an error or have a tree')\n return result\n\n /**\n * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n */\n function realDone(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * Compile a syntax tree.\n *\n * > **Note**: `stringify` freezes the processor if not already *frozen*.\n *\n * > **Note**: `stringify` performs the stringify phase, not the run phase\n * > or other phases.\n *\n * @param {CompileTree extends undefined ? Node : CompileTree} tree\n * Tree to compile.\n * @param {Compatible | undefined} [file]\n * File associated with `node` (optional); any value accepted as `x` in\n * `new VFile(x)`.\n * @returns {CompileResult extends undefined ? Value : CompileResult}\n * Textual representation of the tree (see note).\n *\n * > **Note**: unified typically compiles by serializing: most compilers\n * > return `string` (or `Uint8Array`).\n * > Some compilers, such as the one configured with\n * > [`rehype-react`][rehype-react], return other values (in this case, a\n * > React tree).\n * > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n * > result values.\n * >\n * > To register custom results in TypeScript, add them to\n * > {@linkcode CompileResultMap}.\n *\n * [rehype-react]: https://github.com/rehypejs/rehype-react\n */\n stringify(tree, file) {\n this.freeze()\n const realFile = vfile(file)\n const compiler = this.compiler || this.Compiler\n assertCompiler('stringify', compiler)\n assertNode(tree)\n\n return compiler(tree, realFile)\n }\n\n /**\n * Configure the processor to use a plugin, a list of usable values, or a\n * preset.\n *\n * If the processor is already using a plugin, the previous plugin\n * configuration is changed based on the options that are passed in.\n * In other words, the plugin is not added a second time.\n *\n * > **Note**: `use` cannot be called on *frozen* processors.\n * > Call the processor first to create a new unfrozen processor.\n *\n * @example\n * There are many ways to pass plugins to `.use()`.\n * This example gives an overview:\n *\n * ```js\n * import {unified} from 'unified'\n *\n * unified()\n * // Plugin with options:\n * .use(pluginA, {x: true, y: true})\n * // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n * .use(pluginA, {y: false, z: true})\n * // Plugins:\n * .use([pluginB, pluginC])\n * // Two plugins, the second with options:\n * .use([pluginD, [pluginE, {}]])\n * // Preset with plugins and settings:\n * .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n * // Settings only:\n * .use({settings: {position: false}})\n * ```\n *\n * @template {Array<unknown>} [Parameters=[]]\n * @template {Node | string | undefined} [Input=undefined]\n * @template [Output=Input]\n *\n * @overload\n * @param {Preset | null | undefined} [preset]\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {PluggableList} list\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n *\n * @overload\n * @param {Plugin<Parameters, Input, Output>} plugin\n * @param {...(Parameters | [boolean])} parameters\n * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n *\n * @param {PluggableList | Plugin | Preset | null | undefined} value\n * Usable value.\n * @param {...unknown} parameters\n * Parameters, when a plugin is given as a usable value.\n * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n * Current processor.\n */\n use(value, ...parameters) {\n const attachers = this.attachers\n const namespace = this.namespace\n\n assertUnfrozen('use', this.frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, parameters)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n return this\n\n /**\n * @param {Pluggable} value\n * @returns {undefined}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value, [])\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...parameters] =\n /** @type {PluginTuple<Array<unknown>>} */ (value)\n addPlugin(plugin, parameters)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {undefined}\n */\n function addPreset(result) {\n if (!('plugins' in result) && !('settings' in result)) {\n throw new Error(\n 'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n )\n }\n\n addList(result.plugins)\n\n if (result.settings) {\n namespace.settings = extend(true, namespace.settings, result.settings)\n }\n }\n\n /**\n * @param {PluggableList | null | undefined} plugins\n * @returns {undefined}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {Array<unknown>} parameters\n * @returns {undefined}\n */\n function addPlugin(plugin, parameters) {\n let index = -1\n let entryIndex = -1\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entryIndex = index\n break\n }\n }\n\n if (entryIndex === -1) {\n attachers.push([plugin, ...parameters])\n }\n // Only set if there was at least a `primary` value, otherwise we\u2019d change\n // `arguments.length`.\n else if (parameters.length > 0) {\n let [primary, ...rest] = parameters\n const currentPrimary = attachers[entryIndex][1]\n if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n primary = extend(true, currentPrimary, primary)\n }\n\n attachers[entryIndex] = [plugin, primary, ...rest]\n }\n }\n }\n}\n\n// Note: this returns a *callable* instance.\n// That\u2019s why it\u2019s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n * This example shows how a new processor can be created (from `remark`) and linked\n * to **stdin**(4) and **stdout**(4).\n *\n * ```js\n * import process from 'node:process'\n * import concatStream from 'concat-stream'\n * import {remark} from 'remark'\n *\n * process.stdin.pipe(\n * concatStream(function (buf) {\n * process.stdout.write(String(remark().processSync(buf)))\n * })\n * )\n * ```\n *\n * @returns\n * New *unfrozen* processor (`processor`).\n *\n * This processor is configured to work the same as its ancestor.\n * When the descendant processor is configured in the future it does not\n * affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > \uD83D\uDC49 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it\u2019s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we\u2019re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` \u2014 error, file not usable\n * * `false` \u2014 warning, change may be needed\n * * `undefined` \u2014 change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are \u201Cwell known\u201D.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that\u2019s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > \uD83D\uDC49 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n", "// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node\u2019s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | null | undefined} [extname]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, extname) {\n if (extname !== undefined && typeof extname !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let seenNonSlash\n\n if (\n extname === undefined ||\n extname.length === 0 ||\n extname.length > path.length\n ) {\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (extname === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extnameIndex = extname.length - 1\n\n while (index--) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extnameIndex > -1) {\n // Try to match the explicit extension.\n if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n if (extnameIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extnameIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.codePointAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.codePointAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.codePointAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean | undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.codePointAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string | undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.codePointAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number | undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.codePointAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n result.codePointAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n", "// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don\u2019t think one tiny line of code can be copyrighted. \uD83D\uDE05\nexport const minproc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n", "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it\u2019s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n return Boolean(\n fileUrlOrPath !== null &&\n typeof fileUrlOrPath === 'object' &&\n 'href' in fileUrlOrPath &&\n fileUrlOrPath.href &&\n 'protocol' in fileUrlOrPath &&\n fileUrlOrPath.protocol &&\n // @ts-expect-error: indexing is fine.\n fileUrlOrPath.auth === undefined\n )\n}\n", "import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.codePointAt(index) === 37 /* `%` */ &&\n pathname.codePointAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.codePointAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n 'history',\n 'path',\n 'basename',\n 'stem',\n 'extname',\n 'dirname'\n])\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Uint8Array` \u2014 `{value: options}`\n * * `URL` \u2014 `{path: options}`\n * * `VFile` \u2014 shallow copies its data over to the new file\n * * `object` \u2014 all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options\n\n if (!value) {\n options = {}\n } else if (isUrl(value)) {\n options = {path: value}\n } else if (typeof value === 'string' || isUint8Array(value)) {\n options = {value}\n } else {\n options = value\n }\n\n /* eslint-disable no-unused-expressions */\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n // Prevent calling `cwd` (which could be expensive) if it\u2019s not needed;\n // the empty string will be overridden in the next block.\n this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n /**\n * Place to store custom info (default: `{}`).\n *\n * It\u2019s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of file paths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are \u201Cwell-known\u201D.\n // As in, used in several tools.\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const field = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (\n field in options &&\n options[field] !== undefined &&\n options[field] !== null\n ) {\n // @ts-expect-error: TS doesn\u2019t understand basic reality.\n this[field] = field === 'history' ? [...options[field]] : options[field]\n }\n }\n\n /** @type {string} */\n let field\n\n // Set non-path related properties.\n for (field in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(field)) {\n // @ts-expect-error: fine to set other things.\n this[field] = options[field]\n }\n }\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n *\n * @returns {string | undefined}\n * Basename.\n */\n get basename() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path)\n : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} basename\n * Basename.\n * @returns {undefined}\n * Nothing.\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = minpath.join(this.dirname || '', basename)\n }\n\n /**\n * Get the parent path (example: `'~'`).\n *\n * @returns {string | undefined}\n * Dirname.\n */\n get dirname() {\n return typeof this.path === 'string'\n ? minpath.dirname(this.path)\n : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there\u2019s no `path` yet.\n *\n * @param {string | undefined} dirname\n * Dirname.\n * @returns {undefined}\n * Nothing.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = minpath.join(dirname || '', this.basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n *\n * @returns {string | undefined}\n * Extname.\n */\n get extname() {\n return typeof this.path === 'string'\n ? minpath.extname(this.path)\n : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there\u2019s no `path` yet.\n *\n * @param {string | undefined} extname\n * Extname.\n * @returns {undefined}\n * Nothing.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.codePointAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n * Path.\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {URL | string} path\n * Path.\n * @returns {undefined}\n * Nothing.\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n *\n * @returns {string | undefined}\n * Stem.\n */\n get stem() {\n return typeof this.path === 'string'\n ? minpath.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n *\n * @param {string} stem\n * Stem.\n * @returns {undefined}\n * Nothing.\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n // Normal prototypal methods.\n /**\n * Create a fatal message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `true` (error; file not usable)\n * and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {never}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Never.\n * @throws {VFileMessage}\n * Message.\n */\n fail(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = true\n\n throw message\n }\n\n /**\n * Create an info message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `undefined` (info; change\n * likely not needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(causeOrReason, optionsOrParentOrPlace, origin) {\n // @ts-expect-error: the overloads are fine.\n const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n message.fatal = undefined\n\n return message\n }\n\n /**\n * Create a message for `reason` associated with the file.\n *\n * The `fatal` field of the message is set to `false` (warning; change may be\n * needed) and the `file` field is set to the current file path.\n * The message is added to the `messages` field on `file`.\n *\n * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {MessageOptions | null | undefined} [options]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns {VFileMessage}\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(causeOrReason, optionsOrParentOrPlace, origin) {\n const message = new VFileMessage(\n // @ts-expect-error: the overloads are fine.\n causeOrReason,\n optionsOrParentOrPlace,\n origin\n )\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Serialize the file.\n *\n * > **Note**: which encodings are supported depends on the engine.\n * > For info on Node.js, see:\n * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n *\n * @param {string | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it\u2019s a `Uint8Array`\n * (default: `'utf-8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n if (this.value === undefined) {\n return ''\n }\n\n if (typeof this.value === 'string') {\n return this.value\n }\n\n const decoder = new TextDecoder(encoding || undefined)\n return decoder.decode(this.value)\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {undefined}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(minpath.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Uint8Array}\n * Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'byteLength' in value &&\n 'byteOffset' in value\n )\n}\n", "export const CallableInstance =\n /**\n * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n */\n (\n /** @type {unknown} */\n (\n /**\n * @this {Function}\n * @param {string | symbol} property\n * @returns {(...parameters: Array<unknown>) => unknown}\n */\n function (property) {\n const self = this\n const constr = self.constructor\n const proto = /** @type {Record<string | symbol, Function>} */ (\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n constr.prototype\n )\n const value = proto[property]\n /** @type {(...parameters: Array<unknown>) => unknown} */\n const apply = function () {\n return value.apply(apply, arguments)\n }\n\n Object.setPrototypeOf(apply, proto)\n\n // Not needed for us in `unified`: we only call this on the `copy`\n // function,\n // and we don't need to add its fields (`length`, `name`)\n // over.\n // See also: GH-246.\n // const names = Object.getOwnPropertyNames(value)\n //\n // for (const p of names) {\n // const descriptor = Object.getOwnPropertyDescriptor(value, p)\n // if (descriptor) Object.defineProperty(apply, p, descriptor)\n // }\n\n return apply\n }\n )\n )\n", "// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) \u2192 ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) \u2192 OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) \u2192 OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) \u2192 OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) \u2192 OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) \u2192 OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union<Object, OrderedMap>) \u2192 OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union<Object, OrderedMap>) \u2192 OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union<Object, OrderedMap>) \u2192 OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () \u2192 Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union<Object, OrderedMap>) \u2192 OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n", "import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n The child nodes in this fragment.\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", first = true;\n this.nodesBetween(from, to, (node, pos) => {\n let nodeText = node.isText ? node.text.slice(Math.max(from, pos) - pos, to - pos)\n : !node.isLeaf ? \"\"\n : leafText ? (typeof leafText === \"function\" ? leafText(node) : leafText)\n : node.type.spec.leafText ? node.type.spec.leafText(node)\n : \"\";\n if (node.isBlock && (node.isLeaf && nodeText || node.isTextblock) && blockSeparator) {\n if (first)\n first = false;\n else\n text += blockSeparator;\n }\n text += nodeText;\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. @internal\n */\n findIndex(pos) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n let mark = type.create(json.attrs);\n type.checkAttrs(mark.attrs);\n return mark;\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are \u2018open\u2019 (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment\u2014i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert, child);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent\u2014text nodes are \u2018flat\u2019 in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n let cache = resolveCache.get(doc);\n if (cache) {\n for (let i = 0; i < cache.elts.length; i++) {\n let elt = cache.elts[i];\n if (elt.pos == pos)\n return elt;\n }\n }\n else {\n resolveCache.set(doc, cache = new ResolveCache);\n }\n let result = cache.elts[cache.i] = ResolvedPos.resolve(doc, pos);\n cache.i = (cache.i + 1) % resolveCacheSize;\n return result;\n }\n}\nclass ResolveCache {\n constructor() {\n this.elts = [];\n this.i = 0;\n }\n}\nconst resolveCacheSize = 12, resolveCache = new WeakMap();\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](https://prosemirror.net/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The array of this node's child nodes.\n */\n get children() { return this.content.content; }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](https://prosemirror.net/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec.leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise an exception when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n this.type.checkAttrs(this.attrs);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++) {\n let mark = this.marks[i];\n mark.type.checkAttrs(mark.attrs);\n copy = mark.addToSet(copy);\n }\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = undefined;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n let node = schema.nodeType(json.type).create(json.attrs, content, marks);\n node.type.checkAttrs(node.attrs);\n return node;\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_\u200Bth outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.isInGroup(name))\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n// Construct an NFA from an expression as returned by the parser. The\n// NFA is represented as an array of states, which are themselves\n// arrays of edges, which are `{term, to}` objects. The first state is\n// the entry state and the last node is the success state.\n//\n// Note that unlike typical NFAs, the edge ordering in this one is\n// significant, in that it is used to contruct filler content when\n// necessary.\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction checkAttrs(attrs, values, type, name) {\n for (let name in values)\n if (!(name in attrs))\n throw new RangeError(`Unsupported attribute ${name} for ${type} of type ${name}`);\n for (let name in attrs) {\n let attr = attrs[name];\n if (attr.validate)\n attr.validate(values[name]);\n }\n}\nfunction initAttrs(typeName, attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(typeName, name, attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(name, spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n Return true when this node type is part of the given\n [group](https://prosemirror.net/docs/ref/#model.NodeSpec.group).\n */\n isInGroup(group) {\n return this.groups.indexOf(group) > -1;\n }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"node\", this.name);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\nfunction validateType(typeName, attrName, type) {\n let types = type.split(\"|\");\n return (value) => {\n let name = value === null ? \"null\" : typeof value;\n if (types.indexOf(name) < 0)\n throw new RangeError(`Expected value of type ${types} for attribute ${attrName} on type ${typeName}, got ${name}`);\n };\n}\n// Attribute descriptors\nclass Attribute {\n constructor(typeName, attrName, options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n this.validate = typeof options.validate == \"string\" ? validateType(typeName, attrName, options.validate) : options.validate;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(name, spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n @internal\n */\n checkAttrs(attrs) {\n checkAttrs(this.attrs, attrs, \"mark\", this.name);\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n The [linebreak\n replacement](https://prosemirror.net/docs/ref/#model.NodeSpec.linebreakReplacement) node defined\n in this schema, if any.\n */\n this.linebreakReplacement = null;\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n if (type.spec.linebreakReplacement) {\n if (this.linebreakReplacement)\n throw new RangeError(\"Multiple linebreak nodes defined\");\n if (!type.isInline || !type.isLeaf)\n throw new RangeError(\"Linebreak replacement nodes must be inline leaf nodes\");\n this.linebreakReplacement = type;\n }\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = json => Node.fromJSON(this, json);\n this.markFromJSON = json => Mark.fromJSON(this, json);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\nfunction isTagRule(rule) { return rule.tag != null; }\nfunction isStyleRule(rule) { return rule.style != null; }\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n let matchedStyles = this.matchedStyles = [];\n rules.forEach(rule => {\n if (isTagRule(rule)) {\n this.tags.push(rule);\n }\n else if (isStyleRule(rule)) {\n let prop = /[^=]*/.exec(rule.style)[0];\n if (matchedStyles.indexOf(prop) < 0)\n matchedStyles.push(prop);\n this.styles.push(rule);\n }\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, Mark.none, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, Mark.none, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, marks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n this.localPreserveWS = false;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom, marks) {\n if (dom.nodeType == 3)\n this.addTextNode(dom, marks);\n else if (dom.nodeType == 1)\n this.addElement(dom, marks);\n }\n addTextNode(dom, marks) {\n let value = dom.nodeValue;\n let top = this.top, preserveWS = (top.options & OPT_PRESERVE_WS_FULL) ? \"full\"\n : this.localPreserveWS || (top.options & OPT_PRESERVE_WS) > 0;\n let { schema } = this.parser;\n if (preserveWS === \"full\" ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!preserveWS) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (preserveWS === \"full\") {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n else if (schema.linebreakReplacement && /[\\r\\n]/.test(value) && this.top.findWrapping(schema.linebreakReplacement.create())) {\n let lines = value.split(/\\r?\\n|\\r/);\n for (let i = 0; i < lines.length; i++) {\n if (i)\n this.insertNode(schema.linebreakReplacement.create(), marks, true);\n if (lines[i])\n this.insertNode(schema.text(lines[i]), marks, !/\\S/.test(lines[i]));\n }\n value = \"\";\n }\n else {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n if (value)\n this.insertNode(schema.text(value), marks, !/\\S/.test(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, marks, matchAfter) {\n let outerWS = this.localPreserveWS, top = this.top;\n if (dom.tagName == \"PRE\" || /pre/.test(dom.style && dom.style.whiteSpace))\n this.localPreserveWS = true;\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n out: if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom, marks);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom, marks);\n break out;\n }\n let innerMarks = rule && rule.skip ? marks : this.readStyles(dom, marks);\n if (innerMarks)\n this.addAll(dom, innerMarks);\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n let innerMarks = this.readStyles(dom, marks);\n if (innerMarks)\n this.addElementByRule(dom, rule, innerMarks, rule.consuming === false ? ruleID : undefined);\n }\n this.localPreserveWS = outerWS;\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom, marks) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"), marks);\n }\n // Called for ignored nodes\n ignoreFallback(dom, marks) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"), marks, true);\n }\n // Run any style parser associated with the node's styles. Either\n // return an updated array of marks, or null to indicate some of the\n // styles had a rule with `ignore` set.\n readStyles(dom, marks) {\n let styles = dom.style;\n // Because many properties will only show up in 'normalized' form\n // in `style.item` (i.e. text-decoration becomes\n // text-decoration-line, text-decoration-color, etc), we directly\n // query the styles mentioned in our rules instead of iterating\n // over the items.\n if (styles && styles.length)\n for (let i = 0; i < this.parser.matchedStyles.length; i++) {\n let name = this.parser.matchedStyles[i], value = styles.getPropertyValue(name);\n if (value)\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(name, value, this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark)\n marks = marks.filter(m => !rule.clearMark(m));\n else\n marks = marks.concat(this.parser.schema.marks[rule.mark].create(rule.attrs));\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return marks;\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, marks, continueAfter) {\n let sync, nodeType;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n let inner = this.enter(nodeType, rule.attrs || null, marks, rule.preserveWhitespace);\n if (inner) {\n sync = true;\n marks = inner;\n }\n }\n else if (!this.insertNode(nodeType.create(rule.attrs), marks, dom.nodeName == \"BR\")) {\n this.leafFallback(dom, marks);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n marks = marks.concat(markType.create(rule.attrs));\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, marks, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node, marks, false));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM, marks);\n this.findAround(dom, contentDOM, false);\n }\n if (sync && this.sync(startIn))\n this.open--;\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, marks, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom, marks);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node, marks, cautious) {\n let route, sync;\n for (let depth = this.open, penalty = 0; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length + penalty)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid) {\n if (cautious)\n break;\n penalty += 2;\n }\n }\n if (!route)\n return null;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n marks = this.enterInner(route[i], null, marks, false);\n return marks;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node, marks, cautious) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n marks = this.enterInner(block, null, marks);\n }\n let innerMarks = this.findPlace(node, marks, cautious);\n if (innerMarks) {\n this.closeExtra();\n let top = this.top;\n if (top.match)\n top.match = top.match.matchType(node.type);\n let nodeMarks = Mark.none;\n for (let m of innerMarks.concat(node.marks))\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, node.type))\n nodeMarks = m.addToSet(nodeMarks);\n top.content.push(node.mark(nodeMarks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, marks, preserveWS) {\n let innerMarks = this.findPlace(type.create(attrs), marks, false);\n if (innerMarks)\n innerMarks = this.enterInner(type, attrs, marks, true, preserveWS);\n return innerMarks;\n }\n // Open a node of the given type\n enterInner(type, attrs, marks, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n let applyMarks = Mark.none;\n marks = marks.filter(m => {\n if (top.type ? top.type.allowsMarkType(m.type) : markMayApply(m.type, type)) {\n applyMarks = m.addToSet(applyMarks);\n return false;\n }\n return true;\n });\n this.nodes.push(new NodeContext(type, attrs, applyMarks, solid, null, options));\n this.open++;\n return marks;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(!!(this.isOpen || this.options.topOpen));\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--) {\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n else if (this.localPreserveWS) {\n this.nodes[i].options |= OPT_PRESERVE_WS;\n }\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && !next.isInGroup(part)))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = renderSpec(doc(options), this.nodes[node.type.name](node), null, node.attrs);\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && renderSpec(doc(options), toDOM(mark, inline), null, mark.attrs);\n }\n static renderSpec(doc, structure, xmlNS = null, blockArraysIn) {\n return renderSpec(doc, structure, xmlNS, blockArraysIn);\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\nconst suspiciousAttributeCache = new WeakMap();\nfunction suspiciousAttributes(attrs) {\n let value = suspiciousAttributeCache.get(attrs);\n if (value === undefined)\n suspiciousAttributeCache.set(attrs, value = suspiciousAttributesInner(attrs));\n return value;\n}\nfunction suspiciousAttributesInner(attrs) {\n let result = null;\n function scan(value) {\n if (value && typeof value == \"object\") {\n if (Array.isArray(value)) {\n if (typeof value[0] == \"string\") {\n if (!result)\n result = [];\n result.push(value);\n }\n else {\n for (let i = 0; i < value.length; i++)\n scan(value[i]);\n }\n }\n else {\n for (let prop in value)\n scan(value[prop]);\n }\n }\n }\n scan(attrs);\n return result;\n}\nfunction renderSpec(doc, structure, xmlNS, blockArraysIn) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], suspicious;\n if (typeof tagName != \"string\")\n throw new RangeError(\"Invalid array passed to renderSpec\");\n if (blockArraysIn && (suspicious = suspiciousAttributes(blockArraysIn)) &&\n suspicious.indexOf(structure) > -1)\n throw new RangeError(\"Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.\");\n let space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else if (name == \"style\" && dom.style)\n dom.style.cssText = attrs[name];\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = renderSpec(doc, child, xmlNS, blockArraysIn);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n", "import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n\u2018[rebasing](https://prosemirror.net/docs/guide/#transform.rebasing)\u2019 steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(maps, \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps ? maps.length : 0) {\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n this._maps = maps || [];\n this.ownData = !(maps || mirror);\n }\n /**\n The step maps in this mapping.\n */\n get maps() { return this._maps; }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this._maps, this.mirror, from, to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n if (!this.ownData) {\n this._maps = this._maps.slice();\n this.mirror = this.mirror && this.mirror.slice();\n this.ownData = true;\n }\n this.to = this._maps.push(map);\n if (mirrors != null)\n this.setMirror(this._maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this._maps.length; i < mapping._maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this._maps.length + mapping._maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping._maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this._maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this._maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this._maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`\u2014the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let to = mapping.mapResult(this.to, -1);\n let from = this.from == this.to && ReplaceStep.MAP_BIAS < 0 ? to : mapping.mapResult(this.from, 1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice, this.structure);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\n/**\nBy default, for backwards compatibility, an inserting step\nmapped over an insertion at that same position fill move after\nthe inserted content. In a collaborative editing situation, that\ncan make redone insertions appear in unexpected places. You can\nset this to -1 to make such mapping keep the step before the\ninsertion instead.\n*/\nReplaceStep.MAP_BIAS = 1;\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = this.from == this.gapFrom ? from.pos : mapping.map(this.gapFrom, -1);\n let gapTo = this.to == this.gapTo ? to.pos : mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch, clearNewlines = true) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (clearNewlines && child.isText && parentType.whitespace != \"pre\") {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth, contentBefore = 0, contentAfter = 0;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth) + contentBefore, endIndex = range.$to.indexAfter(depth) - contentAfter;\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n if (index)\n contentBefore = 1;\n if (endIndex < node.childCount)\n contentAfter = 1;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n let attrsHere = typeof attrs == \"function\" ? attrs(node) : attrs;\n if (node.isTextblock && !node.hasMarkup(type, attrsHere) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n let convertNewlines = null;\n if (type.schema.linebreakReplacement) {\n let pre = type.whitespace == \"pre\", supportLinebreak = !!type.contentMatch.matchType(type.schema.linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n // Ensure all markup that isn't allowed in the new node type is cleared\n if (convertNewlines === false)\n replaceLinebreaks(tr, node, pos, mapFrom);\n clearIncompatible(tr, tr.mapping.slice(mapFrom).map(pos, 1), type, undefined, convertNewlines === null);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrsHere, null, node.marks)), 0, 0), 1, true));\n if (convertNewlines === true)\n replaceNewlines(tr, node, pos, mapFrom);\n return false;\n }\n });\n}\nfunction replaceNewlines(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.isText) {\n let m, newline = /\\r?\\n|\\r/g;\n while (m = newline.exec(child.text)) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset + m.index);\n tr.replaceWith(start, start + 1, node.type.schema.linebreakReplacement.create());\n }\n }\n });\n}\nfunction replaceLinebreaks(tr, node, pos, mapFrom) {\n node.forEach((child, offset) => {\n if (child.type == child.type.schema.linebreakReplacement) {\n let start = tr.mapping.slice(mapFrom).map(pos + 1 + offset);\n tr.replaceWith(start, start + 1, node.type.schema.text(\"\\n\"));\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction canAppendWithSubstitutedLinebreaks(a, b) {\n if (!b.content.size)\n a.type.compatibleContent(b.type);\n let match = a.contentMatchAt(a.childCount);\n let { linebreakReplacement } = a.type.schema;\n for (let i = 0; i < b.childCount; i++) {\n let child = b.child(i);\n let type = child.type == linebreakReplacement ? a.type.schema.nodes.text : child.type;\n match = match.matchType(type);\n if (!match)\n return false;\n if (!a.type.allowsMarks(child.marks))\n return false;\n }\n return match.validEnd;\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && canAppendWithSubstitutedLinebreaks(a, b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let convertNewlines = null;\n let { linebreakReplacement } = tr.doc.type.schema;\n let $before = tr.doc.resolve(pos - depth), beforeType = $before.node().type;\n if (linebreakReplacement && beforeType.inlineContent) {\n let pre = beforeType.whitespace == \"pre\";\n let supportLinebreak = !!beforeType.contentMatch.matchType(linebreakReplacement);\n if (pre && !supportLinebreak)\n convertNewlines = false;\n else if (!pre && supportLinebreak)\n convertNewlines = true;\n }\n let mapFrom = tr.steps.length;\n if (convertNewlines === false) {\n let $after = tr.doc.resolve(pos + depth);\n replaceLinebreaks(tr, $after.node(), $after.before(), mapFrom);\n }\n if (beforeType.inlineContent)\n clearIncompatible(tr, pos + depth - 1, beforeType, $before.node().contentMatchAt($before.index()), convertNewlines == null);\n let mapping = tr.mapping.slice(mapFrom), start = mapping.map(pos - depth);\n tr.step(new ReplaceStep(start, mapping.map(pos + depth, -1), Slice.empty, true));\n if (convertNewlines === true) {\n let $full = tr.doc.resolve(start);\n replaceNewlines(tr, $full.node(), $full.before(), tr.steps.length);\n }\n return tr;\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n\u2018Fit\u2019 a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in <p(\"foo\"), p(\"bar\")>, when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, $to);\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n // When the deleted range spans from the start of one textblock to\n // the start of another one, move out of the start of both blocks.\n if ($from.parent.isTextblock && $to.parent.isTextblock && $from.start() != $to.start() &&\n $from.parentOffset == 0 && $to.parentOffset == 0) {\n let shared = $from.sharedDepth(to), isolated = false;\n for (let d = $from.depth; d > shared; d--)\n if ($from.node(d).type.spec.isolating)\n isolated = true;\n for (let d = $to.depth; d > shared; d--)\n if ($to.node(d).type.spec.isolating)\n isolated = true;\n if (!isolated) {\n for (let d = $from.depth; d > 0 && from == $from.start(d); d--)\n from = $from.before(d);\n for (let d = $to.depth; d > 0 && to == $to.start(d); d--)\n to = $to.before(d);\n $from = tr.doc.resolve(from);\n $to = tr.doc.resolve(to);\n }\n }\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d &&\n $from.start(d - 1) == $to.start(d - 1) && $from.node(d - 1).canReplace($from.index(d - 1), $to.index(d - 1)))\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n/**\nUpdate an attribute in the doc node.\n*/\nclass DocAttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let attrs = Object.create(null);\n for (let name in doc.attrs)\n attrs[name] = doc.attrs[name];\n attrs[this.attr] = this.value;\n let updated = doc.type.create(attrs, doc.content, doc.marks);\n return StepResult.ok(updated);\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new DocAttrStep(this.attr, doc.attrs[this.attr]);\n }\n map(mapping) {\n return this;\n }\n toJSON() {\n return { stepType: \"docAttr\", attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for DocAttrStep.fromJSON\");\n return new DocAttrStep(json.attr, json.value);\n }\n}\nStep.jsonID(\"docAttr\", DocAttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n Return a single range, in post-transform document positions,\n that covers all content changed by this transform. Returns null\n if no replacements are made. Note that this will ignore changes\n that add/remove marks without replacing the underlying content.\n */\n changedRange() {\n let from = 1e9, to = -1e9;\n for (let i = 0; i < this.mapping.maps.length; i++) {\n let map = this.mapping.maps[i];\n if (i) {\n from = map.map(from, 1);\n to = map.map(to, -1);\n }\n map.forEach((_f, _t, fromB, toB) => {\n from = Math.min(from, fromB);\n to = Math.max(to, toB);\n });\n }\n return from == 1e9 ? null : { from, to };\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n The `pos` addresses the document content. Use `setDocAttribute`\n to set attributes on the document itself.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Set a single attribute on the document to a new value.\n */\n setDocAttribute(attr, value) {\n this.step(new DocAttrStep(attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or all marks of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n if (mark instanceof Mark) {\n if (mark.isInSet(node.marks))\n this.step(new RemoveNodeMarkStep(pos, mark));\n }\n else {\n let set = node.marks, found, steps = [];\n while (found = mark.isInSet(set)) {\n steps.push(new RemoveNodeMarkStep(pos, found));\n set = found.removeFromSet(set);\n }\n for (let i = steps.length - 1; i >= 0; i--)\n this.step(steps[i]);\n }\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split (with the outermost nodes coming first).\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, DocAttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n", "import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty && this.selection.to == from + text.length)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure\u2014it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Accessor that constructs and returns a new [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n", "import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection, SelectionRange } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it\u2014if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, -1))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n for (let depth = $cursor.depth;; depth--) {\n let delStep = replaceStep(state.doc, $cursor.before(depth), $cursor.after(depth), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\")\n ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n if (depth == 1 || $cursor.node(depth - 1).childCount > 1)\n break;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch, 1))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.depth)\n return false;\n let types = [];\n let splitDepth, deflt, atEnd = false, atStart = false;\n for (let d = $from.depth;; d--) {\n let node = $from.node(d);\n if (node.isBlock) {\n atEnd = $from.end(d) == $from.pos + ($from.depth - d);\n atStart = $from.start(d) == $from.pos - ($from.depth - d);\n deflt = defaultBlockAt($from.node(d - 1).contentMatchAt($from.indexAfter(d - 1)));\n let splitType = splitNode && splitNode($to.parent, atEnd, $from);\n types.unshift(splitType || (atEnd && deflt ? { type: deflt } : null));\n splitDepth = d;\n break;\n }\n else {\n if (d == 1)\n return false;\n types.unshift(null);\n }\n }\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let splitPos = tr.mapping.map($from.pos);\n let can = canSplit(tr.doc, splitPos, types.length, types);\n if (!can) {\n types[0] = deflt ? { type: deflt } : null;\n can = canSplit(tr.doc, splitPos, types.length, types);\n }\n if (!can)\n return false;\n tr.split(splitPos, types.length, types);\n if (!atEnd && atStart && $from.node(splitDepth).type != deflt) {\n let first = tr.mapping.map($from.before(splitDepth)), $first = tr.doc.resolve(first);\n if (deflt && $from.node(splitDepth - 1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before(splitDepth)), deflt);\n }\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr.join($pos.pos).scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch, dir) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n let isolated = before.type.spec.isolating || after.type.spec.isolating;\n if (!isolated && joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = !isolated && $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let $joinAt = tr.doc.resolve(end + 2 * conn.length);\n if ($joinAt.nodeAfter && $joinAt.nodeAfter.type == before.type &&\n canJoin(tr.doc, $joinAt.pos))\n tr.join($joinAt.pos);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = after.type.spec.isolating || (dir > 0 && isolated) ? null : Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type, enterAtoms) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (can || !enterAtoms && node.isAtom && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\nfunction removeInlineAtoms(ranges) {\n let result = [];\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n $from.doc.nodesBetween($from.pos, $to.pos, (node, pos) => {\n if (node.isAtom && node.content.size && node.isInline && pos >= $from.pos && pos + node.nodeSize <= $to.pos) {\n if (pos + 1 > $from.pos)\n result.push(new SelectionRange($from, $from.doc.resolve(pos + 1)));\n $from = $from.doc.resolve(pos + 1 + node.content.size);\n return false;\n }\n });\n if ($from.pos < $to.pos)\n result.push(new SelectionRange($from, $to));\n }\n return result;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null, options) {\n let removeWhenPresent = (options && options.removeWhenPresent) !== false;\n let enterAtoms = (options && options.enterInlineAtoms) !== false;\n let dropSpace = !(options && options.includeWhitespace);\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType, enterAtoms))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let add, tr = state.tr;\n if (!enterAtoms)\n ranges = removeInlineAtoms(ranges);\n if (removeWhenPresent) {\n add = !ranges.some(r => state.doc.rangeHasMark(r.$from.pos, r.$to.pos, markType));\n }\n else {\n add = !ranges.every(r => {\n let missing = false;\n tr.doc.nodesBetween(r.$from.pos, r.$to.pos, (node, pos, parent) => {\n if (missing)\n return false;\n missing = !markType.isInSet(node.marks) && !!parent && parent.type.allowsMarkType(markType) &&\n !(node.isText && /^\\s*$/.test(node.textBetween(Math.max(0, r.$from.pos - pos), Math.min(node.nodeSize, r.$to.pos - pos))));\n });\n return !missing;\n });\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (!add) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = dropSpace && start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = dropSpace && end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n", "import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n/**\nInput rules are regular expressions describing a piece of text\nthat, when typed, causes something to happen. This might be\nchanging two dashes into an emdash, wrapping a paragraph starting\nwith `\"> \"` into a blockquote, or something entirely different.\n*/\nclass InputRule {\n /**\n Create an input rule. The rule applies when the user typed\n something and the text directly in front of the cursor matches\n `match`, which should end with `$`.\n \n The `handler` can be a string, in which case the matched text, or\n the first matched group in the regexp, is replaced by that\n string.\n \n Or a it can be a function, which will be called with the match\n array produced by\n [`RegExp.exec`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec),\n as well as the start and end of the matched range, and which can\n return a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) that describes the\n rule's effect, or null to indicate the input was not handled.\n */\n constructor(\n /**\n @internal\n */\n match, handler, options = {}) {\n this.match = match;\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n this.undoable = options.undoable !== false;\n this.inCode = options.inCode || false;\n this.inCodeMark = options.inCodeMark !== false;\n }\n}\nfunction stringHandler(string) {\n return function (state, match, start, end) {\n let insert = string;\n if (match[1]) {\n let offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n let cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end);\n };\n}\nconst MAX_MATCH = 500;\n/**\nCreate an input rules plugin. When enabled, it will cause text\ninput that matches any of the given rules to trigger the rule's\naction.\n*/\nfunction inputRules({ rules }) {\n let plugin = new Plugin({\n state: {\n init() { return null; },\n apply(tr, prev) {\n let stored = tr.getMeta(this);\n if (stored)\n return stored;\n return tr.selectionSet || tr.docChanged ? null : prev;\n }\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin);\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n let { $cursor } = view.state.selection;\n if ($cursor)\n run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin);\n });\n }\n }\n },\n isInputRules: true\n });\n return plugin;\n}\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing)\n return false;\n let state = view.state, $from = state.doc.resolve(from);\n let textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset, null, \"\\ufffc\") + text;\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i];\n if (!rule.inCodeMark && $from.marks().some(m => m.type.spec.code))\n continue;\n if ($from.parent.type.spec.code) {\n if (!rule.inCode)\n continue;\n }\n else if (rule.inCode === \"only\") {\n continue;\n }\n let match = rule.match.exec(textBefore);\n if (!match || match[0].length < text.length)\n continue;\n let startPos = from - (match[0].length - text.length);\n if (!rule.inCodeMark) {\n let hasMark = false;\n state.doc.nodesBetween(startPos, $from.pos, node => {\n if (node.isInline && node.marks.some(m => m.type.spec.code))\n hasMark = true;\n });\n if (hasMark)\n continue;\n }\n let tr = rule.handler(state, match, startPos, to);\n if (!tr)\n continue;\n if (rule.undoable)\n tr.setMeta(plugin, { transform: tr, from, to, text });\n view.dispatch(tr);\n return true;\n }\n return false;\n}\n/**\nThis is a command that will undo an input rule, if applying such a\nrule was the last thing that the user did.\n*/\nconst undoInputRule = (state, dispatch) => {\n let plugins = state.plugins;\n for (let i = 0; i < plugins.length; i++) {\n let plugin = plugins[i], undoable;\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n let tr = state.tr, toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j--)\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n if (undoable.text) {\n let marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n dispatch(tr);\n }\n return true;\n }\n }\n return false;\n};\n\n/**\nConverts double dashes to an emdash.\n*/\nconst emDash = new InputRule(/--$/, \"\u2014\", { inCodeMark: false });\n/**\nConverts three dots to an ellipsis character.\n*/\nconst ellipsis = new InputRule(/\\.\\.\\.$/, \"\u2026\", { inCodeMark: false });\n/**\n\u201CSmart\u201D opening double quotes.\n*/\nconst openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"\u201C\", { inCodeMark: false });\n/**\n\u201CSmart\u201D closing double quotes.\n*/\nconst closeDoubleQuote = new InputRule(/\"$/, \"\u201D\", { inCodeMark: false });\n/**\n\u201CSmart\u201D opening single quotes.\n*/\nconst openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"\u2018\", { inCodeMark: false });\n/**\n\u201CSmart\u201D closing single quotes.\n*/\nconst closeSingleQuote = new InputRule(/'$/, \"\u2019\", { inCodeMark: false });\n/**\nSmart-quote related input rules.\n*/\nconst smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n/**\nBuild an input rule for automatically wrapping a textblock when a\ngiven string is typed. The `regexp` argument is\ndirectly passed through to the `InputRule` constructor. You'll\nprobably want the regexp to start with `^`, so that the pattern can\nonly occur at the start of a textblock.\n\n`nodeType` is the type of node to wrap in. If it needs attributes,\nyou can either pass them directly, or pass a function that will\ncompute them from the regular expression match.\n\nBy default, if there's a node with the same type above the newly\nwrapped node, the rule will try to [join](https://prosemirror.net/docs/ref/#transform.Transform.join) those\ntwo nodes. You can pass a join predicate, which takes a regular\nexpression match and the node before the wrapped node, and can\nreturn a boolean to indicate whether a join should happen.\n*/\nfunction wrappingInputRule(regexp, nodeType, getAttrs = null, joinPredicate) {\n return new InputRule(regexp, (state, match, start, end) => {\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n let tr = state.tr.delete(start, end);\n let $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return null;\n tr.wrap(range, wrapping);\n let before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n tr.join(start - 1);\n return tr;\n });\n}\n/**\nBuild an input rule that changes the type of a textblock when the\nmatched text is typed into it. You'll usually want to start your\nregexp with `^` to that it is only matched at the start of a\ntextblock. The optional `getAttrs` parameter can be used to compute\nthe new node's attributes, and works the same as in the\n`wrappingInputRule` function.\n*/\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs = null) {\n return new InputRule(regexp, (state, match, start, end) => {\n let $start = state.doc.resolve(start);\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType))\n return null;\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs);\n });\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n", "/**\n * Copy paste from:\n * https://github.com/ProseMirror/prosemirror-view/blob/master/src/browser.ts\n */\n\nconst nav = typeof navigator != 'undefined' ? navigator : null\nconst doc = typeof document != 'undefined' ? document : null\nconst agent = (nav && nav.userAgent) || ''\n\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent)\nconst ie_upto10 = /MSIE \\d/.exec(agent)\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent)\n\nexport const ie = !!(ie_upto10 || ie_11up || ie_edge)\nexport const ie_version = ie_upto10\n ? (document as typeof document & { documentMode: unknown }).documentMode\n : ie_11up\n ? +ie_11up[1]!\n : ie_edge\n ? +ie_edge[1]!\n : 0\nexport const gecko = !ie && /gecko\\/(\\d+)/i.test(agent)\nexport const gecko_version =\n gecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1]\n\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent)\nexport const chrome = !!_chrome\nexport const chrome_version = _chrome ? +_chrome[1]! : 0\nexport const safari = !ie && !!nav && /Apple Computer/.test(nav.vendor)\n// Is true for both iOS and iPadOS for convenience\nexport const ios =\n safari && (/Mobile\\/\\w+/.test(agent) || (!!nav && nav.maxTouchPoints > 2))\nexport const mac = ios || (nav ? /Mac/.test(nav.platform) : false)\nexport const android = /Android \\d/.test(agent)\nexport const webkit =\n !!doc && 'webkitFontSmoothing' in doc.documentElement.style\nexport const webkit_version = webkit\n ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1]\n : 0\n", "import type { InputRule } from '../../inputrules'\nimport type { EditorState, TextSelection, Transaction } from '../../state'\nimport type { EditorView } from '../../view'\n\nimport { Plugin, PluginKey } from '../../state'\nimport { android, chrome } from '../browser'\n\nfunction run(\n view: EditorView,\n from: number,\n to: number,\n text: string,\n rules: InputRule[],\n plugin: Plugin\n) {\n if (view.composing) return false\n const state = view.state\n const $from = state.doc.resolve(from)\n if ($from.parent.type.spec.code) return false\n const textBefore =\n $from.parent.textBetween(\n Math.max(0, $from.parentOffset - 500),\n $from.parentOffset,\n undefined,\n '\\uFFFC'\n ) + text\n for (let _matcher of rules) {\n const matcher = _matcher as unknown as {\n match: RegExp\n handler: (\n state: EditorState,\n match: string[],\n from: number,\n to: number\n ) => Transaction\n undoable?: boolean\n }\n const match = matcher.match.exec(textBefore)\n const tr =\n match &&\n match[0] &&\n matcher.handler(state, match, from - (match[0].length - text.length), to)\n if (!tr) continue\n if (matcher.undoable !== false)\n tr.setMeta(plugin, { transform: tr, from, to, text })\n view.dispatch(tr)\n return true\n }\n return false\n}\n\nexport const customInputRulesKey = new PluginKey('MILKDOWN_CUSTOM_INPUTRULES')\nexport function customInputRules({ rules }: { rules: InputRule[] }): Plugin {\n const plugin: Plugin = new Plugin({\n key: customInputRulesKey,\n isInputRules: true,\n\n state: {\n init() {\n return null\n },\n apply(this: typeof plugin, tr, prev) {\n const stored = tr.getMeta(this)\n if (stored) return stored\n return tr.selectionSet || tr.docChanged ? null : prev\n },\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin)\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n const { $cursor } = view.state.selection as TextSelection\n if ($cursor) run(view, $cursor.pos, $cursor.pos, '', rules, plugin)\n })\n return false\n },\n keydown: (view, event) => {\n // On Chrome Android, prosemirror-view suppresses Enter keydown events\n // to avoid input corruption during composition. It then relies on DOM\n // mutation detection to retroactively handle Enter. However, this\n // fallback fails with custom node views (e.g. list-item-block) whose\n // wrapper DOM structure prevents the Enter detection heuristics from\n // recognizing the mutation. We intercept Enter here — before\n // prosemirror-view's suppression — and manually route it through\n // handleKeyDown so that keymaps (splitListItem, etc.) work correctly.\n if (!(android && chrome && (event as KeyboardEvent).key === 'Enter'))\n return false\n if (view.composing) return false\n if (\n view.someProp('handleKeyDown', (f) =>\n f(view, event as KeyboardEvent)\n )\n ) {\n event.preventDefault()\n return true\n }\n return false\n },\n },\n handleKeyDown(view, event) {\n if (event.key !== 'Enter') return false\n const { $cursor } = view.state.selection as TextSelection\n if ($cursor)\n return run(view, $cursor.pos, $cursor.pos, '\\n', rules, plugin)\n return false\n },\n },\n })\n return plugin\n}\n", "import type { Mark, MarkType } from '../../model'\nimport type { Captured, Options } from './common'\n\nimport { InputRule } from '../../inputrules'\n\n/// Create an input rule for a mark.\nexport function markRule(\n regexp: RegExp,\n markType: MarkType,\n options: Options = {}\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const { tr } = state\n const matchLength = match.length\n\n let group = match[matchLength - 1]\n let fullMatch = match[0]\n let initialStoredMarks: readonly Mark[] = []\n\n let markEnd: number\n\n const captured: Captured = {\n group,\n fullMatch,\n start,\n end,\n }\n\n const result = options.updateCaptured?.(captured)\n Object.assign(captured, result)\n ;({ group, fullMatch, start, end } = captured)\n\n if (fullMatch === null) return null\n\n if (group?.trim() === '') return null\n\n if (group) {\n const startSpaces = fullMatch.search(/\\S/)\n const textStart = start + fullMatch.indexOf(group)\n const textEnd = textStart + group.length\n\n initialStoredMarks = tr.storedMarks ?? []\n\n if (textEnd < end) tr.delete(textEnd, end)\n\n if (textStart > start) tr.delete(start + startSpaces, textStart)\n\n markEnd = start + startSpaces + group.length\n\n const attrs = options.getAttr?.(match)\n\n tr.addMark(start, markEnd, markType.create(attrs))\n tr.setStoredMarks(initialStoredMarks)\n\n options.beforeDispatch?.({ match, start, end, tr })\n }\n\n return tr\n })\n}\n", "import type { NodeType } from '../../model'\nimport type { Captured, Options } from './common'\n\nimport { InputRule } from '../../inputrules'\n\n/// Create an input rule for a node.\nexport function nodeRule(\n regexp: RegExp,\n nodeType: NodeType,\n options: Options = {}\n): InputRule {\n return new InputRule(regexp, (state, match, start, end) => {\n const { tr } = state\n let group: string | undefined = match[1]\n let fullMatch = match[0]\n\n const captured: Captured = {\n group,\n fullMatch,\n start,\n end,\n }\n\n const result = options.updateCaptured?.(captured)\n Object.assign(captured, result)\n ;({ group, fullMatch, start, end } = captured)\n\n if (fullMatch === null) return null\n\n if (!group || group.trim() === '') return null\n\n const attrs = options.getAttr?.(match)\n const node = nodeType.createAndFill(attrs)\n\n if (node) {\n tr.replaceRangeWith(\n nodeType.isBlock ? tr.doc.resolve(start).before() : start,\n end,\n node\n )\n options.beforeDispatch?.({\n match: [fullMatch, group],\n start,\n end,\n tr,\n })\n }\n\n return tr\n })\n}\n", "import { expectDomTypeError, missingRootElement } from '@milkdown/exception'\n\nimport type { EditorView } from '../../view'\n\ntype Point = [top: number, left: number]\n\nexport function calculateNodePosition(\n view: EditorView,\n target: HTMLElement,\n handler: (\n selectedRect: DOMRect,\n targetRect: DOMRect,\n parentRect: DOMRect\n ) => Point\n) {\n const state = view.state\n const { from } = state.selection\n\n const { node } = view.domAtPos(from)\n const element = node instanceof Text ? node.parentElement : node\n if (!(element instanceof HTMLElement)) throw expectDomTypeError(element)\n\n const selectedNodeRect = element.getBoundingClientRect()\n const targetNodeRect = target.getBoundingClientRect()\n const parent = target.parentElement\n if (!parent) throw expectDomTypeError(parent)\n\n const parentNodeRect = parent.getBoundingClientRect()\n\n const [top, left] = handler(selectedNodeRect, targetNodeRect, parentNodeRect)\n\n target.style.top = `${top}px`\n target.style.left = `${left}px`\n}\n\ninterface Rect {\n left: number\n right: number\n top: number\n bottom: number\n}\n\nexport function calculateTextPosition(\n view: EditorView,\n target: HTMLElement,\n handler: (\n start: Rect,\n end: Rect,\n targetRect: DOMRect,\n parentRect: DOMRect\n ) => Point\n) {\n const state = view.state\n const { from, to } = state.selection\n const start = view.coordsAtPos(from)\n const end = view.coordsAtPos(to)\n\n const targetNodeRect = target.getBoundingClientRect()\n const parent = target.parentElement\n if (!parent) throw missingRootElement()\n\n const parentNodeRect = parent.getBoundingClientRect()\n\n const [top, left] = handler(start, end, targetNodeRect, parentNodeRect)\n\n target.style.top = `${top}px`\n target.style.left = `${left}px`\n}\n\nfunction minMax(value = 0, min = 0, max = 0): number {\n return Math.min(Math.max(value, min), max)\n}\n\nexport function posToDOMRect(\n view: EditorView,\n from: number,\n to: number\n): DOMRect {\n const minPos = 0\n const maxPos = view.state.doc.content.size\n const resolvedFrom = minMax(from, minPos, maxPos)\n const resolvedEnd = minMax(to, minPos, maxPos)\n const start = view.coordsAtPos(resolvedFrom)\n const end = view.coordsAtPos(resolvedEnd, -1)\n const top = Math.min(start.top, end.top)\n const bottom = Math.max(start.bottom, end.bottom)\n const left = Math.min(start.left, end.left)\n const right = Math.max(start.right, end.right)\n const width = right - left\n const height = bottom - top\n const x = left\n const y = top\n const data = {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x,\n y,\n }\n\n return {\n ...data,\n toJSON: () => data,\n }\n}\n", "import type { Slice, NodeType, Node as ProseNode } from '../../model'\nimport type { Transaction } from '../../state'\n\nexport function cloneTr(tr: Transaction): Transaction {\n return Object.assign(Object.create(tr), tr).setTime(Date.now())\n}\n\nexport function equalNodeType(\n nodeType: NodeType | NodeType[],\n node: ProseNode\n) {\n return (\n (Array.isArray(nodeType) && nodeType.includes(node.type)) ||\n node.type === nodeType\n )\n}\n\nexport function isTextOnlySlice(slice: Slice): ProseNode | false {\n if (slice.content.childCount === 1) {\n const node = slice.content.firstChild\n if (node?.type.name === 'text' && node.marks.length === 0) return node\n\n if (node?.type.name === 'paragraph' && node.childCount === 1) {\n const _node = node.firstChild\n if (_node?.type.name === 'text' && _node.marks.length === 0) return _node\n }\n }\n\n return false\n}\n", "import type { MarkType, Node, NodeType, ResolvedPos } from '../../model'\nimport type { Predicate } from './types'\n\nexport interface NodeWithPos {\n pos: number\n node: Node\n}\nexport interface NodeWithFromTo {\n from: number\n to: number\n node: Node\n}\n\nexport function flatten(node: Node, descend = true): NodeWithPos[] {\n const result: NodeWithPos[] = []\n node.descendants((child, pos) => {\n result.push({ node: child, pos })\n if (!descend) return false\n\n return undefined\n })\n return result\n}\n\nexport function findChildren(predicate: Predicate) {\n return (node: Node, descend?: boolean): NodeWithPos[] =>\n flatten(node, descend).filter((child) => predicate(child.node))\n}\n\nexport function findChildrenByMark(\n node: Node,\n markType: MarkType,\n descend?: boolean\n): NodeWithPos[] {\n return findChildren((child) => Boolean(markType.isInSet(child.marks)))(\n node,\n descend\n )\n}\n\nexport function findParent(predicate: Predicate) {\n return ($pos: ResolvedPos): NodeWithFromTo | undefined => {\n for (let depth = $pos.depth; depth > 0; depth -= 1) {\n const node = $pos.node(depth)\n\n if (predicate(node)) {\n const from = $pos.before(depth)\n const to = $pos.after(depth)\n return {\n from,\n to,\n node,\n }\n }\n }\n\n return undefined\n }\n}\n\nexport function findParentNodeType($pos: ResolvedPos, nodeType: NodeType) {\n return findParent((node) => node.type === nodeType)($pos)\n}\n", "import { getAtomFromSchemaFail } from '@milkdown/exception'\n\nimport type { MarkType, NodeType, Schema } from '../../model'\n\nexport function getNodeFromSchema(type: string, schema: Schema): NodeType {\n const target = schema.nodes[type]\n\n if (!target) throw getAtomFromSchemaFail('node', type)\n\n return target\n}\n\nexport function getMarkFromSchema(type: string, schema: Schema): MarkType {\n const target = schema.marks[type]\n\n if (!target) throw getAtomFromSchemaFail('mark', type)\n\n return target\n}\n", "import type { NodeType, Node as ProseNode, ResolvedPos } from '../../model'\nimport type { EditorState, Selection } from '../../state'\nimport type { Predicate } from './types'\n\nimport { NodeSelection } from '../../state'\nimport { equalNodeType } from './helper'\n\nexport interface ContentNodeWithPos {\n pos: number\n start: number\n depth: number\n node: ProseNode\n}\n\nexport function findParentNodeClosestToPos(predicate: Predicate) {\n return ($pos: ResolvedPos): ContentNodeWithPos | undefined => {\n for (let i = $pos.depth; i > 0; i--) {\n const node = $pos.node(i)\n if (predicate(node)) {\n return {\n pos: $pos.before(i),\n start: $pos.start(i),\n depth: i,\n node,\n }\n }\n }\n\n return undefined\n }\n}\n\nexport function findParentNode(predicate: Predicate) {\n return (selection: Selection): ContentNodeWithPos | undefined => {\n return findParentNodeClosestToPos(predicate)(selection.$from)\n }\n}\n\nexport function findSelectedNodeOfType(\n selection: Selection,\n nodeType: NodeType\n): ContentNodeWithPos | undefined {\n if (!(selection instanceof NodeSelection)) return\n\n const { node, $from } = selection\n if (equalNodeType(nodeType, node))\n return {\n node,\n pos: $from.pos,\n start: $from.start($from.depth),\n depth: $from.depth,\n }\n\n return undefined\n}\n\nexport type FindNodeInSelectionResult = {\n hasNode: boolean\n pos: number\n target: ProseNode | null\n}\n\nexport const findNodeInSelection = (\n state: EditorState,\n node: NodeType\n): FindNodeInSelectionResult => {\n const { selection, doc } = state\n if (selection instanceof NodeSelection) {\n return {\n hasNode: selection.node.type === node,\n pos: selection.from,\n target: selection.node,\n }\n }\n\n const { from, to } = selection\n\n let hasNode = false\n let pos = -1\n let target: ProseNode | null = null\n doc.nodesBetween(from, to, (n, p) => {\n if (target) return false\n if (n.type === node) {\n hasNode = true\n pos = p\n target = n\n return false\n }\n return true\n })\n\n return {\n hasNode,\n pos,\n target,\n }\n}\n", "export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n", "import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" && /Mac|iP(hone|[oa]d)/.test(navigator.platform);\nconst windows = typeof navigator != \"undefined\" && /Win/.test(navigator.platform);\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`\u2014a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.altKey || event.metaKey || event.ctrlKey) &&\n // Ctrl-Alt may be used for AltGr on Windows\n !(windows && event.ctrlKey && event.altKey) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060, #1529.\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n", "import { stackOverFlow } from '@milkdown/exception'\n\n/// The element of the stack, which holds an array of nodes.\nexport abstract class StackElement<Node> {\n /// A method that can `push` a node into the element.\n abstract push(node: Node, ...rest: Node[]): void\n}\n\n/// The stack that is used to store the elements.\n///\n/// > Generally, you don't need to use this class directly.\n///\n/// When using the stack, users can call `stack.open` to push a new element into the stack.\n/// And use `stack.push` to push a node into the top element.\n/// Then use `stack.close` to close the top element and pop it.\n///\n/// For example: `stack.open(A).push(B).push(C).close()` will generate a structure like `A(B, C)`.\nexport class Stack<Node, Element extends StackElement<Node>> {\n protected elements: Element[] = []\n\n /// Get the size of the stack.\n size = (): number => {\n return this.elements.length\n }\n\n /// Get the top element of the stack.\n top = (): Element | undefined => {\n return this.elements.at(-1)\n }\n\n /// Push a node into the top element.\n push = (node: Node): void => {\n this.top()?.push(node)\n }\n\n /// Push a new element.\n open = (node: Element): void => {\n this.elements.push(node)\n }\n\n /// Close the top element and pop it.\n close = (): Element => {\n const el = this.elements.pop()\n if (!el) throw stackOverFlow()\n\n return el\n }\n}\n", "import type { Attrs, Node, NodeType } from '@milkdown/prose/model'\n\nimport { StackElement } from '../utility'\n\nexport class ParserStackElement extends StackElement<Node> {\n constructor(\n public type: NodeType,\n public content: Node[],\n public attrs?: Attrs\n ) {\n super()\n }\n\n push(node: Node, ...rest: Node[]) {\n this.content.push(node, ...rest)\n }\n\n pop(): Node | undefined {\n return this.content.pop()\n }\n\n static create(type: NodeType, content: Node[], attrs?: Attrs) {\n return new ParserStackElement(type, content, attrs)\n }\n}\n", "import type {\n Attrs,\n MarkType,\n Node,\n NodeType,\n Schema,\n} from '@milkdown/prose/model'\n\nimport {\n createNodeInParserFail,\n parserMatchError,\n stackOverFlow,\n} from '@milkdown/exception'\nimport { Mark } from '@milkdown/prose/model'\n\nimport type {\n MarkSchema,\n MarkdownNode,\n NodeSchema,\n RemarkParser,\n} from '../utility'\nimport type { Parser } from './types'\n\nimport { Stack } from '../utility'\nimport { ParserStackElement } from './stack-element'\n\n/// A state machine for parser. Transform remark AST into prosemirror state.\nexport class ParserState extends Stack<Node, ParserStackElement> {\n /// The schema in current editor.\n readonly schema: Schema\n\n /// @internal\n #marks: readonly Mark[] = Mark.none\n\n /// Create a parser from schema and remark instance.\n ///\n /// ```typescript\n /// const parser = ParserState.create(schema, remark)\n /// const prosemirrorNode = parser(SomeMarkdownText)\n /// ```\n static create = (schema: Schema, remark: RemarkParser): Parser => {\n const state = new this(schema)\n return (text) => {\n state.run(remark, text)\n return state.toDoc()\n }\n }\n\n /// @internal\n constructor(schema: Schema) {\n super()\n this.schema = schema\n }\n\n /// @internal\n #hasText = (node: Node): node is Node & { text: string } => node.isText\n\n /// @internal\n #maybeMerge = (a: Node, b: Node): Node | undefined => {\n if (this.#hasText(a) && this.#hasText(b) && Mark.sameSet(a.marks, b.marks))\n return this.schema.text(a.text + b.text, a.marks)\n\n return undefined\n }\n\n /// @internal\n #matchTarget = (node: MarkdownNode): NodeType | MarkType => {\n const result = Object.values({\n ...this.schema.nodes,\n ...this.schema.marks,\n }).find((x): x is NodeType | MarkType => {\n const spec = x.spec as NodeSchema | MarkSchema\n return spec.parseMarkdown.match(node)\n })\n\n if (!result) throw parserMatchError(node)\n\n return result\n }\n\n /// @internal\n #runNode = (node: MarkdownNode) => {\n const type = this.#matchTarget(node)\n const spec = type.spec as NodeSchema | MarkSchema\n\n spec.parseMarkdown.runner(this, node, type as NodeType & MarkType)\n }\n\n /// Inject root node for prosemirror state.\n injectRoot = (node: MarkdownNode, nodeType: NodeType, attrs?: Attrs) => {\n this.openNode(nodeType, attrs)\n this.next(node.children)\n\n return this\n }\n\n /// Open a new node, the next operations will\n /// add nodes into that new node until `closeNode` is called.\n openNode = (nodeType: NodeType, attrs?: Attrs) => {\n this.open(ParserStackElement.create(nodeType, [], attrs))\n return this\n }\n\n /// @internal\n #closeNodeAndPush = (): Node => {\n this.#marks = Mark.none\n const element = this.close()\n\n return this.#addNodeAndPush(element.type, element.attrs, element.content)\n }\n\n /// Close the current node and push it into the parent node.\n closeNode = () => {\n try {\n this.#closeNodeAndPush()\n } catch (e) {\n console.error(e)\n }\n return this\n }\n\n /// @internal\n #addNodeAndPush = (\n nodeType: NodeType,\n attrs?: Attrs,\n content?: Node[]\n ): Node => {\n const node = nodeType.createAndFill(attrs, content, this.#marks)\n if (!node) throw createNodeInParserFail(nodeType, attrs, content)\n\n this.push(node)\n\n return node\n }\n\n /// Add a node into current node.\n addNode = (nodeType: NodeType, attrs?: Attrs, content?: Node[]) => {\n try {\n this.#addNodeAndPush(nodeType, attrs, content)\n } catch (e) {\n console.error(e)\n }\n return this\n }\n\n /// Open a new mark, the next nodes added will have that mark.\n openMark = (markType: MarkType, attrs?: Attrs) => {\n const mark = markType.create(attrs)\n\n this.#marks = mark.addToSet(this.#marks)\n return this\n }\n\n /// Close a opened mark.\n closeMark = (markType: MarkType) => {\n this.#marks = markType.removeFromSet(this.#marks)\n return this\n }\n\n /// Add a text node into current node.\n addText = (text: string) => {\n try {\n const topElement = this.top()\n if (!topElement) throw stackOverFlow()\n\n const prevNode = topElement.pop()\n const currNode = this.schema.text(text, this.#marks)\n\n if (!prevNode) {\n topElement.push(currNode)\n return this\n }\n\n const merged = this.#maybeMerge(prevNode, currNode)\n if (merged) {\n topElement.push(merged)\n return this\n }\n topElement.push(prevNode, currNode)\n return this\n } catch (e) {\n console.error(e)\n return this\n }\n }\n\n /// @internal\n build = (): Node => {\n let doc: Node | undefined\n\n do doc = this.#closeNodeAndPush()\n while (this.size())\n\n return doc\n }\n\n /// Give the node or node list back to the state and\n /// the state will find a proper runner (by `match` method in parser spec) to handle it.\n next = (nodes: MarkdownNode | MarkdownNode[] = []) => {\n ;[nodes].flat().forEach((node) => this.#runNode(node))\n return this\n }\n\n /// Build the current state into a [prosemirror document](https://prosemirror.net/docs/ref/#model.Document_Structure).\n toDoc = () => this.build()\n\n /// Transform a markdown string into prosemirror state.\n run = (remark: RemarkParser, markdown: string) => {\n const tree = remark.runSync(\n remark.parse(markdown),\n markdown\n ) as MarkdownNode\n this.next(tree)\n\n return this\n }\n}\n", "import type { MarkdownNode } from '..'\nimport type { JSONRecord } from '../utility'\n\nimport { StackElement } from '../utility'\n\nexport class SerializerStackElement extends StackElement<MarkdownNode> {\n constructor(\n public type: string,\n public children?: MarkdownNode[],\n public value?: string,\n public props: JSONRecord = {}\n ) {\n super()\n }\n\n static create = (\n type: string,\n children?: MarkdownNode[],\n value?: string,\n props: JSONRecord = {}\n ) => new SerializerStackElement(type, children, value, props)\n\n push = (node: MarkdownNode, ...rest: MarkdownNode[]) => {\n if (!this.children) this.children = []\n\n this.children.push(node, ...rest)\n }\n\n pop = (): MarkdownNode | undefined => this.children?.pop()\n}\n", "import type {\n Fragment,\n MarkType,\n Node,\n NodeType,\n Schema,\n} from '@milkdown/prose/model'\n\nimport { serializerMatchError } from '@milkdown/exception'\nimport { Mark } from '@milkdown/prose/model'\n\nimport type {\n JSONRecord,\n MarkSchema,\n MarkdownNode,\n NodeSchema,\n RemarkParser,\n Root,\n} from '../utility'\nimport type { Serializer } from './types'\n\nimport { Stack } from '../utility'\nimport { SerializerStackElement } from './stack-element'\n\nconst isFragment = (x: Node | Fragment): x is Fragment =>\n Object.prototype.hasOwnProperty.call(x, 'size')\n\n/// State for serializer.\n/// Transform prosemirror state into remark AST.\nexport class SerializerState extends Stack<\n MarkdownNode,\n SerializerStackElement\n> {\n /// @internal\n #marks: readonly Mark[] = Mark.none\n /// Get the schema of state.\n readonly schema: Schema\n\n /// Create a serializer from schema and remark instance.\n ///\n /// ```typescript\n /// const serializer = SerializerState.create(schema, remark)\n /// const markdown = parser(prosemirrorDoc)\n /// ```\n static create = (schema: Schema, remark: RemarkParser): Serializer => {\n const state = new this(schema)\n return (content: Node) => {\n state.run(content)\n return state.toString(remark)\n }\n }\n\n /// @internal\n constructor(schema: Schema) {\n super()\n this.schema = schema\n }\n\n /// @internal\n #matchTarget = (node: Node | Mark): NodeType | MarkType => {\n const result = Object.values({\n ...this.schema.nodes,\n ...this.schema.marks,\n }).find((x): x is NodeType | MarkType => {\n const spec = x.spec as NodeSchema | MarkSchema\n return spec.toMarkdown.match(node as Node & Mark)\n })\n\n if (!result) throw serializerMatchError(node.type)\n\n return result\n }\n\n /// @internal\n #runProseNode = (node: Node) => {\n const type = this.#matchTarget(node)\n const spec = type.spec as NodeSchema\n return spec.toMarkdown.runner(this, node)\n }\n\n /// @internal\n #runProseMark = (mark: Mark, node: Node) => {\n const type = this.#matchTarget(mark)\n const spec = type.spec as MarkSchema\n return spec.toMarkdown.runner(this, mark, node)\n }\n\n /// @internal\n #runNode = (node: Node) => {\n const { marks } = node\n const getPriority = (x: Mark) => x.type.spec.priority ?? 50\n const tmp = [...marks].sort((a, b) => getPriority(a) - getPriority(b))\n const unPreventNext = tmp.every((mark) => !this.#runProseMark(mark, node))\n if (unPreventNext) this.#runProseNode(node)\n\n marks.forEach((mark) => this.#closeMark(mark))\n }\n\n /// @internal\n #searchType = (child: MarkdownNode, type: string): MarkdownNode => {\n if (child.type === type) return child\n\n if (child.children?.length !== 1) return child\n\n const searchNode = (node: MarkdownNode): MarkdownNode | null => {\n if (node.type === type) return node.value != null ? null : node\n\n if (node.children?.length !== 1) return null\n\n const [firstChild] = node.children\n if (!firstChild) return null\n\n return searchNode(firstChild)\n }\n\n const target = searchNode(child)\n\n if (!target) return child\n\n const tmp = target.children ? [...target.children] : undefined\n const node = { ...child, children: tmp }\n node.children = tmp\n target.children = [node]\n\n return target\n }\n\n /// @internal\n #maybeMergeChildren = (node: MarkdownNode): MarkdownNode => {\n const { children } = node\n if (!children) return node\n\n node.children = children.reduce((nextChildren, child, index) => {\n if (index === 0) return [child]\n\n const last = nextChildren.at(-1)\n if (last && last.isMark && child.isMark) {\n child = this.#searchType(child, last.type)\n const { children: currChildren, ...currRest } = child\n const { children: prevChildren, ...prevRest } = last\n if (\n child.type === last.type &&\n currChildren &&\n prevChildren &&\n JSON.stringify(currRest) === JSON.stringify(prevRest)\n ) {\n const next = {\n ...prevRest,\n children: [...prevChildren, ...currChildren],\n }\n return nextChildren\n .slice(0, -1)\n .concat(this.#maybeMergeChildren(next))\n }\n }\n return nextChildren.concat(child)\n }, [] as MarkdownNode[])\n\n return node\n }\n\n /// @internal\n #createMarkdownNode = (element: SerializerStackElement) => {\n const node: MarkdownNode = {\n ...element.props,\n type: element.type,\n }\n\n if (element.children) node.children = element.children\n\n if (element.value) node.value = element.value\n\n return node\n }\n\n /// Open a new node, the next operations will\n /// add nodes into that new node until `closeNode` is called.\n openNode = (type: string, value?: string, props?: JSONRecord) => {\n this.open(SerializerStackElement.create(type, undefined, value, props))\n return this\n }\n\n #moveSpaces = (\n element: SerializerStackElement,\n onPush: () => MarkdownNode\n ) => {\n let startSpaces = ''\n let endSpaces = ''\n const children = element.children\n let first = -1\n let last = -1\n const findIndex = (node: MarkdownNode[]) => {\n if (!node) return\n node.forEach((child, index) => {\n if (child.type === 'text' && child.value) {\n if (first < 0) first = index\n\n last = index\n }\n })\n }\n\n if (children) {\n findIndex(children)\n const lastChild = children?.[last] as\n | (MarkdownNode & { value: string })\n | undefined\n const firstChild = children?.[first] as\n | (MarkdownNode & { value: string })\n | undefined\n if (lastChild && lastChild.value.endsWith(' ')) {\n const text = lastChild.value\n const trimmed = text.trimEnd()\n endSpaces = text.slice(trimmed.length)\n lastChild.value = trimmed\n }\n if (firstChild && firstChild.value.startsWith(' ')) {\n const text = firstChild.value\n const trimmed = text.trimStart()\n startSpaces = text.slice(0, text.length - trimmed.length)\n firstChild.value = trimmed\n }\n }\n\n if (startSpaces.length) this.#addNodeAndPush('text', undefined, startSpaces)\n\n const result = onPush()\n\n if (endSpaces.length) this.#addNodeAndPush('text', undefined, endSpaces)\n\n return result\n }\n\n /// @internal\n #closeNodeAndPush = (trim: boolean = false): MarkdownNode => {\n const element = this.close()\n\n const onPush = () =>\n this.#addNodeAndPush(\n element.type,\n element.children,\n element.value,\n element.props\n )\n\n if (trim) return this.#moveSpaces(element, onPush)\n\n return onPush()\n }\n\n /// Close the current node and push it into the parent node.\n closeNode = () => {\n this.#closeNodeAndPush()\n return this\n }\n\n /// @internal\n #addNodeAndPush = (\n type: string,\n children?: MarkdownNode[],\n value?: string,\n props?: JSONRecord\n ): MarkdownNode => {\n const element = SerializerStackElement.create(type, children, value, props)\n const node: MarkdownNode = this.#maybeMergeChildren(\n this.#createMarkdownNode(element)\n )\n this.push(node)\n return node\n }\n\n /// Add a node into current node.\n addNode = (\n type: string,\n children?: MarkdownNode[],\n value?: string,\n props?: JSONRecord\n ) => {\n this.#addNodeAndPush(type, children, value, props)\n return this\n }\n\n /// @internal\n #openMark = (\n mark: Mark,\n type: string,\n value?: string,\n props?: JSONRecord\n ) => {\n const isIn = mark.isInSet(this.#marks)\n\n if (isIn) return this\n\n this.#marks = mark.addToSet(this.#marks)\n return this.openNode(type, value, { ...props, isMark: true })\n }\n\n /// @internal\n #closeMark = (mark: Mark): void => {\n const isIn = mark.isInSet(this.#marks)\n\n if (!isIn) return\n\n this.#marks = mark.type.removeFromSet(this.#marks)\n this.#closeNodeAndPush(true)\n }\n\n /// Open a new mark, the next nodes added will have that mark.\n /// The mark will be closed automatically.\n withMark = (mark: Mark, type: string, value?: string, props?: JSONRecord) => {\n this.#openMark(mark, type, value, props)\n return this\n }\n\n /// Close a opened mark.\n /// In most cases you don't need this because\n /// marks will be closed automatically.\n closeMark = (mark: Mark) => {\n this.#closeMark(mark)\n return this\n }\n\n /// @internal\n build = (): MarkdownNode => {\n let doc: MarkdownNode | null = null\n do doc = this.#closeNodeAndPush()\n while (this.size())\n\n return doc\n }\n\n /// Give the node or node list back to the state and\n /// the state will find a proper runner (by `match` method in serializer spec) to handle it.\n next = (nodes: Node | Fragment) => {\n if (isFragment(nodes)) {\n nodes.forEach((node) => {\n this.#runNode(node)\n })\n return this\n }\n this.#runNode(nodes)\n return this\n }\n\n /// Use a remark parser to serialize current AST stored.\n override toString = (remark: RemarkParser): string =>\n remark.stringify(this.build() as Root)\n\n /// Transform a prosemirror node tree into remark AST.\n run = (tree: Node) => {\n this.next(tree)\n\n return this\n }\n}\n", "import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\nconst clearReusedRange = function () {\n reusedRange = null;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n var _a;\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n let child = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (child.nodeType == 1 && child.contentEditable == \"false\") {\n if ((_a = child.pmViewDesc) === null || _a === void 0 ? void 0 : _a.ignoreForSelection)\n off += dir;\n else\n return false;\n }\n else {\n node = child;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction textNodeBefore$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction textNodeAfter$1(node, offset) {\n for (;;) {\n if (node.nodeType == 3 && offset < node.nodeValue.length)\n return node;\n if (node.nodeType == 1 && offset < node.childNodes.length) {\n if (node.contentEditable == \"false\")\n return null;\n node = node.childNodes[offset];\n offset = 0;\n }\n else if (node.parentNode && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n else {\n return null;\n }\n }\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n // Clip the offset, because Chrome will return a text offset\n // into <input> nodes, which can't be treated as a regular DOM\n // offset\n if (pos)\n return { node: pos.offsetNode, offset: Math.min(nodeSize(pos.offsetNode), pos.offset) };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: Math.min(nodeSize(range.startContainer), range.startOffset) };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n let vp = doc.defaultView && doc.defaultView.visualViewport;\n if (vp)\n return {\n left: 0, right: vp.width,\n top: 0, bottom: vp.height\n };\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;;) {\n if (!parent)\n break;\n if (parent.nodeType != 1) {\n parent = parentNode(parent);\n continue;\n }\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n let pos = atTop ? \"fixed\" : getComputedStyle(parent).position;\n if (/^(fixed|sticky)$/.test(pos))\n break;\n parent = pos == \"absolute\" ? parent.offsetParent : parentNode(parent);\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange(), result;\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect)) {\n result = { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n break;\n }\n }\n range.detach();\n return result || { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true), rect;\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent || !desc.contentDOM) &&\n // Ignore elements with zero-size bounding rectangles\n ((rect = desc.dom.getBoundingClientRect()).width || rect.height)) {\n if (desc.node.isBlock && desc.parent && !/^T(R|BODY|HEAD|FOOT)$/.test(desc.dom.nodeName)) {\n // Only apply the horizontal test to the innermost block. Vertical for any parent.\n if (!sawBlock && rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (!sawBlock && rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n sawBlock = true;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into <input> nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n let prev;\n // When clicking above the right side of an uneditable node, Chrome will report a cursor position after that node.\n if (webkit && offset && node.nodeType == 1 && (prev = node.childNodes[offset - 1]).nodeType == 1 &&\n prev.contentEditable == \"false\" && prev.getBoundingClientRect().top >= coords.top)\n offset--;\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n if (!sel)\n return $head.pos == $head.start() || $head.pos == $head.end();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length) {\n for (let i = 0; i < child.children.length; i++) {\n let inner = child.children[i];\n if (inner.size) {\n child = inner;\n break;\n }\n }\n }\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, view, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, view, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = view.root.getSelection();\n let selRange = view.domSelectionRange();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && selRange.focusNode && selRange.focusNode != headDOM.node && selRange.focusNode.nodeType == 1) {\n let after = selRange.focusNode.childNodes[selRange.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, selRange.anchorNode, selRange.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, selRange.focusNode, selRange.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !(brKludge && gecko)) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n get ignoreForSelection() { return false; }\n isText(text) { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get ignoreForSelection() { return !!this.widget.type.spec.relaxedSide; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM, spec) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n this.spec = spec;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline), null, mark.attrs);\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom, spec);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n let spec = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node), null, node.attrs);\n ({ dom, contentDOM } = spec);\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by <br contenteditable=false>\n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view, i);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view, i);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view, i);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view, 0);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let textNode = view.input.compositionNode;\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.draggable = true;\n }\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1) {\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.nodeDOM.removeAttribute(\"draggable\");\n }\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n isText(text) { return this.node.text == text; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update && (this.node.type == node.type || this.spec.multiType)) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, view, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, view.root)\n : super.setSelection(anchor, head, view, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view, parentIndex) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1, scanTo = this.top.children.length;\n if (parentIndex < this.preMatch.index)\n scanTo = Math.min(this.index + 3, scanTo);\n for (let i = this.index; i < scanTo; i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.destroyBetween(this.index, i);\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content) ||\n !sameOuterDeco(outerDeco, next.outerDeco) || !innerDeco.eq(next.innerDeco))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n else {\n while (decoIndex < locals.length && locals[decoIndex].to < end)\n decoIndex++;\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n if (pos >= to && str.slice(to - text.length - childStart, to - childStart) == text)\n return to - text.length;\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), anchor, selection;\n if (selectionCollapsed(domSel)) {\n anchor = head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n if (domSel instanceof view.dom.ownerDocument.defaultView.Selection && domSel.rangeCount > 1) {\n let min = head, max = head;\n for (let i = 0; i < domSel.rangeCount; i++) {\n let range = domSel.getRangeAt(i);\n min = Math.min(min, view.docView.posFromDOM(range.startContainer, range.startOffset, 1));\n max = Math.max(max, view.docView.posFromDOM(range.endContainer, range.endOffset, -1));\n }\n if (min < 0)\n return null;\n [anchor, head] = max == view.state.selection.anchor ? [max, min] : [min, max];\n $head = doc.resolve(head);\n }\n else {\n anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n }\n if (anchor < 0)\n return null;\n }\n let $anchor = doc.resolve(anchor);\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection();\n if (!domSel)\n return;\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n domSel.collapse(node.parentNode, domIndex(node) + 1);\n else\n domSel.collapse(node, 0);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (mods.indexOf(\"s\") > -1) {\n let { $head } = sel, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter;\n if (!node || node.isText || !node.isLeaf)\n return false;\n let $newHead = view.state.doc.resolve($head.pos + node.nodeSize * (dir < 0 ? -1 : 1));\n return apply(view, new TextSelection(sel.$anchor, $newHead));\n }\n else if (!sel.empty) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (!sel)\n return;\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text, slice };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = !!text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode) {\n slice = new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0);\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, true); });\n return slice;\n }\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, asText); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"<td>..</td>\"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nlet _policy = null;\nfunction maybeWrapTrusted(html) {\n let trustedTypes = window.trustedTypes;\n if (!trustedTypes)\n return html;\n // With the require-trusted-types-for CSP, Chrome will block\n // innerHTML, even on a detached document. This wraps the string in\n // a way that makes the browser allow us to use its parser again.\n if (!_policy)\n _policy = trustedTypes.defaultPolicy || trustedTypes.createPolicy(\"ProseMirrorClipboard\", { createHTML: (s) => s });\n return _policy.createHTML(html);\n}\nfunction readHTML(html) {\n let metas = /^(\\s*<meta [^>]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"</\" + n + \">\").reverse().join(\"\");\n elt.innerHTML = maybeWrapTrusted(html);\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\", button: 0 };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastChromeDelete = 0;\n this.composing = false;\n this.compositionNode = null;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n this.badSafariComposition = false;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n let deflt = () => view.state.tr.insertText(text).scrollIntoView();\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text, deflt)))\n view.dispatch(deflt());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n if (view.state.selection.eq(selection))\n return;\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier] &&\n view.input.lastClick.button == event.button) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type, button: event.button };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc && targetDesc.nodeDOM.nodeType == 1 ? targetDesc.nodeDOM : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n (targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos))\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$to;\n if (state.selection instanceof TextSelection &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)) ||\n chrome && windows && selectionBeforeUneditable(view))) { // Issue #1500\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view, !state.selection.empty);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n let sel = view.domSelection();\n if (sel)\n sel.collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\nfunction selectionBeforeUneditable(view) {\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (!focusNode || focusNode.nodeType != 1 || focusOffset >= focusNode.childNodes.length)\n return false;\n let next = focusNode.childNodes[focusOffset];\n return next.nodeType == 1 && next.contentEditable == \"false\";\n}\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n view.input.compositionNode = null;\n if (view.input.badSafariComposition)\n view.domObserver.forceFlush();\n else if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction findCompositionNode(view) {\n let sel = view.domSelectionRange();\n if (!sel.focusNode)\n return null;\n let textBefore = textNodeBefore$1(sel.focusNode, sel.focusOffset);\n let textAfter = textNodeAfter$1(sel.focusNode, sel.focusOffset);\n if (textBefore && textAfter && textBefore != textAfter) {\n let descAfter = textAfter.pmViewDesc, lastChanged = view.domObserver.lastChangedTextNode;\n if (textBefore == lastChanged || textAfter == lastChanged)\n return lastChanged;\n if (!descAfter || !descAfter.isText(textAfter.nodeValue)) {\n return textAfter;\n }\n else if (view.input.compositionNode == textAfter) {\n let descBefore = textBefore.pmViewDesc;\n if (!(!descBefore || !descBefore.isText(textBefore.nodeValue)))\n return textAfter;\n }\n }\n return textBefore || textAfter;\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, restarting = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (restarting || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view), cur = view.state.selection;\n if (sel && !sel.eq(cur))\n view.dispatch(view.state.tr.setSelection(sel));\n else if ((view.markCursor || restarting) && !cur.$from.node(cur.$from.sharedDepth(cur.to)).inlineContent)\n view.dispatch(view.state.tr.deleteSelection());\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API\u2014all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\nfunction getText(clipboardData) {\n let text = clipboardData.getData(\"text/plain\") || clipboardData.getData(\"Text\");\n if (text)\n return text;\n let uris = clipboardData.getData(\"text/uri-list\");\n return uris ? uris.replace(/\\r?\\n/g, \" \") : \"\";\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, getText(data), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move, node) {\n this.slice = slice;\n this.move = move;\n this.node = node;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nfunction dragMoves(view, event) {\n let copy;\n view.someProp(\"dragCopies\", test => { copy = copy || test(event); });\n return copy != null ? !copy : !event[dragCopyModifier];\n}\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n let node;\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n node = NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos);\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n node = NodeSelection.create(view.state.doc, desc.posBefore);\n }\n let draggedSlice = (node || view.state.selection).content();\n let { dom, text, slice } = serializeForClipboard(view, draggedSlice);\n // Pre-120 Chrome versions clear files when calling `clearData` (#1472)\n if (!event.dataTransfer.files.length || !chrome || chrome_version > 120)\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://code.haverbeke.berlin/prosemirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, dragMoves(view, event), node);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, event) => {\n try {\n handleDrop(view, event, view.dragging);\n }\n finally {\n view.dragging = null;\n }\n};\nfunction handleDrop(view, event, dragging) {\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view, false); });\n }\n else {\n slice = parseFromClipboard(view, getText(event.dataTransfer), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && dragMoves(view, event));\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move) {\n let { node } = dragging;\n if (node)\n node.replace(tr);\n else\n tr.deleteSelection();\n }\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n}\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants\u2014see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure\u2014it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n forEachSet(f) { f(this); }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n forEachSet(f) {\n for (let i = 0; i < this.members.length; i++)\n this.members[i].forEachSet(f);\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (oldStart >= baseOffset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.lastChangedTextNode = null;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length)) {\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n this.flushSoon();\n }\n else if (safari && view.composing && mutations.some(m => m.type == \"childList\" && m.target.nodeName == \"TR\")) {\n // Safari does weird stuff when finishing a composition in a\n // table cell, which tends to involve inserting inappropriate\n // nodes in the table row.\n view.input.badSafariComposition = true;\n this.flushSoon();\n }\n else {\n this.flush();\n }\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (added.some(n => n.nodeName == \"BR\") && (view.input.lastKeyCode == 8 || view.input.lastKeyCode == 46)) {\n // Browsers sometimes insert a bogus break node if you\n // backspace out the last bit of text before an inline-flex node (#1552)\n for (let node of added)\n if (node.nodeName == \"BR\" && node.parentNode) {\n let after = node.nextSibling;\n while (after && after.nodeType == 1) {\n if (after.contentEditable == \"false\") {\n node.parentNode.removeChild(node);\n break;\n }\n after = after.firstChild;\n }\n }\n }\n else if (gecko && added.length) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let [a, b] = brs;\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n else {\n let { focusNode } = this.currentSelection;\n for (let br of brs) {\n let parent = br.parentNode;\n if (parent && parent.nodeName == \"LI\" && (!focusNode || blockParent(view, focusNode) != parent))\n br.remove();\n }\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n if (view.input.badSafariComposition) {\n view.input.badSafariComposition = false;\n fixUpBadSafariComposition(view, added);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let node = mut.addedNodes[i];\n added.push(node);\n if (node.nodeType == 3)\n this.lastChangedTextNode = node;\n }\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n this.lastChangedTextNode = mut.target;\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\nfunction rangeToSelectionRange(view, range) {\n let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n let focusNode = range.endContainer, focusOffset = range.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view, selection) {\n if (selection.getComposedRanges) {\n let range = selection.getComposedRanges(view.root)[0];\n if (range)\n return rangeToSelectionRange(view, range);\n }\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it\u2014using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n return found ? rangeToSelectionRange(view, found) : null;\n}\nfunction blockParent(view, node) {\n for (let p = node.parentNode; p && p != view.dom; p = p.parentNode) {\n let desc = view.docView.nearestDesc(p, true);\n if (desc && desc.node.isBlock)\n return p;\n }\n return null;\n}\n// Kludge for a Safari bug where, on ending a composition in an\n// otherwise empty table cell, it randomly moves the composed text\n// into the table row around that cell, greatly confusing everything\n// (#188).\nfunction fixUpBadSafariComposition(view, addedNodes) {\n var _a;\n let { focusNode, focusOffset } = view.domSelectionRange();\n for (let node of addedNodes) {\n if (((_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName) == \"TR\") {\n let nextCell = node.nextSibling;\n while (nextCell && (nextCell.nodeName != \"TD\" && nextCell.nodeName != \"TH\"))\n nextCell = nextCell.nextSibling;\n if (nextCell) {\n let parent = nextCell;\n for (;;) {\n let first = parent.firstChild;\n if (!first || first.nodeType != 1 || first.contentEditable == \"false\" ||\n /^(BR|IMG)$/.test(first.nodeName))\n break;\n parent = first;\n }\n parent.insertBefore(node, parent.firstChild);\n if (focusNode == node)\n view.domSelection().collapse(node, focusOffset);\n }\n else {\n node.parentNode.removeChild(node);\n }\n }\n }\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if (change)\n view.input.domChangeCount++;\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size &&\n (!$from.sameParent($to) || !$from.parent.inlineContent) &&\n $from.pos < $to.pos && !/\\S/.test(parse.doc.textBetween($from.pos, $to.pos, \"\", \"\")))) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeBackspace(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && change.endB == change.start)\n view.input.lastChromeDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let mkTr = (base) => {\n let tr = base || view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastChromeDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n return tr.scrollIntoView();\n };\n let markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n let tr = mkTr(view.state.tr.delete(chFrom, chTo));\n let marks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n if (marks)\n tr.ensureMarks(marks);\n view.dispatch(tr);\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n let tr = mkTr(view.state.tr);\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n view.dispatch(tr);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n let deflt = () => mkTr(view.state.tr.insertText(text, chFrom, chTo));\n if (!view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text, deflt)))\n view.dispatch(deflt());\n }\n else {\n view.dispatch(mkTr());\n }\n }\n else {\n view.dispatch(mkTr());\n }\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeBackspace(old, start, end, $newStart, $newEnd) {\n if ( // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Handle the case where, rather than joining blocks, the change just removed an entire block\n if (!$newStart.parent.isTextblock) {\n let after = $start.nodeAfter;\n return after != null && end == start + after.nodeSize;\n }\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n if (start && start < b.size && isSurrogatePair(b.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n if (start && start < a.size && isSurrogatePair(a.textBetween(start - 1, start + 1)))\n start += move ? 1 : -1;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\nfunction isSurrogatePair(str) {\n if (str.length != 2)\n return false;\n let a = str.charCodeAt(0), b = str.charCodeAt(1);\n return a >= 0xDC00 && a <= 0xDFFF && b >= 0xD800 && b <= 0xDBFF;\n}\n\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://code.haverbeke.berlin/prosemirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n var _a;\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (this.composing)\n this.input.compositionNode = findCompositionNode(this);\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco(outerDeco);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && (!this.trackWrites || !this.dom.contains(this.trackWrites)))\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (((_a = this.dragging) === null || _a === void 0 ? void 0 : _a.node) && !prev.doc.eq(state.doc))\n this.updateDraggedNode(this.dragging, prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (!startDOM || !this.dom.contains(startDOM.nodeType == 1 ? startDOM : startDOM.parentNode)) ;\n else if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n updateDraggedNode(dragging, prev) {\n let sel = dragging.node, found = -1;\n if (sel.from < this.state.doc.content.size && this.state.doc.nodeAt(sel.from) == sel.node) {\n found = sel.from;\n }\n else {\n let movedPos = sel.from + (this.state.doc.content.size - prev.doc.content.size);\n let moved = movedPos > 0 && movedPos < this.state.doc.content.size && this.state.doc.nodeAt(movedPos);\n if (moved == sel.node)\n found = movedPos;\n }\n this.dragging = new Dragging(dragging.slice, dragging.move, found < 0 ? undefined : NodeSelection.create(this.state.doc, found));\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n When an existing editor view is moved to a new document or\n shadow tree, call this to make it recompute its root.\n */\n updateRoot() {\n this._root = null;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes\u2014for example when interpreting an event\n target\u2014you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Serialize the given slice as it would be if it was copied from\n this editor. Returns a DOM element that contains a\n representation of the slice as its children, a textual\n representation, and the transformed slice (which can be\n different from the given input due to hooks like\n [`transformCopied`](https://prosemirror.net/docs/ref/#view.EditorProps.transformCopied)).\n */\n serializeForClipboard(slice) {\n return serializeForClipboard(this, slice);\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n clearReusedRange();\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n @internal\n */\n domSelectionRange() {\n let sel = this.domSelection();\n if (!sel)\n return { focusNode: null, focusOffset: 0, anchorNode: null, anchorOffset: 0 };\n return safari && this.root.nodeType === 11 &&\n deepActiveElement(this.dom.ownerDocument) == this.dom && safariShadowSelectionRange(this, sel) || sel;\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nEditorView.prototype.dispatch = function (tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n};\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.from, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard };\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n plugin.meta = {\n package: '@milkdown/core',\n group: 'System',\n ...meta,\n }\n\n return plugin\n}\n", "import type { Options } from 'remark-stringify'\n\nexport const remarkHandlers: Required<Options>['handlers'] = {\n text: (node, _, state, info) => {\n // This config is to remove the `` entity when have trailing spaces\n const value = node.value\n // Check if the text contains only trailing spaces that might be encoded\n if (/^[^*_\\\\]*\\s+$/.test(value)) {\n // For text that ends with spaces but has no markdown special characters that need escaping,\n // return the value directly to preserve trailing spaces\n return value\n }\n // For other text, use safe to handle markdown escaping but prevent space encoding\n return state.safe(value, { ...info, encode: [] })\n },\n strong: (node, _, state, info) => {\n const marker = node.marker || state.options.strong || '*'\n const exit = state.enter('strong')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker + marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current(),\n })\n )\n value += tracker.move(marker + marker)\n exit()\n return value\n },\n emphasis: (node, _, state, info) => {\n const marker = node.marker || state.options.emphasis || '*'\n const exit = state.enter('emphasis')\n const tracker = state.createTracker(info)\n let value = tracker.move(marker)\n value += tracker.move(\n state.containerPhrasing(node, {\n before: value,\n after: marker,\n ...tracker.current(),\n })\n )\n value += tracker.move(marker)\n exit()\n return value\n },\n}\n", "import type { SliceType, TimerType } from '@milkdown/ctx'\nimport type { InputRule } from '@milkdown/prose/inputrules'\nimport type { EditorState, Plugin } from '@milkdown/prose/state'\nimport type {\n EditorView,\n MarkViewConstructor,\n NodeViewConstructor,\n} from '@milkdown/prose/view'\nimport type { RemarkParser, RemarkPlugin } from '@milkdown/transformer'\nimport type { Options } from 'remark-stringify'\n\nimport { createSlice } from '@milkdown/ctx'\nimport remarkParse from 'remark-parse'\nimport remarkStringify from 'remark-stringify'\nimport { unified } from 'unified'\n\nimport type { Editor } from '../editor'\n\nimport { remarkHandlers } from '../__internal__'\n\n/// A slice which contains the editor view instance.\nexport const editorViewCtx = createSlice({} as EditorView, 'editorView')\n\n/// A slice which contains the editor state.\nexport const editorStateCtx = createSlice({} as EditorState, 'editorState')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[ConfigReady]`.\nexport const initTimerCtx = createSlice([] as TimerType[], 'initTimer')\n\n/// A slice which stores the editor instance.\nexport const editorCtx = createSlice({} as Editor, 'editor')\n\n/// A slice which stores the input rules.\nexport const inputRulesCtx = createSlice([] as InputRule[], 'inputRules')\n\n/// A slice which stores the prosemirror plugins.\nexport const prosePluginsCtx = createSlice([] as Plugin[], 'prosePlugins')\n\n/// A slice which stores the remark plugins.\nexport const remarkPluginsCtx = createSlice(\n [] as RemarkPlugin[],\n 'remarkPlugins'\n)\n\ntype NodeView = [nodeId: string, view: NodeViewConstructor]\n\n/// A slice which stores the prosemirror node views.\nexport const nodeViewCtx = createSlice([] as NodeView[], 'nodeView')\n\ntype MarkView = [nodeId: string, view: MarkViewConstructor]\n\n/// A slice which stores the prosemirror mark views.\nexport const markViewCtx = createSlice([] as MarkView[], 'markView')\n\n/// A slice which stores the remark instance.\nexport const remarkCtx: SliceType<RemarkParser, 'remark'> = createSlice(\n unified().use(remarkParse).use(remarkStringify),\n 'remark'\n)\n\n/// A slice which stores the remark stringify options.\nexport const remarkStringifyOptionsCtx = createSlice(\n {\n handlers: remarkHandlers,\n encode: [],\n } as Options,\n 'remarkStringifyOptions'\n)\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\n\nimport { createTimer } from '@milkdown/ctx'\n\nimport { withMeta } from '../__internal__'\n\n/// @internal\nexport type Config = (ctx: Ctx) => void | Promise<void>\n\n/// The timer which will be resolved when the config plugin is ready.\nexport const ConfigReady = createTimer('ConfigReady')\n\n/// The config plugin.\n/// This plugin will load all user configs.\nexport function config(configure: Config): MilkdownPlugin {\n const plugin: MilkdownPlugin = (ctx) => {\n ctx.record(ConfigReady)\n\n return async () => {\n await configure(ctx)\n ctx.done(ConfigReady)\n\n return () => {\n ctx.clearTimer(ConfigReady)\n }\n }\n }\n\n withMeta(plugin, {\n displayName: 'Config',\n })\n\n return plugin\n}\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { createTimer } from '@milkdown/ctx'\nimport remarkParse from 'remark-parse'\nimport remarkStringify, { type Options } from 'remark-stringify'\nimport { unified } from 'unified'\n\nimport type { Editor } from '../editor'\n\nimport { remarkHandlers, withMeta } from '../__internal__'\nimport {\n editorCtx,\n initTimerCtx,\n inputRulesCtx,\n markViewCtx,\n nodeViewCtx,\n prosePluginsCtx,\n remarkCtx,\n remarkPluginsCtx,\n remarkStringifyOptionsCtx,\n} from './atoms'\nimport { ConfigReady } from './config'\n\n/// The timer which will be resolved when the init plugin is ready.\nexport const InitReady = createTimer('InitReady')\n\n/// The init plugin.\n/// This plugin prepare slices that needed by other plugins. And create a remark instance.\n///\n/// This plugin will wait for the config plugin.\nexport function init(editor: Editor): MilkdownPlugin {\n const plugin: MilkdownPlugin = (ctx) => {\n ctx\n .inject(editorCtx, editor)\n .inject(prosePluginsCtx, [])\n .inject(remarkPluginsCtx, [])\n .inject(inputRulesCtx, [])\n .inject(nodeViewCtx, [])\n .inject(markViewCtx, [])\n .inject(remarkStringifyOptionsCtx, {\n handlers: remarkHandlers,\n encode: [],\n } as Options)\n .inject(remarkCtx, unified().use(remarkParse).use(remarkStringify))\n .inject(initTimerCtx, [ConfigReady])\n .record(InitReady)\n\n return async () => {\n await ctx.waitTimers(initTimerCtx)\n const options = ctx.get(remarkStringifyOptionsCtx)\n ctx.set(\n remarkCtx,\n unified().use(remarkParse).use(remarkStringify, options)\n )\n\n ctx.done(InitReady)\n\n return () => {\n ctx\n .remove(editorCtx)\n .remove(prosePluginsCtx)\n .remove(remarkPluginsCtx)\n .remove(inputRulesCtx)\n .remove(nodeViewCtx)\n .remove(markViewCtx)\n .remove(remarkStringifyOptionsCtx)\n .remove(remarkCtx)\n .remove(initTimerCtx)\n .clearTimer(InitReady)\n }\n }\n }\n withMeta(plugin, {\n displayName: 'Init',\n })\n\n return plugin\n}\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type {\n MarkSchema,\n NodeSchema,\n RemarkParser,\n} from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { Schema } from '@milkdown/prose/model'\n\nimport { withMeta } from '../__internal__'\nimport { remarkCtx, remarkPluginsCtx } from './atoms'\nimport { InitReady } from './init'\n\n/// The timer which will be resolved when the schema plugin is ready.\nexport const SchemaReady = createTimer('SchemaReady')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[InitReady]`.\nexport const schemaTimerCtx = createSlice([] as TimerType[], 'schemaTimer')\n\n/// A slice which contains the schema.\nexport const schemaCtx = createSlice({} as Schema, 'schema')\n\n/// A slice which stores the nodes spec.\nexport const nodesCtx = createSlice([] as Array<[string, NodeSchema]>, 'nodes')\n\n/// A slice which stores the marks spec.\nexport const marksCtx = createSlice([] as Array<[string, MarkSchema]>, 'marks')\n\nfunction extendPriority<T extends NodeSchema | MarkSchema>(x: T): T {\n return {\n ...x,\n parseDOM: x.parseDOM?.map((rule) => ({ priority: x.priority, ...rule })),\n }\n}\n\n/// The schema plugin.\n/// This plugin will load all nodes spec and marks spec and create a schema.\n///\n/// This plugin will wait for the init plugin.\nexport const schema: MilkdownPlugin = (ctx) => {\n ctx\n .inject(schemaCtx, {} as Schema)\n .inject(nodesCtx, [])\n .inject(marksCtx, [])\n .inject(schemaTimerCtx, [InitReady])\n .record(SchemaReady)\n\n return async () => {\n await ctx.waitTimers(schemaTimerCtx)\n\n const remark = ctx.get(remarkCtx)\n const remarkPlugins = ctx.get(remarkPluginsCtx)\n\n const processor = remarkPlugins.reduce(\n (acc: RemarkParser, plug) =>\n acc.use(plug.plugin, plug.options) as unknown as RemarkParser,\n remark\n )\n ctx.set(remarkCtx, processor)\n\n const nodes = Object.fromEntries(\n ctx.get(nodesCtx).map(([key, x]) => [key, extendPriority(x)])\n )\n const marks = Object.fromEntries(\n ctx.get(marksCtx).map(([key, x]) => [key, extendPriority(x)])\n )\n const schema = new Schema({ nodes, marks })\n\n ctx.set(schemaCtx, schema)\n\n ctx.done(SchemaReady)\n\n return () => {\n ctx\n .remove(schemaCtx)\n .remove(nodesCtx)\n .remove(marksCtx)\n .remove(schemaTimerCtx)\n .clearTimer(SchemaReady)\n }\n }\n}\n\nwithMeta(schema, {\n displayName: 'Schema',\n})\n", "import type { Ctx, MilkdownPlugin, SliceType } from '@milkdown/ctx'\nimport type { Command } from '@milkdown/prose/state'\n\nimport { Container, createSlice, createTimer } from '@milkdown/ctx'\nimport { callCommandBeforeEditorView } from '@milkdown/exception'\nimport { chainCommands } from '@milkdown/prose/commands'\n\nimport { withMeta } from '../__internal__'\nimport { editorViewCtx } from './atoms'\nimport { SchemaReady } from './schema'\n\n/// @internal\nexport type Cmd<T = undefined> = (payload?: T) => Command\n\n/// @internal\nexport type CmdKey<T = undefined> = SliceType<Cmd<T>>\n\ntype InferParams<T> = T extends CmdKey<infer U> ? U : never\n\n/// A chainable command helper.\nexport interface CommandChain {\n /// Run the command chain.\n run: () => boolean\n /// Add an inline command to the chain.\n inline: (command: Command) => CommandChain\n /// Add a registered command to the chain.\n pipe: {\n <T extends CmdKey<any>>(\n slice: string,\n payload?: InferParams<T>\n ): CommandChain\n <T>(slice: CmdKey<T>, payload?: T): CommandChain\n (slice: string | CmdKey<any>, payload?: any): CommandChain\n }\n}\n\n/// The command manager.\n/// This manager will manage all commands in editor.\n/// Generally, you don't need to use this manager directly.\n/// You can use the `$command` and `$commandAsync` in `@milkdown/utils` to create and call a command.\nexport class CommandManager {\n /// @internal\n #container = new Container()\n\n /// @internal\n #ctx: Ctx | null = null\n\n /// @internal\n setCtx = (ctx: Ctx) => {\n this.#ctx = ctx\n }\n\n get ctx() {\n return this.#ctx\n }\n\n /// Register a command into the manager.\n create<T>(meta: CmdKey<T>, value: Cmd<T>) {\n const slice = meta.create(this.#container.sliceMap)\n slice.set(value)\n return slice\n }\n\n /// Get a command from the manager.\n get<T extends CmdKey<any>>(slice: string): Cmd<InferParams<T>>\n get<T>(slice: CmdKey<T>): Cmd<T>\n get(slice: string | CmdKey<any>): Cmd<any>\n get(slice: string | CmdKey<any>): Cmd<any> {\n return this.#container.get(slice).get()\n }\n\n /// Remove a command from the manager.\n remove<T extends CmdKey<any>>(slice: string): void\n remove<T>(slice: CmdKey<T>): void\n remove(slice: string | CmdKey<any>): void\n remove(slice: string | CmdKey<any>): void {\n return this.#container.remove(slice)\n }\n\n /// Call a registered command.\n call<T extends CmdKey<any>>(slice: string, payload?: InferParams<T>): boolean\n call<T>(slice: CmdKey<T>, payload?: T): boolean\n call(slice: string | CmdKey<any>, payload?: any): boolean\n call(slice: string | CmdKey<any>, payload?: any): boolean {\n if (this.#ctx == null) throw callCommandBeforeEditorView()\n\n const cmd = this.get(slice)\n const command = cmd(payload)\n const view = this.#ctx.get(editorViewCtx)\n return command(view.state, view.dispatch, view)\n }\n\n /// Call an inline command.\n inline(command: Command) {\n if (this.#ctx == null) throw callCommandBeforeEditorView()\n const view = this.#ctx.get(editorViewCtx)\n return command(view.state, view.dispatch, view)\n }\n\n /// Create a command chain.\n /// All commands added by `pipe` will be run in order until one of them returns `true`.\n chain = (): CommandChain => {\n if (this.#ctx == null) throw callCommandBeforeEditorView()\n const ctx = this.#ctx\n const commands: Command[] = []\n const get = this.get.bind(this)\n\n const chains: CommandChain = {\n run: () => {\n const chained = chainCommands(...commands)\n const view = ctx.get(editorViewCtx)\n return chained(view.state, view.dispatch, view)\n },\n inline: (command: Command) => {\n commands.push(command)\n return chains\n },\n pipe: pipe.bind(this),\n }\n\n function pipe<T extends CmdKey<any>>(\n slice: string,\n payload?: InferParams<T>\n ): typeof chains\n function pipe<T>(slice: CmdKey<T>, payload?: T): typeof chains\n function pipe(slice: string | CmdKey<any>, payload?: any): typeof chains\n function pipe(slice: string | CmdKey<any>, payload?: any) {\n const cmd = get(slice)\n commands.push(cmd(payload))\n return chains\n }\n\n return chains\n }\n}\n\n/// Create a command key, which is a slice type that contains a command.\nexport function createCmdKey<T = undefined>(key = 'cmdKey'): CmdKey<T> {\n return createSlice((() => () => false) as Cmd<T>, key)\n}\n\n/// A slice which contains the command manager.\nexport const commandsCtx = createSlice(new CommandManager(), 'commands')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const commandsTimerCtx = createSlice([SchemaReady], 'commandsTimer')\n\n/// The timer which will be resolved when the commands plugin is ready.\nexport const CommandsReady = createTimer('CommandsReady')\n\n/// The commands plugin.\n/// This plugin will create a command manager.\n///\n/// This plugin will wait for the schema plugin.\nexport const commands: MilkdownPlugin = (ctx) => {\n const cmd = new CommandManager()\n cmd.setCtx(ctx)\n ctx\n .inject(commandsCtx, cmd)\n .inject(commandsTimerCtx, [SchemaReady])\n .record(CommandsReady)\n return async () => {\n await ctx.waitTimers(commandsTimerCtx)\n\n ctx.done(CommandsReady)\n\n return () => {\n ctx.remove(commandsCtx).remove(commandsTimerCtx).clearTimer(CommandsReady)\n }\n }\n}\n\nwithMeta(commands, {\n displayName: 'Commands',\n})\n", "import type { Command } from '@milkdown/prose/state'\n\nimport {\n createSlice,\n createTimer,\n type Ctx,\n type MilkdownPlugin,\n type SliceType,\n} from '@milkdown/ctx'\nimport { ctxCallOutOfScope } from '@milkdown/exception'\nimport {\n baseKeymap,\n chainCommands,\n deleteSelection,\n joinTextblockBackward,\n selectNodeBackward,\n} from '@milkdown/prose/commands'\nimport { undoInputRule } from '@milkdown/prose/inputrules'\n\nimport { SchemaReady } from './schema'\n\n/// @internal\nexport type KeymapItem = {\n key: string\n onRun: (ctx: Ctx) => Command\n priority?: number\n}\n\n/// @internal\nexport type KeymapKey = SliceType<KeymapItem>\n\nfunction overrideBaseKeymap(keymap: Record<string, Command>) {\n const handleBackspace = chainCommands(\n undoInputRule,\n deleteSelection,\n joinTextblockBackward,\n selectNodeBackward\n )\n keymap.Backspace = handleBackspace\n return keymap\n}\n\n/// The keymap manager.\n/// This class is used to manage the keymap.\nexport class KeymapManager {\n /// @internal\n #ctx: Ctx | null = null\n\n #keymap: KeymapItem[] = []\n\n /// @internal\n setCtx = (ctx: Ctx) => {\n this.#ctx = ctx\n }\n\n get ctx() {\n return this.#ctx\n }\n\n /// Add a keymap item.\n /// When not passing a priority, the priority will be 50.\n /// For the same key, the keymap with higher priority will be executed first.\n /// If the priority is the same, the keymap will be executed in the order of addition.\n add = (keymap: KeymapItem) => {\n this.#keymap.push(keymap)\n\n return () => {\n this.#keymap = this.#keymap.filter((item) => item !== keymap)\n }\n }\n\n /// Add an object of keymap items.\n addObjectKeymap = (keymaps: Record<string, Command | KeymapItem>) => {\n const remove: (() => void)[] = []\n Object.entries(keymaps).forEach(([key, command]) => {\n if (typeof command === 'function') {\n const keymapItem = {\n key,\n onRun: () => command,\n }\n\n this.#keymap.push(keymapItem)\n remove.push(() => {\n this.#keymap = this.#keymap.filter((item) => item !== keymapItem)\n })\n } else {\n this.#keymap.push(command)\n remove.push(() => {\n this.#keymap = this.#keymap.filter((item) => item !== command)\n })\n }\n })\n\n return () => {\n remove.forEach((fn) => fn())\n }\n }\n\n /// Add the prosemirror base keymap.\n addBaseKeymap = () => {\n const base = overrideBaseKeymap(baseKeymap)\n return this.addObjectKeymap(base)\n }\n\n /// @internal\n build = () => {\n const keymap: Record<string, KeymapItem[]> = {}\n this.#keymap.forEach((item) => {\n keymap[item.key] = [...(keymap[item.key] || []), item]\n })\n\n const output: Record<string, Command> = Object.fromEntries(\n Object.entries(keymap).map(([key, items]) => {\n const sortedItems = items.sort(\n (a, b) => (b.priority ?? 50) - (a.priority ?? 50)\n )\n\n const command: Command = (state, dispatch, view) => {\n const ctx = this.#ctx\n if (ctx == null) throw ctxCallOutOfScope()\n\n const commands = sortedItems.map((item) => item.onRun(ctx))\n const chained = chainCommands(...commands)\n\n return chained(state, dispatch, view)\n }\n\n return [key, command] as const\n })\n )\n\n return output\n }\n}\n\n/// A slice which stores the keymap manager.\nexport const keymapCtx = createSlice(new KeymapManager(), 'keymap')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const keymapTimerCtx = createSlice([SchemaReady], 'keymapTimer')\n\n/// The timer which will be resolved when the keymap plugin is ready.\nexport const KeymapReady = createTimer('KeymapReady')\n\n/// The keymap plugin.\n/// This plugin will create a keymap manager.\n///\n/// This plugin will wait for the schema plugin.\nexport const keymap: MilkdownPlugin = (ctx) => {\n const km = new KeymapManager()\n km.setCtx(ctx)\n ctx\n .inject(keymapCtx, km)\n .inject(keymapTimerCtx, [SchemaReady])\n .record(KeymapReady)\n\n return async () => {\n await ctx.waitTimers(keymapTimerCtx)\n\n ctx.done(KeymapReady)\n\n return () => {\n ctx.remove(keymapCtx).remove(keymapTimerCtx).clearTimer(KeymapReady)\n }\n }\n}\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { Parser } from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { ctxCallOutOfScope } from '@milkdown/exception'\nimport { ParserState } from '@milkdown/transformer'\n\nimport { withMeta } from '../__internal__'\nimport { remarkCtx } from './atoms'\nimport { SchemaReady, schemaCtx } from './schema'\n\n/// The timer which will be resolved when the parser plugin is ready.\nexport const ParserReady = createTimer('ParserReady')\n\nconst outOfScope = (() => {\n throw ctxCallOutOfScope()\n}) as Parser\n\n/// A slice which contains the parser.\nexport const parserCtx = createSlice(outOfScope, 'parser')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const parserTimerCtx = createSlice([] as TimerType[], 'parserTimer')\n\n/// The parser plugin.\n/// This plugin will create a parser.\n///\n/// This plugin will wait for the schema plugin.\nexport const parser: MilkdownPlugin = (ctx) => {\n ctx\n .inject(parserCtx, outOfScope)\n .inject(parserTimerCtx, [SchemaReady])\n .record(ParserReady)\n\n return async () => {\n await ctx.waitTimers(parserTimerCtx)\n const remark = ctx.get(remarkCtx)\n const schema = ctx.get(schemaCtx)\n\n ctx.set(parserCtx, ParserState.create(schema, remark))\n ctx.done(ParserReady)\n return () => {\n ctx.remove(parserCtx).remove(parserTimerCtx).clearTimer(ParserReady)\n }\n }\n}\n\nwithMeta(parser, {\n displayName: 'Parser',\n})\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { Serializer } from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { ctxCallOutOfScope } from '@milkdown/exception'\nimport { SerializerState } from '@milkdown/transformer'\n\nimport { withMeta } from '../__internal__'\nimport { remarkCtx } from './atoms'\nimport { SchemaReady, schemaCtx } from './schema'\n\n/// The timer which will be resolved when the serializer plugin is ready.\nexport const SerializerReady = createTimer('SerializerReady')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[SchemaReady]`.\nexport const serializerTimerCtx = createSlice(\n [] as TimerType[],\n 'serializerTimer'\n)\n\nconst outOfScope = (() => {\n throw ctxCallOutOfScope()\n}) as Serializer\n\n/// A slice which contains the serializer.\nexport const serializerCtx = createSlice<Serializer, 'serializer'>(\n outOfScope,\n 'serializer'\n)\n\n/// The serializer plugin.\n/// This plugin will create a serializer.\n///\n/// This plugin will wait for the schema plugin.\nexport const serializer: MilkdownPlugin = (ctx) => {\n ctx\n .inject(serializerCtx, outOfScope)\n .inject(serializerTimerCtx, [SchemaReady])\n .record(SerializerReady)\n\n return async () => {\n await ctx.waitTimers(serializerTimerCtx)\n const remark = ctx.get(remarkCtx)\n const schema = ctx.get(schemaCtx)\n\n ctx.set(serializerCtx, SerializerState.create(schema, remark))\n ctx.done(SerializerReady)\n\n return () => {\n ctx\n .remove(serializerCtx)\n .remove(serializerTimerCtx)\n .clearTimer(SerializerReady)\n }\n }\n}\n\nwithMeta(serializer, {\n displayName: 'Serializer',\n})\n", "import type { MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { Schema } from '@milkdown/prose/model'\nimport type { JSONRecord, Parser } from '@milkdown/transformer'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { docTypeError } from '@milkdown/exception'\nimport { customInputRules as createInputRules } from '@milkdown/prose'\nimport { keymap as createKeymap } from '@milkdown/prose/keymap'\nimport { DOMParser, Node } from '@milkdown/prose/model'\nimport { EditorState, Plugin, PluginKey } from '@milkdown/prose/state'\n\nimport { withMeta } from '../__internal__'\nimport { editorStateCtx, inputRulesCtx, prosePluginsCtx } from './atoms'\nimport { CommandsReady } from './commands'\nimport { keymapCtx, KeymapReady } from './keymap'\nimport { ParserReady, parserCtx } from './parser'\nimport { schemaCtx } from './schema'\nimport { SerializerReady } from './serializer'\n\n/// @internal\nexport type DefaultValue =\n | string\n | { type: 'html'; dom: HTMLElement }\n | { type: 'json'; value: JSONRecord }\ntype StateOptions = Parameters<typeof EditorState.create>[0]\ntype StateOptionsOverride = (prev: StateOptions) => StateOptions\n\n/// A slice which contains the default value of the editor.\n/// Can be markdown string, html string or json.\nexport const defaultValueCtx = createSlice('' as DefaultValue, 'defaultValue')\n\n/// A slice which contains the options which is used to create the editor state.\nexport const editorStateOptionsCtx = createSlice<StateOptionsOverride>(\n (x) => x,\n 'stateOptions'\n)\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[ParserReady, SerializerReady, CommandsReady]`.\nexport const editorStateTimerCtx = createSlice(\n [] as TimerType[],\n 'editorStateTimer'\n)\n\n/// The timer which will be resolved when the editor state plugin is ready.\nexport const EditorStateReady = createTimer('EditorStateReady')\n\n/// @internal\nexport function getDoc(\n defaultValue: DefaultValue,\n parser: Parser,\n schema: Schema\n) {\n if (typeof defaultValue === 'string') return parser(defaultValue)\n\n if (defaultValue.type === 'html')\n return DOMParser.fromSchema(schema).parse(defaultValue.dom)\n\n if (defaultValue.type === 'json')\n return Node.fromJSON(schema, defaultValue.value)\n\n throw docTypeError(defaultValue)\n}\n\nconst key = new PluginKey('MILKDOWN_STATE_TRACKER')\n\n/// The editor state plugin.\n/// This plugin will create a prosemirror editor state.\n///\n/// This plugin will wait for the parser plugin, serializer plugin and commands plugin.\nexport const editorState: MilkdownPlugin = (ctx) => {\n ctx\n .inject(defaultValueCtx, '')\n .inject(editorStateCtx, {} as EditorState)\n .inject(editorStateOptionsCtx, (x) => x)\n .inject(editorStateTimerCtx, [\n ParserReady,\n SerializerReady,\n CommandsReady,\n KeymapReady,\n ])\n .record(EditorStateReady)\n\n return async () => {\n await ctx.waitTimers(editorStateTimerCtx)\n\n const schema = ctx.get(schemaCtx)\n const parser = ctx.get(parserCtx)\n const rules = ctx.get(inputRulesCtx)\n const optionsOverride = ctx.get(editorStateOptionsCtx)\n const prosePlugins = ctx.get(prosePluginsCtx)\n const defaultValue = ctx.get(defaultValueCtx)\n const doc = getDoc(defaultValue, parser, schema)\n const km = ctx.get(keymapCtx)\n const disposeBaseKeymap = km.addBaseKeymap()\n\n const plugins = [\n ...prosePlugins,\n new Plugin({\n key,\n state: {\n init: () => {\n // do nothing\n },\n apply: (_tr, _value, _oldState, newState) => {\n ctx.set(editorStateCtx, newState)\n },\n },\n }),\n createInputRules({ rules }),\n createKeymap(km.build()),\n ]\n\n ctx.set(prosePluginsCtx, plugins)\n\n const options = optionsOverride({\n schema,\n doc,\n plugins,\n })\n\n const state = EditorState.create(options)\n ctx.set(editorStateCtx, state)\n ctx.done(EditorStateReady)\n\n return () => {\n disposeBaseKeymap()\n ctx\n .remove(defaultValueCtx)\n .remove(editorStateCtx)\n .remove(editorStateOptionsCtx)\n .remove(editorStateTimerCtx)\n .clearTimer(EditorStateReady)\n }\n }\n}\n\nwithMeta(editorState, {\n displayName: 'EditorState',\n})\n", "import type { Slice } from '@milkdown/prose/model'\nimport type { EditorView } from '@milkdown/prose/view'\n\nimport { createSlice, createTimer, type MilkdownPlugin } from '@milkdown/ctx'\n\nimport { withMeta } from '../__internal__'\nimport { SchemaReady } from './schema'\n\n/// A paste rule function which takes a slice and returns a new slice.\nexport type PasteRule = {\n /// The function to run the paste rule.\n run: (slice: Slice, view: EditorView, isPlainText: boolean) => Slice\n /// The priority of the paste rule. Higher priority rules will be run first. Default is 50.\n priority?: number\n}\n\n/// A slice which contains the paste rules.\nexport const pasteRulesCtx = createSlice([] as PasteRule[], 'pasteRule')\n\n/// A slice which stores timers that need to be waited for before starting to run the paste rule plugin.\n/// By default, it's `[SchemaReady]`.\nexport const pasteRulesTimerCtx = createSlice([SchemaReady], 'pasteRuleTimer')\n\n/// The timer which will be resolved when the paste rule plugin is ready.\nexport const PasteRulesReady = createTimer('PasteRuleReady')\n\n/// The paste rule plugin.\n/// This plugin will collect the paste rules to the editor view.\n///\n/// This plugin will wait for the schema plugin.\nexport const pasteRule: MilkdownPlugin = (ctx) => {\n ctx\n .inject(pasteRulesCtx, [])\n .inject(pasteRulesTimerCtx, [SchemaReady])\n .record(PasteRulesReady)\n\n return async () => {\n await ctx.waitTimers(pasteRulesTimerCtx)\n\n ctx.done(PasteRulesReady)\n\n return () => {\n ctx\n .remove(pasteRulesCtx)\n .remove(pasteRulesTimerCtx)\n .clearTimer(PasteRulesReady)\n }\n }\n}\n\nwithMeta(pasteRule, {\n displayName: 'PasteRule',\n})\n", "import type { Ctx, MilkdownPlugin, TimerType } from '@milkdown/ctx'\nimport type { DirectEditorProps } from '@milkdown/prose/view'\n\nimport { createSlice, createTimer } from '@milkdown/ctx'\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { EditorView } from '@milkdown/prose/view'\n\nimport { withMeta } from '../__internal__'\nimport {\n editorStateCtx,\n editorViewCtx,\n markViewCtx,\n nodeViewCtx,\n prosePluginsCtx,\n} from './atoms'\nimport { EditorStateReady } from './editor-state'\nimport { InitReady } from './init'\nimport { pasteRulesCtx, PasteRulesReady } from './paste-rule'\n\ntype EditorOptions = Omit<DirectEditorProps, 'state'>\n\ntype RootType = Node | undefined | null | string\n\n/// The timer which will be resolved when the editor view plugin is ready.\nexport const EditorViewReady = createTimer('EditorViewReady')\n\n/// A slice which stores timers that need to be waited for before starting to run the plugin.\n/// By default, it's `[EditorStateReady]`.\nexport const editorViewTimerCtx = createSlice(\n [] as TimerType[],\n 'editorViewTimer'\n)\n\n/// A slice which contains the editor view options which will be passed to the editor view.\nexport const editorViewOptionsCtx = createSlice(\n {} as Partial<EditorOptions>,\n 'editorViewOptions'\n)\n\n/// A slice which contains the value to get the root element.\n/// Can be a selector string, a node or null.\n/// If it's null, the editor will be created in the body.\nexport const rootCtx = createSlice(null as RootType, 'root')\n\n/// A slice which contains the actually root element.\nexport const rootDOMCtx = createSlice(null as unknown as HTMLElement, 'rootDOM')\n\n/// A slice which contains the root element attributes.\n/// You can add attributes to the root element by this slice.\nexport const rootAttrsCtx = createSlice(\n {} as Record<string, string>,\n 'rootAttrs'\n)\n\nfunction createViewContainer(root: Node, ctx: Ctx) {\n const container = document.createElement('div')\n container.className = 'milkdown'\n root.appendChild(container)\n ctx.set(rootDOMCtx, container)\n\n const attrs = ctx.get(rootAttrsCtx)\n Object.entries(attrs).forEach(([key, value]) =>\n container.setAttribute(key, value)\n )\n\n return container\n}\n\nfunction prepareViewDom(dom: Element) {\n dom.classList.add('editor')\n dom.setAttribute('role', 'textbox')\n}\n\nconst key = new PluginKey('MILKDOWN_VIEW_CLEAR')\n\n/// The editor view plugin.\n/// This plugin will create an editor view.\n///\n/// This plugin will wait for the editor state plugin.\nexport const editorView: MilkdownPlugin = (ctx) => {\n ctx\n .inject(rootCtx, document.body)\n .inject(editorViewCtx, {} as EditorView)\n .inject(editorViewOptionsCtx, {})\n .inject(rootDOMCtx, null as unknown as HTMLElement)\n .inject(rootAttrsCtx, {})\n .inject(editorViewTimerCtx, [EditorStateReady, PasteRulesReady])\n .record(EditorViewReady)\n\n return async () => {\n await ctx.wait(InitReady)\n\n const root = ctx.get(rootCtx) || document.body\n const el = typeof root === 'string' ? document.querySelector(root) : root\n\n ctx.update(prosePluginsCtx, (xs) => [\n new Plugin({\n key,\n view: (editorView) => {\n const container = el ? createViewContainer(el, ctx) : undefined\n\n const handleDOM = () => {\n if (container && el) {\n const editor = editorView.dom\n el.replaceChild(container, editor)\n container.appendChild(editor)\n }\n }\n handleDOM()\n return {\n destroy: () => {\n if (container?.parentNode)\n container?.parentNode.replaceChild(editorView.dom, container)\n\n container?.remove()\n },\n }\n },\n }),\n ...xs,\n ])\n\n await ctx.waitTimers(editorViewTimerCtx)\n\n const state = ctx.get(editorStateCtx)\n const options = ctx.get(editorViewOptionsCtx)\n const nodeViews = Object.fromEntries(ctx.get(nodeViewCtx))\n const markViews = Object.fromEntries(ctx.get(markViewCtx))\n const view = new EditorView(el as Node, {\n state,\n nodeViews,\n markViews,\n transformPasted: (slice, view, isPlainText) => {\n ctx\n .get(pasteRulesCtx)\n .sort((a, b) => (b.priority ?? 50) - (a.priority ?? 50))\n .map((rule) => rule.run)\n .forEach((runner) => {\n slice = runner(slice, view, isPlainText)\n })\n\n return slice\n },\n ...options,\n })\n prepareViewDom(view.dom)\n ctx.set(editorViewCtx, view)\n ctx.done(EditorViewReady)\n\n return () => {\n view?.destroy()\n ctx\n .remove(rootCtx)\n .remove(editorViewCtx)\n .remove(editorViewOptionsCtx)\n .remove(rootDOMCtx)\n .remove(rootAttrsCtx)\n .remove(editorViewTimerCtx)\n .clearTimer(EditorViewReady)\n }\n }\n}\n\nwithMeta(editorView, {\n displayName: 'EditorView',\n})\n", "import type { CtxRunner, MilkdownPlugin, Telemetry } from '@milkdown/ctx'\n\nimport { Clock, Container, Ctx } from '@milkdown/ctx'\n\nimport type { Config } from '../internal-plugin'\n\nimport {\n commands,\n config,\n editorState,\n editorView,\n init,\n keymap,\n parser,\n pasteRule,\n schema,\n serializer,\n} from '../internal-plugin'\n\n/// The status of the editor.\nexport enum EditorStatus {\n /// The editor is not initialized.\n Idle = 'Idle',\n /// The editor is creating.\n OnCreate = 'OnCreate',\n /// The editor has been created and ready to use.\n Created = 'Created',\n /// The editor is destroying.\n OnDestroy = 'OnDestroy',\n /// The editor has been destroyed.\n Destroyed = 'Destroyed',\n}\n\n/// Type for the callback called when editor status changed.\nexport type OnStatusChange = (status: EditorStatus) => void\n\ntype EditorPluginStore = Map<\n MilkdownPlugin,\n {\n ctx: Ctx | undefined\n handler: CtxRunner | undefined\n cleanup: ReturnType<CtxRunner>\n }\n>\n\n/// The milkdown editor class.\nexport class Editor {\n /// Create a new editor instance.\n static make() {\n return new Editor()\n }\n\n /// @internal\n #enableInspector = false\n /// @internal\n #status = EditorStatus.Idle\n /// @internal\n #configureList: Config[] = []\n /// @internal\n #onStatusChange: OnStatusChange = () => undefined\n\n /// @internal\n readonly #container = new Container()\n /// @internal\n readonly #clock = new Clock()\n\n /// @internal\n readonly #usrPluginStore: EditorPluginStore = new Map()\n\n /// @internal\n readonly #sysPluginStore: EditorPluginStore = new Map()\n\n /// @internal\n readonly #ctx = new Ctx(this.#container, this.#clock)\n\n /// @internal\n readonly #loadInternal = () => {\n const configPlugin = config(async (ctx) => {\n await Promise.all(\n this.#configureList.map((fn) => Promise.resolve(fn(ctx)))\n )\n })\n const internalPlugins = [\n schema,\n parser,\n serializer,\n commands,\n keymap,\n pasteRule,\n editorState,\n editorView,\n init(this),\n configPlugin,\n ]\n this.#prepare(internalPlugins, this.#sysPluginStore)\n }\n\n /// @internal\n readonly #prepare = (plugins: MilkdownPlugin[], store: EditorPluginStore) => {\n plugins.forEach((plugin) => {\n const ctx = this.#ctx.produce(\n this.#enableInspector ? plugin.meta : undefined\n )\n const handler = plugin(ctx)\n store.set(plugin, { ctx, handler, cleanup: undefined })\n })\n }\n\n /// @internal\n readonly #cleanup = (plugins: MilkdownPlugin[], remove = false) => {\n return Promise.all(\n [plugins].flat().map(async (plugin) => {\n const loader = this.#usrPluginStore.get(plugin)\n const cleanup = loader?.cleanup\n if (remove) this.#usrPluginStore.delete(plugin)\n else\n this.#usrPluginStore.set(plugin, {\n ctx: undefined,\n handler: undefined,\n cleanup: undefined,\n })\n\n if (typeof cleanup === 'function') return cleanup()\n\n return cleanup\n })\n )\n }\n\n /// @internal\n readonly #cleanupInternal = async () => {\n await Promise.all(\n [...this.#sysPluginStore.entries()].map(async ([_, { cleanup }]) => {\n if (typeof cleanup === 'function') return cleanup()\n\n return cleanup\n })\n )\n this.#sysPluginStore.clear()\n }\n\n /// @internal\n readonly #setStatus = (status: EditorStatus) => {\n this.#status = status\n this.#onStatusChange(status)\n }\n\n /// @internal\n readonly #loadPluginInStore = (store: EditorPluginStore) => {\n return [...store.entries()].map(async ([key, loader]) => {\n const { ctx, handler } = loader\n if (!handler) return\n\n const cleanup = await handler()\n\n store.set(key, { ctx, handler, cleanup })\n })\n }\n\n /// Get the ctx of the editor.\n get ctx() {\n return this.#ctx\n }\n\n /// Get the status of the editor.\n get status() {\n return this.#status\n }\n\n /// Enable the inspector for the editor.\n /// You can also pass `false` to disable the inspector.\n readonly enableInspector = (enable = true) => {\n this.#enableInspector = enable\n\n return this\n }\n\n /// Subscribe to the status change event for the editor.\n /// The new subscription will replace the old one.\n readonly onStatusChange = (onChange: OnStatusChange) => {\n this.#onStatusChange = onChange\n return this\n }\n\n /// Add a config for the editor.\n readonly config = (configure: Config) => {\n this.#configureList.push(configure)\n return this\n }\n\n /// Remove a config for the editor.\n readonly removeConfig = (configure: Config) => {\n this.#configureList = this.#configureList.filter((x) => x !== configure)\n return this\n }\n\n /// Use a plugin or a list of plugins for the editor.\n readonly use = (plugins: MilkdownPlugin | MilkdownPlugin[]) => {\n const _plugins = [plugins].flat()\n _plugins.flat().forEach((plugin) => {\n this.#usrPluginStore.set(plugin, {\n ctx: undefined,\n handler: undefined,\n cleanup: undefined,\n })\n })\n\n if (this.#status === EditorStatus.Created)\n this.#prepare(_plugins, this.#usrPluginStore)\n\n return this\n }\n\n /// Remove a plugin or a list of plugins from the editor.\n readonly remove = async (\n plugins: MilkdownPlugin | MilkdownPlugin[]\n ): Promise<Editor> => {\n if (this.#status === EditorStatus.OnCreate) {\n console.warn(\n '[Milkdown]: You are trying to remove plugins when the editor is creating, this is not recommended, please check your code.'\n )\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(this.remove(plugins))\n }, 50)\n })\n }\n\n await this.#cleanup([plugins].flat(), true)\n return this\n }\n\n /// Create the editor with current config and plugins.\n /// If the editor is already created, it will be recreated.\n readonly create = async (): Promise<Editor> => {\n if (this.#status === EditorStatus.OnCreate) return this\n\n if (this.#status === EditorStatus.Created) await this.destroy()\n\n this.#setStatus(EditorStatus.OnCreate)\n\n this.#loadInternal()\n this.#prepare([...this.#usrPluginStore.keys()], this.#usrPluginStore)\n\n await Promise.all(\n [\n this.#loadPluginInStore(this.#sysPluginStore),\n this.#loadPluginInStore(this.#usrPluginStore),\n ].flat()\n )\n\n this.#setStatus(EditorStatus.Created)\n return this\n }\n\n /// Destroy the editor.\n /// If you want to clear all plugins, set `clearPlugins` to `true`.\n readonly destroy = async (clearPlugins = false): Promise<Editor> => {\n if (\n this.#status === EditorStatus.Destroyed ||\n this.#status === EditorStatus.OnDestroy\n )\n return this\n\n if (this.#status === EditorStatus.OnCreate) {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(this.destroy(clearPlugins))\n }, 50)\n })\n }\n\n if (clearPlugins) this.#configureList = []\n\n this.#setStatus(EditorStatus.OnDestroy)\n await this.#cleanup([...this.#usrPluginStore.keys()], clearPlugins)\n await this.#cleanupInternal()\n\n this.#setStatus(EditorStatus.Destroyed)\n return this\n }\n\n /// Call an action with the ctx of the editor.\n /// This method should be used after the editor is created.\n readonly action = <T>(action: (ctx: Ctx) => T) => action(this.#ctx)\n\n /// Get inspections of plugins in editor.\n /// Make sure you have enabled inspector by `editor.enableInspector()` before calling this method.\n readonly inspect = (): Telemetry[] => {\n if (!this.#enableInspector) {\n console.warn(\n '[Milkdown]: You are trying to collect inspection when inspector is disabled, please enable inspector by `editor.enableInspector()` first.'\n )\n return []\n }\n return [...this.#sysPluginStore.values(), ...this.#usrPluginStore.values()]\n .map(({ ctx }) => ctx?.inspector?.read())\n .filter((x): x is Telemetry => Boolean(x))\n }\n}\n", "/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('../index.js').InlineMath} InlineMath\n * @typedef {import('../index.js').Math} Math\n *\n * @typedef ToOptions\n * Configuration.\n * @property {boolean | null | undefined} [singleDollarTextMath=true]\n * Whether to support math (text) with a single dollar (default: `true`).\n *\n * Single dollars work in Pandoc and many other places, but often interfere\n * with \u201Cnormal\u201D dollars in text.\n * If you turn this off, you can still use two or more dollars for text math.\n */\n\nimport {ok as assert} from 'devlop'\nimport {longestStreak} from 'longest-streak'\n\n/**\n * Create an extension for `mdast-util-from-markdown`.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function mathFromMarkdown() {\n return {\n enter: {\n mathFlow: enterMathFlow,\n mathFlowFenceMeta: enterMathFlowMeta,\n mathText: enterMathText\n },\n exit: {\n mathFlow: exitMathFlow,\n mathFlowFence: exitMathFlowFence,\n mathFlowFenceMeta: exitMathFlowMeta,\n mathFlowValue: exitMathData,\n mathText: exitMathText,\n mathTextData: exitMathData\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathFlow(token) {\n /** @type {HastElement} */\n const code = {\n type: 'element',\n tagName: 'code',\n properties: {className: ['language-math', 'math-display']},\n children: []\n }\n this.enter(\n {\n type: 'math',\n meta: null,\n value: '',\n data: {hName: 'pre', hChildren: [code]}\n },\n token\n )\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathFlowMeta() {\n this.buffer()\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlowMeta() {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'math')\n node.meta = data\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlowFence() {\n // Exit if this is the closing fence.\n if (this.data.mathFlowInside) return\n this.buffer()\n this.data.mathFlowInside = true\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathFlow(token) {\n const data = this.resume().replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'math')\n this.exit(token)\n node.value = data\n // @ts-expect-error: we defined it in `enterMathFlow`.\n const code = /** @type {HastElement} */ (node.data.hChildren[0])\n assert(code.type === 'element')\n assert(code.tagName === 'code')\n code.children.push({type: 'text', value: data})\n this.data.mathFlowInside = undefined\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function enterMathText(token) {\n this.enter(\n {\n type: 'inlineMath',\n value: '',\n data: {\n hName: 'code',\n hProperties: {className: ['language-math', 'math-inline']},\n hChildren: []\n }\n },\n token\n )\n this.buffer()\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathText(token) {\n const data = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineMath')\n this.exit(token)\n node.value = data\n const children = /** @type {Array<HastElementContent>} */ (\n // @ts-expect-error: we defined it in `enterMathFlow`.\n node.data.hChildren\n )\n children.push({type: 'text', value: data})\n }\n\n /**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\n function exitMathData(token) {\n this.config.enter.data.call(this, token)\n this.config.exit.data.call(this, token)\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown`.\n *\n * @param {ToOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function mathToMarkdown(options) {\n let single = (options || {}).singleDollarTextMath\n\n if (single === null || single === undefined) {\n single = true\n }\n\n inlineMath.peek = inlineMathPeek\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'mathFlowMeta'},\n {character: '\\n', inConstruct: 'mathFlowMeta'},\n {\n character: '$',\n after: single ? undefined : '\\\\$',\n inConstruct: 'phrasing'\n },\n {character: '$', inConstruct: 'mathFlowMeta'},\n {atBreak: true, character: '$', after: '\\\\$'}\n ],\n handlers: {math, inlineMath}\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Math} node\n */\n // Note: fixing this code? Please also fix the similar code for code:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/main/lib/handle/code.js>\n function math(node, _, state, info) {\n const raw = node.value || ''\n const tracker = state.createTracker(info)\n const sequence = '$'.repeat(Math.max(longestStreak(raw, '$') + 1, 2))\n const exit = state.enter('mathFlow')\n let value = tracker.move(sequence)\n\n if (node.meta) {\n const subexit = state.enter('mathFlowMeta')\n value += tracker.move(\n state.safe(node.meta, {\n after: '\\n',\n before: value,\n encode: ['$'],\n ...tracker.current()\n })\n )\n subexit()\n }\n\n value += tracker.move('\\n')\n\n if (raw) {\n value += tracker.move(raw + '\\n')\n }\n\n value += tracker.move(sequence)\n exit()\n return value\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineMath} node\n */\n // Note: fixing this code? Please also fix the similar code for inline code:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/main/lib/handle/inline-code.js>\n function inlineMath(node, _, state) {\n let value = node.value || ''\n let size = 1\n\n if (!single) size++\n\n // If there is a single dollar sign on its own in the math, use a fence of\n // two.\n // If there are two in a row, use one.\n while (\n new RegExp('(^|[^$])' + '\\\\$'.repeat(size) + '([^$]|$)').test(value)\n ) {\n size++\n }\n\n const sequence = '$'.repeat(size)\n\n // If this is not just spaces or eols (tabs don\u2019t count), and either the\n // first and last character are a space or eol, or the first or last\n // character are dollar signs, then pad with spaces.\n if (\n // Contains non-space.\n /[^ \\r\\n]/.test(value) &&\n // Starts with space and ends with space.\n ((/^[ \\r\\n]/.test(value) && /[ \\r\\n]$/.test(value)) ||\n // Starts or ends with dollar.\n /^\\$|\\$$/.test(value))\n ) {\n value = ' ' + value + ' '\n }\n\n let index = -1\n\n // We have a potential problem: certain characters after eols could result in\n // blocks being seen.\n // For example, if someone injected the string `'\\n# b'`, then that would\n // result in an ATX heading.\n // We can\u2019t escape characters in `inlineMath`, but because eols are\n // transformed to spaces when going from markdown to HTML anyway, we can swap\n // them out.\n while (++index < state.unsafe.length) {\n const pattern = state.unsafe[index]\n\n // Only look for `atBreak`s.\n // Btw: note that `atBreak` patterns will always start the regex at LF or\n // CR.\n if (!pattern.atBreak) continue\n\n const expression = state.compilePattern(pattern)\n /** @type {RegExpExecArray | null} */\n let match\n\n while ((match = expression.exec(value))) {\n let position = match.index\n\n // Support CRLF (patterns only look for one of the characters).\n if (\n value.codePointAt(position) === 10 /* `\\n` */ &&\n value.codePointAt(position - 1) === 13 /* `\\r` */\n ) {\n position--\n }\n\n value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n }\n }\n\n return sequence + value + sequence\n }\n\n /**\n * @returns {string}\n */\n function inlineMathPeek() {\n return '$'\n }\n}\n", "/**\n * @import {Construct, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const mathFlow = {\n tokenize: tokenizeMathFenced,\n concrete: true,\n name: 'mathFlow'\n};\n\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeMathFenced(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n const initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let sizeOpen = 0;\n return start;\n\n /**\n * Start of math.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('mathFlow');\n effects.enter('mathFlowFence');\n effects.enter('mathFlowFenceSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 36) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n if (sizeOpen < 2) {\n return nok(code);\n }\n effects.exit('mathFlowFenceSequence');\n return factorySpace(effects, metaBefore, \"whitespace\")(code);\n }\n\n /**\n * In opening fence, before meta.\n *\n * ```markdown\n * > | $$asciimath\n * ^\n * | x < y\n * | $$\n * ```\n *\n * @type {State}\n */\n\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return metaAfter(code);\n }\n effects.enter('mathFlowFenceMeta');\n effects.enter(\"chunkString\", {\n contentType: \"string\"\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | $$asciimath\n * ^\n * | x < y\n * | $$\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit(\"chunkString\");\n effects.exit('mathFlowFenceMeta');\n return metaAfter(code);\n }\n if (code === 36) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * After meta.\n *\n * ```markdown\n * > | $$\n * ^\n * | \\frac{1}{2}\n * | $$\n * ```\n *\n * @type {State}\n */\n function metaAfter(code) {\n // Guaranteed to be eol/eof.\n effects.exit('mathFlowFence');\n if (self.interrupt) {\n return ok(code);\n }\n return effects.attempt(nonLazyContinuation, beforeNonLazyContinuation, after)(code);\n }\n\n /**\n * After eol/eof in math, at a non-lazy closing fence or content.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeNonLazyContinuation(code) {\n return effects.attempt({\n tokenize: tokenizeClosingFence,\n partial: true\n }, after, contentStart)(code);\n }\n\n /**\n * Before math content, definitely not before a closing fence.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return (initialSize ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialSize + 1) : beforeContentChunk)(code);\n }\n\n /**\n * Before math content, after optional prefix.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(nonLazyContinuation, beforeNonLazyContinuation, after)(code);\n }\n effects.enter('mathFlowValue');\n return contentChunk(code);\n }\n\n /**\n * In math content.\n *\n * ```markdown\n * | $$\n * > | \\frac{1}{2}\n * ^\n * | $$\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('mathFlowValue');\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After math (ha!).\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('mathFlow');\n return ok(code);\n }\n\n /** @type {Tokenizer} */\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0;\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n */\n return factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n effects.enter('mathFlowFence');\n effects.enter('mathFlowFenceSequence');\n return sequenceClose(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === 36) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size < sizeOpen) {\n return nok(code);\n }\n effects.exit('mathFlowFenceSequence');\n return factorySpace(effects, afterSequenceClose, \"whitespace\")(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | $$\n * | \\frac{1}{2}\n * > | $$\n * ^\n * ```\n *\n * @type {State}\n */\n function afterSequenceClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('mathFlowFence');\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (code === null) {\n return ok(code);\n }\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return lineStart;\n }\n\n /** @type {State} */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}", "/**\n * @import {Options} from 'micromark-extension-math'\n * @import {Construct, Previous, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n// To do: next major: clean spaces in HTML compiler.\n// This has to be coordinated together with `mdast-util-math`.\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * @param {Options | null | undefined} [options={}]\n * Configuration (default: `{}`).\n * @returns {Construct}\n * Construct.\n */\nexport function mathText(options) {\n const options_ = options || {};\n let single = options_.singleDollarTextMath;\n if (single === null || single === undefined) {\n single = true;\n }\n return {\n tokenize: tokenizeMathText,\n resolve: resolveMathText,\n previous,\n name: 'mathText'\n };\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeMathText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of math (text).\n *\n * ```markdown\n * > | $a$\n * ^\n * > | \\$a$\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('mathText');\n effects.enter('mathTextSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | $a$\n * ^\n * ```\n *\n * @type {State}\n */\n\n function sequenceOpen(code) {\n if (code === 36) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n\n // Not enough markers in the sequence.\n if (sizeOpen < 2 && !single) {\n return nok(code);\n }\n effects.exit('mathTextSequence');\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | $a$\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 36) {\n token = effects.enter('mathTextSequence');\n size = 0;\n return sequenceClose(code);\n }\n\n // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n if (markdownLineEnding(code)) {\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return between;\n }\n\n // Data.\n effects.enter('mathTextData');\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | $a$\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 36 || markdownLineEnding(code)) {\n effects.exit('mathTextData');\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n\n function sequenceClose(code) {\n // More.\n if (code === 36) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('mathTextSequence');\n effects.exit('mathText');\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = 'mathTextData';\n return data(code);\n }\n }\n}\n\n/** @type {Resolver} */\nfunction resolveMathText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'mathTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = 'mathTextPadding';\n events[headEnterIndex][1].type = 'mathTextPadding';\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n events[enter][1].type = 'mathTextData';\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 36 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}", "/**\n * @import {Options} from 'micromark-extension-math'\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { mathFlow } from './math-flow.js';\nimport { mathText } from './math-text.js';\n\n/**\n * Create an extension for `micromark` to enable math syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration (default: `{}`).\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable math syntax.\n */\nexport function math(options) {\n return {\n flow: {\n [36]: mathFlow\n },\n text: {\n [36]: mathText(options)\n }\n };\n}", "/**\n * This is the ParseError class, which is the main error thrown by KaTeX\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n *\n * If possible, a caller should provide a Token or ParseNode with information\n * about where in the source string the problem occurred.\n */\nclass ParseError extends Error {\n // Error start position based on passed-in Token or ParseNode.\n\n // Length of affected text based on passed-in Token or ParseNode.\n\n // The underlying error message without any context added.\n constructor(message,\n // The error message\n token) {\n var error = \"KaTeX parse error: \" + message;\n var start;\n var end;\n var loc = token && token.loc;\n if (loc && loc.start <= loc.end) {\n // If we have the input and a position, make the error a bit fancier\n // Get the input\n var input = loc.lexer.input;\n // Prepend some information\n start = loc.start;\n end = loc.end;\n if (start === input.length) {\n error += \" at end of input: \";\n } else {\n error += \" at position \" + (start + 1) + \": \";\n }\n // Underline token in question using combining underscores\n var underlined = input.slice(start, end).replace(/[^]/g, \"$&\\u0332\");\n // Extract some context from the input and add it to the error\n var left;\n if (start > 15) {\n left = \"\u2026\" + input.slice(start - 15, start);\n } else {\n left = input.slice(0, start);\n }\n var right;\n if (end + 15 < input.length) {\n right = input.slice(end, end + 15) + \"\u2026\";\n } else {\n right = input.slice(end);\n }\n error += left + underlined + right;\n }\n super(error);\n this.name = \"ParseError\";\n Object.setPrototypeOf(this, ParseError.prototype);\n this.position = start;\n if (start != null && end != null) {\n this.length = end - start;\n }\n this.rawMessage = message;\n }\n}\n\n/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\nvar uppercase = /([A-Z])/g;\nvar hyphenate = str => str.replace(uppercase, \"-$1\").toLowerCase();\nvar ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\"\n};\nvar ESCAPE_REGEX = /[&><\"']/g;\n/**\n * Escapes text to prevent scripting attacks.\n */\nvar escape = text => String(text).replace(ESCAPE_REGEX, match => ESCAPE_LOOKUP[match]);\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nvar getBaseElem = group => {\n if (group.type === \"ordgroup\") {\n if (group.body.length === 1) {\n return getBaseElem(group.body[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.body.length === 1) {\n return getBaseElem(group.body[0]);\n } else {\n return group;\n }\n } else if (group.type === \"font\") {\n return getBaseElem(group.body);\n } else {\n return group;\n }\n};\nvar characterNodesTypes = new Set([\"mathord\", \"textord\", \"atom\"]);\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nvar isCharacterBox = group => characterNodesTypes.has(getBaseElem(group).type);\n/**\n * Return the protocol of a URL, or \"_relative\" if the URL does not specify a\n * protocol (and thus is relative), or `null` if URL has invalid protocol\n * (so should be outright rejected).\n */\nvar protocolFromUrl = url => {\n // Check for possible leading protocol.\n // https://url.spec.whatwg.org/#url-parsing strips leading whitespace\n // (U+20) or C0 control (U+00-U+1F) characters.\n // eslint-disable-next-line no-control-regex\n var protocol = /^[\\x00-\\x20]*([^\\\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(url);\n if (!protocol) {\n return \"_relative\";\n }\n // Reject weird colons\n if (protocol[2] !== \":\") {\n return null;\n }\n // Reject invalid characters in scheme according to\n // https://datatracker.ietf.org/doc/html/rfc3986#section-3.1\n if (!/^[a-zA-Z][a-zA-Z0-9+\\-.]*$/.test(protocol[1])) {\n return null;\n }\n // Lowercase the protocol\n return protocol[1].toLowerCase();\n};\n\n/* eslint no-console:0 */\n// TODO: automatically generate documentation\n// TODO: check all properties on Settings exist\n// TODO: check the type of a property on Settings matches\nvar SETTINGS_SCHEMA = {\n displayMode: {\n type: \"boolean\",\n 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.\",\n cli: \"-d, --display-mode\"\n },\n output: {\n type: {\n enum: [\"htmlAndMathml\", \"html\", \"mathml\"]\n },\n description: \"Determines the markup language of the output.\",\n cli: \"-F, --format <type>\"\n },\n leqno: {\n type: \"boolean\",\n description: \"Render display math in leqno style (left-justified tags).\"\n },\n fleqn: {\n type: \"boolean\",\n description: \"Render display math flush left.\"\n },\n throwOnError: {\n type: \"boolean\",\n default: true,\n cli: \"-t, --no-throw-on-error\",\n cliDescription: \"Render errors (in the color given by --error-color) ins\" + \"tead of throwing a ParseError exception when encountering an error.\"\n },\n errorColor: {\n type: \"string\",\n default: \"#cc0000\",\n cli: \"-c, --error-color <color>\",\n cliDescription: \"A color string given in the format 'rgb' or 'rrggbb' \" + \"(no #). This option determines the color of errors rendered by the \" + \"-t option.\",\n cliProcessor: color => \"#\" + color\n },\n macros: {\n type: \"object\",\n cli: \"-m, --macro <def>\",\n cliDescription: \"Define custom macro of the form '\\\\foo:expansion' (use \" + \"multiple -m arguments for multiple macros).\",\n cliDefault: [],\n cliProcessor: (def, defs) => {\n defs.push(def);\n return defs;\n }\n },\n minRuleThickness: {\n type: \"number\",\n 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`.\",\n processor: t => Math.max(0, t),\n cli: \"--min-rule-thickness <size>\",\n cliProcessor: parseFloat\n },\n colorIsTextColor: {\n type: \"boolean\",\n description: \"Makes \\\\color behave like LaTeX's 2-argument \\\\textcolor, \" + \"instead of LaTeX's one-argument \\\\color mode change.\",\n cli: \"-b, --color-is-text-color\"\n },\n strict: {\n type: [{\n enum: [\"warn\", \"ignore\", \"error\"]\n }, \"boolean\", \"function\"],\n description: \"Turn on strict / LaTeX faithfulness mode, which throws an \" + \"error if the input uses features that are not supported by LaTeX.\",\n cli: \"-S, --strict\",\n cliDefault: false\n },\n trust: {\n type: [\"boolean\", \"function\"],\n description: \"Trust the input, enabling all HTML features such as \\\\url.\",\n cli: \"-T, --trust\"\n },\n maxSize: {\n type: \"number\",\n default: Infinity,\n 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\",\n processor: s => Math.max(0, s),\n cli: \"-s, --max-size <n>\",\n cliProcessor: parseInt\n },\n maxExpand: {\n type: \"number\",\n default: 1000,\n 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.\",\n processor: n => Math.max(0, n),\n cli: \"-e, --max-expand <n>\",\n cliProcessor: n => n === \"Infinity\" ? Infinity : parseInt(n)\n },\n globalGroup: {\n type: \"boolean\",\n cli: false\n }\n};\nfunction getDefaultValue(schema) {\n if (\"default\" in schema) {\n return schema.default;\n }\n var type = schema.type;\n var defaultType = Array.isArray(type) ? type[0] : type;\n if (typeof defaultType !== 'string') {\n return defaultType.enum[0];\n }\n switch (defaultType) {\n case 'boolean':\n return false;\n case 'string':\n return '';\n case 'number':\n return 0;\n case 'object':\n return {};\n }\n}\n/**\n * The main Settings object\n *\n * The current options stored are:\n * - displayMode: Whether the expression should be typeset as inline math\n * (false, the default), meaning that the math starts in\n * \\textstyle and is placed in an inline-block); or as display\n * math (true), meaning that the math starts in \\displaystyle\n * and is placed in a block with vertical margin.\n */\nclass Settings {\n constructor(options) {\n if (options === void 0) {\n options = {};\n }\n // allow null options\n options = options || {};\n for (var prop of Object.keys(SETTINGS_SCHEMA)) {\n var schema = SETTINGS_SCHEMA[prop];\n var optionValue = options[prop];\n // TODO: validate options\n this[prop] = optionValue !== undefined ? schema.processor ? schema.processor(optionValue) : optionValue : getDefaultValue(schema);\n }\n }\n /**\n * Report nonstrict (non-LaTeX-compatible) input.\n * Can safely not be called if `this.strict` is false in JavaScript.\n */\n reportNonstrict(errorCode, errorMsg, token) {\n var strict = this.strict;\n if (typeof strict === \"function\") {\n // Allow return value of strict function to be boolean or string\n // (or null/undefined, meaning no further processing).\n strict = strict(errorCode, errorMsg, token);\n }\n if (!strict || strict === \"ignore\") {\n return;\n } else if (strict === true || strict === \"error\") {\n throw new ParseError(\"LaTeX-incompatible input and strict mode is set to 'error': \" + (errorMsg + \" [\" + errorCode + \"]\"), token);\n } else if (strict === \"warn\") {\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \" + (errorMsg + \" [\" + errorCode + \"]\"));\n } else {\n // won't happen in type-safe code\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to \" + (\"unrecognized '\" + strict + \"': \" + errorMsg + \" [\" + errorCode + \"]\"));\n }\n }\n /**\n * Check whether to apply strict (LaTeX-adhering) behavior for unusual\n * input (like `\\\\`). Unlike `nonstrict`, will not throw an error;\n * instead, \"error\" translates to a return value of `true`, while \"ignore\"\n * translates to a return value of `false`. May still print a warning:\n * \"warn\" prints a warning and returns `false`.\n * This is for the second category of `errorCode`s listed in the README.\n */\n useStrictBehavior(errorCode, errorMsg, token) {\n var strict = this.strict;\n if (typeof strict === \"function\") {\n // Allow return value of strict function to be boolean or string\n // (or null/undefined, meaning no further processing).\n // But catch any exceptions thrown by function, treating them\n // like \"error\".\n try {\n strict = strict(errorCode, errorMsg, token);\n } catch (error) {\n strict = \"error\";\n }\n }\n if (!strict || strict === \"ignore\") {\n return false;\n } else if (strict === true || strict === \"error\") {\n return true;\n } else if (strict === \"warn\") {\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \" + (errorMsg + \" [\" + errorCode + \"]\"));\n return false;\n } else {\n // won't happen in type-safe code\n typeof console !== \"undefined\" && console.warn(\"LaTeX-incompatible input and strict mode is set to \" + (\"unrecognized '\" + strict + \"': \" + errorMsg + \" [\" + errorCode + \"]\"));\n return false;\n }\n }\n /**\n * Check whether to test potentially dangerous input, and return\n * `true` (trusted) or `false` (untrusted). The sole argument `context`\n * should be an object with `command` field specifying the relevant LaTeX\n * command (as a string starting with `\\`), and any other arguments, etc.\n * If `context` has a `url` field, a `protocol` field will automatically\n * get added by this function (changing the specified object).\n */\n isTrusted(context) {\n if (\"url\" in context && context.url && !context.protocol) {\n var protocol = protocolFromUrl(context.url);\n if (protocol == null) {\n return false;\n }\n context.protocol = protocol;\n }\n var trust = typeof this.trust === \"function\" ? this.trust(context) : this.trust;\n return Boolean(trust);\n }\n}\n\n/**\n * This file contains information and classes for the various kinds of styles\n * used in TeX. It provides a generic `Style` class, which holds information\n * about a specific style. It then provides instances of all the different kinds\n * of styles possible, and provides functions to move between them and get\n * information about them.\n */\n/**\n * The main style class. Contains a unique id for the style, a size (which is\n * the same for cramped and uncramped version of a style), and a cramped flag.\n */\nclass Style {\n constructor(id, size, cramped) {\n this.id = id;\n this.size = size;\n this.cramped = cramped;\n }\n /**\n * Get the style of a superscript given a base in the current style.\n */\n sup() {\n return styles[sup[this.id]];\n }\n /**\n * Get the style of a subscript given a base in the current style.\n */\n sub() {\n return styles[sub[this.id]];\n }\n /**\n * Get the style of a fraction numerator given the fraction in the current\n * style.\n */\n fracNum() {\n return styles[fracNum[this.id]];\n }\n /**\n * Get the style of a fraction denominator given the fraction in the current\n * style.\n */\n fracDen() {\n return styles[fracDen[this.id]];\n }\n /**\n * Get the cramped version of a style (in particular, cramping a cramped style\n * doesn't change the style).\n */\n cramp() {\n return styles[cramp[this.id]];\n }\n /**\n * Get a text or display version of this style.\n */\n text() {\n return styles[text$1[this.id]];\n }\n /**\n * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)\n */\n isTight() {\n return this.size >= 2;\n }\n}\n// IDs of the different styles\nvar D = 0;\nvar Dc = 1;\nvar T = 2;\nvar Tc = 3;\nvar S = 4;\nvar Sc = 5;\nvar SS = 6;\nvar SSc = 7;\n// Instances of the different styles\nvar styles = [new Style(D, 0, false), new Style(Dc, 0, true), new Style(T, 1, false), new Style(Tc, 1, true), new Style(S, 2, false), new Style(Sc, 2, true), new Style(SS, 3, false), new Style(SSc, 3, true)];\n// Lookup tables for switching from one style to another\nvar sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];\nvar sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];\nvar fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];\nvar text$1 = [D, Dc, T, Tc, T, Tc, T, Tc];\n// We only export some of the styles.\nvar Style$1 = {\n DISPLAY: styles[D],\n TEXT: styles[T],\n SCRIPT: styles[S],\n SCRIPTSCRIPT: styles[SS]\n};\n\n/*\n * This file defines the Unicode scripts and script families that we\n * support. To add new scripts or families, just add a new entry to the\n * scriptData array below. Adding scripts to the scriptData array allows\n * characters from that script to appear in \\text{} environments.\n */\n/**\n * Unicode block data for the families of scripts we support in \\text{}.\n * Scripts only need to appear here if they do not have font metrics.\n */\nvar scriptData = [{\n // Latin characters beyond the Latin-1 characters we have metrics for.\n // Needed for Czech, Hungarian and Turkish text, for example.\n name: 'latin',\n blocks: [[0x0100, 0x024f],\n // Latin Extended-A and Latin Extended-B\n [0x0300, 0x036f] // Combining Diacritical marks\n ]\n}, {\n // The Cyrillic script used by Russian and related languages.\n // A Cyrillic subset used to be supported as explicitly defined\n // symbols in symbols.js\n name: 'cyrillic',\n blocks: [[0x0400, 0x04ff]]\n}, {\n // Armenian\n name: 'armenian',\n blocks: [[0x0530, 0x058F]]\n}, {\n // The Brahmic scripts of South and Southeast Asia\n // Devanagari (0900\u2013097F)\n // Bengali (0980\u201309FF)\n // Gurmukhi (0A00\u20130A7F)\n // Gujarati (0A80\u20130AFF)\n // Oriya (0B00\u20130B7F)\n // Tamil (0B80\u20130BFF)\n // Telugu (0C00\u20130C7F)\n // Kannada (0C80\u20130CFF)\n // Malayalam (0D00\u20130D7F)\n // Sinhala (0D80\u20130DFF)\n // Thai (0E00\u20130E7F)\n // Lao (0E80\u20130EFF)\n // Tibetan (0F00\u20130FFF)\n // Myanmar (1000\u2013109F)\n name: 'brahmic',\n blocks: [[0x0900, 0x109F]]\n}, {\n name: 'georgian',\n blocks: [[0x10A0, 0x10ff]]\n}, {\n // Chinese and Japanese.\n // The \"k\" in cjk is for Korean, but we've separated Korean out\n name: \"cjk\",\n blocks: [[0x3000, 0x30FF],\n // CJK symbols and punctuation, Hiragana, Katakana\n [0x4E00, 0x9FAF],\n // CJK ideograms\n [0xFF00, 0xFF60] // Fullwidth punctuation\n // TODO: add halfwidth Katakana and Romanji glyphs\n ]\n}, {\n // Korean\n name: 'hangul',\n blocks: [[0xAC00, 0xD7AF]]\n}];\n/**\n * Given a codepoint, return the name of the script or script family\n * it is from, or null if it is not part of a known block\n */\nfunction scriptFromCodepoint(codepoint) {\n for (var i = 0; i < scriptData.length; i++) {\n var script = scriptData[i];\n for (var _i = 0; _i < script.blocks.length; _i++) {\n var block = script.blocks[_i];\n if (codepoint >= block[0] && codepoint <= block[1]) {\n return script.name;\n }\n }\n }\n return null;\n}\n/**\n * A flattened version of all the supported blocks in a single array.\n * This is an optimization to make supportedCodepoint() fast.\n */\nvar allBlocks = [];\nscriptData.forEach(s => s.blocks.forEach(b => allBlocks.push(...b)));\n/**\n * Given a codepoint, return true if it falls within one of the\n * scripts or script families defined above and false otherwise.\n *\n * Micro benchmarks shows that this is faster than\n * /[\\u3000-\\u30FF\\u4E00-\\u9FAF\\uFF00-\\uFF60\\uAC00-\\uD7AF\\u0900-\\u109F]/.test()\n * in Firefox, Chrome and Node.\n */\nfunction supportedCodepoint(codepoint) {\n for (var i = 0; i < allBlocks.length; i += 2) {\n if (codepoint >= allBlocks[i] && codepoint <= allBlocks[i + 1]) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * This file provides support to domTree.js and delimiter.js.\n * It's a storehouse of path geometry for SVG images.\n */\n// In all paths below, the viewBox-to-em scale is 1000:1.\n// Second Brush Stroke\n// Low resolution monitors struggle to display images in fine detail.\n// So browsers apply anti-aliasing. A long straight arrow shaft therefore\n// will sometimes appear as if it has a blurred edge.\n// To mitigate this, these SVG files contain a second \"brush-stroke\" on the\n// arrow shafts. That is, a second long thin rectangular SVG path has been\n// written directly on top of each arrow shaft. This reinforcement causes\n// some of the screen pixels to display as black instead of the anti-aliased\n// gray pixel that a single path would generate. So we get arrow shafts\n// whose edges appear to be sharper.\nvar doubleBrushStroke = svgPath => svgPath + \" \" + svgPath;\nvar hLinePad = 80; // padding above a sqrt vinculum. Prevents image cropping.\n// The vinculum of a \\sqrt can be made thicker by a KaTeX rendering option.\n// Think of variable extraVinculum as two detours in the SVG path.\n// The detour begins at the lower left of the area labeled extraVinculum below.\n// The detour proceeds one extraVinculum distance up and slightly to the right,\n// displacing the radiused corner between surd and vinculum. The radius is\n// traversed as usual, then the detour resumes. It goes right, to the end of\n// the very long vinculum, then down one extraVinculum distance,\n// after which it resumes regular path geometry for the radical.\n/* vinculum\n /\n /\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2592\u2190extraVinculum\n / \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u21900.04em (40 unit) std vinculum thickness\n / /\n / /\n / /\\\n / / surd\n*/\nvar sqrtMain = function sqrtMain(extraVinculum, hLinePad) {\n // sqrtMain path geometry is from glyph U221A in the font KaTeX Main\n return \"M95,\" + (622 + extraVinculum + hLinePad) + \"\\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\\nc44.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\\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\\nc69,-144,104.5,-217.7,106.5,-221\\nl\" + extraVinculum / 2.075 + \" -\" + extraVinculum + \"\\nc5.3,-9.3,12,-14,20,-14\\nH400000v\" + (40 + extraVinculum) + \"H845.2724\\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\\nM\" + (834 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize1 = function sqrtSize1(extraVinculum, hLinePad) {\n // size1 is from glyph U221A in the font KaTeX_Size1-Regular\n return \"M263,\" + (601 + extraVinculum + hLinePad) + \"c0.7,0,18,39.7,52,119\\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\\nc340,-704.7,510.7,-1060.3,512,-1067\\nl\" + extraVinculum / 2.084 + \" -\" + extraVinculum + \"\\nc4.7,-7.3,11,-11,19,-11\\nH40000v\" + (40 + extraVinculum) + \"H1012.3\\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\\nM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize2 = function sqrtSize2(extraVinculum, hLinePad) {\n // size2 is from glyph U221A in the font KaTeX_Size2-Regular\n return \"M983 \" + (10 + extraVinculum + hLinePad) + \"\\nl\" + extraVinculum / 3.13 + \" -\" + extraVinculum + \"\\nc4,-6.7,10,-10,18,-10 H400000v\" + (40 + extraVinculum) + \"\\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\\nM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize3 = function sqrtSize3(extraVinculum, hLinePad) {\n // size3 is from glyph U221A in the font KaTeX_Size3-Regular\n return \"M424,\" + (2398 + extraVinculum + hLinePad) + \"\\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\\nc0,-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\\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\\nl\" + extraVinculum / 4.223 + \" -\" + extraVinculum + \"c4,-6.7,10,-10,18,-10 H400000\\nv\" + (40 + extraVinculum) + \"H1014.6\\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\\nc-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2z M\" + (1001 + extraVinculum) + \" \" + hLinePad + \"\\nh400000v\" + (40 + extraVinculum) + \"h-400000z\";\n};\nvar sqrtSize4 = function sqrtSize4(extraVinculum, hLinePad) {\n // size4 is from glyph U221A in the font KaTeX_Size4-Regular\n return \"M473,\" + (2713 + extraVinculum + hLinePad) + \"\\nc339.3,-1799.3,509.3,-2700,510,-2702 l\" + extraVinculum / 5.298 + \" -\" + extraVinculum + \"\\nc3.3,-7.3,9.3,-11,18,-11 H400000v\" + (40 + extraVinculum) + \"H1017.7\\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\\nc0,-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\\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\\n606zM\" + (1001 + extraVinculum) + \" \" + hLinePad + \"h400000v\" + (40 + extraVinculum) + \"H1017.7z\";\n};\nvar phasePath = function phasePath(y) {\n var x = y / 2; // x coordinate at top of angle\n return \"M400000 \" + y + \" H0 L\" + x + \" 0 l65 45 L145 \" + (y - 80) + \" H400000z\";\n};\nvar sqrtTall = function sqrtTall(extraVinculum, hLinePad, viewBoxHeight) {\n // sqrtTall is from glyph U23B7 in the font KaTeX_Size4-Regular\n // One path edge has a variable length. It runs vertically from the vinculum\n // to a point near (14 units) the bottom of the surd. The vinculum\n // is normally 40 units thick. So the length of the line in question is:\n var vertSegment = viewBoxHeight - 54 - hLinePad - extraVinculum;\n return \"M702 \" + (extraVinculum + hLinePad) + \"H400000\" + (40 + extraVinculum) + \"\\nH742v\" + vertSegment + \"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\\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\\n219 661 l218 661zM702 \" + hLinePad + \"H400000v\" + (40 + extraVinculum) + \"H742z\";\n};\nvar sqrtPath = function sqrtPath(size, extraVinculum, viewBoxHeight) {\n extraVinculum = 1000 * extraVinculum; // Convert from document ems to viewBox.\n var path = \"\";\n switch (size) {\n case \"sqrtMain\":\n path = sqrtMain(extraVinculum, hLinePad);\n break;\n case \"sqrtSize1\":\n path = sqrtSize1(extraVinculum, hLinePad);\n break;\n case \"sqrtSize2\":\n path = sqrtSize2(extraVinculum, hLinePad);\n break;\n case \"sqrtSize3\":\n path = sqrtSize3(extraVinculum, hLinePad);\n break;\n case \"sqrtSize4\":\n path = sqrtSize4(extraVinculum, hLinePad);\n break;\n case \"sqrtTall\":\n path = sqrtTall(extraVinculum, hLinePad, viewBoxHeight);\n }\n return path;\n};\nvar innerPath = function innerPath(name, height) {\n // The inner part of stretchy tall delimiters\n switch (name) {\n case \"\\u239c\":\n return doubleBrushStroke(\"M291 0 H417 V\" + height + \" H291z\");\n case \"\\u2223\":\n return doubleBrushStroke(\"M145 0 H188 V\" + height + \" H145z\");\n case \"\\u2225\":\n return doubleBrushStroke(\"M145 0 H188 V\" + height + \" H145z\") + doubleBrushStroke(\"M367 0 H410 V\" + height + \" H367z\");\n case \"\\u239f\":\n return doubleBrushStroke(\"M457 0 H583 V\" + height + \" H457z\");\n case \"\\u23a2\":\n return doubleBrushStroke(\"M319 0 H403 V\" + height + \" H319z\");\n case \"\\u23a5\":\n return doubleBrushStroke(\"M263 0 H347 V\" + height + \" H263z\");\n case \"\\u23aa\":\n return doubleBrushStroke(\"M384 0 H504 V\" + height + \" H384z\");\n case \"\\u23d0\":\n return doubleBrushStroke(\"M312 0 H355 V\" + height + \" H312z\");\n case \"\\u2016\":\n return doubleBrushStroke(\"M257 0 H300 V\" + height + \" H257z\") + doubleBrushStroke(\"M478 0 H521 V\" + height + \" H478z\");\n default:\n return \"\";\n }\n};\nvar path = {\n // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main\n doubleleftarrow: \"M262 157\\nl10-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\\n 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\\n 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\\nc2 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\\n 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\\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\\nm8 0v40h399730v-40zm0 194v40h399730v-40z\",\n // doublerightarrow is from glyph U+21D2 in font KaTeX Main\n doublerightarrow: \"M399738 392l\\n-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\\n 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\\n-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\\n-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\\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\\nc-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\\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z\",\n // leftarrow is from glyph U+2190 in font KaTeX Main\n leftarrow: \"M400000 241H110l3-3c68.7-52.7 113.7-120\\n 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\\n-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\\nc-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\\n 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\\n 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\\n l-3-3h399890zM100 241v40h399900v-40z\",\n // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular\n leftbrace: \"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z\",\n leftbraceunder: \"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\\n 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\\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z\",\n // overgroup is from the MnSymbol package (public domain)\n leftgroup: \"M400000 80\\nH435C64 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\\n 435 0h399565z\",\n leftgroupunder: \"M400000 262\\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\\n 435 219h399565z\",\n // Harpoons are from glyph U+21BD in font KaTeX Main\n leftharpoon: \"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\\n-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\\n-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\\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z\",\n leftharpoonplus: \"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\\n 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\\n-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\\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\\nm0 0v40h400000v-40z\",\n leftharpoondown: \"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\\n 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\\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z\",\n leftharpoondownplus: \"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\\n 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\\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z\",\n // hook is from glyph U+21A9 in font KaTeX Main\n lefthook: \"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\\n-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\\n-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\\n 71.5 23h399859zM103 281v-40h399897v40z\",\n leftlinesegment: doubleBrushStroke(\"M40 281 V428 H0 V94 H40 V241 H400000 v40z\"),\n leftbracketunder: doubleBrushStroke(\"M0 0 h120 V290 H399995 v120 H0z\"),\n leftbracketover: doubleBrushStroke(\"M0 440 h120 V150 H399995 v-120 H0z\"),\n leftmapsto: doubleBrushStroke(\"M40 281 V448H0V74H40V241H400000v40z\"),\n // tofrom is from glyph U+21C4 in font KaTeX AMS Regular\n leftToFrom: \"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\\nc28.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\\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z\",\n longequal: doubleBrushStroke(\"M0 50 h400000 v40H0z m0 194h40000v40H0z\"),\n midbrace: \"M200428 334\\nc-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\\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\\n 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\\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z\",\n midbraceunder: \"M199572 214\\nc100.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\\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\\n 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\\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z\",\n oiintSize1: \"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\\nm368.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\\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z\",\n oiintSize2: \"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\\nc0 110 84 276 504 276s502.4-166 502.4-276z\",\n oiiintSize1: \"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z\",\n oiiintSize2: \"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z\",\n rightarrow: \"M0 241v40h399891c-47.3 35.3-84 78-110 128\\n-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\\n 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\\n 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\\n-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\\n-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\\n 151.7 139 205zm0 0v40h399900v-40z\",\n rightbrace: \"M400000 542l\\n-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\\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z\",\n rightbraceunder: \"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z\",\n rightgroup: \"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\\n 3-1 3-3v-38c-76-158-257-219-435-219H0z\",\n rightgroupunder: \"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z\",\n rightharpoon: \"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\\n-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\\n-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\\n 69.2 92 94.5zm0 0v40h399900v-40z\",\n rightharpoonplus: \"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\\n-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\\n 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\\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z\",\n rightharpoondown: \"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\\n 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\\n-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\\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z\",\n rightharpoondownplus: \"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\\n 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\\n 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\\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\\nm0-194v40h400000v-40zm0 0v40h400000v-40z\",\n righthook: \"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\\n 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\\n-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\\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z\",\n rightlinesegment: doubleBrushStroke(\"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\"),\n rightbracketunder: doubleBrushStroke(\"M399995 0 h-120 V290 H0 v120 H400000z\"),\n rightbracketover: doubleBrushStroke(\"M399995 440 h-120 V150 H0 v-120 H399995z\"),\n rightToFrom: \"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\\n-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\\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z\",\n // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular\n twoheadleftarrow: \"M0 167c68 40\\n 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\\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z\",\n twoheadrightarrow: \"M400000 167\\nc-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\\n 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\\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z\",\n // tilde1 is a modified version of a glyph from the MnSymbol package\n tilde1: \"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\\n-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\\n 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\\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\\n-68.267.847-113-73.952-191-73.952z\",\n // ditto tilde2, tilde3, & tilde4\n tilde2: \"M344 55.266c-142 0-300.638 81.316-311.5 86.418\\n-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\\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\\nc1 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\\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z\",\n tilde3: \"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\\n -338 0-409-156.573-744-156.573z\",\n tilde4: \"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\\n -175.236-744-175.236z\",\n // vec is from glyph U+20D7 in font KaTeX Main\n vec: \"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\\n-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\\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\\nc-16-25.333-24-45-24-59z\",\n // widehat1 is a modified version of a glyph from the MnSymbol package\n widehat1: \"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\\nc-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\",\n // ditto widehat2, widehat3, & widehat4\n widehat2: \"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n widehat3: \"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n widehat4: \"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",\n // widecheck paths are all inverted versions of widehat\n widecheck1: \"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\\n-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\",\n widecheck2: \"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n widecheck3: \"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n widecheck4: \"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",\n // The next ten paths support reaction arrows from the mhchem package.\n // Arrows for \\ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX\n // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main\n baraboveleftarrow: \"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\\nc-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\\ns-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\\n121.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\\ns2.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\\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z\",\n // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main\n rightarrowabovebar: \"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\\n-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\\n13.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\\n-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\\n-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\\n-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\\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z\",\n // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.\n // Ref from mhchem.sty: \\rlap{\\raisebox{-.22ex}{$\\kern0.5em\n baraboveshortleftharpoon: \"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\\nc2,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\\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z\",\n rightharpoonaboveshortbar: \"M0,241 l0,40c399126,0,399993,0,399993,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-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\\nc-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\\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z\",\n shortbaraboveleftharpoon: \"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.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,\\n1c0,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,\\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z\",\n shortrightharpoonabovebar: \"M53,241l0,40c398570,0,399437,0,399437,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-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\\nc-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\\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z\"\n};\nvar tallDelim = function tallDelim(label, midHeight) {\n switch (label) {\n case \"lbrack\":\n return \"M403 1759 V84 H666 V0 H319 V1759 v\" + midHeight + \" v1759 h347 v-84\\nH403z M403 1759 V0 H319 V1759 v\" + midHeight + \" v1759 h84z\";\n case \"rbrack\":\n return \"M347 1759 V0 H0 V84 H263 V1759 v\" + midHeight + \" v1759 H0 v84 H347z\\nM347 1759 V0 H263 V1759 v\" + midHeight + \" v1759 h84z\";\n case \"vert\":\n return \"M145 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v\" + midHeight + \" v585 h43z\";\n case \"doublevert\":\n return \"M145 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v\" + midHeight + \" v585 h43z\\nM367 15 v585 v\" + midHeight + \" v585 c2.667,10,9.667,15,21,15\\nc10,0,16.667,-5,20,-15 v-585 v\" + -midHeight + \" v-585 c-2.667,-10,-9.667,-15,-21,-15\\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v\" + midHeight + \" v585 h43z\";\n case \"lfloor\":\n return \"M319 602 V0 H403 V602 v\" + midHeight + \" v1715 h263 v84 H319z\\nMM319 602 V0 H403 V602 v\" + midHeight + \" v1715 H319z\";\n case \"rfloor\":\n return \"M319 602 V0 H403 V602 v\" + midHeight + \" v1799 H0 v-84 H319z\\nMM319 602 V0 H403 V602 v\" + midHeight + \" v1715 H319z\";\n case \"lceil\":\n return \"M403 1759 V84 H666 V0 H319 V1759 v\" + midHeight + \" v602 h84z\\nM403 1759 V0 H319 V1759 v\" + midHeight + \" v602 h84z\";\n case \"rceil\":\n return \"M347 1759 V0 H0 V84 H263 V1759 v\" + midHeight + \" v602 h84z\\nM347 1759 V0 h-84 V1759 v\" + midHeight + \" v602 h84z\";\n case \"lparen\":\n return \"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\\nc-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,\\n-36,557 l0,\" + (midHeight + 84) + \"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\\n949.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\\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\\nl0,-\" + (midHeight + 92) + \"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z\";\n case \"rparen\":\n return \"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,\" + (midHeight + 9) + \"\\nc-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\\nc-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\\nc0,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\\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\\nl0,-\" + (midHeight + 144) + \"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z\";\n default:\n // We should not ever get here.\n throw new Error(\"Unknown stretchy delimiter.\");\n }\n};\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. It only contains\n * children and doesn't have any DOM node properties.\n */\nclass DocumentFragment {\n // Never used; needed for satisfying interface.\n constructor(children) {\n this.children = children;\n this.classes = [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = {};\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n /** Convert the fragment into a node. */\n toNode() {\n var frag = document.createDocumentFragment();\n for (var i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n return frag;\n }\n /** Convert the fragment into HTML markup. */\n toMarkup() {\n var markup = \"\";\n // Simply concatenate the markup for the children together.\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n return markup;\n }\n /**\n * Converts the math node into a string, similar to innerText. Applies to\n * MathDomNode's only.\n */\n toText() {\n // To avoid this, we would subclass documentFragment separately for\n // MathML, but polyfills for subclassing is expensive per PR 1469.\n // TODO(ts): Only works for ChildType = MathDomNode.\n var toText = child => child.toText();\n return this.children.map(toText).join(\"\");\n }\n}\n\n/**\n * This file does conversion between units. In particular, it provides\n * calculateSize to convert other units into ems.\n */\n// This table gives the number of TeX pts in one of each *absolute* TeX unit.\n// Thus, multiplying a length by this number converts the length from units\n// into pts. Dividing the result by ptPerEm gives the number of ems\n// *assuming* a font size of ptPerEm (normal size, normal style).\nvar ptPerUnit = {\n // https://en.wikibooks.org/wiki/LaTeX/Lengths and\n // https://tex.stackexchange.com/a/8263\n \"pt\": 1,\n // TeX point\n \"mm\": 7227 / 2540,\n // millimeter\n \"cm\": 7227 / 254,\n // centimeter\n \"in\": 72.27,\n // inch\n \"bp\": 803 / 800,\n // big (PostScript) points\n \"pc\": 12,\n // pica\n \"dd\": 1238 / 1157,\n // didot\n \"cc\": 14856 / 1157,\n // cicero (12 didot)\n \"nd\": 685 / 642,\n // new didot\n \"nc\": 1370 / 107,\n // new cicero (12 new didot)\n \"sp\": 1 / 65536,\n // scaled point (TeX's internal smallest unit)\n // https://tex.stackexchange.com/a/41371\n \"px\": 803 / 800 // \\pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX\n};\n// Dictionary of relative units, for fast validity testing.\nvar relativeUnit = {\n \"ex\": true,\n \"em\": true,\n \"mu\": true\n};\n/**\n * Determine whether the specified unit (either a string defining the unit\n * or a \"size\" parse node containing a unit field) is valid.\n */\nvar validUnit = function validUnit(unit) {\n if (typeof unit !== \"string\") {\n unit = unit.unit;\n }\n return unit in ptPerUnit || unit in relativeUnit || unit === \"ex\";\n};\n/*\n * Convert a \"size\" parse node (with numeric \"number\" and string \"unit\" fields,\n * as parsed by functions.js argType \"size\") into a CSS em value for the\n * current style/scale. `options` gives the current options.\n */\nvar calculateSize = function calculateSize(sizeValue, options) {\n var scale;\n if (sizeValue.unit in ptPerUnit) {\n // Absolute units\n scale = ptPerUnit[sizeValue.unit] // Convert unit to pt\n / options.fontMetrics().ptPerEm // Convert pt to CSS em\n / options.sizeMultiplier; // Unscale to make absolute units\n } else if (sizeValue.unit === \"mu\") {\n // `mu` units scale with scriptstyle/scriptscriptstyle.\n scale = options.fontMetrics().cssEmPerMu;\n } else {\n // Other relative units always refer to the *textstyle* font\n // in the current size.\n var unitOptions;\n if (options.style.isTight()) {\n // isTight() means current style is script/scriptscript.\n unitOptions = options.havingStyle(options.style.text());\n } else {\n unitOptions = options;\n }\n // TODO: In TeX these units are relative to the quad of the current\n // *text* font, e.g. cmr10. KaTeX instead uses values from the\n // comparably-sized *Computer Modern symbol* font. At 10pt, these\n // match. At 7pt and 5pt, they differ: cmr7=1.138894, cmsy7=1.170641;\n // cmr5=1.361133, cmsy5=1.472241. Consider $\\scriptsize a\\kern1emb$.\n // TeX \\showlists shows a kern of 1.13889 * fontsize;\n // KaTeX shows a kern of 1.171 * fontsize.\n if (sizeValue.unit === \"ex\") {\n scale = unitOptions.fontMetrics().xHeight;\n } else if (sizeValue.unit === \"em\") {\n scale = unitOptions.fontMetrics().quad;\n } else {\n throw new ParseError(\"Invalid unit: '\" + sizeValue.unit + \"'\");\n }\n if (unitOptions !== options) {\n scale *= unitOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n return Math.min(sizeValue.number * scale, options.maxSize);\n};\n/**\n * Round `n` to 4 decimal places, or to the nearest 1/10,000th em. See\n * https://github.com/KaTeX/KaTeX/pull/2460.\n */\nvar makeEm = function makeEm(n) {\n return +n.toFixed(4) + \"em\";\n};\n\n/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n *\n * TODO: refactor `span` and `anchor` into common superclass when\n * target environments support class inheritance\n */\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove empty classes.\n */\nvar createClass = function createClass(classes) {\n return classes.filter(cls => cls).join(\" \");\n};\nvar initNode = function initNode(classes, options, style) {\n this.classes = classes || [];\n this.attributes = {};\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = style || {};\n if (options) {\n if (options.style.isTight()) {\n this.classes.push(\"mtight\");\n }\n var color = options.getColor();\n if (color) {\n this.style.color = color;\n }\n }\n};\n/**\n * Convert into an HTML node\n */\nvar toNode = function toNode(tagName) {\n var node = document.createElement(tagName);\n // Apply the class\n node.className = createClass(this.classes);\n // Apply inline styles\n for (var key of Object.keys(this.style)) {\n node.style[key] = this.style[key];\n }\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n // Append the children, also as HTML nodes\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n return node;\n};\n/**\n * https://w3c.github.io/html-reference/syntax.html#syntax-attributes\n *\n * > Attribute Names must consist of one or more characters\n * other than the space characters, U+0000 NULL,\n * '\"', \"'\", \">\", \"/\", \"=\", the control characters,\n * and any characters that are not defined by Unicode.\n */\nvar invalidAttributeNameRegex = /[\\s\"'>/=\\x00-\\x1f]/;\n/**\n * Convert into an HTML markup string\n */\nvar toMarkup = function toMarkup(tagName) {\n var markup = \"<\" + tagName;\n // Add the class\n if (this.classes.length) {\n markup += \" class=\\\"\" + escape(createClass(this.classes)) + \"\\\"\";\n }\n var styles = \"\";\n // Add the styles, after hyphenation\n for (var key of Object.keys(this.style)) {\n styles += hyphenate(key) + \":\" + this.style[key] + \";\";\n }\n if (styles) {\n markup += \" style=\\\"\" + escape(styles) + \"\\\"\";\n }\n // Add the attributes\n for (var attr of Object.keys(this.attributes)) {\n if (invalidAttributeNameRegex.test(attr)) {\n throw new ParseError(\"Invalid attribute name '\" + attr + \"'\");\n }\n markup += \" \" + attr + \"=\\\"\" + escape(this.attributes[attr]) + \"\\\"\";\n }\n markup += \">\";\n // Add the markup of the children, also as markup\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n markup += \"</\" + tagName + \">\";\n return markup;\n};\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n *\n * Represents two types with different uses: SvgSpan to wrap an SVG and DomSpan\n * otherwise. This typesafety is important when HTML builders access a span's\n * children.\n */\nclass Span {\n constructor(classes, children, options, style) {\n initNode.call(this, classes, options, style);\n this.children = children || [];\n }\n /**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not\n * all browsers support attributes the same, and having too many custom\n * attributes is probably bad.\n */\n setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n toNode() {\n return toNode.call(this, \"span\");\n }\n toMarkup() {\n return toMarkup.call(this, \"span\");\n }\n}\n/**\n * This node represents an anchor (<a>) element with a hyperlink. See `span`\n * for further details.\n */\nclass Anchor {\n constructor(href, classes, children, options) {\n initNode.call(this, classes, options);\n this.children = children || [];\n this.setAttribute('href', href);\n }\n setAttribute(attribute, value) {\n this.attributes[attribute] = value;\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n toNode() {\n return toNode.call(this, \"a\");\n }\n toMarkup() {\n return toMarkup.call(this, \"a\");\n }\n}\n/**\n * This node represents an image embed (<img>) element.\n */\nclass Img {\n constructor(src, alt, style) {\n this.alt = alt;\n this.src = src;\n this.classes = [\"mord\"];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = style;\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n toNode() {\n var node = document.createElement(\"img\");\n node.src = this.src;\n node.alt = this.alt;\n node.className = \"mord\";\n // Apply inline styles\n for (var key of Object.keys(this.style)) {\n node.style[key] = this.style[key];\n }\n return node;\n }\n toMarkup() {\n var markup = \"<img src=\\\"\" + escape(this.src) + \"\\\"\" + (\" alt=\\\"\" + escape(this.alt) + \"\\\"\");\n // Add the styles, after hyphenation\n var styles = \"\";\n for (var key of Object.keys(this.style)) {\n styles += hyphenate(key) + \":\" + this.style[key] + \";\";\n }\n if (styles) {\n markup += \" style=\\\"\" + escape(styles) + \"\\\"\";\n }\n markup += \"'/>\";\n return markup;\n }\n}\nvar iCombinations = {\n '\u00EE': '\\u0131\\u0302',\n '\u00EF': '\\u0131\\u0308',\n '\u00ED': '\\u0131\\u0301',\n // '\u012B': '\\u0131\\u0304', // enable when we add Extended Latin\n '\u00EC': '\\u0131\\u0300'\n};\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\nclass SymbolNode {\n constructor(text, height, depth, italic, skew, width, classes, style) {\n this.text = text;\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.width = width || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0;\n // Mark text from non-Latin scripts with specific classes so that we\n // can specify which fonts to use. This allows us to render these\n // characters with a serif font in situations where the browser would\n // either default to a sans serif or render a placeholder character.\n // We use CSS class names like cjk_fallback, hangul_fallback and\n // brahmic_fallback. See ./unicodeScripts.js for the set of possible\n // script names\n var script = scriptFromCodepoint(this.text.charCodeAt(0));\n if (script) {\n this.classes.push(script + \"_fallback\");\n }\n if (/[\u00EE\u00EF\u00ED\u00EC]/.test(this.text)) {\n // add \u012B when we add Extended Latin\n this.text = iCombinations[this.text];\n }\n }\n hasClass(className) {\n return this.classes.includes(className);\n }\n /**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\n toNode() {\n var node = document.createTextNode(this.text);\n var span = null;\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = makeEm(this.italic);\n }\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n for (var key of Object.keys(this.style)) {\n span = span || document.createElement(\"span\");\n span.style[key] = this.style[key];\n }\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n }\n /**\n * Creates markup for a symbol node.\n */\n toMarkup() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n var needsSpan = false;\n var markup = \"<span\";\n if (this.classes.length) {\n needsSpan = true;\n markup += \" class=\\\"\";\n markup += escape(createClass(this.classes));\n markup += \"\\\"\";\n }\n var styles = \"\";\n if (this.italic > 0) {\n styles += \"margin-right:\" + makeEm(this.italic) + \";\";\n }\n for (var key of Object.keys(this.style)) {\n styles += hyphenate(key) + \":\" + this.style[key] + \";\";\n }\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + escape(styles) + \"\\\"\";\n }\n var escaped = escape(this.text);\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"</span>\";\n return markup;\n } else {\n return escaped;\n }\n }\n}\n/**\n * SVG nodes are used to render stretchy wide elements.\n */\nclass SvgNode {\n constructor(children, attributes) {\n this.children = children || [];\n this.attributes = attributes || {};\n }\n toNode() {\n var svgNS = \"http://www.w3.org/2000/svg\";\n var node = document.createElementNS(svgNS, \"svg\");\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n return node;\n }\n toMarkup() {\n var markup = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\";\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n markup += \" \" + attr + \"=\\\"\" + escape(this.attributes[attr]) + \"\\\"\";\n }\n markup += \">\";\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n markup += \"</svg>\";\n return markup;\n }\n}\nclass PathNode {\n constructor(pathName, alternate) {\n this.pathName = pathName;\n this.alternate = alternate; // Used only for \\sqrt, \\phase, & tall delims\n }\n toNode() {\n var svgNS = \"http://www.w3.org/2000/svg\";\n var node = document.createElementNS(svgNS, \"path\");\n if (this.alternate) {\n node.setAttribute(\"d\", this.alternate);\n } else {\n node.setAttribute(\"d\", path[this.pathName]);\n }\n return node;\n }\n toMarkup() {\n if (this.alternate) {\n return \"<path d=\\\"\" + escape(this.alternate) + \"\\\"/>\";\n } else {\n return \"<path d=\\\"\" + escape(path[this.pathName]) + \"\\\"/>\";\n }\n }\n}\nclass LineNode {\n constructor(attributes) {\n this.attributes = attributes || {};\n }\n toNode() {\n var svgNS = \"http://www.w3.org/2000/svg\";\n var node = document.createElementNS(svgNS, \"line\");\n // Apply attributes\n for (var attr of Object.keys(this.attributes)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n return node;\n }\n toMarkup() {\n var markup = \"<line\";\n for (var attr of Object.keys(this.attributes)) {\n markup += \" \" + attr + \"=\\\"\" + escape(this.attributes[attr]) + \"\\\"\";\n }\n markup += \"/>\";\n return markup;\n }\n}\nfunction assertSymbolDomNode(group) {\n if (group instanceof SymbolNode) {\n return group;\n } else {\n throw new Error(\"Expected symbolNode but got \" + String(group) + \".\");\n }\n}\nfunction assertSpan(group) {\n if (group instanceof Span) {\n return group;\n } else {\n throw new Error(\"Expected span<HtmlDomNode> but got \" + String(group) + \".\");\n }\n}\n/**\n * Whether an HtmlDomNode has HtmlDomNode children.\n * HtmlDomNode is a base type representing a union of\n * SymbolNode, SvgSpan, DomSpan, Anchor, and documentFragment.\n * In the last three cases, the children are HtmlDomNode[].\n */\nvar hasHtmlDomChildren = node => node instanceof Span || node instanceof Anchor || node instanceof DocumentFragment;\n\n// This file is GENERATED by buildMetrics.sh. DO NOT MODIFY.\nvar fontMetricsData = {\n \"AMS-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.68889, 0, 0, 0.72222],\n \"66\": [0, 0.68889, 0, 0, 0.66667],\n \"67\": [0, 0.68889, 0, 0, 0.72222],\n \"68\": [0, 0.68889, 0, 0, 0.72222],\n \"69\": [0, 0.68889, 0, 0, 0.66667],\n \"70\": [0, 0.68889, 0, 0, 0.61111],\n \"71\": [0, 0.68889, 0, 0, 0.77778],\n \"72\": [0, 0.68889, 0, 0, 0.77778],\n \"73\": [0, 0.68889, 0, 0, 0.38889],\n \"74\": [0.16667, 0.68889, 0, 0, 0.5],\n \"75\": [0, 0.68889, 0, 0, 0.77778],\n \"76\": [0, 0.68889, 0, 0, 0.66667],\n \"77\": [0, 0.68889, 0, 0, 0.94445],\n \"78\": [0, 0.68889, 0, 0, 0.72222],\n \"79\": [0.16667, 0.68889, 0, 0, 0.77778],\n \"80\": [0, 0.68889, 0, 0, 0.61111],\n \"81\": [0.16667, 0.68889, 0, 0, 0.77778],\n \"82\": [0, 0.68889, 0, 0, 0.72222],\n \"83\": [0, 0.68889, 0, 0, 0.55556],\n \"84\": [0, 0.68889, 0, 0, 0.66667],\n \"85\": [0, 0.68889, 0, 0, 0.72222],\n \"86\": [0, 0.68889, 0, 0, 0.72222],\n \"87\": [0, 0.68889, 0, 0, 1.0],\n \"88\": [0, 0.68889, 0, 0, 0.72222],\n \"89\": [0, 0.68889, 0, 0, 0.72222],\n \"90\": [0, 0.68889, 0, 0, 0.66667],\n \"107\": [0, 0.68889, 0, 0, 0.55556],\n \"160\": [0, 0, 0, 0, 0.25],\n \"165\": [0, 0.675, 0.025, 0, 0.75],\n \"174\": [0.15559, 0.69224, 0, 0, 0.94666],\n \"240\": [0, 0.68889, 0, 0, 0.55556],\n \"295\": [0, 0.68889, 0, 0, 0.54028],\n \"710\": [0, 0.825, 0, 0, 2.33334],\n \"732\": [0, 0.9, 0, 0, 2.33334],\n \"770\": [0, 0.825, 0, 0, 2.33334],\n \"771\": [0, 0.9, 0, 0, 2.33334],\n \"989\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"1008\": [0, 0.43056, 0.04028, 0, 0.66667],\n \"8245\": [0, 0.54986, 0, 0, 0.275],\n \"8463\": [0, 0.68889, 0, 0, 0.54028],\n \"8487\": [0, 0.68889, 0, 0, 0.72222],\n \"8498\": [0, 0.68889, 0, 0, 0.55556],\n \"8502\": [0, 0.68889, 0, 0, 0.66667],\n \"8503\": [0, 0.68889, 0, 0, 0.44445],\n \"8504\": [0, 0.68889, 0, 0, 0.66667],\n \"8513\": [0, 0.68889, 0, 0, 0.63889],\n \"8592\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8594\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8602\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8603\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8606\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8608\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8610\": [0.01354, 0.52239, 0, 0, 1.11111],\n \"8611\": [0.01354, 0.52239, 0, 0, 1.11111],\n \"8619\": [0, 0.54986, 0, 0, 1.0],\n \"8620\": [0, 0.54986, 0, 0, 1.0],\n \"8621\": [-0.13313, 0.37788, 0, 0, 1.38889],\n \"8622\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8624\": [0, 0.69224, 0, 0, 0.5],\n \"8625\": [0, 0.69224, 0, 0, 0.5],\n \"8630\": [0, 0.43056, 0, 0, 1.0],\n \"8631\": [0, 0.43056, 0, 0, 1.0],\n \"8634\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8635\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8638\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8639\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8642\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8643\": [0.19444, 0.69224, 0, 0, 0.41667],\n \"8644\": [0.1808, 0.675, 0, 0, 1.0],\n \"8646\": [0.1808, 0.675, 0, 0, 1.0],\n \"8647\": [0.1808, 0.675, 0, 0, 1.0],\n \"8648\": [0.19444, 0.69224, 0, 0, 0.83334],\n \"8649\": [0.1808, 0.675, 0, 0, 1.0],\n \"8650\": [0.19444, 0.69224, 0, 0, 0.83334],\n \"8651\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8652\": [0.01354, 0.52239, 0, 0, 1.0],\n \"8653\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8654\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8655\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8666\": [0.13667, 0.63667, 0, 0, 1.0],\n \"8667\": [0.13667, 0.63667, 0, 0, 1.0],\n \"8669\": [-0.13313, 0.37788, 0, 0, 1.0],\n \"8672\": [-0.064, 0.437, 0, 0, 1.334],\n \"8674\": [-0.064, 0.437, 0, 0, 1.334],\n \"8705\": [0, 0.825, 0, 0, 0.5],\n \"8708\": [0, 0.68889, 0, 0, 0.55556],\n \"8709\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8717\": [0, 0.43056, 0, 0, 0.42917],\n \"8722\": [-0.03598, 0.46402, 0, 0, 0.5],\n \"8724\": [0.08198, 0.69224, 0, 0, 0.77778],\n \"8726\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8733\": [0, 0.69224, 0, 0, 0.77778],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8737\": [0, 0.69224, 0, 0, 0.72222],\n \"8738\": [0.03517, 0.52239, 0, 0, 0.72222],\n \"8739\": [0.08167, 0.58167, 0, 0, 0.22222],\n \"8740\": [0.25142, 0.74111, 0, 0, 0.27778],\n \"8741\": [0.08167, 0.58167, 0, 0, 0.38889],\n \"8742\": [0.25142, 0.74111, 0, 0, 0.5],\n \"8756\": [0, 0.69224, 0, 0, 0.66667],\n \"8757\": [0, 0.69224, 0, 0, 0.66667],\n \"8764\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8765\": [-0.13313, 0.37788, 0, 0, 0.77778],\n \"8769\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8770\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8774\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8776\": [-0.01688, 0.48312, 0, 0, 0.77778],\n \"8778\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8782\": [0.06062, 0.54986, 0, 0, 0.77778],\n \"8783\": [0.06062, 0.54986, 0, 0, 0.77778],\n \"8785\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8786\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8787\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8790\": [0, 0.69224, 0, 0, 0.77778],\n \"8791\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8796\": [0.08198, 0.91667, 0, 0, 0.77778],\n \"8806\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"8807\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"8808\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"8809\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"8812\": [0.25583, 0.75583, 0, 0, 0.5],\n \"8814\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8815\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8816\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8817\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8818\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8819\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8822\": [0.1808, 0.675, 0, 0, 0.77778],\n \"8823\": [0.1808, 0.675, 0, 0, 0.77778],\n \"8828\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8829\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8830\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8831\": [0.22958, 0.72958, 0, 0, 0.77778],\n \"8832\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8833\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8840\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8841\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8842\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8843\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8847\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8848\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8858\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8859\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8861\": [0.08198, 0.58198, 0, 0, 0.77778],\n \"8862\": [0, 0.675, 0, 0, 0.77778],\n \"8863\": [0, 0.675, 0, 0, 0.77778],\n \"8864\": [0, 0.675, 0, 0, 0.77778],\n \"8865\": [0, 0.675, 0, 0, 0.77778],\n \"8872\": [0, 0.69224, 0, 0, 0.61111],\n \"8873\": [0, 0.69224, 0, 0, 0.72222],\n \"8874\": [0, 0.69224, 0, 0, 0.88889],\n \"8876\": [0, 0.68889, 0, 0, 0.61111],\n \"8877\": [0, 0.68889, 0, 0, 0.61111],\n \"8878\": [0, 0.68889, 0, 0, 0.72222],\n \"8879\": [0, 0.68889, 0, 0, 0.72222],\n \"8882\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8883\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8884\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8885\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8888\": [0, 0.54986, 0, 0, 1.11111],\n \"8890\": [0.19444, 0.43056, 0, 0, 0.55556],\n \"8891\": [0.19444, 0.69224, 0, 0, 0.61111],\n \"8892\": [0.19444, 0.69224, 0, 0, 0.61111],\n \"8901\": [0, 0.54986, 0, 0, 0.27778],\n \"8903\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8905\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8906\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"8907\": [0, 0.69224, 0, 0, 0.77778],\n \"8908\": [0, 0.69224, 0, 0, 0.77778],\n \"8909\": [-0.03598, 0.46402, 0, 0, 0.77778],\n \"8910\": [0, 0.54986, 0, 0, 0.76042],\n \"8911\": [0, 0.54986, 0, 0, 0.76042],\n \"8912\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8913\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"8914\": [0, 0.54986, 0, 0, 0.66667],\n \"8915\": [0, 0.54986, 0, 0, 0.66667],\n \"8916\": [0, 0.69224, 0, 0, 0.66667],\n \"8918\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8919\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8920\": [0.03517, 0.54986, 0, 0, 1.33334],\n \"8921\": [0.03517, 0.54986, 0, 0, 1.33334],\n \"8922\": [0.38569, 0.88569, 0, 0, 0.77778],\n \"8923\": [0.38569, 0.88569, 0, 0, 0.77778],\n \"8926\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8927\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"8928\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8929\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8934\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8935\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8936\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8937\": [0.23222, 0.74111, 0, 0, 0.77778],\n \"8938\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8939\": [0.20576, 0.70576, 0, 0, 0.77778],\n \"8940\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8941\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"8994\": [0.19444, 0.69224, 0, 0, 0.77778],\n \"8995\": [0.19444, 0.69224, 0, 0, 0.77778],\n \"9416\": [0.15559, 0.69224, 0, 0, 0.90222],\n \"9484\": [0, 0.69224, 0, 0, 0.5],\n \"9488\": [0, 0.69224, 0, 0, 0.5],\n \"9492\": [0, 0.37788, 0, 0, 0.5],\n \"9496\": [0, 0.37788, 0, 0, 0.5],\n \"9585\": [0.19444, 0.68889, 0, 0, 0.88889],\n \"9586\": [0.19444, 0.74111, 0, 0, 0.88889],\n \"9632\": [0, 0.675, 0, 0, 0.77778],\n \"9633\": [0, 0.675, 0, 0, 0.77778],\n \"9650\": [0, 0.54986, 0, 0, 0.72222],\n \"9651\": [0, 0.54986, 0, 0, 0.72222],\n \"9654\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"9660\": [0, 0.54986, 0, 0, 0.72222],\n \"9661\": [0, 0.54986, 0, 0, 0.72222],\n \"9664\": [0.03517, 0.54986, 0, 0, 0.77778],\n \"9674\": [0.11111, 0.69224, 0, 0, 0.66667],\n \"9733\": [0.19444, 0.69224, 0, 0, 0.94445],\n \"10003\": [0, 0.69224, 0, 0, 0.83334],\n \"10016\": [0, 0.69224, 0, 0, 0.83334],\n \"10731\": [0.11111, 0.69224, 0, 0, 0.66667],\n \"10846\": [0.19444, 0.75583, 0, 0, 0.61111],\n \"10877\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10878\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10885\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10886\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10887\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10888\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10889\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10890\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10891\": [0.48256, 0.98256, 0, 0, 0.77778],\n \"10892\": [0.48256, 0.98256, 0, 0, 0.77778],\n \"10901\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10902\": [0.13667, 0.63667, 0, 0, 0.77778],\n \"10933\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"10934\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"10935\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10936\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10937\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10938\": [0.26167, 0.75726, 0, 0, 0.77778],\n \"10949\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10950\": [0.25583, 0.75583, 0, 0, 0.77778],\n \"10955\": [0.28481, 0.79383, 0, 0, 0.77778],\n \"10956\": [0.28481, 0.79383, 0, 0, 0.77778],\n \"57350\": [0.08167, 0.58167, 0, 0, 0.22222],\n \"57351\": [0.08167, 0.58167, 0, 0, 0.38889],\n \"57352\": [0.08167, 0.58167, 0, 0, 0.77778],\n \"57353\": [0, 0.43056, 0.04028, 0, 0.66667],\n \"57356\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57357\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57358\": [0.41951, 0.91951, 0, 0, 0.77778],\n \"57359\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"57360\": [0.30274, 0.79383, 0, 0, 0.77778],\n \"57361\": [0.41951, 0.91951, 0, 0, 0.77778],\n \"57366\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57367\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57368\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57369\": [0.25142, 0.75726, 0, 0, 0.77778],\n \"57370\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"57371\": [0.13597, 0.63597, 0, 0, 0.77778]\n },\n \"Caligraphic-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.68333, 0, 0.19445, 0.79847],\n \"66\": [0, 0.68333, 0.03041, 0.13889, 0.65681],\n \"67\": [0, 0.68333, 0.05834, 0.13889, 0.52653],\n \"68\": [0, 0.68333, 0.02778, 0.08334, 0.77139],\n \"69\": [0, 0.68333, 0.08944, 0.11111, 0.52778],\n \"70\": [0, 0.68333, 0.09931, 0.11111, 0.71875],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],\n \"72\": [0, 0.68333, 0.00965, 0.11111, 0.84452],\n \"73\": [0, 0.68333, 0.07382, 0, 0.54452],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],\n \"75\": [0, 0.68333, 0.01445, 0.05556, 0.76195],\n \"76\": [0, 0.68333, 0, 0.13889, 0.68972],\n \"77\": [0, 0.68333, 0, 0.13889, 1.2009],\n \"78\": [0, 0.68333, 0.14736, 0.08334, 0.82049],\n \"79\": [0, 0.68333, 0.02778, 0.11111, 0.79611],\n \"80\": [0, 0.68333, 0.08222, 0.08334, 0.69556],\n \"81\": [0.09722, 0.68333, 0, 0.11111, 0.81667],\n \"82\": [0, 0.68333, 0, 0.08334, 0.8475],\n \"83\": [0, 0.68333, 0.075, 0.13889, 0.60556],\n \"84\": [0, 0.68333, 0.25417, 0, 0.54464],\n \"85\": [0, 0.68333, 0.09931, 0.08334, 0.62583],\n \"86\": [0, 0.68333, 0.08222, 0, 0.61278],\n \"87\": [0, 0.68333, 0.08222, 0.08334, 0.98778],\n \"88\": [0, 0.68333, 0.14643, 0.13889, 0.7133],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],\n \"90\": [0, 0.68333, 0.07944, 0.13889, 0.72473],\n \"160\": [0, 0, 0, 0, 0.25]\n },\n \"Fraktur-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69141, 0, 0, 0.29574],\n \"34\": [0, 0.69141, 0, 0, 0.21471],\n \"38\": [0, 0.69141, 0, 0, 0.73786],\n \"39\": [0, 0.69141, 0, 0, 0.21201],\n \"40\": [0.24982, 0.74947, 0, 0, 0.38865],\n \"41\": [0.24982, 0.74947, 0, 0, 0.38865],\n \"42\": [0, 0.62119, 0, 0, 0.27764],\n \"43\": [0.08319, 0.58283, 0, 0, 0.75623],\n \"44\": [0, 0.10803, 0, 0, 0.27764],\n \"45\": [0.08319, 0.58283, 0, 0, 0.75623],\n \"46\": [0, 0.10803, 0, 0, 0.27764],\n \"47\": [0.24982, 0.74947, 0, 0, 0.50181],\n \"48\": [0, 0.47534, 0, 0, 0.50181],\n \"49\": [0, 0.47534, 0, 0, 0.50181],\n \"50\": [0, 0.47534, 0, 0, 0.50181],\n \"51\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"52\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"53\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"54\": [0, 0.69141, 0, 0, 0.50181],\n \"55\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"56\": [0, 0.69141, 0, 0, 0.50181],\n \"57\": [0.18906, 0.47534, 0, 0, 0.50181],\n \"58\": [0, 0.47534, 0, 0, 0.21606],\n \"59\": [0.12604, 0.47534, 0, 0, 0.21606],\n \"61\": [-0.13099, 0.36866, 0, 0, 0.75623],\n \"63\": [0, 0.69141, 0, 0, 0.36245],\n \"65\": [0, 0.69141, 0, 0, 0.7176],\n \"66\": [0, 0.69141, 0, 0, 0.88397],\n \"67\": [0, 0.69141, 0, 0, 0.61254],\n \"68\": [0, 0.69141, 0, 0, 0.83158],\n \"69\": [0, 0.69141, 0, 0, 0.66278],\n \"70\": [0.12604, 0.69141, 0, 0, 0.61119],\n \"71\": [0, 0.69141, 0, 0, 0.78539],\n \"72\": [0.06302, 0.69141, 0, 0, 0.7203],\n \"73\": [0, 0.69141, 0, 0, 0.55448],\n \"74\": [0.12604, 0.69141, 0, 0, 0.55231],\n \"75\": [0, 0.69141, 0, 0, 0.66845],\n \"76\": [0, 0.69141, 0, 0, 0.66602],\n \"77\": [0, 0.69141, 0, 0, 1.04953],\n \"78\": [0, 0.69141, 0, 0, 0.83212],\n \"79\": [0, 0.69141, 0, 0, 0.82699],\n \"80\": [0.18906, 0.69141, 0, 0, 0.82753],\n \"81\": [0.03781, 0.69141, 0, 0, 0.82699],\n \"82\": [0, 0.69141, 0, 0, 0.82807],\n \"83\": [0, 0.69141, 0, 0, 0.82861],\n \"84\": [0, 0.69141, 0, 0, 0.66899],\n \"85\": [0, 0.69141, 0, 0, 0.64576],\n \"86\": [0, 0.69141, 0, 0, 0.83131],\n \"87\": [0, 0.69141, 0, 0, 1.04602],\n \"88\": [0, 0.69141, 0, 0, 0.71922],\n \"89\": [0.18906, 0.69141, 0, 0, 0.83293],\n \"90\": [0.12604, 0.69141, 0, 0, 0.60201],\n \"91\": [0.24982, 0.74947, 0, 0, 0.27764],\n \"93\": [0.24982, 0.74947, 0, 0, 0.27764],\n \"94\": [0, 0.69141, 0, 0, 0.49965],\n \"97\": [0, 0.47534, 0, 0, 0.50046],\n \"98\": [0, 0.69141, 0, 0, 0.51315],\n \"99\": [0, 0.47534, 0, 0, 0.38946],\n \"100\": [0, 0.62119, 0, 0, 0.49857],\n \"101\": [0, 0.47534, 0, 0, 0.40053],\n \"102\": [0.18906, 0.69141, 0, 0, 0.32626],\n \"103\": [0.18906, 0.47534, 0, 0, 0.5037],\n \"104\": [0.18906, 0.69141, 0, 0, 0.52126],\n \"105\": [0, 0.69141, 0, 0, 0.27899],\n \"106\": [0, 0.69141, 0, 0, 0.28088],\n \"107\": [0, 0.69141, 0, 0, 0.38946],\n \"108\": [0, 0.69141, 0, 0, 0.27953],\n \"109\": [0, 0.47534, 0, 0, 0.76676],\n \"110\": [0, 0.47534, 0, 0, 0.52666],\n \"111\": [0, 0.47534, 0, 0, 0.48885],\n \"112\": [0.18906, 0.52396, 0, 0, 0.50046],\n \"113\": [0.18906, 0.47534, 0, 0, 0.48912],\n \"114\": [0, 0.47534, 0, 0, 0.38919],\n \"115\": [0, 0.47534, 0, 0, 0.44266],\n \"116\": [0, 0.62119, 0, 0, 0.33301],\n \"117\": [0, 0.47534, 0, 0, 0.5172],\n \"118\": [0, 0.52396, 0, 0, 0.5118],\n \"119\": [0, 0.52396, 0, 0, 0.77351],\n \"120\": [0.18906, 0.47534, 0, 0, 0.38865],\n \"121\": [0.18906, 0.47534, 0, 0, 0.49884],\n \"122\": [0.18906, 0.47534, 0, 0, 0.39054],\n \"160\": [0, 0, 0, 0, 0.25],\n \"8216\": [0, 0.69141, 0, 0, 0.21471],\n \"8217\": [0, 0.69141, 0, 0, 0.21471],\n \"58112\": [0, 0.62119, 0, 0, 0.49749],\n \"58113\": [0, 0.62119, 0, 0, 0.4983],\n \"58114\": [0.18906, 0.69141, 0, 0, 0.33328],\n \"58115\": [0.18906, 0.69141, 0, 0, 0.32923],\n \"58116\": [0.18906, 0.47534, 0, 0, 0.50343],\n \"58117\": [0, 0.69141, 0, 0, 0.33301],\n \"58118\": [0, 0.62119, 0, 0, 0.33409],\n \"58119\": [0, 0.47534, 0, 0, 0.50073]\n },\n \"Main-Bold\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.35],\n \"34\": [0, 0.69444, 0, 0, 0.60278],\n \"35\": [0.19444, 0.69444, 0, 0, 0.95833],\n \"36\": [0.05556, 0.75, 0, 0, 0.575],\n \"37\": [0.05556, 0.75, 0, 0, 0.95833],\n \"38\": [0, 0.69444, 0, 0, 0.89444],\n \"39\": [0, 0.69444, 0, 0, 0.31944],\n \"40\": [0.25, 0.75, 0, 0, 0.44722],\n \"41\": [0.25, 0.75, 0, 0, 0.44722],\n \"42\": [0, 0.75, 0, 0, 0.575],\n \"43\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"44\": [0.19444, 0.15556, 0, 0, 0.31944],\n \"45\": [0, 0.44444, 0, 0, 0.38333],\n \"46\": [0, 0.15556, 0, 0, 0.31944],\n \"47\": [0.25, 0.75, 0, 0, 0.575],\n \"48\": [0, 0.64444, 0, 0, 0.575],\n \"49\": [0, 0.64444, 0, 0, 0.575],\n \"50\": [0, 0.64444, 0, 0, 0.575],\n \"51\": [0, 0.64444, 0, 0, 0.575],\n \"52\": [0, 0.64444, 0, 0, 0.575],\n \"53\": [0, 0.64444, 0, 0, 0.575],\n \"54\": [0, 0.64444, 0, 0, 0.575],\n \"55\": [0, 0.64444, 0, 0, 0.575],\n \"56\": [0, 0.64444, 0, 0, 0.575],\n \"57\": [0, 0.64444, 0, 0, 0.575],\n \"58\": [0, 0.44444, 0, 0, 0.31944],\n \"59\": [0.19444, 0.44444, 0, 0, 0.31944],\n \"60\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"61\": [-0.10889, 0.39111, 0, 0, 0.89444],\n \"62\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"63\": [0, 0.69444, 0, 0, 0.54305],\n \"64\": [0, 0.69444, 0, 0, 0.89444],\n \"65\": [0, 0.68611, 0, 0, 0.86944],\n \"66\": [0, 0.68611, 0, 0, 0.81805],\n \"67\": [0, 0.68611, 0, 0, 0.83055],\n \"68\": [0, 0.68611, 0, 0, 0.88194],\n \"69\": [0, 0.68611, 0, 0, 0.75555],\n \"70\": [0, 0.68611, 0, 0, 0.72361],\n \"71\": [0, 0.68611, 0, 0, 0.90416],\n \"72\": [0, 0.68611, 0, 0, 0.9],\n \"73\": [0, 0.68611, 0, 0, 0.43611],\n \"74\": [0, 0.68611, 0, 0, 0.59444],\n \"75\": [0, 0.68611, 0, 0, 0.90138],\n \"76\": [0, 0.68611, 0, 0, 0.69166],\n \"77\": [0, 0.68611, 0, 0, 1.09166],\n \"78\": [0, 0.68611, 0, 0, 0.9],\n \"79\": [0, 0.68611, 0, 0, 0.86388],\n \"80\": [0, 0.68611, 0, 0, 0.78611],\n \"81\": [0.19444, 0.68611, 0, 0, 0.86388],\n \"82\": [0, 0.68611, 0, 0, 0.8625],\n \"83\": [0, 0.68611, 0, 0, 0.63889],\n \"84\": [0, 0.68611, 0, 0, 0.8],\n \"85\": [0, 0.68611, 0, 0, 0.88472],\n \"86\": [0, 0.68611, 0.01597, 0, 0.86944],\n \"87\": [0, 0.68611, 0.01597, 0, 1.18888],\n \"88\": [0, 0.68611, 0, 0, 0.86944],\n \"89\": [0, 0.68611, 0.02875, 0, 0.86944],\n \"90\": [0, 0.68611, 0, 0, 0.70277],\n \"91\": [0.25, 0.75, 0, 0, 0.31944],\n \"92\": [0.25, 0.75, 0, 0, 0.575],\n \"93\": [0.25, 0.75, 0, 0, 0.31944],\n \"94\": [0, 0.69444, 0, 0, 0.575],\n \"95\": [0.31, 0.13444, 0.03194, 0, 0.575],\n \"97\": [0, 0.44444, 0, 0, 0.55902],\n \"98\": [0, 0.69444, 0, 0, 0.63889],\n \"99\": [0, 0.44444, 0, 0, 0.51111],\n \"100\": [0, 0.69444, 0, 0, 0.63889],\n \"101\": [0, 0.44444, 0, 0, 0.52708],\n \"102\": [0, 0.69444, 0.10903, 0, 0.35139],\n \"103\": [0.19444, 0.44444, 0.01597, 0, 0.575],\n \"104\": [0, 0.69444, 0, 0, 0.63889],\n \"105\": [0, 0.69444, 0, 0, 0.31944],\n \"106\": [0.19444, 0.69444, 0, 0, 0.35139],\n \"107\": [0, 0.69444, 0, 0, 0.60694],\n \"108\": [0, 0.69444, 0, 0, 0.31944],\n \"109\": [0, 0.44444, 0, 0, 0.95833],\n \"110\": [0, 0.44444, 0, 0, 0.63889],\n \"111\": [0, 0.44444, 0, 0, 0.575],\n \"112\": [0.19444, 0.44444, 0, 0, 0.63889],\n \"113\": [0.19444, 0.44444, 0, 0, 0.60694],\n \"114\": [0, 0.44444, 0, 0, 0.47361],\n \"115\": [0, 0.44444, 0, 0, 0.45361],\n \"116\": [0, 0.63492, 0, 0, 0.44722],\n \"117\": [0, 0.44444, 0, 0, 0.63889],\n \"118\": [0, 0.44444, 0.01597, 0, 0.60694],\n \"119\": [0, 0.44444, 0.01597, 0, 0.83055],\n \"120\": [0, 0.44444, 0, 0, 0.60694],\n \"121\": [0.19444, 0.44444, 0.01597, 0, 0.60694],\n \"122\": [0, 0.44444, 0, 0, 0.51111],\n \"123\": [0.25, 0.75, 0, 0, 0.575],\n \"124\": [0.25, 0.75, 0, 0, 0.31944],\n \"125\": [0.25, 0.75, 0, 0, 0.575],\n \"126\": [0.35, 0.34444, 0, 0, 0.575],\n \"160\": [0, 0, 0, 0, 0.25],\n \"163\": [0, 0.69444, 0, 0, 0.86853],\n \"168\": [0, 0.69444, 0, 0, 0.575],\n \"172\": [0, 0.44444, 0, 0, 0.76666],\n \"176\": [0, 0.69444, 0, 0, 0.86944],\n \"177\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"184\": [0.17014, 0, 0, 0, 0.51111],\n \"198\": [0, 0.68611, 0, 0, 1.04166],\n \"215\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"216\": [0.04861, 0.73472, 0, 0, 0.89444],\n \"223\": [0, 0.69444, 0, 0, 0.59722],\n \"230\": [0, 0.44444, 0, 0, 0.83055],\n \"247\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"248\": [0.09722, 0.54167, 0, 0, 0.575],\n \"305\": [0, 0.44444, 0, 0, 0.31944],\n \"338\": [0, 0.68611, 0, 0, 1.16944],\n \"339\": [0, 0.44444, 0, 0, 0.89444],\n \"567\": [0.19444, 0.44444, 0, 0, 0.35139],\n \"710\": [0, 0.69444, 0, 0, 0.575],\n \"711\": [0, 0.63194, 0, 0, 0.575],\n \"713\": [0, 0.59611, 0, 0, 0.575],\n \"714\": [0, 0.69444, 0, 0, 0.575],\n \"715\": [0, 0.69444, 0, 0, 0.575],\n \"728\": [0, 0.69444, 0, 0, 0.575],\n \"729\": [0, 0.69444, 0, 0, 0.31944],\n \"730\": [0, 0.69444, 0, 0, 0.86944],\n \"732\": [0, 0.69444, 0, 0, 0.575],\n \"733\": [0, 0.69444, 0, 0, 0.575],\n \"915\": [0, 0.68611, 0, 0, 0.69166],\n \"916\": [0, 0.68611, 0, 0, 0.95833],\n \"920\": [0, 0.68611, 0, 0, 0.89444],\n \"923\": [0, 0.68611, 0, 0, 0.80555],\n \"926\": [0, 0.68611, 0, 0, 0.76666],\n \"928\": [0, 0.68611, 0, 0, 0.9],\n \"931\": [0, 0.68611, 0, 0, 0.83055],\n \"933\": [0, 0.68611, 0, 0, 0.89444],\n \"934\": [0, 0.68611, 0, 0, 0.83055],\n \"936\": [0, 0.68611, 0, 0, 0.89444],\n \"937\": [0, 0.68611, 0, 0, 0.83055],\n \"8211\": [0, 0.44444, 0.03194, 0, 0.575],\n \"8212\": [0, 0.44444, 0.03194, 0, 1.14999],\n \"8216\": [0, 0.69444, 0, 0, 0.31944],\n \"8217\": [0, 0.69444, 0, 0, 0.31944],\n \"8220\": [0, 0.69444, 0, 0, 0.60278],\n \"8221\": [0, 0.69444, 0, 0, 0.60278],\n \"8224\": [0.19444, 0.69444, 0, 0, 0.51111],\n \"8225\": [0.19444, 0.69444, 0, 0, 0.51111],\n \"8242\": [0, 0.55556, 0, 0, 0.34444],\n \"8407\": [0, 0.72444, 0.15486, 0, 0.575],\n \"8463\": [0, 0.69444, 0, 0, 0.66759],\n \"8465\": [0, 0.69444, 0, 0, 0.83055],\n \"8467\": [0, 0.69444, 0, 0, 0.47361],\n \"8472\": [0.19444, 0.44444, 0, 0, 0.74027],\n \"8476\": [0, 0.69444, 0, 0, 0.83055],\n \"8501\": [0, 0.69444, 0, 0, 0.70277],\n \"8592\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8593\": [0.19444, 0.69444, 0, 0, 0.575],\n \"8594\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8595\": [0.19444, 0.69444, 0, 0, 0.575],\n \"8596\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8597\": [0.25, 0.75, 0, 0, 0.575],\n \"8598\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8599\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8600\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8601\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"8636\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8637\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8640\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8641\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8656\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8657\": [0.19444, 0.69444, 0, 0, 0.70277],\n \"8658\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8659\": [0.19444, 0.69444, 0, 0, 0.70277],\n \"8660\": [-0.10889, 0.39111, 0, 0, 1.14999],\n \"8661\": [0.25, 0.75, 0, 0, 0.70277],\n \"8704\": [0, 0.69444, 0, 0, 0.63889],\n \"8706\": [0, 0.69444, 0.06389, 0, 0.62847],\n \"8707\": [0, 0.69444, 0, 0, 0.63889],\n \"8709\": [0.05556, 0.75, 0, 0, 0.575],\n \"8711\": [0, 0.68611, 0, 0, 0.95833],\n \"8712\": [0.08556, 0.58556, 0, 0, 0.76666],\n \"8715\": [0.08556, 0.58556, 0, 0, 0.76666],\n \"8722\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8723\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8725\": [0.25, 0.75, 0, 0, 0.575],\n \"8726\": [0.25, 0.75, 0, 0, 0.575],\n \"8727\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"8728\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8729\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8730\": [0.18, 0.82, 0, 0, 0.95833],\n \"8733\": [0, 0.44444, 0, 0, 0.89444],\n \"8734\": [0, 0.44444, 0, 0, 1.14999],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8739\": [0.25, 0.75, 0, 0, 0.31944],\n \"8741\": [0.25, 0.75, 0, 0, 0.575],\n \"8743\": [0, 0.55556, 0, 0, 0.76666],\n \"8744\": [0, 0.55556, 0, 0, 0.76666],\n \"8745\": [0, 0.55556, 0, 0, 0.76666],\n \"8746\": [0, 0.55556, 0, 0, 0.76666],\n \"8747\": [0.19444, 0.69444, 0.12778, 0, 0.56875],\n \"8764\": [-0.10889, 0.39111, 0, 0, 0.89444],\n \"8768\": [0.19444, 0.69444, 0, 0, 0.31944],\n \"8771\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8773\": [0.027, 0.638, 0, 0, 0.894],\n \"8776\": [0.02444, 0.52444, 0, 0, 0.89444],\n \"8781\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8801\": [0.00222, 0.50222, 0, 0, 0.89444],\n \"8804\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8805\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8810\": [0.08556, 0.58556, 0, 0, 1.14999],\n \"8811\": [0.08556, 0.58556, 0, 0, 1.14999],\n \"8826\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8827\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8834\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8835\": [0.08556, 0.58556, 0, 0, 0.89444],\n \"8838\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8839\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8846\": [0, 0.55556, 0, 0, 0.76666],\n \"8849\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8850\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"8851\": [0, 0.55556, 0, 0, 0.76666],\n \"8852\": [0, 0.55556, 0, 0, 0.76666],\n \"8853\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8854\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8855\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8856\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8857\": [0.13333, 0.63333, 0, 0, 0.89444],\n \"8866\": [0, 0.69444, 0, 0, 0.70277],\n \"8867\": [0, 0.69444, 0, 0, 0.70277],\n \"8868\": [0, 0.69444, 0, 0, 0.89444],\n \"8869\": [0, 0.69444, 0, 0, 0.89444],\n \"8900\": [-0.02639, 0.47361, 0, 0, 0.575],\n \"8901\": [-0.02639, 0.47361, 0, 0, 0.31944],\n \"8902\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"8968\": [0.25, 0.75, 0, 0, 0.51111],\n \"8969\": [0.25, 0.75, 0, 0, 0.51111],\n \"8970\": [0.25, 0.75, 0, 0, 0.51111],\n \"8971\": [0.25, 0.75, 0, 0, 0.51111],\n \"8994\": [-0.13889, 0.36111, 0, 0, 1.14999],\n \"8995\": [-0.13889, 0.36111, 0, 0, 1.14999],\n \"9651\": [0.19444, 0.69444, 0, 0, 1.02222],\n \"9657\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"9661\": [0.19444, 0.69444, 0, 0, 1.02222],\n \"9667\": [-0.02778, 0.47222, 0, 0, 0.575],\n \"9711\": [0.19444, 0.69444, 0, 0, 1.14999],\n \"9824\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9825\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9826\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9827\": [0.12963, 0.69444, 0, 0, 0.89444],\n \"9837\": [0, 0.75, 0, 0, 0.44722],\n \"9838\": [0.19444, 0.69444, 0, 0, 0.44722],\n \"9839\": [0.19444, 0.69444, 0, 0, 0.44722],\n \"10216\": [0.25, 0.75, 0, 0, 0.44722],\n \"10217\": [0.25, 0.75, 0, 0, 0.44722],\n \"10815\": [0, 0.68611, 0, 0, 0.9],\n \"10927\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"10928\": [0.19667, 0.69667, 0, 0, 0.89444],\n \"57376\": [0.19444, 0.69444, 0, 0, 0]\n },\n \"Main-BoldItalic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.11417, 0, 0.38611],\n \"34\": [0, 0.69444, 0.07939, 0, 0.62055],\n \"35\": [0.19444, 0.69444, 0.06833, 0, 0.94444],\n \"37\": [0.05556, 0.75, 0.12861, 0, 0.94444],\n \"38\": [0, 0.69444, 0.08528, 0, 0.88555],\n \"39\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"40\": [0.25, 0.75, 0.15806, 0, 0.47333],\n \"41\": [0.25, 0.75, 0.03306, 0, 0.47333],\n \"42\": [0, 0.75, 0.14333, 0, 0.59111],\n \"43\": [0.10333, 0.60333, 0.03306, 0, 0.88555],\n \"44\": [0.19444, 0.14722, 0, 0, 0.35555],\n \"45\": [0, 0.44444, 0.02611, 0, 0.41444],\n \"46\": [0, 0.14722, 0, 0, 0.35555],\n \"47\": [0.25, 0.75, 0.15806, 0, 0.59111],\n \"48\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"49\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"50\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"51\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"52\": [0.19444, 0.64444, 0.13167, 0, 0.59111],\n \"53\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"54\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"55\": [0.19444, 0.64444, 0.13167, 0, 0.59111],\n \"56\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"57\": [0, 0.64444, 0.13167, 0, 0.59111],\n \"58\": [0, 0.44444, 0.06695, 0, 0.35555],\n \"59\": [0.19444, 0.44444, 0.06695, 0, 0.35555],\n \"61\": [-0.10889, 0.39111, 0.06833, 0, 0.88555],\n \"63\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"64\": [0, 0.69444, 0.09208, 0, 0.88555],\n \"65\": [0, 0.68611, 0, 0, 0.86555],\n \"66\": [0, 0.68611, 0.0992, 0, 0.81666],\n \"67\": [0, 0.68611, 0.14208, 0, 0.82666],\n \"68\": [0, 0.68611, 0.09062, 0, 0.87555],\n \"69\": [0, 0.68611, 0.11431, 0, 0.75666],\n \"70\": [0, 0.68611, 0.12903, 0, 0.72722],\n \"71\": [0, 0.68611, 0.07347, 0, 0.89527],\n \"72\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"73\": [0, 0.68611, 0.15681, 0, 0.47166],\n \"74\": [0, 0.68611, 0.145, 0, 0.61055],\n \"75\": [0, 0.68611, 0.14208, 0, 0.89499],\n \"76\": [0, 0.68611, 0, 0, 0.69777],\n \"77\": [0, 0.68611, 0.17208, 0, 1.07277],\n \"78\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"79\": [0, 0.68611, 0.09062, 0, 0.85499],\n \"80\": [0, 0.68611, 0.0992, 0, 0.78721],\n \"81\": [0.19444, 0.68611, 0.09062, 0, 0.85499],\n \"82\": [0, 0.68611, 0.02559, 0, 0.85944],\n \"83\": [0, 0.68611, 0.11264, 0, 0.64999],\n \"84\": [0, 0.68611, 0.12903, 0, 0.7961],\n \"85\": [0, 0.68611, 0.17208, 0, 0.88083],\n \"86\": [0, 0.68611, 0.18625, 0, 0.86555],\n \"87\": [0, 0.68611, 0.18625, 0, 1.15999],\n \"88\": [0, 0.68611, 0.15681, 0, 0.86555],\n \"89\": [0, 0.68611, 0.19803, 0, 0.86555],\n \"90\": [0, 0.68611, 0.14208, 0, 0.70888],\n \"91\": [0.25, 0.75, 0.1875, 0, 0.35611],\n \"93\": [0.25, 0.75, 0.09972, 0, 0.35611],\n \"94\": [0, 0.69444, 0.06709, 0, 0.59111],\n \"95\": [0.31, 0.13444, 0.09811, 0, 0.59111],\n \"97\": [0, 0.44444, 0.09426, 0, 0.59111],\n \"98\": [0, 0.69444, 0.07861, 0, 0.53222],\n \"99\": [0, 0.44444, 0.05222, 0, 0.53222],\n \"100\": [0, 0.69444, 0.10861, 0, 0.59111],\n \"101\": [0, 0.44444, 0.085, 0, 0.53222],\n \"102\": [0.19444, 0.69444, 0.21778, 0, 0.4],\n \"103\": [0.19444, 0.44444, 0.105, 0, 0.53222],\n \"104\": [0, 0.69444, 0.09426, 0, 0.59111],\n \"105\": [0, 0.69326, 0.11387, 0, 0.35555],\n \"106\": [0.19444, 0.69326, 0.1672, 0, 0.35555],\n \"107\": [0, 0.69444, 0.11111, 0, 0.53222],\n \"108\": [0, 0.69444, 0.10861, 0, 0.29666],\n \"109\": [0, 0.44444, 0.09426, 0, 0.94444],\n \"110\": [0, 0.44444, 0.09426, 0, 0.64999],\n \"111\": [0, 0.44444, 0.07861, 0, 0.59111],\n \"112\": [0.19444, 0.44444, 0.07861, 0, 0.59111],\n \"113\": [0.19444, 0.44444, 0.105, 0, 0.53222],\n \"114\": [0, 0.44444, 0.11111, 0, 0.50167],\n \"115\": [0, 0.44444, 0.08167, 0, 0.48694],\n \"116\": [0, 0.63492, 0.09639, 0, 0.385],\n \"117\": [0, 0.44444, 0.09426, 0, 0.62055],\n \"118\": [0, 0.44444, 0.11111, 0, 0.53222],\n \"119\": [0, 0.44444, 0.11111, 0, 0.76777],\n \"120\": [0, 0.44444, 0.12583, 0, 0.56055],\n \"121\": [0.19444, 0.44444, 0.105, 0, 0.56166],\n \"122\": [0, 0.44444, 0.13889, 0, 0.49055],\n \"126\": [0.35, 0.34444, 0.11472, 0, 0.59111],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.69444, 0.11473, 0, 0.59111],\n \"176\": [0, 0.69444, 0, 0, 0.94888],\n \"184\": [0.17014, 0, 0, 0, 0.53222],\n \"198\": [0, 0.68611, 0.11431, 0, 1.02277],\n \"216\": [0.04861, 0.73472, 0.09062, 0, 0.88555],\n \"223\": [0.19444, 0.69444, 0.09736, 0, 0.665],\n \"230\": [0, 0.44444, 0.085, 0, 0.82666],\n \"248\": [0.09722, 0.54167, 0.09458, 0, 0.59111],\n \"305\": [0, 0.44444, 0.09426, 0, 0.35555],\n \"338\": [0, 0.68611, 0.11431, 0, 1.14054],\n \"339\": [0, 0.44444, 0.085, 0, 0.82666],\n \"567\": [0.19444, 0.44444, 0.04611, 0, 0.385],\n \"710\": [0, 0.69444, 0.06709, 0, 0.59111],\n \"711\": [0, 0.63194, 0.08271, 0, 0.59111],\n \"713\": [0, 0.59444, 0.10444, 0, 0.59111],\n \"714\": [0, 0.69444, 0.08528, 0, 0.59111],\n \"715\": [0, 0.69444, 0, 0, 0.59111],\n \"728\": [0, 0.69444, 0.10333, 0, 0.59111],\n \"729\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"730\": [0, 0.69444, 0, 0, 0.94888],\n \"732\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"733\": [0, 0.69444, 0.11472, 0, 0.59111],\n \"915\": [0, 0.68611, 0.12903, 0, 0.69777],\n \"916\": [0, 0.68611, 0, 0, 0.94444],\n \"920\": [0, 0.68611, 0.09062, 0, 0.88555],\n \"923\": [0, 0.68611, 0, 0, 0.80666],\n \"926\": [0, 0.68611, 0.15092, 0, 0.76777],\n \"928\": [0, 0.68611, 0.17208, 0, 0.8961],\n \"931\": [0, 0.68611, 0.11431, 0, 0.82666],\n \"933\": [0, 0.68611, 0.10778, 0, 0.88555],\n \"934\": [0, 0.68611, 0.05632, 0, 0.82666],\n \"936\": [0, 0.68611, 0.10778, 0, 0.88555],\n \"937\": [0, 0.68611, 0.0992, 0, 0.82666],\n \"8211\": [0, 0.44444, 0.09811, 0, 0.59111],\n \"8212\": [0, 0.44444, 0.09811, 0, 1.18221],\n \"8216\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"8217\": [0, 0.69444, 0.12945, 0, 0.35555],\n \"8220\": [0, 0.69444, 0.16772, 0, 0.62055],\n \"8221\": [0, 0.69444, 0.07939, 0, 0.62055]\n },\n \"Main-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"34\": [0, 0.69444, 0.06961, 0, 0.51444],\n \"35\": [0.19444, 0.69444, 0.06616, 0, 0.81777],\n \"37\": [0.05556, 0.75, 0.13639, 0, 0.81777],\n \"38\": [0, 0.69444, 0.09694, 0, 0.76666],\n \"39\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"40\": [0.25, 0.75, 0.16194, 0, 0.40889],\n \"41\": [0.25, 0.75, 0.03694, 0, 0.40889],\n \"42\": [0, 0.75, 0.14917, 0, 0.51111],\n \"43\": [0.05667, 0.56167, 0.03694, 0, 0.76666],\n \"44\": [0.19444, 0.10556, 0, 0, 0.30667],\n \"45\": [0, 0.43056, 0.02826, 0, 0.35778],\n \"46\": [0, 0.10556, 0, 0, 0.30667],\n \"47\": [0.25, 0.75, 0.16194, 0, 0.51111],\n \"48\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"49\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"50\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"51\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"52\": [0.19444, 0.64444, 0.13556, 0, 0.51111],\n \"53\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"54\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"55\": [0.19444, 0.64444, 0.13556, 0, 0.51111],\n \"56\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"57\": [0, 0.64444, 0.13556, 0, 0.51111],\n \"58\": [0, 0.43056, 0.0582, 0, 0.30667],\n \"59\": [0.19444, 0.43056, 0.0582, 0, 0.30667],\n \"61\": [-0.13313, 0.36687, 0.06616, 0, 0.76666],\n \"63\": [0, 0.69444, 0.1225, 0, 0.51111],\n \"64\": [0, 0.69444, 0.09597, 0, 0.76666],\n \"65\": [0, 0.68333, 0, 0, 0.74333],\n \"66\": [0, 0.68333, 0.10257, 0, 0.70389],\n \"67\": [0, 0.68333, 0.14528, 0, 0.71555],\n \"68\": [0, 0.68333, 0.09403, 0, 0.755],\n \"69\": [0, 0.68333, 0.12028, 0, 0.67833],\n \"70\": [0, 0.68333, 0.13305, 0, 0.65277],\n \"71\": [0, 0.68333, 0.08722, 0, 0.77361],\n \"72\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"73\": [0, 0.68333, 0.15806, 0, 0.38555],\n \"74\": [0, 0.68333, 0.14028, 0, 0.525],\n \"75\": [0, 0.68333, 0.14528, 0, 0.76888],\n \"76\": [0, 0.68333, 0, 0, 0.62722],\n \"77\": [0, 0.68333, 0.16389, 0, 0.89666],\n \"78\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"79\": [0, 0.68333, 0.09403, 0, 0.76666],\n \"80\": [0, 0.68333, 0.10257, 0, 0.67833],\n \"81\": [0.19444, 0.68333, 0.09403, 0, 0.76666],\n \"82\": [0, 0.68333, 0.03868, 0, 0.72944],\n \"83\": [0, 0.68333, 0.11972, 0, 0.56222],\n \"84\": [0, 0.68333, 0.13305, 0, 0.71555],\n \"85\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"86\": [0, 0.68333, 0.18361, 0, 0.74333],\n \"87\": [0, 0.68333, 0.18361, 0, 0.99888],\n \"88\": [0, 0.68333, 0.15806, 0, 0.74333],\n \"89\": [0, 0.68333, 0.19383, 0, 0.74333],\n \"90\": [0, 0.68333, 0.14528, 0, 0.61333],\n \"91\": [0.25, 0.75, 0.1875, 0, 0.30667],\n \"93\": [0.25, 0.75, 0.10528, 0, 0.30667],\n \"94\": [0, 0.69444, 0.06646, 0, 0.51111],\n \"95\": [0.31, 0.12056, 0.09208, 0, 0.51111],\n \"97\": [0, 0.43056, 0.07671, 0, 0.51111],\n \"98\": [0, 0.69444, 0.06312, 0, 0.46],\n \"99\": [0, 0.43056, 0.05653, 0, 0.46],\n \"100\": [0, 0.69444, 0.10333, 0, 0.51111],\n \"101\": [0, 0.43056, 0.07514, 0, 0.46],\n \"102\": [0.19444, 0.69444, 0.21194, 0, 0.30667],\n \"103\": [0.19444, 0.43056, 0.08847, 0, 0.46],\n \"104\": [0, 0.69444, 0.07671, 0, 0.51111],\n \"105\": [0, 0.65536, 0.1019, 0, 0.30667],\n \"106\": [0.19444, 0.65536, 0.14467, 0, 0.30667],\n \"107\": [0, 0.69444, 0.10764, 0, 0.46],\n \"108\": [0, 0.69444, 0.10333, 0, 0.25555],\n \"109\": [0, 0.43056, 0.07671, 0, 0.81777],\n \"110\": [0, 0.43056, 0.07671, 0, 0.56222],\n \"111\": [0, 0.43056, 0.06312, 0, 0.51111],\n \"112\": [0.19444, 0.43056, 0.06312, 0, 0.51111],\n \"113\": [0.19444, 0.43056, 0.08847, 0, 0.46],\n \"114\": [0, 0.43056, 0.10764, 0, 0.42166],\n \"115\": [0, 0.43056, 0.08208, 0, 0.40889],\n \"116\": [0, 0.61508, 0.09486, 0, 0.33222],\n \"117\": [0, 0.43056, 0.07671, 0, 0.53666],\n \"118\": [0, 0.43056, 0.10764, 0, 0.46],\n \"119\": [0, 0.43056, 0.10764, 0, 0.66444],\n \"120\": [0, 0.43056, 0.12042, 0, 0.46389],\n \"121\": [0.19444, 0.43056, 0.08847, 0, 0.48555],\n \"122\": [0, 0.43056, 0.12292, 0, 0.40889],\n \"126\": [0.35, 0.31786, 0.11585, 0, 0.51111],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.66786, 0.10474, 0, 0.51111],\n \"176\": [0, 0.69444, 0, 0, 0.83129],\n \"184\": [0.17014, 0, 0, 0, 0.46],\n \"198\": [0, 0.68333, 0.12028, 0, 0.88277],\n \"216\": [0.04861, 0.73194, 0.09403, 0, 0.76666],\n \"223\": [0.19444, 0.69444, 0.10514, 0, 0.53666],\n \"230\": [0, 0.43056, 0.07514, 0, 0.71555],\n \"248\": [0.09722, 0.52778, 0.09194, 0, 0.51111],\n \"338\": [0, 0.68333, 0.12028, 0, 0.98499],\n \"339\": [0, 0.43056, 0.07514, 0, 0.71555],\n \"710\": [0, 0.69444, 0.06646, 0, 0.51111],\n \"711\": [0, 0.62847, 0.08295, 0, 0.51111],\n \"713\": [0, 0.56167, 0.10333, 0, 0.51111],\n \"714\": [0, 0.69444, 0.09694, 0, 0.51111],\n \"715\": [0, 0.69444, 0, 0, 0.51111],\n \"728\": [0, 0.69444, 0.10806, 0, 0.51111],\n \"729\": [0, 0.66786, 0.11752, 0, 0.30667],\n \"730\": [0, 0.69444, 0, 0, 0.83129],\n \"732\": [0, 0.66786, 0.11585, 0, 0.51111],\n \"733\": [0, 0.69444, 0.1225, 0, 0.51111],\n \"915\": [0, 0.68333, 0.13305, 0, 0.62722],\n \"916\": [0, 0.68333, 0, 0, 0.81777],\n \"920\": [0, 0.68333, 0.09403, 0, 0.76666],\n \"923\": [0, 0.68333, 0, 0, 0.69222],\n \"926\": [0, 0.68333, 0.15294, 0, 0.66444],\n \"928\": [0, 0.68333, 0.16389, 0, 0.74333],\n \"931\": [0, 0.68333, 0.12028, 0, 0.71555],\n \"933\": [0, 0.68333, 0.11111, 0, 0.76666],\n \"934\": [0, 0.68333, 0.05986, 0, 0.71555],\n \"936\": [0, 0.68333, 0.11111, 0, 0.76666],\n \"937\": [0, 0.68333, 0.10257, 0, 0.71555],\n \"8211\": [0, 0.43056, 0.09208, 0, 0.51111],\n \"8212\": [0, 0.43056, 0.09208, 0, 1.02222],\n \"8216\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"8217\": [0, 0.69444, 0.12417, 0, 0.30667],\n \"8220\": [0, 0.69444, 0.1685, 0, 0.51444],\n \"8221\": [0, 0.69444, 0.06961, 0, 0.51444],\n \"8463\": [0, 0.68889, 0, 0, 0.54028]\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.27778],\n \"34\": [0, 0.69444, 0, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0, 0, 0.5],\n \"37\": [0.05556, 0.75, 0, 0, 0.83334],\n \"38\": [0, 0.69444, 0, 0, 0.77778],\n \"39\": [0, 0.69444, 0, 0, 0.27778],\n \"40\": [0.25, 0.75, 0, 0, 0.38889],\n \"41\": [0.25, 0.75, 0, 0, 0.38889],\n \"42\": [0, 0.75, 0, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"44\": [0.19444, 0.10556, 0, 0, 0.27778],\n \"45\": [0, 0.43056, 0, 0, 0.33333],\n \"46\": [0, 0.10556, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0, 0, 0.5],\n \"48\": [0, 0.64444, 0, 0, 0.5],\n \"49\": [0, 0.64444, 0, 0, 0.5],\n \"50\": [0, 0.64444, 0, 0, 0.5],\n \"51\": [0, 0.64444, 0, 0, 0.5],\n \"52\": [0, 0.64444, 0, 0, 0.5],\n \"53\": [0, 0.64444, 0, 0, 0.5],\n \"54\": [0, 0.64444, 0, 0, 0.5],\n \"55\": [0, 0.64444, 0, 0, 0.5],\n \"56\": [0, 0.64444, 0, 0, 0.5],\n \"57\": [0, 0.64444, 0, 0, 0.5],\n \"58\": [0, 0.43056, 0, 0, 0.27778],\n \"59\": [0.19444, 0.43056, 0, 0, 0.27778],\n \"60\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"61\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"62\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"63\": [0, 0.69444, 0, 0, 0.47222],\n \"64\": [0, 0.69444, 0, 0, 0.77778],\n \"65\": [0, 0.68333, 0, 0, 0.75],\n \"66\": [0, 0.68333, 0, 0, 0.70834],\n \"67\": [0, 0.68333, 0, 0, 0.72222],\n \"68\": [0, 0.68333, 0, 0, 0.76389],\n \"69\": [0, 0.68333, 0, 0, 0.68056],\n \"70\": [0, 0.68333, 0, 0, 0.65278],\n \"71\": [0, 0.68333, 0, 0, 0.78472],\n \"72\": [0, 0.68333, 0, 0, 0.75],\n \"73\": [0, 0.68333, 0, 0, 0.36111],\n \"74\": [0, 0.68333, 0, 0, 0.51389],\n \"75\": [0, 0.68333, 0, 0, 0.77778],\n \"76\": [0, 0.68333, 0, 0, 0.625],\n \"77\": [0, 0.68333, 0, 0, 0.91667],\n \"78\": [0, 0.68333, 0, 0, 0.75],\n \"79\": [0, 0.68333, 0, 0, 0.77778],\n \"80\": [0, 0.68333, 0, 0, 0.68056],\n \"81\": [0.19444, 0.68333, 0, 0, 0.77778],\n \"82\": [0, 0.68333, 0, 0, 0.73611],\n \"83\": [0, 0.68333, 0, 0, 0.55556],\n \"84\": [0, 0.68333, 0, 0, 0.72222],\n \"85\": [0, 0.68333, 0, 0, 0.75],\n \"86\": [0, 0.68333, 0.01389, 0, 0.75],\n \"87\": [0, 0.68333, 0.01389, 0, 1.02778],\n \"88\": [0, 0.68333, 0, 0, 0.75],\n \"89\": [0, 0.68333, 0.025, 0, 0.75],\n \"90\": [0, 0.68333, 0, 0, 0.61111],\n \"91\": [0.25, 0.75, 0, 0, 0.27778],\n \"92\": [0.25, 0.75, 0, 0, 0.5],\n \"93\": [0.25, 0.75, 0, 0, 0.27778],\n \"94\": [0, 0.69444, 0, 0, 0.5],\n \"95\": [0.31, 0.12056, 0.02778, 0, 0.5],\n \"97\": [0, 0.43056, 0, 0, 0.5],\n \"98\": [0, 0.69444, 0, 0, 0.55556],\n \"99\": [0, 0.43056, 0, 0, 0.44445],\n \"100\": [0, 0.69444, 0, 0, 0.55556],\n \"101\": [0, 0.43056, 0, 0, 0.44445],\n \"102\": [0, 0.69444, 0.07778, 0, 0.30556],\n \"103\": [0.19444, 0.43056, 0.01389, 0, 0.5],\n \"104\": [0, 0.69444, 0, 0, 0.55556],\n \"105\": [0, 0.66786, 0, 0, 0.27778],\n \"106\": [0.19444, 0.66786, 0, 0, 0.30556],\n \"107\": [0, 0.69444, 0, 0, 0.52778],\n \"108\": [0, 0.69444, 0, 0, 0.27778],\n \"109\": [0, 0.43056, 0, 0, 0.83334],\n \"110\": [0, 0.43056, 0, 0, 0.55556],\n \"111\": [0, 0.43056, 0, 0, 0.5],\n \"112\": [0.19444, 0.43056, 0, 0, 0.55556],\n \"113\": [0.19444, 0.43056, 0, 0, 0.52778],\n \"114\": [0, 0.43056, 0, 0, 0.39167],\n \"115\": [0, 0.43056, 0, 0, 0.39445],\n \"116\": [0, 0.61508, 0, 0, 0.38889],\n \"117\": [0, 0.43056, 0, 0, 0.55556],\n \"118\": [0, 0.43056, 0.01389, 0, 0.52778],\n \"119\": [0, 0.43056, 0.01389, 0, 0.72222],\n \"120\": [0, 0.43056, 0, 0, 0.52778],\n \"121\": [0.19444, 0.43056, 0.01389, 0, 0.52778],\n \"122\": [0, 0.43056, 0, 0, 0.44445],\n \"123\": [0.25, 0.75, 0, 0, 0.5],\n \"124\": [0.25, 0.75, 0, 0, 0.27778],\n \"125\": [0.25, 0.75, 0, 0, 0.5],\n \"126\": [0.35, 0.31786, 0, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"163\": [0, 0.69444, 0, 0, 0.76909],\n \"167\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"168\": [0, 0.66786, 0, 0, 0.5],\n \"172\": [0, 0.43056, 0, 0, 0.66667],\n \"176\": [0, 0.69444, 0, 0, 0.75],\n \"177\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"182\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"198\": [0, 0.68333, 0, 0, 0.90278],\n \"215\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"216\": [0.04861, 0.73194, 0, 0, 0.77778],\n \"223\": [0, 0.69444, 0, 0, 0.5],\n \"230\": [0, 0.43056, 0, 0, 0.72222],\n \"247\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"248\": [0.09722, 0.52778, 0, 0, 0.5],\n \"305\": [0, 0.43056, 0, 0, 0.27778],\n \"338\": [0, 0.68333, 0, 0, 1.01389],\n \"339\": [0, 0.43056, 0, 0, 0.77778],\n \"567\": [0.19444, 0.43056, 0, 0, 0.30556],\n \"710\": [0, 0.69444, 0, 0, 0.5],\n \"711\": [0, 0.62847, 0, 0, 0.5],\n \"713\": [0, 0.56778, 0, 0, 0.5],\n \"714\": [0, 0.69444, 0, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0, 0, 0.5],\n \"729\": [0, 0.66786, 0, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.75],\n \"732\": [0, 0.66786, 0, 0, 0.5],\n \"733\": [0, 0.69444, 0, 0, 0.5],\n \"915\": [0, 0.68333, 0, 0, 0.625],\n \"916\": [0, 0.68333, 0, 0, 0.83334],\n \"920\": [0, 0.68333, 0, 0, 0.77778],\n \"923\": [0, 0.68333, 0, 0, 0.69445],\n \"926\": [0, 0.68333, 0, 0, 0.66667],\n \"928\": [0, 0.68333, 0, 0, 0.75],\n \"931\": [0, 0.68333, 0, 0, 0.72222],\n \"933\": [0, 0.68333, 0, 0, 0.77778],\n \"934\": [0, 0.68333, 0, 0, 0.72222],\n \"936\": [0, 0.68333, 0, 0, 0.77778],\n \"937\": [0, 0.68333, 0, 0, 0.72222],\n \"8211\": [0, 0.43056, 0.02778, 0, 0.5],\n \"8212\": [0, 0.43056, 0.02778, 0, 1.0],\n \"8216\": [0, 0.69444, 0, 0, 0.27778],\n \"8217\": [0, 0.69444, 0, 0, 0.27778],\n \"8220\": [0, 0.69444, 0, 0, 0.5],\n \"8221\": [0, 0.69444, 0, 0, 0.5],\n \"8224\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"8225\": [0.19444, 0.69444, 0, 0, 0.44445],\n \"8230\": [0, 0.123, 0, 0, 1.172],\n \"8242\": [0, 0.55556, 0, 0, 0.275],\n \"8407\": [0, 0.71444, 0.15382, 0, 0.5],\n \"8463\": [0, 0.68889, 0, 0, 0.54028],\n \"8465\": [0, 0.69444, 0, 0, 0.72222],\n \"8467\": [0, 0.69444, 0, 0.11111, 0.41667],\n \"8472\": [0.19444, 0.43056, 0, 0.11111, 0.63646],\n \"8476\": [0, 0.69444, 0, 0, 0.72222],\n \"8501\": [0, 0.69444, 0, 0, 0.61111],\n \"8592\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8593\": [0.19444, 0.69444, 0, 0, 0.5],\n \"8594\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8595\": [0.19444, 0.69444, 0, 0, 0.5],\n \"8596\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8597\": [0.25, 0.75, 0, 0, 0.5],\n \"8598\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8599\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8600\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8601\": [0.19444, 0.69444, 0, 0, 1.0],\n \"8614\": [0.011, 0.511, 0, 0, 1.0],\n \"8617\": [0.011, 0.511, 0, 0, 1.126],\n \"8618\": [0.011, 0.511, 0, 0, 1.126],\n \"8636\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8637\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8640\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8641\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8652\": [0.011, 0.671, 0, 0, 1.0],\n \"8656\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8657\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"8658\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8659\": [0.19444, 0.69444, 0, 0, 0.61111],\n \"8660\": [-0.13313, 0.36687, 0, 0, 1.0],\n \"8661\": [0.25, 0.75, 0, 0, 0.61111],\n \"8704\": [0, 0.69444, 0, 0, 0.55556],\n \"8706\": [0, 0.69444, 0.05556, 0.08334, 0.5309],\n \"8707\": [0, 0.69444, 0, 0, 0.55556],\n \"8709\": [0.05556, 0.75, 0, 0, 0.5],\n \"8711\": [0, 0.68333, 0, 0, 0.83334],\n \"8712\": [0.0391, 0.5391, 0, 0, 0.66667],\n \"8715\": [0.0391, 0.5391, 0, 0, 0.66667],\n \"8722\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8723\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8725\": [0.25, 0.75, 0, 0, 0.5],\n \"8726\": [0.25, 0.75, 0, 0, 0.5],\n \"8727\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"8728\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8729\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8730\": [0.2, 0.8, 0, 0, 0.83334],\n \"8733\": [0, 0.43056, 0, 0, 0.77778],\n \"8734\": [0, 0.43056, 0, 0, 1.0],\n \"8736\": [0, 0.69224, 0, 0, 0.72222],\n \"8739\": [0.25, 0.75, 0, 0, 0.27778],\n \"8741\": [0.25, 0.75, 0, 0, 0.5],\n \"8743\": [0, 0.55556, 0, 0, 0.66667],\n \"8744\": [0, 0.55556, 0, 0, 0.66667],\n \"8745\": [0, 0.55556, 0, 0, 0.66667],\n \"8746\": [0, 0.55556, 0, 0, 0.66667],\n \"8747\": [0.19444, 0.69444, 0.11111, 0, 0.41667],\n \"8764\": [-0.13313, 0.36687, 0, 0, 0.77778],\n \"8768\": [0.19444, 0.69444, 0, 0, 0.27778],\n \"8771\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8773\": [-0.022, 0.589, 0, 0, 0.778],\n \"8776\": [-0.01688, 0.48312, 0, 0, 0.77778],\n \"8781\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8784\": [-0.133, 0.673, 0, 0, 0.778],\n \"8801\": [-0.03625, 0.46375, 0, 0, 0.77778],\n \"8804\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8805\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8810\": [0.0391, 0.5391, 0, 0, 1.0],\n \"8811\": [0.0391, 0.5391, 0, 0, 1.0],\n \"8826\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8827\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8834\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8835\": [0.0391, 0.5391, 0, 0, 0.77778],\n \"8838\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8839\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8846\": [0, 0.55556, 0, 0, 0.66667],\n \"8849\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8850\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"8851\": [0, 0.55556, 0, 0, 0.66667],\n \"8852\": [0, 0.55556, 0, 0, 0.66667],\n \"8853\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8854\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8855\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8856\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8857\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"8866\": [0, 0.69444, 0, 0, 0.61111],\n \"8867\": [0, 0.69444, 0, 0, 0.61111],\n \"8868\": [0, 0.69444, 0, 0, 0.77778],\n \"8869\": [0, 0.69444, 0, 0, 0.77778],\n \"8872\": [0.249, 0.75, 0, 0, 0.867],\n \"8900\": [-0.05555, 0.44445, 0, 0, 0.5],\n \"8901\": [-0.05555, 0.44445, 0, 0, 0.27778],\n \"8902\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"8904\": [0.005, 0.505, 0, 0, 0.9],\n \"8942\": [0.03, 0.903, 0, 0, 0.278],\n \"8943\": [-0.19, 0.313, 0, 0, 1.172],\n \"8945\": [-0.1, 0.823, 0, 0, 1.282],\n \"8968\": [0.25, 0.75, 0, 0, 0.44445],\n \"8969\": [0.25, 0.75, 0, 0, 0.44445],\n \"8970\": [0.25, 0.75, 0, 0, 0.44445],\n \"8971\": [0.25, 0.75, 0, 0, 0.44445],\n \"8994\": [-0.14236, 0.35764, 0, 0, 1.0],\n \"8995\": [-0.14236, 0.35764, 0, 0, 1.0],\n \"9136\": [0.244, 0.744, 0, 0, 0.412],\n \"9137\": [0.244, 0.745, 0, 0, 0.412],\n \"9651\": [0.19444, 0.69444, 0, 0, 0.88889],\n \"9657\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"9661\": [0.19444, 0.69444, 0, 0, 0.88889],\n \"9667\": [-0.03472, 0.46528, 0, 0, 0.5],\n \"9711\": [0.19444, 0.69444, 0, 0, 1.0],\n \"9824\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9825\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9826\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9827\": [0.12963, 0.69444, 0, 0, 0.77778],\n \"9837\": [0, 0.75, 0, 0, 0.38889],\n \"9838\": [0.19444, 0.69444, 0, 0, 0.38889],\n \"9839\": [0.19444, 0.69444, 0, 0, 0.38889],\n \"10216\": [0.25, 0.75, 0, 0, 0.38889],\n \"10217\": [0.25, 0.75, 0, 0, 0.38889],\n \"10222\": [0.244, 0.744, 0, 0, 0.412],\n \"10223\": [0.244, 0.745, 0, 0, 0.412],\n \"10229\": [0.011, 0.511, 0, 0, 1.609],\n \"10230\": [0.011, 0.511, 0, 0, 1.638],\n \"10231\": [0.011, 0.511, 0, 0, 1.859],\n \"10232\": [0.024, 0.525, 0, 0, 1.609],\n \"10233\": [0.024, 0.525, 0, 0, 1.638],\n \"10234\": [0.024, 0.525, 0, 0, 1.858],\n \"10236\": [0.011, 0.511, 0, 0, 1.638],\n \"10815\": [0, 0.68333, 0, 0, 0.75],\n \"10927\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"10928\": [0.13597, 0.63597, 0, 0, 0.77778],\n \"57376\": [0.19444, 0.69444, 0, 0, 0]\n },\n \"Math-BoldItalic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"48\": [0, 0.44444, 0, 0, 0.575],\n \"49\": [0, 0.44444, 0, 0, 0.575],\n \"50\": [0, 0.44444, 0, 0, 0.575],\n \"51\": [0.19444, 0.44444, 0, 0, 0.575],\n \"52\": [0.19444, 0.44444, 0, 0, 0.575],\n \"53\": [0.19444, 0.44444, 0, 0, 0.575],\n \"54\": [0, 0.64444, 0, 0, 0.575],\n \"55\": [0.19444, 0.44444, 0, 0, 0.575],\n \"56\": [0, 0.64444, 0, 0, 0.575],\n \"57\": [0.19444, 0.44444, 0, 0, 0.575],\n \"65\": [0, 0.68611, 0, 0, 0.86944],\n \"66\": [0, 0.68611, 0.04835, 0, 0.8664],\n \"67\": [0, 0.68611, 0.06979, 0, 0.81694],\n \"68\": [0, 0.68611, 0.03194, 0, 0.93812],\n \"69\": [0, 0.68611, 0.05451, 0, 0.81007],\n \"70\": [0, 0.68611, 0.15972, 0, 0.68889],\n \"71\": [0, 0.68611, 0, 0, 0.88673],\n \"72\": [0, 0.68611, 0.08229, 0, 0.98229],\n \"73\": [0, 0.68611, 0.07778, 0, 0.51111],\n \"74\": [0, 0.68611, 0.10069, 0, 0.63125],\n \"75\": [0, 0.68611, 0.06979, 0, 0.97118],\n \"76\": [0, 0.68611, 0, 0, 0.75555],\n \"77\": [0, 0.68611, 0.11424, 0, 1.14201],\n \"78\": [0, 0.68611, 0.11424, 0, 0.95034],\n \"79\": [0, 0.68611, 0.03194, 0, 0.83666],\n \"80\": [0, 0.68611, 0.15972, 0, 0.72309],\n \"81\": [0.19444, 0.68611, 0, 0, 0.86861],\n \"82\": [0, 0.68611, 0.00421, 0, 0.87235],\n \"83\": [0, 0.68611, 0.05382, 0, 0.69271],\n \"84\": [0, 0.68611, 0.15972, 0, 0.63663],\n \"85\": [0, 0.68611, 0.11424, 0, 0.80027],\n \"86\": [0, 0.68611, 0.25555, 0, 0.67778],\n \"87\": [0, 0.68611, 0.15972, 0, 1.09305],\n \"88\": [0, 0.68611, 0.07778, 0, 0.94722],\n \"89\": [0, 0.68611, 0.25555, 0, 0.67458],\n \"90\": [0, 0.68611, 0.06979, 0, 0.77257],\n \"97\": [0, 0.44444, 0, 0, 0.63287],\n \"98\": [0, 0.69444, 0, 0, 0.52083],\n \"99\": [0, 0.44444, 0, 0, 0.51342],\n \"100\": [0, 0.69444, 0, 0, 0.60972],\n \"101\": [0, 0.44444, 0, 0, 0.55361],\n \"102\": [0.19444, 0.69444, 0.11042, 0, 0.56806],\n \"103\": [0.19444, 0.44444, 0.03704, 0, 0.5449],\n \"104\": [0, 0.69444, 0, 0, 0.66759],\n \"105\": [0, 0.69326, 0, 0, 0.4048],\n \"106\": [0.19444, 0.69326, 0.0622, 0, 0.47083],\n \"107\": [0, 0.69444, 0.01852, 0, 0.6037],\n \"108\": [0, 0.69444, 0.0088, 0, 0.34815],\n \"109\": [0, 0.44444, 0, 0, 1.0324],\n \"110\": [0, 0.44444, 0, 0, 0.71296],\n \"111\": [0, 0.44444, 0, 0, 0.58472],\n \"112\": [0.19444, 0.44444, 0, 0, 0.60092],\n \"113\": [0.19444, 0.44444, 0.03704, 0, 0.54213],\n \"114\": [0, 0.44444, 0.03194, 0, 0.5287],\n \"115\": [0, 0.44444, 0, 0, 0.53125],\n \"116\": [0, 0.63492, 0, 0, 0.41528],\n \"117\": [0, 0.44444, 0, 0, 0.68102],\n \"118\": [0, 0.44444, 0.03704, 0, 0.56666],\n \"119\": [0, 0.44444, 0.02778, 0, 0.83148],\n \"120\": [0, 0.44444, 0, 0, 0.65903],\n \"121\": [0.19444, 0.44444, 0.03704, 0, 0.59028],\n \"122\": [0, 0.44444, 0.04213, 0, 0.55509],\n \"160\": [0, 0, 0, 0, 0.25],\n \"915\": [0, 0.68611, 0.15972, 0, 0.65694],\n \"916\": [0, 0.68611, 0, 0, 0.95833],\n \"920\": [0, 0.68611, 0.03194, 0, 0.86722],\n \"923\": [0, 0.68611, 0, 0, 0.80555],\n \"926\": [0, 0.68611, 0.07458, 0, 0.84125],\n \"928\": [0, 0.68611, 0.08229, 0, 0.98229],\n \"931\": [0, 0.68611, 0.05451, 0, 0.88507],\n \"933\": [0, 0.68611, 0.15972, 0, 0.67083],\n \"934\": [0, 0.68611, 0, 0, 0.76666],\n \"936\": [0, 0.68611, 0.11653, 0, 0.71402],\n \"937\": [0, 0.68611, 0.04835, 0, 0.8789],\n \"945\": [0, 0.44444, 0, 0, 0.76064],\n \"946\": [0.19444, 0.69444, 0.03403, 0, 0.65972],\n \"947\": [0.19444, 0.44444, 0.06389, 0, 0.59003],\n \"948\": [0, 0.69444, 0.03819, 0, 0.52222],\n \"949\": [0, 0.44444, 0, 0, 0.52882],\n \"950\": [0.19444, 0.69444, 0.06215, 0, 0.50833],\n \"951\": [0.19444, 0.44444, 0.03704, 0, 0.6],\n \"952\": [0, 0.69444, 0.03194, 0, 0.5618],\n \"953\": [0, 0.44444, 0, 0, 0.41204],\n \"954\": [0, 0.44444, 0, 0, 0.66759],\n \"955\": [0, 0.69444, 0, 0, 0.67083],\n \"956\": [0.19444, 0.44444, 0, 0, 0.70787],\n \"957\": [0, 0.44444, 0.06898, 0, 0.57685],\n \"958\": [0.19444, 0.69444, 0.03021, 0, 0.50833],\n \"959\": [0, 0.44444, 0, 0, 0.58472],\n \"960\": [0, 0.44444, 0.03704, 0, 0.68241],\n \"961\": [0.19444, 0.44444, 0, 0, 0.6118],\n \"962\": [0.09722, 0.44444, 0.07917, 0, 0.42361],\n \"963\": [0, 0.44444, 0.03704, 0, 0.68588],\n \"964\": [0, 0.44444, 0.13472, 0, 0.52083],\n \"965\": [0, 0.44444, 0.03704, 0, 0.63055],\n \"966\": [0.19444, 0.44444, 0, 0, 0.74722],\n \"967\": [0.19444, 0.44444, 0, 0, 0.71805],\n \"968\": [0.19444, 0.69444, 0.03704, 0, 0.75833],\n \"969\": [0, 0.44444, 0.03704, 0, 0.71782],\n \"977\": [0, 0.69444, 0, 0, 0.69155],\n \"981\": [0.19444, 0.69444, 0, 0, 0.7125],\n \"982\": [0, 0.44444, 0.03194, 0, 0.975],\n \"1009\": [0.19444, 0.44444, 0, 0, 0.6118],\n \"1013\": [0, 0.44444, 0, 0, 0.48333],\n \"57649\": [0, 0.44444, 0, 0, 0.39352],\n \"57911\": [0.19444, 0.44444, 0, 0, 0.43889]\n },\n \"Math-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"48\": [0, 0.43056, 0, 0, 0.5],\n \"49\": [0, 0.43056, 0, 0, 0.5],\n \"50\": [0, 0.43056, 0, 0, 0.5],\n \"51\": [0.19444, 0.43056, 0, 0, 0.5],\n \"52\": [0.19444, 0.43056, 0, 0, 0.5],\n \"53\": [0.19444, 0.43056, 0, 0, 0.5],\n \"54\": [0, 0.64444, 0, 0, 0.5],\n \"55\": [0.19444, 0.43056, 0, 0, 0.5],\n \"56\": [0, 0.64444, 0, 0, 0.5],\n \"57\": [0.19444, 0.43056, 0, 0, 0.5],\n \"65\": [0, 0.68333, 0, 0.13889, 0.75],\n \"66\": [0, 0.68333, 0.05017, 0.08334, 0.75851],\n \"67\": [0, 0.68333, 0.07153, 0.08334, 0.71472],\n \"68\": [0, 0.68333, 0.02778, 0.05556, 0.82792],\n \"69\": [0, 0.68333, 0.05764, 0.08334, 0.7382],\n \"70\": [0, 0.68333, 0.13889, 0.08334, 0.64306],\n \"71\": [0, 0.68333, 0, 0.08334, 0.78625],\n \"72\": [0, 0.68333, 0.08125, 0.05556, 0.83125],\n \"73\": [0, 0.68333, 0.07847, 0.11111, 0.43958],\n \"74\": [0, 0.68333, 0.09618, 0.16667, 0.55451],\n \"75\": [0, 0.68333, 0.07153, 0.05556, 0.84931],\n \"76\": [0, 0.68333, 0, 0.02778, 0.68056],\n \"77\": [0, 0.68333, 0.10903, 0.08334, 0.97014],\n \"78\": [0, 0.68333, 0.10903, 0.08334, 0.80347],\n \"79\": [0, 0.68333, 0.02778, 0.08334, 0.76278],\n \"80\": [0, 0.68333, 0.13889, 0.08334, 0.64201],\n \"81\": [0.19444, 0.68333, 0, 0.08334, 0.79056],\n \"82\": [0, 0.68333, 0.00773, 0.08334, 0.75929],\n \"83\": [0, 0.68333, 0.05764, 0.08334, 0.6132],\n \"84\": [0, 0.68333, 0.13889, 0.08334, 0.58438],\n \"85\": [0, 0.68333, 0.10903, 0.02778, 0.68278],\n \"86\": [0, 0.68333, 0.22222, 0, 0.58333],\n \"87\": [0, 0.68333, 0.13889, 0, 0.94445],\n \"88\": [0, 0.68333, 0.07847, 0.08334, 0.82847],\n \"89\": [0, 0.68333, 0.22222, 0, 0.58056],\n \"90\": [0, 0.68333, 0.07153, 0.08334, 0.68264],\n \"97\": [0, 0.43056, 0, 0, 0.52859],\n \"98\": [0, 0.69444, 0, 0, 0.42917],\n \"99\": [0, 0.43056, 0, 0.05556, 0.43276],\n \"100\": [0, 0.69444, 0, 0.16667, 0.52049],\n \"101\": [0, 0.43056, 0, 0.05556, 0.46563],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],\n \"104\": [0, 0.69444, 0, 0, 0.57616],\n \"105\": [0, 0.65952, 0, 0, 0.34451],\n \"106\": [0.19444, 0.65952, 0.05724, 0, 0.41181],\n \"107\": [0, 0.69444, 0.03148, 0, 0.5206],\n \"108\": [0, 0.69444, 0.01968, 0.08334, 0.29838],\n \"109\": [0, 0.43056, 0, 0, 0.87801],\n \"110\": [0, 0.43056, 0, 0, 0.60023],\n \"111\": [0, 0.43056, 0, 0.05556, 0.48472],\n \"112\": [0.19444, 0.43056, 0, 0.08334, 0.50313],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],\n \"114\": [0, 0.43056, 0.02778, 0.05556, 0.45116],\n \"115\": [0, 0.43056, 0, 0.05556, 0.46875],\n \"116\": [0, 0.61508, 0, 0.08334, 0.36111],\n \"117\": [0, 0.43056, 0, 0.02778, 0.57246],\n \"118\": [0, 0.43056, 0.03588, 0.02778, 0.48472],\n \"119\": [0, 0.43056, 0.02691, 0.08334, 0.71592],\n \"120\": [0, 0.43056, 0, 0.02778, 0.57153],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],\n \"122\": [0, 0.43056, 0.04398, 0.05556, 0.46505],\n \"160\": [0, 0, 0, 0, 0.25],\n \"915\": [0, 0.68333, 0.13889, 0.08334, 0.61528],\n \"916\": [0, 0.68333, 0, 0.16667, 0.83334],\n \"920\": [0, 0.68333, 0.02778, 0.08334, 0.76278],\n \"923\": [0, 0.68333, 0, 0.16667, 0.69445],\n \"926\": [0, 0.68333, 0.07569, 0.08334, 0.74236],\n \"928\": [0, 0.68333, 0.08125, 0.05556, 0.83125],\n \"931\": [0, 0.68333, 0.05764, 0.08334, 0.77986],\n \"933\": [0, 0.68333, 0.13889, 0.05556, 0.58333],\n \"934\": [0, 0.68333, 0, 0.08334, 0.66667],\n \"936\": [0, 0.68333, 0.11, 0.05556, 0.61222],\n \"937\": [0, 0.68333, 0.05017, 0.08334, 0.7724],\n \"945\": [0, 0.43056, 0.0037, 0.02778, 0.6397],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],\n \"947\": [0.19444, 0.43056, 0.05556, 0, 0.51773],\n \"948\": [0, 0.69444, 0.03785, 0.05556, 0.44444],\n \"949\": [0, 0.43056, 0, 0.08334, 0.46632],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],\n \"952\": [0, 0.69444, 0.02778, 0.08334, 0.46944],\n \"953\": [0, 0.43056, 0, 0.05556, 0.35394],\n \"954\": [0, 0.43056, 0, 0, 0.57616],\n \"955\": [0, 0.69444, 0, 0, 0.58334],\n \"956\": [0.19444, 0.43056, 0, 0.02778, 0.60255],\n \"957\": [0, 0.43056, 0.06366, 0.02778, 0.49398],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],\n \"959\": [0, 0.43056, 0, 0.05556, 0.48472],\n \"960\": [0, 0.43056, 0.03588, 0, 0.57003],\n \"961\": [0.19444, 0.43056, 0, 0.08334, 0.51702],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],\n \"963\": [0, 0.43056, 0.03588, 0, 0.57141],\n \"964\": [0, 0.43056, 0.1132, 0.02778, 0.43715],\n \"965\": [0, 0.43056, 0.03588, 0.02778, 0.54028],\n \"966\": [0.19444, 0.43056, 0, 0.08334, 0.65417],\n \"967\": [0.19444, 0.43056, 0, 0.05556, 0.62569],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],\n \"969\": [0, 0.43056, 0.03588, 0, 0.62245],\n \"977\": [0, 0.69444, 0, 0.08334, 0.59144],\n \"981\": [0.19444, 0.69444, 0, 0.08334, 0.59583],\n \"982\": [0, 0.43056, 0.02778, 0, 0.82813],\n \"1009\": [0.19444, 0.43056, 0, 0.08334, 0.51702],\n \"1013\": [0, 0.43056, 0, 0.05556, 0.4059],\n \"57649\": [0, 0.43056, 0, 0.02778, 0.32246],\n \"57911\": [0.19444, 0.43056, 0, 0.08334, 0.38403]\n },\n \"SansSerif-Bold\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.36667],\n \"34\": [0, 0.69444, 0, 0, 0.55834],\n \"35\": [0.19444, 0.69444, 0, 0, 0.91667],\n \"36\": [0.05556, 0.75, 0, 0, 0.55],\n \"37\": [0.05556, 0.75, 0, 0, 1.02912],\n \"38\": [0, 0.69444, 0, 0, 0.83056],\n \"39\": [0, 0.69444, 0, 0, 0.30556],\n \"40\": [0.25, 0.75, 0, 0, 0.42778],\n \"41\": [0.25, 0.75, 0, 0, 0.42778],\n \"42\": [0, 0.75, 0, 0, 0.55],\n \"43\": [0.11667, 0.61667, 0, 0, 0.85556],\n \"44\": [0.10556, 0.13056, 0, 0, 0.30556],\n \"45\": [0, 0.45833, 0, 0, 0.36667],\n \"46\": [0, 0.13056, 0, 0, 0.30556],\n \"47\": [0.25, 0.75, 0, 0, 0.55],\n \"48\": [0, 0.69444, 0, 0, 0.55],\n \"49\": [0, 0.69444, 0, 0, 0.55],\n \"50\": [0, 0.69444, 0, 0, 0.55],\n \"51\": [0, 0.69444, 0, 0, 0.55],\n \"52\": [0, 0.69444, 0, 0, 0.55],\n \"53\": [0, 0.69444, 0, 0, 0.55],\n \"54\": [0, 0.69444, 0, 0, 0.55],\n \"55\": [0, 0.69444, 0, 0, 0.55],\n \"56\": [0, 0.69444, 0, 0, 0.55],\n \"57\": [0, 0.69444, 0, 0, 0.55],\n \"58\": [0, 0.45833, 0, 0, 0.30556],\n \"59\": [0.10556, 0.45833, 0, 0, 0.30556],\n \"61\": [-0.09375, 0.40625, 0, 0, 0.85556],\n \"63\": [0, 0.69444, 0, 0, 0.51945],\n \"64\": [0, 0.69444, 0, 0, 0.73334],\n \"65\": [0, 0.69444, 0, 0, 0.73334],\n \"66\": [0, 0.69444, 0, 0, 0.73334],\n \"67\": [0, 0.69444, 0, 0, 0.70278],\n \"68\": [0, 0.69444, 0, 0, 0.79445],\n \"69\": [0, 0.69444, 0, 0, 0.64167],\n \"70\": [0, 0.69444, 0, 0, 0.61111],\n \"71\": [0, 0.69444, 0, 0, 0.73334],\n \"72\": [0, 0.69444, 0, 0, 0.79445],\n \"73\": [0, 0.69444, 0, 0, 0.33056],\n \"74\": [0, 0.69444, 0, 0, 0.51945],\n \"75\": [0, 0.69444, 0, 0, 0.76389],\n \"76\": [0, 0.69444, 0, 0, 0.58056],\n \"77\": [0, 0.69444, 0, 0, 0.97778],\n \"78\": [0, 0.69444, 0, 0, 0.79445],\n \"79\": [0, 0.69444, 0, 0, 0.79445],\n \"80\": [0, 0.69444, 0, 0, 0.70278],\n \"81\": [0.10556, 0.69444, 0, 0, 0.79445],\n \"82\": [0, 0.69444, 0, 0, 0.70278],\n \"83\": [0, 0.69444, 0, 0, 0.61111],\n \"84\": [0, 0.69444, 0, 0, 0.73334],\n \"85\": [0, 0.69444, 0, 0, 0.76389],\n \"86\": [0, 0.69444, 0.01528, 0, 0.73334],\n \"87\": [0, 0.69444, 0.01528, 0, 1.03889],\n \"88\": [0, 0.69444, 0, 0, 0.73334],\n \"89\": [0, 0.69444, 0.0275, 0, 0.73334],\n \"90\": [0, 0.69444, 0, 0, 0.67223],\n \"91\": [0.25, 0.75, 0, 0, 0.34306],\n \"93\": [0.25, 0.75, 0, 0, 0.34306],\n \"94\": [0, 0.69444, 0, 0, 0.55],\n \"95\": [0.35, 0.10833, 0.03056, 0, 0.55],\n \"97\": [0, 0.45833, 0, 0, 0.525],\n \"98\": [0, 0.69444, 0, 0, 0.56111],\n \"99\": [0, 0.45833, 0, 0, 0.48889],\n \"100\": [0, 0.69444, 0, 0, 0.56111],\n \"101\": [0, 0.45833, 0, 0, 0.51111],\n \"102\": [0, 0.69444, 0.07639, 0, 0.33611],\n \"103\": [0.19444, 0.45833, 0.01528, 0, 0.55],\n \"104\": [0, 0.69444, 0, 0, 0.56111],\n \"105\": [0, 0.69444, 0, 0, 0.25556],\n \"106\": [0.19444, 0.69444, 0, 0, 0.28611],\n \"107\": [0, 0.69444, 0, 0, 0.53056],\n \"108\": [0, 0.69444, 0, 0, 0.25556],\n \"109\": [0, 0.45833, 0, 0, 0.86667],\n \"110\": [0, 0.45833, 0, 0, 0.56111],\n \"111\": [0, 0.45833, 0, 0, 0.55],\n \"112\": [0.19444, 0.45833, 0, 0, 0.56111],\n \"113\": [0.19444, 0.45833, 0, 0, 0.56111],\n \"114\": [0, 0.45833, 0.01528, 0, 0.37222],\n \"115\": [0, 0.45833, 0, 0, 0.42167],\n \"116\": [0, 0.58929, 0, 0, 0.40417],\n \"117\": [0, 0.45833, 0, 0, 0.56111],\n \"118\": [0, 0.45833, 0.01528, 0, 0.5],\n \"119\": [0, 0.45833, 0.01528, 0, 0.74445],\n \"120\": [0, 0.45833, 0, 0, 0.5],\n \"121\": [0.19444, 0.45833, 0.01528, 0, 0.5],\n \"122\": [0, 0.45833, 0, 0, 0.47639],\n \"126\": [0.35, 0.34444, 0, 0, 0.55],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.69444, 0, 0, 0.55],\n \"176\": [0, 0.69444, 0, 0, 0.73334],\n \"180\": [0, 0.69444, 0, 0, 0.55],\n \"184\": [0.17014, 0, 0, 0, 0.48889],\n \"305\": [0, 0.45833, 0, 0, 0.25556],\n \"567\": [0.19444, 0.45833, 0, 0, 0.28611],\n \"710\": [0, 0.69444, 0, 0, 0.55],\n \"711\": [0, 0.63542, 0, 0, 0.55],\n \"713\": [0, 0.63778, 0, 0, 0.55],\n \"728\": [0, 0.69444, 0, 0, 0.55],\n \"729\": [0, 0.69444, 0, 0, 0.30556],\n \"730\": [0, 0.69444, 0, 0, 0.73334],\n \"732\": [0, 0.69444, 0, 0, 0.55],\n \"733\": [0, 0.69444, 0, 0, 0.55],\n \"915\": [0, 0.69444, 0, 0, 0.58056],\n \"916\": [0, 0.69444, 0, 0, 0.91667],\n \"920\": [0, 0.69444, 0, 0, 0.85556],\n \"923\": [0, 0.69444, 0, 0, 0.67223],\n \"926\": [0, 0.69444, 0, 0, 0.73334],\n \"928\": [0, 0.69444, 0, 0, 0.79445],\n \"931\": [0, 0.69444, 0, 0, 0.79445],\n \"933\": [0, 0.69444, 0, 0, 0.85556],\n \"934\": [0, 0.69444, 0, 0, 0.79445],\n \"936\": [0, 0.69444, 0, 0, 0.85556],\n \"937\": [0, 0.69444, 0, 0, 0.79445],\n \"8211\": [0, 0.45833, 0.03056, 0, 0.55],\n \"8212\": [0, 0.45833, 0.03056, 0, 1.10001],\n \"8216\": [0, 0.69444, 0, 0, 0.30556],\n \"8217\": [0, 0.69444, 0, 0, 0.30556],\n \"8220\": [0, 0.69444, 0, 0, 0.55834],\n \"8221\": [0, 0.69444, 0, 0, 0.55834]\n },\n \"SansSerif-Italic\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0.05733, 0, 0.31945],\n \"34\": [0, 0.69444, 0.00316, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0.05087, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0.11156, 0, 0.5],\n \"37\": [0.05556, 0.75, 0.03126, 0, 0.83334],\n \"38\": [0, 0.69444, 0.03058, 0, 0.75834],\n \"39\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"40\": [0.25, 0.75, 0.13164, 0, 0.38889],\n \"41\": [0.25, 0.75, 0.02536, 0, 0.38889],\n \"42\": [0, 0.75, 0.11775, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0.02536, 0, 0.77778],\n \"44\": [0.125, 0.08333, 0, 0, 0.27778],\n \"45\": [0, 0.44444, 0.01946, 0, 0.33333],\n \"46\": [0, 0.08333, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0.13164, 0, 0.5],\n \"48\": [0, 0.65556, 0.11156, 0, 0.5],\n \"49\": [0, 0.65556, 0.11156, 0, 0.5],\n \"50\": [0, 0.65556, 0.11156, 0, 0.5],\n \"51\": [0, 0.65556, 0.11156, 0, 0.5],\n \"52\": [0, 0.65556, 0.11156, 0, 0.5],\n \"53\": [0, 0.65556, 0.11156, 0, 0.5],\n \"54\": [0, 0.65556, 0.11156, 0, 0.5],\n \"55\": [0, 0.65556, 0.11156, 0, 0.5],\n \"56\": [0, 0.65556, 0.11156, 0, 0.5],\n \"57\": [0, 0.65556, 0.11156, 0, 0.5],\n \"58\": [0, 0.44444, 0.02502, 0, 0.27778],\n \"59\": [0.125, 0.44444, 0.02502, 0, 0.27778],\n \"61\": [-0.13, 0.37, 0.05087, 0, 0.77778],\n \"63\": [0, 0.69444, 0.11809, 0, 0.47222],\n \"64\": [0, 0.69444, 0.07555, 0, 0.66667],\n \"65\": [0, 0.69444, 0, 0, 0.66667],\n \"66\": [0, 0.69444, 0.08293, 0, 0.66667],\n \"67\": [0, 0.69444, 0.11983, 0, 0.63889],\n \"68\": [0, 0.69444, 0.07555, 0, 0.72223],\n \"69\": [0, 0.69444, 0.11983, 0, 0.59722],\n \"70\": [0, 0.69444, 0.13372, 0, 0.56945],\n \"71\": [0, 0.69444, 0.11983, 0, 0.66667],\n \"72\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"73\": [0, 0.69444, 0.13372, 0, 0.27778],\n \"74\": [0, 0.69444, 0.08094, 0, 0.47222],\n \"75\": [0, 0.69444, 0.11983, 0, 0.69445],\n \"76\": [0, 0.69444, 0, 0, 0.54167],\n \"77\": [0, 0.69444, 0.08094, 0, 0.875],\n \"78\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"79\": [0, 0.69444, 0.07555, 0, 0.73611],\n \"80\": [0, 0.69444, 0.08293, 0, 0.63889],\n \"81\": [0.125, 0.69444, 0.07555, 0, 0.73611],\n \"82\": [0, 0.69444, 0.08293, 0, 0.64584],\n \"83\": [0, 0.69444, 0.09205, 0, 0.55556],\n \"84\": [0, 0.69444, 0.13372, 0, 0.68056],\n \"85\": [0, 0.69444, 0.08094, 0, 0.6875],\n \"86\": [0, 0.69444, 0.1615, 0, 0.66667],\n \"87\": [0, 0.69444, 0.1615, 0, 0.94445],\n \"88\": [0, 0.69444, 0.13372, 0, 0.66667],\n \"89\": [0, 0.69444, 0.17261, 0, 0.66667],\n \"90\": [0, 0.69444, 0.11983, 0, 0.61111],\n \"91\": [0.25, 0.75, 0.15942, 0, 0.28889],\n \"93\": [0.25, 0.75, 0.08719, 0, 0.28889],\n \"94\": [0, 0.69444, 0.0799, 0, 0.5],\n \"95\": [0.35, 0.09444, 0.08616, 0, 0.5],\n \"97\": [0, 0.44444, 0.00981, 0, 0.48056],\n \"98\": [0, 0.69444, 0.03057, 0, 0.51667],\n \"99\": [0, 0.44444, 0.08336, 0, 0.44445],\n \"100\": [0, 0.69444, 0.09483, 0, 0.51667],\n \"101\": [0, 0.44444, 0.06778, 0, 0.44445],\n \"102\": [0, 0.69444, 0.21705, 0, 0.30556],\n \"103\": [0.19444, 0.44444, 0.10836, 0, 0.5],\n \"104\": [0, 0.69444, 0.01778, 0, 0.51667],\n \"105\": [0, 0.67937, 0.09718, 0, 0.23889],\n \"106\": [0.19444, 0.67937, 0.09162, 0, 0.26667],\n \"107\": [0, 0.69444, 0.08336, 0, 0.48889],\n \"108\": [0, 0.69444, 0.09483, 0, 0.23889],\n \"109\": [0, 0.44444, 0.01778, 0, 0.79445],\n \"110\": [0, 0.44444, 0.01778, 0, 0.51667],\n \"111\": [0, 0.44444, 0.06613, 0, 0.5],\n \"112\": [0.19444, 0.44444, 0.0389, 0, 0.51667],\n \"113\": [0.19444, 0.44444, 0.04169, 0, 0.51667],\n \"114\": [0, 0.44444, 0.10836, 0, 0.34167],\n \"115\": [0, 0.44444, 0.0778, 0, 0.38333],\n \"116\": [0, 0.57143, 0.07225, 0, 0.36111],\n \"117\": [0, 0.44444, 0.04169, 0, 0.51667],\n \"118\": [0, 0.44444, 0.10836, 0, 0.46111],\n \"119\": [0, 0.44444, 0.10836, 0, 0.68334],\n \"120\": [0, 0.44444, 0.09169, 0, 0.46111],\n \"121\": [0.19444, 0.44444, 0.10836, 0, 0.46111],\n \"122\": [0, 0.44444, 0.08752, 0, 0.43472],\n \"126\": [0.35, 0.32659, 0.08826, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.67937, 0.06385, 0, 0.5],\n \"176\": [0, 0.69444, 0, 0, 0.73752],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"305\": [0, 0.44444, 0.04169, 0, 0.23889],\n \"567\": [0.19444, 0.44444, 0.04169, 0, 0.26667],\n \"710\": [0, 0.69444, 0.0799, 0, 0.5],\n \"711\": [0, 0.63194, 0.08432, 0, 0.5],\n \"713\": [0, 0.60889, 0.08776, 0, 0.5],\n \"714\": [0, 0.69444, 0.09205, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0.09483, 0, 0.5],\n \"729\": [0, 0.67937, 0.07774, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.73752],\n \"732\": [0, 0.67659, 0.08826, 0, 0.5],\n \"733\": [0, 0.69444, 0.09205, 0, 0.5],\n \"915\": [0, 0.69444, 0.13372, 0, 0.54167],\n \"916\": [0, 0.69444, 0, 0, 0.83334],\n \"920\": [0, 0.69444, 0.07555, 0, 0.77778],\n \"923\": [0, 0.69444, 0, 0, 0.61111],\n \"926\": [0, 0.69444, 0.12816, 0, 0.66667],\n \"928\": [0, 0.69444, 0.08094, 0, 0.70834],\n \"931\": [0, 0.69444, 0.11983, 0, 0.72222],\n \"933\": [0, 0.69444, 0.09031, 0, 0.77778],\n \"934\": [0, 0.69444, 0.04603, 0, 0.72222],\n \"936\": [0, 0.69444, 0.09031, 0, 0.77778],\n \"937\": [0, 0.69444, 0.08293, 0, 0.72222],\n \"8211\": [0, 0.44444, 0.08616, 0, 0.5],\n \"8212\": [0, 0.44444, 0.08616, 0, 1.0],\n \"8216\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"8217\": [0, 0.69444, 0.07816, 0, 0.27778],\n \"8220\": [0, 0.69444, 0.14205, 0, 0.5],\n \"8221\": [0, 0.69444, 0.00316, 0, 0.5]\n },\n \"SansSerif-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"33\": [0, 0.69444, 0, 0, 0.31945],\n \"34\": [0, 0.69444, 0, 0, 0.5],\n \"35\": [0.19444, 0.69444, 0, 0, 0.83334],\n \"36\": [0.05556, 0.75, 0, 0, 0.5],\n \"37\": [0.05556, 0.75, 0, 0, 0.83334],\n \"38\": [0, 0.69444, 0, 0, 0.75834],\n \"39\": [0, 0.69444, 0, 0, 0.27778],\n \"40\": [0.25, 0.75, 0, 0, 0.38889],\n \"41\": [0.25, 0.75, 0, 0, 0.38889],\n \"42\": [0, 0.75, 0, 0, 0.5],\n \"43\": [0.08333, 0.58333, 0, 0, 0.77778],\n \"44\": [0.125, 0.08333, 0, 0, 0.27778],\n \"45\": [0, 0.44444, 0, 0, 0.33333],\n \"46\": [0, 0.08333, 0, 0, 0.27778],\n \"47\": [0.25, 0.75, 0, 0, 0.5],\n \"48\": [0, 0.65556, 0, 0, 0.5],\n \"49\": [0, 0.65556, 0, 0, 0.5],\n \"50\": [0, 0.65556, 0, 0, 0.5],\n \"51\": [0, 0.65556, 0, 0, 0.5],\n \"52\": [0, 0.65556, 0, 0, 0.5],\n \"53\": [0, 0.65556, 0, 0, 0.5],\n \"54\": [0, 0.65556, 0, 0, 0.5],\n \"55\": [0, 0.65556, 0, 0, 0.5],\n \"56\": [0, 0.65556, 0, 0, 0.5],\n \"57\": [0, 0.65556, 0, 0, 0.5],\n \"58\": [0, 0.44444, 0, 0, 0.27778],\n \"59\": [0.125, 0.44444, 0, 0, 0.27778],\n \"61\": [-0.13, 0.37, 0, 0, 0.77778],\n \"63\": [0, 0.69444, 0, 0, 0.47222],\n \"64\": [0, 0.69444, 0, 0, 0.66667],\n \"65\": [0, 0.69444, 0, 0, 0.66667],\n \"66\": [0, 0.69444, 0, 0, 0.66667],\n \"67\": [0, 0.69444, 0, 0, 0.63889],\n \"68\": [0, 0.69444, 0, 0, 0.72223],\n \"69\": [0, 0.69444, 0, 0, 0.59722],\n \"70\": [0, 0.69444, 0, 0, 0.56945],\n \"71\": [0, 0.69444, 0, 0, 0.66667],\n \"72\": [0, 0.69444, 0, 0, 0.70834],\n \"73\": [0, 0.69444, 0, 0, 0.27778],\n \"74\": [0, 0.69444, 0, 0, 0.47222],\n \"75\": [0, 0.69444, 0, 0, 0.69445],\n \"76\": [0, 0.69444, 0, 0, 0.54167],\n \"77\": [0, 0.69444, 0, 0, 0.875],\n \"78\": [0, 0.69444, 0, 0, 0.70834],\n \"79\": [0, 0.69444, 0, 0, 0.73611],\n \"80\": [0, 0.69444, 0, 0, 0.63889],\n \"81\": [0.125, 0.69444, 0, 0, 0.73611],\n \"82\": [0, 0.69444, 0, 0, 0.64584],\n \"83\": [0, 0.69444, 0, 0, 0.55556],\n \"84\": [0, 0.69444, 0, 0, 0.68056],\n \"85\": [0, 0.69444, 0, 0, 0.6875],\n \"86\": [0, 0.69444, 0.01389, 0, 0.66667],\n \"87\": [0, 0.69444, 0.01389, 0, 0.94445],\n \"88\": [0, 0.69444, 0, 0, 0.66667],\n \"89\": [0, 0.69444, 0.025, 0, 0.66667],\n \"90\": [0, 0.69444, 0, 0, 0.61111],\n \"91\": [0.25, 0.75, 0, 0, 0.28889],\n \"93\": [0.25, 0.75, 0, 0, 0.28889],\n \"94\": [0, 0.69444, 0, 0, 0.5],\n \"95\": [0.35, 0.09444, 0.02778, 0, 0.5],\n \"97\": [0, 0.44444, 0, 0, 0.48056],\n \"98\": [0, 0.69444, 0, 0, 0.51667],\n \"99\": [0, 0.44444, 0, 0, 0.44445],\n \"100\": [0, 0.69444, 0, 0, 0.51667],\n \"101\": [0, 0.44444, 0, 0, 0.44445],\n \"102\": [0, 0.69444, 0.06944, 0, 0.30556],\n \"103\": [0.19444, 0.44444, 0.01389, 0, 0.5],\n \"104\": [0, 0.69444, 0, 0, 0.51667],\n \"105\": [0, 0.67937, 0, 0, 0.23889],\n \"106\": [0.19444, 0.67937, 0, 0, 0.26667],\n \"107\": [0, 0.69444, 0, 0, 0.48889],\n \"108\": [0, 0.69444, 0, 0, 0.23889],\n \"109\": [0, 0.44444, 0, 0, 0.79445],\n \"110\": [0, 0.44444, 0, 0, 0.51667],\n \"111\": [0, 0.44444, 0, 0, 0.5],\n \"112\": [0.19444, 0.44444, 0, 0, 0.51667],\n \"113\": [0.19444, 0.44444, 0, 0, 0.51667],\n \"114\": [0, 0.44444, 0.01389, 0, 0.34167],\n \"115\": [0, 0.44444, 0, 0, 0.38333],\n \"116\": [0, 0.57143, 0, 0, 0.36111],\n \"117\": [0, 0.44444, 0, 0, 0.51667],\n \"118\": [0, 0.44444, 0.01389, 0, 0.46111],\n \"119\": [0, 0.44444, 0.01389, 0, 0.68334],\n \"120\": [0, 0.44444, 0, 0, 0.46111],\n \"121\": [0.19444, 0.44444, 0.01389, 0, 0.46111],\n \"122\": [0, 0.44444, 0, 0, 0.43472],\n \"126\": [0.35, 0.32659, 0, 0, 0.5],\n \"160\": [0, 0, 0, 0, 0.25],\n \"168\": [0, 0.67937, 0, 0, 0.5],\n \"176\": [0, 0.69444, 0, 0, 0.66667],\n \"184\": [0.17014, 0, 0, 0, 0.44445],\n \"305\": [0, 0.44444, 0, 0, 0.23889],\n \"567\": [0.19444, 0.44444, 0, 0, 0.26667],\n \"710\": [0, 0.69444, 0, 0, 0.5],\n \"711\": [0, 0.63194, 0, 0, 0.5],\n \"713\": [0, 0.60889, 0, 0, 0.5],\n \"714\": [0, 0.69444, 0, 0, 0.5],\n \"715\": [0, 0.69444, 0, 0, 0.5],\n \"728\": [0, 0.69444, 0, 0, 0.5],\n \"729\": [0, 0.67937, 0, 0, 0.27778],\n \"730\": [0, 0.69444, 0, 0, 0.66667],\n \"732\": [0, 0.67659, 0, 0, 0.5],\n \"733\": [0, 0.69444, 0, 0, 0.5],\n \"915\": [0, 0.69444, 0, 0, 0.54167],\n \"916\": [0, 0.69444, 0, 0, 0.83334],\n \"920\": [0, 0.69444, 0, 0, 0.77778],\n \"923\": [0, 0.69444, 0, 0, 0.61111],\n \"926\": [0, 0.69444, 0, 0, 0.66667],\n \"928\": [0, 0.69444, 0, 0, 0.70834],\n \"931\": [0, 0.69444, 0, 0, 0.72222],\n \"933\": [0, 0.69444, 0, 0, 0.77778],\n \"934\": [0, 0.69444, 0, 0, 0.72222],\n \"936\": [0, 0.69444, 0, 0, 0.77778],\n \"937\": [0, 0.69444, 0, 0, 0.72222],\n \"8211\": [0, 0.44444, 0.02778, 0, 0.5],\n \"8212\": [0, 0.44444, 0.02778, 0, 1.0],\n \"8216\": [0, 0.69444, 0, 0, 0.27778],\n \"8217\": [0, 0.69444, 0, 0, 0.27778],\n \"8220\": [0, 0.69444, 0, 0, 0.5],\n \"8221\": [0, 0.69444, 0, 0, 0.5]\n },\n \"Script-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"65\": [0, 0.7, 0.22925, 0, 0.80253],\n \"66\": [0, 0.7, 0.04087, 0, 0.90757],\n \"67\": [0, 0.7, 0.1689, 0, 0.66619],\n \"68\": [0, 0.7, 0.09371, 0, 0.77443],\n \"69\": [0, 0.7, 0.18583, 0, 0.56162],\n \"70\": [0, 0.7, 0.13634, 0, 0.89544],\n \"71\": [0, 0.7, 0.17322, 0, 0.60961],\n \"72\": [0, 0.7, 0.29694, 0, 0.96919],\n \"73\": [0, 0.7, 0.19189, 0, 0.80907],\n \"74\": [0.27778, 0.7, 0.19189, 0, 1.05159],\n \"75\": [0, 0.7, 0.31259, 0, 0.91364],\n \"76\": [0, 0.7, 0.19189, 0, 0.87373],\n \"77\": [0, 0.7, 0.15981, 0, 1.08031],\n \"78\": [0, 0.7, 0.3525, 0, 0.9015],\n \"79\": [0, 0.7, 0.08078, 0, 0.73787],\n \"80\": [0, 0.7, 0.08078, 0, 1.01262],\n \"81\": [0, 0.7, 0.03305, 0, 0.88282],\n \"82\": [0, 0.7, 0.06259, 0, 0.85],\n \"83\": [0, 0.7, 0.19189, 0, 0.86767],\n \"84\": [0, 0.7, 0.29087, 0, 0.74697],\n \"85\": [0, 0.7, 0.25815, 0, 0.79996],\n \"86\": [0, 0.7, 0.27523, 0, 0.62204],\n \"87\": [0, 0.7, 0.27523, 0, 0.80532],\n \"88\": [0, 0.7, 0.26006, 0, 0.94445],\n \"89\": [0, 0.7, 0.2939, 0, 0.70961],\n \"90\": [0, 0.7, 0.24037, 0, 0.8212],\n \"160\": [0, 0, 0, 0, 0.25]\n },\n \"Size1-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.35001, 0.85, 0, 0, 0.45834],\n \"41\": [0.35001, 0.85, 0, 0, 0.45834],\n \"47\": [0.35001, 0.85, 0, 0, 0.57778],\n \"91\": [0.35001, 0.85, 0, 0, 0.41667],\n \"92\": [0.35001, 0.85, 0, 0, 0.57778],\n \"93\": [0.35001, 0.85, 0, 0, 0.41667],\n \"123\": [0.35001, 0.85, 0, 0, 0.58334],\n \"125\": [0.35001, 0.85, 0, 0, 0.58334],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.72222, 0, 0, 0.55556],\n \"732\": [0, 0.72222, 0, 0, 0.55556],\n \"770\": [0, 0.72222, 0, 0, 0.55556],\n \"771\": [0, 0.72222, 0, 0, 0.55556],\n \"8214\": [-0.00099, 0.601, 0, 0, 0.77778],\n \"8593\": [1e-05, 0.6, 0, 0, 0.66667],\n \"8595\": [1e-05, 0.6, 0, 0, 0.66667],\n \"8657\": [1e-05, 0.6, 0, 0, 0.77778],\n \"8659\": [1e-05, 0.6, 0, 0, 0.77778],\n \"8719\": [0.25001, 0.75, 0, 0, 0.94445],\n \"8720\": [0.25001, 0.75, 0, 0, 0.94445],\n \"8721\": [0.25001, 0.75, 0, 0, 1.05556],\n \"8730\": [0.35001, 0.85, 0, 0, 1.0],\n \"8739\": [-0.00599, 0.606, 0, 0, 0.33333],\n \"8741\": [-0.00599, 0.606, 0, 0, 0.55556],\n \"8747\": [0.30612, 0.805, 0.19445, 0, 0.47222],\n \"8748\": [0.306, 0.805, 0.19445, 0, 0.47222],\n \"8749\": [0.306, 0.805, 0.19445, 0, 0.47222],\n \"8750\": [0.30612, 0.805, 0.19445, 0, 0.47222],\n \"8896\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8897\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8898\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8899\": [0.25001, 0.75, 0, 0, 0.83334],\n \"8968\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8969\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8970\": [0.35001, 0.85, 0, 0, 0.47222],\n \"8971\": [0.35001, 0.85, 0, 0, 0.47222],\n \"9168\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"10216\": [0.35001, 0.85, 0, 0, 0.47222],\n \"10217\": [0.35001, 0.85, 0, 0, 0.47222],\n \"10752\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10753\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10754\": [0.25001, 0.75, 0, 0, 1.11111],\n \"10756\": [0.25001, 0.75, 0, 0, 0.83334],\n \"10758\": [0.25001, 0.75, 0, 0, 0.83334]\n },\n \"Size2-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.65002, 1.15, 0, 0, 0.59722],\n \"41\": [0.65002, 1.15, 0, 0, 0.59722],\n \"47\": [0.65002, 1.15, 0, 0, 0.81111],\n \"91\": [0.65002, 1.15, 0, 0, 0.47222],\n \"92\": [0.65002, 1.15, 0, 0, 0.81111],\n \"93\": [0.65002, 1.15, 0, 0, 0.47222],\n \"123\": [0.65002, 1.15, 0, 0, 0.66667],\n \"125\": [0.65002, 1.15, 0, 0, 0.66667],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.75, 0, 0, 1.0],\n \"732\": [0, 0.75, 0, 0, 1.0],\n \"770\": [0, 0.75, 0, 0, 1.0],\n \"771\": [0, 0.75, 0, 0, 1.0],\n \"8719\": [0.55001, 1.05, 0, 0, 1.27778],\n \"8720\": [0.55001, 1.05, 0, 0, 1.27778],\n \"8721\": [0.55001, 1.05, 0, 0, 1.44445],\n \"8730\": [0.65002, 1.15, 0, 0, 1.0],\n \"8747\": [0.86225, 1.36, 0.44445, 0, 0.55556],\n \"8748\": [0.862, 1.36, 0.44445, 0, 0.55556],\n \"8749\": [0.862, 1.36, 0.44445, 0, 0.55556],\n \"8750\": [0.86225, 1.36, 0.44445, 0, 0.55556],\n \"8896\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8897\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8898\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8899\": [0.55001, 1.05, 0, 0, 1.11111],\n \"8968\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8969\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8970\": [0.65002, 1.15, 0, 0, 0.52778],\n \"8971\": [0.65002, 1.15, 0, 0, 0.52778],\n \"10216\": [0.65002, 1.15, 0, 0, 0.61111],\n \"10217\": [0.65002, 1.15, 0, 0, 0.61111],\n \"10752\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10753\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10754\": [0.55001, 1.05, 0, 0, 1.51112],\n \"10756\": [0.55001, 1.05, 0, 0, 1.11111],\n \"10758\": [0.55001, 1.05, 0, 0, 1.11111]\n },\n \"Size3-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [0.95003, 1.45, 0, 0, 0.73611],\n \"41\": [0.95003, 1.45, 0, 0, 0.73611],\n \"47\": [0.95003, 1.45, 0, 0, 1.04445],\n \"91\": [0.95003, 1.45, 0, 0, 0.52778],\n \"92\": [0.95003, 1.45, 0, 0, 1.04445],\n \"93\": [0.95003, 1.45, 0, 0, 0.52778],\n \"123\": [0.95003, 1.45, 0, 0, 0.75],\n \"125\": [0.95003, 1.45, 0, 0, 0.75],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.75, 0, 0, 1.44445],\n \"732\": [0, 0.75, 0, 0, 1.44445],\n \"770\": [0, 0.75, 0, 0, 1.44445],\n \"771\": [0, 0.75, 0, 0, 1.44445],\n \"8730\": [0.95003, 1.45, 0, 0, 1.0],\n \"8968\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8969\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8970\": [0.95003, 1.45, 0, 0, 0.58334],\n \"8971\": [0.95003, 1.45, 0, 0, 0.58334],\n \"10216\": [0.95003, 1.45, 0, 0, 0.75],\n \"10217\": [0.95003, 1.45, 0, 0, 0.75]\n },\n \"Size4-Regular\": {\n \"32\": [0, 0, 0, 0, 0.25],\n \"40\": [1.25003, 1.75, 0, 0, 0.79167],\n \"41\": [1.25003, 1.75, 0, 0, 0.79167],\n \"47\": [1.25003, 1.75, 0, 0, 1.27778],\n \"91\": [1.25003, 1.75, 0, 0, 0.58334],\n \"92\": [1.25003, 1.75, 0, 0, 1.27778],\n \"93\": [1.25003, 1.75, 0, 0, 0.58334],\n \"123\": [1.25003, 1.75, 0, 0, 0.80556],\n \"125\": [1.25003, 1.75, 0, 0, 0.80556],\n \"160\": [0, 0, 0, 0, 0.25],\n \"710\": [0, 0.825, 0, 0, 1.8889],\n \"732\": [0, 0.825, 0, 0, 1.8889],\n \"770\": [0, 0.825, 0, 0, 1.8889],\n \"771\": [0, 0.825, 0, 0, 1.8889],\n \"8730\": [1.25003, 1.75, 0, 0, 1.0],\n \"8968\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8969\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8970\": [1.25003, 1.75, 0, 0, 0.63889],\n \"8971\": [1.25003, 1.75, 0, 0, 0.63889],\n \"9115\": [0.64502, 1.155, 0, 0, 0.875],\n \"9116\": [1e-05, 0.6, 0, 0, 0.875],\n \"9117\": [0.64502, 1.155, 0, 0, 0.875],\n \"9118\": [0.64502, 1.155, 0, 0, 0.875],\n \"9119\": [1e-05, 0.6, 0, 0, 0.875],\n \"9120\": [0.64502, 1.155, 0, 0, 0.875],\n \"9121\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9122\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"9123\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9124\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9125\": [-0.00099, 0.601, 0, 0, 0.66667],\n \"9126\": [0.64502, 1.155, 0, 0, 0.66667],\n \"9127\": [1e-05, 0.9, 0, 0, 0.88889],\n \"9128\": [0.65002, 1.15, 0, 0, 0.88889],\n \"9129\": [0.90001, 0, 0, 0, 0.88889],\n \"9130\": [0, 0.3, 0, 0, 0.88889],\n \"9131\": [1e-05, 0.9, 0, 0, 0.88889],\n \"9132\": [0.65002, 1.15, 0, 0, 0.88889],\n \"9133\": [0.90001, 0, 0, 0, 0.88889],\n \"9143\": [0.88502, 0.915, 0, 0, 1.05556],\n \"10216\": [1.25003, 1.75, 0, 0, 0.80556],\n \"10217\": [1.25003, 1.75, 0, 0, 0.80556],\n \"57344\": [-0.00499, 0.605, 0, 0, 1.05556],\n \"57345\": [-0.00499, 0.605, 0, 0, 1.05556],\n \"57680\": [0, 0.12, 0, 0, 0.45],\n \"57681\": [0, 0.12, 0, 0, 0.45],\n \"57682\": [0, 0.12, 0, 0, 0.45],\n \"57683\": [0, 0.12, 0, 0, 0.45]\n },\n \"Typewriter-Regular\": {\n \"32\": [0, 0, 0, 0, 0.525],\n \"33\": [0, 0.61111, 0, 0, 0.525],\n \"34\": [0, 0.61111, 0, 0, 0.525],\n \"35\": [0, 0.61111, 0, 0, 0.525],\n \"36\": [0.08333, 0.69444, 0, 0, 0.525],\n \"37\": [0.08333, 0.69444, 0, 0, 0.525],\n \"38\": [0, 0.61111, 0, 0, 0.525],\n \"39\": [0, 0.61111, 0, 0, 0.525],\n \"40\": [0.08333, 0.69444, 0, 0, 0.525],\n \"41\": [0.08333, 0.69444, 0, 0, 0.525],\n \"42\": [0, 0.52083, 0, 0, 0.525],\n \"43\": [-0.08056, 0.53055, 0, 0, 0.525],\n \"44\": [0.13889, 0.125, 0, 0, 0.525],\n \"45\": [-0.08056, 0.53055, 0, 0, 0.525],\n \"46\": [0, 0.125, 0, 0, 0.525],\n \"47\": [0.08333, 0.69444, 0, 0, 0.525],\n \"48\": [0, 0.61111, 0, 0, 0.525],\n \"49\": [0, 0.61111, 0, 0, 0.525],\n \"50\": [0, 0.61111, 0, 0, 0.525],\n \"51\": [0, 0.61111, 0, 0, 0.525],\n \"52\": [0, 0.61111, 0, 0, 0.525],\n \"53\": [0, 0.61111, 0, 0, 0.525],\n \"54\": [0, 0.61111, 0, 0, 0.525],\n \"55\": [0, 0.61111, 0, 0, 0.525],\n \"56\": [0, 0.61111, 0, 0, 0.525],\n \"57\": [0, 0.61111, 0, 0, 0.525],\n \"58\": [0, 0.43056, 0, 0, 0.525],\n \"59\": [0.13889, 0.43056, 0, 0, 0.525],\n \"60\": [-0.05556, 0.55556, 0, 0, 0.525],\n \"61\": [-0.19549, 0.41562, 0, 0, 0.525],\n \"62\": [-0.05556, 0.55556, 0, 0, 0.525],\n \"63\": [0, 0.61111, 0, 0, 0.525],\n \"64\": [0, 0.61111, 0, 0, 0.525],\n \"65\": [0, 0.61111, 0, 0, 0.525],\n \"66\": [0, 0.61111, 0, 0, 0.525],\n \"67\": [0, 0.61111, 0, 0, 0.525],\n \"68\": [0, 0.61111, 0, 0, 0.525],\n \"69\": [0, 0.61111, 0, 0, 0.525],\n \"70\": [0, 0.61111, 0, 0, 0.525],\n \"71\": [0, 0.61111, 0, 0, 0.525],\n \"72\": [0, 0.61111, 0, 0, 0.525],\n \"73\": [0, 0.61111, 0, 0, 0.525],\n \"74\": [0, 0.61111, 0, 0, 0.525],\n \"75\": [0, 0.61111, 0, 0, 0.525],\n \"76\": [0, 0.61111, 0, 0, 0.525],\n \"77\": [0, 0.61111, 0, 0, 0.525],\n \"78\": [0, 0.61111, 0, 0, 0.525],\n \"79\": [0, 0.61111, 0, 0, 0.525],\n \"80\": [0, 0.61111, 0, 0, 0.525],\n \"81\": [0.13889, 0.61111, 0, 0, 0.525],\n \"82\": [0, 0.61111, 0, 0, 0.525],\n \"83\": [0, 0.61111, 0, 0, 0.525],\n \"84\": [0, 0.61111, 0, 0, 0.525],\n \"85\": [0, 0.61111, 0, 0, 0.525],\n \"86\": [0, 0.61111, 0, 0, 0.525],\n \"87\": [0, 0.61111, 0, 0, 0.525],\n \"88\": [0, 0.61111, 0, 0, 0.525],\n \"89\": [0, 0.61111, 0, 0, 0.525],\n \"90\": [0, 0.61111, 0, 0, 0.525],\n \"91\": [0.08333, 0.69444, 0, 0, 0.525],\n \"92\": [0.08333, 0.69444, 0, 0, 0.525],\n \"93\": [0.08333, 0.69444, 0, 0, 0.525],\n \"94\": [0, 0.61111, 0, 0, 0.525],\n \"95\": [0.09514, 0, 0, 0, 0.525],\n \"96\": [0, 0.61111, 0, 0, 0.525],\n \"97\": [0, 0.43056, 0, 0, 0.525],\n \"98\": [0, 0.61111, 0, 0, 0.525],\n \"99\": [0, 0.43056, 0, 0, 0.525],\n \"100\": [0, 0.61111, 0, 0, 0.525],\n \"101\": [0, 0.43056, 0, 0, 0.525],\n \"102\": [0, 0.61111, 0, 0, 0.525],\n \"103\": [0.22222, 0.43056, 0, 0, 0.525],\n \"104\": [0, 0.61111, 0, 0, 0.525],\n \"105\": [0, 0.61111, 0, 0, 0.525],\n \"106\": [0.22222, 0.61111, 0, 0, 0.525],\n \"107\": [0, 0.61111, 0, 0, 0.525],\n \"108\": [0, 0.61111, 0, 0, 0.525],\n \"109\": [0, 0.43056, 0, 0, 0.525],\n \"110\": [0, 0.43056, 0, 0, 0.525],\n \"111\": [0, 0.43056, 0, 0, 0.525],\n \"112\": [0.22222, 0.43056, 0, 0, 0.525],\n \"113\": [0.22222, 0.43056, 0, 0, 0.525],\n \"114\": [0, 0.43056, 0, 0, 0.525],\n \"115\": [0, 0.43056, 0, 0, 0.525],\n \"116\": [0, 0.55358, 0, 0, 0.525],\n \"117\": [0, 0.43056, 0, 0, 0.525],\n \"118\": [0, 0.43056, 0, 0, 0.525],\n \"119\": [0, 0.43056, 0, 0, 0.525],\n \"120\": [0, 0.43056, 0, 0, 0.525],\n \"121\": [0.22222, 0.43056, 0, 0, 0.525],\n \"122\": [0, 0.43056, 0, 0, 0.525],\n \"123\": [0.08333, 0.69444, 0, 0, 0.525],\n \"124\": [0.08333, 0.69444, 0, 0, 0.525],\n \"125\": [0.08333, 0.69444, 0, 0, 0.525],\n \"126\": [0, 0.61111, 0, 0, 0.525],\n \"127\": [0, 0.61111, 0, 0, 0.525],\n \"160\": [0, 0, 0, 0, 0.525],\n \"176\": [0, 0.61111, 0, 0, 0.525],\n \"184\": [0.19445, 0, 0, 0, 0.525],\n \"305\": [0, 0.43056, 0, 0, 0.525],\n \"567\": [0.22222, 0.43056, 0, 0, 0.525],\n \"711\": [0, 0.56597, 0, 0, 0.525],\n \"713\": [0, 0.56555, 0, 0, 0.525],\n \"714\": [0, 0.61111, 0, 0, 0.525],\n \"715\": [0, 0.61111, 0, 0, 0.525],\n \"728\": [0, 0.61111, 0, 0, 0.525],\n \"730\": [0, 0.61111, 0, 0, 0.525],\n \"770\": [0, 0.61111, 0, 0, 0.525],\n \"771\": [0, 0.61111, 0, 0, 0.525],\n \"776\": [0, 0.61111, 0, 0, 0.525],\n \"915\": [0, 0.61111, 0, 0, 0.525],\n \"916\": [0, 0.61111, 0, 0, 0.525],\n \"920\": [0, 0.61111, 0, 0, 0.525],\n \"923\": [0, 0.61111, 0, 0, 0.525],\n \"926\": [0, 0.61111, 0, 0, 0.525],\n \"928\": [0, 0.61111, 0, 0, 0.525],\n \"931\": [0, 0.61111, 0, 0, 0.525],\n \"933\": [0, 0.61111, 0, 0, 0.525],\n \"934\": [0, 0.61111, 0, 0, 0.525],\n \"936\": [0, 0.61111, 0, 0, 0.525],\n \"937\": [0, 0.61111, 0, 0, 0.525],\n \"8216\": [0, 0.61111, 0, 0, 0.525],\n \"8217\": [0, 0.61111, 0, 0, 0.525],\n \"8242\": [0, 0.61111, 0, 0, 0.525],\n \"9251\": [0.11111, 0.21944, 0, 0, 0.525]\n }\n};\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n// In TeX, there are actually three sets of dimensions, one for each of\n// textstyle (size index 5 and higher: >=9pt), scriptstyle (size index 3 and 4:\n// 7-8pt), and scriptscriptstyle (size index 1 and 2: 5-6pt). These are\n// provided in the arrays below, in that order.\n//\n// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respectively.\n// This was determined by running the following script:\n//\n// latex -interaction=nonstopmode \\\n// '\\documentclass{article}\\usepackage{amsmath}\\begin{document}' \\\n// '$a$ \\expandafter\\show\\the\\textfont2' \\\n// '\\expandafter\\show\\the\\scriptfont2' \\\n// '\\expandafter\\show\\the\\scriptscriptfont2' \\\n// '\\stop'\n//\n// The metrics themselves were retrieved using the following commands:\n//\n// tftopl cmsy10\n// tftopl cmsy7\n// tftopl cmsy5\n//\n// The output of each of these commands is quite lengthy. The only part we\n// care about is the FONTDIMEN section. Each value is measured in EMs.\nvar sigmasAndXis = {\n slant: [0.250, 0.250, 0.250],\n // sigma1\n space: [0.000, 0.000, 0.000],\n // sigma2\n stretch: [0.000, 0.000, 0.000],\n // sigma3\n shrink: [0.000, 0.000, 0.000],\n // sigma4\n xHeight: [0.431, 0.431, 0.431],\n // sigma5\n quad: [1.000, 1.171, 1.472],\n // sigma6\n extraSpace: [0.000, 0.000, 0.000],\n // sigma7\n num1: [0.677, 0.732, 0.925],\n // sigma8\n num2: [0.394, 0.384, 0.387],\n // sigma9\n num3: [0.444, 0.471, 0.504],\n // sigma10\n denom1: [0.686, 0.752, 1.025],\n // sigma11\n denom2: [0.345, 0.344, 0.532],\n // sigma12\n sup1: [0.413, 0.503, 0.504],\n // sigma13\n sup2: [0.363, 0.431, 0.404],\n // sigma14\n sup3: [0.289, 0.286, 0.294],\n // sigma15\n sub1: [0.150, 0.143, 0.200],\n // sigma16\n sub2: [0.247, 0.286, 0.400],\n // sigma17\n supDrop: [0.386, 0.353, 0.494],\n // sigma18\n subDrop: [0.050, 0.071, 0.100],\n // sigma19\n delim1: [2.390, 1.700, 1.980],\n // sigma20\n delim2: [1.010, 1.157, 1.420],\n // sigma21\n axisHeight: [0.250, 0.250, 0.250],\n // sigma22\n // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;\n // they correspond to the font parameters of the extension fonts (family 3).\n // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to\n // match cmex7, we'd use cmex7.tfm values for script and scriptscript\n // values.\n defaultRuleThickness: [0.04, 0.049, 0.049],\n // xi8; cmex7: 0.049\n bigOpSpacing1: [0.111, 0.111, 0.111],\n // xi9\n bigOpSpacing2: [0.166, 0.166, 0.166],\n // xi10\n bigOpSpacing3: [0.2, 0.2, 0.2],\n // xi11\n bigOpSpacing4: [0.6, 0.611, 0.611],\n // xi12; cmex7: 0.611\n bigOpSpacing5: [0.1, 0.143, 0.143],\n // xi13; cmex7: 0.143\n // The \\sqrt rule width is taken from the height of the surd character.\n // Since we use the same font at all sizes, this thickness doesn't scale.\n sqrtRuleThickness: [0.04, 0.04, 0.04],\n // This value determines how large a pt is, for metrics which are defined\n // in terms of pts.\n // This value is also used in katex.scss; if you change it make sure the\n // values match.\n ptPerEm: [10.0, 10.0, 10.0],\n // The space between adjacent `|` columns in an array definition. From\n // `\\showthe\\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.\n doubleRuleSep: [0.2, 0.2, 0.2],\n // The width of separator lines in {array} environments. From\n // `\\showthe\\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm.\n arrayRuleWidth: [0.04, 0.04, 0.04],\n // Two values from LaTeX source2e:\n fboxsep: [0.3, 0.3, 0.3],\n // 3 pt / ptPerEm\n fboxrule: [0.04, 0.04, 0.04] // 0.4 pt / ptPerEm\n};\n// These are very rough approximations. We default to Times New Roman which\n// should have Latin-1 and Cyrillic characters, but may not depending on the\n// operating system. The metrics do not account for extra height from the\n// accents. In the case of Cyrillic characters which have both ascenders and\n// descenders we prefer approximations with ascenders, primarily to prevent\n// the fraction bar or root line from intersecting the glyph.\n// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.\nvar extraCharacterMap = {\n // Latin-1\n '\u00C5': 'A',\n '\u00D0': 'D',\n '\u00DE': 'o',\n '\u00E5': 'a',\n '\u00F0': 'd',\n '\u00FE': 'o',\n // Cyrillic\n '\u0410': 'A',\n '\u0411': 'B',\n '\u0412': 'B',\n '\u0413': 'F',\n '\u0414': 'A',\n '\u0415': 'E',\n '\u0416': 'K',\n '\u0417': '3',\n '\u0418': 'N',\n '\u0419': 'N',\n '\u041A': 'K',\n '\u041B': 'N',\n '\u041C': 'M',\n '\u041D': 'H',\n '\u041E': 'O',\n '\u041F': 'N',\n '\u0420': 'P',\n '\u0421': 'C',\n '\u0422': 'T',\n '\u0423': 'y',\n '\u0424': 'O',\n '\u0425': 'X',\n '\u0426': 'U',\n '\u0427': 'h',\n '\u0428': 'W',\n '\u0429': 'W',\n '\u042A': 'B',\n '\u042B': 'X',\n '\u042C': 'B',\n '\u042D': '3',\n '\u042E': 'X',\n '\u042F': 'R',\n '\u0430': 'a',\n '\u0431': 'b',\n '\u0432': 'a',\n '\u0433': 'r',\n '\u0434': 'y',\n '\u0435': 'e',\n '\u0436': 'm',\n '\u0437': 'e',\n '\u0438': 'n',\n '\u0439': 'n',\n '\u043A': 'n',\n '\u043B': 'n',\n '\u043C': 'm',\n '\u043D': 'n',\n '\u043E': 'o',\n '\u043F': 'n',\n '\u0440': 'p',\n '\u0441': 'c',\n '\u0442': 'o',\n '\u0443': 'y',\n '\u0444': 'b',\n '\u0445': 'x',\n '\u0446': 'n',\n '\u0447': 'n',\n '\u0448': 'w',\n '\u0449': 'w',\n '\u044A': 'a',\n '\u044B': 'm',\n '\u044C': 'a',\n '\u044D': 'e',\n '\u044E': 'm',\n '\u044F': 'r'\n};\n/**\n * This function adds new font metrics to default metricMap\n * It can also override existing metrics\n */\nfunction setFontMetrics(fontName, metrics) {\n fontMetricsData[fontName] = metrics;\n}\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a font.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\nfunction getCharacterMetrics(character, font, mode) {\n if (!fontMetricsData[font]) {\n throw new Error(\"Font metrics not found for font: \" + font + \".\");\n }\n var ch = character.charCodeAt(0);\n var metrics = fontMetricsData[font][ch];\n if (!metrics && character[0] in extraCharacterMap) {\n ch = extraCharacterMap[character[0]].charCodeAt(0);\n metrics = fontMetricsData[font][ch];\n }\n if (!metrics && mode === 'text') {\n // We don't typically have font metrics for Asian scripts.\n // But since we support them in text mode, we need to return\n // some sort of metrics.\n // So if the character is in a script we support but we\n // don't have metrics for it, just use the metrics for\n // the Latin capital letter M. This is close enough because\n // we (currently) only care about the height of the glyph\n // not its width.\n if (supportedCodepoint(ch)) {\n metrics = fontMetricsData[font][77]; // 77 is the charcode for 'M'\n }\n }\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4]\n };\n }\n}\nvar fontMetricsBySizeIndex = {};\n/**\n * Get the font metrics for a given size.\n */\nfunction getGlobalMetrics(size) {\n var sizeIndex;\n if (size >= 5) {\n sizeIndex = 0;\n } else if (size >= 3) {\n sizeIndex = 1;\n } else {\n sizeIndex = 2;\n }\n if (!fontMetricsBySizeIndex[sizeIndex]) {\n var metrics = fontMetricsBySizeIndex[sizeIndex] = {\n cssEmPerMu: sigmasAndXis.quad[sizeIndex] / 18\n };\n for (var key in sigmasAndXis) {\n if (sigmasAndXis.hasOwnProperty(key)) {\n metrics[key] = sigmasAndXis[key][sizeIndex];\n }\n }\n }\n return fontMetricsBySizeIndex[sizeIndex];\n}\n\n/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/KaTeX/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n// Some of these have a \"-token\" suffix since these are also used as `ParseNode`\n// types for raw text tokens, and we want to avoid conflicts with higher-level\n// `ParseNode` types. These `ParseNode`s are constructed within `Parser` by\n// looking up the `symbols` map.\nvar ATOMS = {\n \"bin\": 1,\n \"close\": 1,\n \"inner\": 1,\n \"open\": 1,\n \"punct\": 1,\n \"rel\": 1\n};\nvar NON_ATOMS = {\n \"accent-token\": 1,\n \"mathord\": 1,\n \"op-token\": 1,\n \"spacing\": 1,\n \"textord\": 1\n};\nvar symbols = {\n \"math\": {},\n \"text\": {}\n};\n/** `acceptUnicodeChar = true` is only applicable if `replace` is set. */\nfunction defineSymbol(mode, font, group, replace, name, acceptUnicodeChar) {\n symbols[mode][name] = {\n font,\n group,\n replace\n };\n if (acceptUnicodeChar && replace) {\n symbols[mode][replace] = symbols[mode][name];\n }\n}\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n// modes:\nvar math = \"math\";\nvar text = \"text\";\n// fonts:\nvar main = \"main\";\nvar ams = \"ams\";\n// groups:\nvar accent = \"accent-token\";\nvar bin = \"bin\";\nvar close = \"close\";\nvar inner = \"inner\";\nvar mathord = \"mathord\";\nvar op = \"op-token\";\nvar open = \"open\";\nvar punct = \"punct\";\nvar rel = \"rel\";\nvar spacing = \"spacing\";\nvar textord = \"textord\";\n// Now comes the symbol table\n// Relation Symbols\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\", true);\ndefineSymbol(math, main, rel, \"\\u227a\", \"\\\\prec\", true);\ndefineSymbol(math, main, rel, \"\\u227b\", \"\\\\succ\", true);\ndefineSymbol(math, main, rel, \"\\u223c\", \"\\\\sim\", true);\ndefineSymbol(math, main, rel, \"\\u22a5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2aaf\", \"\\\\preceq\", true);\ndefineSymbol(math, main, rel, \"\\u2ab0\", \"\\\\succeq\", true);\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\", true);\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\", true);\ndefineSymbol(math, main, rel, \"\\u226a\", \"\\\\ll\", true);\ndefineSymbol(math, main, rel, \"\\u226b\", \"\\\\gg\", true);\ndefineSymbol(math, main, rel, \"\\u224d\", \"\\\\asymp\", true);\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\bowtie\", true);\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\", true);\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\", true);\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\", true);\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\ni\", true);\ndefineSymbol(math, main, rel, \"\\u221d\", \"\\\\propto\", true);\ndefineSymbol(math, main, rel, \"\\u22a2\", \"\\\\vdash\", true);\ndefineSymbol(math, main, rel, \"\\u22a3\", \"\\\\dashv\", true);\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\owns\");\n// Punctuation\ndefineSymbol(math, main, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\\\cdotp\");\n// The KaTeX fonts do not contain U+00B7. Use the centered dot glyph at U+22C5\n// in both modes, but keep math-mode punctuation spacing only in math mode.\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\u00b7\");\ndefineSymbol(text, main, textord, \"\\u22c5\", \"\\u00b7\");\n// Misc Symbols\ndefineSymbol(math, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(text, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(text, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\", true);\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\", true);\ndefineSymbol(math, main, textord, \"\\u210f\", \"\\\\hbar\", true);\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\", true);\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\", true);\ndefineSymbol(math, main, textord, \"\\u266d\", \"\\\\flat\", true);\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\", true);\ndefineSymbol(math, main, textord, \"\\u266e\", \"\\\\natural\", true);\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\", true);\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\", true);\ndefineSymbol(math, main, textord, \"\\u266f\", \"\\\\sharp\", true);\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\", true);\ndefineSymbol(math, main, textord, \"\\u211c\", \"\\\\Re\", true);\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\", true);\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\", true);\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\", true);\ndefineSymbol(math, main, textord, \"\\u00a7\", \"\\\\S\", true);\ndefineSymbol(text, main, textord, \"\\u00a7\", \"\\\\S\");\ndefineSymbol(math, main, textord, \"\\u00b6\", \"\\\\P\", true);\ndefineSymbol(text, main, textord, \"\\u00b6\", \"\\\\P\");\n// Math and Text\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(text, main, textord, \"\\u2020\", \"\\\\textdagger\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, main, textord, \"\\u2021\", \"\\\\ddag\");\ndefineSymbol(text, main, textord, \"\\u2021\", \"\\\\textdaggerdbl\");\n// Large Delimiters\ndefineSymbol(math, main, close, \"\\u23b1\", \"\\\\rmoustache\", true);\ndefineSymbol(math, main, open, \"\\u23b0\", \"\\\\lmoustache\", true);\ndefineSymbol(math, main, close, \"\\u27ef\", \"\\\\rgroup\", true);\ndefineSymbol(math, main, open, \"\\u27ee\", \"\\\\lgroup\", true);\n// Binary Operators\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\", true);\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\", true);\ndefineSymbol(math, main, bin, \"\\u228e\", \"\\\\uplus\", true);\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\", true);\ndefineSymbol(math, main, bin, \"\\u25ef\", \"\\\\bigcirc\", true);\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\", true);\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\", true);\ndefineSymbol(math, main, bin, \"\\u2a3f\", \"\\\\amalg\");\ndefineSymbol(math, main, bin, \"\\u0026\", \"\\\\And\"); // from amsmath\n// Arrow Symbols\ndefineSymbol(math, main, rel, \"\\u27f5\", \"\\\\longleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d0\", \"\\\\Leftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f8\", \"\\\\Longleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f6\", \"\\\\longrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d2\", \"\\\\Rightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f9\", \"\\\\Longrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27f7\", \"\\\\longleftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d4\", \"\\\\Leftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21a6\", \"\\\\mapsto\", true);\ndefineSymbol(math, main, rel, \"\\u27fc\", \"\\\\longmapsto\", true);\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\", true);\ndefineSymbol(math, main, rel, \"\\u21a9\", \"\\\\hookleftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21aa\", \"\\\\hookrightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\", true);\ndefineSymbol(math, main, rel, \"\\u21bc\", \"\\\\leftharpoonup\", true);\ndefineSymbol(math, main, rel, \"\\u21c0\", \"\\\\rightharpoonup\", true);\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21bd\", \"\\\\leftharpoondown\", true);\ndefineSymbol(math, main, rel, \"\\u21c1\", \"\\\\rightharpoondown\", true);\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21cc\", \"\\\\rightleftharpoons\", true);\n// AMS Negated Binary Relations\ndefineSymbol(math, ams, rel, \"\\u226e\", \"\\\\nless\", true);\n// Symbol names preceded by \"@\" each have a corresponding macro.\ndefineSymbol(math, ams, rel, \"\\ue010\", \"\\\\@nleqslant\");\ndefineSymbol(math, ams, rel, \"\\ue011\", \"\\\\@nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2a87\", \"\\\\lneq\", true);\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue00c\", \"\\\\@lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e6\", \"\\\\lnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a89\", \"\\\\lnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\", true);\n// unicode-math maps \\u22e0 to \\npreccurlyeq. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u22e0\", \"\\\\npreceq\", true);\ndefineSymbol(math, ams, rel, \"\\u22e8\", \"\\\\precnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab9\", \"\\\\precnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\", true);\ndefineSymbol(math, ams, rel, \"\\ue006\", \"\\\\@nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\", true);\ndefineSymbol(math, ams, rel, \"\\u22ac\", \"\\\\nvdash\", true);\ndefineSymbol(math, ams, rel, \"\\u22ad\", \"\\\\nvDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\", true);\ndefineSymbol(math, ams, rel, \"\\u228a\", \"\\\\subsetneq\", true);\ndefineSymbol(math, ams, rel, \"\\ue01a\", \"\\\\@varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acb\", \"\\\\subsetneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue017\", \"\\\\@varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226f\", \"\\\\ngtr\", true);\ndefineSymbol(math, ams, rel, \"\\ue00f\", \"\\\\@ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\ue00e\", \"\\\\@ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2a88\", \"\\\\gneq\", true);\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue00d\", \"\\\\@gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e7\", \"\\\\gnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8a\", \"\\\\gnapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\", true);\n// unicode-math maps \\u22e1 to \\nsucccurlyeq. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u22e1\", \"\\\\nsucceq\", true);\ndefineSymbol(math, ams, rel, \"\\u22e9\", \"\\\\succnsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2aba\", \"\\\\succnapprox\", true);\n// unicode-math maps \\u2246 to \\simneqq. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\", true);\ndefineSymbol(math, ams, rel, \"\\ue007\", \"\\\\@nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\", true);\ndefineSymbol(math, ams, rel, \"\\u22af\", \"\\\\nVDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\", true);\ndefineSymbol(math, ams, rel, \"\\ue018\", \"\\\\@nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228b\", \"\\\\supsetneq\", true);\ndefineSymbol(math, ams, rel, \"\\ue01b\", \"\\\\@varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acc\", \"\\\\supsetneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue019\", \"\\\\@varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22ae\", \"\\\\nVdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab5\", \"\\\\precneqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab6\", \"\\\\succneqq\", true);\ndefineSymbol(math, ams, rel, \"\\ue016\", \"\\\\@nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22b5\", \"\\\\unrhd\");\n// AMS Negated Arrows\ndefineSymbol(math, ams, rel, \"\\u219a\", \"\\\\nleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u219b\", \"\\\\nrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21cd\", \"\\\\nLeftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21cf\", \"\\\\nRightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21ae\", \"\\\\nleftrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\", true);\n// AMS Misc\ndefineSymbol(math, ams, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(text, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\", true);\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\", true);\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\", true);\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\", true);\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\", true);\n// unicode-math maps U+F0 to \\matheth. We map to AMS function \\eth\ndefineSymbol(math, ams, textord, \"\\u00f0\", \"\\\\eth\", true);\ndefineSymbol(text, main, textord, \"\\u00f0\", \"\\u00f0\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\Diamond\");\n// unicode-math maps U+A5 to \\mathyen. We map to AMS function \\yen\ndefineSymbol(math, ams, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(text, ams, textord, \"\\u00a5\", \"\\\\yen\", true);\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\", true);\ndefineSymbol(text, ams, textord, \"\\u2713\", \"\\\\checkmark\");\n// AMS Hebrew\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\", true);\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\", true);\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\", true);\n// AMS Greek\ndefineSymbol(math, ams, textord, \"\\u03dd\", \"\\\\digamma\", true);\ndefineSymbol(math, ams, textord, \"\\u03f0\", \"\\\\varkappa\");\n// AMS Delimiters\ndefineSymbol(math, ams, open, \"\\u250c\", \"\\\\@ulcorner\", true);\ndefineSymbol(math, ams, close, \"\\u2510\", \"\\\\@urcorner\", true);\ndefineSymbol(math, ams, open, \"\\u2514\", \"\\\\@llcorner\", true);\ndefineSymbol(math, ams, close, \"\\u2518\", \"\\\\@lrcorner\", true);\n// AMS Binary Relations\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2a7d\", \"\\\\leqslant\", true);\ndefineSymbol(math, ams, rel, \"\\u2a95\", \"\\\\eqslantless\", true);\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a85\", \"\\\\lessapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u224a\", \"\\\\approxeq\", true);\ndefineSymbol(math, ams, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\lll\", true);\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u22da\", \"\\\\lesseqgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\", true);\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\", true);\ndefineSymbol(math, ams, rel, \"\\u223d\", \"\\\\backsim\", true);\ndefineSymbol(math, ams, rel, \"\\u22cd\", \"\\\\backsimeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2ac5\", \"\\\\subseteqq\", true);\ndefineSymbol(math, ams, rel, \"\\u22d0\", \"\\\\Subset\", true);\ndefineSymbol(math, ams, rel, \"\\u228f\", \"\\\\sqsubset\", true);\ndefineSymbol(math, ams, rel, \"\\u227c\", \"\\\\preccurlyeq\", true);\ndefineSymbol(math, ams, rel, \"\\u22de\", \"\\\\curlyeqprec\", true);\ndefineSymbol(math, ams, rel, \"\\u227e\", \"\\\\precsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab7\", \"\\\\precapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22a8\", \"\\\\vDash\", true);\ndefineSymbol(math, ams, rel, \"\\u22aa\", \"\\\\Vvdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224f\", \"\\\\bumpeq\", true);\ndefineSymbol(math, ams, rel, \"\\u224e\", \"\\\\Bumpeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\", true);\ndefineSymbol(math, ams, rel, \"\\u2a7e\", \"\\\\geqslant\", true);\ndefineSymbol(math, ams, rel, \"\\u2a96\", \"\\\\eqslantgtr\", true);\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2a86\", \"\\\\gtrapprox\", true);\ndefineSymbol(math, ams, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\ggg\", true);\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\", true);\ndefineSymbol(math, ams, rel, \"\\u22db\", \"\\\\gtreqless\", true);\ndefineSymbol(math, ams, rel, \"\\u2a8c\", \"\\\\gtreqqless\", true);\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\", true);\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\", true);\ndefineSymbol(math, ams, rel, \"\\u225c\", \"\\\\triangleq\", true);\ndefineSymbol(math, ams, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2ac6\", \"\\\\supseteqq\", true);\ndefineSymbol(math, ams, rel, \"\\u22d1\", \"\\\\Supset\", true);\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\", true);\ndefineSymbol(math, ams, rel, \"\\u227d\", \"\\\\succcurlyeq\", true);\ndefineSymbol(math, ams, rel, \"\\u22df\", \"\\\\curlyeqsucc\", true);\ndefineSymbol(math, ams, rel, \"\\u227f\", \"\\\\succsim\", true);\ndefineSymbol(math, ams, rel, \"\\u2ab8\", \"\\\\succapprox\", true);\ndefineSymbol(math, ams, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22a9\", \"\\\\Vdash\", true);\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226c\", \"\\\\between\", true);\ndefineSymbol(math, ams, rel, \"\\u22d4\", \"\\\\pitchfork\", true);\ndefineSymbol(math, ams, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25c0\", \"\\\\blacktriangleleft\");\n// unicode-math says that \\therefore is a mathord atom.\n// We kept the amssymb atom type, which is rel.\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\", true);\ndefineSymbol(math, ams, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25b6\", \"\\\\blacktriangleright\");\n// unicode-math says that \\because is a mathord atom.\n// We kept the amssymb atom type, which is rel.\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\", true);\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\", true);\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\", true);\n// AMS Binary Operators\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\", true);\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\Cap\", true);\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\Cup\", true);\ndefineSymbol(math, ams, bin, \"\\u2a5e\", \"\\\\doublebarwedge\", true);\ndefineSymbol(math, ams, bin, \"\\u229f\", \"\\\\boxminus\", true);\ndefineSymbol(math, ams, bin, \"\\u229e\", \"\\\\boxplus\", true);\ndefineSymbol(math, ams, bin, \"\\u22c7\", \"\\\\divideontimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22c9\", \"\\\\ltimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22ca\", \"\\\\rtimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cb\", \"\\\\leftthreetimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cc\", \"\\\\rightthreetimes\", true);\ndefineSymbol(math, ams, bin, \"\\u22cf\", \"\\\\curlywedge\", true);\ndefineSymbol(math, ams, bin, \"\\u22ce\", \"\\\\curlyvee\", true);\ndefineSymbol(math, ams, bin, \"\\u229d\", \"\\\\circleddash\", true);\ndefineSymbol(math, ams, bin, \"\\u229b\", \"\\\\circledast\", true);\ndefineSymbol(math, ams, bin, \"\\u22c5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22ba\", \"\\\\intercal\", true);\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22a0\", \"\\\\boxtimes\", true);\n// AMS Arrows\n// Note: unicode-math maps \\u21e2 to their own function \\rightdasharrow.\n// We'll map it to AMS function \\dashrightarrow. It produces the same atom.\ndefineSymbol(math, ams, rel, \"\\u21e2\", \"\\\\dashrightarrow\", true);\n// unicode-math maps \\u21e0 to \\leftdasharrow. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u21e0\", \"\\\\dashleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21c7\", \"\\\\leftleftarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21c6\", \"\\\\leftrightarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21da\", \"\\\\Lleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u219e\", \"\\\\twoheadleftarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21a2\", \"\\\\leftarrowtail\", true);\ndefineSymbol(math, ams, rel, \"\\u21ab\", \"\\\\looparrowleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21cb\", \"\\\\leftrightharpoons\", true);\ndefineSymbol(math, ams, rel, \"\\u21b6\", \"\\\\curvearrowleft\", true);\n// unicode-math maps \\u21ba to \\acwopencirclearrow. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u21ba\", \"\\\\circlearrowleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21b0\", \"\\\\Lsh\", true);\ndefineSymbol(math, ams, rel, \"\\u21c8\", \"\\\\upuparrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21bf\", \"\\\\upharpoonleft\", true);\ndefineSymbol(math, ams, rel, \"\\u21c3\", \"\\\\downharpoonleft\", true);\ndefineSymbol(math, main, rel, \"\\u22b6\", \"\\\\origof\", true); // not in font\ndefineSymbol(math, main, rel, \"\\u22b7\", \"\\\\imageof\", true); // not in font\ndefineSymbol(math, ams, rel, \"\\u22b8\", \"\\\\multimap\", true);\ndefineSymbol(math, ams, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21c9\", \"\\\\rightrightarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21c4\", \"\\\\rightleftarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21a3\", \"\\\\rightarrowtail\", true);\ndefineSymbol(math, ams, rel, \"\\u21ac\", \"\\\\looparrowright\", true);\ndefineSymbol(math, ams, rel, \"\\u21b7\", \"\\\\curvearrowright\", true);\n// unicode-math maps \\u21bb to \\cwopencirclearrow. We'll use the AMS synonym.\ndefineSymbol(math, ams, rel, \"\\u21bb\", \"\\\\circlearrowright\", true);\ndefineSymbol(math, ams, rel, \"\\u21b1\", \"\\\\Rsh\", true);\ndefineSymbol(math, ams, rel, \"\\u21ca\", \"\\\\downdownarrows\", true);\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\upharpoonright\", true);\ndefineSymbol(math, ams, rel, \"\\u21c2\", \"\\\\downharpoonright\", true);\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\rightsquigarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21db\", \"\\\\Rrightarrow\", true);\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\restriction\");\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\textdollar\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(text, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\textunderscore\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\", true);\ndefineSymbol(math, main, textord, \"\\u221e\", \"\\\\infty\", true);\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\", true);\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\", true);\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\", true);\ndefineSymbol(math, main, textord, \"\\u039b\", \"\\\\Lambda\", true);\ndefineSymbol(math, main, textord, \"\\u039e\", \"\\\\Xi\", true);\ndefineSymbol(math, main, textord, \"\\u03a0\", \"\\\\Pi\", true);\ndefineSymbol(math, main, textord, \"\\u03a3\", \"\\\\Sigma\", true);\ndefineSymbol(math, main, textord, \"\\u03a5\", \"\\\\Upsilon\", true);\ndefineSymbol(math, main, textord, \"\\u03a6\", \"\\\\Phi\", true);\ndefineSymbol(math, main, textord, \"\\u03a8\", \"\\\\Psi\", true);\ndefineSymbol(math, main, textord, \"\\u03a9\", \"\\\\Omega\", true);\ndefineSymbol(math, main, textord, \"A\", \"\\u0391\");\ndefineSymbol(math, main, textord, \"B\", \"\\u0392\");\ndefineSymbol(math, main, textord, \"E\", \"\\u0395\");\ndefineSymbol(math, main, textord, \"Z\", \"\\u0396\");\ndefineSymbol(math, main, textord, \"H\", \"\\u0397\");\ndefineSymbol(math, main, textord, \"I\", \"\\u0399\");\ndefineSymbol(math, main, textord, \"K\", \"\\u039A\");\ndefineSymbol(math, main, textord, \"M\", \"\\u039C\");\ndefineSymbol(math, main, textord, \"N\", \"\\u039D\");\ndefineSymbol(math, main, textord, \"O\", \"\\u039F\");\ndefineSymbol(math, main, textord, \"P\", \"\\u03A1\");\ndefineSymbol(math, main, textord, \"T\", \"\\u03A4\");\ndefineSymbol(math, main, textord, \"X\", \"\\u03A7\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\neg\", true);\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03b1\", \"\\\\alpha\", true);\ndefineSymbol(math, main, mathord, \"\\u03b2\", \"\\\\beta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b3\", \"\\\\gamma\", true);\ndefineSymbol(math, main, mathord, \"\\u03b4\", \"\\\\delta\", true);\ndefineSymbol(math, main, mathord, \"\\u03f5\", \"\\\\epsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03b6\", \"\\\\zeta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b7\", \"\\\\eta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b8\", \"\\\\theta\", true);\ndefineSymbol(math, main, mathord, \"\\u03b9\", \"\\\\iota\", true);\ndefineSymbol(math, main, mathord, \"\\u03ba\", \"\\\\kappa\", true);\ndefineSymbol(math, main, mathord, \"\\u03bb\", \"\\\\lambda\", true);\ndefineSymbol(math, main, mathord, \"\\u03bc\", \"\\\\mu\", true);\ndefineSymbol(math, main, mathord, \"\\u03bd\", \"\\\\nu\", true);\ndefineSymbol(math, main, mathord, \"\\u03be\", \"\\\\xi\", true);\ndefineSymbol(math, main, mathord, \"\\u03bf\", \"\\\\omicron\", true);\ndefineSymbol(math, main, mathord, \"\\u03c0\", \"\\\\pi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c1\", \"\\\\rho\", true);\ndefineSymbol(math, main, mathord, \"\\u03c3\", \"\\\\sigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03c4\", \"\\\\tau\", true);\ndefineSymbol(math, main, mathord, \"\\u03c5\", \"\\\\upsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03d5\", \"\\\\phi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c7\", \"\\\\chi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c8\", \"\\\\psi\", true);\ndefineSymbol(math, main, mathord, \"\\u03c9\", \"\\\\omega\", true);\ndefineSymbol(math, main, mathord, \"\\u03b5\", \"\\\\varepsilon\", true);\ndefineSymbol(math, main, mathord, \"\\u03d1\", \"\\\\vartheta\", true);\ndefineSymbol(math, main, mathord, \"\\u03d6\", \"\\\\varpi\", true);\ndefineSymbol(math, main, mathord, \"\\u03f1\", \"\\\\varrho\", true);\ndefineSymbol(math, main, mathord, \"\\u03c2\", \"\\\\varsigma\", true);\ndefineSymbol(math, main, mathord, \"\\u03c6\", \"\\\\varphi\", true);\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\", true);\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\", true);\ndefineSymbol(math, main, bin, \"\\u22c5\", \"\\\\cdot\", true);\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\", true);\ndefineSymbol(math, main, bin, \"\\u00f7\", \"\\\\div\", true);\ndefineSymbol(math, main, bin, \"\\u00b1\", \"\\\\pm\", true);\ndefineSymbol(math, main, bin, \"\\u00d7\", \"\\\\times\", true);\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\", true);\ndefineSymbol(math, main, bin, \"\\u222a\", \"\\\\cup\", true);\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\", true);\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\", true);\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\", true);\ndefineSymbol(math, main, textord, \"\\u221a\", \"\\\\surd\");\ndefineSymbol(math, main, open, \"\\u27e8\", \"\\\\langle\", true);\ndefineSymbol(math, main, open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, close, \"?\", \"?\");\ndefineSymbol(math, main, close, \"!\", \"!\");\ndefineSymbol(math, main, close, \"\\u27e9\", \"\\\\rangle\", true);\ndefineSymbol(math, main, close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\", true);\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\", true);\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\", true);\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\", true);\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\", true);\ndefineSymbol(math, main, rel, \"\\ue020\", \"\\\\@not\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\", true);\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\", true);\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\", true);\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\", true);\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\", true);\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\", true);\ndefineSymbol(math, main, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\", true);\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\", true);\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\", true);\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\", true);\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\space\");\n// Ref: LaTeX Source 2e: \\DeclareRobustCommand{\\nobreakspace}{%\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \" \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\nobreakspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\nobreak\");\ndefineSymbol(math, main, spacing, null, \"\\\\allowbreak\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, ams, bin, \"\\u22bc\", \"\\\\barwedge\", true);\ndefineSymbol(math, ams, bin, \"\\u22bb\", \"\\\\veebar\", true);\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\", true);\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\", true);\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\", true);\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\", true);\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\", true);\ndefineSymbol(math, ams, bin, \"\\u229a\", \"\\\\circledcirc\", true);\ndefineSymbol(math, ams, bin, \"\\u22a1\", \"\\\\boxdot\", true);\ndefineSymbol(math, main, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22c6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\textbraceleft\");\ndefineSymbol(math, main, close, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\textbraceright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, open, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(text, main, textord, \"[\", \"\\\\lbrack\", true);\ndefineSymbol(math, main, close, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(text, main, textord, \"]\", \"\\\\rbrack\", true);\ndefineSymbol(math, main, open, \"(\", \"\\\\lparen\", true);\ndefineSymbol(math, main, close, \")\", \"\\\\rparen\", true);\ndefineSymbol(text, main, textord, \"<\", \"\\\\textless\", true); // in T1 fontenc\ndefineSymbol(text, main, textord, \">\", \"\\\\textgreater\", true); // in T1 fontenc\ndefineSymbol(math, main, open, \"\\u230a\", \"\\\\lfloor\", true);\ndefineSymbol(math, main, close, \"\\u230b\", \"\\\\rfloor\", true);\ndefineSymbol(math, main, open, \"\\u2308\", \"\\\\lceil\", true);\ndefineSymbol(math, main, close, \"\\u2309\", \"\\\\rceil\", true);\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(text, main, textord, \"|\", \"\\\\textbar\", true); // in T1 fontenc\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(text, main, textord, \"\\u2225\", \"\\\\textbardbl\");\ndefineSymbol(text, main, textord, \"~\", \"\\\\textasciitilde\");\ndefineSymbol(text, main, textord, \"\\\\\", \"\\\\textbackslash\");\ndefineSymbol(text, main, textord, \"^\", \"\\\\textasciicircum\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d1\", \"\\\\Uparrow\", true);\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d3\", \"\\\\Downarrow\", true);\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\", true);\ndefineSymbol(math, main, rel, \"\\u21d5\", \"\\\\Updownarrow\", true);\ndefineSymbol(math, main, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, main, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, main, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, main, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, main, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, main, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, main, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, main, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, main, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, main, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, main, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, main, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, main, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, main, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, main, op, \"\\u222f\", \"\\\\oiint\");\ndefineSymbol(math, main, op, \"\\u2230\", \"\\\\oiiint\");\ndefineSymbol(math, main, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, main, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\textellipsis\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\mathellipsis\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\", true);\ndefineSymbol(math, main, inner, \"\\u22ef\", \"\\\\@cdots\", true);\ndefineSymbol(math, main, inner, \"\\u22f1\", \"\\\\ddots\", true);\n// \\vdots is a macro that uses one of these two symbols (with made-up names):\ndefineSymbol(math, main, textord, \"\\u22ee\", \"\\\\varvdots\");\ndefineSymbol(text, main, textord, \"\\u22ee\", \"\\\\varvdots\");\ndefineSymbol(math, main, accent, \"\\u02ca\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"\\u02cb\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\u02c9\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"\\u005e\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20d7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, main, accent, \"\\u02da\", \"\\\\mathring\");\n// \\imath and \\jmath should be invariant to \\mathrm, \\mathbf, etc., so use PUA\ndefineSymbol(math, main, mathord, \"\\ue131\", \"\\\\@imath\");\ndefineSymbol(math, main, mathord, \"\\ue237\", \"\\\\@jmath\");\ndefineSymbol(math, main, textord, \"\\u0131\", \"\\u0131\");\ndefineSymbol(math, main, textord, \"\\u0237\", \"\\u0237\");\ndefineSymbol(text, main, textord, \"\\u0131\", \"\\\\i\", true);\ndefineSymbol(text, main, textord, \"\\u0237\", \"\\\\j\", true);\ndefineSymbol(text, main, textord, \"\\u00df\", \"\\\\ss\", true);\ndefineSymbol(text, main, textord, \"\\u00e6\", \"\\\\ae\", true);\ndefineSymbol(text, main, textord, \"\\u0153\", \"\\\\oe\", true);\ndefineSymbol(text, main, textord, \"\\u00f8\", \"\\\\o\", true);\ndefineSymbol(text, main, textord, \"\\u00c6\", \"\\\\AE\", true);\ndefineSymbol(text, main, textord, \"\\u0152\", \"\\\\OE\", true);\ndefineSymbol(text, main, textord, \"\\u00d8\", \"\\\\O\", true);\ndefineSymbol(text, main, accent, \"\\u02ca\", \"\\\\'\"); // acute\ndefineSymbol(text, main, accent, \"\\u02cb\", \"\\\\`\"); // grave\ndefineSymbol(text, main, accent, \"\\u02c6\", \"\\\\^\"); // circumflex\ndefineSymbol(text, main, accent, \"\\u02dc\", \"\\\\~\"); // tilde\ndefineSymbol(text, main, accent, \"\\u02c9\", \"\\\\=\"); // macron\ndefineSymbol(text, main, accent, \"\\u02d8\", \"\\\\u\"); // breve\ndefineSymbol(text, main, accent, \"\\u02d9\", \"\\\\.\"); // dot above\ndefineSymbol(text, main, accent, \"\\u00b8\", \"\\\\c\"); // cedilla\ndefineSymbol(text, main, accent, \"\\u02da\", \"\\\\r\"); // ring above\ndefineSymbol(text, main, accent, \"\\u02c7\", \"\\\\v\"); // caron\ndefineSymbol(text, main, accent, \"\\u00a8\", '\\\\\"'); // diaeresis\ndefineSymbol(text, main, accent, \"\\u02dd\", \"\\\\H\"); // double acute\ndefineSymbol(text, main, accent, \"\\u25ef\", \"\\\\textcircled\"); // \\bigcirc glyph\n// These ligatures are detected and created in Parser.js's `formLigatures`.\nvar ligatures = {\n \"--\": true,\n \"---\": true,\n \"``\": true,\n \"''\": true\n};\ndefineSymbol(text, main, textord, \"\\u2013\", \"--\", true);\ndefineSymbol(text, main, textord, \"\\u2013\", \"\\\\textendash\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"---\", true);\ndefineSymbol(text, main, textord, \"\\u2014\", \"\\\\textemdash\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"`\", true);\ndefineSymbol(text, main, textord, \"\\u2018\", \"\\\\textquoteleft\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"'\", true);\ndefineSymbol(text, main, textord, \"\\u2019\", \"\\\\textquoteright\");\ndefineSymbol(text, main, textord, \"\\u201c\", \"``\", true);\ndefineSymbol(text, main, textord, \"\\u201c\", \"\\\\textquotedblleft\");\ndefineSymbol(text, main, textord, \"\\u201d\", \"''\", true);\ndefineSymbol(text, main, textord, \"\\u201d\", \"\\\\textquotedblright\");\n// \\degree from gensymb package\ndefineSymbol(math, main, textord, \"\\u00b0\", \"\\\\degree\", true);\ndefineSymbol(text, main, textord, \"\\u00b0\", \"\\\\degree\");\n// \\textdegree from inputenc package\ndefineSymbol(text, main, textord, \"\\u00b0\", \"\\\\textdegree\", true);\n// TODO: In LaTeX, \\pounds can generate a different character in text and math\n// mode, but among our fonts, only Main-Regular defines this character \"163\".\ndefineSymbol(math, main, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(math, main, textord, \"\\u00a3\", \"\\\\mathsterling\", true);\ndefineSymbol(text, main, textord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(text, main, textord, \"\\u00a3\", \"\\\\textsterling\", true);\ndefineSymbol(math, ams, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(text, ams, textord, \"\\u2720\", \"\\\\maltese\");\n// There are lots of symbols which are the same, so we add them in afterwards.\n// All of these are textords in math mode\nvar mathTextSymbols = \"0123456789/@.\\\"\";\nfor (var i = 0; i < mathTextSymbols.length; i++) {\n var ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n}\n// All of these are textords in text mode\nvar textSymbols = \"0123456789!@*()-=+\\\";:?/.,\";\nfor (var _i = 0; _i < textSymbols.length; _i++) {\n var _ch = textSymbols.charAt(_i);\n defineSymbol(text, main, textord, _ch, _ch);\n}\n// All of these are textords in text mode, and mathords in math mode\nvar letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nfor (var _i2 = 0; _i2 < letters.length; _i2++) {\n var _ch2 = letters.charAt(_i2);\n defineSymbol(math, main, mathord, _ch2, _ch2);\n defineSymbol(text, main, textord, _ch2, _ch2);\n}\n// Blackboard bold and script letters in Unicode range\ndefineSymbol(math, ams, textord, \"C\", \"\\u2102\"); // blackboard bold\ndefineSymbol(text, ams, textord, \"C\", \"\\u2102\");\ndefineSymbol(math, ams, textord, \"H\", \"\\u210D\");\ndefineSymbol(text, ams, textord, \"H\", \"\\u210D\");\ndefineSymbol(math, ams, textord, \"N\", \"\\u2115\");\ndefineSymbol(text, ams, textord, \"N\", \"\\u2115\");\ndefineSymbol(math, ams, textord, \"P\", \"\\u2119\");\ndefineSymbol(text, ams, textord, \"P\", \"\\u2119\");\ndefineSymbol(math, ams, textord, \"Q\", \"\\u211A\");\ndefineSymbol(text, ams, textord, \"Q\", \"\\u211A\");\ndefineSymbol(math, ams, textord, \"R\", \"\\u211D\");\ndefineSymbol(text, ams, textord, \"R\", \"\\u211D\");\ndefineSymbol(math, ams, textord, \"Z\", \"\\u2124\");\ndefineSymbol(text, ams, textord, \"Z\", \"\\u2124\");\ndefineSymbol(math, main, mathord, \"h\", \"\\u210E\"); // italic h, Planck constant\ndefineSymbol(text, main, mathord, \"h\", \"\\u210E\");\n// The next loop loads wide (surrogate pair) characters.\n// We support some letters in the Unicode range U+1D400 to U+1D7FF,\n// Mathematical Alphanumeric Symbols.\n// Some editors do not deal well with wide characters. So don't write the\n// string into this file. Instead, create the string from the surrogate pair.\nvar wideChar = \"\";\nfor (var _i3 = 0; _i3 < letters.length; _i3++) {\n var _ch3 = letters.charAt(_i3);\n // The hex numbers in the next line are a surrogate pair.\n // 0xD835 is the high surrogate for all letters in the range we support.\n // 0xDC00 is the low surrogate for bold A.\n wideChar = String.fromCharCode(0xD835, 0xDC00 + _i3); // A-Z a-z bold\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC34 + _i3); // A-Z a-z italic\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC68 + _i3); // A-Z a-z bold italic\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDD04 + _i3); // A-Z a-z Fraktur\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDD6C + _i3); // A-Z a-z bold Fraktur\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDDA0 + _i3); // A-Z a-z sans-serif\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDDD4 + _i3); // A-Z a-z sans bold\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDE08 + _i3); // A-Z a-z sans italic\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDE70 + _i3); // A-Z a-z monospace\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n if (_i3 < 26) {\n // KaTeX fonts have only capital letters for blackboard bold and script.\n // See exception for k below.\n wideChar = String.fromCharCode(0xD835, 0xDD38 + _i3); // A-Z double struck\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDC9C + _i3); // A-Z script\n defineSymbol(math, main, mathord, _ch3, wideChar);\n defineSymbol(text, main, textord, _ch3, wideChar);\n }\n // TODO: Add bold script when it is supported by a KaTeX font.\n}\n// \"k\" is the only double struck lower case letter in the KaTeX fonts.\nwideChar = String.fromCharCode(0xD835, 0xDD5C); // k double struck\ndefineSymbol(math, main, mathord, \"k\", wideChar);\ndefineSymbol(text, main, textord, \"k\", wideChar);\n// Next, some wide character numerals\nfor (var _i4 = 0; _i4 < 10; _i4++) {\n var _ch4 = _i4.toString();\n wideChar = String.fromCharCode(0xD835, 0xDFCE + _i4); // 0-9 bold\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFE2 + _i4); // 0-9 sans serif\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFEC + _i4); // 0-9 bold sans\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n wideChar = String.fromCharCode(0xD835, 0xDFF6 + _i4); // 0-9 monospace\n defineSymbol(math, main, mathord, _ch4, wideChar);\n defineSymbol(text, main, textord, _ch4, wideChar);\n}\n// We add these Latin-1 letters as symbols for backwards-compatibility,\n// but they are not actually in the font, nor are they supported by the\n// Unicode accent mechanism, so they fall back to Times font and look ugly.\n// TODO(edemaine): Fix this.\nvar extraLatin = \"\\u00d0\\u00de\\u00fe\";\nfor (var _i5 = 0; _i5 < extraLatin.length; _i5++) {\n var _ch5 = extraLatin.charAt(_i5);\n defineSymbol(math, main, mathord, _ch5, _ch5);\n defineSymbol(text, main, textord, _ch5, _ch5);\n}\n\n/**\n * This file provides support for Unicode range U+1D400 to U+1D7FF,\n * Mathematical Alphanumeric Symbols.\n *\n * Function wideCharacterFont takes a wide character as input and returns\n * the font information necessary to render it properly.\n */\n/**\n * Data below is from https://www.unicode.org/charts/PDF/U1D400.pdf\n * That document sorts characters into groups by font type, say bold or italic.\n *\n * In the arrays below, each subarray consists three elements:\n * * The CSS class of that group when in math mode.\n * * The CSS class of that group when in text mode.\n * * The font name, so that KaTeX can get font metrics.\n */\nvar wideLatinLetterData = [[\"mathbf\", \"textbf\", \"Main-Bold\"],\n// A-Z bold upright\n[\"mathbf\", \"textbf\", \"Main-Bold\"],\n// a-z bold upright\n[\"mathnormal\", \"textit\", \"Math-Italic\"],\n// A-Z italic\n[\"mathnormal\", \"textit\", \"Math-Italic\"],\n// a-z italic\n[\"boldsymbol\", \"boldsymbol\", \"Main-BoldItalic\"],\n// A-Z bold italic\n[\"boldsymbol\", \"boldsymbol\", \"Main-BoldItalic\"],\n// a-z bold italic\n// Map fancy A-Z letters to script, not calligraphic.\n// This aligns with unicode-math and math fonts (except Cambria Math).\n[\"mathscr\", \"textscr\", \"Script-Regular\"],\n// A-Z script\n[\"\", \"\", \"\"],\n// a-z script. No font\n[\"\", \"\", \"\"],\n// A-Z bold script. No font\n[\"\", \"\", \"\"],\n// a-z bold script. No font\n[\"mathfrak\", \"textfrak\", \"Fraktur-Regular\"],\n// A-Z Fraktur\n[\"mathfrak\", \"textfrak\", \"Fraktur-Regular\"],\n// a-z Fraktur\n[\"mathbb\", \"textbb\", \"AMS-Regular\"],\n// A-Z double-struck\n[\"mathbb\", \"textbb\", \"AMS-Regular\"],\n// k double-struck\n// Note that we are using a bold font, but font metrics for regular Fraktur.\n[\"mathboldfrak\", \"textboldfrak\", \"Fraktur-Regular\"],\n// A-Z bold Fraktur\n[\"mathboldfrak\", \"textboldfrak\", \"Fraktur-Regular\"],\n// a-z bold Fraktur\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"],\n// A-Z sans-serif\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"],\n// a-z sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"],\n// A-Z bold sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"],\n// a-z bold sans-serif\n[\"mathitsf\", \"textitsf\", \"SansSerif-Italic\"],\n// A-Z italic sans-serif\n[\"mathitsf\", \"textitsf\", \"SansSerif-Italic\"],\n// a-z italic sans-serif\n[\"\", \"\", \"\"],\n// A-Z bold italic sans. No font\n[\"\", \"\", \"\"],\n// a-z bold italic sans. No font\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"],\n// A-Z monospace\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"] // a-z monospace\n];\nvar wideNumeralData = [[\"mathbf\", \"textbf\", \"Main-Bold\"],\n// 0-9 bold\n[\"\", \"\", \"\"],\n// 0-9 double-struck. No KaTeX font.\n[\"mathsf\", \"textsf\", \"SansSerif-Regular\"],\n// 0-9 sans-serif\n[\"mathboldsf\", \"textboldsf\", \"SansSerif-Bold\"],\n// 0-9 bold sans-serif\n[\"mathtt\", \"texttt\", \"Typewriter-Regular\"] // 0-9 monospace\n];\nvar wideCharacterFont = (wideChar, mode) => {\n // IE doesn't support codePointAt(). So work with the surrogate pair.\n var H = wideChar.charCodeAt(0); // high surrogate\n var L = wideChar.charCodeAt(1); // low surrogate\n var codePoint = (H - 0xD800) * 0x400 + (L - 0xDC00) + 0x10000;\n var j = mode === \"math\" ? 0 : 1; // column index for CSS class.\n if (0x1D400 <= codePoint && codePoint < 0x1D6A4) {\n // wideLatinLetterData contains exactly 26 chars on each row.\n // So we can calculate the relevant row. No traverse necessary.\n var i = Math.floor((codePoint - 0x1D400) / 26);\n return [wideLatinLetterData[i][2], wideLatinLetterData[i][j]];\n } else if (0x1D7CE <= codePoint && codePoint <= 0x1D7FF) {\n // Numerals, ten per row.\n var _i = Math.floor((codePoint - 0x1D7CE) / 10);\n return [wideNumeralData[_i][2], wideNumeralData[_i][j]];\n } else if (codePoint === 0x1D6A5 || codePoint === 0x1D6A6) {\n // dotless i or j\n return [wideLatinLetterData[0][2], wideLatinLetterData[0][j]];\n } else if (0x1D6A6 < codePoint && codePoint < 0x1D7CE) {\n // Greek letters. Not supported, yet.\n return [\"\", \"\"];\n } else {\n // We don't support any wide characters outside 1D400\u20131D7FF.\n throw new ParseError(\"Unsupported character: \" + wideChar);\n }\n};\n\n/* eslint no-console:0 */\n/**\n * Looks up the given symbol in fontMetrics, after applying any symbol\n * replacements defined in symbol.js\n */\nvar lookupSymbol = function lookupSymbol(value,\n// TODO(#963): Use a union type for this.\nfontName, mode) {\n // Replace the value with its replaced value from symbol.js\n if (symbols[mode][value]) {\n var replacement = symbols[mode][value].replace;\n if (replacement) {\n value = replacement;\n }\n }\n return {\n value,\n metrics: getCharacterMetrics(value, fontName, mode)\n };\n};\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n *\n * TODO: make argument order closer to makeSpan\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n * TODO(#953): Make `options` mandatory and always pass it in.\n */\nvar makeSymbol = function makeSymbol(value, fontName, mode, options, classes) {\n var lookup = lookupSymbol(value, fontName, mode);\n var metrics = lookup.metrics;\n value = lookup.value;\n var symbolNode;\n if (metrics) {\n var italic = metrics.italic;\n if (mode === \"text\" || options && options.font === \"mathit\") {\n italic = 0;\n }\n symbolNode = new SymbolNode(value, metrics.height, metrics.depth, italic, metrics.skew, metrics.width, classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\"No character metrics \" + (\"for '\" + value + \"' in style '\" + fontName + \"' and mode '\" + mode + \"'\"));\n symbolNode = new SymbolNode(value, 0, 0, 0, 0, 0, classes);\n }\n if (options) {\n symbolNode.maxFontSize = options.sizeMultiplier;\n if (options.style.isTight()) {\n symbolNode.classes.push(\"mtight\");\n }\n var color = options.getColor();\n if (color) {\n symbolNode.style.color = color;\n }\n }\n return symbolNode;\n};\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\nvar mathsym = function mathsym(value, mode, options, classes) {\n if (classes === void 0) {\n classes = [];\n }\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text, as well as a special case for boldsymbol because it\n // can be used for bold + and -\n if (options.font === \"boldsymbol\" && lookupSymbol(value, \"Main-Bold\", mode).metrics) {\n return makeSymbol(value, \"Main-Bold\", mode, options, classes.concat([\"mathbf\"]));\n } else if (value === \"\\\\\" || symbols[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, options, classes);\n } else {\n return makeSymbol(value, \"AMS-Regular\", mode, options, classes.concat([\"amsrm\"]));\n }\n};\n/**\n * Determines which of the two font names (Main-Bold and Math-BoldItalic) and\n * corresponding style tags (mathbf or boldsymbol) to use for font \"boldsymbol\",\n * depending on the symbol. Use this function instead of fontMap for font\n * \"boldsymbol\".\n */\nvar boldsymbol = function boldsymbol(value, mode, options, classes, type) {\n if (type !== \"textord\" && lookupSymbol(value, \"Math-BoldItalic\", mode).metrics) {\n return {\n fontName: \"Math-BoldItalic\",\n fontClass: \"boldsymbol\"\n };\n } else {\n // Some glyphs do not exist in Math-BoldItalic so we need to use\n // Main-Bold instead.\n return {\n fontName: \"Main-Bold\",\n fontClass: \"mathbf\"\n };\n }\n};\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\nvar makeOrd = function makeOrd(group, options, type) {\n var mode = group.mode;\n var text = group.text;\n var classes = [\"mord\"];\n // Math mode or Old font (i.e. \\rm)\n var isFont = mode === \"math\" || mode === \"text\" && options.font;\n var fontOrFamily = isFont ? options.font : options.fontFamily;\n var wideFontName = \"\";\n var wideFontClass = \"\";\n if (text.charCodeAt(0) === 0xD835) {\n [wideFontName, wideFontClass] = wideCharacterFont(text, mode);\n }\n if (wideFontName.length > 0) {\n // surrogate pairs get special treatment\n return makeSymbol(text, wideFontName, mode, options, classes.concat(wideFontClass));\n } else if (fontOrFamily) {\n var fontName;\n var fontClasses;\n if (fontOrFamily === \"boldsymbol\") {\n var fontData = boldsymbol(text, mode, options, classes, type);\n fontName = fontData.fontName;\n fontClasses = [fontData.fontClass];\n } else if (isFont) {\n fontName = fontMap[fontOrFamily].fontName;\n fontClasses = [fontOrFamily];\n } else {\n fontName = retrieveTextFontName(fontOrFamily, options.fontWeight, options.fontShape);\n fontClasses = [fontOrFamily, options.fontWeight, options.fontShape];\n }\n if (lookupSymbol(text, fontName, mode).metrics) {\n return makeSymbol(text, fontName, mode, options, classes.concat(fontClasses));\n } else if (ligatures.hasOwnProperty(text) && fontName.slice(0, 10) === \"Typewriter\") {\n // Deconstruct ligatures in monospace fonts (\\texttt, \\tt).\n var parts = [];\n for (var i = 0; i < text.length; i++) {\n parts.push(makeSymbol(text[i], fontName, mode, options, classes.concat(fontClasses)));\n }\n return makeFragment(parts);\n }\n }\n // Makes a symbol in the default font for mathords and textords.\n if (type === \"mathord\") {\n return makeSymbol(text, \"Math-Italic\", mode, options, classes.concat([\"mathnormal\"]));\n } else if (type === \"textord\") {\n var font = symbols[mode][text] && symbols[mode][text].font;\n if (font === \"ams\") {\n var _fontName = retrieveTextFontName(\"amsrm\", options.fontWeight, options.fontShape);\n return makeSymbol(text, _fontName, mode, options, classes.concat(\"amsrm\", options.fontWeight, options.fontShape));\n } else if (font === \"main\" || !font) {\n var _fontName2 = retrieveTextFontName(\"textrm\", options.fontWeight, options.fontShape);\n return makeSymbol(text, _fontName2, mode, options, classes.concat(options.fontWeight, options.fontShape));\n } else {\n // fonts added by plugins\n var _fontName3 = retrieveTextFontName(font, options.fontWeight, options.fontShape);\n // We add font name as a css class\n return makeSymbol(text, _fontName3, mode, options, classes.concat(_fontName3, options.fontWeight, options.fontShape));\n }\n } else {\n throw new Error(\"unexpected type: \" + type + \" in makeOrd\");\n }\n};\n/**\n * Returns true if subsequent symbolNodes have the same classes, skew, maxFont,\n * and styles. For mathnormal text, the left node must also have zero italic\n * correction so we don't lose spacing between combined glyphs.\n */\nvar canCombine = (prev, next) => {\n if (createClass(prev.classes) !== createClass(next.classes) || prev.skew !== next.skew || prev.maxFontSize !== next.maxFontSize || prev.italic !== 0 && prev.hasClass(\"mathnormal\")) {\n return false;\n }\n // If prev and next both are just \"mbin\"s or \"mord\"s we don't combine them\n // so that the proper spacing can be preserved.\n if (prev.classes.length === 1) {\n var cls = prev.classes[0];\n if (cls === \"mbin\" || cls === \"mord\") {\n return false;\n }\n }\n for (var key of Object.keys(prev.style)) {\n if (prev.style[key] !== next.style[key]) {\n return false;\n }\n }\n for (var _key of Object.keys(next.style)) {\n if (prev.style[_key] !== next.style[_key]) {\n return false;\n }\n }\n return true;\n};\n/**\n * Combine consecutive domTree.symbolNodes into a single symbolNode.\n * Note: this function mutates the argument.\n */\nvar tryCombineChars = chars => {\n for (var i = 0; i < chars.length - 1; i++) {\n var prev = chars[i];\n var next = chars[i + 1];\n if (prev instanceof SymbolNode && next instanceof SymbolNode && canCombine(prev, next)) {\n prev.text += next.text;\n prev.height = Math.max(prev.height, next.height);\n prev.depth = Math.max(prev.depth, next.depth);\n // Use the last character's italic correction since we use\n // it to add padding to the right of the span created from\n // the combined characters.\n prev.italic = next.italic;\n chars.splice(i + 1, 1);\n i--;\n }\n }\n return chars;\n};\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\nvar sizeElementFromChildren = function sizeElementFromChildren(elem) {\n var height = 0;\n var depth = 0;\n var maxFontSize = 0;\n for (var i = 0; i < elem.children.length; i++) {\n var child = elem.children[i];\n if (child.height > height) {\n height = child.height;\n }\n if (child.depth > depth) {\n depth = child.depth;\n }\n if (child.maxFontSize > maxFontSize) {\n maxFontSize = child.maxFontSize;\n }\n }\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n/**\n * Makes a span with the given list of classes, list of children, and options.\n *\n * TODO(#953): Ensure that `options` is always provided (currently some call\n * sites don't pass it) and make the type below mandatory.\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\nvar makeSpan = function makeSpan(classes, children, options, style) {\n var span = new Span(classes, children, options, style);\n sizeElementFromChildren(span);\n return span;\n};\n// SVG one is simpler -- doesn't require height, depth, max-font setting.\n// This is also a separate method for typesafety.\nvar makeSvgSpan = (classes, children, options, style) => new Span(classes, children, options, style);\nvar makeLineSpan = function makeLineSpan(className, options, thickness) {\n var line = makeSpan([className], [], options);\n line.height = Math.max(thickness || options.fontMetrics().defaultRuleThickness, options.minRuleThickness);\n line.style.borderBottomWidth = makeEm(line.height);\n line.maxFontSize = 1.0;\n return line;\n};\n/**\n * Makes an anchor with the given href, list of classes, list of children,\n * and options.\n */\nvar makeAnchor = function makeAnchor(href, classes, children, options) {\n var anchor = new Anchor(href, classes, children, options);\n sizeElementFromChildren(anchor);\n return anchor;\n};\n/**\n * Makes a document fragment with the given list of children.\n */\nvar makeFragment = function makeFragment(children) {\n var fragment = new DocumentFragment(children);\n sizeElementFromChildren(fragment);\n return fragment;\n};\n/**\n * Wraps group in a span if it's a document fragment, allowing to apply classes\n * and styles\n */\nvar wrapFragment = function wrapFragment(group, options) {\n if (group instanceof DocumentFragment) {\n return makeSpan([], [group], options);\n }\n return group;\n};\n// Computes the updated `children` list and the overall depth.\n//\n// This helper function for makeVList makes it easier to enforce type safety by\n// allowing early exits (returns) in the logic.\nvar getVListChildrenAndDepth = function getVListChildrenAndDepth(params) {\n if (params.positionType === \"individualShift\") {\n var oldChildren = params.children;\n var children = [oldChildren[0]];\n // Add in kerns to the list of params.children to get each element to be\n // shifted to the correct specified shift\n var _depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n var currPos = _depth;\n for (var i = 1; i < oldChildren.length; i++) {\n var diff = -oldChildren[i].shift - currPos - oldChildren[i].elem.depth;\n var size = diff - (oldChildren[i - 1].elem.height + oldChildren[i - 1].elem.depth);\n currPos = currPos + diff;\n children.push({\n type: \"kern\",\n size\n });\n children.push(oldChildren[i]);\n }\n return {\n children,\n depth: _depth\n };\n }\n var depth;\n if (params.positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n var bottom = params.positionData;\n for (var _i = 0; _i < params.children.length; _i++) {\n var child = params.children[_i];\n bottom -= child.type === \"kern\" ? child.size : child.elem.height + child.elem.depth;\n }\n depth = bottom;\n } else if (params.positionType === \"bottom\") {\n depth = -params.positionData;\n } else {\n var firstChild = params.children[0];\n if (firstChild.type !== \"elem\") {\n throw new Error('First child must have type \"elem\".');\n }\n if (params.positionType === \"shift\") {\n depth = -firstChild.elem.depth - params.positionData;\n } else if (params.positionType === \"firstBaseline\") {\n depth = -firstChild.elem.depth;\n } else {\n throw new Error(\"Invalid positionType \" + params.positionType + \".\");\n }\n }\n return {\n children: params.children,\n depth\n };\n};\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * See VListParam documentation above.\n */\nvar makeVList = function makeVList(params, options) {\n var {\n children,\n depth\n } = getVListChildrenAndDepth(params);\n // Create a strut that is taller than any list item. The strut is added to\n // each item, where it will determine the item's baseline. Since it has\n // `overflow:hidden`, the strut's top edge will sit on the item's line box's\n // top edge and the strut's bottom edge will sit on the item's baseline,\n // with no additional line-height spacing. This allows the item baseline to\n // be positioned precisely without worrying about font ascent and\n // line-height.\n var pstrutSize = 0;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.type === \"elem\") {\n var elem = child.elem;\n pstrutSize = Math.max(pstrutSize, elem.maxFontSize, elem.height);\n }\n }\n pstrutSize += 2;\n var pstrut = makeSpan([\"pstrut\"], []);\n pstrut.style.height = makeEm(pstrutSize);\n // Create a new list of actual children at the correct offsets\n var realChildren = [];\n var minPos = depth;\n var maxPos = depth;\n var currPos = depth;\n for (var _i2 = 0; _i2 < children.length; _i2++) {\n var _child = children[_i2];\n if (_child.type === \"kern\") {\n currPos += _child.size;\n } else {\n var _elem = _child.elem;\n var classes = _child.wrapperClasses || [];\n var style = _child.wrapperStyle || {};\n var childWrap = makeSpan(classes, [pstrut, _elem], undefined, style);\n childWrap.style.top = makeEm(-pstrutSize - currPos - _elem.depth);\n if (_child.marginLeft) {\n childWrap.style.marginLeft = _child.marginLeft;\n }\n if (_child.marginRight) {\n childWrap.style.marginRight = _child.marginRight;\n }\n realChildren.push(childWrap);\n currPos += _elem.height + _elem.depth;\n }\n minPos = Math.min(minPos, currPos);\n maxPos = Math.max(maxPos, currPos);\n }\n // The vlist contents go in a table-cell with `vertical-align:bottom`.\n // This cell's bottom edge will determine the containing table's baseline\n // without overly expanding the containing line-box.\n var vlist = makeSpan([\"vlist\"], realChildren);\n vlist.style.height = makeEm(maxPos);\n // A second row is used if necessary to represent the vlist's depth.\n var rows;\n if (minPos < 0) {\n // We will define depth in an empty span with display: table-cell.\n // It should render with the height that we define. But Chrome, in\n // contenteditable mode only, treats that span as if it contains some\n // text content. And that min-height over-rides our desired height.\n // So we put another empty span inside the depth strut span.\n var emptySpan = makeSpan([], []);\n var depthStrut = makeSpan([\"vlist\"], [emptySpan]);\n depthStrut.style.height = makeEm(-minPos);\n // Safari wants the first row to have inline content; otherwise it\n // puts the bottom of the *second* row on the baseline.\n var topStrut = makeSpan([\"vlist-s\"], [new SymbolNode(\"\\u200b\")]);\n rows = [makeSpan([\"vlist-r\"], [vlist, topStrut]), makeSpan([\"vlist-r\"], [depthStrut])];\n } else {\n rows = [makeSpan([\"vlist-r\"], [vlist])];\n }\n var vtable = makeSpan([\"vlist-t\"], rows);\n if (rows.length === 2) {\n vtable.classes.push(\"vlist-t2\");\n }\n vtable.height = maxPos;\n vtable.depth = -minPos;\n return vtable;\n};\n// Glue is a concept from TeX which is a flexible space between elements in\n// either a vertical or horizontal list. In KaTeX, at least for now, it's\n// static space between elements in a horizontal layout.\nvar makeGlue = (measurement, options) => {\n // Make an empty span for the space\n var rule = makeSpan([\"mspace\"], [], options);\n var size = calculateSize(measurement, options);\n rule.style.marginRight = makeEm(size);\n return rule;\n};\n// Takes font options, and returns the appropriate fontLookup name\nvar retrieveTextFontName = function retrieveTextFontName(fontFamily, fontWeight, fontShape) {\n var baseFontName = \"\";\n switch (fontFamily) {\n case \"amsrm\":\n baseFontName = \"AMS\";\n break;\n case \"textrm\":\n baseFontName = \"Main\";\n break;\n case \"textsf\":\n baseFontName = \"SansSerif\";\n break;\n case \"texttt\":\n baseFontName = \"Typewriter\";\n break;\n default:\n baseFontName = fontFamily;\n // use fonts added by a plugin\n }\n var fontStylesName;\n if (fontWeight === \"textbf\" && fontShape === \"textit\") {\n fontStylesName = \"BoldItalic\";\n } else if (fontWeight === \"textbf\") {\n fontStylesName = \"Bold\";\n } else if (fontWeight === \"textit\") {\n fontStylesName = \"Italic\";\n } else {\n fontStylesName = \"Regular\";\n }\n return baseFontName + \"-\" + fontStylesName;\n};\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\nvar fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\"\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\"\n },\n \"textit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n \"mathit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n \"mathnormal\": {\n variant: \"italic\",\n fontName: \"Math-Italic\"\n },\n \"mathsfit\": {\n variant: \"sans-serif-italic\",\n fontName: \"SansSerif-Italic\"\n },\n // \"boldsymbol\" is missing because they require the use of multiple fonts:\n // Math-BoldItalic and Main-Bold. This is handled by a special case in\n // makeOrd which ends up calling boldsymbol.\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\"\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\"\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\"\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\"\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\"\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\"\n }\n};\nvar svgData = {\n // path, width, height\n vec: [\"vec\", 0.471, 0.714],\n // values from the font glyph\n oiintSize1: [\"oiintSize1\", 0.957, 0.499],\n // oval to overlay the integrand\n oiintSize2: [\"oiintSize2\", 1.472, 0.659],\n oiiintSize1: [\"oiiintSize1\", 1.304, 0.499],\n oiiintSize2: [\"oiiintSize2\", 1.98, 0.659]\n};\nvar staticSvg = function staticSvg(value, options) {\n // Create a span with inline SVG for the element.\n var [pathName, width, height] = svgData[value];\n var path = new PathNode(pathName);\n var svgNode = new SvgNode([path], {\n \"width\": makeEm(width),\n \"height\": makeEm(height),\n // Override CSS rule `.katex svg { width: 100% }`\n \"style\": \"width:\" + makeEm(width),\n \"viewBox\": \"0 0 \" + 1000 * width + \" \" + 1000 * height,\n \"preserveAspectRatio\": \"xMinYMin\"\n });\n var span = makeSvgSpan([\"overlay\"], [svgNode], options);\n span.height = height;\n span.style.height = makeEm(height);\n span.style.width = makeEm(width);\n return span;\n};\n\nvar thinspace = {\n number: 3,\n unit: \"mu\"\n};\nvar mediumspace = {\n number: 4,\n unit: \"mu\"\n};\nvar thickspace = {\n number: 5,\n unit: \"mu\"\n};\n// Spacing relationships for display and text styles\nvar spacings = {\n mord: {\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n minner: thinspace\n },\n mop: {\n mord: thinspace,\n mop: thinspace,\n mrel: thickspace,\n minner: thinspace\n },\n mbin: {\n mord: mediumspace,\n mop: mediumspace,\n mopen: mediumspace,\n minner: mediumspace\n },\n mrel: {\n mord: thickspace,\n mop: thickspace,\n mopen: thickspace,\n minner: thickspace\n },\n mopen: {},\n mclose: {\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n minner: thinspace\n },\n mpunct: {\n mord: thinspace,\n mop: thinspace,\n mrel: thickspace,\n mopen: thinspace,\n mclose: thinspace,\n mpunct: thinspace,\n minner: thinspace\n },\n minner: {\n mord: thinspace,\n mop: thinspace,\n mbin: mediumspace,\n mrel: thickspace,\n mopen: thinspace,\n mpunct: thinspace,\n minner: thinspace\n }\n};\n// Spacing relationships for script and scriptscript styles\nvar tightSpacings = {\n mord: {\n mop: thinspace\n },\n mop: {\n mord: thinspace,\n mop: thinspace\n },\n mbin: {},\n mrel: {},\n mopen: {},\n mclose: {\n mop: thinspace\n },\n mpunct: {},\n minner: {\n mop: thinspace\n }\n};\n\n/**\n * All registered functions.\n * `functions.js` just exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary.\n */\nvar _functions = {};\n/**\n * All HTML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\nvar _htmlGroupBuilders = {};\n/**\n * All MathML builders. Should be only used in the `define*` and the `build*ML`\n * functions.\n */\nvar _mathmlGroupBuilders = {};\nfunction defineFunction(_ref) {\n var {\n type,\n names,\n props,\n handler,\n htmlBuilder,\n mathmlBuilder\n } = _ref;\n // Set default values of functions\n var data = {\n type,\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n allowedInArgument: !!props.allowedInArgument,\n allowedInText: !!props.allowedInText,\n allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath,\n numOptionalArgs: props.numOptionalArgs || 0,\n infix: !!props.infix,\n primitive: !!props.primitive,\n handler\n };\n for (var i = 0; i < names.length; ++i) {\n _functions[names[i]] = data;\n }\n if (type) {\n if (htmlBuilder) {\n _htmlGroupBuilders[type] = htmlBuilder;\n }\n if (mathmlBuilder) {\n _mathmlGroupBuilders[type] = mathmlBuilder;\n }\n }\n}\n/**\n * Use this to register only the HTML and MathML builders for a function (e.g.\n * if the function's ParseNode is generated in Parser.js rather than via a\n * stand-alone handler provided to `defineFunction`).\n */\nfunction defineFunctionBuilders(_ref2) {\n var {\n type,\n htmlBuilder,\n mathmlBuilder\n } = _ref2;\n defineFunction({\n type,\n names: [],\n props: {\n numArgs: 0\n },\n handler() {\n throw new Error('Should never be called.');\n },\n htmlBuilder,\n mathmlBuilder\n });\n}\nvar normalizeArgument = function normalizeArgument(arg) {\n return arg.type === \"ordgroup\" && arg.body.length === 1 ? arg.body[0] : arg;\n};\n// Since the corresponding buildHTML/buildMathML function expects a\n// list of elements, we normalize for different kinds of arguments\nvar ordargument = function ordargument(arg) {\n return arg.type === \"ordgroup\" ? arg.body : [arg];\n};\n\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupBuilders functions\n * are called, to produce a final HTML tree.\n */\n// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)\n// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,\n// and the text before Rule 19.\nvar binLeftCanceller = new Set([\"leftmost\", \"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"]);\nvar binRightCanceller = new Set([\"rightmost\", \"mrel\", \"mclose\", \"mpunct\"]);\nvar styleMap$1 = {\n \"display\": Style$1.DISPLAY,\n \"text\": Style$1.TEXT,\n \"script\": Style$1.SCRIPT,\n \"scriptscript\": Style$1.SCRIPTSCRIPT\n};\nvar DomEnum = {\n mord: \"mord\",\n mop: \"mop\",\n mbin: \"mbin\",\n mrel: \"mrel\",\n mopen: \"mopen\",\n mclose: \"mclose\",\n mpunct: \"mpunct\",\n minner: \"minner\"\n};\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. documentFragments are flattened into their contents, so the\n * returned list contains no fragments. `isRealGroup` is true if `expression`\n * is a real group (no atoms will be added on either side), as opposed to\n * a partial group (e.g. one created by \\color). `surrounding` is an array\n * consisting type of nodes that will be added to the left and right.\n */\nvar buildExpression$1 = function buildExpression(expression, options, isRealGroup, surrounding) {\n if (surrounding === void 0) {\n surrounding = [null, null];\n }\n // Parse expressions into `groups`.\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var output = buildGroup$1(expression[i], options);\n if (output instanceof DocumentFragment) {\n var children = output.children;\n groups.push(...children);\n } else {\n groups.push(output);\n }\n }\n // Combine consecutive domTree.symbolNodes into a single symbolNode.\n tryCombineChars(groups);\n // If `expression` is a partial group, let the parent handle spacings\n // to avoid processing groups multiple times.\n if (!isRealGroup) {\n return groups;\n }\n var glueOptions = options;\n if (expression.length === 1) {\n var node = expression[0];\n if (node.type === \"sizing\") {\n glueOptions = options.havingSize(node.size);\n } else if (node.type === \"styling\") {\n glueOptions = options.havingStyle(styleMap$1[node.style]);\n }\n }\n // Dummy spans for determining spacings between surrounding atoms.\n // If `expression` has no atoms on the left or right, class \"leftmost\"\n // or \"rightmost\", respectively, is used to indicate it.\n var dummyPrev = makeSpan([surrounding[0] || \"leftmost\"], [], options);\n var dummyNext = makeSpan([surrounding[1] || \"rightmost\"], [], options);\n // TODO: These code assumes that a node's math class is the first element\n // of its `classes` array. A later cleanup should ensure this, for\n // instance by changing the signature of `makeSpan`.\n // Before determining what spaces to insert, perform bin cancellation.\n // Binary operators change to ordinary symbols in some contexts.\n var isRoot = isRealGroup === \"root\";\n _traverseNonSpaceNodes(groups, (node, prev) => {\n var prevType = prev.classes[0];\n var type = node.classes[0];\n if (prevType === \"mbin\" && binRightCanceller.has(type)) {\n prev.classes[0] = \"mord\";\n } else if (type === \"mbin\" && binLeftCanceller.has(prevType)) {\n node.classes[0] = \"mord\";\n }\n }, {\n node: dummyPrev\n }, dummyNext, isRoot);\n _traverseNonSpaceNodes(groups, (node, prev) => {\n var _tightSpacings$prevTy, _spacings$prevType;\n var prevType = getTypeOfDomTree(prev);\n var type = getTypeOfDomTree(node);\n // 'mtight' indicates that the node is script or scriptscript style.\n var space = prevType && type ? node.hasClass(\"mtight\") ? (_tightSpacings$prevTy = tightSpacings[prevType]) == null ? void 0 : _tightSpacings$prevTy[type] : (_spacings$prevType = spacings[prevType]) == null ? void 0 : _spacings$prevType[type] : null;\n if (space) {\n // Insert glue (spacing) after the `prev`.\n return makeGlue(space, glueOptions);\n }\n }, {\n node: dummyPrev\n }, dummyNext, isRoot);\n return groups;\n};\n// Depth-first traverse non-space `nodes`, calling `callback` with the current and\n// previous node as arguments, optionally returning a node to insert after the\n// previous node. `prev` is an object with the previous node and `insertAfter`\n// function to insert after it. `next` is a node that will be added to the right.\n// Used for bin cancellation and inserting spacings.\nvar _traverseNonSpaceNodes = function traverseNonSpaceNodes(nodes, callback, prev, next, isRoot) {\n if (next) {\n // temporarily append the right node, if exists\n nodes.push(next);\n }\n var i = 0;\n for (; i < nodes.length; i++) {\n var node = nodes[i];\n var partialGroup = checkPartialGroup(node);\n if (partialGroup) {\n // Recursive DFS\n // TODO(ts): make nodes a $ReadOnlyArray by returning a new array\n _traverseNonSpaceNodes(partialGroup.children, callback, prev, null, isRoot);\n continue;\n }\n // Ignore explicit spaces (e.g., \\;, \\,) when determining what implicit\n // spacing should go between atoms of different classes\n var nonspace = !node.hasClass(\"mspace\");\n if (nonspace) {\n var result = callback(node, prev.node);\n if (result) {\n if (prev.insertAfter) {\n prev.insertAfter(result);\n } else {\n // insert at front\n nodes.unshift(result);\n i++;\n }\n }\n }\n if (nonspace) {\n prev.node = node;\n } else if (isRoot && node.hasClass(\"newline\")) {\n prev.node = makeSpan([\"leftmost\"]); // treat like beginning of line\n }\n prev.insertAfter = (index => n => {\n nodes.splice(index + 1, 0, n);\n i++;\n })(i);\n }\n if (next) {\n nodes.pop();\n }\n};\n// Check if given node is a partial group, i.e., does not affect spacing around.\nvar checkPartialGroup = function checkPartialGroup(node) {\n if (node instanceof DocumentFragment || node instanceof Anchor || node instanceof Span && node.hasClass(\"enclosing\")) {\n return node;\n }\n return null;\n};\n// Return the outermost node of a domTree.\nvar _getOutermostNode = function getOutermostNode(node, side) {\n var partialGroup = checkPartialGroup(node);\n if (partialGroup) {\n var children = partialGroup.children;\n if (children.length) {\n if (side === \"right\") {\n return _getOutermostNode(children[children.length - 1], \"right\");\n } else if (side === \"left\") {\n return _getOutermostNode(children[0], \"left\");\n }\n }\n }\n return node;\n};\n// Return math atom class (mclass) of a domTree.\n// If `side` is given, it will get the type of the outermost node at given side.\nvar getTypeOfDomTree = function getTypeOfDomTree(node, side) {\n if (!node) {\n return null;\n }\n if (side) {\n node = _getOutermostNode(node, side);\n }\n // This makes a lot of assumptions as to where the type of atom\n // appears. We should do a better job of enforcing this.\n var className = node.classes[0];\n return DomEnum[className] || null;\n};\nvar makeNullDelimiter = function makeNullDelimiter(options, classes) {\n var moreClasses = [\"nulldelimiter\"].concat(options.baseSizingClasses());\n return makeSpan(classes.concat(moreClasses));\n};\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\nvar buildGroup$1 = function buildGroup(group, options, baseOptions) {\n if (!group) {\n return makeSpan();\n }\n if (_htmlGroupBuilders[group.type]) {\n // Call the groupBuilders function\n // TODO(ts)\n var groupNode = _htmlGroupBuilders[group.type](group, options);\n // If the size changed between the parent and the current group, account\n // for that size difference.\n if (baseOptions && options.size !== baseOptions.size) {\n groupNode = makeSpan(options.sizingClasses(baseOptions), [groupNode], options);\n var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n return groupNode;\n } else {\n throw new ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n/**\n * Combine an array of HTML DOM nodes (e.g., the output of `buildExpression`)\n * into an unbreakable HTML node of class .base, with proper struts to\n * guarantee correct vertical extent. `buildHTML` calls this repeatedly to\n * make up the entire expression as a sequence of unbreakable units.\n */\nfunction buildHTMLUnbreakable(children, options) {\n // Compute height and depth of this chunk.\n var body = makeSpan([\"base\"], children, options);\n // Add strut, which ensures that the top of the HTML element falls at\n // the height of the expression, and the bottom of the HTML element\n // falls at the depth of the expression.\n var strut = makeSpan([\"strut\"]);\n strut.style.height = makeEm(body.height + body.depth);\n if (body.depth) {\n strut.style.verticalAlign = makeEm(-body.depth);\n }\n body.children.unshift(strut);\n return body;\n}\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\nfunction buildHTML(tree, options) {\n // Strip off outer tag wrapper for processing below.\n var tag = null;\n if (tree.length === 1 && tree[0].type === \"tag\") {\n tag = tree[0].tag;\n tree = tree[0].body;\n }\n // Build the expression contained in the tree\n var expression = buildExpression$1(tree, options, \"root\");\n var eqnNum;\n if (expression.length === 2 && expression[1].hasClass(\"tag\")) {\n // An environment with automatic equation numbers, e.g. {gather}.\n eqnNum = expression.pop();\n }\n var children = [];\n // Create one base node for each chunk between potential line breaks.\n // The TeXBook [p.173] says \"A formula will be broken only after a\n // relation symbol like $=$ or $<$ or $\\rightarrow$, or after a binary\n // operation symbol like $+$ or $-$ or $\\times$, where the relation or\n // binary operation is on the ``outer level'' of the formula (i.e., not\n // enclosed in {...} and not part of an \\over construction).\"\n var parts = [];\n for (var i = 0; i < expression.length; i++) {\n parts.push(expression[i]);\n if (expression[i].hasClass(\"mbin\") || expression[i].hasClass(\"mrel\") || expression[i].hasClass(\"allowbreak\")) {\n // Put any post-operator glue on same line as operator.\n // Watch for \\nobreak along the way, and stop at \\newline.\n var nobreak = false;\n while (i < expression.length - 1 && expression[i + 1].hasClass(\"mspace\") && !expression[i + 1].hasClass(\"newline\")) {\n i++;\n parts.push(expression[i]);\n if (expression[i].hasClass(\"nobreak\")) {\n nobreak = true;\n }\n }\n // Don't allow break if \\nobreak among the post-operator glue.\n if (!nobreak) {\n children.push(buildHTMLUnbreakable(parts, options));\n parts = [];\n }\n } else if (expression[i].hasClass(\"newline\")) {\n // Write the line except the newline\n parts.pop();\n if (parts.length > 0) {\n children.push(buildHTMLUnbreakable(parts, options));\n parts = [];\n }\n // Put the newline at the top level\n children.push(expression[i]);\n }\n }\n if (parts.length > 0) {\n children.push(buildHTMLUnbreakable(parts, options));\n }\n // Now, if there was a tag, build it too and append it as a final child.\n var tagChild;\n if (tag) {\n tagChild = buildHTMLUnbreakable(buildExpression$1(tag, options, true), options);\n tagChild.classes = [\"tag\"];\n children.push(tagChild);\n } else if (eqnNum) {\n children.push(eqnNum);\n }\n var htmlNode = makeSpan([\"katex-html\"], children);\n htmlNode.setAttribute(\"aria-hidden\", \"true\");\n // Adjust the strut of the tag to be the maximum height of all children\n // (the height of the enclosing htmlNode) for proper vertical alignment.\n if (tagChild) {\n var strut = tagChild.children[0];\n strut.style.height = makeEm(htmlNode.height + htmlNode.depth);\n if (htmlNode.depth) {\n strut.style.verticalAlign = makeEm(-htmlNode.depth);\n }\n }\n return htmlNode;\n}\n\n/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work similarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\nfunction newDocumentFragment(children) {\n return new DocumentFragment(children);\n}\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `<mo>` and `<mspace>` tags).\n */\nclass MathNode {\n constructor(type, children, classes) {\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n this.classes = classes || [];\n }\n /**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\n setAttribute(name, value) {\n this.attributes[name] = value;\n }\n /**\n * Gets an attribute on a MathML node.\n */\n getAttribute(name) {\n return this.attributes[name];\n }\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n toNode() {\n var node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", this.type);\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n if (this.classes.length > 0) {\n node.className = createClass(this.classes);\n }\n for (var i = 0; i < this.children.length; i++) {\n // Combine multiple TextNodes into one TextNode, to prevent\n // screen readers from reading each as a separate word [#3995]\n if (this.children[i] instanceof TextNode && this.children[i + 1] instanceof TextNode) {\n var text = this.children[i].toText() + this.children[++i].toText();\n while (this.children[i + 1] instanceof TextNode) {\n text += this.children[++i].toText();\n }\n node.appendChild(new TextNode(text).toNode());\n } else {\n node.appendChild(this.children[i].toNode());\n }\n }\n return node;\n }\n /**\n * Converts the math node into an HTML markup string.\n */\n toMarkup() {\n var markup = \"<\" + this.type;\n // Add the attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n if (this.classes.length > 0) {\n markup += \" class =\\\"\" + escape(createClass(this.classes)) + \"\\\"\";\n }\n markup += \">\";\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n markup += \"</\" + this.type + \">\";\n return markup;\n }\n /**\n * Converts the math node into a string, similar to innerText, but escaped.\n */\n toText() {\n return this.children.map(child => child.toText()).join(\"\");\n }\n}\n/**\n * This node represents a piece of text.\n */\nclass TextNode {\n constructor(text) {\n this.text = text;\n }\n /**\n * Converts the text node into a DOM text node.\n */\n toNode() {\n return document.createTextNode(this.text);\n }\n /**\n * Converts the text node into escaped HTML markup\n * (representing the text itself).\n */\n toMarkup() {\n return escape(this.toText());\n }\n /**\n * Converts the text node into a string\n * (representing the text itself).\n */\n toText() {\n return this.text;\n }\n}\n/**\n * This node represents a space, but may render as <mspace.../> or as text,\n * depending on the width.\n */\nclass SpaceNode {\n /**\n * Create a Space node with width given in CSS ems.\n */\n constructor(width) {\n this.width = width;\n // See https://www.w3.org/TR/2000/WD-MathML2-20000328/chapter6.html\n // for a table of space-like characters. We use Unicode\n // representations instead of &LongNames; as it's not clear how to\n // make the latter via document.createTextNode.\n if (width >= 0.05555 && width <= 0.05556) {\n this.character = \"\\u200a\"; //  \n } else if (width >= 0.1666 && width <= 0.1667) {\n this.character = \"\\u2009\"; //  \n } else if (width >= 0.2222 && width <= 0.2223) {\n this.character = \"\\u2005\"; //  \n } else if (width >= 0.2777 && width <= 0.2778) {\n this.character = \"\\u2005\\u200a\"; //   \n } else if (width >= -0.05556 && width <= -0.05555) {\n this.character = \"\\u200a\\u2063\"; // ​\n } else if (width >= -0.1667 && width <= -0.1666) {\n this.character = \"\\u2009\\u2063\"; // ​\n } else if (width >= -0.2223 && width <= -0.2222) {\n this.character = \"\\u205f\\u2063\"; // ​\n } else if (width >= -0.2778 && width <= -0.2777) {\n this.character = \"\\u2005\\u2063\"; // ​\n } else {\n this.character = null;\n }\n }\n /**\n * Converts the math node into a MathML-namespaced DOM element.\n */\n toNode() {\n if (this.character) {\n return document.createTextNode(this.character);\n } else {\n var node = document.createElementNS(\"http://www.w3.org/1998/Math/MathML\", \"mspace\");\n node.setAttribute(\"width\", makeEm(this.width));\n return node;\n }\n }\n /**\n * Converts the math node into an HTML markup string.\n */\n toMarkup() {\n if (this.character) {\n return \"<mtext>\" + this.character + \"</mtext>\";\n } else {\n return \"<mspace width=\\\"\" + makeEm(this.width) + \"\\\"/>\";\n }\n }\n /**\n * Converts the math node into a string, similar to innerText.\n */\n toText() {\n if (this.character) {\n return this.character;\n } else {\n return \" \";\n }\n }\n}\n\n/**\n * This file converts a parse tree into a corresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\nvar noVariantSymbols = new Set([\"\\\\imath\", \"\\\\jmath\"]);\nvar rowLikeTypes = new Set([\"mrow\", \"mtable\"]);\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nvar makeText = function makeText(text, mode, options) {\n if (symbols[mode][text] && symbols[mode][text].replace && text.charCodeAt(0) !== 0xD835 && !(ligatures.hasOwnProperty(text) && options && (options.fontFamily && options.fontFamily.slice(4, 6) === \"tt\" || options.font && options.font.slice(4, 6) === \"tt\"))) {\n text = symbols[mode][text].replace;\n }\n return new TextNode(text);\n};\n/**\n * Wrap the given array of nodes in an <mrow> node if needed, i.e.,\n * unless the array has length 1. Always returns a single node.\n */\nvar makeRow = function makeRow(body) {\n if (body.length === 1) {\n return body[0];\n } else {\n return new MathNode(\"mrow\", body);\n }\n};\n/**\n * Returns the math variant as a string or null if none is required.\n */\nvar getVariant = function getVariant(group, options) {\n // Handle \\text... font specifiers as best we can.\n // MathML has a limited list of allowable mathvariant specifiers; see\n // https://www.w3.org/TR/MathML3/chapter3.html#presm.commatt\n if (options.fontFamily === \"texttt\") {\n return \"monospace\";\n } else if (options.fontFamily === \"textsf\") {\n if (options.fontShape === \"textit\" && options.fontWeight === \"textbf\") {\n return \"sans-serif-bold-italic\";\n } else if (options.fontShape === \"textit\") {\n return \"sans-serif-italic\";\n } else if (options.fontWeight === \"textbf\") {\n return \"bold-sans-serif\";\n } else {\n return \"sans-serif\";\n }\n } else if (options.fontShape === \"textit\" && options.fontWeight === \"textbf\") {\n return \"bold-italic\";\n } else if (options.fontShape === \"textit\") {\n return \"italic\";\n } else if (options.fontWeight === \"textbf\") {\n return \"bold\";\n }\n var font = options.font;\n if (!font || font === \"mathnormal\") {\n return null;\n }\n var mode = group.mode;\n if (font === \"mathit\") {\n return \"italic\";\n } else if (font === \"boldsymbol\") {\n return group.type === \"textord\" ? \"bold\" : \"bold-italic\";\n } else if (font === \"mathbf\") {\n return \"bold\";\n } else if (font === \"mathbb\") {\n return \"double-struck\";\n } else if (font === \"mathsfit\") {\n return \"sans-serif-italic\";\n } else if (font === \"mathfrak\") {\n return \"fraktur\";\n } else if (font === \"mathscr\" || font === \"mathcal\") {\n // MathML makes no distinction between script and calligraphic\n return \"script\";\n } else if (font === \"mathsf\") {\n return \"sans-serif\";\n } else if (font === \"mathtt\") {\n return \"monospace\";\n }\n var text = group.text;\n if (noVariantSymbols.has(text)) {\n return null;\n }\n if (symbols[mode][text]) {\n var replacement = symbols[mode][text].replace;\n if (replacement) {\n text = replacement;\n }\n }\n var fontName = fontMap[font].fontName;\n if (getCharacterMetrics(text, fontName, mode)) {\n return fontMap[font].variant;\n }\n return null;\n};\n/**\n * Check for <mi>.</mi> which is how a dot renders in MathML,\n * or <mo separator=\"true\" lspace=\"0em\" rspace=\"0em\">,</mo>\n * which is how a braced comma {,} renders in MathML\n */\nfunction isNumberPunctuation(group) {\n if (!group) {\n return false;\n }\n if (group.type === 'mi' && group.children.length === 1) {\n var child = group.children[0];\n return child instanceof TextNode && child.text === '.';\n } else if (group.type === 'mo' && group.children.length === 1 && group.getAttribute('separator') === 'true' && group.getAttribute('lspace') === '0em' && group.getAttribute('rspace') === '0em') {\n var _child = group.children[0];\n return _child instanceof TextNode && _child.text === ',';\n } else {\n return false;\n }\n}\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. Also combine consecutive <mtext> outputs into a single\n * <mtext> tag.\n */\nvar buildExpression = function buildExpression(expression, options, isOrdgroup) {\n if (expression.length === 1) {\n var group = buildGroup(expression[0], options);\n if (isOrdgroup && group instanceof MathNode && group.type === \"mo\") {\n // When TeX writers want to suppress spacing on an operator,\n // they often put the operator by itself inside braces.\n group.setAttribute(\"lspace\", \"0em\");\n group.setAttribute(\"rspace\", \"0em\");\n }\n return [group];\n }\n var groups = [];\n var lastGroup;\n for (var i = 0; i < expression.length; i++) {\n var _group = buildGroup(expression[i], options);\n if (_group instanceof MathNode && lastGroup instanceof MathNode) {\n // Concatenate adjacent <mtext>s\n if (_group.type === 'mtext' && lastGroup.type === 'mtext' && _group.getAttribute('mathvariant') === lastGroup.getAttribute('mathvariant')) {\n lastGroup.children.push(..._group.children);\n continue;\n // Concatenate adjacent <mn>s\n } else if (_group.type === 'mn' && lastGroup.type === 'mn') {\n lastGroup.children.push(..._group.children);\n continue;\n // Concatenate <mn>...</mn> followed by <mi>.</mi>\n } else if (isNumberPunctuation(_group) && lastGroup.type === 'mn') {\n lastGroup.children.push(..._group.children);\n continue;\n // Concatenate <mi>.</mi> followed by <mn>...</mn>\n } else if (_group.type === 'mn' && isNumberPunctuation(lastGroup)) {\n _group.children = [...lastGroup.children, ..._group.children];\n groups.pop();\n // Put preceding <mn>...</mn> or <mi>.</mi> inside base of\n // <msup><mn>...base...</mn>...exponent...</msup> (or <msub>)\n } else if ((_group.type === 'msup' || _group.type === 'msub') && _group.children.length >= 1 && (lastGroup.type === 'mn' || isNumberPunctuation(lastGroup))) {\n var base = _group.children[0];\n if (base instanceof MathNode && base.type === 'mn') {\n base.children = [...lastGroup.children, ...base.children];\n groups.pop();\n }\n // \\not\n } else if (lastGroup.type === 'mi' && lastGroup.children.length === 1) {\n var lastChild = lastGroup.children[0];\n if (lastChild instanceof TextNode && lastChild.text === '\\u0338' && (_group.type === 'mo' || _group.type === 'mi' || _group.type === 'mn')) {\n var child = _group.children[0];\n if (child instanceof TextNode && child.text.length > 0) {\n // Overlay with combining character long solidus\n child.text = child.text.slice(0, 1) + \"\\u0338\" + child.text.slice(1);\n groups.pop();\n }\n }\n }\n }\n groups.push(_group);\n lastGroup = _group;\n }\n return groups;\n};\n/**\n * Equivalent to buildExpression, but wraps the elements in an <mrow>\n * if there's more than one. Returns a single node instead of an array.\n */\nvar buildExpressionRow = function buildExpressionRow(expression, options, isOrdgroup) {\n return makeRow(buildExpression(expression, options, isOrdgroup));\n};\n/**\n * Takes a group from the parser and calls the appropriate groupBuilders function\n * on it to produce a MathML node.\n */\nvar buildGroup = function buildGroup(group, options) {\n if (!group) {\n return new MathNode(\"mrow\");\n }\n if (_mathmlGroupBuilders[group.type]) {\n // Call the groupBuilders function\n // TODO(ts)\n var result = _mathmlGroupBuilders[group.type](group, options);\n // TODO(ts)\n return result;\n } else {\n throw new ParseError(\"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * <semantics> tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `<math>` inside it so\n * we can do appropriate styling.\n */\nfunction buildMathML(tree, texExpression, options, isDisplayMode, forMathmlOnly) {\n var expression = buildExpression(tree, options);\n // TODO: Make a pass thru the MathML similar to buildHTML.traverseNonSpaceNodes\n // and add spacing nodes. This is necessary only adjacent to math operators\n // like \\sin or \\lim or to subsup elements that contain math operators.\n // MathML takes care of the other spacing issues.\n // Wrap up the expression in an mrow so it is presented in the semantics\n // tag correctly, unless it's a single <mrow> or <mtable>.\n var wrapper;\n if (expression.length === 1 && expression[0] instanceof MathNode && rowLikeTypes.has(expression[0].type)) {\n wrapper = expression[0];\n } else {\n wrapper = new MathNode(\"mrow\", expression);\n }\n // Build a TeX annotation of the source\n var annotation = new MathNode(\"annotation\", [new TextNode(texExpression)]);\n annotation.setAttribute(\"encoding\", \"application/x-tex\");\n var semantics = new MathNode(\"semantics\", [wrapper, annotation]);\n var math = new MathNode(\"math\", [semantics]);\n math.setAttribute(\"xmlns\", \"http://www.w3.org/1998/Math/MathML\");\n if (isDisplayMode) {\n math.setAttribute(\"display\", \"block\");\n }\n // You can't style <math> nodes, so we wrap the node in a span.\n // NOTE: The span class is not typed to have <math> nodes as children, and\n // we don't want to make the children type more generic since the children\n // of span are expected to have more fields in `buildHtml` contexts.\n var wrapperClass = forMathmlOnly ? \"katex\" : \"katex-mathml\";\n // TODO(ts)\n return makeSpan([wrapperClass], [math]);\n}\n\n/**\n * This file contains information about the options that the Parser carries\n * around with it while parsing. Data is held in an `Options` object, and when\n * recursing, a new `Options` object can be created with the `.with*` and\n * `.reset` functions.\n */\nvar sizeStyleMap = [\n// Each element contains [textsize, scriptsize, scriptscriptsize].\n// The size mappings are taken from TeX with \\normalsize=10pt.\n[1, 1, 1],\n// size1: [5, 5, 5] \\tiny\n[2, 1, 1],\n// size2: [6, 5, 5]\n[3, 1, 1],\n// size3: [7, 5, 5] \\scriptsize\n[4, 2, 1],\n// size4: [8, 6, 5] \\footnotesize\n[5, 2, 1],\n// size5: [9, 6, 5] \\small\n[6, 3, 1],\n// size6: [10, 7, 5] \\normalsize\n[7, 4, 2],\n// size7: [12, 8, 6] \\large\n[8, 6, 3],\n// size8: [14.4, 10, 7] \\Large\n[9, 7, 6],\n// size9: [17.28, 12, 10] \\LARGE\n[10, 8, 7],\n// size10: [20.74, 14.4, 12] \\huge\n[11, 10, 9] // size11: [24.88, 20.74, 17.28] \\HUGE\n];\nvar sizeMultipliers = [\n// fontMetrics.js:getGlobalMetrics also uses size indexes, so if\n// you change size indexes, change that function.\n0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.44, 1.728, 2.074, 2.488];\nvar sizeAtStyle = function sizeAtStyle(size, style) {\n return style.size < 2 ? size : sizeStyleMap[size - 1][style.size - 1];\n};\n/**\n * This is the main options class. It contains the current style, size, color,\n * and font.\n *\n * Options objects should not be modified. To create a new Options with\n * different properties, call a `.having*` method.\n */\nclass Options {\n constructor(data) {\n this.style = data.style;\n this.color = data.color;\n this.size = data.size || Options.BASESIZE;\n this.textSize = data.textSize || this.size;\n this.phantom = !!data.phantom;\n this.font = data.font || \"\";\n this.fontFamily = data.fontFamily || \"\";\n this.fontWeight = data.fontWeight || '';\n this.fontShape = data.fontShape || '';\n this.sizeMultiplier = sizeMultipliers[this.size - 1];\n this.maxSize = data.maxSize;\n this.minRuleThickness = data.minRuleThickness;\n this._fontMetrics = undefined;\n }\n /**\n * Returns a new options object with the same properties as \"this\". Properties\n * from \"extension\" will be copied to the new options object.\n */\n extend(extension) {\n var data = {\n style: this.style,\n size: this.size,\n textSize: this.textSize,\n color: this.color,\n phantom: this.phantom,\n font: this.font,\n fontFamily: this.fontFamily,\n fontWeight: this.fontWeight,\n fontShape: this.fontShape,\n maxSize: this.maxSize,\n minRuleThickness: this.minRuleThickness\n };\n Object.assign(data, extension);\n return new Options(data);\n }\n /**\n * Return an options object with the given style. If `this.style === style`,\n * returns `this`.\n */\n havingStyle(style) {\n if (this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: sizeAtStyle(this.textSize, style)\n });\n }\n }\n /**\n * Return an options object with a cramped version of the current style. If\n * the current style is cramped, returns `this`.\n */\n havingCrampedStyle() {\n return this.havingStyle(this.style.cramp());\n }\n /**\n * Return an options object with the given size and in at least `\\textstyle`.\n * Returns `this` if appropriate.\n */\n havingSize(size) {\n if (this.size === size && this.textSize === size) {\n return this;\n } else {\n return this.extend({\n style: this.style.text(),\n size: size,\n textSize: size,\n sizeMultiplier: sizeMultipliers[size - 1]\n });\n }\n }\n /**\n * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,\n * changes to at least `\\textstyle`.\n */\n havingBaseStyle(style) {\n style = style || this.style.text();\n var wantSize = sizeAtStyle(Options.BASESIZE, style);\n if (this.size === wantSize && this.textSize === Options.BASESIZE && this.style === style) {\n return this;\n } else {\n return this.extend({\n style: style,\n size: wantSize\n });\n }\n }\n /**\n * Remove the effect of sizing changes such as \\Huge.\n * Keep the effect of the current style, such as \\scriptstyle.\n */\n havingBaseSizing() {\n var size;\n switch (this.style.id) {\n case 4:\n case 5:\n size = 3; // normalsize in scriptstyle\n break;\n case 6:\n case 7:\n size = 1; // normalsize in scriptscriptstyle\n break;\n default:\n size = 6;\n // normalsize in textstyle or displaystyle\n }\n return this.extend({\n style: this.style.text(),\n size: size\n });\n }\n /**\n * Create a new options object with the given color.\n */\n withColor(color) {\n return this.extend({\n color: color\n });\n }\n /**\n * Create a new options object with \"phantom\" set to true.\n */\n withPhantom() {\n return this.extend({\n phantom: true\n });\n }\n /**\n * Creates a new options object with the given math font or old text font.\n * @type {[type]}\n */\n withFont(font) {\n return this.extend({\n font\n });\n }\n /**\n * Create a new options objects with the given fontFamily.\n */\n withTextFontFamily(fontFamily) {\n return this.extend({\n fontFamily,\n font: \"\"\n });\n }\n /**\n * Creates a new options object with the given font weight\n */\n withTextFontWeight(fontWeight) {\n return this.extend({\n fontWeight,\n font: \"\"\n });\n }\n /**\n * Creates a new options object with the given font weight\n */\n withTextFontShape(fontShape) {\n return this.extend({\n fontShape,\n font: \"\"\n });\n }\n /**\n * Return the CSS sizing classes required to switch from enclosing options\n * `oldOptions` to `this`. Returns an array of classes.\n */\n sizingClasses(oldOptions) {\n if (oldOptions.size !== this.size) {\n return [\"sizing\", \"reset-size\" + oldOptions.size, \"size\" + this.size];\n } else {\n return [];\n }\n }\n /**\n * Return the CSS sizing classes required to switch to the base size. Like\n * `this.havingSize(BASESIZE).sizingClasses(this)`.\n */\n baseSizingClasses() {\n if (this.size !== Options.BASESIZE) {\n return [\"sizing\", \"reset-size\" + this.size, \"size\" + Options.BASESIZE];\n } else {\n return [];\n }\n }\n /**\n * Return the font metrics for this size.\n */\n fontMetrics() {\n if (!this._fontMetrics) {\n this._fontMetrics = getGlobalMetrics(this.size);\n }\n return this._fontMetrics;\n }\n /**\n * Gets the CSS color of the current options object\n */\n getColor() {\n if (this.phantom) {\n return \"transparent\";\n } else {\n return this.color;\n }\n }\n}\n// A font family applies to a group of fonts (i.e. SansSerif), while a font\n// represents a specific font (i.e. SansSerif Bold).\n// See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm\n/**\n * The base size index.\n */\nOptions.BASESIZE = 6;\n\nvar optionsFromSettings = function optionsFromSettings(settings) {\n return new Options({\n style: settings.displayMode ? Style$1.DISPLAY : Style$1.TEXT,\n maxSize: settings.maxSize,\n minRuleThickness: settings.minRuleThickness\n });\n};\nvar displayWrap = function displayWrap(node, settings) {\n if (settings.displayMode) {\n var classes = [\"katex-display\"];\n if (settings.leqno) {\n classes.push(\"leqno\");\n }\n if (settings.fleqn) {\n classes.push(\"fleqn\");\n }\n node = makeSpan(classes, [node]);\n }\n return node;\n};\nvar buildTree = function buildTree(tree, expression, settings) {\n var options = optionsFromSettings(settings);\n var katexNode;\n if (settings.output === \"mathml\") {\n return buildMathML(tree, expression, options, settings.displayMode, true);\n } else if (settings.output === \"html\") {\n var htmlNode = buildHTML(tree, options);\n katexNode = makeSpan([\"katex\"], [htmlNode]);\n } else {\n var mathMLNode = buildMathML(tree, expression, options, settings.displayMode, false);\n var _htmlNode = buildHTML(tree, options);\n katexNode = makeSpan([\"katex\"], [mathMLNode, _htmlNode]);\n }\n return displayWrap(katexNode, settings);\n};\nvar buildHTMLTree = function buildHTMLTree(tree, expression, settings) {\n var options = optionsFromSettings(settings);\n var htmlNode = buildHTML(tree, options);\n var katexNode = makeSpan([\"katex\"], [htmlNode]);\n return displayWrap(katexNode, settings);\n};\n\n/**\n * This file provides support to buildMathML.js and buildHTML.js\n * for stretchy wide elements rendered from SVG files\n * and other CSS trickery.\n */\nvar stretchyCodePoint = {\n widehat: \"^\",\n widecheck: \"\u02C7\",\n widetilde: \"~\",\n utilde: \"~\",\n overleftarrow: \"\\u2190\",\n underleftarrow: \"\\u2190\",\n xleftarrow: \"\\u2190\",\n overrightarrow: \"\\u2192\",\n underrightarrow: \"\\u2192\",\n xrightarrow: \"\\u2192\",\n underbrace: \"\\u23df\",\n overbrace: \"\\u23de\",\n underbracket: \"\\u23b5\",\n overbracket: \"\\u23b4\",\n overgroup: \"\\u23e0\",\n undergroup: \"\\u23e1\",\n overleftrightarrow: \"\\u2194\",\n underleftrightarrow: \"\\u2194\",\n xleftrightarrow: \"\\u2194\",\n Overrightarrow: \"\\u21d2\",\n xRightarrow: \"\\u21d2\",\n overleftharpoon: \"\\u21bc\",\n xleftharpoonup: \"\\u21bc\",\n overrightharpoon: \"\\u21c0\",\n xrightharpoonup: \"\\u21c0\",\n xLeftarrow: \"\\u21d0\",\n xLeftrightarrow: \"\\u21d4\",\n xhookleftarrow: \"\\u21a9\",\n xhookrightarrow: \"\\u21aa\",\n xmapsto: \"\\u21a6\",\n xrightharpoondown: \"\\u21c1\",\n xleftharpoondown: \"\\u21bd\",\n xrightleftharpoons: \"\\u21cc\",\n xleftrightharpoons: \"\\u21cb\",\n xtwoheadleftarrow: \"\\u219e\",\n xtwoheadrightarrow: \"\\u21a0\",\n xlongequal: \"=\",\n xtofrom: \"\\u21c4\",\n xrightleftarrows: \"\\u21c4\",\n xrightequilibrium: \"\\u21cc\",\n // Not a perfect match.\n xleftequilibrium: \"\\u21cb\",\n // None better available.\n \"\\\\cdrightarrow\": \"\\u2192\",\n \"\\\\cdleftarrow\": \"\\u2190\",\n \"\\\\cdlongequal\": \"=\"\n};\nvar stretchyMathML = function stretchyMathML(label) {\n var node = new MathNode(\"mo\", [new TextNode(stretchyCodePoint[label.replace(/^\\\\/, '')])]);\n node.setAttribute(\"stretchy\", \"true\");\n return node;\n};\n// Many of the KaTeX SVG images have been adapted from glyphs in KaTeX fonts.\n// Copyright (c) 2009-2010, Design Science, Inc. (<www.mathjax.org>)\n// Copyright (c) 2014-2017 Khan Academy (<www.khanacademy.org>)\n// Licensed under the SIL Open Font License, Version 1.1.\n// See \\nhttp://scripts.sil.org/OFL\n// Very Long SVGs\n// Many of the KaTeX stretchy wide elements use a long SVG image and an\n// overflow: hidden tactic to achieve a stretchy image while avoiding\n// distortion of arrowheads or brace corners.\n// The SVG typically contains a very long (400 em) arrow.\n// The SVG is in a container span that has overflow: hidden, so the span\n// acts like a window that exposes only part of the SVG.\n// The SVG always has a longer, thinner aspect ratio than the container span.\n// After the SVG fills 100% of the height of the container span,\n// there is a long arrow shaft left over. That left-over shaft is not shown.\n// Instead, it is sliced off because the span's CSS has overflow: hidden.\n// Thus, the reader sees an arrow that matches the subject matter width\n// without distortion.\n// Some functions, such as \\cancel, need to vary their aspect ratio. These\n// functions do not get the overflow SVG treatment.\n// In the katexImagesData object just below, the dimensions all\n// correspond to path geometry inside the relevant SVG.\n// For example, \\overrightarrow uses the same arrowhead as glyph U+2192\n// from the KaTeX Main font. The scaling factor is 1000.\n// That is, inside the font, that arrowhead is 522 units tall, which\n// corresponds to 0.522 em inside the document.\nvar katexImagesData = {\n // path(s), minWidth, height, align\n overrightarrow: [[\"rightarrow\"], 0.888, 522, \"xMaxYMin\"],\n overleftarrow: [[\"leftarrow\"], 0.888, 522, \"xMinYMin\"],\n underrightarrow: [[\"rightarrow\"], 0.888, 522, \"xMaxYMin\"],\n underleftarrow: [[\"leftarrow\"], 0.888, 522, \"xMinYMin\"],\n xrightarrow: [[\"rightarrow\"], 1.469, 522, \"xMaxYMin\"],\n \"\\\\cdrightarrow\": [[\"rightarrow\"], 3.0, 522, \"xMaxYMin\"],\n // CD minwwidth2.5pc\n xleftarrow: [[\"leftarrow\"], 1.469, 522, \"xMinYMin\"],\n \"\\\\cdleftarrow\": [[\"leftarrow\"], 3.0, 522, \"xMinYMin\"],\n Overrightarrow: [[\"doublerightarrow\"], 0.888, 560, \"xMaxYMin\"],\n xRightarrow: [[\"doublerightarrow\"], 1.526, 560, \"xMaxYMin\"],\n xLeftarrow: [[\"doubleleftarrow\"], 1.526, 560, \"xMinYMin\"],\n overleftharpoon: [[\"leftharpoon\"], 0.888, 522, \"xMinYMin\"],\n xleftharpoonup: [[\"leftharpoon\"], 0.888, 522, \"xMinYMin\"],\n xleftharpoondown: [[\"leftharpoondown\"], 0.888, 522, \"xMinYMin\"],\n overrightharpoon: [[\"rightharpoon\"], 0.888, 522, \"xMaxYMin\"],\n xrightharpoonup: [[\"rightharpoon\"], 0.888, 522, \"xMaxYMin\"],\n xrightharpoondown: [[\"rightharpoondown\"], 0.888, 522, \"xMaxYMin\"],\n xlongequal: [[\"longequal\"], 0.888, 334, \"xMinYMin\"],\n \"\\\\cdlongequal\": [[\"longequal\"], 3.0, 334, \"xMinYMin\"],\n xtwoheadleftarrow: [[\"twoheadleftarrow\"], 0.888, 334, \"xMinYMin\"],\n xtwoheadrightarrow: [[\"twoheadrightarrow\"], 0.888, 334, \"xMaxYMin\"],\n overleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 0.888, 522],\n overbrace: [[\"leftbrace\", \"midbrace\", \"rightbrace\"], 1.6, 548],\n underbrace: [[\"leftbraceunder\", \"midbraceunder\", \"rightbraceunder\"], 1.6, 548],\n underleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 0.888, 522],\n xleftrightarrow: [[\"leftarrow\", \"rightarrow\"], 1.75, 522],\n xLeftrightarrow: [[\"doubleleftarrow\", \"doublerightarrow\"], 1.75, 560],\n xrightleftharpoons: [[\"leftharpoondownplus\", \"rightharpoonplus\"], 1.75, 716],\n xleftrightharpoons: [[\"leftharpoonplus\", \"rightharpoondownplus\"], 1.75, 716],\n xhookleftarrow: [[\"leftarrow\", \"righthook\"], 1.08, 522],\n xhookrightarrow: [[\"lefthook\", \"rightarrow\"], 1.08, 522],\n overlinesegment: [[\"leftlinesegment\", \"rightlinesegment\"], 0.888, 522],\n underlinesegment: [[\"leftlinesegment\", \"rightlinesegment\"], 0.888, 522],\n overbracket: [[\"leftbracketover\", \"rightbracketover\"], 1.6, 440],\n underbracket: [[\"leftbracketunder\", \"rightbracketunder\"], 1.6, 410],\n overgroup: [[\"leftgroup\", \"rightgroup\"], 0.888, 342],\n undergroup: [[\"leftgroupunder\", \"rightgroupunder\"], 0.888, 342],\n xmapsto: [[\"leftmapsto\", \"rightarrow\"], 1.5, 522],\n xtofrom: [[\"leftToFrom\", \"rightToFrom\"], 1.75, 528],\n // The next three arrows are from the mhchem package.\n // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the\n // document as \\xrightarrow or \\xrightleftharpoons. Those have\n // min-length = 1.75em, so we set min-length on these next three to match.\n xrightleftarrows: [[\"baraboveleftarrow\", \"rightarrowabovebar\"], 1.75, 901],\n xrightequilibrium: [[\"baraboveshortleftharpoon\", \"rightharpoonaboveshortbar\"], 1.75, 716],\n xleftequilibrium: [[\"shortbaraboveleftharpoon\", \"shortrightharpoonabovebar\"], 1.75, 716]\n};\nvar wideAccentLabels = new Set([\"widehat\", \"widecheck\", \"widetilde\", \"utilde\"]);\nvar stretchySvg = function stretchySvg(group, options) {\n // Create a span with inline SVG for the element.\n function buildSvgSpan_() {\n var viewBoxWidth = 400000; // default\n var label = group.label.slice(1);\n if (wideAccentLabels.has(label)) {\n // Each type in the `if` statement corresponds to one of the ParseNode\n // types below. This narrowing is required to access `grp.base`.\n // TODO(ts)\n var grp = group;\n // There are four SVG images available for each function.\n // Choose a taller image when there are more characters.\n var numChars = grp.base.type === \"ordgroup\" ? grp.base.body.length : 1;\n var viewBoxHeight;\n var pathName;\n var _height;\n if (numChars > 5) {\n if (label === \"widehat\" || label === \"widecheck\") {\n viewBoxHeight = 420;\n viewBoxWidth = 2364;\n _height = 0.42;\n pathName = label + \"4\";\n } else {\n viewBoxHeight = 312;\n viewBoxWidth = 2340;\n _height = 0.34;\n pathName = \"tilde4\";\n }\n } else {\n var imgIndex = [1, 1, 2, 2, 3, 3][numChars];\n if (label === \"widehat\" || label === \"widecheck\") {\n viewBoxWidth = [0, 1062, 2364, 2364, 2364][imgIndex];\n viewBoxHeight = [0, 239, 300, 360, 420][imgIndex];\n _height = [0, 0.24, 0.3, 0.3, 0.36, 0.42][imgIndex];\n pathName = label + imgIndex;\n } else {\n viewBoxWidth = [0, 600, 1033, 2339, 2340][imgIndex];\n viewBoxHeight = [0, 260, 286, 306, 312][imgIndex];\n _height = [0, 0.26, 0.286, 0.3, 0.306, 0.34][imgIndex];\n pathName = \"tilde\" + imgIndex;\n }\n }\n var path = new PathNode(pathName);\n var svgNode = new SvgNode([path], {\n \"width\": \"100%\",\n \"height\": makeEm(_height),\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight,\n \"preserveAspectRatio\": \"none\"\n });\n return {\n span: makeSvgSpan([], [svgNode], options),\n minWidth: 0,\n height: _height\n };\n } else {\n var spans = [];\n var data = katexImagesData[label];\n var [paths, _minWidth, _viewBoxHeight] = data;\n var _height2 = _viewBoxHeight / 1000;\n var numSvgChildren = paths.length;\n var widthClasses;\n var aligns;\n if (numSvgChildren === 1) {\n // TODO(ts): All these cases must be of the 4-tuple type.\n var align1 = data[3];\n widthClasses = [\"hide-tail\"];\n aligns = [align1];\n } else if (numSvgChildren === 2) {\n widthClasses = [\"halfarrow-left\", \"halfarrow-right\"];\n aligns = [\"xMinYMin\", \"xMaxYMin\"];\n } else if (numSvgChildren === 3) {\n widthClasses = [\"brace-left\", \"brace-center\", \"brace-right\"];\n aligns = [\"xMinYMin\", \"xMidYMin\", \"xMaxYMin\"];\n } else {\n throw new Error(\"Correct katexImagesData or update code here to support\\n \" + numSvgChildren + \" children.\");\n }\n for (var i = 0; i < numSvgChildren; i++) {\n var _path = new PathNode(paths[i]);\n var _svgNode = new SvgNode([_path], {\n \"width\": \"400em\",\n \"height\": makeEm(_height2),\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + _viewBoxHeight,\n \"preserveAspectRatio\": aligns[i] + \" slice\"\n });\n var _span = makeSvgSpan([widthClasses[i]], [_svgNode], options);\n if (numSvgChildren === 1) {\n return {\n span: _span,\n minWidth: _minWidth,\n height: _height2\n };\n } else {\n _span.style.height = makeEm(_height2);\n spans.push(_span);\n }\n }\n return {\n span: makeSpan([\"stretchy\"], spans, options),\n minWidth: _minWidth,\n height: _height2\n };\n }\n } // buildSvgSpan_()\n var {\n span,\n minWidth,\n height\n } = buildSvgSpan_();\n // Note that we are returning span.depth = 0.\n // Any adjustments relative to the baseline must be done in buildHTML.\n span.height = height;\n span.style.height = makeEm(height);\n if (minWidth > 0) {\n span.style.minWidth = makeEm(minWidth);\n }\n return span;\n};\nvar stretchyEnclose = function stretchyEnclose(inner, label, topPad, bottomPad, options) {\n // Return an image span for \\cancel, \\bcancel, \\xcancel, \\fbox, or \\angl\n var img;\n var totalHeight = inner.height + inner.depth + topPad + bottomPad;\n if (/fbox|color|angl/.test(label)) {\n img = makeSpan([\"stretchy\", label], [], options);\n if (label === \"fbox\") {\n var color = options.color && options.getColor();\n if (color) {\n img.style.borderColor = color;\n }\n }\n } else {\n // \\cancel, \\bcancel, or \\xcancel\n // Since \\cancel's SVG is inline and it omits the viewBox attribute,\n // its stroke-width will not vary with span area.\n var lines = [];\n if (/^[bx]cancel$/.test(label)) {\n lines.push(new LineNode({\n \"x1\": \"0\",\n \"y1\": \"0\",\n \"x2\": \"100%\",\n \"y2\": \"100%\",\n \"stroke-width\": \"0.046em\"\n }));\n }\n if (/^x?cancel$/.test(label)) {\n lines.push(new LineNode({\n \"x1\": \"0\",\n \"y1\": \"100%\",\n \"x2\": \"100%\",\n \"y2\": \"0\",\n \"stroke-width\": \"0.046em\"\n }));\n }\n var svgNode = new SvgNode(lines, {\n \"width\": \"100%\",\n \"height\": makeEm(totalHeight)\n });\n img = makeSvgSpan([], [svgNode], options);\n }\n img.height = totalHeight;\n img.style.height = makeEm(totalHeight);\n return img;\n};\n\n/**\n * Asserts that the node is of the given type and returns it with stricter\n * typing. Throws if the node's type does not match.\n */\nfunction assertNodeType(node, type) {\n if (!node || node.type !== type) {\n throw new Error(\"Expected node of type \" + type + \", but got \" + (node ? \"node of type \" + node.type : String(node)));\n }\n return node;\n}\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\nfunction assertSymbolNodeType(node) {\n var typedNode = checkSymbolNodeType(node);\n if (!typedNode) {\n throw new Error(\"Expected node of symbol group type, but got \" + (node ? \"node of type \" + node.type : String(node)));\n }\n return typedNode;\n}\n/**\n * Returns the node more strictly typed iff it is of the given type. Otherwise,\n * returns null.\n */\nfunction checkSymbolNodeType(node) {\n if (node && (node.type === \"atom\" || NON_ATOMS.hasOwnProperty(node.type))) {\n return node;\n }\n return null;\n}\n\nvar getBaseSymbol = group => {\n if (group instanceof SymbolNode) {\n return group;\n }\n if (hasHtmlDomChildren(group) && group.children.length === 1) {\n return getBaseSymbol(group.children[0]);\n }\n};\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"accent\", but\n// also \"supsub\" since an accent can affect super/subscripting.\nvar htmlBuilder$a = (grp, options) => {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n var base;\n var group;\n var supSubGroup;\n if (grp && grp.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n // The real accent group is the base of the supsub group\n group = assertNodeType(grp.base, \"accent\");\n // The character box is the base of the accent group\n base = group.base;\n // Stick the character box into the base of the supsub group\n grp.base = base;\n // Rerender the supsub group with its new base, and store that\n // result.\n supSubGroup = assertSpan(buildGroup$1(grp, options));\n // reset original base\n grp.base = group;\n } else {\n group = assertNodeType(grp, \"accent\");\n base = group.base;\n }\n // Build the base group\n var body = buildGroup$1(base, options.havingCrampedStyle());\n // Does the accent need to shift for the skew of a character?\n var mustShift = group.isShifty && isCharacterBox(base);\n // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n var skew = 0;\n if (mustShift) {\n var _getBaseSymbol$skew, _getBaseSymbol;\n // Read the skew from the rendered base symbol.\n // This preserves font metrics from font wrappers like \\mathbb.\n skew = (_getBaseSymbol$skew = (_getBaseSymbol = getBaseSymbol(body)) == null ? void 0 : _getBaseSymbol.skew) != null ? _getBaseSymbol$skew : 0;\n }\n var accentBelow = group.label === \"\\\\c\";\n // calculate the amount of space between the body and the accent\n var clearance = accentBelow ? body.height + body.depth : Math.min(body.height, options.fontMetrics().xHeight);\n // Build the accent\n var accentBody;\n if (!group.isStretchy) {\n var accent;\n var width;\n if (group.label === \"\\\\vec\") {\n // Before version 0.9, \\vec used the combining font glyph U+20D7.\n // But browsers, especially Safari, are not consistent in how they\n // render combining characters when not preceded by a character.\n // So now we use an SVG.\n // If Safari reforms, we should consider reverting to the glyph.\n accent = staticSvg(\"vec\", options);\n width = svgData.vec[1];\n } else {\n accent = makeOrd({\n type: \"textord\",\n mode: group.mode,\n text: group.label\n }, options, \"textord\");\n accent = assertSymbolDomNode(accent);\n // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n accent.italic = 0;\n width = accent.width;\n if (accentBelow) {\n clearance += accent.depth;\n }\n }\n accentBody = makeSpan([\"accent-body\"], [accent]);\n // \"Full\" accents expand the width of the resulting symbol to be\n // at least the width of the accent, and overlap directly onto the\n // character without any vertical offset.\n var accentFull = group.label === \"\\\\textcircled\";\n if (accentFull) {\n accentBody.classes.push('accent-full');\n clearance = body.height;\n }\n // Shift the accent over by the skew.\n var left = skew;\n // CSS defines `.katex .accent .accent-body:not(.accent-full) { width: 0 }`\n // so that the accent doesn't contribute to the bounding box.\n // We need to shift the character by its width (effectively half\n // its width) to compensate.\n if (!accentFull) {\n left -= width / 2;\n }\n accentBody.style.left = makeEm(left);\n // \\textcircled uses the \\bigcirc glyph, so it needs some\n // vertical adjustment to match LaTeX.\n if (group.label === \"\\\\textcircled\") {\n accentBody.style.top = \".2em\";\n }\n accentBody = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"kern\",\n size: -clearance\n }, {\n type: \"elem\",\n elem: accentBody\n }]\n });\n } else {\n accentBody = stretchySvg(group, options);\n accentBody = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"elem\",\n elem: accentBody,\n wrapperClasses: [\"svg-align\"],\n wrapperStyle: skew > 0 ? {\n width: \"calc(100% - \" + makeEm(2 * skew) + \")\",\n marginLeft: makeEm(2 * skew)\n } : undefined\n }]\n });\n }\n var accentWrap = makeSpan([\"mord\", \"accent\"], [accentBody], options);\n if (supSubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supSubGroup.children[0] = accentWrap;\n // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n supSubGroup.height = Math.max(accentWrap.height, supSubGroup.height);\n // Accents should always be ords, even when their innards are not.\n supSubGroup.classes[0] = \"mord\";\n return supSubGroup;\n } else {\n return accentWrap;\n }\n};\nvar mathmlBuilder$9 = (group, options) => {\n var accentNode = group.isStretchy ? stretchyMathML(group.label) : new MathNode(\"mo\", [makeText(group.label, group.mode)]);\n var node = new MathNode(\"mover\", [buildGroup(group.base, options), accentNode]);\n node.setAttribute(\"accent\", \"true\");\n return node;\n};\nvar NON_STRETCHY_ACCENT_REGEX = new RegExp([\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\mathring\"].map(accent => \"\\\\\" + accent).join(\"|\"));\n// Accents\ndefineFunction({\n type: \"accent\",\n names: [\"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\", \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\", \"\\\\mathring\", \"\\\\widecheck\", \"\\\\widehat\", \"\\\\widetilde\", \"\\\\overrightarrow\", \"\\\\overleftarrow\", \"\\\\Overrightarrow\", \"\\\\overleftrightarrow\", \"\\\\overgroup\", \"\\\\overlinesegment\", \"\\\\overleftharpoon\", \"\\\\overrightharpoon\"],\n props: {\n numArgs: 1\n },\n handler: (context, args) => {\n var base = normalizeArgument(args[0]);\n var isStretchy = !NON_STRETCHY_ACCENT_REGEX.test(context.funcName);\n var isShifty = !isStretchy || context.funcName === \"\\\\widehat\" || context.funcName === \"\\\\widetilde\" || context.funcName === \"\\\\widecheck\";\n return {\n type: \"accent\",\n mode: context.parser.mode,\n label: context.funcName,\n isStretchy: isStretchy,\n isShifty: isShifty,\n base: base\n };\n },\n htmlBuilder: htmlBuilder$a,\n mathmlBuilder: mathmlBuilder$9\n});\n// Text-mode accents\ndefineFunction({\n type: \"accent\",\n names: [\"\\\\'\", \"\\\\`\", \"\\\\^\", \"\\\\~\", \"\\\\=\", \"\\\\u\", \"\\\\.\", '\\\\\"', \"\\\\c\", \"\\\\r\", \"\\\\H\", \"\\\\v\", \"\\\\textcircled\"],\n props: {\n numArgs: 1,\n allowedInText: true,\n allowedInMath: true,\n // unless in strict mode\n argTypes: [\"primitive\"]\n },\n handler: (context, args) => {\n var base = args[0];\n var mode = context.parser.mode;\n if (mode === \"math\") {\n context.parser.settings.reportNonstrict(\"mathVsTextAccents\", \"LaTeX's accent \" + context.funcName + \" works only in text mode\");\n mode = \"text\";\n }\n return {\n type: \"accent\",\n mode: mode,\n label: context.funcName,\n isStretchy: false,\n isShifty: true,\n base: base\n };\n },\n htmlBuilder: htmlBuilder$a,\n mathmlBuilder: mathmlBuilder$9\n});\n\n// Horizontal overlap functions\ndefineFunction({\n type: \"accentUnder\",\n names: [\"\\\\underleftarrow\", \"\\\\underrightarrow\", \"\\\\underleftrightarrow\", \"\\\\undergroup\", \"\\\\underlinesegment\", \"\\\\utilde\"],\n props: {\n numArgs: 1\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var base = args[0];\n return {\n type: \"accentUnder\",\n mode: parser.mode,\n label: funcName,\n base: base\n };\n },\n htmlBuilder: (group, options) => {\n // Treat under accents much like underlines.\n var innerGroup = buildGroup$1(group.base, options);\n var accentBody = stretchySvg(group, options);\n var kern = group.label === \"\\\\utilde\" ? 0.12 : 0;\n // Generate the vlist, with the appropriate kerns\n var vlist = makeVList({\n positionType: \"top\",\n positionData: innerGroup.height,\n children: [{\n type: \"elem\",\n elem: accentBody,\n wrapperClasses: [\"svg-align\"]\n }, {\n type: \"kern\",\n size: kern\n }, {\n type: \"elem\",\n elem: innerGroup\n }]\n });\n return makeSpan([\"mord\", \"accentunder\"], [vlist], options);\n },\n mathmlBuilder: (group, options) => {\n var accentNode = stretchyMathML(group.label);\n var node = new MathNode(\"munder\", [buildGroup(group.base, options), accentNode]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n }\n});\n\n// Helper function\nvar paddedNode = group => {\n var node = new MathNode(\"mpadded\", group ? [group] : []);\n node.setAttribute(\"width\", \"+0.6em\");\n node.setAttribute(\"lspace\", \"0.3em\");\n return node;\n};\n// Stretchy arrows with an optional argument\ndefineFunction({\n type: \"xArrow\",\n names: [\"\\\\xleftarrow\", \"\\\\xrightarrow\", \"\\\\xLeftarrow\", \"\\\\xRightarrow\", \"\\\\xleftrightarrow\", \"\\\\xLeftrightarrow\", \"\\\\xhookleftarrow\", \"\\\\xhookrightarrow\", \"\\\\xmapsto\", \"\\\\xrightharpoondown\", \"\\\\xrightharpoonup\", \"\\\\xleftharpoondown\", \"\\\\xleftharpoonup\", \"\\\\xrightleftharpoons\", \"\\\\xleftrightharpoons\", \"\\\\xlongequal\", \"\\\\xtwoheadrightarrow\", \"\\\\xtwoheadleftarrow\", \"\\\\xtofrom\",\n // The next 3 functions are here to support the mhchem extension.\n // Direct use of these functions is discouraged and may break someday.\n \"\\\\xrightleftarrows\", \"\\\\xrightequilibrium\", \"\\\\xleftequilibrium\",\n // The next 3 functions are here only to support the {CD} environment.\n \"\\\\\\\\cdrightarrow\", \"\\\\\\\\cdleftarrow\", \"\\\\\\\\cdlongequal\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1\n },\n handler(_ref, args, optArgs) {\n var {\n parser,\n funcName\n } = _ref;\n return {\n type: \"xArrow\",\n mode: parser.mode,\n label: funcName,\n body: args[0],\n below: optArgs[0]\n };\n },\n htmlBuilder(group, options) {\n var style = options.style;\n // Build the argument groups in the appropriate style.\n // Ref: amsmath.dtx: \\hbox{$\\scriptstyle\\mkern#3mu{#6}\\mkern#4mu$}%\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n var newOptions = options.havingStyle(style.sup());\n var upperGroup = wrapFragment(buildGroup$1(group.body, newOptions, options), options);\n var arrowPrefix = group.label.slice(0, 2) === \"\\\\x\" ? \"x\" : \"cd\";\n upperGroup.classes.push(arrowPrefix + \"-arrow-pad\");\n var lowerGroup;\n if (group.below) {\n // Build the lower group\n newOptions = options.havingStyle(style.sub());\n lowerGroup = wrapFragment(buildGroup$1(group.below, newOptions, options), options);\n lowerGroup.classes.push(arrowPrefix + \"-arrow-pad\");\n }\n var arrowBody = stretchySvg(group, options);\n // Re shift: Note that stretchySvg returned arrowBody.depth = 0.\n // The point we want on the math axis is at 0.5 * arrowBody.height.\n var arrowShift = -options.fontMetrics().axisHeight + 0.5 * arrowBody.height;\n // 2 mu kern. Ref: amsmath.dtx: #7\\if0#2\\else\\mkern#2mu\\fi\n var upperShift = -options.fontMetrics().axisHeight - 0.5 * arrowBody.height - 0.111; // 0.111 em = 2 mu\n if (upperGroup.depth > 0.25 || group.label === \"\\\\xleftequilibrium\") {\n upperShift -= upperGroup.depth; // shift up if depth encroaches\n }\n // Generate the vlist\n var vlist;\n if (lowerGroup) {\n var lowerShift = -options.fontMetrics().axisHeight + lowerGroup.height + 0.5 * arrowBody.height + 0.111;\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: upperGroup,\n shift: upperShift\n }, {\n type: \"elem\",\n elem: arrowBody,\n shift: arrowShift\n }, {\n type: \"elem\",\n elem: lowerGroup,\n shift: lowerShift\n }]\n });\n } else {\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: upperGroup,\n shift: upperShift\n }, {\n type: \"elem\",\n elem: arrowBody,\n shift: arrowShift\n }]\n });\n }\n // TODO(ts): Replace this with passing \"svg-align\" into makeVList.\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n return makeSpan([\"mrel\", \"x-arrow\"], [vlist], options);\n },\n mathmlBuilder(group, options) {\n var arrowNode = stretchyMathML(group.label);\n arrowNode.setAttribute(\"minsize\", group.label.charAt(0) === \"x\" ? \"1.75em\" : \"3.0em\");\n var node;\n if (group.body) {\n var upperNode = paddedNode(buildGroup(group.body, options));\n if (group.below) {\n var lowerNode = paddedNode(buildGroup(group.below, options));\n node = new MathNode(\"munderover\", [arrowNode, lowerNode, upperNode]);\n } else {\n node = new MathNode(\"mover\", [arrowNode, upperNode]);\n }\n } else if (group.below) {\n var _lowerNode = paddedNode(buildGroup(group.below, options));\n node = new MathNode(\"munder\", [arrowNode, _lowerNode]);\n } else {\n // This should never happen.\n // Parser.js throws an error if there is no argument.\n node = paddedNode();\n node = new MathNode(\"mover\", [arrowNode, node]);\n }\n return node;\n }\n});\n\nfunction htmlBuilder$9(group, options) {\n var elements = buildExpression$1(group.body, options, true);\n return makeSpan([group.mclass], elements, options);\n}\nfunction mathmlBuilder$8(group, options) {\n var node;\n var inner = buildExpression(group.body, options);\n if (group.mclass === \"minner\") {\n node = new MathNode(\"mpadded\", inner);\n } else if (group.mclass === \"mord\") {\n if (group.isCharacterBox) {\n node = inner[0];\n node.type = \"mi\";\n } else {\n node = new MathNode(\"mi\", inner);\n }\n } else {\n if (group.isCharacterBox) {\n node = inner[0];\n node.type = \"mo\";\n } else {\n node = new MathNode(\"mo\", inner);\n }\n // Set spacing based on what is the most likely adjacent atom type.\n // See TeXbook p170.\n if (group.mclass === \"mbin\") {\n node.attributes.lspace = \"0.22em\"; // medium space\n node.attributes.rspace = \"0.22em\";\n } else if (group.mclass === \"mpunct\") {\n node.attributes.lspace = \"0em\";\n node.attributes.rspace = \"0.17em\"; // thinspace\n } else if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n node.attributes.lspace = \"0em\";\n node.attributes.rspace = \"0em\";\n } else if (group.mclass === \"minner\") {\n node.attributes.lspace = \"0.0556em\"; // 1 mu is the most likely option\n node.attributes.width = \"+0.1111em\";\n }\n // MathML <mo> default space is 5/18 em, so <mrel> needs no action.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/MathML/Element/mo\n }\n return node;\n}\n// Math class commands except \\mathop\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\mathord\", \"\\\\mathbin\", \"\\\\mathrel\", \"\\\\mathopen\", \"\\\\mathclose\", \"\\\\mathpunct\", \"\\\\mathinner\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: \"m\" + funcName.slice(5),\n // TODO(kevinb): don't prefix with 'm'\n body: ordargument(body),\n isCharacterBox: isCharacterBox(body)\n };\n },\n htmlBuilder: htmlBuilder$9,\n mathmlBuilder: mathmlBuilder$8\n});\nvar binrelClass = arg => {\n // \\binrel@ spacing varies with (bin|rel|ord) of the atom in the argument.\n // (by rendering separately and with {}s before and after, and measuring\n // the change in spacing). We'll do roughly the same by detecting the\n // atom type directly.\n var atom = arg.type === \"ordgroup\" && arg.body.length ? arg.body[0] : arg;\n if (atom.type === \"atom\" && (atom.family === \"bin\" || atom.family === \"rel\")) {\n return \"m\" + atom.family;\n } else {\n return \"mord\";\n }\n};\n// \\@binrel{x}{y} renders like y but as mbin/mrel/mord if x is mbin/mrel/mord.\n// This is equivalent to \\binrel@{x}\\binrel@@{y} in AMSTeX.\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\@binrel\"],\n props: {\n numArgs: 2\n },\n handler(_ref2, args) {\n var {\n parser\n } = _ref2;\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: binrelClass(args[0]),\n body: ordargument(args[1]),\n isCharacterBox: isCharacterBox(args[1])\n };\n }\n});\n// Build a relation or stacked op by placing one symbol on top of another\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\stackrel\", \"\\\\overset\", \"\\\\underset\"],\n props: {\n numArgs: 2\n },\n handler(_ref3, args) {\n var {\n parser,\n funcName\n } = _ref3;\n var baseArg = args[1];\n var shiftedArg = args[0];\n var mclass;\n if (funcName !== \"\\\\stackrel\") {\n // LaTeX applies \\binrel spacing to \\overset and \\underset.\n mclass = binrelClass(baseArg);\n } else {\n mclass = \"mrel\"; // for \\stackrel\n }\n var baseOp = {\n type: \"op\",\n mode: baseArg.mode,\n limits: true,\n alwaysHandleSupSub: true,\n parentIsSupSub: false,\n symbol: false,\n suppressBaseShift: funcName !== \"\\\\stackrel\",\n body: ordargument(baseArg)\n };\n var supsub = {\n type: \"supsub\",\n mode: shiftedArg.mode,\n base: baseOp,\n sup: funcName === \"\\\\underset\" ? null : shiftedArg,\n sub: funcName === \"\\\\underset\" ? shiftedArg : null\n };\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass,\n body: [supsub],\n isCharacterBox: isCharacterBox(supsub)\n };\n },\n htmlBuilder: htmlBuilder$9,\n mathmlBuilder: mathmlBuilder$8\n});\n\n// \\pmb is a simulation of bold font.\n// The version of \\pmb in ambsy.sty works by typesetting three copies\n// with small offsets. We use CSS text-shadow.\n// It's a hack. Not as good as a real bold font. Better than nothing.\ndefineFunction({\n type: \"pmb\",\n names: [\"\\\\pmb\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"pmb\",\n mode: parser.mode,\n mclass: binrelClass(args[0]),\n body: ordargument(args[0])\n };\n },\n htmlBuilder(group, options) {\n var elements = buildExpression$1(group.body, options, true);\n var node = makeSpan([group.mclass], elements, options);\n node.style.textShadow = \"0.02em 0.01em 0.04px\";\n return node;\n },\n mathmlBuilder(group, style) {\n var inner = buildExpression(group.body, style);\n // Wrap with an <mstyle> element.\n var node = new MathNode(\"mstyle\", inner);\n node.setAttribute(\"style\", \"text-shadow: 0.02em 0.01em 0.04px\");\n return node;\n }\n});\n\nvar cdArrowFunctionName = {\n \">\": \"\\\\\\\\cdrightarrow\",\n \"<\": \"\\\\\\\\cdleftarrow\",\n \"=\": \"\\\\\\\\cdlongequal\",\n \"A\": \"\\\\uparrow\",\n \"V\": \"\\\\downarrow\",\n \"|\": \"\\\\Vert\",\n \".\": \"no arrow\"\n};\nvar newCell = () => {\n // Create an empty cell, to be filled below with parse nodes.\n // The parseTree from this module must be constructed like the\n // one created by parseArray(), so an empty CD cell must\n // be a ParseNode<\"styling\">. And CD is always displaystyle.\n return {\n type: \"styling\",\n body: [],\n mode: \"math\",\n style: \"display\"\n };\n};\nvar isStartOfArrow = node => {\n return node.type === \"textord\" && node.text === \"@\";\n};\nvar isLabelEnd = (node, endChar) => {\n return (node.type === \"mathord\" || node.type === \"atom\") && node.text === endChar;\n};\nfunction cdArrow(arrowChar, labels, parser) {\n // Return a parse tree of an arrow and its labels.\n // This acts in a way similar to a macro expansion.\n var funcName = cdArrowFunctionName[arrowChar];\n switch (funcName) {\n case \"\\\\\\\\cdrightarrow\":\n case \"\\\\\\\\cdleftarrow\":\n return parser.callFunction(funcName, [labels[0]], [labels[1]]);\n case \"\\\\uparrow\":\n case \"\\\\downarrow\":\n {\n var leftLabel = parser.callFunction(\"\\\\\\\\cdleft\", [labels[0]], []);\n var bareArrow = {\n type: \"atom\",\n text: funcName,\n mode: \"math\",\n family: \"rel\"\n };\n var sizedArrow = parser.callFunction(\"\\\\Big\", [bareArrow], []);\n var rightLabel = parser.callFunction(\"\\\\\\\\cdright\", [labels[1]], []);\n var arrowGroup = {\n type: \"ordgroup\",\n mode: \"math\",\n body: [leftLabel, sizedArrow, rightLabel]\n };\n return parser.callFunction(\"\\\\\\\\cdparent\", [arrowGroup], []);\n }\n case \"\\\\\\\\cdlongequal\":\n return parser.callFunction(\"\\\\\\\\cdlongequal\", [], []);\n case \"\\\\Vert\":\n {\n var arrow = {\n type: \"textord\",\n text: \"\\\\Vert\",\n mode: \"math\"\n };\n return parser.callFunction(\"\\\\Big\", [arrow], []);\n }\n default:\n return {\n type: \"textord\",\n text: \" \",\n mode: \"math\"\n };\n }\n}\nfunction parseCD(parser) {\n // Get the array's parse nodes with \\\\ temporarily mapped to \\cr.\n var parsedRows = [];\n parser.gullet.beginGroup();\n parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n parser.gullet.beginGroup();\n while (true) {\n // eslint-disable-line no-constant-condition\n // Get the parse nodes for the next row.\n parsedRows.push(parser.parseExpression(false, \"\\\\\\\\\"));\n parser.gullet.endGroup();\n parser.gullet.beginGroup();\n var next = parser.fetch().text;\n if (next === \"&\" || next === \"\\\\\\\\\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n if (parsedRows[parsedRows.length - 1].length === 0) {\n parsedRows.pop(); // final row ended in \\\\\n }\n break;\n } else {\n throw new ParseError(\"Expected \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n }\n }\n var row = [];\n var body = [row];\n // Loop thru the parse nodes. Collect them into cells and arrows.\n for (var i = 0; i < parsedRows.length; i++) {\n // Start a new row.\n var rowNodes = parsedRows[i];\n // Create the first cell.\n var cell = newCell();\n for (var j = 0; j < rowNodes.length; j++) {\n if (!isStartOfArrow(rowNodes[j])) {\n // If a parseNode is not an arrow, it goes into a cell.\n cell.body.push(rowNodes[j]);\n } else {\n // Parse node j is an \"@\", the start of an arrow.\n // Before starting on the arrow, push the cell into `row`.\n row.push(cell);\n // Now collect parseNodes into an arrow.\n // The character after \"@\" defines the arrow type.\n j += 1;\n var arrowChar = assertSymbolNodeType(rowNodes[j]).text;\n // Create two empty label nodes. We may or may not use them.\n var labels = new Array(2);\n labels[0] = {\n type: \"ordgroup\",\n mode: \"math\",\n body: []\n };\n labels[1] = {\n type: \"ordgroup\",\n mode: \"math\",\n body: []\n };\n // Process the arrow.\n if (\"=|.\".includes(arrowChar)) ; else if (\"<>AV\".includes(arrowChar)) {\n // Four arrows, `@>>>`, `@<<<`, `@AAA`, and `@VVV`, each take\n // two optional labels. E.g. the right-point arrow syntax is\n // really: @>{optional label}>{optional label}>\n // Collect parseNodes into labels.\n for (var labelNum = 0; labelNum < 2; labelNum++) {\n var inLabel = true;\n for (var k = j + 1; k < rowNodes.length; k++) {\n if (isLabelEnd(rowNodes[k], arrowChar)) {\n inLabel = false;\n j = k;\n break;\n }\n if (isStartOfArrow(rowNodes[k])) {\n throw new ParseError(\"Missing a \" + arrowChar + \" character to complete a CD arrow.\", rowNodes[k]);\n }\n labels[labelNum].body.push(rowNodes[k]);\n }\n if (inLabel) {\n // isLabelEnd never returned a true.\n throw new ParseError(\"Missing a \" + arrowChar + \" character to complete a CD arrow.\", rowNodes[j]);\n }\n }\n } else {\n throw new ParseError(\"Expected one of \\\"<>AV=|.\\\" after @\", rowNodes[j]);\n }\n // Now join the arrow to its labels.\n var arrow = cdArrow(arrowChar, labels, parser);\n // Wrap the arrow in ParseNode<\"styling\">.\n // This is done to match parseArray() behavior.\n var wrappedArrow = {\n type: \"styling\",\n body: [arrow],\n mode: \"math\",\n style: \"display\" // CD is always displaystyle.\n };\n row.push(wrappedArrow);\n // In CD's syntax, cells are implicit. That is, everything that\n // is not an arrow gets collected into a cell. So create an empty\n // cell now. It will collect upcoming parseNodes.\n cell = newCell();\n }\n }\n if (i % 2 === 0) {\n // Even-numbered rows consist of: cell, arrow, cell, arrow, ... cell\n // The last cell is not yet pushed into `row`, so:\n row.push(cell);\n } else {\n // Odd-numbered rows consist of: vert arrow, empty cell, ... vert arrow\n // Remove the empty cell that was placed at the beginning of `row`.\n row.shift();\n }\n row = [];\n body.push(row);\n }\n // End row group\n parser.gullet.endGroup();\n // End array group defining \\\\\n parser.gullet.endGroup();\n // define column separation.\n var cols = new Array(body[0].length).fill({\n type: \"align\",\n align: \"c\",\n pregap: 0.25,\n // CD package sets \\enskip between columns.\n postgap: 0.25 // So pre and post each get half an \\enskip, i.e. 0.25em.\n });\n return {\n type: \"array\",\n mode: \"math\",\n body,\n arraystretch: 1,\n addJot: true,\n rowGaps: [null],\n cols,\n colSeparationType: \"CD\",\n hLinesBeforeRow: new Array(body.length + 1).fill([])\n };\n}\n// The functions below are not available for general use.\n// They are here only for internal use by the {CD} environment in placing labels\n// next to vertical arrows.\n// We don't need any such functions for horizontal arrows because we can reuse\n// the functionality that already exists for extensible arrows.\ndefineFunction({\n type: \"cdlabel\",\n names: [\"\\\\\\\\cdleft\", \"\\\\\\\\cdright\"],\n props: {\n numArgs: 1\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n return {\n type: \"cdlabel\",\n mode: parser.mode,\n side: funcName.slice(4),\n label: args[0]\n };\n },\n htmlBuilder(group, options) {\n var newOptions = options.havingStyle(options.style.sup());\n var label = wrapFragment(buildGroup$1(group.label, newOptions, options), options);\n label.classes.push(\"cd-label-\" + group.side);\n label.style.bottom = makeEm(0.8 - label.depth);\n // Zero out label height & depth, so vertical align of arrow is set\n // by the arrow height, not by the label.\n label.height = 0;\n label.depth = 0;\n return label;\n },\n mathmlBuilder(group, options) {\n var label = new MathNode(\"mrow\", [buildGroup(group.label, options)]);\n label = new MathNode(\"mpadded\", [label]);\n label.setAttribute(\"width\", \"0\");\n if (group.side === \"left\") {\n label.setAttribute(\"lspace\", \"-1width\");\n }\n // We have to guess at vertical alignment. We know the arrow is 1.8em tall,\n // But we don't know the height or depth of the label.\n label.setAttribute(\"voffset\", \"0.7em\");\n label = new MathNode(\"mstyle\", [label]);\n label.setAttribute(\"displaystyle\", \"false\");\n label.setAttribute(\"scriptlevel\", \"1\");\n return label;\n }\n});\ndefineFunction({\n type: \"cdlabelparent\",\n names: [\"\\\\\\\\cdparent\"],\n props: {\n numArgs: 1\n },\n handler(_ref2, args) {\n var {\n parser\n } = _ref2;\n return {\n type: \"cdlabelparent\",\n mode: parser.mode,\n fragment: args[0]\n };\n },\n htmlBuilder(group, options) {\n // Wrap the vertical arrow and its labels.\n // The parent gets position: relative. The child gets position: absolute.\n // So CSS can locate the label correctly.\n var parent = wrapFragment(buildGroup$1(group.fragment, options), options);\n parent.classes.push(\"cd-vert-arrow\");\n return parent;\n },\n mathmlBuilder(group, options) {\n return new MathNode(\"mrow\", [buildGroup(group.fragment, options)]);\n }\n});\n\n// \\@char is an internal function that takes a grouped decimal argument like\n// {123} and converts into symbol with code 123. It is used by the *macro*\n// \\char defined in macros.js.\ndefineFunction({\n type: \"textord\",\n names: [\"\\\\@char\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var arg = assertNodeType(args[0], \"ordgroup\");\n var group = arg.body;\n var number = \"\";\n for (var i = 0; i < group.length; i++) {\n var node = assertNodeType(group[i], \"textord\");\n number += node.text;\n }\n var code = parseInt(number);\n var text;\n if (isNaN(code)) {\n throw new ParseError(\"\\\\@char has non-numeric argument \" + number);\n // If we drop IE support, the following code could be replaced with\n // text = String.fromCodePoint(code)\n } else if (code < 0 || code >= 0x10ffff) {\n throw new ParseError(\"\\\\@char with invalid code point \" + number);\n } else if (code <= 0xffff) {\n text = String.fromCharCode(code);\n } else {\n // Astral code point; split into surrogate halves\n code -= 0x10000;\n text = String.fromCharCode((code >> 10) + 0xd800, (code & 0x3ff) + 0xdc00);\n }\n return {\n type: \"textord\",\n mode: parser.mode,\n text: text\n };\n }\n});\n\nvar htmlBuilder$8 = (group, options) => {\n var elements = buildExpression$1(group.body, options.withColor(group.color), false);\n // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n return makeFragment(elements);\n};\nvar mathmlBuilder$7 = (group, options) => {\n var inner = buildExpression(group.body, options.withColor(group.color));\n var node = new MathNode(\"mstyle\", inner);\n node.setAttribute(\"mathcolor\", group.color);\n return node;\n};\ndefineFunction({\n type: \"color\",\n names: [\"\\\\textcolor\"],\n props: {\n numArgs: 2,\n allowedInText: true,\n argTypes: [\"color\", \"original\"]\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var color = assertNodeType(args[0], \"color-token\").color;\n var body = args[1];\n return {\n type: \"color\",\n mode: parser.mode,\n color,\n body: ordargument(body)\n };\n },\n htmlBuilder: htmlBuilder$8,\n mathmlBuilder: mathmlBuilder$7\n});\ndefineFunction({\n type: \"color\",\n names: [\"\\\\color\"],\n props: {\n numArgs: 1,\n allowedInText: true,\n argTypes: [\"color\"]\n },\n handler(_ref2, args) {\n var {\n parser,\n breakOnTokenText\n } = _ref2;\n var color = assertNodeType(args[0], \"color-token\").color;\n // Set macro \\current@color in current namespace to store the current\n // color, mimicking the behavior of color.sty.\n // This is currently used just to correctly color a \\right\n // that follows a \\color command.\n parser.gullet.macros.set(\"\\\\current@color\", color);\n // Parse out the implicit body that should be colored.\n var body = parser.parseExpression(true, breakOnTokenText);\n return {\n type: \"color\",\n mode: parser.mode,\n color,\n body\n };\n },\n htmlBuilder: htmlBuilder$8,\n mathmlBuilder: mathmlBuilder$7\n});\n\n// Row breaks within tabular environments, and line breaks at top level\n// \\DeclareRobustCommand\\\\{...\\@xnewline}\ndefineFunction({\n type: \"cr\",\n names: [\"\\\\\\\\\"],\n props: {\n numArgs: 0,\n numOptionalArgs: 0,\n allowedInText: true\n },\n handler(_ref, args, optArgs) {\n var {\n parser\n } = _ref;\n var size = parser.gullet.future().text === \"[\" ? parser.parseSizeGroup(true) : null;\n var newLine = !parser.settings.displayMode || !parser.settings.useStrictBehavior(\"newLineInDisplayMode\", \"In LaTeX, \\\\\\\\ or \\\\newline \" + \"does nothing in display mode\");\n return {\n type: \"cr\",\n mode: parser.mode,\n newLine,\n size: size && assertNodeType(size, \"size\").value\n };\n },\n // The following builders are called only at the top level,\n // not within tabular/array environments.\n htmlBuilder(group, options) {\n var span = makeSpan([\"mspace\"], [], options);\n if (group.newLine) {\n span.classes.push(\"newline\");\n if (group.size) {\n span.style.marginTop = makeEm(calculateSize(group.size, options));\n }\n }\n return span;\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mspace\");\n if (group.newLine) {\n node.setAttribute(\"linebreak\", \"newline\");\n if (group.size) {\n node.setAttribute(\"height\", makeEm(calculateSize(group.size, options)));\n }\n }\n return node;\n }\n});\n\nvar globalMap = {\n \"\\\\global\": \"\\\\global\",\n \"\\\\long\": \"\\\\\\\\globallong\",\n \"\\\\\\\\globallong\": \"\\\\\\\\globallong\",\n \"\\\\def\": \"\\\\gdef\",\n \"\\\\gdef\": \"\\\\gdef\",\n \"\\\\edef\": \"\\\\xdef\",\n \"\\\\xdef\": \"\\\\xdef\",\n \"\\\\let\": \"\\\\\\\\globallet\",\n \"\\\\futurelet\": \"\\\\\\\\globalfuture\"\n};\nvar checkControlSequence = tok => {\n var name = tok.text;\n if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n throw new ParseError(\"Expected a control sequence\", tok);\n }\n return name;\n};\nvar getRHS = parser => {\n var tok = parser.gullet.popToken();\n if (tok.text === \"=\") {\n // consume optional equals\n tok = parser.gullet.popToken();\n if (tok.text === \" \") {\n // consume one optional space\n tok = parser.gullet.popToken();\n }\n }\n return tok;\n};\nvar letCommand = (parser, name, tok, global) => {\n var macro = parser.gullet.macros.get(tok.text);\n if (macro == null) {\n // don't expand it later even if a macro with the same name is defined\n // e.g., \\let\\foo=\\frac \\def\\frac{\\relax} \\frac12\n tok.noexpand = true;\n macro = {\n tokens: [tok],\n numArgs: 0,\n // reproduce the same behavior in expansion\n unexpandable: !parser.gullet.isExpandable(tok.text)\n };\n }\n parser.gullet.macros.set(name, macro, global);\n};\n// <assignment> -> <non-macro assignment>|<macro assignment>\n// <non-macro assignment> -> <simple assignment>|\\global<non-macro assignment>\n// <macro assignment> -> <definition>|<prefix><macro assignment>\n// <prefix> -> \\global|\\long|\\outer\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\global\", \"\\\\long\", \"\\\\\\\\globallong\" // can\u2019t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler(_ref) {\n var {\n parser,\n funcName\n } = _ref;\n parser.consumeSpaces();\n var token = parser.fetch();\n if (globalMap[token.text]) {\n // KaTeX doesn't have \\par, so ignore \\long\n if (funcName === \"\\\\global\" || funcName === \"\\\\\\\\globallong\") {\n token.text = globalMap[token.text];\n }\n return assertNodeType(parser.parseFunction(), \"internal\");\n }\n throw new ParseError(\"Invalid token after macro prefix\", token);\n }\n});\n// Basic support for macro definitions: \\def, \\gdef, \\edef, \\xdef\n// <definition> -> <def><control sequence><definition text>\n// <def> -> \\def|\\gdef|\\edef|\\xdef\n// <definition text> -> <parameter text><left brace><balanced text><right brace>\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\def\", \"\\\\gdef\", \"\\\\edef\", \"\\\\xdef\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref2) {\n var {\n parser,\n funcName\n } = _ref2;\n var tok = parser.gullet.popToken();\n var name = tok.text;\n if (/^(?:[\\\\{}$&#^_]|EOF)$/.test(name)) {\n throw new ParseError(\"Expected a control sequence\", tok);\n }\n var numArgs = 0;\n var insert;\n var delimiters = [[]];\n // <parameter text> contains no braces\n while (parser.gullet.future().text !== \"{\") {\n tok = parser.gullet.popToken();\n if (tok.text === \"#\") {\n // If the very last character of the <parameter text> is #, so that\n // this # is immediately followed by {, TeX will behave as if the {\n // had been inserted at the right end of both the parameter text\n // and the replacement text.\n if (parser.gullet.future().text === \"{\") {\n insert = parser.gullet.future();\n delimiters[numArgs].push(\"{\");\n break;\n }\n // A parameter, the first appearance of # must be followed by 1,\n // the next by 2, and so on; up to nine #\u2019s are allowed\n tok = parser.gullet.popToken();\n if (!/^[1-9]$/.test(tok.text)) {\n throw new ParseError(\"Invalid argument number \\\"\" + tok.text + \"\\\"\");\n }\n if (parseInt(tok.text) !== numArgs + 1) {\n throw new ParseError(\"Argument number \\\"\" + tok.text + \"\\\" out of order\");\n }\n numArgs++;\n delimiters.push([]);\n } else if (tok.text === \"EOF\") {\n throw new ParseError(\"Expected a macro definition\");\n } else {\n delimiters[numArgs].push(tok.text);\n }\n }\n // replacement text, enclosed in '{' and '}' and properly nested\n var {\n tokens\n } = parser.gullet.consumeArg();\n if (insert) {\n tokens.unshift(insert);\n }\n if (funcName === \"\\\\edef\" || funcName === \"\\\\xdef\") {\n tokens = parser.gullet.expandTokens(tokens);\n tokens.reverse(); // to fit in with stack order\n }\n // Final arg is the expansion of the macro\n parser.gullet.macros.set(name, {\n tokens,\n numArgs,\n delimiters\n }, funcName === globalMap[funcName]);\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n// <simple assignment> -> <let assignment>\n// <let assignment> -> \\futurelet<control sequence><token><token>\n// | \\let<control sequence><equals><one optional space><token>\n// <equals> -> <optional spaces>|<optional spaces>=\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\let\", \"\\\\\\\\globallet\" // can\u2019t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref3) {\n var {\n parser,\n funcName\n } = _ref3;\n var name = checkControlSequence(parser.gullet.popToken());\n parser.gullet.consumeSpaces();\n var tok = getRHS(parser);\n letCommand(parser, name, tok, funcName === \"\\\\\\\\globallet\");\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n// ref: https://www.tug.org/TUGboat/tb09-3/tb22bechtolsheim.pdf\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\futurelet\", \"\\\\\\\\globalfuture\" // can\u2019t be entered directly\n ],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref4) {\n var {\n parser,\n funcName\n } = _ref4;\n var name = checkControlSequence(parser.gullet.popToken());\n var middle = parser.gullet.popToken();\n var tok = parser.gullet.popToken();\n letCommand(parser, name, tok, funcName === \"\\\\\\\\globalfuture\");\n parser.gullet.pushToken(tok);\n parser.gullet.pushToken(middle);\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n\n/**\n * This file deals with creating delimiters of various sizes. The TeXbook\n * discusses these routines on page 441-442, in the \"Another subroutine sets box\n * x to a specified variable delimiter\" paragraph.\n *\n * There are three main routines here. `makeSmallDelim` makes a delimiter in the\n * normal font, but in either text, script, or scriptscript style.\n * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,\n * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of\n * smaller pieces that are stacked on top of one another.\n *\n * The functions take a parameter `center`, which determines if the delimiter\n * should be centered around the axis.\n *\n * Then, there are three exposed functions. `sizedDelim` makes a delimiter in\n * one of the given sizes. This is used for things like `\\bigl`.\n * `customSizedDelim` makes a delimiter with a given total height+depth. It is\n * called in places like `\\sqrt`. `leftRightDelim` makes an appropriate\n * delimiter which surrounds an expression of a given height an depth. It is\n * used in `\\left` and `\\right`.\n */\n/**\n * Get the metrics for a given symbol and font, after transformation (i.e.\n * after following replacement from symbols.js)\n */\nvar getMetrics = function getMetrics(symbol, font, mode) {\n var replace = symbols.math[symbol] && symbols.math[symbol].replace;\n var metrics = getCharacterMetrics(replace || symbol, font, mode);\n if (!metrics) {\n throw new Error(\"Unsupported symbol \" + symbol + \" and font size \" + font + \".\");\n }\n return metrics;\n};\n/**\n * Puts a delimiter span in a given style, and adds appropriate height, depth,\n * and maxFontSizes.\n */\nvar styleWrap = function styleWrap(delim, toStyle, options, classes) {\n var newOptions = options.havingBaseStyle(toStyle);\n var span = makeSpan(classes.concat(newOptions.sizingClasses(options)), [delim], options);\n var delimSizeMultiplier = newOptions.sizeMultiplier / options.sizeMultiplier;\n span.height *= delimSizeMultiplier;\n span.depth *= delimSizeMultiplier;\n span.maxFontSize = newOptions.sizeMultiplier;\n return span;\n};\nvar centerSpan = function centerSpan(span, options, style) {\n var newOptions = options.havingBaseStyle(style);\n var shift = (1 - options.sizeMultiplier / newOptions.sizeMultiplier) * options.fontMetrics().axisHeight;\n span.classes.push(\"delimcenter\");\n span.style.top = makeEm(shift);\n span.height -= shift;\n span.depth += shift;\n};\n/**\n * Makes a small delimiter. This is a delimiter that comes in the Main-Regular\n * font, but is restyled to either be in textstyle, scriptstyle, or\n * scriptscriptstyle.\n */\nvar makeSmallDelim = function makeSmallDelim(delim, style, center, options, mode, classes) {\n var text = makeSymbol(delim, \"Main-Regular\", mode, options);\n var span = styleWrap(text, style, options, classes);\n if (center) {\n centerSpan(span, options, style);\n }\n return span;\n};\n/**\n * Builds a symbol in the given font size (note size is an integer)\n */\nvar mathrmSize = function mathrmSize(value, size, mode, options) {\n return makeSymbol(value, \"Size\" + size + \"-Regular\", mode, options);\n};\n/**\n * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,\n * Size3, or Size4 fonts. It is always rendered in textstyle.\n */\nvar makeLargeDelim = function makeLargeDelim(delim, size, center, options, mode, classes) {\n var inner = mathrmSize(delim, size, mode, options);\n var span = styleWrap(makeSpan([\"delimsizing\", \"size\" + size], [inner], options), Style$1.TEXT, options, classes);\n if (center) {\n centerSpan(span, options, Style$1.TEXT);\n }\n return span;\n};\n/**\n * Make a span from a font glyph with the given offset and in the given font.\n * This is used in makeStackedDelim to make the stacking pieces for the delimiter.\n */\nvar makeGlyphSpan = function makeGlyphSpan(symbol, font, mode) {\n var sizeClass;\n // Apply the correct CSS class to choose the right font.\n if (font === \"Size1-Regular\") {\n sizeClass = \"delim-size1\";\n } else /* if (font === \"Size4-Regular\") */{\n sizeClass = \"delim-size4\";\n }\n var corner = makeSpan([\"delimsizinginner\", sizeClass], [makeSpan([], [makeSymbol(symbol, font, mode)])]);\n // Since this will be passed into `makeVList` in the end, wrap the element\n // in the appropriate tag that VList uses.\n return {\n type: \"elem\",\n elem: corner\n };\n};\nvar makeInner = function makeInner(ch, height, options) {\n // Create a span with inline SVG for the inner part of a tall stacked delimiter.\n var width = fontMetricsData['Size4-Regular'][ch.charCodeAt(0)] ? fontMetricsData['Size4-Regular'][ch.charCodeAt(0)][4] : fontMetricsData['Size1-Regular'][ch.charCodeAt(0)][4];\n var path = new PathNode(\"inner\", innerPath(ch, Math.round(1000 * height)));\n var svgNode = new SvgNode([path], {\n \"width\": makeEm(width),\n \"height\": makeEm(height),\n // Override CSS rule `.katex svg { width: 100% }`\n \"style\": \"width:\" + makeEm(width),\n \"viewBox\": \"0 0 \" + 1000 * width + \" \" + Math.round(1000 * height),\n \"preserveAspectRatio\": \"xMinYMin\"\n });\n var span = makeSvgSpan([], [svgNode], options);\n span.height = height;\n span.style.height = makeEm(height);\n span.style.width = makeEm(width);\n return {\n type: \"elem\",\n elem: span\n };\n};\n// Helpers for makeStackedDelim\nvar lapInEms = 0.008;\nvar lap = {\n type: \"kern\",\n size: -1 * lapInEms\n};\nvar verts = new Set([\"|\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\vert\"]);\nvar doubleVerts = new Set([\"\\\\|\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\Vert\"]);\n/**\n * Make a stacked delimiter out of a given delimiter, with the total height at\n * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.\n */\nvar makeStackedDelim = function makeStackedDelim(delim, heightTotal, center, options, mode, classes) {\n // There are four parts, the top, an optional middle, a repeated part, and a\n // bottom.\n var top;\n var middle;\n var repeat;\n var bottom;\n var svgLabel = \"\";\n var viewBoxWidth = 0;\n top = repeat = bottom = delim;\n middle = null;\n // Also keep track of what font the delimiters are in\n var font = \"Size1-Regular\";\n // We set the parts and font based on the symbol. Note that we use\n // '\\u23d0' instead of '|' and '\\u2016' instead of '\\\\|' for the\n // repeats of the arrows\n if (delim === \"\\\\uparrow\") {\n repeat = bottom = \"\\u23d0\";\n } else if (delim === \"\\\\Uparrow\") {\n repeat = bottom = \"\\u2016\";\n } else if (delim === \"\\\\downarrow\") {\n top = repeat = \"\\u23d0\";\n } else if (delim === \"\\\\Downarrow\") {\n top = repeat = \"\\u2016\";\n } else if (delim === \"\\\\updownarrow\") {\n top = \"\\\\uparrow\";\n repeat = \"\\u23d0\";\n bottom = \"\\\\downarrow\";\n } else if (delim === \"\\\\Updownarrow\") {\n top = \"\\\\Uparrow\";\n repeat = \"\\u2016\";\n bottom = \"\\\\Downarrow\";\n } else if (verts.has(delim)) {\n repeat = \"\\u2223\";\n svgLabel = \"vert\";\n viewBoxWidth = 333;\n } else if (doubleVerts.has(delim)) {\n repeat = \"\\u2225\";\n svgLabel = \"doublevert\";\n viewBoxWidth = 556;\n } else if (delim === \"[\" || delim === \"\\\\lbrack\") {\n top = \"\\u23a1\";\n repeat = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n svgLabel = \"lbrack\";\n viewBoxWidth = 667;\n } else if (delim === \"]\" || delim === \"\\\\rbrack\") {\n top = \"\\u23a4\";\n repeat = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n svgLabel = \"rbrack\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\lfloor\" || delim === \"\\u230a\") {\n repeat = top = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n svgLabel = \"lfloor\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\lceil\" || delim === \"\\u2308\") {\n top = \"\\u23a1\";\n repeat = bottom = \"\\u23a2\";\n font = \"Size4-Regular\";\n svgLabel = \"lceil\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\rfloor\" || delim === \"\\u230b\") {\n repeat = top = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n svgLabel = \"rfloor\";\n viewBoxWidth = 667;\n } else if (delim === \"\\\\rceil\" || delim === \"\\u2309\") {\n top = \"\\u23a4\";\n repeat = bottom = \"\\u23a5\";\n font = \"Size4-Regular\";\n svgLabel = \"rceil\";\n viewBoxWidth = 667;\n } else if (delim === \"(\" || delim === \"\\\\lparen\") {\n top = \"\\u239b\";\n repeat = \"\\u239c\";\n bottom = \"\\u239d\";\n font = \"Size4-Regular\";\n svgLabel = \"lparen\";\n viewBoxWidth = 875;\n } else if (delim === \")\" || delim === \"\\\\rparen\") {\n top = \"\\u239e\";\n repeat = \"\\u239f\";\n bottom = \"\\u23a0\";\n font = \"Size4-Regular\";\n svgLabel = \"rparen\";\n viewBoxWidth = 875;\n } else if (delim === \"\\\\{\" || delim === \"\\\\lbrace\") {\n top = \"\\u23a7\";\n middle = \"\\u23a8\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\}\" || delim === \"\\\\rbrace\") {\n top = \"\\u23ab\";\n middle = \"\\u23ac\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lgroup\" || delim === \"\\u27ee\") {\n top = \"\\u23a7\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rgroup\" || delim === \"\\u27ef\") {\n top = \"\\u23ab\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lmoustache\" || delim === \"\\u23b0\") {\n top = \"\\u23a7\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rmoustache\" || delim === \"\\u23b1\") {\n top = \"\\u23ab\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n }\n // Get the metrics of the four sections\n var topMetrics = getMetrics(top, font, mode);\n var topHeightTotal = topMetrics.height + topMetrics.depth;\n var repeatMetrics = getMetrics(repeat, font, mode);\n var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;\n var bottomMetrics = getMetrics(bottom, font, mode);\n var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;\n var middleHeightTotal = 0;\n var middleFactor = 1;\n if (middle !== null) {\n var middleMetrics = getMetrics(middle, font, mode);\n middleHeightTotal = middleMetrics.height + middleMetrics.depth;\n middleFactor = 2; // repeat symmetrically above and below middle\n }\n // Calculate the minimal height that the delimiter can have.\n // It is at least the size of the top, bottom, and optional middle combined.\n var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;\n // Compute the number of copies of the repeat symbol we will need\n var repeatCount = Math.max(0, Math.ceil((heightTotal - minHeight) / (middleFactor * repeatHeightTotal)));\n // Compute the total height of the delimiter including all the symbols\n var realHeightTotal = minHeight + repeatCount * middleFactor * repeatHeightTotal;\n // The center of the delimiter is placed at the center of the axis. Note\n // that in this context, \"center\" means that the delimiter should be\n // centered around the axis in the current style, while normally it is\n // centered around the axis in textstyle.\n var axisHeight = options.fontMetrics().axisHeight;\n if (center) {\n axisHeight *= options.sizeMultiplier;\n }\n // Calculate the depth\n var depth = realHeightTotal / 2 - axisHeight;\n // Now, we start building the pieces that will go into the vlist\n // Keep a list of the pieces of the stacked delimiter\n var stack = [];\n if (svgLabel.length > 0) {\n // Instead of stacking glyphs, create a single SVG.\n // This evades browser problems with imprecise positioning of spans.\n var midHeight = realHeightTotal - topHeightTotal - bottomHeightTotal;\n var viewBoxHeight = Math.round(realHeightTotal * 1000);\n var pathStr = tallDelim(svgLabel, Math.round(midHeight * 1000));\n var path = new PathNode(svgLabel, pathStr);\n var width = makeEm(viewBoxWidth / 1000);\n var height = makeEm(viewBoxHeight / 1000);\n var svg = new SvgNode([path], {\n \"width\": width,\n \"height\": height,\n \"viewBox\": \"0 0 \" + viewBoxWidth + \" \" + viewBoxHeight\n });\n var wrapper = makeSvgSpan([], [svg], options);\n wrapper.height = viewBoxHeight / 1000;\n wrapper.style.width = width;\n wrapper.style.height = height;\n stack.push({\n type: \"elem\",\n elem: wrapper\n });\n } else {\n // Stack glyphs\n // Start by adding the bottom symbol\n stack.push(makeGlyphSpan(bottom, font, mode));\n stack.push(lap); // overlap\n if (middle === null) {\n // The middle section will be an SVG. Make it an extra 0.016em tall.\n // We'll overlap by 0.008em at top and bottom.\n var innerHeight = realHeightTotal - topHeightTotal - bottomHeightTotal + 2 * lapInEms;\n stack.push(makeInner(repeat, innerHeight, options));\n } else {\n // When there is a middle bit, we need the middle part and two repeated\n // sections\n var _innerHeight = (realHeightTotal - topHeightTotal - bottomHeightTotal - middleHeightTotal) / 2 + 2 * lapInEms;\n stack.push(makeInner(repeat, _innerHeight, options));\n // Now insert the middle of the brace.\n stack.push(lap);\n stack.push(makeGlyphSpan(middle, font, mode));\n stack.push(lap);\n stack.push(makeInner(repeat, _innerHeight, options));\n }\n // Add the top symbol\n stack.push(lap);\n stack.push(makeGlyphSpan(top, font, mode));\n }\n // Finally, build the vlist\n var newOptions = options.havingBaseStyle(Style$1.TEXT);\n var inner = makeVList({\n positionType: \"bottom\",\n positionData: depth,\n children: stack\n });\n return styleWrap(makeSpan([\"delimsizing\", \"mult\"], [inner], newOptions), Style$1.TEXT, options, classes);\n};\n// All surds have 0.08em padding above the vinculum inside the SVG.\n// That keeps browser span height rounding error from pinching the line.\nvar vbPad = 80; // padding above the surd, measured inside the viewBox.\nvar emPad = 0.08; // padding, in ems, measured in the document.\nvar sqrtSvg = function sqrtSvg(sqrtName, height, viewBoxHeight, extraVinculum, options) {\n var path = sqrtPath(sqrtName, extraVinculum, viewBoxHeight);\n var pathNode = new PathNode(sqrtName, path);\n var svg = new SvgNode([pathNode], {\n // Note: 1000:1 ratio of viewBox to document em width.\n \"width\": \"400em\",\n \"height\": makeEm(height),\n \"viewBox\": \"0 0 400000 \" + viewBoxHeight,\n \"preserveAspectRatio\": \"xMinYMin slice\"\n });\n return makeSvgSpan([\"hide-tail\"], [svg], options);\n};\n/**\n * Make a sqrt image of the given height,\n */\nvar makeSqrtImage = function makeSqrtImage(height, options) {\n // Define a newOptions that removes the effect of size changes such as \\Huge.\n // We don't pick different a height surd for \\Huge. For it, we scale up.\n var newOptions = options.havingBaseSizing();\n // Pick the desired surd glyph from a sequence of surds.\n var delim = traverseSequence(\"\\\\surd\", height * newOptions.sizeMultiplier, stackLargeDelimiterSequence, newOptions);\n var sizeMultiplier = newOptions.sizeMultiplier; // default\n // The standard sqrt SVGs each have a 0.04em thick vinculum.\n // If Settings.minRuleThickness is larger than that, we add extraVinculum.\n var extraVinculum = Math.max(0, options.minRuleThickness - options.fontMetrics().sqrtRuleThickness);\n // Create a span containing an SVG image of a sqrt symbol.\n var span;\n var spanHeight = 0;\n var texHeight = 0;\n var viewBoxHeight = 0;\n var advanceWidth;\n // We create viewBoxes with 80 units of \"padding\" above each surd.\n // Then browser rounding error on the parent span height will not\n // encroach on the ink of the vinculum. But that padding is not\n // included in the TeX-like `height` used for calculation of\n // vertical alignment. So texHeight = span.height < span.style.height.\n if (delim.type === \"small\") {\n // Get an SVG that is derived from glyph U+221A in font KaTeX-Main.\n // 1000 unit normal glyph height.\n viewBoxHeight = 1000 + 1000 * extraVinculum + vbPad;\n if (height < 1.0) {\n sizeMultiplier = 1.0; // mimic a \\textfont radical\n } else if (height < 1.4) {\n sizeMultiplier = 0.7; // mimic a \\scriptfont radical\n }\n spanHeight = (1.0 + extraVinculum + emPad) / sizeMultiplier;\n texHeight = (1.00 + extraVinculum) / sizeMultiplier;\n span = sqrtSvg(\"sqrtMain\", spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"0.853em\";\n advanceWidth = 0.833 / sizeMultiplier; // from the font.\n } else if (delim.type === \"large\") {\n // These SVGs come from fonts: KaTeX_Size1, _Size2, etc.\n viewBoxHeight = (1000 + vbPad) * sizeToMaxHeight[delim.size];\n texHeight = (sizeToMaxHeight[delim.size] + extraVinculum) / sizeMultiplier;\n spanHeight = (sizeToMaxHeight[delim.size] + extraVinculum + emPad) / sizeMultiplier;\n span = sqrtSvg(\"sqrtSize\" + delim.size, spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"1.02em\";\n advanceWidth = 1.0 / sizeMultiplier; // 1.0 from the font.\n } else {\n // Tall sqrt. In TeX, this would be stacked using multiple glyphs.\n // We'll use a single SVG to accomplish the same thing.\n spanHeight = height + extraVinculum + emPad;\n texHeight = height + extraVinculum;\n viewBoxHeight = Math.floor(1000 * height + extraVinculum) + vbPad;\n span = sqrtSvg(\"sqrtTall\", spanHeight, viewBoxHeight, extraVinculum, options);\n span.style.minWidth = \"0.742em\";\n advanceWidth = 1.056;\n }\n span.height = texHeight;\n span.style.height = makeEm(spanHeight);\n return {\n span,\n advanceWidth,\n // Calculate the actual line width.\n // This actually should depend on the chosen font -- e.g. \\boldmath\n // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and\n // have thicker rules.\n ruleWidth: (options.fontMetrics().sqrtRuleThickness + extraVinculum) * sizeMultiplier\n };\n};\n// There are three kinds of delimiters, delimiters that stack when they become\n// too large\nvar stackLargeDelimiters = new Set([\"(\", \"\\\\lparen\", \")\", \"\\\\rparen\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\", \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\", \"\\\\lfloor\", \"\\\\rfloor\", \"\\u230a\", \"\\u230b\", \"\\\\lceil\", \"\\\\rceil\", \"\\u2308\", \"\\u2309\", \"\\\\surd\"]);\n// delimiters that always stack\nvar stackAlwaysDelimiters = new Set([\"\\\\uparrow\", \"\\\\downarrow\", \"\\\\updownarrow\", \"\\\\Uparrow\", \"\\\\Downarrow\", \"\\\\Updownarrow\", \"|\", \"\\\\|\", \"\\\\vert\", \"\\\\Vert\", \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\", \"\\\\lgroup\", \"\\\\rgroup\", \"\\u27ee\", \"\\u27ef\", \"\\\\lmoustache\", \"\\\\rmoustache\", \"\\u23b0\", \"\\u23b1\"]);\n// and delimiters that never stack\nvar stackNeverDelimiters = new Set([\"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"/\", \"\\\\backslash\", \"\\\\lt\", \"\\\\gt\"]);\n// Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\nvar sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n/**\n * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.\n */\nvar makeSizedDelim = function makeSizedDelim(delim, size, options, mode, classes) {\n // < and > turn into \\langle and \\rangle in delimiters\n if (delim === \"<\" || delim === \"\\\\lt\" || delim === \"\\u27e8\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\" || delim === \"\\u27e9\") {\n delim = \"\\\\rangle\";\n }\n // Sized delimiters are never centered.\n if (stackLargeDelimiters.has(delim) || stackNeverDelimiters.has(delim)) {\n return makeLargeDelim(delim, size, false, options, mode, classes);\n } else if (stackAlwaysDelimiters.has(delim)) {\n return makeStackedDelim(delim, sizeToMaxHeight[size], false, options, mode, classes);\n } else {\n throw new ParseError(\"Illegal delimiter: '\" + delim + \"'\");\n }\n};\n// Delimiters that never stack try small delimiters and large delimiters only\nvar stackNeverDelimiterSequence = [{\n type: \"small\",\n style: Style$1.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: Style$1.SCRIPT\n}, {\n type: \"small\",\n style: Style$1.TEXT\n}, {\n type: \"large\",\n size: 1\n}, {\n type: \"large\",\n size: 2\n}, {\n type: \"large\",\n size: 3\n}, {\n type: \"large\",\n size: 4\n}];\n// Delimiters that always stack try the small delimiters first, then stack\nvar stackAlwaysDelimiterSequence = [{\n type: \"small\",\n style: Style$1.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: Style$1.SCRIPT\n}, {\n type: \"small\",\n style: Style$1.TEXT\n}, {\n type: \"stack\"\n}];\n// Delimiters that stack when large try the small and then large delimiters, and\n// stack afterwards\nvar stackLargeDelimiterSequence = [{\n type: \"small\",\n style: Style$1.SCRIPTSCRIPT\n}, {\n type: \"small\",\n style: Style$1.SCRIPT\n}, {\n type: \"small\",\n style: Style$1.TEXT\n}, {\n type: \"large\",\n size: 1\n}, {\n type: \"large\",\n size: 2\n}, {\n type: \"large\",\n size: 3\n}, {\n type: \"large\",\n size: 4\n}, {\n type: \"stack\"\n}];\n/**\n * Get the font used in a delimiter based on what kind of delimiter it is.\n * TODO(#963) Use more specific font family return type once that is introduced.\n */\nvar delimTypeToFont = function delimTypeToFont(type) {\n if (type.type === \"small\") {\n return \"Main-Regular\";\n } else if (type.type === \"large\") {\n return \"Size\" + type.size + \"-Regular\";\n } else if (type.type === \"stack\") {\n return \"Size4-Regular\";\n } else {\n var delimKind = type.type;\n throw new Error(\"Add support for delim type '\" + delimKind + \"' here.\");\n }\n};\n/**\n * Traverse a sequence of types of delimiters to decide what kind of delimiter\n * should be used to create a delimiter of the given height+depth.\n */\nvar traverseSequence = function traverseSequence(delim, height, sequence, options) {\n // Here, we choose the index we should start at in the sequences. In smaller\n // sizes (which correspond to larger numbers in style.size) we start earlier\n // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts\n // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2\n var start = Math.min(2, 3 - options.style.size);\n for (var i = start; i < sequence.length; i++) {\n var delimType = sequence[i];\n if (delimType.type === \"stack\") {\n // This is always the last delimiter, so we just break the loop now.\n break;\n }\n var metrics = getMetrics(delim, delimTypeToFont(delimType), \"math\");\n var heightDepth = metrics.height + metrics.depth;\n // Small delimiters are scaled down versions of the same font, so we\n // account for the style change size.\n if (delimType.type === \"small\") {\n var newOptions = options.havingBaseStyle(delimType.style);\n heightDepth *= newOptions.sizeMultiplier;\n }\n // Check if the delimiter at this size works for the given height.\n if (heightDepth > height) {\n return delimType;\n }\n }\n // If we reached the end of the sequence, return the last sequence element.\n return sequence[sequence.length - 1];\n};\n/**\n * Make a delimiter of a given height+depth, with optional centering. Here, we\n * traverse the sequences, and create a delimiter that the sequence tells us to.\n */\nvar makeCustomSizedDelim = function makeCustomSizedDelim(delim, height, center, options, mode, classes) {\n if (delim === \"<\" || delim === \"\\\\lt\" || delim === \"\\u27e8\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\" || delim === \"\\u27e9\") {\n delim = \"\\\\rangle\";\n }\n // Decide what sequence to use\n var sequence;\n if (stackNeverDelimiters.has(delim)) {\n sequence = stackNeverDelimiterSequence;\n } else if (stackLargeDelimiters.has(delim)) {\n sequence = stackLargeDelimiterSequence;\n } else {\n sequence = stackAlwaysDelimiterSequence;\n }\n // Look through the sequence\n var delimType = traverseSequence(delim, height, sequence, options);\n // Get the delimiter from font glyphs.\n // Depending on the sequence element we decided on, call the\n // appropriate function.\n if (delimType.type === \"small\") {\n return makeSmallDelim(delim, delimType.style, center, options, mode, classes);\n } else if (delimType.type === \"large\") {\n return makeLargeDelim(delim, delimType.size, center, options, mode, classes);\n } else /* if (delimType.type === \"stack\") */{\n return makeStackedDelim(delim, height, center, options, mode, classes);\n }\n};\n/**\n * Make a delimiter for use with `\\left` and `\\right`, given a height and depth\n * of an expression that the delimiters surround.\n */\nvar makeLeftRightDelim = function makeLeftRightDelim(delim, height, depth, options, mode, classes) {\n // We always center \\left/\\right delimiters, so the axis is always shifted\n var axisHeight = options.fontMetrics().axisHeight * options.sizeMultiplier;\n // Taken from TeX source, tex.web, function make_left_right\n var delimiterFactor = 901;\n var delimiterExtend = 5.0 / options.fontMetrics().ptPerEm;\n var maxDistFromAxis = Math.max(height - axisHeight, depth + axisHeight);\n var totalHeight = Math.max(\n // In real TeX, calculations are done using integral values which are\n // 65536 per pt, or 655360 per em. So, the division here truncates in\n // TeX but doesn't here, producing different results. If we wanted to\n // exactly match TeX's calculation, we could do\n // Math.floor(655360 * maxDistFromAxis / 500) *\n // delimiterFactor / 655360\n // (To see the difference, compare\n // x^{x^{\\left(\\rule{0.1em}{0.68em}\\right)}}\n // in TeX and KaTeX)\n maxDistFromAxis / 500 * delimiterFactor, 2 * maxDistFromAxis - delimiterExtend);\n // Finally, we defer to `makeCustomSizedDelim` with our calculated total\n // height\n return makeCustomSizedDelim(delim, totalHeight, true, options, mode, classes);\n};\n\n// Extra data needed for the delimiter handler down below\nvar delimiterSizes = {\n \"\\\\bigl\": {\n mclass: \"mopen\",\n size: 1\n },\n \"\\\\Bigl\": {\n mclass: \"mopen\",\n size: 2\n },\n \"\\\\biggl\": {\n mclass: \"mopen\",\n size: 3\n },\n \"\\\\Biggl\": {\n mclass: \"mopen\",\n size: 4\n },\n \"\\\\bigr\": {\n mclass: \"mclose\",\n size: 1\n },\n \"\\\\Bigr\": {\n mclass: \"mclose\",\n size: 2\n },\n \"\\\\biggr\": {\n mclass: \"mclose\",\n size: 3\n },\n \"\\\\Biggr\": {\n mclass: \"mclose\",\n size: 4\n },\n \"\\\\bigm\": {\n mclass: \"mrel\",\n size: 1\n },\n \"\\\\Bigm\": {\n mclass: \"mrel\",\n size: 2\n },\n \"\\\\biggm\": {\n mclass: \"mrel\",\n size: 3\n },\n \"\\\\Biggm\": {\n mclass: \"mrel\",\n size: 4\n },\n \"\\\\big\": {\n mclass: \"mord\",\n size: 1\n },\n \"\\\\Big\": {\n mclass: \"mord\",\n size: 2\n },\n \"\\\\bigg\": {\n mclass: \"mord\",\n size: 3\n },\n \"\\\\Bigg\": {\n mclass: \"mord\",\n size: 4\n }\n};\nvar delimiters = 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\", \".\"]);\n// Delimiter functions\nfunction checkDelimiter(delim, context) {\n var symDelim = checkSymbolNodeType(delim);\n if (symDelim && delimiters.has(symDelim.text)) {\n return symDelim;\n } else if (symDelim) {\n throw new ParseError(\"Invalid delimiter '\" + symDelim.text + \"' after '\" + context.funcName + \"'\", delim);\n } else {\n throw new ParseError(\"Invalid delimiter type '\" + delim.type + \"'\", delim);\n }\n}\ndefineFunction({\n type: \"delimsizing\",\n names: [\"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\", \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\", \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\", \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\"],\n props: {\n numArgs: 1,\n argTypes: [\"primitive\"]\n },\n handler: (context, args) => {\n var delim = checkDelimiter(args[0], context);\n return {\n type: \"delimsizing\",\n mode: context.parser.mode,\n size: delimiterSizes[context.funcName].size,\n mclass: delimiterSizes[context.funcName].mclass,\n delim: delim.text\n };\n },\n htmlBuilder: (group, options) => {\n if (group.delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return makeSpan([group.mclass]);\n }\n return makeSizedDelim(group.delim, group.size, options, group.mode, [group.mclass]);\n },\n mathmlBuilder: group => {\n var children = [];\n if (group.delim !== \".\") {\n children.push(makeText(group.delim, group.mode));\n }\n var node = new MathNode(\"mo\", children);\n if (group.mclass === \"mopen\" || group.mclass === \"mclose\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"mopen\" or \"mclose\" mclass.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n node.setAttribute(\"stretchy\", \"true\");\n var size = makeEm(sizeToMaxHeight[group.size]);\n node.setAttribute(\"minsize\", size);\n node.setAttribute(\"maxsize\", size);\n return node;\n }\n});\nfunction assertParsed(group) {\n if (!group.body) {\n throw new Error(\"Bug: The leftright ParseNode wasn't fully parsed.\");\n }\n}\ndefineFunction({\n type: \"leftright-right\",\n names: [\"\\\\right\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n // \\left case below triggers parsing of \\right in\n // `const right = parser.parseFunction();`\n // uses this return value.\n var color = context.parser.gullet.macros.get(\"\\\\current@color\");\n if (color && typeof color !== \"string\") {\n throw new ParseError(\"\\\\current@color set to non-string in \\\\right\");\n }\n return {\n type: \"leftright-right\",\n mode: context.parser.mode,\n delim: checkDelimiter(args[0], context).text,\n color: color // undefined if not set via \\color\n };\n }\n});\ndefineFunction({\n type: \"leftright\",\n names: [\"\\\\left\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n var delim = checkDelimiter(args[0], context);\n var parser = context.parser;\n // Parse out the implicit body\n ++parser.leftrightDepth;\n // parseExpression stops before '\\\\right'\n var body = parser.parseExpression(false);\n --parser.leftrightDepth;\n // Check the next token\n parser.expect(\"\\\\right\", false);\n var right = assertNodeType(parser.parseFunction(), \"leftright-right\");\n return {\n type: \"leftright\",\n mode: parser.mode,\n body,\n left: delim.text,\n right: right.delim,\n rightColor: right.color\n };\n },\n htmlBuilder: (group, options) => {\n assertParsed(group);\n // Build the inner expression\n var inner = buildExpression$1(group.body, options, true, [\"mopen\", \"mclose\"]);\n var innerHeight = 0;\n var innerDepth = 0;\n var hadMiddle = false;\n // Calculate its height and depth\n for (var i = 0; i < inner.length; i++) {\n // Property `isMiddle` not defined on `span`. See comment in\n // \"middle\"'s htmlBuilder.\n // TODO(ts)\n if (inner[i].isMiddle) {\n hadMiddle = true;\n } else {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n }\n // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n innerHeight *= options.sizeMultiplier;\n innerDepth *= options.sizeMultiplier;\n var leftDelim;\n if (group.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = makeLeftRightDelim(group.left, innerHeight, innerDepth, options, group.mode, [\"mopen\"]);\n }\n // Add it to the beginning of the expression\n inner.unshift(leftDelim);\n // Handle middle delimiters\n if (hadMiddle) {\n for (var _i = 1; _i < inner.length; _i++) {\n var middleDelim = inner[_i];\n // Property `isMiddle` not defined on `span`. See comment in\n // \"middle\"'s htmlBuilder.\n // TODO(ts)\n var isMiddle = middleDelim.isMiddle;\n if (isMiddle) {\n // Apply the options that were active when \\middle was called\n inner[_i] = makeLeftRightDelim(isMiddle.delim, innerHeight, innerDepth, isMiddle.options, group.mode, []);\n }\n }\n }\n var rightDelim;\n // Same for the right delimiter, but using color specified by \\color\n if (group.right === \".\") {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n var colorOptions = group.rightColor ? options.withColor(group.rightColor) : options;\n rightDelim = makeLeftRightDelim(group.right, innerHeight, innerDepth, colorOptions, group.mode, [\"mclose\"]);\n }\n // Add it to the end of the expression.\n inner.push(rightDelim);\n return makeSpan([\"minner\"], inner, options);\n },\n mathmlBuilder: (group, options) => {\n assertParsed(group);\n var inner = buildExpression(group.body, options);\n if (group.left !== \".\") {\n var leftNode = new MathNode(\"mo\", [makeText(group.left, group.mode)]);\n leftNode.setAttribute(\"fence\", \"true\");\n inner.unshift(leftNode);\n }\n if (group.right !== \".\") {\n var rightNode = new MathNode(\"mo\", [makeText(group.right, group.mode)]);\n rightNode.setAttribute(\"fence\", \"true\");\n if (group.rightColor) {\n rightNode.setAttribute(\"mathcolor\", group.rightColor);\n }\n inner.push(rightNode);\n }\n return makeRow(inner);\n }\n});\ndefineFunction({\n type: \"middle\",\n names: [\"\\\\middle\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (context, args) => {\n var delim = checkDelimiter(args[0], context);\n if (!context.parser.leftrightDepth) {\n throw new ParseError(\"\\\\middle without preceding \\\\left\", delim);\n }\n return {\n type: \"middle\",\n mode: context.parser.mode,\n delim: delim.text\n };\n },\n htmlBuilder: (group, options) => {\n var middleDelim;\n if (group.delim === \".\") {\n middleDelim = makeNullDelimiter(options, []);\n } else {\n middleDelim = makeSizedDelim(group.delim, 1, options, group.mode, []);\n var isMiddle = {\n delim: group.delim,\n options\n };\n // Property `isMiddle` not defined on `span`. It is only used in\n // this file above.\n // TODO: Fix this violation of the `span` type and possibly rename\n // things since `isMiddle` sounds like a boolean, but is a struct.\n // TODO(ts)\n middleDelim.isMiddle = isMiddle;\n }\n return middleDelim;\n },\n mathmlBuilder: (group, options) => {\n // A Firefox \\middle will stretch a character vertically only if it\n // is in the fence part of the operator dictionary at:\n // https://www.w3.org/TR/MathML3/appendixc.html.\n // So we need to avoid U+2223 and use plain \"|\" instead.\n var textNode = group.delim === \"\\\\vert\" || group.delim === \"|\" ? makeText(\"|\", \"text\") : makeText(group.delim, group.mode);\n var middleNode = new MathNode(\"mo\", [textNode]);\n middleNode.setAttribute(\"fence\", \"true\");\n // MathML gives 5/18em spacing to each <mo> element.\n // \\middle should get delimiter spacing instead.\n middleNode.setAttribute(\"lspace\", \"0.05em\");\n middleNode.setAttribute(\"rspace\", \"0.05em\");\n return middleNode;\n }\n});\n\nvar htmlBuilder$7 = (group, options) => {\n // \\cancel, \\bcancel, \\xcancel, \\sout, \\fbox, \\colorbox, \\fcolorbox, \\phase\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n var inner = wrapFragment(buildGroup$1(group.body, options), options);\n var label = group.label.slice(1);\n var scale = options.sizeMultiplier;\n var img;\n var imgShift = 0;\n // In the LaTeX cancel package, line geometry is slightly different\n // depending on whether the subject is wider than it is tall, or vice versa.\n // We don't know the width of a group, so as a proxy, we test if\n // the subject is a single character. This captures most of the\n // subjects that should get the \"tall\" treatment.\n var isSingleChar = isCharacterBox(group.body);\n if (label === \"sout\") {\n img = makeSpan([\"stretchy\", \"sout\"]);\n img.height = options.fontMetrics().defaultRuleThickness / scale;\n imgShift = -0.5 * options.fontMetrics().xHeight;\n } else if (label === \"phase\") {\n // Set a couple of dimensions from the steinmetz package.\n var lineWeight = calculateSize({\n number: 0.6,\n unit: \"pt\"\n }, options);\n var clearance = calculateSize({\n number: 0.35,\n unit: \"ex\"\n }, options);\n // Prevent size changes like \\Huge from affecting line thickness\n var newOptions = options.havingBaseSizing();\n scale = scale / newOptions.sizeMultiplier;\n var angleHeight = inner.height + inner.depth + lineWeight + clearance;\n // Reserve a left pad for the angle.\n inner.style.paddingLeft = makeEm(angleHeight / 2 + lineWeight);\n // Create an SVG\n var viewBoxHeight = Math.floor(1000 * angleHeight * scale);\n var path = phasePath(viewBoxHeight);\n var svgNode = new SvgNode([new PathNode(\"phase\", path)], {\n \"width\": \"400em\",\n \"height\": makeEm(viewBoxHeight / 1000),\n \"viewBox\": \"0 0 400000 \" + viewBoxHeight,\n \"preserveAspectRatio\": \"xMinYMin slice\"\n });\n // Wrap it in a span with overflow: hidden.\n img = makeSvgSpan([\"hide-tail\"], [svgNode], options);\n img.style.height = makeEm(angleHeight);\n imgShift = inner.depth + lineWeight + clearance;\n } else {\n // Add horizontal padding\n if (/cancel/.test(label)) {\n if (!isSingleChar) {\n inner.classes.push(\"cancel-pad\");\n }\n } else if (label === \"angl\") {\n inner.classes.push(\"anglpad\");\n } else {\n inner.classes.push(\"boxpad\");\n }\n // Add vertical padding\n var topPad = 0;\n var bottomPad = 0;\n var ruleThickness = 0;\n // ref: cancel package: \\advance\\totalheight2\\p@ % \"+2\"\n if (/box/.test(label)) {\n ruleThickness = Math.max(options.fontMetrics().fboxrule,\n // default\n options.minRuleThickness);\n topPad = options.fontMetrics().fboxsep + (label === \"colorbox\" ? 0 : ruleThickness);\n bottomPad = topPad;\n } else if (label === \"angl\") {\n ruleThickness = Math.max(options.fontMetrics().defaultRuleThickness, options.minRuleThickness);\n topPad = 4 * ruleThickness; // gap = 3 \u00D7 line, plus the line itself.\n bottomPad = Math.max(0, 0.25 - inner.depth);\n } else {\n topPad = isSingleChar ? 0.2 : 0;\n bottomPad = topPad;\n }\n img = stretchyEnclose(inner, label, topPad, bottomPad, options);\n if (/fbox|boxed|fcolorbox/.test(label)) {\n img.style.borderStyle = \"solid\";\n img.style.borderWidth = makeEm(ruleThickness);\n } else if (label === \"angl\" && ruleThickness !== 0.049) {\n img.style.borderTopWidth = makeEm(ruleThickness);\n img.style.borderRightWidth = makeEm(ruleThickness);\n }\n imgShift = inner.depth + bottomPad;\n if (group.backgroundColor) {\n img.style.backgroundColor = group.backgroundColor;\n if (group.borderColor) {\n img.style.borderColor = group.borderColor;\n }\n }\n }\n var vlist;\n if (group.backgroundColor) {\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [\n // Put the color background behind inner;\n {\n type: \"elem\",\n elem: img,\n shift: imgShift\n }, {\n type: \"elem\",\n elem: inner,\n shift: 0\n }]\n });\n } else {\n var classes = /cancel|phase/.test(label) ? [\"svg-align\"] : [];\n vlist = makeVList({\n positionType: \"individualShift\",\n children: [\n // Write the \\cancel stroke on top of inner.\n {\n type: \"elem\",\n elem: inner,\n shift: 0\n }, {\n type: \"elem\",\n elem: img,\n shift: imgShift,\n wrapperClasses: classes\n }]\n });\n }\n if (/cancel/.test(label)) {\n // The cancel package documentation says that cancel lines add their height\n // to the expression, but tests show that isn't how it actually works.\n vlist.height = inner.height;\n vlist.depth = inner.depth;\n }\n if (/cancel/.test(label) && !isSingleChar) {\n // cancel does not create horiz space for its line extension.\n return makeSpan([\"mord\", \"cancel-lap\"], [vlist], options);\n } else {\n return makeSpan([\"mord\"], [vlist], options);\n }\n};\nvar mathmlBuilder$6 = (group, options) => {\n var fboxsep = 0;\n var node = new MathNode(group.label.includes(\"colorbox\") ? \"mpadded\" : \"menclose\", [buildGroup(group.body, options)]);\n switch (group.label) {\n case \"\\\\cancel\":\n node.setAttribute(\"notation\", \"updiagonalstrike\");\n break;\n case \"\\\\bcancel\":\n node.setAttribute(\"notation\", \"downdiagonalstrike\");\n break;\n case \"\\\\phase\":\n node.setAttribute(\"notation\", \"phasorangle\");\n break;\n case \"\\\\sout\":\n node.setAttribute(\"notation\", \"horizontalstrike\");\n break;\n case \"\\\\fbox\":\n node.setAttribute(\"notation\", \"box\");\n break;\n case \"\\\\angl\":\n node.setAttribute(\"notation\", \"actuarial\");\n break;\n case \"\\\\fcolorbox\":\n case \"\\\\colorbox\":\n // <menclose> doesn't have a good notation option. So use <mpadded>\n // instead. Set some attributes that come included with <menclose>.\n fboxsep = options.fontMetrics().fboxsep * options.fontMetrics().ptPerEm;\n node.setAttribute(\"width\", \"+\" + 2 * fboxsep + \"pt\");\n node.setAttribute(\"height\", \"+\" + 2 * fboxsep + \"pt\");\n node.setAttribute(\"lspace\", fboxsep + \"pt\"); //\n node.setAttribute(\"voffset\", fboxsep + \"pt\");\n if (group.label === \"\\\\fcolorbox\") {\n var thk = Math.max(options.fontMetrics().fboxrule,\n // default\n options.minRuleThickness);\n node.setAttribute(\"style\", \"border: \" + makeEm(thk) + \" solid \" + group.borderColor);\n }\n break;\n case \"\\\\xcancel\":\n node.setAttribute(\"notation\", \"updiagonalstrike downdiagonalstrike\");\n break;\n }\n if (group.backgroundColor) {\n node.setAttribute(\"mathbackground\", group.backgroundColor);\n }\n return node;\n};\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\colorbox\"],\n props: {\n numArgs: 2,\n allowedInText: true,\n argTypes: [\"color\", \"text\"]\n },\n handler(_ref, args, optArgs) {\n var {\n parser,\n funcName\n } = _ref;\n var color = assertNodeType(args[0], \"color-token\").color;\n var body = args[1];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n backgroundColor: color,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\fcolorbox\"],\n props: {\n numArgs: 3,\n allowedInText: true,\n argTypes: [\"color\", \"color\", \"text\"]\n },\n handler(_ref2, args, optArgs) {\n var {\n parser,\n funcName\n } = _ref2;\n var borderColor = assertNodeType(args[0], \"color-token\").color;\n var backgroundColor = assertNodeType(args[1], \"color-token\").color;\n var body = args[2];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n backgroundColor,\n borderColor,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\fbox\"],\n props: {\n numArgs: 1,\n argTypes: [\"hbox\"],\n allowedInText: true\n },\n handler(_ref3, args) {\n var {\n parser\n } = _ref3;\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: \"\\\\fbox\",\n body: args[0]\n };\n }\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\cancel\", \"\\\\bcancel\", \"\\\\xcancel\", \"\\\\phase\"],\n props: {\n numArgs: 1\n },\n handler(_ref4, args) {\n var {\n parser,\n funcName\n } = _ref4;\n var body = args[0];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\sout\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref5, args) {\n var {\n parser,\n funcName\n } = _ref5;\n if (parser.mode === \"math\") {\n parser.settings.reportNonstrict(\"mathVsSout\", \"LaTeX's \\\\sout works only in text mode\");\n }\n var body = args[0];\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: funcName,\n body\n };\n },\n htmlBuilder: htmlBuilder$7,\n mathmlBuilder: mathmlBuilder$6\n});\ndefineFunction({\n type: \"enclose\",\n names: [\"\\\\angl\"],\n props: {\n numArgs: 1,\n argTypes: [\"hbox\"],\n allowedInText: false\n },\n handler(_ref6, args) {\n var {\n parser\n } = _ref6;\n return {\n type: \"enclose\",\n mode: parser.mode,\n label: \"\\\\angl\",\n body: args[0]\n };\n }\n});\n\n/**\n * All registered environments.\n * `environments.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `environments.js`.\n */\nvar _environments = {};\nfunction defineEnvironment(_ref) {\n var {\n type,\n names,\n props,\n handler,\n htmlBuilder,\n mathmlBuilder\n } = _ref;\n // Set default values of environments.\n var data = {\n type,\n numArgs: props.numArgs || 0,\n allowedInText: false,\n numOptionalArgs: 0,\n handler\n };\n for (var i = 0; i < names.length; ++i) {\n // TODO: The value type of _environments should be a type union of all\n // possible `EnvSpec<>` possibilities instead of `EnvSpec<*>`, which is\n // an existential type.\n _environments[names[i]] = data;\n }\n if (htmlBuilder) {\n _htmlGroupBuilders[type] = htmlBuilder;\n }\n if (mathmlBuilder) {\n _mathmlGroupBuilders[type] = mathmlBuilder;\n }\n}\n\n/**\n * All registered global/built-in macros.\n * `macros.js` exports this same dictionary again and makes it public.\n * `Parser.js` requires this dictionary via `macros.js`.\n */\nvar _macros = {};\n// This function might one day accept an additional argument and do more things.\nfunction defineMacro(name, body) {\n _macros[name] = body;\n}\n\n/**\n * Lexing or parsing positional information for error reporting.\n * This object is immutable.\n */\nclass SourceLocation {\n // The + prefix indicates that these fields aren't writeable\n // Lexer holding the input string.\n // Start offset, zero-based inclusive.\n // End offset, zero-based exclusive.\n constructor(lexer, start, end) {\n this.lexer = lexer;\n this.start = start;\n this.end = end;\n }\n /**\n * Merges two `SourceLocation`s from location providers, given they are\n * provided in order of appearance.\n * - Returns the first one's location if only the first is provided.\n * - Returns a merged range of the first and the last if both are provided\n * and their lexers match.\n * - Otherwise, returns null.\n */\n static range(first, second) {\n if (!second) {\n return first && first.loc;\n } else if (!first || !first.loc || !second.loc || first.loc.lexer !== second.loc.lexer) {\n return null;\n } else {\n return new SourceLocation(first.loc.lexer, first.loc.start, second.loc.end);\n }\n }\n}\n\n/**\n * The resulting token returned from `lex`.\n *\n * It consists of the token text plus some position information.\n * The position information is essentially a range in an input string,\n * but instead of referencing the bare input string, we refer to the lexer.\n * That way it is possible to attach extra metadata to the input string,\n * like for example a file name or similar.\n *\n * The position information is optional, so it is OK to construct synthetic\n * tokens if appropriate. Not providing available position information may\n * lead to degraded error reporting, though.\n */\nclass Token {\n // don't expand the token\n // used in \\noexpand\n constructor(text,\n // the text of this token\n loc) {\n this.text = text;\n this.loc = loc;\n }\n /**\n * Given a pair of tokens (this and endToken), compute a `Token` encompassing\n * the whole input range enclosed by these two.\n */\n range(endToken,\n // last token of the range, inclusive\n text) {\n return new Token(text, SourceLocation.range(this, endToken));\n }\n}\n\n// Helper functions\nfunction getHLines(parser) {\n // Return an array. The array length = number of hlines.\n // Each element in the array tells if the line is dashed.\n var hlineInfo = [];\n parser.consumeSpaces();\n var nxt = parser.fetch().text;\n if (nxt === \"\\\\relax\") {\n // \\relax is an artifact of the \\cr macro below\n parser.consume();\n parser.consumeSpaces();\n nxt = parser.fetch().text;\n }\n while (nxt === \"\\\\hline\" || nxt === \"\\\\hdashline\") {\n parser.consume();\n hlineInfo.push(nxt === \"\\\\hdashline\");\n parser.consumeSpaces();\n nxt = parser.fetch().text;\n }\n return hlineInfo;\n}\nvar validateAmsEnvironmentContext = context => {\n var settings = context.parser.settings;\n if (!settings.displayMode) {\n throw new ParseError(\"{\" + context.envName + \"} can be used only in\" + \" display mode.\");\n }\n};\nvar gatherEnvironments = new Set([\"gather\", \"gather*\"]);\n// autoTag (an argument to parseArray) can be one of three values:\n// * undefined: Regular (not-top-level) array; no tags on each row\n// * true: Automatic equation numbering, overridable by \\tag\n// * false: Tags allowed on each row, but no automatic numbering\n// This function *doesn't* work with the \"split\" environment name.\nfunction getAutoTag(name) {\n if (!name.includes(\"ed\")) {\n return !name.includes(\"*\");\n }\n // return undefined;\n}\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell. If given an optional argument style\n * (\"text\", \"display\", etc.), then each cell is cast into that style.\n */\nfunction parseArray(parser, _ref, style) {\n var {\n hskipBeforeAndAfter,\n addJot,\n cols,\n arraystretch,\n colSeparationType,\n autoTag,\n singleRow,\n emptySingleRow,\n maxNumCols,\n leqno\n } = _ref;\n parser.gullet.beginGroup();\n if (!singleRow) {\n // \\cr is equivalent to \\\\ without the optional size argument (see below)\n // TODO: provide helpful error when \\cr is used outside array environment\n parser.gullet.macros.set(\"\\\\cr\", \"\\\\\\\\\\\\relax\");\n }\n // Get current arraystretch if it's not set by the environment\n if (!arraystretch) {\n var stretch = parser.gullet.expandMacroAsText(\"\\\\arraystretch\");\n if (stretch == null) {\n // Default \\arraystretch from lttab.dtx\n arraystretch = 1;\n } else {\n arraystretch = parseFloat(stretch);\n if (!arraystretch || arraystretch < 0) {\n throw new ParseError(\"Invalid \\\\arraystretch: \" + stretch);\n }\n }\n }\n // Start group for first cell\n parser.gullet.beginGroup();\n var row = [];\n var body = [row];\n var rowGaps = [];\n var hLinesBeforeRow = [];\n var tags = autoTag != null ? [] : undefined;\n // amsmath uses \\global\\@eqnswtrue and \\global\\@eqnswfalse to represent\n // whether this row should have an equation number. Simulate this with\n // a \\@eqnsw macro set to 1 or 0.\n function beginRow() {\n if (autoTag) {\n parser.gullet.macros.set(\"\\\\@eqnsw\", \"1\", true);\n }\n }\n function endRow() {\n if (tags) {\n if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n tags.push(parser.subparse([new Token(\"\\\\df@tag\")]));\n parser.gullet.macros.set(\"\\\\df@tag\", undefined, true);\n } else {\n tags.push(Boolean(autoTag) && parser.gullet.macros.get(\"\\\\@eqnsw\") === \"1\");\n }\n }\n }\n beginRow();\n // Test for \\hline at the top of the array.\n hLinesBeforeRow.push(getHLines(parser));\n while (true) {\n // eslint-disable-line no-constant-condition\n // Parse each cell in its own group (namespace)\n var cellBody = parser.parseExpression(false, singleRow ? \"\\\\end\" : \"\\\\\\\\\");\n parser.gullet.endGroup();\n parser.gullet.beginGroup();\n var cell = {\n type: \"ordgroup\",\n mode: parser.mode,\n body: cellBody\n };\n if (style) {\n cell = {\n type: \"styling\",\n mode: parser.mode,\n style,\n body: [cell]\n };\n }\n row.push(cell);\n var next = parser.fetch().text;\n if (next === \"&\") {\n if (maxNumCols && row.length === maxNumCols) {\n if (singleRow || colSeparationType) {\n // {equation} or {split}\n throw new ParseError(\"Too many tab characters: &\", parser.nextToken);\n } else {\n // {array} environment\n parser.settings.reportNonstrict(\"textEnv\", \"Too few columns \" + \"specified in the {array} column argument.\");\n }\n }\n parser.consume();\n } else if (next === \"\\\\end\") {\n endRow();\n // Arrays terminate newlines with `\\crcr` which consumes a `\\cr` if\n // the last line is empty. However, AMS environments keep the\n // empty row if it's the only one.\n // NOTE: Currently, `cell` is the last item added into `row`.\n if (row.length === 1 && cell.type === \"styling\" && cell.body.length === 1 && cell.body[0].type === \"ordgroup\" && cell.body[0].body.length === 0 && (body.length > 1 || !emptySingleRow)) {\n body.pop();\n }\n if (hLinesBeforeRow.length < body.length + 1) {\n hLinesBeforeRow.push([]);\n }\n break;\n } else if (next === \"\\\\\\\\\") {\n parser.consume();\n var size = void 0;\n // \\def\\Let@{\\let\\\\\\math@cr}\n // \\def\\math@cr{...\\math@cr@}\n // \\def\\math@cr@{\\new@ifnextchar[\\math@cr@@{\\math@cr@@[\\z@]}}\n // \\def\\math@cr@@[#1]{...\\math@cr@@@...}\n // \\def\\math@cr@@@{\\cr}\n if (parser.gullet.future().text !== \" \") {\n size = parser.parseSizeGroup(true);\n }\n rowGaps.push(size ? size.value : null);\n endRow();\n // check for \\hline(s) following the row separator\n hLinesBeforeRow.push(getHLines(parser));\n row = [];\n body.push(row);\n beginRow();\n } else {\n throw new ParseError(\"Expected & or \\\\\\\\ or \\\\cr or \\\\end\", parser.nextToken);\n }\n }\n // End cell group\n parser.gullet.endGroup();\n // End array group defining \\cr\n parser.gullet.endGroup();\n return {\n type: \"array\",\n mode: parser.mode,\n addJot,\n arraystretch,\n body,\n cols,\n rowGaps,\n hskipBeforeAndAfter,\n hLinesBeforeRow,\n colSeparationType,\n tags,\n leqno\n };\n}\n// Decides on a style for cells in an array according to whether the given\n// environment name starts with the letter 'd'.\nfunction dCellStyle(envName) {\n if (envName.slice(0, 1) === \"d\") {\n return \"display\";\n } else {\n return \"text\";\n }\n}\nvar htmlBuilder$6 = function htmlBuilder(group, options) {\n var r;\n var c;\n var nr = group.body.length;\n var hLinesBeforeRow = group.hLinesBeforeRow;\n var nc = 0;\n var body = new Array(nr);\n var hlines = [];\n var ruleThickness = Math.max(\n // From LaTeX \\showthe\\arrayrulewidth. Equals 0.04 em.\n options.fontMetrics().arrayRuleWidth, options.minRuleThickness);\n // Horizontal spacing\n var pt = 1 / options.fontMetrics().ptPerEm;\n var arraycolsep = 5 * pt; // default value, i.e. \\arraycolsep in article.cls\n if (group.colSeparationType && group.colSeparationType === \"small\") {\n // We're in a {smallmatrix}. Default column space is \\thickspace,\n // i.e. 5/18em = 0.2778em, per amsmath.dtx for {smallmatrix}.\n // But that needs adjustment because LaTeX applies \\scriptstyle to the\n // entire array, including the colspace, but this function applies\n // \\scriptstyle only inside each element.\n var localMultiplier = options.havingStyle(Style$1.SCRIPT).sizeMultiplier;\n arraycolsep = 0.2778 * (localMultiplier / options.sizeMultiplier);\n }\n // Vertical spacing\n var baselineskip = group.colSeparationType === \"CD\" ? calculateSize({\n number: 3,\n unit: \"ex\"\n }, options) : 12 * pt; // see size10.clo\n // Default \\jot from ltmath.dtx\n // TODO(edemaine): allow overriding \\jot via \\setlength (#687)\n var jot = 3 * pt;\n var arrayskip = group.arraystretch * baselineskip;\n var arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n var arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n var totalHeight = 0;\n // Set a position for \\hline(s) at the top of the array, if any.\n function setHLinePos(hlinesInGap) {\n for (var i = 0; i < hlinesInGap.length; ++i) {\n if (i > 0) {\n totalHeight += 0.25;\n }\n hlines.push({\n pos: totalHeight,\n isDashed: hlinesInGap[i]\n });\n }\n }\n setHLinePos(hLinesBeforeRow[0]);\n for (r = 0; r < group.body.length; ++r) {\n var inrow = group.body[r];\n var height = arstrutHeight; // \\@array adds an \\@arstrut\n var depth = arstrutDepth; // to each tow (via the template)\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n var outrow = new Array(inrow.length);\n for (c = 0; c < inrow.length; ++c) {\n var elt = buildGroup$1(inrow[c], options);\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n if (height < elt.height) {\n height = elt.height;\n }\n outrow[c] = elt;\n }\n var rowGap = group.rowGaps[r];\n var gap = 0;\n if (rowGap) {\n gap = calculateSize(rowGap, options);\n if (gap > 0) {\n // \\@argarraycr\n gap += arstrutDepth;\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n gap = 0;\n }\n }\n // In AMS multiline environments such as aligned and gathered, rows\n // correspond to lines that have additional \\jot added between lines\n // via \\openup.\n // We simulate this by adding \\jot depth to each row except the last.\n if (group.addJot && r < group.body.length - 1) {\n depth += jot;\n }\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n body[r] = outrow;\n // Set a position for \\hline(s), if any.\n setHLinePos(hLinesBeforeRow[r + 1]);\n }\n var offset = totalHeight / 2 + options.fontMetrics().axisHeight;\n var colDescriptions = group.cols || [];\n var cols = [];\n var colSep;\n var colDescrNum;\n var tagSpans = [];\n if (group.tags && group.tags.some(tag => tag)) {\n // An environment with manual tags and/or automatic equation numbers.\n // Create node(s), the latter of which trigger CSS counter increment.\n for (r = 0; r < nr; ++r) {\n var rw = body[r];\n var shift = rw.pos - offset;\n var tag = group.tags[r];\n var tagSpan = void 0;\n if (tag === true) {\n // automatic numbering\n tagSpan = makeSpan([\"eqn-num\"], [], options);\n } else if (tag === false) {\n // \\nonumber/\\notag or starred environment\n tagSpan = makeSpan([], [], options);\n } else {\n // manual \\tag\n tagSpan = makeSpan([], buildExpression$1(tag, options, true), options);\n }\n tagSpan.depth = rw.depth;\n tagSpan.height = rw.height;\n tagSpans.push({\n type: \"elem\",\n elem: tagSpan,\n shift\n });\n }\n }\n for (c = 0, colDescrNum = 0;\n // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length; ++c, ++colDescrNum) {\n var _colDescr3;\n var colDescr = colDescriptions[colDescrNum];\n var firstSeparator = true;\n while (((_colDescr = colDescr) == null ? void 0 : _colDescr.type) === \"separator\") {\n var _colDescr;\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(options.fontMetrics().doubleRuleSep);\n cols.push(colSep);\n }\n if (colDescr.separator === \"|\" || colDescr.separator === \":\") {\n var lineType = colDescr.separator === \"|\" ? \"solid\" : \"dashed\";\n var separator = makeSpan([\"vertical-separator\"], [], options);\n separator.style.height = makeEm(totalHeight);\n separator.style.borderRightWidth = makeEm(ruleThickness);\n separator.style.borderRightStyle = lineType;\n separator.style.margin = \"0 \" + makeEm(-ruleThickness / 2);\n var _shift = totalHeight - offset;\n if (_shift) {\n separator.style.verticalAlign = makeEm(-_shift);\n }\n cols.push(separator);\n } else {\n throw new ParseError(\"Invalid separator type: \" + colDescr.separator);\n }\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum];\n firstSeparator = false;\n }\n if (c >= nc) {\n continue;\n }\n var sepwidth = void 0;\n if (c > 0 || group.hskipBeforeAndAfter) {\n var _colDescr$pregap, _colDescr2;\n sepwidth = (_colDescr$pregap = (_colDescr2 = colDescr) == null ? void 0 : _colDescr2.pregap) != null ? _colDescr$pregap : arraycolsep;\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(sepwidth);\n cols.push(colSep);\n }\n }\n var colElems = [];\n for (r = 0; r < nr; ++r) {\n var row = body[r];\n var elem = row[c];\n if (!elem) {\n continue;\n }\n var _shift2 = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n colElems.push({\n type: \"elem\",\n elem: elem,\n shift: _shift2\n });\n }\n var colVList = makeVList({\n positionType: \"individualShift\",\n children: colElems\n });\n var colSpan = makeSpan([\"col-align-\" + (((_colDescr3 = colDescr) == null ? void 0 : _colDescr3.align) || \"c\")], [colVList]);\n cols.push(colSpan);\n if (c < nc - 1 || group.hskipBeforeAndAfter) {\n var _colDescr$postgap, _colDescr4;\n sepwidth = (_colDescr$postgap = (_colDescr4 = colDescr) == null ? void 0 : _colDescr4.postgap) != null ? _colDescr$postgap : arraycolsep;\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = makeEm(sepwidth);\n cols.push(colSep);\n }\n }\n }\n var tableBody = makeSpan([\"mtable\"], cols);\n // Add \\hline(s), if any.\n if (hlines.length > 0) {\n var line = makeLineSpan(\"hline\", options, ruleThickness);\n var dashes = makeLineSpan(\"hdashline\", options, ruleThickness);\n var vListElems = [{\n type: \"elem\",\n elem: tableBody,\n shift: 0\n }];\n while (hlines.length > 0) {\n var hline = hlines.pop();\n var lineShift = hline.pos - offset;\n if (hline.isDashed) {\n vListElems.push({\n type: \"elem\",\n elem: dashes,\n shift: lineShift\n });\n } else {\n vListElems.push({\n type: \"elem\",\n elem: line,\n shift: lineShift\n });\n }\n }\n tableBody = makeVList({\n positionType: \"individualShift\",\n children: vListElems\n });\n }\n if (tagSpans.length === 0) {\n return makeSpan([\"mord\"], [tableBody], options);\n } else {\n var eqnNumCol = makeVList({\n positionType: \"individualShift\",\n children: tagSpans\n });\n var tagCol = makeSpan([\"tag\"], [eqnNumCol], options);\n return makeFragment([tableBody, tagCol]);\n }\n};\nvar alignMap = {\n c: \"center \",\n l: \"left \",\n r: \"right \"\n};\nvar mathmlBuilder$5 = function mathmlBuilder(group, options) {\n var tbl = [];\n var glue = new MathNode(\"mtd\", [], [\"mtr-glue\"]);\n var tag = new MathNode(\"mtd\", [], [\"mml-eqn-num\"]);\n for (var i = 0; i < group.body.length; i++) {\n var rw = group.body[i];\n var row = [];\n for (var j = 0; j < rw.length; j++) {\n row.push(new MathNode(\"mtd\", [buildGroup(rw[j], options)]));\n }\n if (group.tags && group.tags[i]) {\n row.unshift(glue);\n row.push(glue);\n if (group.leqno) {\n row.unshift(tag);\n } else {\n row.push(tag);\n }\n }\n tbl.push(new MathNode(\"mtr\", row));\n }\n var table = new MathNode(\"mtable\", tbl);\n // Set column alignment, row spacing, column spacing, and\n // array lines by setting attributes on the table element.\n // Set the row spacing. In MathML, we specify a gap distance.\n // We do not use rowGap[] because MathML automatically increases\n // cell height with the height/depth of the element content.\n // LaTeX \\arraystretch multiplies the row baseline-to-baseline distance.\n // We simulate this by adding (arraystretch - 1)em to the gap. This\n // does a reasonable job of adjusting arrays containing 1 em tall content.\n // The 0.16 and 0.09 values are found empirically. They produce an array\n // similar to LaTeX and in which content does not interfere with \\hlines.\n var gap = group.arraystretch === 0.5 ? 0.1 // {smallmatrix}, {subarray}\n : 0.16 + group.arraystretch - 1 + (group.addJot ? 0.09 : 0);\n table.setAttribute(\"rowspacing\", makeEm(gap));\n // MathML table lines go only between cells.\n // To place a line on an edge we'll use <menclose>, if necessary.\n var menclose = \"\";\n var align = \"\";\n if (group.cols && group.cols.length > 0) {\n // Find column alignment, column spacing, and vertical lines.\n var cols = group.cols;\n var columnLines = \"\";\n var prevTypeWasAlign = false;\n var iStart = 0;\n var iEnd = cols.length;\n if (cols[0].type === \"separator\") {\n menclose += \"top \";\n iStart = 1;\n }\n if (cols[cols.length - 1].type === \"separator\") {\n menclose += \"bottom \";\n iEnd -= 1;\n }\n for (var _i = iStart; _i < iEnd; _i++) {\n var col = cols[_i];\n if (col.type === \"align\") {\n align += alignMap[col.align];\n if (prevTypeWasAlign) {\n columnLines += \"none \";\n }\n prevTypeWasAlign = true;\n } else if (col.type === \"separator\") {\n // MathML accepts only single lines between cells.\n // So we read only the first of consecutive separators.\n if (prevTypeWasAlign) {\n columnLines += col.separator === \"|\" ? \"solid \" : \"dashed \";\n prevTypeWasAlign = false;\n }\n }\n }\n table.setAttribute(\"columnalign\", align.trim());\n if (/[sd]/.test(columnLines)) {\n table.setAttribute(\"columnlines\", columnLines.trim());\n }\n }\n // Set column spacing.\n if (group.colSeparationType === \"align\") {\n var _cols = group.cols || [];\n var spacing = \"\";\n for (var _i2 = 1; _i2 < _cols.length; _i2++) {\n spacing += _i2 % 2 ? \"0em \" : \"1em \";\n }\n table.setAttribute(\"columnspacing\", spacing.trim());\n } else if (group.colSeparationType === \"alignat\" || group.colSeparationType === \"gather\") {\n table.setAttribute(\"columnspacing\", \"0em\");\n } else if (group.colSeparationType === \"small\") {\n table.setAttribute(\"columnspacing\", \"0.2778em\");\n } else if (group.colSeparationType === \"CD\") {\n table.setAttribute(\"columnspacing\", \"0.5em\");\n } else {\n table.setAttribute(\"columnspacing\", \"1em\");\n }\n // Address \\hline and \\hdashline\n var rowLines = \"\";\n var hlines = group.hLinesBeforeRow;\n menclose += hlines[0].length > 0 ? \"left \" : \"\";\n menclose += hlines[hlines.length - 1].length > 0 ? \"right \" : \"\";\n for (var _i3 = 1; _i3 < hlines.length - 1; _i3++) {\n rowLines += hlines[_i3].length === 0 ? \"none \"\n // MathML accepts only a single line between rows. Read one element.\n : hlines[_i3][0] ? \"dashed \" : \"solid \";\n }\n if (/[sd]/.test(rowLines)) {\n table.setAttribute(\"rowlines\", rowLines.trim());\n }\n if (menclose !== \"\") {\n table = new MathNode(\"menclose\", [table]);\n table.setAttribute(\"notation\", menclose.trim());\n }\n if (group.arraystretch && group.arraystretch < 1) {\n // A small array. Wrap in scriptstyle so row gap is not too large.\n table = new MathNode(\"mstyle\", [table]);\n table.setAttribute(\"scriptlevel\", \"1\");\n }\n return table;\n};\n// Convenience function for align, align*, aligned, alignat, alignat*, alignedat.\nvar alignedHandler = function alignedHandler(context, args) {\n if (!context.envName.includes(\"ed\")) {\n validateAmsEnvironmentContext(context);\n }\n var cols = [];\n var separationType = context.envName.includes(\"at\") ? \"alignat\" : \"align\";\n var isSplit = context.envName === \"split\";\n var res = parseArray(context.parser, {\n cols,\n addJot: true,\n autoTag: isSplit ? undefined : getAutoTag(context.envName),\n emptySingleRow: true,\n colSeparationType: separationType,\n maxNumCols: isSplit ? 2 : undefined,\n leqno: context.parser.settings.leqno\n }, \"display\");\n // Determining number of columns.\n // 1. If the first argument is given, we use it as a number of columns,\n // and makes sure that each row doesn't exceed that number.\n // 2. Otherwise, just count number of columns = maximum number\n // of cells in each row (\"aligned\" mode -- isAligned will be true).\n //\n // At the same time, prepend empty group {} at beginning of every second\n // cell in each row (starting with second cell) so that operators become\n // binary. This behavior is implemented in amsmath's \\start@aligned.\n var numMaths = 0;\n var numCols = 0;\n var emptyGroup = {\n type: \"ordgroup\",\n mode: context.mode,\n body: []\n };\n if (args[0] && args[0].type === \"ordgroup\") {\n var arg0 = \"\";\n for (var i = 0; i < args[0].body.length; i++) {\n var textord = assertNodeType(args[0].body[i], \"textord\");\n arg0 += textord.text;\n }\n numMaths = Number(arg0);\n numCols = numMaths * 2;\n }\n var isAligned = !numCols;\n res.body.forEach(function (row) {\n for (var _i4 = 1; _i4 < row.length; _i4 += 2) {\n // Modify ordgroup node within styling node\n var styling = assertNodeType(row[_i4], \"styling\");\n var ordgroup = assertNodeType(styling.body[0], \"ordgroup\");\n ordgroup.body.unshift(emptyGroup);\n }\n if (!isAligned) {\n // Case 1\n var curMaths = row.length / 2;\n if (numMaths < curMaths) {\n throw new ParseError(\"Too many math in a row: \" + (\"expected \" + numMaths + \", but got \" + curMaths), row[0]);\n }\n } else if (numCols < row.length) {\n // Case 2\n numCols = row.length;\n }\n });\n // Adjusting alignment.\n // In aligned mode, we add one \\qquad between columns;\n // otherwise we add nothing.\n for (var _i5 = 0; _i5 < numCols; ++_i5) {\n var align = \"r\";\n var pregap = 0;\n if (_i5 % 2 === 1) {\n align = \"l\";\n } else if (_i5 > 0 && isAligned) {\n // \"aligned\" mode.\n pregap = 1; // add one \\quad\n }\n cols[_i5] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0\n };\n }\n res.colSeparationType = isAligned ? \"align\" : \"alignat\";\n return res;\n};\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\n// {darray} is an {array} environment where cells are set in \\displaystyle,\n// as defined in nccmath.sty.\ndefineEnvironment({\n type: \"array\",\n names: [\"array\", \"darray\"],\n props: {\n numArgs: 1\n },\n handler(context, args) {\n // Since no types are specified above, the two possibilities are\n // - The argument is wrapped in {} or [], in which case Parser's\n // parseGroup() returns an \"ordgroup\" wrapping some symbol node.\n // - The argument is a bare symbol node.\n var symNode = checkSymbolNodeType(args[0]);\n var colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n var cols = colalign.map(function (nde) {\n var node = assertSymbolNodeType(nde);\n var ca = node.text;\n if (\"lcr\".includes(ca)) {\n return {\n type: \"align\",\n align: ca\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\"\n };\n } else if (ca === \":\") {\n return {\n type: \"separator\",\n separator: \":\"\n };\n }\n throw new ParseError(\"Unknown column alignment: \" + ca, nde);\n });\n var res = {\n cols,\n hskipBeforeAndAfter: true,\n // \\@preamble in lttab.dtx\n maxNumCols: cols.length\n };\n return parseArray(context.parser, res, dCellStyle(context.envName));\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\n// The mathtools package adds starred versions of the same environments.\n// These have an optional argument to choose left|center|right justification.\ndefineEnvironment({\n type: \"array\",\n names: [\"matrix\", \"pmatrix\", \"bmatrix\", \"Bmatrix\", \"vmatrix\", \"Vmatrix\", \"matrix*\", \"pmatrix*\", \"bmatrix*\", \"Bmatrix*\", \"vmatrix*\", \"Vmatrix*\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n var delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"]\n }[context.envName.replace(\"*\", \"\")];\n // \\hskip -\\arraycolsep in amsmath\n var colAlign = \"c\";\n var payload = {\n hskipBeforeAndAfter: false,\n cols: [{\n type: \"align\",\n align: colAlign\n }]\n };\n if (context.envName.charAt(context.envName.length - 1) === \"*\") {\n // It's one of the mathtools starred functions.\n // Parse the optional alignment argument.\n var parser = context.parser;\n parser.consumeSpaces();\n if (parser.fetch().text === \"[\") {\n parser.consume();\n parser.consumeSpaces();\n colAlign = parser.fetch().text;\n if (!\"lcr\".includes(colAlign)) {\n throw new ParseError(\"Expected l or c or r\", parser.nextToken);\n }\n parser.consume();\n parser.consumeSpaces();\n parser.expect(\"]\");\n parser.consume();\n payload.cols = [{\n type: \"align\",\n align: colAlign\n }];\n }\n }\n var res = parseArray(context.parser, payload, dCellStyle(context.envName));\n // Populate cols with the correct number of column alignment specs.\n var numCols = Math.max(0, ...res.body.map(row => row.length));\n res.cols = new Array(numCols).fill({\n type: \"align\",\n align: colAlign\n });\n return delimiters ? {\n type: \"leftright\",\n mode: context.mode,\n body: [res],\n left: delimiters[0],\n right: delimiters[1],\n rightColor: undefined // \\right uninfluenced by \\color in array\n } : res;\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"smallmatrix\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n var payload = {\n arraystretch: 0.5\n };\n var res = parseArray(context.parser, payload, \"script\");\n res.colSeparationType = \"small\";\n return res;\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"subarray\"],\n props: {\n numArgs: 1\n },\n handler(context, args) {\n // Parsing of {subarray} is similar to {array}\n var symNode = checkSymbolNodeType(args[0]);\n var colalign = symNode ? [args[0]] : assertNodeType(args[0], \"ordgroup\").body;\n var cols = colalign.map(function (nde) {\n var node = assertSymbolNodeType(nde);\n var ca = node.text;\n // {subarray} only recognizes \"l\" & \"c\"\n if (\"lc\".includes(ca)) {\n return {\n type: \"align\",\n align: ca\n };\n }\n throw new ParseError(\"Unknown column alignment: \" + ca, nde);\n });\n if (cols.length > 1) {\n throw new ParseError(\"{subarray} can contain only one column\");\n }\n var payload = {\n cols,\n hskipBeforeAndAfter: false,\n arraystretch: 0.5\n };\n var res = parseArray(context.parser, payload, \"script\");\n if (res.body.length > 0 && res.body[0].length > 1) {\n throw new ParseError(\"{subarray} can contain only one column\");\n }\n return res;\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} \u2026 \\end{array}\\right.\n// {dcases} is a {cases} environment where cells are set in \\displaystyle,\n// as defined in mathtools.sty.\n// {rcases} is another mathtools environment. It's brace is on the right side.\ndefineEnvironment({\n type: \"array\",\n names: [\"cases\", \"dcases\", \"rcases\", \"drcases\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n var payload = {\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n // TODO(kevinb) get the current style.\n // For now we use the metrics for TEXT style which is what we were\n // doing before. Before attempting to get the current style we\n // should look at TeX's behavior especially for \\over and matrices.\n postgap: 1.0 /* 1em quad */\n }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0\n }]\n };\n var res = parseArray(context.parser, payload, dCellStyle(context.envName));\n return {\n type: \"leftright\",\n mode: context.mode,\n body: [res],\n left: context.envName.includes(\"r\") ? \".\" : \"\\\\{\",\n right: context.envName.includes(\"r\") ? \"\\\\}\" : \".\",\n rightColor: undefined\n };\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// In the align environment, one uses ampersands, &, to specify number of\n// columns in each row, and to locate spacing between each column.\n// align gets automatic numbering. align* and aligned do not.\n// The alignedat environment can be used in math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\ndefineEnvironment({\n type: \"array\",\n names: [\"align\", \"align*\", \"aligned\", \"split\"],\n props: {\n numArgs: 0\n },\n handler: alignedHandler,\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// A gathered environment is like an array environment with one centered\n// column, but where rows are considered lines so get \\jot line spacing\n// and contents are set in \\displaystyle.\ndefineEnvironment({\n type: \"array\",\n names: [\"gathered\", \"gather\", \"gather*\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n if (gatherEnvironments.has(context.envName)) {\n validateAmsEnvironmentContext(context);\n }\n var res = {\n cols: [{\n type: \"align\",\n align: \"c\"\n }],\n addJot: true,\n colSeparationType: \"gather\",\n autoTag: getAutoTag(context.envName),\n emptySingleRow: true,\n leqno: context.parser.settings.leqno\n };\n return parseArray(context.parser, res, \"display\");\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\n// alignat environment is like an align environment, but one must explicitly\n// specify maximum number of columns in each row, and can adjust spacing between\n// each columns.\ndefineEnvironment({\n type: \"array\",\n names: [\"alignat\", \"alignat*\", \"alignedat\"],\n props: {\n numArgs: 1\n },\n handler: alignedHandler,\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"equation\", \"equation*\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n validateAmsEnvironmentContext(context);\n var res = {\n autoTag: getAutoTag(context.envName),\n emptySingleRow: true,\n singleRow: true,\n maxNumCols: 1,\n leqno: context.parser.settings.leqno\n };\n return parseArray(context.parser, res, \"display\");\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineEnvironment({\n type: \"array\",\n names: [\"CD\"],\n props: {\n numArgs: 0\n },\n handler(context) {\n validateAmsEnvironmentContext(context);\n return parseCD(context.parser);\n },\n htmlBuilder: htmlBuilder$6,\n mathmlBuilder: mathmlBuilder$5\n});\ndefineMacro(\"\\\\nonumber\", \"\\\\gdef\\\\@eqnsw{0}\");\ndefineMacro(\"\\\\notag\", \"\\\\nonumber\");\n// Catch \\hline outside array environment\ndefineFunction({\n type: \"text\",\n // Doesn't matter what this is.\n names: [\"\\\\hline\", \"\\\\hdashline\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: true\n },\n handler(context, args) {\n throw new ParseError(context.funcName + \" valid only within array environment\");\n }\n});\n\nvar environments = _environments;\n\n// Environment delimiters. HTML/MathML rendering is defined in the corresponding\n// defineEnvironment definitions.\ndefineFunction({\n type: \"environment\",\n names: [\"\\\\begin\", \"\\\\end\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"]\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var nameGroup = args[0];\n if (nameGroup.type !== \"ordgroup\") {\n throw new ParseError(\"Invalid environment name\", nameGroup);\n }\n var envName = \"\";\n for (var i = 0; i < nameGroup.body.length; ++i) {\n envName += assertNodeType(nameGroup.body[i], \"textord\").text;\n }\n if (funcName === \"\\\\begin\") {\n // begin...end is similar to left...right\n if (!environments.hasOwnProperty(envName)) {\n throw new ParseError(\"No such environment: \" + envName, nameGroup);\n }\n // Build the environment object. Arguments and other information will\n // be made available to the begin and end methods using properties.\n var env = environments[envName];\n var {\n args: _args,\n optArgs\n } = parser.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n var context = {\n mode: parser.mode,\n envName,\n parser\n };\n var result = env.handler(context, _args, optArgs);\n parser.expect(\"\\\\end\", false);\n var endNameToken = parser.nextToken;\n var end = assertNodeType(parser.parseFunction(), \"environment\");\n if (end.name !== envName) {\n throw new ParseError(\"Mismatch: \\\\begin{\" + envName + \"} matched by \\\\end{\" + end.name + \"}\", endNameToken);\n }\n // TODO(ts), \"environment\" handler returns an environment ParseNode\n return result;\n }\n return {\n type: \"environment\",\n mode: parser.mode,\n name: envName,\n nameGroup\n };\n }\n});\n\n// TODO(kevinb): implement \\\\sl and \\\\sc\nvar htmlBuilder$5 = (group, options) => {\n var font = group.font;\n var newOptions = options.withFont(font);\n return buildGroup$1(group.body, newOptions);\n};\nvar mathmlBuilder$4 = (group, options) => {\n var font = group.font;\n var newOptions = options.withFont(font);\n return buildGroup(group.body, newOptions);\n};\nvar fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\",\n \"\\\\bm\": \"\\\\boldsymbol\"\n};\ndefineFunction({\n type: \"font\",\n names: [\n // styles, except \\boldsymbol defined below\n \"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\", \"\\\\mathnormal\", \"\\\\mathsfit\",\n // families\n \"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\", \"\\\\mathtt\",\n // aliases, except \\bm defined below\n \"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\"],\n props: {\n numArgs: 1,\n allowedInArgument: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var body = normalizeArgument(args[0]);\n var func = funcName;\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n return {\n type: \"font\",\n mode: parser.mode,\n font: func.slice(1),\n body\n };\n },\n htmlBuilder: htmlBuilder$5,\n mathmlBuilder: mathmlBuilder$4\n});\ndefineFunction({\n type: \"mclass\",\n names: [\"\\\\boldsymbol\", \"\\\\bm\"],\n props: {\n numArgs: 1\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var body = args[0];\n // amsbsy.sty's \\boldsymbol uses \\binrel spacing to inherit the\n // argument's bin|rel|ord status\n return {\n type: \"mclass\",\n mode: parser.mode,\n mclass: binrelClass(body),\n body: [{\n type: \"font\",\n mode: parser.mode,\n font: \"boldsymbol\",\n body\n }],\n isCharacterBox: isCharacterBox(body)\n };\n }\n});\n// Old font changing functions\ndefineFunction({\n type: \"font\",\n names: [\"\\\\rm\", \"\\\\sf\", \"\\\\tt\", \"\\\\bf\", \"\\\\it\", \"\\\\cal\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler: (_ref3, args) => {\n var {\n parser,\n funcName,\n breakOnTokenText\n } = _ref3;\n var {\n mode\n } = parser;\n var body = parser.parseExpression(true, breakOnTokenText);\n var style = \"math\" + funcName.slice(1);\n return {\n type: \"font\",\n mode: mode,\n font: style,\n body: {\n type: \"ordgroup\",\n mode: parser.mode,\n body\n }\n };\n },\n htmlBuilder: htmlBuilder$5,\n mathmlBuilder: mathmlBuilder$4\n});\n\nvar htmlBuilder$4 = (group, options) => {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n var style = options.style;\n var nstyle = style.fracNum();\n var dstyle = style.fracDen();\n var newOptions;\n newOptions = options.havingStyle(nstyle);\n var numerm = buildGroup$1(group.numer, newOptions, options);\n if (group.continued) {\n // \\cfrac inserts a \\strut into the numerator.\n // Get \\strut dimensions from TeXbook page 353.\n var hStrut = 8.5 / options.fontMetrics().ptPerEm;\n var dStrut = 3.5 / options.fontMetrics().ptPerEm;\n numerm.height = numerm.height < hStrut ? hStrut : numerm.height;\n numerm.depth = numerm.depth < dStrut ? dStrut : numerm.depth;\n }\n newOptions = options.havingStyle(dstyle);\n var denomm = buildGroup$1(group.denom, newOptions, options);\n var rule;\n var ruleWidth;\n var ruleSpacing;\n if (group.hasBarLine) {\n if (group.barSize) {\n ruleWidth = calculateSize(group.barSize, options);\n rule = makeLineSpan(\"frac-line\", options, ruleWidth);\n } else {\n rule = makeLineSpan(\"frac-line\", options);\n }\n ruleWidth = rule.height;\n ruleSpacing = rule.height;\n } else {\n rule = null;\n ruleWidth = 0;\n ruleSpacing = options.fontMetrics().defaultRuleThickness;\n }\n // Rule 15b\n var numShift;\n var clearance;\n var denomShift;\n if (style.size === Style$1.DISPLAY.size) {\n numShift = options.fontMetrics().num1;\n if (ruleWidth > 0) {\n clearance = 3 * ruleSpacing;\n } else {\n clearance = 7 * ruleSpacing;\n }\n denomShift = options.fontMetrics().denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = options.fontMetrics().num2;\n clearance = ruleSpacing;\n } else {\n numShift = options.fontMetrics().num3;\n clearance = 3 * ruleSpacing;\n }\n denomShift = options.fontMetrics().denom2;\n }\n var frac;\n if (!rule) {\n // Rule 15c\n var candidateClearance = numShift - numerm.depth - (denomm.height - denomShift);\n if (candidateClearance < clearance) {\n numShift += 0.5 * (clearance - candidateClearance);\n denomShift += 0.5 * (clearance - candidateClearance);\n }\n frac = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: denomm,\n shift: denomShift\n }, {\n type: \"elem\",\n elem: numerm,\n shift: -numShift\n }]\n });\n } else {\n // Rule 15d\n var axisHeight = options.fontMetrics().axisHeight;\n if (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth) < clearance) {\n numShift += clearance - (numShift - numerm.depth - (axisHeight + 0.5 * ruleWidth));\n }\n if (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift) < clearance) {\n denomShift += clearance - (axisHeight - 0.5 * ruleWidth - (denomm.height - denomShift));\n }\n var midShift = -(axisHeight - 0.5 * ruleWidth);\n frac = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: denomm,\n shift: denomShift\n }, {\n type: \"elem\",\n elem: rule,\n shift: midShift\n }, {\n type: \"elem\",\n elem: numerm,\n shift: -numShift\n }]\n });\n }\n // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n newOptions = options.havingStyle(style);\n frac.height *= newOptions.sizeMultiplier / options.sizeMultiplier;\n frac.depth *= newOptions.sizeMultiplier / options.sizeMultiplier;\n // Rule 15e\n var delimSize;\n if (style.size === Style$1.DISPLAY.size) {\n delimSize = options.fontMetrics().delim1;\n } else if (style.size === Style$1.SCRIPTSCRIPT.size) {\n delimSize = options.havingStyle(Style$1.SCRIPT).fontMetrics().delim2;\n } else {\n delimSize = options.fontMetrics().delim2;\n }\n var leftDelim;\n var rightDelim;\n if (group.leftDelim == null) {\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n leftDelim = makeCustomSizedDelim(group.leftDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mopen\"]);\n }\n if (group.continued) {\n rightDelim = makeSpan([]); // zero width for \\cfrac\n } else if (group.rightDelim == null) {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = makeCustomSizedDelim(group.rightDelim, delimSize, true, options.havingStyle(style), group.mode, [\"mclose\"]);\n }\n return makeSpan([\"mord\"].concat(newOptions.sizingClasses(options)), [leftDelim, makeSpan([\"mfrac\"], [frac]), rightDelim], options);\n};\nvar mathmlBuilder$3 = (group, options) => {\n var node = new MathNode(\"mfrac\", [buildGroup(group.numer, options), buildGroup(group.denom, options)]);\n if (!group.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n } else if (group.barSize) {\n var ruleWidth = calculateSize(group.barSize, options);\n node.setAttribute(\"linethickness\", makeEm(ruleWidth));\n }\n if (group.leftDelim != null || group.rightDelim != null) {\n var withDelims = [];\n if (group.leftDelim != null) {\n var leftOp = new MathNode(\"mo\", [new TextNode(group.leftDelim.replace(\"\\\\\", \"\"))]);\n leftOp.setAttribute(\"fence\", \"true\");\n withDelims.push(leftOp);\n }\n withDelims.push(node);\n if (group.rightDelim != null) {\n var rightOp = new MathNode(\"mo\", [new TextNode(group.rightDelim.replace(\"\\\\\", \"\"))]);\n rightOp.setAttribute(\"fence\", \"true\");\n withDelims.push(rightOp);\n }\n return makeRow(withDelims);\n }\n return node;\n};\nvar wrapWithStyle = (frac, style) => {\n if (!style) {\n return frac;\n }\n var wrapper = {\n type: \"styling\",\n mode: frac.mode,\n style,\n body: [frac]\n };\n // @ts-ignore defineFunction handler needs to return ParseNode<\"genfrac\">\n return wrapper;\n};\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\cfrac\", \"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\", \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\", \"\\\\\\\\atopfrac\",\n // can\u2019t be entered directly\n \"\\\\\\\\bracefrac\", \"\\\\\\\\brackfrac\" // ditto\n ],\n props: {\n numArgs: 2,\n allowedInArgument: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var numer = args[0];\n var denom = args[1];\n var hasBarLine;\n var leftDelim = null;\n var rightDelim = null;\n switch (funcName) {\n case \"\\\\cfrac\":\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n case \"\\\\\\\\atopfrac\":\n hasBarLine = false;\n break;\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n case \"\\\\\\\\bracefrac\":\n hasBarLine = false;\n leftDelim = \"\\\\{\";\n rightDelim = \"\\\\}\";\n break;\n case \"\\\\\\\\brackfrac\":\n hasBarLine = false;\n leftDelim = \"[\";\n rightDelim = \"]\";\n break;\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n var continued = funcName === \"\\\\cfrac\";\n var style = null;\n if (continued || funcName.startsWith(\"\\\\d\")) {\n style = \"display\";\n } else if (funcName.startsWith(\"\\\\t\")) {\n style = \"text\";\n }\n return wrapWithStyle({\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued,\n hasBarLine,\n leftDelim,\n rightDelim,\n barSize: null\n }, style);\n },\n htmlBuilder: htmlBuilder$4,\n mathmlBuilder: mathmlBuilder$3\n});\n// Infix generalized fractions -- these are not rendered directly, but replaced\n// immediately by one of the variants above.\ndefineFunction({\n type: \"infix\",\n names: [\"\\\\over\", \"\\\\choose\", \"\\\\atop\", \"\\\\brace\", \"\\\\brack\"],\n props: {\n numArgs: 0,\n infix: true\n },\n handler(_ref2) {\n var {\n parser,\n funcName,\n token\n } = _ref2;\n var replaceWith;\n switch (funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n case \"\\\\atop\":\n replaceWith = \"\\\\\\\\atopfrac\";\n break;\n case \"\\\\brace\":\n replaceWith = \"\\\\\\\\bracefrac\";\n break;\n case \"\\\\brack\":\n replaceWith = \"\\\\\\\\brackfrac\";\n break;\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n return {\n type: \"infix\",\n mode: parser.mode,\n replaceWith,\n token\n };\n }\n});\nvar stylArray = [\"display\", \"text\", \"script\", \"scriptscript\"];\nvar delimFromValue = function delimFromValue(delimString) {\n var delim = null;\n if (delimString.length > 0) {\n delim = delimString;\n delim = delim === \".\" ? null : delim;\n }\n return delim;\n};\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\genfrac\"],\n props: {\n numArgs: 6,\n allowedInArgument: true,\n argTypes: [\"math\", \"math\", \"size\", \"text\", \"math\", \"math\"]\n },\n handler(_ref3, args) {\n var {\n parser\n } = _ref3;\n var numer = args[4];\n var denom = args[5];\n // Look into the parse nodes to get the desired delimiters.\n var leftNode = normalizeArgument(args[0]);\n var leftDelim = leftNode.type === \"atom\" && leftNode.family === \"open\" ? delimFromValue(leftNode.text) : null;\n var rightNode = normalizeArgument(args[1]);\n var rightDelim = rightNode.type === \"atom\" && rightNode.family === \"close\" ? delimFromValue(rightNode.text) : null;\n var barNode = assertNodeType(args[2], \"size\");\n var hasBarLine;\n var barSize = null;\n if (barNode.isBlank) {\n // \\genfrac acts differently than \\above.\n // \\genfrac treats an empty size group as a signal to use a\n // standard bar size. \\above would see size = 0 and omit the bar.\n hasBarLine = true;\n } else {\n barSize = barNode.value;\n hasBarLine = barSize.number > 0;\n }\n // Find out if we want displaystyle, textstyle, etc.\n var size = null;\n var styl = args[3];\n if (styl.type === \"ordgroup\") {\n if (styl.body.length > 0) {\n var textOrd = assertNodeType(styl.body[0], \"textord\");\n size = stylArray[Number(textOrd.text)];\n }\n } else {\n styl = assertNodeType(styl, \"textord\");\n size = stylArray[Number(styl.text)];\n }\n return wrapWithStyle({\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued: false,\n hasBarLine,\n barSize,\n leftDelim,\n rightDelim\n }, size);\n }\n});\n// \\above is an infix fraction that also defines a fraction bar size.\ndefineFunction({\n type: \"infix\",\n names: [\"\\\\above\"],\n props: {\n numArgs: 1,\n argTypes: [\"size\"],\n infix: true\n },\n handler(_ref4, args) {\n var {\n parser,\n funcName,\n token\n } = _ref4;\n return {\n type: \"infix\",\n mode: parser.mode,\n replaceWith: \"\\\\\\\\abovefrac\",\n size: assertNodeType(args[0], \"size\").value,\n token\n };\n }\n});\ndefineFunction({\n type: \"genfrac\",\n names: [\"\\\\\\\\abovefrac\"],\n props: {\n numArgs: 3,\n argTypes: [\"math\", \"size\", \"math\"]\n },\n handler: (_ref5, args) => {\n var {\n parser,\n funcName\n } = _ref5;\n var numer = args[0];\n var barSize = assertNodeType(args[1], \"infix\").size;\n if (!barSize) {\n throw new Error(\"\\\\\\\\abovefrac expected size, but got \" + String(barSize));\n }\n var denom = args[2];\n var hasBarLine = barSize.number > 0;\n return {\n type: \"genfrac\",\n mode: parser.mode,\n numer,\n denom,\n continued: false,\n hasBarLine,\n barSize,\n leftDelim: null,\n rightDelim: null\n };\n }\n});\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"horizBrace\", but\n// also \"supsub\" since an over/underbrace can affect super/subscripting.\nvar htmlBuilder$3 = (grp, options) => {\n var style = options.style;\n // Pull out the `ParseNode<\"horizBrace\">` if `grp` is a \"supsub\" node.\n var supSubGroup;\n var group;\n if (grp.type === \"supsub\") {\n // Ref: LaTeX source2e: }}}}\\limits}\n // i.e. LaTeX treats the brace similar to an op and passes it\n // with \\limits, so we need to assign supsub style.\n supSubGroup = grp.sup ? buildGroup$1(grp.sup, options.havingStyle(style.sup()), options) : buildGroup$1(grp.sub, options.havingStyle(style.sub()), options);\n group = assertNodeType(grp.base, \"horizBrace\");\n } else {\n group = assertNodeType(grp, \"horizBrace\");\n }\n // Build the base group\n var body = buildGroup$1(group.base, options.havingBaseStyle(Style$1.DISPLAY));\n // Create the stretchy element\n var braceBody = stretchySvg(group, options);\n // Generate the vlist, with the appropriate kerns \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n // This first vlist contains the content and the brace: equation\n var vlist;\n if (group.isOver) {\n vlist = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: body\n }, {\n type: \"kern\",\n size: 0.1\n }, {\n type: \"elem\",\n elem: braceBody\n }]\n });\n // TODO(ts): Replace this with passing \"svg-align\" into makeVList.\n vlist.children[0].children[0].children[1].classes.push(\"svg-align\");\n } else {\n vlist = makeVList({\n positionType: \"bottom\",\n positionData: body.depth + 0.1 + braceBody.height,\n children: [{\n type: \"elem\",\n elem: braceBody\n }, {\n type: \"kern\",\n size: 0.1\n }, {\n type: \"elem\",\n elem: body\n }]\n });\n // TODO(ts): Replace this with passing \"svg-align\" into makeVList.\n vlist.children[0].children[0].children[0].classes.push(\"svg-align\");\n }\n if (supSubGroup) {\n // To write the supsub, wrap the first vlist in another vlist:\n // They can't all go in the same vlist, because the note might be\n // wider than the equation. We want the equation to control the\n // brace width.\n // note long note long note\n // \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513 or \u250F\u2501\u2501\u2501\u2513 not \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n // equation eqn eqn\n var vSpan = makeSpan([\"minner\", group.isOver ? \"mover\" : \"munder\"], [vlist], options);\n if (group.isOver) {\n vlist = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: vSpan\n }, {\n type: \"kern\",\n size: 0.2\n }, {\n type: \"elem\",\n elem: supSubGroup\n }]\n });\n } else {\n vlist = makeVList({\n positionType: \"bottom\",\n positionData: vSpan.depth + 0.2 + supSubGroup.height + supSubGroup.depth,\n children: [{\n type: \"elem\",\n elem: supSubGroup\n }, {\n type: \"kern\",\n size: 0.2\n }, {\n type: \"elem\",\n elem: vSpan\n }]\n });\n }\n }\n return makeSpan([\"minner\", group.isOver ? \"mover\" : \"munder\"], [vlist], options);\n};\nvar mathmlBuilder$2 = (group, options) => {\n var accentNode = stretchyMathML(group.label);\n return new MathNode(group.isOver ? \"mover\" : \"munder\", [buildGroup(group.base, options), accentNode]);\n};\n// Horizontal stretchy braces\ndefineFunction({\n type: \"horizBrace\",\n names: [\"\\\\overbrace\", \"\\\\underbrace\", \"\\\\overbracket\", \"\\\\underbracket\"],\n props: {\n numArgs: 1\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n return {\n type: \"horizBrace\",\n mode: parser.mode,\n label: funcName,\n isOver: funcName.includes(\"\\\\over\"),\n base: args[0]\n };\n },\n htmlBuilder: htmlBuilder$3,\n mathmlBuilder: mathmlBuilder$2\n});\n\ndefineFunction({\n type: \"href\",\n names: [\"\\\\href\"],\n props: {\n numArgs: 2,\n argTypes: [\"url\", \"original\"],\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n var body = args[1];\n var href = assertNodeType(args[0], \"url\").url;\n if (!parser.settings.isTrusted({\n command: \"\\\\href\",\n url: href\n })) {\n return parser.formatUnsupportedCmd(\"\\\\href\");\n }\n return {\n type: \"href\",\n mode: parser.mode,\n href,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.body, options, false);\n return makeAnchor(group.href, [], elements, options);\n },\n mathmlBuilder: (group, options) => {\n var math = buildExpressionRow(group.body, options);\n if (!(math instanceof MathNode)) {\n math = new MathNode(\"mrow\", [math]);\n }\n math.setAttribute(\"href\", group.href);\n return math;\n }\n});\ndefineFunction({\n type: \"href\",\n names: [\"\\\\url\"],\n props: {\n numArgs: 1,\n argTypes: [\"url\"],\n allowedInText: true\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var href = assertNodeType(args[0], \"url\").url;\n if (!parser.settings.isTrusted({\n command: \"\\\\url\",\n url: href\n })) {\n return parser.formatUnsupportedCmd(\"\\\\url\");\n }\n var chars = [];\n for (var i = 0; i < href.length; i++) {\n var c = href[i];\n if (c === \"~\") {\n c = \"\\\\textasciitilde\";\n }\n chars.push({\n type: \"textord\",\n mode: \"text\",\n text: c\n });\n }\n var body = {\n type: \"text\",\n mode: parser.mode,\n font: \"\\\\texttt\",\n body: chars\n };\n return {\n type: \"href\",\n mode: parser.mode,\n href,\n body: ordargument(body)\n };\n }\n});\n\n// \\hbox is provided for compatibility with LaTeX \\vcenter.\n// In LaTeX, \\vcenter can act only on a box, as in\n// \\vcenter{\\hbox{$\\frac{a+b}{\\dfrac{c}{d}}$}}\n// This function by itself doesn't do anything but prevent a soft line break.\ndefineFunction({\n type: \"hbox\",\n names: [\"\\\\hbox\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"],\n allowedInText: true,\n primitive: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"hbox\",\n mode: parser.mode,\n body: ordargument(args[0])\n };\n },\n htmlBuilder(group, options) {\n var elements = buildExpression$1(group.body, options, false);\n return makeFragment(elements);\n },\n mathmlBuilder(group, options) {\n return new MathNode(\"mrow\", buildExpression(group.body, options));\n }\n});\n\ndefineFunction({\n type: \"html\",\n names: [\"\\\\htmlClass\", \"\\\\htmlId\", \"\\\\htmlStyle\", \"\\\\htmlData\"],\n props: {\n numArgs: 2,\n argTypes: [\"raw\", \"original\"],\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName,\n token\n } = _ref;\n var value = assertNodeType(args[0], \"raw\").string;\n var body = args[1];\n if (parser.settings.strict) {\n parser.settings.reportNonstrict(\"htmlExtension\", \"HTML extension is disabled on strict mode\");\n }\n var trustContext;\n var attributes = {};\n switch (funcName) {\n case \"\\\\htmlClass\":\n attributes.class = value;\n trustContext = {\n command: \"\\\\htmlClass\",\n class: value\n };\n break;\n case \"\\\\htmlId\":\n attributes.id = value;\n trustContext = {\n command: \"\\\\htmlId\",\n id: value\n };\n break;\n case \"\\\\htmlStyle\":\n attributes.style = value;\n trustContext = {\n command: \"\\\\htmlStyle\",\n style: value\n };\n break;\n case \"\\\\htmlData\":\n {\n var data = value.split(\",\");\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n var firstEquals = item.indexOf(\"=\");\n if (firstEquals < 0) {\n throw new ParseError(\"\\\\htmlData key/value '\" + item + \"'\" + \" missing equals sign\");\n }\n var key = item.slice(0, firstEquals);\n var _value = item.slice(firstEquals + 1);\n attributes[\"data-\" + key.trim()] = _value;\n }\n trustContext = {\n command: \"\\\\htmlData\",\n attributes\n };\n break;\n }\n default:\n throw new Error(\"Unrecognized html command\");\n }\n if (!parser.settings.isTrusted(trustContext)) {\n return parser.formatUnsupportedCmd(funcName);\n }\n return {\n type: \"html\",\n mode: parser.mode,\n attributes,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.body, options, false);\n var classes = [\"enclosing\"];\n if (group.attributes.class) {\n classes.push(...group.attributes.class.trim().split(/\\s+/));\n }\n var span = makeSpan(classes, elements, options);\n for (var attr in group.attributes) {\n if (attr !== \"class\" && group.attributes.hasOwnProperty(attr)) {\n span.setAttribute(attr, group.attributes[attr]);\n }\n }\n return span;\n },\n mathmlBuilder: (group, options) => {\n return buildExpressionRow(group.body, options);\n }\n});\n\ndefineFunction({\n type: \"htmlmathml\",\n names: [\"\\\\html@mathml\"],\n props: {\n numArgs: 2,\n allowedInArgument: true,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n return {\n type: \"htmlmathml\",\n mode: parser.mode,\n html: ordargument(args[0]),\n mathml: ordargument(args[1])\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.html, options, false);\n return makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n return buildExpressionRow(group.mathml, options);\n }\n});\n\nvar sizeData = function sizeData(str) {\n if (/^[-+]? *(\\d+(\\.\\d*)?|\\.\\d+)$/.test(str)) {\n // str is a number with no unit specified.\n // default unit is bp, per graphix package.\n return {\n number: +str,\n unit: \"bp\"\n };\n } else {\n var match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(str);\n if (!match) {\n throw new ParseError(\"Invalid size: '\" + str + \"' in \\\\includegraphics\");\n }\n var data = {\n number: +(match[1] + match[2]),\n // sign + magnitude, cast to number\n unit: match[3]\n };\n if (!validUnit(data)) {\n throw new ParseError(\"Invalid unit: '\" + data.unit + \"' in \\\\includegraphics.\");\n }\n return data;\n }\n};\ndefineFunction({\n type: \"includegraphics\",\n names: [\"\\\\includegraphics\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1,\n argTypes: [\"raw\", \"url\"],\n allowedInText: false\n },\n handler: (_ref, args, optArgs) => {\n var {\n parser\n } = _ref;\n var width = {\n number: 0,\n unit: \"em\"\n };\n var height = {\n number: 0.9,\n unit: \"em\"\n }; // sorta character sized.\n var totalheight = {\n number: 0,\n unit: \"em\"\n };\n var alt = \"\";\n if (optArgs[0]) {\n var attributeStr = assertNodeType(optArgs[0], \"raw\").string;\n // Parser.js does not parse key/value pairs. We get a string.\n var attributes = attributeStr.split(\",\");\n for (var i = 0; i < attributes.length; i++) {\n var keyVal = attributes[i].split(\"=\");\n if (keyVal.length === 2) {\n var str = keyVal[1].trim();\n switch (keyVal[0].trim()) {\n case \"alt\":\n alt = str;\n break;\n case \"width\":\n width = sizeData(str);\n break;\n case \"height\":\n height = sizeData(str);\n break;\n case \"totalheight\":\n totalheight = sizeData(str);\n break;\n default:\n throw new ParseError(\"Invalid key: '\" + keyVal[0] + \"' in \\\\includegraphics.\");\n }\n }\n }\n }\n var src = assertNodeType(args[0], \"url\").url;\n if (alt === \"\") {\n // No alt given. Use the file name. Strip away the path.\n alt = src;\n alt = alt.replace(/^.*[\\\\/]/, '');\n alt = alt.substring(0, alt.lastIndexOf('.'));\n }\n if (!parser.settings.isTrusted({\n command: \"\\\\includegraphics\",\n url: src\n })) {\n return parser.formatUnsupportedCmd(\"\\\\includegraphics\");\n }\n return {\n type: \"includegraphics\",\n mode: parser.mode,\n alt: alt,\n width: width,\n height: height,\n totalheight: totalheight,\n src: src\n };\n },\n htmlBuilder: (group, options) => {\n var height = calculateSize(group.height, options);\n var depth = 0;\n if (group.totalheight.number > 0) {\n depth = calculateSize(group.totalheight, options) - height;\n }\n var width = 0;\n if (group.width.number > 0) {\n width = calculateSize(group.width, options);\n }\n var style = {\n height: makeEm(height + depth)\n };\n if (width > 0) {\n style.width = makeEm(width);\n }\n if (depth > 0) {\n style.verticalAlign = makeEm(-depth);\n }\n var node = new Img(group.src, group.alt, style);\n node.height = height;\n node.depth = depth;\n return node;\n },\n mathmlBuilder: (group, options) => {\n var node = new MathNode(\"mglyph\", []);\n node.setAttribute(\"alt\", group.alt);\n var height = calculateSize(group.height, options);\n var depth = 0;\n if (group.totalheight.number > 0) {\n depth = calculateSize(group.totalheight, options) - height;\n node.setAttribute(\"valign\", makeEm(-depth));\n }\n node.setAttribute(\"height\", makeEm(height + depth));\n if (group.width.number > 0) {\n var width = calculateSize(group.width, options);\n node.setAttribute(\"width\", makeEm(width));\n }\n node.setAttribute(\"src\", group.src);\n return node;\n }\n});\n\n// Horizontal spacing commands\n// TODO: \\hskip and \\mskip should support plus and minus in lengths\ndefineFunction({\n type: \"kern\",\n names: [\"\\\\kern\", \"\\\\mkern\", \"\\\\hskip\", \"\\\\mskip\"],\n props: {\n numArgs: 1,\n argTypes: [\"size\"],\n primitive: true,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var size = assertNodeType(args[0], \"size\");\n if (parser.settings.strict) {\n var mathFunction = funcName[1] === 'm'; // \\mkern, \\mskip\n var muUnit = size.value.unit === 'mu';\n if (mathFunction) {\n if (!muUnit) {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" supports only mu units, \" + (\"not \" + size.value.unit + \" units\"));\n }\n if (parser.mode !== \"math\") {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" works only in math mode\");\n }\n } else {\n // !mathFunction\n if (muUnit) {\n parser.settings.reportNonstrict(\"mathVsTextUnits\", \"LaTeX's \" + funcName + \" doesn't support mu units\");\n }\n }\n }\n return {\n type: \"kern\",\n mode: parser.mode,\n dimension: size.value\n };\n },\n htmlBuilder(group, options) {\n return makeGlue(group.dimension, options);\n },\n mathmlBuilder(group, options) {\n var dimension = calculateSize(group.dimension, options);\n return new SpaceNode(dimension);\n }\n});\n\n// Horizontal overlap functions\ndefineFunction({\n type: \"lap\",\n names: [\"\\\\mathllap\", \"\\\\mathrlap\", \"\\\\mathclap\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"lap\",\n mode: parser.mode,\n alignment: funcName.slice(5),\n body\n };\n },\n htmlBuilder: (group, options) => {\n // mathllap, mathrlap, mathclap\n var inner;\n if (group.alignment === \"clap\") {\n // ref: https://www.math.lsu.edu/~aperlis/publications/mathclap/\n inner = makeSpan([], [buildGroup$1(group.body, options)]);\n // wrap, since CSS will center a .clap > .inner > span\n inner = makeSpan([\"inner\"], [inner], options);\n } else {\n inner = makeSpan([\"inner\"], [buildGroup$1(group.body, options)]);\n }\n var fix = makeSpan([\"fix\"], []);\n var node = makeSpan([group.alignment], [inner, fix], options);\n // At this point, we have correctly set horizontal alignment of the\n // two items involved in the lap.\n // Next, use a strut to set the height of the HTML bounding box.\n // Otherwise, a tall argument may be misplaced.\n // This code resolved issue #1153\n var strut = makeSpan([\"strut\"]);\n strut.style.height = makeEm(node.height + node.depth);\n if (node.depth) {\n strut.style.verticalAlign = makeEm(-node.depth);\n }\n node.children.unshift(strut);\n // Next, prevent vertical misplacement when next to something tall.\n // This code resolves issue #1234\n node = makeSpan([\"thinbox\"], [node], options);\n return makeSpan([\"mord\", \"vbox\"], [node], options);\n },\n mathmlBuilder: (group, options) => {\n // mathllap, mathrlap, mathclap\n var node = new MathNode(\"mpadded\", [buildGroup(group.body, options)]);\n if (group.alignment !== \"rlap\") {\n var offset = group.alignment === \"llap\" ? \"-1\" : \"-0.5\";\n node.setAttribute(\"lspace\", offset + \"width\");\n }\n node.setAttribute(\"width\", \"0px\");\n return node;\n }\n});\n\n// Switching from text mode back to math mode\ndefineFunction({\n type: \"styling\",\n names: [\"\\\\(\", \"$\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: false\n },\n handler(_ref, args) {\n var {\n funcName,\n parser\n } = _ref;\n var outerMode = parser.mode;\n parser.switchMode(\"math\");\n var close = funcName === \"\\\\(\" ? \"\\\\)\" : \"$\";\n var body = parser.parseExpression(false, close);\n parser.expect(close);\n parser.switchMode(outerMode);\n return {\n type: \"styling\",\n mode: parser.mode,\n style: \"text\",\n body\n };\n }\n});\n// Check for extra closing math delimiters\ndefineFunction({\n type: \"text\",\n // Doesn't matter what this is.\n names: [\"\\\\)\", \"\\\\]\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInMath: false\n },\n handler(context, args) {\n throw new ParseError(\"Mismatched \" + context.funcName);\n }\n});\n\nvar chooseMathStyle = (group, options) => {\n switch (options.style.size) {\n case Style$1.DISPLAY.size:\n return group.display;\n case Style$1.TEXT.size:\n return group.text;\n case Style$1.SCRIPT.size:\n return group.script;\n case Style$1.SCRIPTSCRIPT.size:\n return group.scriptscript;\n default:\n return group.text;\n }\n};\ndefineFunction({\n type: \"mathchoice\",\n names: [\"\\\\mathchoice\"],\n props: {\n numArgs: 4,\n primitive: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n return {\n type: \"mathchoice\",\n mode: parser.mode,\n display: ordargument(args[0]),\n text: ordargument(args[1]),\n script: ordargument(args[2]),\n scriptscript: ordargument(args[3])\n };\n },\n htmlBuilder: (group, options) => {\n var body = chooseMathStyle(group, options);\n var elements = buildExpression$1(body, options, false);\n return makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n var body = chooseMathStyle(group, options);\n return buildExpressionRow(body, options);\n }\n});\n\n// For an operator with limits, assemble the base, sup, and sub into a span.\nvar assembleSupSub = (base, supGroup, subGroup, options, style, slant, baseShift) => {\n base = makeSpan([], [base]);\n var subIsSingleCharacter = subGroup && isCharacterBox(subGroup);\n var sub;\n var sup;\n // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n if (supGroup) {\n var elem = buildGroup$1(supGroup, options.havingStyle(style.sup()), options);\n sup = {\n elem,\n kern: Math.max(options.fontMetrics().bigOpSpacing1, options.fontMetrics().bigOpSpacing3 - elem.depth)\n };\n }\n if (subGroup) {\n var _elem = buildGroup$1(subGroup, options.havingStyle(style.sub()), options);\n sub = {\n elem: _elem,\n kern: Math.max(options.fontMetrics().bigOpSpacing2, options.fontMetrics().bigOpSpacing4 - _elem.height)\n };\n }\n // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n var finalGroup;\n if (sup && sub) {\n var bottom = options.fontMetrics().bigOpSpacing5 + sub.elem.height + sub.elem.depth + sub.kern + base.depth + baseShift;\n finalGroup = makeVList({\n positionType: \"bottom\",\n positionData: bottom,\n children: [{\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }, {\n type: \"elem\",\n elem: sub.elem,\n marginLeft: makeEm(-slant)\n }, {\n type: \"kern\",\n size: sub.kern\n }, {\n type: \"elem\",\n elem: base\n }, {\n type: \"kern\",\n size: sup.kern\n }, {\n type: \"elem\",\n elem: sup.elem,\n marginLeft: makeEm(slant)\n }, {\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }]\n });\n } else if (sub) {\n var top = base.height - baseShift;\n // Shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n finalGroup = makeVList({\n positionType: \"top\",\n positionData: top,\n children: [{\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }, {\n type: \"elem\",\n elem: sub.elem,\n marginLeft: makeEm(-slant)\n }, {\n type: \"kern\",\n size: sub.kern\n }, {\n type: \"elem\",\n elem: base\n }]\n });\n } else if (sup) {\n var _bottom = base.depth + baseShift;\n finalGroup = makeVList({\n positionType: \"bottom\",\n positionData: _bottom,\n children: [{\n type: \"elem\",\n elem: base\n }, {\n type: \"kern\",\n size: sup.kern\n }, {\n type: \"elem\",\n elem: sup.elem,\n marginLeft: makeEm(slant)\n }, {\n type: \"kern\",\n size: options.fontMetrics().bigOpSpacing5\n }]\n });\n } else {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n }\n var parts = [finalGroup];\n if (sub && slant !== 0 && !subIsSingleCharacter) {\n // A negative margin-left was applied to the lower limit.\n // Avoid an overlap by placing a spacer on the left on the group.\n var spacer = makeSpan([\"mspace\"], [], options);\n spacer.style.marginRight = makeEm(slant);\n parts.unshift(spacer);\n }\n return makeSpan([\"mop\", \"op-limits\"], parts, options);\n};\n\n// Limits, symbols\n// Most operators have a large successor symbol, but these don't.\nvar noSuccessor = new Set([\"\\\\smallint\"]);\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only \"op\", but also\n// \"supsub\" since some of them (like \\int) can affect super/subscripting.\nvar htmlBuilder$2 = (grp, options) => {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n var group;\n if (grp.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = grp.sup;\n subGroup = grp.sub;\n group = assertNodeType(grp.base, \"op\");\n hasLimits = true;\n } else {\n group = assertNodeType(grp, \"op\");\n }\n var style = options.style;\n var large = false;\n if (style.size === Style$1.DISPLAY.size && group.symbol && !noSuccessor.has(group.name)) {\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n var base;\n if (group.symbol) {\n // If this is a symbol, create the symbol.\n var fontName = large ? \"Size2-Regular\" : \"Size1-Regular\";\n var stash = \"\";\n if (group.name === \"\\\\oiint\" || group.name === \"\\\\oiiint\") {\n // No font glyphs yet, so use a glyph w/o the oval.\n // TODO: When font glyphs are available, delete this code.\n stash = group.name.slice(1);\n group.name = stash === \"oiint\" ? \"\\\\iint\" : \"\\\\iiint\";\n }\n base = makeSymbol(group.name, fontName, \"math\", options, [\"mop\", \"op-symbol\", large ? \"large-op\" : \"small-op\"]);\n if (stash.length > 0) {\n // We're in \\oiint or \\oiiint. Overlay the oval.\n // TODO: When font glyphs are available, delete this code.\n var italic = base.italic;\n var oval = staticSvg(stash + \"Size\" + (large ? \"2\" : \"1\"), options);\n base = makeVList({\n positionType: \"individualShift\",\n children: [{\n type: \"elem\",\n elem: base,\n shift: 0\n }, {\n type: \"elem\",\n elem: oval,\n shift: large ? 0.08 : 0\n }]\n });\n group.name = \"\\\\\" + stash;\n base.classes.unshift(\"mop\");\n // TODO(ts)\n base.italic = italic;\n }\n } else if (group.body) {\n // If this is a list, compose that list.\n var inner = buildExpression$1(group.body, options, true);\n if (inner.length === 1 && inner[0] instanceof SymbolNode) {\n base = inner[0];\n base.classes[0] = \"mop\"; // replace old mclass\n } else {\n base = makeSpan([\"mop\"], inner, options);\n }\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n var output = [];\n for (var i = 1; i < group.name.length; i++) {\n output.push(mathsym(group.name[i], group.mode, options));\n }\n base = makeSpan([\"mop\"], output, options);\n }\n // If content of op is a single symbol, shift it vertically.\n var baseShift = 0;\n var slant = 0;\n if ((base instanceof SymbolNode || group.name === \"\\\\oiint\" || group.name === \"\\\\oiiint\") && !group.suppressBaseShift) {\n // We suppress the shift of the base of \\overset and \\underset. Otherwise,\n // shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 - options.fontMetrics().axisHeight;\n // The slant of the symbol is just its italic correction.\n // TODO(ts)\n slant = base.italic || 0;\n }\n if (hasLimits) {\n return assembleSupSub(base, supGroup, subGroup, options, style, slant, baseShift);\n } else {\n if (baseShift) {\n base.style.position = \"relative\";\n base.style.top = makeEm(baseShift);\n }\n return base;\n }\n};\nvar mathmlBuilder$1 = (group, options) => {\n var node;\n if (group.symbol) {\n // This is a symbol. Just add the symbol.\n node = new MathNode(\"mo\", [makeText(group.name, group.mode)]);\n if (noSuccessor.has(group.name)) {\n node.setAttribute(\"largeop\", \"false\");\n }\n } else if (group.body) {\n // This is an operator with children. Add them.\n node = new MathNode(\"mo\", buildExpression(group.body, options));\n } else {\n // This is a text operator. Add all the characters from the\n // operator's name.\n node = new MathNode(\"mi\", [new TextNode(group.name.slice(1))]);\n // Append an <mo>⁡</mo>.\n // ref: https://www.w3.org/TR/REC-MathML/chap3_2.html#sec3.2.4\n var operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n if (group.parentIsSupSub) {\n node = new MathNode(\"mrow\", [node, operator]);\n } else {\n node = newDocumentFragment([node, operator]);\n }\n }\n return node;\n};\nvar singleCharBigOps = {\n \"\\u220F\": \"\\\\prod\",\n \"\\u2210\": \"\\\\coprod\",\n \"\\u2211\": \"\\\\sum\",\n \"\\u22c0\": \"\\\\bigwedge\",\n \"\\u22c1\": \"\\\\bigvee\",\n \"\\u22c2\": \"\\\\bigcap\",\n \"\\u22c3\": \"\\\\bigcup\",\n \"\\u2a00\": \"\\\\bigodot\",\n \"\\u2a01\": \"\\\\bigoplus\",\n \"\\u2a02\": \"\\\\bigotimes\",\n \"\\u2a04\": \"\\\\biguplus\",\n \"\\u2a06\": \"\\\\bigsqcup\"\n};\ndefineFunction({\n type: \"op\",\n 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\"],\n props: {\n numArgs: 0\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var fName = funcName;\n if (fName.length === 1) {\n fName = singleCharBigOps[fName];\n }\n return {\n type: \"op\",\n mode: parser.mode,\n limits: true,\n parentIsSupSub: false,\n symbol: true,\n name: fName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// Note: calling defineFunction with a type that's already been defined only\n// works because the same htmlBuilder and mathmlBuilder are being used.\ndefineFunction({\n type: \"op\",\n names: [\"\\\\mathop\"],\n props: {\n numArgs: 1,\n primitive: true\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var body = args[0];\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: false,\n body: ordargument(body)\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\nvar singleCharIntegrals = {\n \"\\u222b\": \"\\\\int\",\n \"\\u222c\": \"\\\\iint\",\n \"\\u222d\": \"\\\\iiint\",\n \"\\u222e\": \"\\\\oint\",\n \"\\u222f\": \"\\\\oiint\",\n \"\\u2230\": \"\\\\oiiint\"\n};\n// No limits, not symbols\ndefineFunction({\n type: \"op\",\n 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\"],\n props: {\n numArgs: 0\n },\n handler(_ref3) {\n var {\n parser,\n funcName\n } = _ref3;\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: false,\n name: funcName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// Limits, not symbols\ndefineFunction({\n type: \"op\",\n names: [\"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\max\", \"\\\\min\", \"\\\\Pr\", \"\\\\sup\"],\n props: {\n numArgs: 0\n },\n handler(_ref4) {\n var {\n parser,\n funcName\n } = _ref4;\n return {\n type: \"op\",\n mode: parser.mode,\n limits: true,\n parentIsSupSub: false,\n symbol: false,\n name: funcName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n// No limits, symbols\ndefineFunction({\n type: \"op\",\n names: [\"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\", \"\\\\oiint\", \"\\\\oiiint\", \"\\u222b\", \"\\u222c\", \"\\u222d\", \"\\u222e\", \"\\u222f\", \"\\u2230\"],\n props: {\n numArgs: 0,\n allowedInArgument: true\n },\n handler(_ref5) {\n var {\n parser,\n funcName\n } = _ref5;\n var fName = funcName;\n if (fName.length === 1) {\n fName = singleCharIntegrals[fName];\n }\n return {\n type: \"op\",\n mode: parser.mode,\n limits: false,\n parentIsSupSub: false,\n symbol: true,\n name: fName\n };\n },\n htmlBuilder: htmlBuilder$2,\n mathmlBuilder: mathmlBuilder$1\n});\n\n// NOTE: Unlike most `htmlBuilder`s, this one handles not only\n// \"operatorname\", but also \"supsub\" since \\operatorname* can\n// affect super/subscripting.\nvar htmlBuilder$1 = (grp, options) => {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n var group;\n if (grp.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = grp.sup;\n subGroup = grp.sub;\n group = assertNodeType(grp.base, \"operatorname\");\n hasLimits = true;\n } else {\n group = assertNodeType(grp, \"operatorname\");\n }\n var base;\n if (group.body.length > 0) {\n var body = group.body.map(child => {\n var childText = \"text\" in child ? child.text : undefined;\n if (typeof childText === \"string\") {\n return {\n type: \"textord\",\n mode: child.mode,\n text: childText\n };\n } else {\n return child;\n }\n });\n // Consolidate function names into symbol characters.\n var expression = buildExpression$1(body, options.withFont(\"mathrm\"), true);\n for (var i = 0; i < expression.length; i++) {\n var child = expression[i];\n if (child instanceof SymbolNode) {\n // Per amsopn package,\n // change minus to hyphen and \\ast to asterisk\n child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n }\n }\n base = makeSpan([\"mop\"], expression, options);\n } else {\n base = makeSpan([\"mop\"], [], options);\n }\n if (hasLimits) {\n return assembleSupSub(base, supGroup, subGroup, options, options.style, 0, 0);\n } else {\n return base;\n }\n};\nvar mathmlBuilder = (group, options) => {\n // The steps taken here are similar to the html version.\n var expression = buildExpression(group.body, options.withFont(\"mathrm\"));\n // Is expression a string or has it something like a fraction?\n var isAllString = true; // default\n for (var i = 0; i < expression.length; i++) {\n var node = expression[i];\n if (node instanceof SpaceNode) ; else if (node instanceof MathNode) {\n switch (node.type) {\n case \"mi\":\n case \"mn\":\n case \"mspace\":\n case \"mtext\":\n break;\n // Do nothing yet.\n case \"mo\":\n {\n var child = node.children[0];\n if (node.children.length === 1 && child instanceof TextNode) {\n child.text = child.text.replace(/\\u2212/, \"-\").replace(/\\u2217/, \"*\");\n } else {\n isAllString = false;\n }\n break;\n }\n default:\n isAllString = false;\n }\n } else {\n isAllString = false;\n }\n }\n if (isAllString) {\n // Write a single TextNode instead of multiple nested tags.\n var word = expression.map(node => node.toText()).join(\"\");\n expression = [new TextNode(word)];\n }\n var identifier = new MathNode(\"mi\", expression);\n identifier.setAttribute(\"mathvariant\", \"normal\");\n // \\u2061 is the same as ⁡\n // ref: https://www.w3schools.com/charsets/ref_html_entities_a.asp\n var operator = new MathNode(\"mo\", [makeText(\"\\u2061\", \"text\")]);\n if (group.parentIsSupSub) {\n return new MathNode(\"mrow\", [identifier, operator]);\n } else {\n return newDocumentFragment([identifier, operator]);\n }\n};\n// \\operatorname\n// amsopn.dtx: \\mathop{#1\\kern\\z@\\operator@font#3}\\newmcodes@\ndefineFunction({\n type: \"operatorname\",\n names: [\"\\\\operatorname@\", \"\\\\operatornamewithlimits\"],\n props: {\n numArgs: 1\n },\n handler: (_ref, args) => {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"operatorname\",\n mode: parser.mode,\n body: ordargument(body),\n alwaysHandleSupSub: funcName === \"\\\\operatornamewithlimits\",\n limits: false,\n parentIsSupSub: false\n };\n },\n htmlBuilder: htmlBuilder$1,\n mathmlBuilder\n});\ndefineMacro(\"\\\\operatorname\", \"\\\\@ifstar\\\\operatornamewithlimits\\\\operatorname@\");\n\ndefineFunctionBuilders({\n type: \"ordgroup\",\n htmlBuilder(group, options) {\n if (group.semisimple) {\n return makeFragment(buildExpression$1(group.body, options, false));\n }\n return makeSpan([\"mord\"], buildExpression$1(group.body, options, true), options);\n },\n mathmlBuilder(group, options) {\n return buildExpressionRow(group.body, options, true);\n }\n});\n\ndefineFunction({\n type: \"overline\",\n names: [\"\\\\overline\"],\n props: {\n numArgs: 1\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var body = args[0];\n return {\n type: \"overline\",\n mode: parser.mode,\n body\n };\n },\n htmlBuilder(group, options) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n // Build the inner group in the cramped style.\n var innerGroup = buildGroup$1(group.body, options.havingCrampedStyle());\n // Create the line above the body\n var line = makeLineSpan(\"overline-line\", options);\n // Generate the vlist, with the appropriate kerns\n var defaultRuleThickness = options.fontMetrics().defaultRuleThickness;\n var vlist = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: innerGroup\n }, {\n type: \"kern\",\n size: 3 * defaultRuleThickness\n }, {\n type: \"elem\",\n elem: line\n }, {\n type: \"kern\",\n size: defaultRuleThickness\n }]\n });\n return makeSpan([\"mord\", \"overline\"], [vlist], options);\n },\n mathmlBuilder(group, options) {\n var operator = new MathNode(\"mo\", [new TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n var node = new MathNode(\"mover\", [buildGroup(group.body, options), operator]);\n node.setAttribute(\"accent\", \"true\");\n return node;\n }\n});\n\ndefineFunction({\n type: \"phantom\",\n names: [\"\\\\phantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n parser\n } = _ref;\n var body = args[0];\n return {\n type: \"phantom\",\n mode: parser.mode,\n body: ordargument(body)\n };\n },\n htmlBuilder: (group, options) => {\n var elements = buildExpression$1(group.body, options.withPhantom(), false);\n // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n return makeFragment(elements);\n },\n mathmlBuilder: (group, options) => {\n var inner = buildExpression(group.body, options);\n return new MathNode(\"mphantom\", inner);\n }\n});\ndefineMacro(\"\\\\hphantom\", \"\\\\smash{\\\\phantom{#1}}\");\ndefineFunction({\n type: \"vphantom\",\n names: [\"\\\\vphantom\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler: (_ref2, args) => {\n var {\n parser\n } = _ref2;\n var body = args[0];\n return {\n type: \"vphantom\",\n mode: parser.mode,\n body\n };\n },\n htmlBuilder: (group, options) => {\n var inner = makeSpan([\"inner\"], [buildGroup$1(group.body, options.withPhantom())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan([\"mord\", \"rlap\"], [inner, fix], options);\n },\n mathmlBuilder: (group, options) => {\n var inner = buildExpression(ordargument(group.body), options);\n var phantom = new MathNode(\"mphantom\", inner);\n var node = new MathNode(\"mpadded\", [phantom]);\n node.setAttribute(\"width\", \"0px\");\n return node;\n }\n});\n\n// Box manipulation\ndefineFunction({\n type: \"raisebox\",\n names: [\"\\\\raisebox\"],\n props: {\n numArgs: 2,\n argTypes: [\"size\", \"hbox\"],\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n var amount = assertNodeType(args[0], \"size\").value;\n var body = args[1];\n return {\n type: \"raisebox\",\n mode: parser.mode,\n dy: amount,\n body\n };\n },\n htmlBuilder(group, options) {\n var body = buildGroup$1(group.body, options);\n var dy = calculateSize(group.dy, options);\n return makeVList({\n positionType: \"shift\",\n positionData: -dy,\n children: [{\n type: \"elem\",\n elem: body\n }]\n });\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mpadded\", [buildGroup(group.body, options)]);\n var dy = group.dy.number + group.dy.unit;\n node.setAttribute(\"voffset\", dy);\n return node;\n }\n});\n\ndefineFunction({\n type: \"internal\",\n names: [\"\\\\relax\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n allowedInArgument: true\n },\n handler(_ref) {\n var {\n parser\n } = _ref;\n return {\n type: \"internal\",\n mode: parser.mode\n };\n }\n});\n\ndefineFunction({\n type: \"rule\",\n names: [\"\\\\rule\"],\n props: {\n numArgs: 2,\n numOptionalArgs: 1,\n allowedInText: true,\n allowedInMath: true,\n argTypes: [\"size\", \"size\", \"size\"]\n },\n handler(_ref, args, optArgs) {\n var {\n parser\n } = _ref;\n var shift = optArgs[0];\n var width = assertNodeType(args[0], \"size\");\n var height = assertNodeType(args[1], \"size\");\n return {\n type: \"rule\",\n mode: parser.mode,\n shift: shift && assertNodeType(shift, \"size\").value,\n width: width.value,\n height: height.value\n };\n },\n htmlBuilder(group, options) {\n // Make an empty span for the rule\n var rule = makeSpan([\"mord\", \"rule\"], [], options);\n // Calculate the shift, width, and height of the rule, and account for units\n var width = calculateSize(group.width, options);\n var height = calculateSize(group.height, options);\n var shift = group.shift ? calculateSize(group.shift, options) : 0;\n // Style the rule to the right size\n rule.style.borderRightWidth = makeEm(width);\n rule.style.borderTopWidth = makeEm(height);\n rule.style.bottom = makeEm(shift);\n // Record the height and width\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift;\n // Font size is the number large enough that the browser will\n // reserve at least `absHeight` space above the baseline.\n // The 1.125 factor was empirically determined\n rule.maxFontSize = height * 1.125 * options.sizeMultiplier;\n return rule;\n },\n mathmlBuilder(group, options) {\n var width = calculateSize(group.width, options);\n var height = calculateSize(group.height, options);\n var shift = group.shift ? calculateSize(group.shift, options) : 0;\n var color = options.color && options.getColor() || \"black\";\n var rule = new MathNode(\"mspace\");\n rule.setAttribute(\"mathbackground\", color);\n rule.setAttribute(\"width\", makeEm(width));\n rule.setAttribute(\"height\", makeEm(height));\n var wrapper = new MathNode(\"mpadded\", [rule]);\n if (shift >= 0) {\n wrapper.setAttribute(\"height\", makeEm(shift));\n } else {\n wrapper.setAttribute(\"height\", makeEm(shift));\n wrapper.setAttribute(\"depth\", makeEm(-shift));\n }\n wrapper.setAttribute(\"voffset\", makeEm(shift));\n return wrapper;\n }\n});\n\nfunction sizingGroup(value, options, baseOptions) {\n var inner = buildExpression$1(value, options, false);\n var multiplier = options.sizeMultiplier / baseOptions.sizeMultiplier;\n // Add size-resetting classes to the inner list and set maxFontSize\n // manually. Handle nested size changes.\n for (var i = 0; i < inner.length; i++) {\n var pos = inner[i].classes.indexOf(\"sizing\");\n if (pos < 0) {\n Array.prototype.push.apply(inner[i].classes, options.sizingClasses(baseOptions));\n } else if (inner[i].classes[pos + 1] === \"reset-size\" + options.size) {\n // This is a nested size change: e.g., inner[i] is the \"b\" in\n // `\\Huge a \\small b`. Override the old size (the `reset-` class)\n // but not the new size.\n inner[i].classes[pos + 1] = \"reset-size\" + baseOptions.size;\n }\n inner[i].height *= multiplier;\n inner[i].depth *= multiplier;\n }\n return makeFragment(inner);\n}\nvar sizeFuncs = [\"\\\\tiny\", \"\\\\sixptsize\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"];\nvar htmlBuilder = (group, options) => {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n var newOptions = options.havingSize(group.size);\n return sizingGroup(group.body, newOptions, options);\n};\ndefineFunction({\n type: \"sizing\",\n names: sizeFuncs,\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler: (_ref, args) => {\n var {\n breakOnTokenText,\n funcName,\n parser\n } = _ref;\n var body = parser.parseExpression(false, breakOnTokenText);\n return {\n type: \"sizing\",\n mode: parser.mode,\n // Figure out what size to use based on the list of functions above\n size: sizeFuncs.indexOf(funcName) + 1,\n body\n };\n },\n htmlBuilder,\n mathmlBuilder: (group, options) => {\n var newOptions = options.havingSize(group.size);\n var inner = buildExpression(group.body, newOptions);\n var node = new MathNode(\"mstyle\", inner);\n // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n node.setAttribute(\"mathsize\", makeEm(newOptions.sizeMultiplier));\n return node;\n }\n});\n\n// smash, with optional [tb], as in AMS\ndefineFunction({\n type: \"smash\",\n names: [\"\\\\smash\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1,\n allowedInText: true\n },\n handler: (_ref, args, optArgs) => {\n var {\n parser\n } = _ref;\n var smashHeight = false;\n var smashDepth = false;\n var tbArg = optArgs[0] && assertNodeType(optArgs[0], \"ordgroup\");\n if (tbArg) {\n // Optional [tb] argument is engaged.\n // ref: amsmath: \\renewcommand{\\smash}[1][tb]{%\n // def\\mb@t{\\ht}\\def\\mb@b{\\dp}\\def\\mb@tb{\\ht\\z@\\z@\\dp}%\n var letter = \"\";\n for (var i = 0; i < tbArg.body.length; ++i) {\n var node = tbArg.body[i];\n letter = assertSymbolNodeType(node).text;\n if (letter === \"t\") {\n smashHeight = true;\n } else if (letter === \"b\") {\n smashDepth = true;\n } else {\n smashHeight = false;\n smashDepth = false;\n break;\n }\n }\n } else {\n smashHeight = true;\n smashDepth = true;\n }\n var body = args[0];\n return {\n type: \"smash\",\n mode: parser.mode,\n body,\n smashHeight,\n smashDepth\n };\n },\n htmlBuilder: (group, options) => {\n var node = makeSpan([], [buildGroup$1(group.body, options)]);\n if (!group.smashHeight && !group.smashDepth) {\n return node;\n }\n if (group.smashHeight) {\n node.height = 0;\n }\n if (group.smashDepth) {\n node.depth = 0;\n }\n if (group.smashHeight && group.smashDepth) {\n // Symmetric \\smash can stay in inline layout.\n return makeSpan([\"mord\", \"smash\"], [node], options);\n }\n // In order to influence makeVList for asymmetric smashing, we have to\n // reset the children.\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n if (group.smashHeight) {\n node.children[i].height = 0;\n }\n if (group.smashDepth) {\n node.children[i].depth = 0;\n }\n }\n }\n // At this point, we've reset the TeX-like height and depth values.\n // But the span still has an HTML line height.\n // makeVList applies \"display: table-cell\", which prevents the browser\n // from acting on that line height. So we'll call makeVList now.\n var smashedNode = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: node\n }]\n });\n // For spacing, TeX treats \\smash as a math group (same spacing as ord).\n return makeSpan([\"mord\"], [smashedNode], options);\n },\n mathmlBuilder: (group, options) => {\n var node = new MathNode(\"mpadded\", [buildGroup(group.body, options)]);\n if (group.smashHeight) {\n node.setAttribute(\"height\", \"0px\");\n }\n if (group.smashDepth) {\n node.setAttribute(\"depth\", \"0px\");\n }\n return node;\n }\n});\n\ndefineFunction({\n type: \"sqrt\",\n names: [\"\\\\sqrt\"],\n props: {\n numArgs: 1,\n numOptionalArgs: 1\n },\n handler(_ref, args, optArgs) {\n var {\n parser\n } = _ref;\n var index = optArgs[0];\n var body = args[0];\n return {\n type: \"sqrt\",\n mode: parser.mode,\n body,\n index\n };\n },\n htmlBuilder(group, options) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n // First, we do the same steps as in overline to build the inner group\n // and line\n var inner = buildGroup$1(group.body, options.havingCrampedStyle());\n if (inner.height === 0) {\n // Render a small surd.\n inner.height = options.fontMetrics().xHeight;\n }\n // Some groups can return document fragments. Handle those by wrapping\n // them in a span.\n inner = wrapFragment(inner, options);\n // Calculate the minimum size for the \\surd delimiter\n var metrics = options.fontMetrics();\n var theta = metrics.defaultRuleThickness;\n var phi = theta;\n if (options.style.id < Style$1.TEXT.id) {\n phi = options.fontMetrics().xHeight;\n }\n // Calculate the clearance between the body and line\n var lineClearance = theta + phi / 4;\n var minDelimiterHeight = inner.height + inner.depth + lineClearance + theta;\n // Create a sqrt SVG of the required minimum size\n var {\n span: img,\n ruleWidth,\n advanceWidth\n } = makeSqrtImage(minDelimiterHeight, options);\n var delimDepth = img.height - ruleWidth;\n // Adjust the clearance based on the delimiter size\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance = (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n }\n // Shift the sqrt image\n var imgShift = img.height - inner.height - lineClearance - ruleWidth;\n inner.style.paddingLeft = makeEm(advanceWidth);\n // Overlay the image and the argument.\n var body = makeVList({\n positionType: \"firstBaseline\",\n children: [{\n type: \"elem\",\n elem: inner,\n wrapperClasses: [\"svg-align\"]\n }, {\n type: \"kern\",\n size: -(inner.height + imgShift)\n }, {\n type: \"elem\",\n elem: img\n }, {\n type: \"kern\",\n size: ruleWidth\n }]\n });\n if (!group.index) {\n return makeSpan([\"mord\", \"sqrt\"], [body], options);\n } else {\n // Handle the optional root index\n // The index is always in scriptscript style\n var newOptions = options.havingStyle(Style$1.SCRIPTSCRIPT);\n var rootm = buildGroup$1(group.index, newOptions, options);\n // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n var toShift = 0.6 * (body.height - body.depth);\n // Build a VList with the superscript shifted up correctly\n var rootVList = makeVList({\n positionType: \"shift\",\n positionData: -toShift,\n children: [{\n type: \"elem\",\n elem: rootm\n }]\n });\n // Add a class surrounding it so we can add on the appropriate\n // kerning\n var rootVListWrap = makeSpan([\"root\"], [rootVList]);\n return makeSpan([\"mord\", \"sqrt\"], [rootVListWrap, body], options);\n }\n },\n mathmlBuilder(group, options) {\n var {\n body,\n index\n } = group;\n return index ? new MathNode(\"mroot\", [buildGroup(body, options), buildGroup(index, options)]) : new MathNode(\"msqrt\", [buildGroup(body, options)]);\n }\n});\n\nvar styleMap = {\n \"display\": Style$1.DISPLAY,\n \"text\": Style$1.TEXT,\n \"script\": Style$1.SCRIPT,\n \"scriptscript\": Style$1.SCRIPTSCRIPT\n};\ndefineFunction({\n type: \"styling\",\n names: [\"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"],\n props: {\n numArgs: 0,\n allowedInText: true,\n primitive: true\n },\n handler(_ref, args) {\n var {\n breakOnTokenText,\n funcName,\n parser\n } = _ref;\n // parse out the implicit body\n var body = parser.parseExpression(true, breakOnTokenText);\n // TODO: Refactor to avoid duplicating styleMap in multiple places (e.g.\n // here and in buildHTML and de-dupe the enumeration of all the styles).\n // TODO(ts): The names above exactly match the styles.\n var style = funcName.slice(1, funcName.length - 5);\n return {\n type: \"styling\",\n mode: parser.mode,\n // Figure out what style to use by pulling out the style from\n // the function name\n style,\n body\n };\n },\n htmlBuilder(group, options) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n var newStyle = styleMap[group.style];\n var newOptions = options.havingStyle(newStyle).withFont('');\n return sizingGroup(group.body, newOptions, options);\n },\n mathmlBuilder(group, options) {\n // Figure out what style we're changing to.\n var newStyle = styleMap[group.style];\n var newOptions = options.havingStyle(newStyle);\n var inner = buildExpression(group.body, newOptions);\n var node = new MathNode(\"mstyle\", inner);\n var styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"]\n };\n var attr = styleAttributes[group.style];\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n return node;\n }\n});\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * Sometimes, groups perform special rules when they have superscripts or\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nvar htmlBuilderDelegate = function htmlBuilderDelegate(group, options) {\n var base = group.base;\n if (!base) {\n return null;\n } else if (base.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n var delegate = base.limits && (options.style.size === Style$1.DISPLAY.size || base.alwaysHandleSupSub);\n return delegate ? htmlBuilder$2 : null;\n } else if (base.type === \"operatorname\") {\n var _delegate = base.alwaysHandleSupSub && (options.style.size === Style$1.DISPLAY.size || base.limits);\n return _delegate ? htmlBuilder$1 : null;\n } else if (base.type === \"accent\") {\n return isCharacterBox(base.base) ? htmlBuilder$a : null;\n } else if (base.type === \"horizBrace\") {\n var isSup = !group.sub;\n return isSup === base.isOver ? htmlBuilder$3 : null;\n } else {\n return null;\n }\n};\n// Super scripts and subscripts, whose precise placement can depend on other\n// functions that precede them.\ndefineFunctionBuilders({\n type: \"supsub\",\n htmlBuilder(group, options) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n var builderDelegate = htmlBuilderDelegate(group, options);\n if (builderDelegate) {\n return builderDelegate(group, options);\n }\n var {\n base: valueBase,\n sup: valueSup,\n sub: valueSub\n } = group;\n var base = buildGroup$1(valueBase, options);\n var supm;\n var subm;\n var metrics = options.fontMetrics();\n // Rule 18a\n var supShift = 0;\n var subShift = 0;\n var isCharBox = valueBase && isCharacterBox(valueBase);\n if (valueSup) {\n var newOptions = options.havingStyle(options.style.sup());\n supm = buildGroup$1(valueSup, newOptions, options);\n if (!isCharBox) {\n supShift = base.height - newOptions.fontMetrics().supDrop * newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n if (valueSub) {\n var _newOptions = options.havingStyle(options.style.sub());\n subm = buildGroup$1(valueSub, _newOptions, options);\n if (!isCharBox) {\n subShift = base.depth + _newOptions.fontMetrics().subDrop * _newOptions.sizeMultiplier / options.sizeMultiplier;\n }\n }\n // Rule 18c\n var minSupShift;\n if (options.style === Style$1.DISPLAY) {\n minSupShift = metrics.sup1;\n } else if (options.style.cramped) {\n minSupShift = metrics.sup3;\n } else {\n minSupShift = metrics.sup2;\n }\n // scriptspace is a font-size-independent size, so scale it\n // appropriately for use as the marginRight.\n var multiplier = options.sizeMultiplier;\n var marginRight = makeEm(0.5 / metrics.ptPerEm / multiplier);\n var marginLeft = null;\n if (subm) {\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n var isOiint = group.base && group.base.type === \"op\" && group.base.name && (group.base.name === \"\\\\oiint\" || group.base.name === \"\\\\oiiint\");\n if (base instanceof SymbolNode || isOiint) {\n // @ts-ignore\n marginLeft = makeEm(-base.italic);\n }\n }\n var supsub;\n if (supm && subm) {\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n subShift = Math.max(subShift, metrics.sub2);\n var ruleWidth = metrics.defaultRuleThickness;\n // Rule 18e\n var maxWidth = 4 * ruleWidth;\n if (supShift - supm.depth - (subm.height - subShift) < maxWidth) {\n subShift = maxWidth - (supShift - supm.depth) + subm.height;\n var psi = 0.8 * metrics.xHeight - (supShift - supm.depth);\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n var vlistElem = [{\n type: \"elem\",\n elem: subm,\n shift: subShift,\n marginRight,\n marginLeft\n }, {\n type: \"elem\",\n elem: supm,\n shift: -supShift,\n marginRight\n }];\n supsub = makeVList({\n positionType: \"individualShift\",\n children: vlistElem\n });\n } else if (subm) {\n // Rule 18b\n subShift = Math.max(subShift, metrics.sub1, subm.height - 0.8 * metrics.xHeight);\n var _vlistElem = [{\n type: \"elem\",\n elem: subm,\n marginLeft,\n marginRight\n }];\n supsub = makeVList({\n positionType: \"shift\",\n positionData: subShift,\n children: _vlistElem\n });\n } else if (supm) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift, supm.depth + 0.25 * metrics.xHeight);\n supsub = makeVList({\n positionType: \"shift\",\n positionData: -supShift,\n children: [{\n type: \"elem\",\n elem: supm,\n marginRight\n }]\n });\n } else {\n throw new Error(\"supsub must have either sup or sub.\");\n }\n // Wrap the supsub vlist in a span.msupsub to reset text-align.\n var mclass = getTypeOfDomTree(base, \"right\") || \"mord\";\n return makeSpan([mclass], [base, makeSpan([\"msupsub\"], [supsub])], options);\n },\n mathmlBuilder(group, options) {\n // Is the inner group a relevant horizontal brace?\n var isBrace = false;\n var isOver;\n var isSup;\n if (group.base && group.base.type === \"horizBrace\") {\n isSup = !!group.sup;\n if (isSup === group.base.isOver) {\n isBrace = true;\n isOver = group.base.isOver;\n }\n }\n if (group.base && (group.base.type === \"op\" || group.base.type === \"operatorname\")) {\n group.base.parentIsSupSub = true;\n }\n var children = [buildGroup(group.base, options)];\n if (group.sub) {\n children.push(buildGroup(group.sub, options));\n }\n if (group.sup) {\n children.push(buildGroup(group.sup, options));\n }\n var nodeType;\n if (isBrace) {\n nodeType = isOver ? \"mover\" : \"munder\";\n } else if (!group.sub) {\n var base = group.base;\n if (base && base.type === \"op\" && base.limits && (options.style === Style$1.DISPLAY || base.alwaysHandleSupSub)) {\n nodeType = \"mover\";\n } else if (base && base.type === \"operatorname\" && base.alwaysHandleSupSub && (base.limits || options.style === Style$1.DISPLAY)) {\n nodeType = \"mover\";\n } else {\n nodeType = \"msup\";\n }\n } else if (!group.sup) {\n var _base = group.base;\n if (_base && _base.type === \"op\" && _base.limits && (options.style === Style$1.DISPLAY || _base.alwaysHandleSupSub)) {\n nodeType = \"munder\";\n } else if (_base && _base.type === \"operatorname\" && _base.alwaysHandleSupSub && (_base.limits || options.style === Style$1.DISPLAY)) {\n nodeType = \"munder\";\n } else {\n nodeType = \"msub\";\n }\n } else {\n var _base2 = group.base;\n if (_base2 && _base2.type === \"op\" && _base2.limits && options.style === Style$1.DISPLAY) {\n nodeType = \"munderover\";\n } else if (_base2 && _base2.type === \"operatorname\" && _base2.alwaysHandleSupSub && (options.style === Style$1.DISPLAY || _base2.limits)) {\n nodeType = \"munderover\";\n } else {\n nodeType = \"msubsup\";\n }\n }\n return new MathNode(nodeType, children);\n }\n});\n\n// Operator ParseNodes created in Parser.js from symbol Groups in src/symbols.js.\ndefineFunctionBuilders({\n type: \"atom\",\n htmlBuilder(group, options) {\n return mathsym(group.text, group.mode, options, [\"m\" + group.family]);\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mo\", [makeText(group.text, group.mode)]);\n if (group.family === \"bin\") {\n var variant = getVariant(group, options);\n if (variant === \"bold-italic\") {\n node.setAttribute(\"mathvariant\", variant);\n }\n } else if (group.family === \"punct\") {\n node.setAttribute(\"separator\", \"true\");\n } else if (group.family === \"open\" || group.family === \"close\") {\n // Delims built here should not stretch vertically.\n // See delimsizing.js for stretchy delims.\n node.setAttribute(\"stretchy\", \"false\");\n }\n return node;\n }\n});\n\n// \"mathord\" and \"textord\" ParseNodes created in Parser.js from symbol Groups in\n// src/symbols.js.\nvar defaultVariant = {\n \"mi\": \"italic\",\n \"mn\": \"normal\",\n \"mtext\": \"normal\"\n};\ndefineFunctionBuilders({\n type: \"mathord\",\n htmlBuilder(group, options) {\n return makeOrd(group, options, \"mathord\");\n },\n mathmlBuilder(group, options) {\n var node = new MathNode(\"mi\", [makeText(group.text, group.mode, options)]);\n var variant = getVariant(group, options) || \"italic\";\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n }\n});\ndefineFunctionBuilders({\n type: \"textord\",\n htmlBuilder(group, options) {\n return makeOrd(group, options, \"textord\");\n },\n mathmlBuilder(group, options) {\n var text = makeText(group.text, group.mode, options);\n var variant = getVariant(group, options) || \"normal\";\n var node;\n if (group.mode === 'text') {\n node = new MathNode(\"mtext\", [text]);\n } else if (/[0-9]/.test(group.text)) {\n node = new MathNode(\"mn\", [text]);\n } else if (group.text === \"\\\\prime\") {\n node = new MathNode(\"mo\", [text]);\n } else {\n node = new MathNode(\"mi\", [text]);\n }\n if (variant !== defaultVariant[node.type]) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n }\n});\n\n// A map of CSS-based spacing functions to their CSS class.\nvar cssSpace = {\n \"\\\\nobreak\": \"nobreak\",\n \"\\\\allowbreak\": \"allowbreak\"\n};\n// A lookup table to determine whether a spacing function/symbol should be\n// treated like a regular space character. If a symbol or command is a key\n// in this table, then it should be a regular space character. Furthermore,\n// the associated value may have a `className` specifying an extra CSS class\n// to add to the created `span`.\nvar regularSpace = {\n \" \": {},\n \"\\\\ \": {},\n \"~\": {\n className: \"nobreak\"\n },\n \"\\\\space\": {},\n \"\\\\nobreakspace\": {\n className: \"nobreak\"\n }\n};\n// ParseNode<\"spacing\"> created in Parser.js from the \"spacing\" symbol Groups in\n// src/symbols.js.\ndefineFunctionBuilders({\n type: \"spacing\",\n htmlBuilder(group, options) {\n if (regularSpace.hasOwnProperty(group.text)) {\n var className = regularSpace[group.text].className || \"\";\n // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n if (group.mode === \"text\") {\n var ord = makeOrd(group, options, \"textord\");\n ord.classes.push(className);\n return ord;\n } else {\n return makeSpan([\"mspace\", className], [mathsym(group.text, group.mode, options)], options);\n }\n } else if (cssSpace.hasOwnProperty(group.text)) {\n // Spaces based on just a CSS class.\n return makeSpan([\"mspace\", cssSpace[group.text]], [], options);\n } else {\n throw new ParseError(\"Unknown type of space \\\"\" + group.text + \"\\\"\");\n }\n },\n mathmlBuilder(group, options) {\n var node;\n if (regularSpace.hasOwnProperty(group.text)) {\n node = new MathNode(\"mtext\", [new TextNode(\"\\u00a0\")]);\n } else if (cssSpace.hasOwnProperty(group.text)) {\n // CSS-based MathML spaces (\\nobreak, \\allowbreak) are ignored\n return new MathNode(\"mspace\");\n } else {\n throw new ParseError(\"Unknown type of space \\\"\" + group.text + \"\\\"\");\n }\n return node;\n }\n});\n\nvar pad = () => {\n var padNode = new MathNode(\"mtd\", []);\n padNode.setAttribute(\"width\", \"50%\");\n return padNode;\n};\ndefineFunctionBuilders({\n type: \"tag\",\n mathmlBuilder(group, options) {\n var table = new MathNode(\"mtable\", [new MathNode(\"mtr\", [pad(), new MathNode(\"mtd\", [buildExpressionRow(group.body, options)]), pad(), new MathNode(\"mtd\", [buildExpressionRow(group.tag, options)])])]);\n table.setAttribute(\"width\", \"100%\");\n return table;\n // TODO: Left-aligned tags.\n // Currently, the group and options passed here do not contain\n // enough info to set tag alignment. `leqno` is in Settings but it is\n // not passed to Options. On the HTML side, leqno is\n // set by a CSS class applied in buildTree.js. That would have worked\n // in MathML if browsers supported <mlabeledtr>. Since they don't, we\n // need to rewrite the way this function is called.\n }\n});\n\n// Non-mathy text, possibly in a font\nvar textFontFamilies = {\n \"\\\\text\": undefined,\n \"\\\\textrm\": \"textrm\",\n \"\\\\textsf\": \"textsf\",\n \"\\\\texttt\": \"texttt\",\n \"\\\\textnormal\": \"textrm\"\n};\nvar textFontWeights = {\n \"\\\\textbf\": \"textbf\",\n \"\\\\textmd\": \"textmd\"\n};\nvar textFontShapes = {\n \"\\\\textit\": \"textit\",\n \"\\\\textup\": \"textup\"\n};\nvar optionsWithFont = (group, options) => {\n var font = group.font;\n // Checks if the argument is a font family or a font style.\n if (!font) {\n return options;\n } else if (textFontFamilies[font]) {\n return options.withTextFontFamily(textFontFamilies[font]);\n } else if (textFontWeights[font]) {\n return options.withTextFontWeight(textFontWeights[font]);\n } else if (font === \"\\\\emph\") {\n return options.fontShape === \"textit\" ? options.withTextFontShape(\"textup\") : options.withTextFontShape(\"textit\");\n }\n return options.withTextFontShape(textFontShapes[font]);\n};\ndefineFunction({\n type: \"text\",\n names: [\n // Font families\n \"\\\\text\", \"\\\\textrm\", \"\\\\textsf\", \"\\\\texttt\", \"\\\\textnormal\",\n // Font weights\n \"\\\\textbf\", \"\\\\textmd\",\n // Font Shapes\n \"\\\\textit\", \"\\\\textup\", \"\\\\emph\"],\n props: {\n numArgs: 1,\n argTypes: [\"text\"],\n allowedInArgument: true,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser,\n funcName\n } = _ref;\n var body = args[0];\n return {\n type: \"text\",\n mode: parser.mode,\n body: ordargument(body),\n font: funcName\n };\n },\n htmlBuilder(group, options) {\n var newOptions = optionsWithFont(group, options);\n var inner = buildExpression$1(group.body, newOptions, true);\n return makeSpan([\"mord\", \"text\"], inner, newOptions);\n },\n mathmlBuilder(group, options) {\n var newOptions = optionsWithFont(group, options);\n return buildExpressionRow(group.body, newOptions);\n }\n});\n\ndefineFunction({\n type: \"underline\",\n names: [\"\\\\underline\"],\n props: {\n numArgs: 1,\n allowedInText: true\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"underline\",\n mode: parser.mode,\n body: args[0]\n };\n },\n htmlBuilder(group, options) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n // Build the inner group.\n var innerGroup = buildGroup$1(group.body, options);\n // Create the line to go below the body\n var line = makeLineSpan(\"underline-line\", options);\n // Generate the vlist, with the appropriate kerns\n var defaultRuleThickness = options.fontMetrics().defaultRuleThickness;\n var vlist = makeVList({\n positionType: \"top\",\n positionData: innerGroup.height,\n children: [{\n type: \"kern\",\n size: defaultRuleThickness\n }, {\n type: \"elem\",\n elem: line\n }, {\n type: \"kern\",\n size: 3 * defaultRuleThickness\n }, {\n type: \"elem\",\n elem: innerGroup\n }]\n });\n return makeSpan([\"mord\", \"underline\"], [vlist], options);\n },\n mathmlBuilder(group, options) {\n var operator = new MathNode(\"mo\", [new TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n var node = new MathNode(\"munder\", [buildGroup(group.body, options), operator]);\n node.setAttribute(\"accentunder\", \"true\");\n return node;\n }\n});\n\n// \\vcenter: Vertically center the argument group on the math axis.\ndefineFunction({\n type: \"vcenter\",\n names: [\"\\\\vcenter\"],\n props: {\n numArgs: 1,\n argTypes: [\"original\"],\n // In LaTeX, \\vcenter can act only on a box.\n allowedInText: false\n },\n handler(_ref, args) {\n var {\n parser\n } = _ref;\n return {\n type: \"vcenter\",\n mode: parser.mode,\n body: args[0]\n };\n },\n htmlBuilder(group, options) {\n var body = buildGroup$1(group.body, options);\n var axisHeight = options.fontMetrics().axisHeight;\n var dy = 0.5 * (body.height - axisHeight - (body.depth + axisHeight));\n return makeVList({\n positionType: \"shift\",\n positionData: dy,\n children: [{\n type: \"elem\",\n elem: body\n }]\n });\n },\n mathmlBuilder(group, options) {\n // There is no way to do this in MathML.\n // Write a class as a breadcrumb in case some post-processor wants\n // to perform a vcenter adjustment.\n // Wrap in mrow to ensure valid MathML when placed inside mo (e.g., \\mathrel)\n var mpadded = new MathNode(\"mpadded\", [buildGroup(group.body, options)], [\"vcenter\"]);\n return new MathNode(\"mrow\", [mpadded]);\n }\n});\n\ndefineFunction({\n type: \"verb\",\n names: [\"\\\\verb\"],\n props: {\n numArgs: 0,\n allowedInText: true\n },\n handler(context, args, optArgs) {\n // \\verb and \\verb* are dealt with directly in Parser.js.\n // If we end up here, it's because of a failure to match the two delimiters\n // in the regex in Lexer.js. LaTeX raises the following error when \\verb is\n // terminated by end of line (or file).\n throw new ParseError(\"\\\\verb ended by end of line instead of matching delimiter\");\n },\n htmlBuilder(group, options) {\n var text = makeVerb(group);\n var body = [];\n // \\verb enters text mode and therefore is sized like \\textstyle\n var newOptions = options.havingStyle(options.style.text());\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c === '~') {\n c = '\\\\textasciitilde';\n }\n body.push(makeSymbol(c, \"Typewriter-Regular\", group.mode, newOptions, [\"mord\", \"texttt\"]));\n }\n return makeSpan([\"mord\", \"text\"].concat(newOptions.sizingClasses(options)), tryCombineChars(body), newOptions);\n },\n mathmlBuilder(group, options) {\n var text = new TextNode(makeVerb(group));\n var node = new MathNode(\"mtext\", [text]);\n node.setAttribute(\"mathvariant\", \"monospace\");\n return node;\n }\n});\n/**\n * Converts verb group into body string.\n *\n * \\verb* replaces each space with an open box \\u2423\n * \\verb replaces each space with a no-break space \\xA0\n */\nvar makeVerb = group => group.body.replace(/ /g, group.star ? '\\u2423' : '\\xA0');\n\n/** Include this to ensure that all functions are defined. */\nvar functions = _functions;\n\n/**\n * The Lexer class handles tokenizing the input in various ways. Since our\n * parser expects us to be able to backtrack, the lexer allows lexing from any\n * given starting point.\n *\n * Its main exposed function is the `lex` function, which takes a position to\n * lex from and a type of token to lex. It defers to the appropriate `_innerLex`\n * function.\n *\n * The various `_innerLex` functions perform the actual lexing of different\n * kinds.\n */\n/* The following tokenRegex\n * - matches typical whitespace (but not NBSP etc.) using its first group\n * - does not match any control character \\x00-\\x1f except whitespace\n * - does not match a bare backslash\n * - matches any ASCII character except those just mentioned\n * - does not match the BMP private use area \\uE000-\\uF8FF\n * - does not match bare surrogate code units\n * - matches any BMP character except for those just described\n * - matches any valid Unicode surrogate pair\n * - matches a backslash followed by one or more whitespace characters\n * - matches a backslash followed by one or more letters then whitespace\n * - matches a backslash followed by any BMP character\n * Capturing groups:\n * [1] regular whitespace\n * [2] backslash followed by whitespace\n * [3] anything else, which may include:\n * [4] left character of \\verb*\n * [5] left character of \\verb\n * [6] backslash followed by word, excluding any trailing whitespace\n * Just because the Lexer matches something doesn't mean it's valid input:\n * If there is no matching function or symbol definition, the Parser will\n * still reject the input.\n */\nvar spaceRegexString = \"[ \\r\\n\\t]\";\nvar controlWordRegexString = \"\\\\\\\\[a-zA-Z@]+\";\nvar controlSymbolRegexString = \"\\\\\\\\[^\\uD800-\\uDFFF]\";\nvar controlWordWhitespaceRegexString = \"(\" + controlWordRegexString + \")\" + spaceRegexString + \"*\";\nvar controlSpaceRegexString = \"\\\\\\\\(\\n|[ \\r\\t]+\\n?)[ \\r\\t]*\";\nvar combiningDiacriticalMarkString = \"[\\u0300-\\u036f]\";\nvar combiningDiacriticalMarksEndRegex = new RegExp(combiningDiacriticalMarkString + \"+$\");\nvar tokenRegexString = \"(\" + spaceRegexString + \"+)|\" + (// whitespace\ncontrolSpaceRegexString + \"|\") +\n// \\whitespace\n\"([!-\\\\[\\\\]-\\u2027\\u202A-\\uD7FF\\uF900-\\uFFFF]\" + (// single codepoint\ncombiningDiacriticalMarkString + \"*\") +\n// ...plus accents\n\"|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\" + (// surrogate pair\ncombiningDiacriticalMarkString + \"*\") +\n// ...plus accents\n\"|\\\\\\\\verb\\\\*([^]).*?\\\\4\" +\n// \\verb*\n\"|\\\\\\\\verb([^*a-zA-Z]).*?\\\\5\" + (// \\verb unstarred\n\"|\" + controlWordWhitespaceRegexString) + (// \\macroName + spaces\n\"|\" + controlSymbolRegexString + \")\"); // \\\\, \\', etc.\n/** Main Lexer class */\nclass Lexer {\n // Category codes. The lexer only supports comment characters (14) for now.\n // MacroExpander additionally distinguishes active (13).\n\n constructor(input, settings) {\n // Separate accents from characters\n this.input = input;\n this.settings = settings;\n this.tokenRegex = new RegExp(tokenRegexString, 'g');\n this.catcodes = {\n \"%\": 14,\n // comment character\n \"~\": 13 // active character\n };\n }\n setCatcode(char, code) {\n this.catcodes[char] = code;\n }\n /**\n * This function lexes a single token.\n */\n lex() {\n var input = this.input;\n var pos = this.tokenRegex.lastIndex;\n if (pos === input.length) {\n return new Token(\"EOF\", new SourceLocation(this, pos, pos));\n }\n var match = this.tokenRegex.exec(input);\n if (match === null || match.index !== pos) {\n throw new ParseError(\"Unexpected character: '\" + input[pos] + \"'\", new Token(input[pos], new SourceLocation(this, pos, pos + 1)));\n }\n var text = match[6] || match[3] || (match[2] ? \"\\\\ \" : \" \");\n if (this.catcodes[text] === 14) {\n // comment character\n var nlIndex = input.indexOf('\\n', this.tokenRegex.lastIndex);\n if (nlIndex === -1) {\n this.tokenRegex.lastIndex = input.length; // EOF\n this.settings.reportNonstrict(\"commentAtEnd\", \"% comment has no terminating newline; LaTeX would \" + \"fail because of commenting the end of math mode (e.g. $)\");\n } else {\n this.tokenRegex.lastIndex = nlIndex + 1;\n }\n return this.lex();\n }\n return new Token(text, new SourceLocation(this, pos, this.tokenRegex.lastIndex));\n }\n}\n\n/**\n * A `Namespace` refers to a space of nameable things like macros or lengths,\n * which can be `set` either globally or local to a nested group, using an\n * undo stack similar to how TeX implements this functionality.\n * Performance-wise, `get` and local `set` take constant time, while global\n * `set` takes time proportional to the depth of group nesting.\n */\nclass Namespace {\n /**\n * Both arguments are optional. The first argument is an object of\n * built-in mappings which never change. The second argument is an object\n * of initial (global-level) mappings, which will constantly change\n * according to any global/top-level `set`s done.\n */\n constructor(builtins, globalMacros) {\n if (builtins === void 0) {\n builtins = {};\n }\n if (globalMacros === void 0) {\n globalMacros = {};\n }\n this.current = globalMacros;\n this.builtins = builtins;\n this.undefStack = [];\n }\n /**\n * Start a new nested group, affecting future local `set`s.\n */\n beginGroup() {\n this.undefStack.push({});\n }\n /**\n * End current nested group, restoring values before the group began.\n */\n endGroup() {\n if (this.undefStack.length === 0) {\n throw new ParseError(\"Unbalanced namespace destruction: attempt \" + \"to pop global namespace; please report this as a bug\");\n }\n var undefs = this.undefStack.pop();\n for (var undef in undefs) {\n if (undefs.hasOwnProperty(undef)) {\n if (undefs[undef] == null) {\n delete this.current[undef];\n } else {\n this.current[undef] = undefs[undef];\n }\n }\n }\n }\n /**\n * Ends all currently nested groups (if any), restoring values before the\n * groups began. Useful in case of an error in the middle of parsing.\n */\n endGroups() {\n while (this.undefStack.length > 0) {\n this.endGroup();\n }\n }\n /**\n * Detect whether `name` has a definition. Equivalent to\n * `get(name) != null`.\n */\n has(name) {\n return this.current.hasOwnProperty(name) || this.builtins.hasOwnProperty(name);\n }\n /**\n * Get the current value of a name, or `undefined` if there is no value.\n *\n * Note: Do not use `if (namespace.get(...))` to detect whether a macro\n * is defined, as the definition may be the empty string which evaluates\n * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or\n * `if (namespace.has(...))`.\n */\n get(name) {\n if (this.current.hasOwnProperty(name)) {\n return this.current[name];\n } else {\n return this.builtins[name];\n }\n }\n /**\n * Set the current value of a name, and optionally set it globally too.\n * Local set() sets the current value and (when appropriate) adds an undo\n * operation to the undo stack. Global set() may change the undo\n * operation at every level, so takes time linear in their number.\n * A value of undefined means to delete existing definitions.\n */\n set(name, value, global) {\n if (global === void 0) {\n global = false;\n }\n if (global) {\n // Global set is equivalent to setting in all groups. Simulate this\n // by destroying any undos currently scheduled for this name,\n // and adding an undo with the *new* value (in case it later gets\n // locally reset within this environment).\n for (var i = 0; i < this.undefStack.length; i++) {\n delete this.undefStack[i][name];\n }\n if (this.undefStack.length > 0) {\n this.undefStack[this.undefStack.length - 1][name] = value;\n }\n } else {\n // Undo this set at end of this group (possibly to `undefined`),\n // unless an undo is already in place, in which case that older\n // value is the correct one.\n var top = this.undefStack[this.undefStack.length - 1];\n if (top && !top.hasOwnProperty(name)) {\n top[name] = this.current[name];\n }\n }\n if (value == null) {\n delete this.current[name];\n } else {\n this.current[name] = value;\n }\n }\n}\n\n/**\n * Predefined macros for KaTeX.\n * This can be used to define some commands in terms of others.\n */\nvar macros = _macros;\n//////////////////////////////////////////////////////////////////////\n// macro tools\ndefineMacro(\"\\\\noexpand\", function (context) {\n // The expansion is the token itself; but that token is interpreted\n // as if its meaning were \u2018\\relax\u2019 if it is a control sequence that\n // would ordinarily be expanded by TeX\u2019s expansion rules.\n var t = context.popToken();\n if (context.isExpandable(t.text)) {\n t.noexpand = true;\n t.treatAsRelax = true;\n }\n return {\n tokens: [t],\n numArgs: 0\n };\n});\ndefineMacro(\"\\\\expandafter\", function (context) {\n // TeX first reads the token that comes immediately after \\expandafter,\n // without expanding it; let\u2019s call this token t. Then TeX reads the\n // token that comes after t (and possibly more tokens, if that token\n // has an argument), replacing it by its expansion. Finally TeX puts\n // t back in front of that expansion.\n var t = context.popToken();\n context.expandOnce(true); // expand only an expandable token\n return {\n tokens: [t],\n numArgs: 0\n };\n});\n// LaTeX's \\@firstoftwo{#1}{#2} expands to #1, skipping #2\n// TeX source: \\long\\def\\@firstoftwo#1#2{#1}\ndefineMacro(\"\\\\@firstoftwo\", function (context) {\n var args = context.consumeArgs(2);\n return {\n tokens: args[0],\n numArgs: 0\n };\n});\n// LaTeX's \\@secondoftwo{#1}{#2} expands to #2, skipping #1\n// TeX source: \\long\\def\\@secondoftwo#1#2{#2}\ndefineMacro(\"\\\\@secondoftwo\", function (context) {\n var args = context.consumeArgs(2);\n return {\n tokens: args[1],\n numArgs: 0\n };\n});\n// LaTeX's \\@ifnextchar{#1}{#2}{#3} looks ahead to the next (unexpanded)\n// symbol that isn't a space, consuming any spaces but not consuming the\n// first nonspace character. If that nonspace character matches #1, then\n// the macro expands to #2; otherwise, it expands to #3.\ndefineMacro(\"\\\\@ifnextchar\", function (context) {\n var args = context.consumeArgs(3); // symbol, if, else\n context.consumeSpaces();\n var nextToken = context.future();\n if (args[0].length === 1 && args[0][0].text === nextToken.text) {\n return {\n tokens: args[1],\n numArgs: 0\n };\n } else {\n return {\n tokens: args[2],\n numArgs: 0\n };\n }\n});\n// LaTeX's \\@ifstar{#1}{#2} looks ahead to the next (unexpanded) symbol.\n// If it is `*`, then it consumes the symbol, and the macro expands to #1;\n// otherwise, the macro expands to #2 (without consuming the symbol).\n// TeX source: \\def\\@ifstar#1{\\@ifnextchar *{\\@firstoftwo{#1}}}\ndefineMacro(\"\\\\@ifstar\", \"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\");\n// LaTeX's \\TextOrMath{#1}{#2} expands to #1 in text mode, #2 in math mode\ndefineMacro(\"\\\\TextOrMath\", function (context) {\n var args = context.consumeArgs(2);\n if (context.mode === 'text') {\n return {\n tokens: args[0],\n numArgs: 0\n };\n } else {\n return {\n tokens: args[1],\n numArgs: 0\n };\n }\n});\n// Lookup table for parsing numbers in base 8 through 16\nvar digitToNumber = {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"a\": 10,\n \"A\": 10,\n \"b\": 11,\n \"B\": 11,\n \"c\": 12,\n \"C\": 12,\n \"d\": 13,\n \"D\": 13,\n \"e\": 14,\n \"E\": 14,\n \"f\": 15,\n \"F\": 15\n};\n// TeX \\char makes a literal character (catcode 12) using the following forms:\n// (see The TeXBook, p. 43)\n// \\char123 -- decimal\n// \\char'123 -- octal\n// \\char\"123 -- hex\n// \\char`x -- character that can be written (i.e. isn't active)\n// \\char`\\x -- character that cannot be written (e.g. %)\n// These all refer to characters from the font, so we turn them into special\n// calls to a function \\@char dealt with in the Parser.\ndefineMacro(\"\\\\char\", function (context) {\n var token = context.popToken();\n var base;\n var number = 0;\n if (token.text === \"'\") {\n base = 8;\n token = context.popToken();\n } else if (token.text === '\"') {\n base = 16;\n token = context.popToken();\n } else if (token.text === \"`\") {\n token = context.popToken();\n if (token.text[0] === \"\\\\\") {\n number = token.text.charCodeAt(1);\n } else if (token.text === \"EOF\") {\n throw new ParseError(\"\\\\char` missing argument\");\n } else {\n number = token.text.charCodeAt(0);\n }\n } else {\n base = 10;\n }\n if (base) {\n // Parse a number in the given base, starting with first `token`.\n number = digitToNumber[token.text];\n if (number == null || number >= base) {\n throw new ParseError(\"Invalid base-\" + base + \" digit \" + token.text);\n }\n var digit;\n while ((digit = digitToNumber[context.future().text]) != null && digit < base) {\n number *= base;\n number += digit;\n context.popToken();\n }\n }\n return \"\\\\@char{\" + number + \"}\";\n});\n// \\newcommand{\\macro}[args]{definition}\n// \\renewcommand{\\macro}[args]{definition}\n// TODO: Optional arguments: \\newcommand{\\macro}[args][default]{definition}\nvar newcommand = (context, existsOK, nonexistsOK, skipIfExists) => {\n var arg = context.consumeArg().tokens;\n if (arg.length !== 1) {\n throw new ParseError(\"\\\\newcommand's first argument must be a macro name\");\n }\n var name = arg[0].text;\n var exists = context.isDefined(name);\n if (exists && !existsOK) {\n throw new ParseError(\"\\\\newcommand{\" + name + \"} attempting to redefine \" + (name + \"; use \\\\renewcommand\"));\n }\n if (!exists && !nonexistsOK) {\n throw new ParseError(\"\\\\renewcommand{\" + name + \"} when command \" + name + \" \" + \"does not yet exist; use \\\\newcommand\");\n }\n var numArgs = 0;\n arg = context.consumeArg().tokens;\n if (arg.length === 1 && arg[0].text === \"[\") {\n var argText = '';\n var token = context.expandNextToken();\n while (token.text !== \"]\" && token.text !== \"EOF\") {\n // TODO: Should properly expand arg, e.g., ignore {}s\n argText += token.text;\n token = context.expandNextToken();\n }\n if (!argText.match(/^\\s*[0-9]+\\s*$/)) {\n throw new ParseError(\"Invalid number of arguments: \" + argText);\n }\n numArgs = parseInt(argText);\n arg = context.consumeArg().tokens;\n }\n if (!(exists && skipIfExists)) {\n // Final arg is the expansion of the macro\n context.macros.set(name, {\n tokens: arg,\n numArgs\n });\n }\n return '';\n};\ndefineMacro(\"\\\\newcommand\", context => newcommand(context, false, true, false));\ndefineMacro(\"\\\\renewcommand\", context => newcommand(context, true, false, false));\ndefineMacro(\"\\\\providecommand\", context => newcommand(context, true, true, true));\n// terminal (console) tools\ndefineMacro(\"\\\\message\", context => {\n var arg = context.consumeArgs(1)[0];\n // eslint-disable-next-line no-console\n console.log(arg.reverse().map(token => token.text).join(\"\"));\n return '';\n});\ndefineMacro(\"\\\\errmessage\", context => {\n var arg = context.consumeArgs(1)[0];\n // eslint-disable-next-line no-console\n console.error(arg.reverse().map(token => token.text).join(\"\"));\n return '';\n});\ndefineMacro(\"\\\\show\", context => {\n var tok = context.popToken();\n var name = tok.text;\n // eslint-disable-next-line no-console\n console.log(tok, context.macros.get(name), functions[name], symbols.math[name], symbols.text[name]);\n return '';\n});\n//////////////////////////////////////////////////////////////////////\n// Grouping\n// \\let\\bgroup={ \\let\\egroup=}\ndefineMacro(\"\\\\bgroup\", \"{\");\ndefineMacro(\"\\\\egroup\", \"}\");\n// Symbols from latex.ltx:\n// \\def~{\\nobreakspace{}}\n// \\def\\lq{`}\n// \\def\\rq{'}\n// \\def \\aa {\\r a}\n// \\def \\AA {\\r A}\ndefineMacro(\"~\", \"\\\\nobreakspace\");\ndefineMacro(\"\\\\lq\", \"`\");\ndefineMacro(\"\\\\rq\", \"'\");\ndefineMacro(\"\\\\aa\", \"\\\\r a\");\ndefineMacro(\"\\\\AA\", \"\\\\r A\");\n// Copyright (C) and registered (R) symbols. Use raw symbol in MathML.\n// \\DeclareTextCommandDefault{\\textcopyright}{\\textcircled{c}}\n// \\DeclareTextCommandDefault{\\textregistered}{\\textcircled{%\n// \\check@mathfonts\\fontsize\\sf@size\\z@\\math@fontsfalse\\selectfont R}}\n// \\DeclareRobustCommand{\\copyright}{%\n// \\ifmmode{\\nfss@text{\\textcopyright}}\\else\\textcopyright\\fi}\ndefineMacro(\"\\\\textcopyright\", \"\\\\html@mathml{\\\\textcircled{c}}{\\\\char`\u00A9}\");\ndefineMacro(\"\\\\copyright\", \"\\\\TextOrMath{\\\\textcopyright}{\\\\text{\\\\textcopyright}}\");\ndefineMacro(\"\\\\textregistered\", \"\\\\html@mathml{\\\\textcircled{\\\\scriptsize R}}{\\\\char`\u00AE}\");\n// Characters omitted from Unicode range 1D400\u20131D7FF\ndefineMacro(\"\\u212C\", \"\\\\mathscr{B}\"); // script\ndefineMacro(\"\\u2130\", \"\\\\mathscr{E}\");\ndefineMacro(\"\\u2131\", \"\\\\mathscr{F}\");\ndefineMacro(\"\\u210B\", \"\\\\mathscr{H}\");\ndefineMacro(\"\\u2110\", \"\\\\mathscr{I}\");\ndefineMacro(\"\\u2112\", \"\\\\mathscr{L}\");\ndefineMacro(\"\\u2133\", \"\\\\mathscr{M}\");\ndefineMacro(\"\\u211B\", \"\\\\mathscr{R}\");\ndefineMacro(\"\\u212D\", \"\\\\mathfrak{C}\"); // Fraktur\ndefineMacro(\"\\u210C\", \"\\\\mathfrak{H}\");\ndefineMacro(\"\\u2128\", \"\\\\mathfrak{Z}\");\n// Define \\Bbbk with a macro that works in both HTML and MathML.\ndefineMacro(\"\\\\Bbbk\", \"\\\\Bbb{k}\");\n// \\llap and \\rlap render their contents in text mode\ndefineMacro(\"\\\\llap\", \"\\\\mathllap{\\\\textrm{#1}}\");\ndefineMacro(\"\\\\rlap\", \"\\\\mathrlap{\\\\textrm{#1}}\");\ndefineMacro(\"\\\\clap\", \"\\\\mathclap{\\\\textrm{#1}}\");\n// \\mathstrut from the TeXbook, p 360\ndefineMacro(\"\\\\mathstrut\", \"\\\\vphantom{(}\");\n// \\underbar from TeXbook p 353\ndefineMacro(\"\\\\underbar\", \"\\\\underline{\\\\text{#1}}\");\n// \\not is defined by base/fontmath.ltx via\n// \\DeclareMathSymbol{\\not}{\\mathrel}{symbols}{\"36}\n// It's thus treated like a \\mathrel, but defined by a symbol that has zero\n// width but extends to the right. We use \\rlap to get that spacing.\n// For MathML we write U+0338 here. buildMathML.js will then do the overlay.\ndefineMacro(\"\\\\not\", \"\\\\html@mathml{\\\\mathrel{\\\\mathrlap\\\\@not}\\\\nobreak}\" + \"{\\\\char\\\"338}\");\n// Negated symbols from base/fontmath.ltx:\n// \\def\\neq{\\not=} \\let\\ne=\\neq\n// \\DeclareRobustCommand\n// \\notin{\\mathrel{\\m@th\\mathpalette\\c@ncel\\in}}\n// \\def\\c@ncel#1#2{\\m@th\\ooalign{$\\hfil#1\\mkern1mu/\\hfil$\\crcr$#1#2$}}\ndefineMacro(\"\\\\neq\", \"\\\\html@mathml{\\\\mathrel{\\\\not=}}{\\\\mathrel{\\\\char`\u2260}}\");\ndefineMacro(\"\\\\ne\", \"\\\\neq\");\ndefineMacro(\"\\u2260\", \"\\\\neq\");\ndefineMacro(\"\\\\notin\", \"\\\\html@mathml{\\\\mathrel{{\\\\in}\\\\mathllap{/\\\\mskip1mu}}}\" + \"{\\\\mathrel{\\\\char`\u2209}}\");\ndefineMacro(\"\\u2209\", \"\\\\notin\");\n// Unicode stacked relations\ndefineMacro(\"\\u2258\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\kern{-1em}\\\\raisebox{0.4em}{$\\\\scriptsize\\\\frown$}}\" + \"}{\\\\mathrel{\\\\char`\\u2258}}\");\ndefineMacro(\"\\u2259\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\wedge}{=}}{\\\\mathrel{\\\\char`\\u2258}}\");\ndefineMacro(\"\\u225A\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\vee}{=}}{\\\\mathrel{\\\\char`\\u225A}}\");\ndefineMacro(\"\\u225B\", \"\\\\html@mathml{\\\\stackrel{\\\\scriptsize\\\\star}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225B}}\");\ndefineMacro(\"\\u225D\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{def}}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225D}}\");\ndefineMacro(\"\\u225E\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{m}}{=}}\" + \"{\\\\mathrel{\\\\char`\\u225E}}\");\ndefineMacro(\"\\u225F\", \"\\\\html@mathml{\\\\stackrel{\\\\tiny?}{=}}{\\\\mathrel{\\\\char`\\u225F}}\");\n// Misc Unicode\ndefineMacro(\"\\u27C2\", \"\\\\perp\");\ndefineMacro(\"\\u203C\", \"\\\\mathclose{!\\\\mkern-0.8mu!}\");\ndefineMacro(\"\\u220C\", \"\\\\notni\");\ndefineMacro(\"\\u231C\", \"\\\\ulcorner\");\ndefineMacro(\"\\u231D\", \"\\\\urcorner\");\ndefineMacro(\"\\u231E\", \"\\\\llcorner\");\ndefineMacro(\"\\u231F\", \"\\\\lrcorner\");\ndefineMacro(\"\\u00A9\", \"\\\\copyright\");\ndefineMacro(\"\\u00AE\", \"\\\\textregistered\");\n// The KaTeX fonts have corners at codepoints that don't match Unicode.\n// For MathML purposes, use the Unicode code point.\ndefineMacro(\"\\\\ulcorner\", \"\\\\html@mathml{\\\\@ulcorner}{\\\\mathop{\\\\char\\\"231c}}\");\ndefineMacro(\"\\\\urcorner\", \"\\\\html@mathml{\\\\@urcorner}{\\\\mathop{\\\\char\\\"231d}}\");\ndefineMacro(\"\\\\llcorner\", \"\\\\html@mathml{\\\\@llcorner}{\\\\mathop{\\\\char\\\"231e}}\");\ndefineMacro(\"\\\\lrcorner\", \"\\\\html@mathml{\\\\@lrcorner}{\\\\mathop{\\\\char\\\"231f}}\");\n//////////////////////////////////////////////////////////////////////\n// LaTeX_2\u03B5\n// \\vdots{\\vbox{\\baselineskip4\\p@ \\lineskiplimit\\z@\n// \\kern6\\p@\\hbox{.}\\hbox{.}\\hbox{.}}}\n// We'll call \\varvdots, which gets a glyph from symbols.js.\n// The zero-width rule gets us an equivalent to the vertical 6pt kern.\ndefineMacro(\"\\\\vdots\", \"{\\\\varvdots\\\\rule{0pt}{15pt}}\");\ndefineMacro(\"\\u22ee\", \"\\\\vdots\");\n//////////////////////////////////////////////////////////////////////\n// amsmath.sty\n// http://mirrors.concertpass.com/tex-archive/macros/latex/required/amsmath/amsmath.pdf\n// Italic Greek capital letters. AMS defines these with \\DeclareMathSymbol,\n// but they are equivalent to \\mathit{\\Letter}.\ndefineMacro(\"\\\\varGamma\", \"\\\\mathit{\\\\Gamma}\");\ndefineMacro(\"\\\\varDelta\", \"\\\\mathit{\\\\Delta}\");\ndefineMacro(\"\\\\varTheta\", \"\\\\mathit{\\\\Theta}\");\ndefineMacro(\"\\\\varLambda\", \"\\\\mathit{\\\\Lambda}\");\ndefineMacro(\"\\\\varXi\", \"\\\\mathit{\\\\Xi}\");\ndefineMacro(\"\\\\varPi\", \"\\\\mathit{\\\\Pi}\");\ndefineMacro(\"\\\\varSigma\", \"\\\\mathit{\\\\Sigma}\");\ndefineMacro(\"\\\\varUpsilon\", \"\\\\mathit{\\\\Upsilon}\");\ndefineMacro(\"\\\\varPhi\", \"\\\\mathit{\\\\Phi}\");\ndefineMacro(\"\\\\varPsi\", \"\\\\mathit{\\\\Psi}\");\ndefineMacro(\"\\\\varOmega\", \"\\\\mathit{\\\\Omega}\");\n//\\newcommand{\\substack}[1]{\\subarray{c}#1\\endsubarray}\ndefineMacro(\"\\\\substack\", \"\\\\begin{subarray}{c}#1\\\\end{subarray}\");\n// \\renewcommand{\\colon}{\\nobreak\\mskip2mu\\mathpunct{}\\nonscript\n// \\mkern-\\thinmuskip{:}\\mskip6muplus1mu\\relax}\ndefineMacro(\"\\\\colon\", \"\\\\nobreak\\\\mskip2mu\\\\mathpunct{}\" + \"\\\\mathchoice{\\\\mkern-3mu}{\\\\mkern-3mu}{}{}{:}\\\\mskip6mu\\\\relax\");\n// \\newcommand{\\boxed}[1]{\\fbox{\\m@th$\\displaystyle#1$}}\ndefineMacro(\"\\\\boxed\", \"\\\\fbox{$\\\\displaystyle{#1}$}\");\n// \\def\\iff{\\DOTSB\\;\\Longleftrightarrow\\;}\n// \\def\\implies{\\DOTSB\\;\\Longrightarrow\\;}\n// \\def\\impliedby{\\DOTSB\\;\\Longleftarrow\\;}\ndefineMacro(\"\\\\iff\", \"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\");\ndefineMacro(\"\\\\implies\", \"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\");\ndefineMacro(\"\\\\impliedby\", \"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\");\n// \\def\\dddot#1{{\\mathop{#1}\\limits^{\\vbox to-1.4\\ex@{\\kern-\\tw@\\ex@\n// \\hbox{\\normalfont ...}\\vss}}}}\n// We use \\overset which avoids the vertical shift of \\mathop.\ndefineMacro(\"\\\\dddot\", \"{\\\\overset{\\\\raisebox{-0.1ex}{\\\\normalsize ...}}{#1}}\");\ndefineMacro(\"\\\\ddddot\", \"{\\\\overset{\\\\raisebox{-0.1ex}{\\\\normalsize ....}}{#1}}\");\n// AMSMath's automatic \\dots, based on \\mdots@@ macro.\nvar dotsByToken = {\n ',': '\\\\dotsc',\n '\\\\not': '\\\\dotsb',\n // \\keybin@ checks for the following:\n '+': '\\\\dotsb',\n '=': '\\\\dotsb',\n '<': '\\\\dotsb',\n '>': '\\\\dotsb',\n '-': '\\\\dotsb',\n '*': '\\\\dotsb',\n ':': '\\\\dotsb',\n // Symbols whose definition starts with \\DOTSB:\n '\\\\DOTSB': '\\\\dotsb',\n '\\\\coprod': '\\\\dotsb',\n '\\\\bigvee': '\\\\dotsb',\n '\\\\bigwedge': '\\\\dotsb',\n '\\\\biguplus': '\\\\dotsb',\n '\\\\bigcap': '\\\\dotsb',\n '\\\\bigcup': '\\\\dotsb',\n '\\\\prod': '\\\\dotsb',\n '\\\\sum': '\\\\dotsb',\n '\\\\bigotimes': '\\\\dotsb',\n '\\\\bigoplus': '\\\\dotsb',\n '\\\\bigodot': '\\\\dotsb',\n '\\\\bigsqcup': '\\\\dotsb',\n '\\\\And': '\\\\dotsb',\n '\\\\longrightarrow': '\\\\dotsb',\n '\\\\Longrightarrow': '\\\\dotsb',\n '\\\\longleftarrow': '\\\\dotsb',\n '\\\\Longleftarrow': '\\\\dotsb',\n '\\\\longleftrightarrow': '\\\\dotsb',\n '\\\\Longleftrightarrow': '\\\\dotsb',\n '\\\\mapsto': '\\\\dotsb',\n '\\\\longmapsto': '\\\\dotsb',\n '\\\\hookrightarrow': '\\\\dotsb',\n '\\\\doteq': '\\\\dotsb',\n // Symbols whose definition starts with \\mathbin:\n '\\\\mathbin': '\\\\dotsb',\n // Symbols whose definition starts with \\mathrel:\n '\\\\mathrel': '\\\\dotsb',\n '\\\\relbar': '\\\\dotsb',\n '\\\\Relbar': '\\\\dotsb',\n '\\\\xrightarrow': '\\\\dotsb',\n '\\\\xleftarrow': '\\\\dotsb',\n // Symbols whose definition starts with \\DOTSI:\n '\\\\DOTSI': '\\\\dotsi',\n '\\\\int': '\\\\dotsi',\n '\\\\oint': '\\\\dotsi',\n '\\\\iint': '\\\\dotsi',\n '\\\\iiint': '\\\\dotsi',\n '\\\\iiiint': '\\\\dotsi',\n '\\\\idotsint': '\\\\dotsi',\n // Symbols whose definition starts with \\DOTSX:\n '\\\\DOTSX': '\\\\dotsx'\n};\nvar dotsbGroups = new Set(['bin', 'rel']);\ndefineMacro(\"\\\\dots\", function (context) {\n // TODO: If used in text mode, should expand to \\textellipsis.\n // However, in KaTeX, \\textellipsis and \\ldots behave the same\n // (in text mode), and it's unlikely we'd see any of the math commands\n // that affect the behavior of \\dots when in text mode. So fine for now\n // (until we support \\ifmmode ... \\else ... \\fi).\n var thedots = '\\\\dotso';\n var next = context.expandAfterFuture().text;\n if (next in dotsByToken) {\n thedots = dotsByToken[next];\n } else if (next.slice(0, 4) === '\\\\not') {\n thedots = '\\\\dotsb';\n } else if (next in symbols.math) {\n if (dotsbGroups.has(symbols.math[next].group)) {\n thedots = '\\\\dotsb';\n }\n }\n return thedots;\n});\nvar spaceAfterDots = {\n // \\rightdelim@ checks for the following:\n ')': true,\n ']': true,\n '\\\\rbrack': true,\n '\\\\}': true,\n '\\\\rbrace': true,\n '\\\\rangle': true,\n '\\\\rceil': true,\n '\\\\rfloor': true,\n '\\\\rgroup': true,\n '\\\\rmoustache': true,\n '\\\\right': true,\n '\\\\bigr': true,\n '\\\\biggr': true,\n '\\\\Bigr': true,\n '\\\\Biggr': true,\n // \\extra@ also tests for the following:\n '$': true,\n // \\extrap@ checks for the following:\n ';': true,\n '.': true,\n ',': true\n};\ndefineMacro(\"\\\\dotso\", function (context) {\n var next = context.future().text;\n if (next in spaceAfterDots) {\n return \"\\\\ldots\\\\,\";\n } else {\n return \"\\\\ldots\";\n }\n});\ndefineMacro(\"\\\\dotsc\", function (context) {\n var next = context.future().text;\n // \\dotsc uses \\extra@ but not \\extrap@, instead specially checking for\n // ';' and '.', but doesn't check for ','.\n if (next in spaceAfterDots && next !== ',') {\n return \"\\\\ldots\\\\,\";\n } else {\n return \"\\\\ldots\";\n }\n});\ndefineMacro(\"\\\\cdots\", function (context) {\n var next = context.future().text;\n if (next in spaceAfterDots) {\n return \"\\\\@cdots\\\\,\";\n } else {\n return \"\\\\@cdots\";\n }\n});\ndefineMacro(\"\\\\dotsb\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsm\", \"\\\\cdots\");\ndefineMacro(\"\\\\dotsi\", \"\\\\!\\\\cdots\");\n// amsmath doesn't actually define \\dotsx, but \\dots followed by a macro\n// starting with \\DOTSX implies \\dotso, and then \\extra@ detects this case\n// and forces the added `\\,`.\ndefineMacro(\"\\\\dotsx\", \"\\\\ldots\\\\,\");\n// \\let\\DOTSI\\relax\n// \\let\\DOTSB\\relax\n// \\let\\DOTSX\\relax\ndefineMacro(\"\\\\DOTSI\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSB\", \"\\\\relax\");\ndefineMacro(\"\\\\DOTSX\", \"\\\\relax\");\n// Spacing, based on amsmath.sty's override of LaTeX defaults\n// \\DeclareRobustCommand{\\tmspace}[3]{%\n// \\ifmmode\\mskip#1#2\\else\\kern#1#3\\fi\\relax}\ndefineMacro(\"\\\\tmspace\", \"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\");\n// \\renewcommand{\\,}{\\tmspace+\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\ndefineMacro(\"\\\\,\", \"\\\\tmspace+{3mu}{.1667em}\");\n// \\let\\thinspace\\,\ndefineMacro(\"\\\\thinspace\", \"\\\\,\");\n// \\def\\>{\\mskip\\medmuskip}\n// \\renewcommand{\\:}{\\tmspace+\\medmuskip{.2222em}}\n// TODO: \\> and math mode of \\: should use \\medmuskip = 4mu plus 2mu minus 4mu\ndefineMacro(\"\\\\>\", \"\\\\mskip{4mu}\");\ndefineMacro(\"\\\\:\", \"\\\\tmspace+{4mu}{.2222em}\");\n// \\let\\medspace\\:\ndefineMacro(\"\\\\medspace\", \"\\\\:\");\n// \\renewcommand{\\;}{\\tmspace+\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip = 5mu plus 5mu\ndefineMacro(\"\\\\;\", \"\\\\tmspace+{5mu}{.2777em}\");\n// \\let\\thickspace\\;\ndefineMacro(\"\\\\thickspace\", \"\\\\;\");\n// \\renewcommand{\\!}{\\tmspace-\\thinmuskip{.1667em}}\n// TODO: math mode should use \\thinmuskip\ndefineMacro(\"\\\\!\", \"\\\\tmspace-{3mu}{.1667em}\");\n// \\let\\negthinspace\\!\ndefineMacro(\"\\\\negthinspace\", \"\\\\!\");\n// \\newcommand{\\negmedspace}{\\tmspace-\\medmuskip{.2222em}}\n// TODO: math mode should use \\medmuskip\ndefineMacro(\"\\\\negmedspace\", \"\\\\tmspace-{4mu}{.2222em}\");\n// \\newcommand{\\negthickspace}{\\tmspace-\\thickmuskip{.2777em}}\n// TODO: math mode should use \\thickmuskip\ndefineMacro(\"\\\\negthickspace\", \"\\\\tmspace-{5mu}{.277em}\");\n// \\def\\enspace{\\kern.5em }\ndefineMacro(\"\\\\enspace\", \"\\\\kern.5em \");\n// \\def\\enskip{\\hskip.5em\\relax}\ndefineMacro(\"\\\\enskip\", \"\\\\hskip.5em\\\\relax\");\n// \\def\\quad{\\hskip1em\\relax}\ndefineMacro(\"\\\\quad\", \"\\\\hskip1em\\\\relax\");\n// \\def\\qquad{\\hskip2em\\relax}\ndefineMacro(\"\\\\qquad\", \"\\\\hskip2em\\\\relax\");\n// \\tag@in@display form of \\tag\ndefineMacro(\"\\\\tag\", \"\\\\@ifstar\\\\tag@literal\\\\tag@paren\");\ndefineMacro(\"\\\\tag@paren\", \"\\\\tag@literal{({#1})}\");\ndefineMacro(\"\\\\tag@literal\", context => {\n if (context.macros.get(\"\\\\df@tag\")) {\n throw new ParseError(\"Multiple \\\\tag\");\n }\n return \"\\\\gdef\\\\df@tag{\\\\text{#1}}\";\n});\n// \\renewcommand{\\bmod}{\\nonscript\\mskip-\\medmuskip\\mkern5mu\\mathbin\n// {\\operator@font mod}\\penalty900\n// \\mkern5mu\\nonscript\\mskip-\\medmuskip}\n// \\newcommand{\\pod}[1]{\\allowbreak\n// \\if@display\\mkern18mu\\else\\mkern8mu\\fi(#1)}\n// \\renewcommand{\\pmod}[1]{\\pod{{\\operator@font mod}\\mkern6mu#1}}\n// \\newcommand{\\mod}[1]{\\allowbreak\\if@display\\mkern18mu\n// \\else\\mkern12mu\\fi{\\operator@font mod}\\,\\,#1}\n// TODO: math mode should use \\medmuskip = 4mu plus 2mu minus 4mu\ndefineMacro(\"\\\\bmod\", \"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\" + \"\\\\mathbin{\\\\rm mod}\" + \"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\");\ndefineMacro(\"\\\\pod\", \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\");\ndefineMacro(\"\\\\pmod\", \"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\");\ndefineMacro(\"\\\\mod\", \"\\\\allowbreak\" + \"\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}\" + \"{\\\\rm mod}\\\\,\\\\,#1\");\n//////////////////////////////////////////////////////////////////////\n// LaTeX source2e\n// \\expandafter\\let\\expandafter\\@normalcr\n// \\csname\\expandafter\\@gobble\\string\\\\ \\endcsname\n// \\DeclareRobustCommand\\newline{\\@normalcr\\relax}\ndefineMacro(\"\\\\newline\", \"\\\\\\\\\\\\relax\");\n// \\def\\TeX{T\\kern-.1667em\\lower.5ex\\hbox{E}\\kern-.125emX\\@}\n// TODO: Doesn't normally work in math mode because \\@ fails. KaTeX doesn't\n// support \\@ yet, so that's omitted, and we add \\text so that the result\n// doesn't look funny in math mode.\ndefineMacro(\"\\\\TeX\", \"\\\\textrm{\\\\html@mathml{\" + \"T\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125emX\" + \"}{TeX}}\");\n// \\DeclareRobustCommand{\\LaTeX}{L\\kern-.36em%\n// {\\sbox\\z@ T%\n// \\vbox to\\ht\\z@{\\hbox{\\check@mathfonts\n// \\fontsize\\sf@size\\z@\n// \\math@fontsfalse\\selectfont\n// A}%\n// \\vss}%\n// }%\n// \\kern-.15em%\n// \\TeX}\n// This code aligns the top of the A with the T (from the perspective of TeX's\n// boxes, though visually the A appears to extend above slightly).\n// We compute the corresponding \\raisebox when A is rendered in \\normalsize\n// \\scriptstyle, which has a scale factor of 0.7 (see Options.js).\nvar latexRaiseA = makeEm(fontMetricsData['Main-Regular'][\"T\".charCodeAt(0)][1] - 0.7 * fontMetricsData['Main-Regular'][\"A\".charCodeAt(0)][1]);\ndefineMacro(\"\\\\LaTeX\", \"\\\\textrm{\\\\html@mathml{\" + (\"L\\\\kern-.36em\\\\raisebox{\" + latexRaiseA + \"}{\\\\scriptstyle A}\") + \"\\\\kern-.15em\\\\TeX}{LaTeX}}\");\n// New KaTeX logo based on tweaking LaTeX logo\ndefineMacro(\"\\\\KaTeX\", \"\\\\textrm{\\\\html@mathml{\" + (\"K\\\\kern-.17em\\\\raisebox{\" + latexRaiseA + \"}{\\\\scriptstyle A}\") + \"\\\\kern-.15em\\\\TeX}{KaTeX}}\");\n// \\DeclareRobustCommand\\hspace{\\@ifstar\\@hspacer\\@hspace}\n// \\def\\@hspace#1{\\hskip #1\\relax}\n// \\def\\@hspacer#1{\\vrule \\@width\\z@\\nobreak\n// \\hskip #1\\hskip \\z@skip}\ndefineMacro(\"\\\\hspace\", \"\\\\@ifstar\\\\@hspacer\\\\@hspace\");\ndefineMacro(\"\\\\@hspace\", \"\\\\hskip #1\\\\relax\");\ndefineMacro(\"\\\\@hspacer\", \"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\");\n//////////////////////////////////////////////////////////////////////\n// mathtools.sty\n//\\providecommand\\ordinarycolon{:}\ndefineMacro(\"\\\\ordinarycolon\", \":\");\n//\\def\\vcentcolon{\\mathrel{\\mathop\\ordinarycolon}}\n//TODO(edemaine): Not yet centered. Fix via \\raisebox or #726\ndefineMacro(\"\\\\vcentcolon\", \"\\\\mathrel{\\\\mathop\\\\ordinarycolon}\");\n// \\providecommand*\\dblcolon{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}\ndefineMacro(\"\\\\dblcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-.9mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2237}}\");\n// \\providecommand*\\coloneqq{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}\ndefineMacro(\"\\\\coloneqq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}=}}\" + \"{\\\\mathop{\\\\char\\\"2254}}\"); // \u2254\n// \\providecommand*\\Coloneqq{\\dblcolon\\mathrel{\\mkern-1.2mu}=}\ndefineMacro(\"\\\\Coloneqq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}=}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"3d}}\");\n// \\providecommand*\\coloneq{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\coloneq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"2212}}\");\n// \\providecommand*\\Coloneq{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}\ndefineMacro(\"\\\\Coloneq\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"2212}}\");\n// \\providecommand*\\eqqcolon{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}\ndefineMacro(\"\\\\eqqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2255}}\"); // \u2255\n// \\providecommand*\\Eqqcolon{=\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}\" + \"{\\\\mathop{\\\\char\\\"3d\\\\char\\\"2237}}\");\n// \\providecommand*\\eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}\ndefineMacro(\"\\\\eqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}\" + \"{\\\\mathop{\\\\char\\\"2239}}\");\n// \\providecommand*\\Eqcolon{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}\ndefineMacro(\"\\\\Eqcolon\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}\" + \"{\\\\mathop{\\\\char\\\"2212\\\\char\\\"2237}}\");\n// \\providecommand*\\colonapprox{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\colonapprox\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"2248}}\");\n// \\providecommand*\\Colonapprox{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}\ndefineMacro(\"\\\\Colonapprox\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"2248}}\");\n// \\providecommand*\\colonsim{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\colonsim\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}\" + \"{\\\\mathop{\\\\char\\\"3a\\\\char\\\"223c}}\");\n// \\providecommand*\\Colonsim{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}\ndefineMacro(\"\\\\Colonsim\", \"\\\\html@mathml{\" + \"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}\" + \"{\\\\mathop{\\\\char\\\"2237\\\\char\\\"223c}}\");\n// Some Unicode characters are implemented with macros to mathtools functions.\ndefineMacro(\"\\u2237\", \"\\\\dblcolon\"); // ::\ndefineMacro(\"\\u2239\", \"\\\\eqcolon\"); // -:\ndefineMacro(\"\\u2254\", \"\\\\coloneqq\"); // :=\ndefineMacro(\"\\u2255\", \"\\\\eqqcolon\"); // =:\ndefineMacro(\"\\u2A74\", \"\\\\Coloneqq\"); // ::=\n//////////////////////////////////////////////////////////////////////\n// colonequals.sty\n// Alternate names for mathtools's macros:\ndefineMacro(\"\\\\ratio\", \"\\\\vcentcolon\");\ndefineMacro(\"\\\\coloncolon\", \"\\\\dblcolon\");\ndefineMacro(\"\\\\colonequals\", \"\\\\coloneqq\");\ndefineMacro(\"\\\\coloncolonequals\", \"\\\\Coloneqq\");\ndefineMacro(\"\\\\equalscolon\", \"\\\\eqqcolon\");\ndefineMacro(\"\\\\equalscoloncolon\", \"\\\\Eqqcolon\");\ndefineMacro(\"\\\\colonminus\", \"\\\\coloneq\");\ndefineMacro(\"\\\\coloncolonminus\", \"\\\\Coloneq\");\ndefineMacro(\"\\\\minuscolon\", \"\\\\eqcolon\");\ndefineMacro(\"\\\\minuscoloncolon\", \"\\\\Eqcolon\");\n// \\colonapprox name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonapprox\", \"\\\\Colonapprox\");\n// \\colonsim name is same in mathtools and colonequals.\ndefineMacro(\"\\\\coloncolonsim\", \"\\\\Colonsim\");\n// Additional macros, implemented by analogy with mathtools definitions:\ndefineMacro(\"\\\\simcolon\", \"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\");\ndefineMacro(\"\\\\simcoloncolon\", \"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\");\ndefineMacro(\"\\\\approxcolon\", \"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\");\ndefineMacro(\"\\\\approxcoloncolon\", \"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\");\n// Present in newtxmath, pxfonts and txfonts\ndefineMacro(\"\\\\notni\", \"\\\\html@mathml{\\\\not\\\\ni}{\\\\mathrel{\\\\char`\\u220C}}\");\ndefineMacro(\"\\\\limsup\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,sup}\");\ndefineMacro(\"\\\\liminf\", \"\\\\DOTSB\\\\operatorname*{lim\\\\,inf}\");\n//////////////////////////////////////////////////////////////////////\n// From amsopn.sty\ndefineMacro(\"\\\\injlim\", \"\\\\DOTSB\\\\operatorname*{inj\\\\,lim}\");\ndefineMacro(\"\\\\projlim\", \"\\\\DOTSB\\\\operatorname*{proj\\\\,lim}\");\ndefineMacro(\"\\\\varlimsup\", \"\\\\DOTSB\\\\operatorname*{\\\\overline{lim}}\");\ndefineMacro(\"\\\\varliminf\", \"\\\\DOTSB\\\\operatorname*{\\\\underline{lim}}\");\ndefineMacro(\"\\\\varinjlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underrightarrow{lim}}\");\ndefineMacro(\"\\\\varprojlim\", \"\\\\DOTSB\\\\operatorname*{\\\\underleftarrow{lim}}\");\n//////////////////////////////////////////////////////////////////////\n// MathML alternates for KaTeX glyphs in the Unicode private area\ndefineMacro(\"\\\\gvertneqq\", \"\\\\html@mathml{\\\\@gvertneqq}{\\u2269}\");\ndefineMacro(\"\\\\lvertneqq\", \"\\\\html@mathml{\\\\@lvertneqq}{\\u2268}\");\ndefineMacro(\"\\\\ngeqq\", \"\\\\html@mathml{\\\\@ngeqq}{\\u2271}\");\ndefineMacro(\"\\\\ngeqslant\", \"\\\\html@mathml{\\\\@ngeqslant}{\\u2271}\");\ndefineMacro(\"\\\\nleqq\", \"\\\\html@mathml{\\\\@nleqq}{\\u2270}\");\ndefineMacro(\"\\\\nleqslant\", \"\\\\html@mathml{\\\\@nleqslant}{\\u2270}\");\ndefineMacro(\"\\\\nshortmid\", \"\\\\html@mathml{\\\\@nshortmid}{\u2224}\");\ndefineMacro(\"\\\\nshortparallel\", \"\\\\html@mathml{\\\\@nshortparallel}{\u2226}\");\ndefineMacro(\"\\\\nsubseteqq\", \"\\\\html@mathml{\\\\@nsubseteqq}{\\u2288}\");\ndefineMacro(\"\\\\nsupseteqq\", \"\\\\html@mathml{\\\\@nsupseteqq}{\\u2289}\");\ndefineMacro(\"\\\\varsubsetneq\", \"\\\\html@mathml{\\\\@varsubsetneq}{\u228A}\");\ndefineMacro(\"\\\\varsubsetneqq\", \"\\\\html@mathml{\\\\@varsubsetneqq}{\u2ACB}\");\ndefineMacro(\"\\\\varsupsetneq\", \"\\\\html@mathml{\\\\@varsupsetneq}{\u228B}\");\ndefineMacro(\"\\\\varsupsetneqq\", \"\\\\html@mathml{\\\\@varsupsetneqq}{\u2ACC}\");\ndefineMacro(\"\\\\imath\", \"\\\\html@mathml{\\\\@imath}{\\u0131}\");\ndefineMacro(\"\\\\jmath\", \"\\\\html@mathml{\\\\@jmath}{\\u0237}\");\n//////////////////////////////////////////////////////////////////////\n// stmaryrd and semantic\n// The stmaryrd and semantic packages render the next four items by calling a\n// glyph. Those glyphs do not exist in the KaTeX fonts. Hence the macros.\ndefineMacro(\"\\\\llbracket\", \"\\\\html@mathml{\" + \"\\\\mathopen{[\\\\mkern-3.2mu[}}\" + \"{\\\\mathopen{\\\\char`\\u27e6}}\");\ndefineMacro(\"\\\\rrbracket\", \"\\\\html@mathml{\" + \"\\\\mathclose{]\\\\mkern-3.2mu]}}\" + \"{\\\\mathclose{\\\\char`\\u27e7}}\");\ndefineMacro(\"\\u27e6\", \"\\\\llbracket\"); // blackboard bold [\ndefineMacro(\"\\u27e7\", \"\\\\rrbracket\"); // blackboard bold ]\ndefineMacro(\"\\\\lBrace\", \"\\\\html@mathml{\" + \"\\\\mathopen{\\\\{\\\\mkern-3.2mu[}}\" + \"{\\\\mathopen{\\\\char`\\u2983}}\");\ndefineMacro(\"\\\\rBrace\", \"\\\\html@mathml{\" + \"\\\\mathclose{]\\\\mkern-3.2mu\\\\}}}\" + \"{\\\\mathclose{\\\\char`\\u2984}}\");\ndefineMacro(\"\\u2983\", \"\\\\lBrace\"); // blackboard bold {\ndefineMacro(\"\\u2984\", \"\\\\rBrace\"); // blackboard bold }\n// TODO: Create variable sized versions of the last two items. I believe that\n// will require new font glyphs.\n// The stmaryrd function `\\minuso` provides a \"Plimsoll\" symbol that\n// superimposes the characters \\circ and \\mathminus. Used in chemistry.\ndefineMacro(\"\\\\minuso\", \"\\\\mathbin{\\\\html@mathml{\" + \"{\\\\mathrlap{\\\\mathchoice{\\\\kern{0.145em}}{\\\\kern{0.145em}}\" + \"{\\\\kern{0.1015em}}{\\\\kern{0.0725em}}\\\\circ}{-}}}\" + \"{\\\\char`\u29B5}}\");\ndefineMacro(\"\u29B5\", \"\\\\minuso\");\n//////////////////////////////////////////////////////////////////////\n// texvc.sty\n// The texvc package contains macros available in mediawiki pages.\n// We omit the functions deprecated at\n// https://en.wikipedia.org/wiki/Help:Displaying_a_formula#Deprecated_syntax\n// We also omit texvc's \\O, which conflicts with \\text{\\O}\ndefineMacro(\"\\\\darr\", \"\\\\downarrow\");\ndefineMacro(\"\\\\dArr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\Darr\", \"\\\\Downarrow\");\ndefineMacro(\"\\\\lang\", \"\\\\langle\");\ndefineMacro(\"\\\\rang\", \"\\\\rangle\");\ndefineMacro(\"\\\\uarr\", \"\\\\uparrow\");\ndefineMacro(\"\\\\uArr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\Uarr\", \"\\\\Uparrow\");\ndefineMacro(\"\\\\N\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\R\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Z\", \"\\\\mathbb{Z}\");\ndefineMacro(\"\\\\alef\", \"\\\\aleph\");\ndefineMacro(\"\\\\alefsym\", \"\\\\aleph\");\ndefineMacro(\"\\\\Alpha\", \"\\\\mathrm{A}\");\ndefineMacro(\"\\\\Beta\", \"\\\\mathrm{B}\");\ndefineMacro(\"\\\\bull\", \"\\\\bullet\");\ndefineMacro(\"\\\\Chi\", \"\\\\mathrm{X}\");\ndefineMacro(\"\\\\clubs\", \"\\\\clubsuit\");\ndefineMacro(\"\\\\cnums\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Complex\", \"\\\\mathbb{C}\");\ndefineMacro(\"\\\\Dagger\", \"\\\\ddagger\");\ndefineMacro(\"\\\\diamonds\", \"\\\\diamondsuit\");\ndefineMacro(\"\\\\empty\", \"\\\\emptyset\");\ndefineMacro(\"\\\\Epsilon\", \"\\\\mathrm{E}\");\ndefineMacro(\"\\\\Eta\", \"\\\\mathrm{H}\");\ndefineMacro(\"\\\\exist\", \"\\\\exists\");\ndefineMacro(\"\\\\harr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\hArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Harr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\hearts\", \"\\\\heartsuit\");\ndefineMacro(\"\\\\image\", \"\\\\Im\");\ndefineMacro(\"\\\\infin\", \"\\\\infty\");\ndefineMacro(\"\\\\Iota\", \"\\\\mathrm{I}\");\ndefineMacro(\"\\\\isin\", \"\\\\in\");\ndefineMacro(\"\\\\Kappa\", \"\\\\mathrm{K}\");\ndefineMacro(\"\\\\larr\", \"\\\\leftarrow\");\ndefineMacro(\"\\\\lArr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\Larr\", \"\\\\Leftarrow\");\ndefineMacro(\"\\\\lrarr\", \"\\\\leftrightarrow\");\ndefineMacro(\"\\\\lrArr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Lrarr\", \"\\\\Leftrightarrow\");\ndefineMacro(\"\\\\Mu\", \"\\\\mathrm{M}\");\ndefineMacro(\"\\\\natnums\", \"\\\\mathbb{N}\");\ndefineMacro(\"\\\\Nu\", \"\\\\mathrm{N}\");\ndefineMacro(\"\\\\Omicron\", \"\\\\mathrm{O}\");\ndefineMacro(\"\\\\plusmn\", \"\\\\pm\");\ndefineMacro(\"\\\\rarr\", \"\\\\rightarrow\");\ndefineMacro(\"\\\\rArr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\Rarr\", \"\\\\Rightarrow\");\ndefineMacro(\"\\\\real\", \"\\\\Re\");\ndefineMacro(\"\\\\reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Reals\", \"\\\\mathbb{R}\");\ndefineMacro(\"\\\\Rho\", \"\\\\mathrm{P}\");\ndefineMacro(\"\\\\sdot\", \"\\\\cdot\");\ndefineMacro(\"\\\\sect\", \"\\\\S\");\ndefineMacro(\"\\\\spades\", \"\\\\spadesuit\");\ndefineMacro(\"\\\\sub\", \"\\\\subset\");\ndefineMacro(\"\\\\sube\", \"\\\\subseteq\");\ndefineMacro(\"\\\\supe\", \"\\\\supseteq\");\ndefineMacro(\"\\\\Tau\", \"\\\\mathrm{T}\");\ndefineMacro(\"\\\\thetasym\", \"\\\\vartheta\");\n// TODO: defineMacro(\"\\\\varcoppa\", \"\\\\\\mbox{\\\\coppa}\");\ndefineMacro(\"\\\\weierp\", \"\\\\wp\");\ndefineMacro(\"\\\\Zeta\", \"\\\\mathrm{Z}\");\n//////////////////////////////////////////////////////////////////////\n// statmath.sty\n// https://ctan.math.illinois.edu/macros/latex/contrib/statmath/statmath.pdf\ndefineMacro(\"\\\\argmin\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,min}\");\ndefineMacro(\"\\\\argmax\", \"\\\\DOTSB\\\\operatorname*{arg\\\\,max}\");\ndefineMacro(\"\\\\plim\", \"\\\\DOTSB\\\\mathop{\\\\operatorname{plim}}\\\\limits\");\n//////////////////////////////////////////////////////////////////////\n// braket.sty\n// http://ctan.math.washington.edu/tex-archive/macros/latex/contrib/braket/braket.pdf\ndefineMacro(\"\\\\bra\", \"\\\\mathinner{\\\\langle{#1}|}\");\ndefineMacro(\"\\\\ket\", \"\\\\mathinner{|{#1}\\\\rangle}\");\ndefineMacro(\"\\\\braket\", \"\\\\mathinner{\\\\langle{#1}\\\\rangle}\");\ndefineMacro(\"\\\\Bra\", \"\\\\left\\\\langle#1\\\\right|\");\ndefineMacro(\"\\\\Ket\", \"\\\\left|#1\\\\right\\\\rangle\");\nvar braketHelper = one => context => {\n var left = context.consumeArg().tokens;\n var middle = context.consumeArg().tokens;\n var middleDouble = context.consumeArg().tokens;\n var right = context.consumeArg().tokens;\n var oldMiddle = context.macros.get(\"|\");\n var oldMiddleDouble = context.macros.get(\"\\\\|\");\n context.macros.beginGroup();\n var midMacro = double => context => {\n if (one) {\n // Only modify the first instance of | or \\|\n context.macros.set(\"|\", oldMiddle);\n if (middleDouble.length) {\n context.macros.set(\"\\\\|\", oldMiddleDouble);\n }\n }\n var doubled = double;\n if (!double && middleDouble.length) {\n // Mimic \\@ifnextchar\n var nextToken = context.future();\n if (nextToken.text === \"|\") {\n context.popToken();\n doubled = true;\n }\n }\n return {\n tokens: doubled ? middleDouble : middle,\n numArgs: 0\n };\n };\n context.macros.set(\"|\", midMacro(false));\n if (middleDouble.length) {\n context.macros.set(\"\\\\|\", midMacro(true));\n }\n var arg = context.consumeArg().tokens;\n var expanded = context.expandTokens([...right, ...arg, ...left // reversed\n ]);\n context.macros.endGroup();\n return {\n tokens: expanded.reverse(),\n numArgs: 0\n };\n};\ndefineMacro(\"\\\\bra@ket\", braketHelper(false));\ndefineMacro(\"\\\\bra@set\", braketHelper(true));\ndefineMacro(\"\\\\Braket\", \"\\\\bra@ket{\\\\left\\\\langle}\" + \"{\\\\,\\\\middle\\\\vert\\\\,}{\\\\,\\\\middle\\\\vert\\\\,}{\\\\right\\\\rangle}\");\ndefineMacro(\"\\\\Set\", \"\\\\bra@set{\\\\left\\\\{\\\\:}\" + \"{\\\\;\\\\middle\\\\vert\\\\;}{\\\\;\\\\middle\\\\Vert\\\\;}{\\\\:\\\\right\\\\}}\");\ndefineMacro(\"\\\\set\", \"\\\\bra@set{\\\\{\\\\,}{\\\\mid}{}{\\\\,\\\\}}\");\n// has no support for special || or \\|\n//////////////////////////////////////////////////////////////////////\n// actuarialangle.dtx\ndefineMacro(\"\\\\angln\", \"{\\\\angl n}\");\n// Custom Khan Academy colors, should be moved to an optional package\ndefineMacro(\"\\\\blue\", \"\\\\textcolor{##6495ed}{#1}\");\ndefineMacro(\"\\\\orange\", \"\\\\textcolor{##ffa500}{#1}\");\ndefineMacro(\"\\\\pink\", \"\\\\textcolor{##ff00af}{#1}\");\ndefineMacro(\"\\\\red\", \"\\\\textcolor{##df0030}{#1}\");\ndefineMacro(\"\\\\green\", \"\\\\textcolor{##28ae7b}{#1}\");\ndefineMacro(\"\\\\gray\", \"\\\\textcolor{gray}{#1}\");\ndefineMacro(\"\\\\purple\", \"\\\\textcolor{##9d38bd}{#1}\");\ndefineMacro(\"\\\\blueA\", \"\\\\textcolor{##ccfaff}{#1}\");\ndefineMacro(\"\\\\blueB\", \"\\\\textcolor{##80f6ff}{#1}\");\ndefineMacro(\"\\\\blueC\", \"\\\\textcolor{##63d9ea}{#1}\");\ndefineMacro(\"\\\\blueD\", \"\\\\textcolor{##11accd}{#1}\");\ndefineMacro(\"\\\\blueE\", \"\\\\textcolor{##0c7f99}{#1}\");\ndefineMacro(\"\\\\tealA\", \"\\\\textcolor{##94fff5}{#1}\");\ndefineMacro(\"\\\\tealB\", \"\\\\textcolor{##26edd5}{#1}\");\ndefineMacro(\"\\\\tealC\", \"\\\\textcolor{##01d1c1}{#1}\");\ndefineMacro(\"\\\\tealD\", \"\\\\textcolor{##01a995}{#1}\");\ndefineMacro(\"\\\\tealE\", \"\\\\textcolor{##208170}{#1}\");\ndefineMacro(\"\\\\greenA\", \"\\\\textcolor{##b6ffb0}{#1}\");\ndefineMacro(\"\\\\greenB\", \"\\\\textcolor{##8af281}{#1}\");\ndefineMacro(\"\\\\greenC\", \"\\\\textcolor{##74cf70}{#1}\");\ndefineMacro(\"\\\\greenD\", \"\\\\textcolor{##1fab54}{#1}\");\ndefineMacro(\"\\\\greenE\", \"\\\\textcolor{##0d923f}{#1}\");\ndefineMacro(\"\\\\goldA\", \"\\\\textcolor{##ffd0a9}{#1}\");\ndefineMacro(\"\\\\goldB\", \"\\\\textcolor{##ffbb71}{#1}\");\ndefineMacro(\"\\\\goldC\", \"\\\\textcolor{##ff9c39}{#1}\");\ndefineMacro(\"\\\\goldD\", \"\\\\textcolor{##e07d10}{#1}\");\ndefineMacro(\"\\\\goldE\", \"\\\\textcolor{##a75a05}{#1}\");\ndefineMacro(\"\\\\redA\", \"\\\\textcolor{##fca9a9}{#1}\");\ndefineMacro(\"\\\\redB\", \"\\\\textcolor{##ff8482}{#1}\");\ndefineMacro(\"\\\\redC\", \"\\\\textcolor{##f9685d}{#1}\");\ndefineMacro(\"\\\\redD\", \"\\\\textcolor{##e84d39}{#1}\");\ndefineMacro(\"\\\\redE\", \"\\\\textcolor{##bc2612}{#1}\");\ndefineMacro(\"\\\\maroonA\", \"\\\\textcolor{##ffbde0}{#1}\");\ndefineMacro(\"\\\\maroonB\", \"\\\\textcolor{##ff92c6}{#1}\");\ndefineMacro(\"\\\\maroonC\", \"\\\\textcolor{##ed5fa6}{#1}\");\ndefineMacro(\"\\\\maroonD\", \"\\\\textcolor{##ca337c}{#1}\");\ndefineMacro(\"\\\\maroonE\", \"\\\\textcolor{##9e034e}{#1}\");\ndefineMacro(\"\\\\purpleA\", \"\\\\textcolor{##ddd7ff}{#1}\");\ndefineMacro(\"\\\\purpleB\", \"\\\\textcolor{##c6b9fc}{#1}\");\ndefineMacro(\"\\\\purpleC\", \"\\\\textcolor{##aa87ff}{#1}\");\ndefineMacro(\"\\\\purpleD\", \"\\\\textcolor{##7854ab}{#1}\");\ndefineMacro(\"\\\\purpleE\", \"\\\\textcolor{##543b78}{#1}\");\ndefineMacro(\"\\\\mintA\", \"\\\\textcolor{##f5f9e8}{#1}\");\ndefineMacro(\"\\\\mintB\", \"\\\\textcolor{##edf2df}{#1}\");\ndefineMacro(\"\\\\mintC\", \"\\\\textcolor{##e0e5cc}{#1}\");\ndefineMacro(\"\\\\grayA\", \"\\\\textcolor{##f6f7f7}{#1}\");\ndefineMacro(\"\\\\grayB\", \"\\\\textcolor{##f0f1f2}{#1}\");\ndefineMacro(\"\\\\grayC\", \"\\\\textcolor{##e3e5e6}{#1}\");\ndefineMacro(\"\\\\grayD\", \"\\\\textcolor{##d6d8da}{#1}\");\ndefineMacro(\"\\\\grayE\", \"\\\\textcolor{##babec2}{#1}\");\ndefineMacro(\"\\\\grayF\", \"\\\\textcolor{##888d93}{#1}\");\ndefineMacro(\"\\\\grayG\", \"\\\\textcolor{##626569}{#1}\");\ndefineMacro(\"\\\\grayH\", \"\\\\textcolor{##3b3e40}{#1}\");\ndefineMacro(\"\\\\grayI\", \"\\\\textcolor{##21242c}{#1}\");\ndefineMacro(\"\\\\kaBlue\", \"\\\\textcolor{##314453}{#1}\");\ndefineMacro(\"\\\\kaGreen\", \"\\\\textcolor{##71B307}{#1}\");\n\n/**\n * This file contains the \u201Cgullet\u201D where macros are expanded\n * until only non-macro tokens remain.\n */\n// List of commands that act like macros but aren't defined as a macro,\n// function, or symbol. Used in `isDefined`.\nvar implicitCommands = {\n \"^\": true,\n // Parser.js\n \"_\": true,\n // Parser.js\n \"\\\\limits\": true,\n // Parser.js\n \"\\\\nolimits\": true // Parser.js\n};\nclass MacroExpander {\n constructor(input, settings, mode) {\n this.settings = settings;\n this.expansionCount = 0;\n this.feed(input);\n // Make new global namespace\n this.macros = new Namespace(macros, settings.macros);\n this.mode = mode;\n this.stack = []; // contains tokens in REVERSE order\n }\n /**\n * Feed a new input string to the same MacroExpander\n * (with existing macros etc.).\n */\n feed(input) {\n this.lexer = new Lexer(input, this.settings);\n }\n /**\n * Switches between \"text\" and \"math\" modes.\n */\n switchMode(newMode) {\n this.mode = newMode;\n }\n /**\n * Start a new group nesting within all namespaces.\n */\n beginGroup() {\n this.macros.beginGroup();\n }\n /**\n * End current group nesting within all namespaces.\n */\n endGroup() {\n this.macros.endGroup();\n }\n /**\n * Ends all currently nested groups (if any), restoring values before the\n * groups began. Useful in case of an error in the middle of parsing.\n */\n endGroups() {\n this.macros.endGroups();\n }\n /**\n * Returns the topmost token on the stack, without expanding it.\n * Similar in behavior to TeX's `\\futurelet`.\n */\n future() {\n if (this.stack.length === 0) {\n this.pushToken(this.lexer.lex());\n }\n return this.stack[this.stack.length - 1];\n }\n /**\n * Remove and return the next unexpanded token.\n */\n popToken() {\n this.future(); // ensure non-empty stack\n return this.stack.pop();\n }\n /**\n * Add a given token to the token stack. In particular, this get be used\n * to put back a token returned from one of the other methods.\n */\n pushToken(token) {\n this.stack.push(token);\n }\n /**\n * Append an array of tokens to the token stack.\n */\n pushTokens(tokens) {\n this.stack.push(...tokens);\n }\n /**\n * Find an macro argument without expanding tokens and append the array of\n * tokens to the token stack. Uses Token as a container for the result.\n */\n scanArgument(isOptional) {\n var start;\n var end;\n var tokens;\n if (isOptional) {\n this.consumeSpaces(); // \\@ifnextchar gobbles any space following it\n if (this.future().text !== \"[\") {\n return null;\n }\n start = this.popToken(); // don't include [ in tokens\n ({\n tokens,\n end\n } = this.consumeArg([\"]\"]));\n } else {\n ({\n tokens,\n start,\n end\n } = this.consumeArg());\n }\n // indicate the end of an argument\n this.pushToken(new Token(\"EOF\", end.loc));\n this.pushTokens(tokens);\n return new Token(\"\", SourceLocation.range(start, end));\n }\n /**\n * Consume all following space tokens, without expansion.\n */\n consumeSpaces() {\n for (;;) {\n var token = this.future();\n if (token.text === \" \") {\n this.stack.pop();\n } else {\n break;\n }\n }\n }\n /**\n * Consume an argument from the token stream, and return the resulting array\n * of tokens and start/end token.\n */\n consumeArg(delims) {\n // The argument for a delimited parameter is the shortest (possibly\n // empty) sequence of tokens with properly nested {...} groups that is\n // followed ... by this particular list of non-parameter tokens.\n // The argument for an undelimited parameter is the next nonblank\n // token, unless that token is \u2018{\u2019, when the argument will be the\n // entire {...} group that follows.\n var tokens = [];\n var isDelimited = delims && delims.length > 0;\n if (!isDelimited) {\n // Ignore spaces between arguments. As the TeXbook says:\n // \"After you have said \u2018\\def\\row#1#2{...}\u2019, you are allowed to\n // put spaces between the arguments (e.g., \u2018\\row x n\u2019), because\n // TeX doesn\u2019t use single spaces as undelimited arguments.\"\n this.consumeSpaces();\n }\n var start = this.future();\n var tok;\n var depth = 0;\n var match = 0;\n do {\n tok = this.popToken();\n tokens.push(tok);\n if (tok.text === \"{\") {\n ++depth;\n } else if (tok.text === \"}\") {\n --depth;\n if (depth === -1) {\n throw new ParseError(\"Extra }\", tok);\n }\n } else if (tok.text === \"EOF\") {\n throw new ParseError(\"Unexpected end of input in a macro argument\" + \", expected '\" + (delims && isDelimited ? delims[match] : \"}\") + \"'\", tok);\n }\n if (delims && isDelimited) {\n if ((depth === 0 || depth === 1 && delims[match] === \"{\") && tok.text === delims[match]) {\n ++match;\n if (match === delims.length) {\n // don't include delims in tokens\n tokens.splice(-match, match);\n break;\n }\n } else {\n match = 0;\n }\n }\n } while (depth !== 0 || isDelimited);\n // If the argument found ... has the form \u2018{<nested tokens>}\u2019,\n // ... the outermost braces enclosing the argument are removed\n if (start.text === \"{\" && tokens[tokens.length - 1].text === \"}\") {\n tokens.pop();\n tokens.shift();\n }\n tokens.reverse(); // to fit in with stack order\n return {\n tokens,\n start,\n end: tok\n };\n }\n /**\n * Consume the specified number of (delimited) arguments from the token\n * stream and return the resulting array of arguments.\n */\n consumeArgs(numArgs, delimiters) {\n if (delimiters) {\n if (delimiters.length !== numArgs + 1) {\n throw new ParseError(\"The length of delimiters doesn't match the number of args!\");\n }\n var delims = delimiters[0];\n for (var i = 0; i < delims.length; i++) {\n var tok = this.popToken();\n if (delims[i] !== tok.text) {\n throw new ParseError(\"Use of the macro doesn't match its definition\", tok);\n }\n }\n }\n var args = [];\n for (var _i = 0; _i < numArgs; _i++) {\n args.push(this.consumeArg(delimiters && delimiters[_i + 1]).tokens);\n }\n return args;\n }\n /**\n * Increment `expansionCount` by the specified amount.\n * Throw an error if it exceeds `maxExpand`.\n */\n countExpansion(amount) {\n this.expansionCount += amount;\n if (this.expansionCount > this.settings.maxExpand) {\n throw new ParseError(\"Too many expansions: infinite loop or \" + \"need to increase maxExpand setting\");\n }\n }\n /**\n * Expand the next token only once if possible.\n *\n * If the token is expanded, the resulting tokens will be pushed onto\n * the stack in reverse order, and the number of such tokens will be\n * returned. This number might be zero or positive.\n *\n * If not, the return value is `false`, and the next token remains at the\n * top of the stack.\n *\n * In either case, the next token will be on the top of the stack,\n * or the stack will be empty (in case of empty expansion\n * and no other tokens).\n *\n * Used to implement `expandAfterFuture` and `expandNextToken`.\n *\n * If expandableOnly, only expandable tokens are expanded and\n * an undefined control sequence results in an error.\n */\n expandOnce(expandableOnly) {\n var topToken = this.popToken();\n var name = topToken.text;\n var expansion = !topToken.noexpand ? this._getExpansion(name) : null;\n if (expansion == null || expandableOnly && expansion.unexpandable) {\n if (expandableOnly && expansion == null && name[0] === \"\\\\\" && !this.isDefined(name)) {\n throw new ParseError(\"Undefined control sequence: \" + name);\n }\n this.pushToken(topToken);\n return false;\n }\n this.countExpansion(1);\n var tokens = expansion.tokens;\n var args = this.consumeArgs(expansion.numArgs, expansion.delimiters);\n if (expansion.numArgs) {\n // paste arguments in place of the placeholders\n tokens = tokens.slice(); // make a shallow copy\n for (var i = tokens.length - 1; i >= 0; --i) {\n var tok = tokens[i];\n if (tok.text === \"#\") {\n if (i === 0) {\n throw new ParseError(\"Incomplete placeholder at end of macro body\", tok);\n }\n tok = tokens[--i]; // next token on stack\n if (tok.text === \"#\") {\n // ## \u2192 #\n tokens.splice(i + 1, 1); // drop first #\n } else if (/^[1-9]$/.test(tok.text)) {\n // replace the placeholder with the indicated argument\n tokens.splice(i, 2, ...args[+tok.text - 1]);\n } else {\n throw new ParseError(\"Not a valid argument number\", tok);\n }\n }\n }\n }\n // Concatenate expansion onto top of stack.\n this.pushTokens(tokens);\n return tokens.length;\n }\n /**\n * Expand the next token only once (if possible), and return the resulting\n * top token on the stack (without removing anything from the stack).\n * Similar in behavior to TeX's `\\expandafter\\futurelet`.\n * Equivalent to expandOnce() followed by future().\n */\n expandAfterFuture() {\n this.expandOnce();\n return this.future();\n }\n /**\n * Recursively expand first token, then return first non-expandable token.\n */\n expandNextToken() {\n for (;;) {\n if (this.expandOnce() === false) {\n // fully expanded\n var token = this.stack.pop();\n // the token after \\noexpand is interpreted as if its meaning\n // were \u2018\\relax\u2019\n if (token.treatAsRelax) {\n token.text = \"\\\\relax\";\n }\n return token;\n }\n }\n }\n /**\n * Fully expand the given macro name and return the resulting list of\n * tokens, or return `undefined` if no such macro is defined.\n */\n expandMacro(name) {\n return this.macros.has(name) ? this.expandTokens([new Token(name)]) : undefined;\n }\n /**\n * Fully expand the given token stream and return the resulting list of\n * tokens. Note that the input tokens are in reverse order, but the\n * output tokens are in forward order.\n */\n expandTokens(tokens) {\n var output = [];\n var oldStackLength = this.stack.length;\n this.pushTokens(tokens);\n while (this.stack.length > oldStackLength) {\n // Expand only expandable tokens\n if (this.expandOnce(true) === false) {\n // fully expanded\n var token = this.stack.pop();\n if (token.treatAsRelax) {\n // the expansion of \\noexpand is the token itself\n token.noexpand = false;\n token.treatAsRelax = false;\n }\n output.push(token);\n }\n }\n // Count all of these tokens as additional expansions, to prevent\n // exponential blowup from linearly many \\edef's.\n this.countExpansion(output.length);\n return output;\n }\n /**\n * Fully expand the given macro name and return the result as a string,\n * or return `undefined` if no such macro is defined.\n */\n expandMacroAsText(name) {\n var tokens = this.expandMacro(name);\n if (tokens) {\n return tokens.map(token => token.text).join(\"\");\n } else {\n return tokens;\n }\n }\n /**\n * Returns the expanded macro as a reversed array of tokens and a macro\n * argument count. Or returns `null` if no such macro.\n */\n _getExpansion(name) {\n var definition = this.macros.get(name);\n if (definition == null) {\n // mainly checking for undefined here\n return definition;\n }\n // If a single character has an associated catcode other than 13\n // (active character), then don't expand it.\n if (name.length === 1) {\n var catcode = this.lexer.catcodes[name];\n if (catcode != null && catcode !== 13) {\n return;\n }\n }\n var expansion = typeof definition === \"function\" ? definition(this) : definition;\n if (typeof expansion === \"string\") {\n var numArgs = 0;\n if (expansion.includes(\"#\")) {\n var stripped = expansion.replace(/##/g, \"\");\n while (stripped.includes(\"#\" + (numArgs + 1))) {\n ++numArgs;\n }\n }\n var bodyLexer = new Lexer(expansion, this.settings);\n var tokens = [];\n var tok = bodyLexer.lex();\n while (tok.text !== \"EOF\") {\n tokens.push(tok);\n tok = bodyLexer.lex();\n }\n tokens.reverse(); // to fit in with stack using push and pop\n var expanded = {\n tokens,\n numArgs\n };\n return expanded;\n }\n return expansion;\n }\n /**\n * Determine whether a command is currently \"defined\" (has some\n * functionality), meaning that it's a macro (in the current group),\n * a function, a symbol, or one of the special commands listed in\n * `implicitCommands`.\n */\n isDefined(name) {\n return this.macros.has(name) || functions.hasOwnProperty(name) || symbols.math.hasOwnProperty(name) || symbols.text.hasOwnProperty(name) || implicitCommands.hasOwnProperty(name);\n }\n /**\n * Determine whether a command is expandable.\n */\n isExpandable(name) {\n var macro = this.macros.get(name);\n return macro != null ? typeof macro === \"string\" || typeof macro === \"function\" || !macro.unexpandable : functions.hasOwnProperty(name) && !functions[name].primitive;\n }\n}\n\n// Helpers for Parser.js handling of Unicode (sub|super)script characters.\nvar unicodeSubRegEx = /^[\u208A\u208B\u208C\u208D\u208E\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1D62\u2C7C\u2096\u2097\u2098\u2099\u2092\u209A\u1D63\u209B\u209C\u1D64\u1D65\u2093\u1D66\u1D67\u1D68\u1D69\u1D6A]/;\nvar uSubsAndSups = Object.freeze({\n '\u208A': '+',\n '\u208B': '-',\n '\u208C': '=',\n '\u208D': '(',\n '\u208E': ')',\n '\u2080': '0',\n '\u2081': '1',\n '\u2082': '2',\n '\u2083': '3',\n '\u2084': '4',\n '\u2085': '5',\n '\u2086': '6',\n '\u2087': '7',\n '\u2088': '8',\n '\u2089': '9',\n '\\u2090': 'a',\n '\\u2091': 'e',\n '\\u2095': 'h',\n '\\u1D62': 'i',\n '\\u2C7C': 'j',\n '\\u2096': 'k',\n '\\u2097': 'l',\n '\\u2098': 'm',\n '\\u2099': 'n',\n '\\u2092': 'o',\n '\\u209A': 'p',\n '\\u1D63': 'r',\n '\\u209B': 's',\n '\\u209C': 't',\n '\\u1D64': 'u',\n '\\u1D65': 'v',\n '\\u2093': 'x',\n '\\u1D66': '\u03B2',\n '\\u1D67': '\u03B3',\n '\\u1D68': '\u03C1',\n '\\u1D69': '\\u03d5',\n '\\u1D6A': '\u03C7',\n '\u207A': '+',\n '\u207B': '-',\n '\u207C': '=',\n '\u207D': '(',\n '\u207E': ')',\n '\u2070': '0',\n '\u00B9': '1',\n '\u00B2': '2',\n '\u00B3': '3',\n '\u2074': '4',\n '\u2075': '5',\n '\u2076': '6',\n '\u2077': '7',\n '\u2078': '8',\n '\u2079': '9',\n '\\u1D2C': 'A',\n '\\u1D2E': 'B',\n '\\u1D30': 'D',\n '\\u1D31': 'E',\n '\\u1D33': 'G',\n '\\u1D34': 'H',\n '\\u1D35': 'I',\n '\\u1D36': 'J',\n '\\u1D37': 'K',\n '\\u1D38': 'L',\n '\\u1D39': 'M',\n '\\u1D3A': 'N',\n '\\u1D3C': 'O',\n '\\u1D3E': 'P',\n '\\u1D3F': 'R',\n '\\u1D40': 'T',\n '\\u1D41': 'U',\n '\\u2C7D': 'V',\n '\\u1D42': 'W',\n '\\u1D43': 'a',\n '\\u1D47': 'b',\n '\\u1D9C': 'c',\n '\\u1D48': 'd',\n '\\u1D49': 'e',\n '\\u1DA0': 'f',\n '\\u1D4D': 'g',\n '\\u02B0': 'h',\n '\\u2071': 'i',\n '\\u02B2': 'j',\n '\\u1D4F': 'k',\n '\\u02E1': 'l',\n '\\u1D50': 'm',\n '\\u207F': 'n',\n '\\u1D52': 'o',\n '\\u1D56': 'p',\n '\\u02B3': 'r',\n '\\u02E2': 's',\n '\\u1D57': 't',\n '\\u1D58': 'u',\n '\\u1D5B': 'v',\n '\\u02B7': 'w',\n '\\u02E3': 'x',\n '\\u02B8': 'y',\n '\\u1DBB': 'z',\n '\\u1D5D': '\u03B2',\n '\\u1D5E': '\u03B3',\n '\\u1D5F': '\u03B4',\n '\\u1D60': '\\u03d5',\n '\\u1D61': '\u03C7',\n '\\u1DBF': '\u03B8'\n});\n\n/* eslint no-constant-condition:0 */\n// Pre-evaluate both modules as unicodeSymbols require String.normalize()\nvar unicodeAccents = {\n \"\u0301\": {\n \"text\": \"\\\\'\",\n \"math\": \"\\\\acute\"\n },\n \"\u0300\": {\n \"text\": \"\\\\`\",\n \"math\": \"\\\\grave\"\n },\n \"\u0308\": {\n \"text\": \"\\\\\\\"\",\n \"math\": \"\\\\ddot\"\n },\n \"\u0303\": {\n \"text\": \"\\\\~\",\n \"math\": \"\\\\tilde\"\n },\n \"\u0304\": {\n \"text\": \"\\\\=\",\n \"math\": \"\\\\bar\"\n },\n \"\u0306\": {\n \"text\": \"\\\\u\",\n \"math\": \"\\\\breve\"\n },\n \"\u030C\": {\n \"text\": \"\\\\v\",\n \"math\": \"\\\\check\"\n },\n \"\u0302\": {\n \"text\": \"\\\\^\",\n \"math\": \"\\\\hat\"\n },\n \"\u0307\": {\n \"text\": \"\\\\.\",\n \"math\": \"\\\\dot\"\n },\n \"\u030A\": {\n \"text\": \"\\\\r\",\n \"math\": \"\\\\mathring\"\n },\n \"\u030B\": {\n \"text\": \"\\\\H\"\n },\n \"\u0327\": {\n \"text\": \"\\\\c\"\n }\n};\nvar unicodeSymbols = {\n \"\u00E1\": \"a\u0301\",\n \"\u00E0\": \"a\u0300\",\n \"\u00E4\": \"a\u0308\",\n \"\u01DF\": \"a\u0308\u0304\",\n \"\u00E3\": \"a\u0303\",\n \"\u0101\": \"a\u0304\",\n \"\u0103\": \"a\u0306\",\n \"\u1EAF\": \"a\u0306\u0301\",\n \"\u1EB1\": \"a\u0306\u0300\",\n \"\u1EB5\": \"a\u0306\u0303\",\n \"\u01CE\": \"a\u030C\",\n \"\u00E2\": \"a\u0302\",\n \"\u1EA5\": \"a\u0302\u0301\",\n \"\u1EA7\": \"a\u0302\u0300\",\n \"\u1EAB\": \"a\u0302\u0303\",\n \"\u0227\": \"a\u0307\",\n \"\u01E1\": \"a\u0307\u0304\",\n \"\u00E5\": \"a\u030A\",\n \"\u01FB\": \"a\u030A\u0301\",\n \"\u1E03\": \"b\u0307\",\n \"\u0107\": \"c\u0301\",\n \"\u1E09\": \"c\u0327\u0301\",\n \"\u010D\": \"c\u030C\",\n \"\u0109\": \"c\u0302\",\n \"\u010B\": \"c\u0307\",\n \"\u00E7\": \"c\u0327\",\n \"\u010F\": \"d\u030C\",\n \"\u1E0B\": \"d\u0307\",\n \"\u1E11\": \"d\u0327\",\n \"\u00E9\": \"e\u0301\",\n \"\u00E8\": \"e\u0300\",\n \"\u00EB\": \"e\u0308\",\n \"\u1EBD\": \"e\u0303\",\n \"\u0113\": \"e\u0304\",\n \"\u1E17\": \"e\u0304\u0301\",\n \"\u1E15\": \"e\u0304\u0300\",\n \"\u0115\": \"e\u0306\",\n \"\u1E1D\": \"e\u0327\u0306\",\n \"\u011B\": \"e\u030C\",\n \"\u00EA\": \"e\u0302\",\n \"\u1EBF\": \"e\u0302\u0301\",\n \"\u1EC1\": \"e\u0302\u0300\",\n \"\u1EC5\": \"e\u0302\u0303\",\n \"\u0117\": \"e\u0307\",\n \"\u0229\": \"e\u0327\",\n \"\u1E1F\": \"f\u0307\",\n \"\u01F5\": \"g\u0301\",\n \"\u1E21\": \"g\u0304\",\n \"\u011F\": \"g\u0306\",\n \"\u01E7\": \"g\u030C\",\n \"\u011D\": \"g\u0302\",\n \"\u0121\": \"g\u0307\",\n \"\u0123\": \"g\u0327\",\n \"\u1E27\": \"h\u0308\",\n \"\u021F\": \"h\u030C\",\n \"\u0125\": \"h\u0302\",\n \"\u1E23\": \"h\u0307\",\n \"\u1E29\": \"h\u0327\",\n \"\u00ED\": \"i\u0301\",\n \"\u00EC\": \"i\u0300\",\n \"\u00EF\": \"i\u0308\",\n \"\u1E2F\": \"i\u0308\u0301\",\n \"\u0129\": \"i\u0303\",\n \"\u012B\": \"i\u0304\",\n \"\u012D\": \"i\u0306\",\n \"\u01D0\": \"i\u030C\",\n \"\u00EE\": \"i\u0302\",\n \"\u01F0\": \"j\u030C\",\n \"\u0135\": \"j\u0302\",\n \"\u1E31\": \"k\u0301\",\n \"\u01E9\": \"k\u030C\",\n \"\u0137\": \"k\u0327\",\n \"\u013A\": \"l\u0301\",\n \"\u013E\": \"l\u030C\",\n \"\u013C\": \"l\u0327\",\n \"\u1E3F\": \"m\u0301\",\n \"\u1E41\": \"m\u0307\",\n \"\u0144\": \"n\u0301\",\n \"\u01F9\": \"n\u0300\",\n \"\u00F1\": \"n\u0303\",\n \"\u0148\": \"n\u030C\",\n \"\u1E45\": \"n\u0307\",\n \"\u0146\": \"n\u0327\",\n \"\u00F3\": \"o\u0301\",\n \"\u00F2\": \"o\u0300\",\n \"\u00F6\": \"o\u0308\",\n \"\u022B\": \"o\u0308\u0304\",\n \"\u00F5\": \"o\u0303\",\n \"\u1E4D\": \"o\u0303\u0301\",\n \"\u1E4F\": \"o\u0303\u0308\",\n \"\u022D\": \"o\u0303\u0304\",\n \"\u014D\": \"o\u0304\",\n \"\u1E53\": \"o\u0304\u0301\",\n \"\u1E51\": \"o\u0304\u0300\",\n \"\u014F\": \"o\u0306\",\n \"\u01D2\": \"o\u030C\",\n \"\u00F4\": \"o\u0302\",\n \"\u1ED1\": \"o\u0302\u0301\",\n \"\u1ED3\": \"o\u0302\u0300\",\n \"\u1ED7\": \"o\u0302\u0303\",\n \"\u022F\": \"o\u0307\",\n \"\u0231\": \"o\u0307\u0304\",\n \"\u0151\": \"o\u030B\",\n \"\u1E55\": \"p\u0301\",\n \"\u1E57\": \"p\u0307\",\n \"\u0155\": \"r\u0301\",\n \"\u0159\": \"r\u030C\",\n \"\u1E59\": \"r\u0307\",\n \"\u0157\": \"r\u0327\",\n \"\u015B\": \"s\u0301\",\n \"\u1E65\": \"s\u0301\u0307\",\n \"\u0161\": \"s\u030C\",\n \"\u1E67\": \"s\u030C\u0307\",\n \"\u015D\": \"s\u0302\",\n \"\u1E61\": \"s\u0307\",\n \"\u015F\": \"s\u0327\",\n \"\u1E97\": \"t\u0308\",\n \"\u0165\": \"t\u030C\",\n \"\u1E6B\": \"t\u0307\",\n \"\u0163\": \"t\u0327\",\n \"\u00FA\": \"u\u0301\",\n \"\u00F9\": \"u\u0300\",\n \"\u00FC\": \"u\u0308\",\n \"\u01D8\": \"u\u0308\u0301\",\n \"\u01DC\": \"u\u0308\u0300\",\n \"\u01D6\": \"u\u0308\u0304\",\n \"\u01DA\": \"u\u0308\u030C\",\n \"\u0169\": \"u\u0303\",\n \"\u1E79\": \"u\u0303\u0301\",\n \"\u016B\": \"u\u0304\",\n \"\u1E7B\": \"u\u0304\u0308\",\n \"\u016D\": \"u\u0306\",\n \"\u01D4\": \"u\u030C\",\n \"\u00FB\": \"u\u0302\",\n \"\u016F\": \"u\u030A\",\n \"\u0171\": \"u\u030B\",\n \"\u1E7D\": \"v\u0303\",\n \"\u1E83\": \"w\u0301\",\n \"\u1E81\": \"w\u0300\",\n \"\u1E85\": \"w\u0308\",\n \"\u0175\": \"w\u0302\",\n \"\u1E87\": \"w\u0307\",\n \"\u1E98\": \"w\u030A\",\n \"\u1E8D\": \"x\u0308\",\n \"\u1E8B\": \"x\u0307\",\n \"\u00FD\": \"y\u0301\",\n \"\u1EF3\": \"y\u0300\",\n \"\u00FF\": \"y\u0308\",\n \"\u1EF9\": \"y\u0303\",\n \"\u0233\": \"y\u0304\",\n \"\u0177\": \"y\u0302\",\n \"\u1E8F\": \"y\u0307\",\n \"\u1E99\": \"y\u030A\",\n \"\u017A\": \"z\u0301\",\n \"\u017E\": \"z\u030C\",\n \"\u1E91\": \"z\u0302\",\n \"\u017C\": \"z\u0307\",\n \"\u00C1\": \"A\u0301\",\n \"\u00C0\": \"A\u0300\",\n \"\u00C4\": \"A\u0308\",\n \"\u01DE\": \"A\u0308\u0304\",\n \"\u00C3\": \"A\u0303\",\n \"\u0100\": \"A\u0304\",\n \"\u0102\": \"A\u0306\",\n \"\u1EAE\": \"A\u0306\u0301\",\n \"\u1EB0\": \"A\u0306\u0300\",\n \"\u1EB4\": \"A\u0306\u0303\",\n \"\u01CD\": \"A\u030C\",\n \"\u00C2\": \"A\u0302\",\n \"\u1EA4\": \"A\u0302\u0301\",\n \"\u1EA6\": \"A\u0302\u0300\",\n \"\u1EAA\": \"A\u0302\u0303\",\n \"\u0226\": \"A\u0307\",\n \"\u01E0\": \"A\u0307\u0304\",\n \"\u00C5\": \"A\u030A\",\n \"\u01FA\": \"A\u030A\u0301\",\n \"\u1E02\": \"B\u0307\",\n \"\u0106\": \"C\u0301\",\n \"\u1E08\": \"C\u0327\u0301\",\n \"\u010C\": \"C\u030C\",\n \"\u0108\": \"C\u0302\",\n \"\u010A\": \"C\u0307\",\n \"\u00C7\": \"C\u0327\",\n \"\u010E\": \"D\u030C\",\n \"\u1E0A\": \"D\u0307\",\n \"\u1E10\": \"D\u0327\",\n \"\u00C9\": \"E\u0301\",\n \"\u00C8\": \"E\u0300\",\n \"\u00CB\": \"E\u0308\",\n \"\u1EBC\": \"E\u0303\",\n \"\u0112\": \"E\u0304\",\n \"\u1E16\": \"E\u0304\u0301\",\n \"\u1E14\": \"E\u0304\u0300\",\n \"\u0114\": \"E\u0306\",\n \"\u1E1C\": \"E\u0327\u0306\",\n \"\u011A\": \"E\u030C\",\n \"\u00CA\": \"E\u0302\",\n \"\u1EBE\": \"E\u0302\u0301\",\n \"\u1EC0\": \"E\u0302\u0300\",\n \"\u1EC4\": \"E\u0302\u0303\",\n \"\u0116\": \"E\u0307\",\n \"\u0228\": \"E\u0327\",\n \"\u1E1E\": \"F\u0307\",\n \"\u01F4\": \"G\u0301\",\n \"\u1E20\": \"G\u0304\",\n \"\u011E\": \"G\u0306\",\n \"\u01E6\": \"G\u030C\",\n \"\u011C\": \"G\u0302\",\n \"\u0120\": \"G\u0307\",\n \"\u0122\": \"G\u0327\",\n \"\u1E26\": \"H\u0308\",\n \"\u021E\": \"H\u030C\",\n \"\u0124\": \"H\u0302\",\n \"\u1E22\": \"H\u0307\",\n \"\u1E28\": \"H\u0327\",\n \"\u00CD\": \"I\u0301\",\n \"\u00CC\": \"I\u0300\",\n \"\u00CF\": \"I\u0308\",\n \"\u1E2E\": \"I\u0308\u0301\",\n \"\u0128\": \"I\u0303\",\n \"\u012A\": \"I\u0304\",\n \"\u012C\": \"I\u0306\",\n \"\u01CF\": \"I\u030C\",\n \"\u00CE\": \"I\u0302\",\n \"\u0130\": \"I\u0307\",\n \"\u0134\": \"J\u0302\",\n \"\u1E30\": \"K\u0301\",\n \"\u01E8\": \"K\u030C\",\n \"\u0136\": \"K\u0327\",\n \"\u0139\": \"L\u0301\",\n \"\u013D\": \"L\u030C\",\n \"\u013B\": \"L\u0327\",\n \"\u1E3E\": \"M\u0301\",\n \"\u1E40\": \"M\u0307\",\n \"\u0143\": \"N\u0301\",\n \"\u01F8\": \"N\u0300\",\n \"\u00D1\": \"N\u0303\",\n \"\u0147\": \"N\u030C\",\n \"\u1E44\": \"N\u0307\",\n \"\u0145\": \"N\u0327\",\n \"\u00D3\": \"O\u0301\",\n \"\u00D2\": \"O\u0300\",\n \"\u00D6\": \"O\u0308\",\n \"\u022A\": \"O\u0308\u0304\",\n \"\u00D5\": \"O\u0303\",\n \"\u1E4C\": \"O\u0303\u0301\",\n \"\u1E4E\": \"O\u0303\u0308\",\n \"\u022C\": \"O\u0303\u0304\",\n \"\u014C\": \"O\u0304\",\n \"\u1E52\": \"O\u0304\u0301\",\n \"\u1E50\": \"O\u0304\u0300\",\n \"\u014E\": \"O\u0306\",\n \"\u01D1\": \"O\u030C\",\n \"\u00D4\": \"O\u0302\",\n \"\u1ED0\": \"O\u0302\u0301\",\n \"\u1ED2\": \"O\u0302\u0300\",\n \"\u1ED6\": \"O\u0302\u0303\",\n \"\u022E\": \"O\u0307\",\n \"\u0230\": \"O\u0307\u0304\",\n \"\u0150\": \"O\u030B\",\n \"\u1E54\": \"P\u0301\",\n \"\u1E56\": \"P\u0307\",\n \"\u0154\": \"R\u0301\",\n \"\u0158\": \"R\u030C\",\n \"\u1E58\": \"R\u0307\",\n \"\u0156\": \"R\u0327\",\n \"\u015A\": \"S\u0301\",\n \"\u1E64\": \"S\u0301\u0307\",\n \"\u0160\": \"S\u030C\",\n \"\u1E66\": \"S\u030C\u0307\",\n \"\u015C\": \"S\u0302\",\n \"\u1E60\": \"S\u0307\",\n \"\u015E\": \"S\u0327\",\n \"\u0164\": \"T\u030C\",\n \"\u1E6A\": \"T\u0307\",\n \"\u0162\": \"T\u0327\",\n \"\u00DA\": \"U\u0301\",\n \"\u00D9\": \"U\u0300\",\n \"\u00DC\": \"U\u0308\",\n \"\u01D7\": \"U\u0308\u0301\",\n \"\u01DB\": \"U\u0308\u0300\",\n \"\u01D5\": \"U\u0308\u0304\",\n \"\u01D9\": \"U\u0308\u030C\",\n \"\u0168\": \"U\u0303\",\n \"\u1E78\": \"U\u0303\u0301\",\n \"\u016A\": \"U\u0304\",\n \"\u1E7A\": \"U\u0304\u0308\",\n \"\u016C\": \"U\u0306\",\n \"\u01D3\": \"U\u030C\",\n \"\u00DB\": \"U\u0302\",\n \"\u016E\": \"U\u030A\",\n \"\u0170\": \"U\u030B\",\n \"\u1E7C\": \"V\u0303\",\n \"\u1E82\": \"W\u0301\",\n \"\u1E80\": \"W\u0300\",\n \"\u1E84\": \"W\u0308\",\n \"\u0174\": \"W\u0302\",\n \"\u1E86\": \"W\u0307\",\n \"\u1E8C\": \"X\u0308\",\n \"\u1E8A\": \"X\u0307\",\n \"\u00DD\": \"Y\u0301\",\n \"\u1EF2\": \"Y\u0300\",\n \"\u0178\": \"Y\u0308\",\n \"\u1EF8\": \"Y\u0303\",\n \"\u0232\": \"Y\u0304\",\n \"\u0176\": \"Y\u0302\",\n \"\u1E8E\": \"Y\u0307\",\n \"\u0179\": \"Z\u0301\",\n \"\u017D\": \"Z\u030C\",\n \"\u1E90\": \"Z\u0302\",\n \"\u017B\": \"Z\u0307\",\n \"\u03AC\": \"\u03B1\u0301\",\n \"\u1F70\": \"\u03B1\u0300\",\n \"\u1FB1\": \"\u03B1\u0304\",\n \"\u1FB0\": \"\u03B1\u0306\",\n \"\u03AD\": \"\u03B5\u0301\",\n \"\u1F72\": \"\u03B5\u0300\",\n \"\u03AE\": \"\u03B7\u0301\",\n \"\u1F74\": \"\u03B7\u0300\",\n \"\u03AF\": \"\u03B9\u0301\",\n \"\u1F76\": \"\u03B9\u0300\",\n \"\u03CA\": \"\u03B9\u0308\",\n \"\u0390\": \"\u03B9\u0308\u0301\",\n \"\u1FD2\": \"\u03B9\u0308\u0300\",\n \"\u1FD1\": \"\u03B9\u0304\",\n \"\u1FD0\": \"\u03B9\u0306\",\n \"\u03CC\": \"\u03BF\u0301\",\n \"\u1F78\": \"\u03BF\u0300\",\n \"\u03CD\": \"\u03C5\u0301\",\n \"\u1F7A\": \"\u03C5\u0300\",\n \"\u03CB\": \"\u03C5\u0308\",\n \"\u03B0\": \"\u03C5\u0308\u0301\",\n \"\u1FE2\": \"\u03C5\u0308\u0300\",\n \"\u1FE1\": \"\u03C5\u0304\",\n \"\u1FE0\": \"\u03C5\u0306\",\n \"\u03CE\": \"\u03C9\u0301\",\n \"\u1F7C\": \"\u03C9\u0300\",\n \"\u038E\": \"\u03A5\u0301\",\n \"\u1FEA\": \"\u03A5\u0300\",\n \"\u03AB\": \"\u03A5\u0308\",\n \"\u1FE9\": \"\u03A5\u0304\",\n \"\u1FE8\": \"\u03A5\u0306\",\n \"\u038F\": \"\u03A9\u0301\",\n \"\u1FFA\": \"\u03A9\u0300\"\n};\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.gullet.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The functions return ParseNodes.\n */\nclass Parser {\n constructor(input, settings) {\n // Start in math mode\n this.mode = \"math\";\n // Create a new macro expander (gullet) and (indirectly via that) also a\n // new lexer (mouth) for this parser (stomach, in the language of TeX)\n this.gullet = new MacroExpander(input, settings, this.mode);\n // Store the settings for use in parsing\n this.settings = settings;\n // Count leftright depth (for \\middle errors)\n this.leftrightDepth = 0;\n this.nextToken = null;\n }\n /**\n * Checks a result to make sure it has the right type, and throws an\n * appropriate error otherwise.\n */\n expect(text, consume) {\n if (consume === void 0) {\n consume = true;\n }\n if (this.fetch().text !== text) {\n throw new ParseError(\"Expected '\" + text + \"', got '\" + this.fetch().text + \"'\", this.fetch());\n }\n if (consume) {\n this.consume();\n }\n }\n /**\n * Discards the current lookahead token, considering it consumed.\n */\n consume() {\n this.nextToken = null;\n }\n /**\n * Return the current lookahead token, or if there isn't one (at the\n * beginning, or if the previous lookahead token was consume()d),\n * fetch the next token as the new lookahead token and return it.\n */\n fetch() {\n if (this.nextToken == null) {\n this.nextToken = this.gullet.expandNextToken();\n }\n return this.nextToken;\n }\n /**\n * Switches between \"text\" and \"math\" modes.\n */\n switchMode(newMode) {\n this.mode = newMode;\n this.gullet.switchMode(newMode);\n }\n /**\n * Main parsing function, which parses an entire input.\n */\n parse() {\n if (!this.settings.globalGroup) {\n // Create a group namespace for the math expression.\n // (LaTeX creates a new group for every $...$, $$...$$, \\[...\\].)\n this.gullet.beginGroup();\n }\n // Use old \\color behavior (same as LaTeX's \\textcolor) if requested.\n // We do this within the group for the math expression, so it doesn't\n // pollute settings.macros.\n if (this.settings.colorIsTextColor) {\n this.gullet.macros.set(\"\\\\color\", \"\\\\textcolor\");\n }\n try {\n // Try to parse the input\n var parse = this.parseExpression(false);\n // If we succeeded, make sure there's an EOF at the end\n this.expect(\"EOF\");\n // End the group namespace for the expression\n if (!this.settings.globalGroup) {\n this.gullet.endGroup();\n }\n return parse;\n // Close any leftover groups in case of a parse error.\n } finally {\n this.gullet.endGroups();\n }\n }\n /**\n * Fully parse a separate sequence of tokens as a separate job.\n * Tokens should be specified in reverse order, as in a MacroDefinition.\n */\n subparse(tokens) {\n // Save the next token from the current job.\n var oldToken = this.nextToken;\n this.consume();\n // Run the new job, terminating it with an excess '}'\n this.gullet.pushToken(new Token(\"}\"));\n this.gullet.pushTokens(tokens);\n var parse = this.parseExpression(false);\n this.expect(\"}\");\n // Restore the next token from the current job.\n this.nextToken = oldToken;\n return parse;\n }\n /**\n * Parses an \"expression\", which is a list of atoms.\n *\n * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This\n * happens when functions have higher precedence than infix\n * nodes in implicit parses.\n *\n * `breakOnTokenText`: The text of the token that the expression should end\n * with, or `null` if something else should end the\n * expression.\n */\n parseExpression(breakOnInfix, breakOnTokenText) {\n var body = [];\n // Keep adding atoms to the body until we can't parse any more atoms (either\n // we reached the end, a }, or a \\right)\n while (true) {\n // Ignore spaces in math mode\n if (this.mode === \"math\") {\n this.consumeSpaces();\n }\n var lex = this.fetch();\n if (Parser.endOfExpression.has(lex.text)) {\n break;\n }\n if (breakOnTokenText && lex.text === breakOnTokenText) {\n break;\n }\n if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {\n break;\n }\n var atom = this.parseAtom(breakOnTokenText);\n if (!atom) {\n break;\n } else if (atom.type === \"internal\") {\n // Internal nodes do not appear in parse tree\n continue;\n }\n body.push(atom);\n }\n if (this.mode === \"text\") {\n this.formLigatures(body);\n }\n return this.handleInfixNodes(body);\n }\n /**\n * Rewrites infix operators such as \\over with corresponding commands such\n * as \\frac.\n *\n * There can only be one infix operator per group. If there's more than one\n * then the expression is ambiguous. This can be resolved by adding {}.\n */\n handleInfixNodes(body) {\n var overIndex = -1;\n var funcName;\n for (var i = 0; i < body.length; i++) {\n var node = body[i];\n if (node.type === \"infix\") {\n if (overIndex !== -1) {\n throw new ParseError(\"only one infix operator per group\", node.token);\n }\n overIndex = i;\n funcName = node.replaceWith;\n }\n }\n if (overIndex !== -1 && funcName) {\n var numerNode;\n var denomNode;\n var numerBody = body.slice(0, overIndex);\n var denomBody = body.slice(overIndex + 1);\n if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n numerNode = numerBody[0];\n } else {\n numerNode = {\n type: \"ordgroup\",\n mode: this.mode,\n body: numerBody\n };\n }\n if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n denomNode = denomBody[0];\n } else {\n denomNode = {\n type: \"ordgroup\",\n mode: this.mode,\n body: denomBody\n };\n }\n var _node;\n if (funcName === \"\\\\\\\\abovefrac\") {\n _node = this.callFunction(funcName, [numerNode, body[overIndex], denomNode], []);\n } else {\n _node = this.callFunction(funcName, [numerNode, denomNode], []);\n }\n return [_node];\n } else {\n return body;\n }\n }\n /**\n * Handle a subscript or superscript with nice errors.\n */\n handleSupSubscript(name) {\n var symbolToken = this.fetch();\n var symbol = symbolToken.text;\n this.consume();\n this.consumeSpaces(); // ignore spaces before sup/subscript argument\n // Skip over allowed internal nodes such as \\relax\n var group;\n do {\n var _group;\n group = this.parseGroup(name);\n } while (((_group = group) == null ? void 0 : _group.type) === \"internal\");\n if (!group) {\n throw new ParseError(\"Expected group after '\" + symbol + \"'\", symbolToken);\n }\n return group;\n }\n /**\n * Converts the textual input of an unsupported command into a text node\n * contained within a color node whose color is determined by errorColor\n */\n formatUnsupportedCmd(text) {\n var textordArray = [];\n for (var i = 0; i < text.length; i++) {\n textordArray.push({\n type: \"textord\",\n mode: \"text\",\n text: text[i]\n });\n }\n var textNode = {\n type: \"text\",\n mode: this.mode,\n body: textordArray\n };\n var colorNode = {\n type: \"color\",\n mode: this.mode,\n color: this.settings.errorColor,\n body: [textNode]\n };\n return colorNode;\n }\n /**\n * Parses a group with optional super/subscripts.\n */\n parseAtom(breakOnTokenText) {\n // The body of an atom is an implicit group, so that things like\n // \\left(x\\right)^2 work correctly.\n var base = this.parseGroup(\"atom\", breakOnTokenText);\n // Internal nodes (e.g. \\relax) cannot support super/subscripts.\n // Instead we will pick up super/subscripts with blank base next round.\n if ((base == null ? void 0 : base.type) === \"internal\") {\n return base;\n }\n // In text mode, we don't have superscripts or subscripts\n if (this.mode === \"text\") {\n return base;\n }\n // Note that base may be empty (i.e. null) at this point.\n var superscript;\n var subscript;\n while (true) {\n // Guaranteed in math mode, so eat any spaces first.\n this.consumeSpaces();\n // Lex the first token\n var lex = this.fetch();\n if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n // We got a limit control\n if (base && base.type === \"op\") {\n var limits = lex.text === \"\\\\limits\";\n base.limits = limits;\n base.alwaysHandleSupSub = true;\n } else if (base && base.type === \"operatorname\") {\n if (base.alwaysHandleSupSub) {\n base.limits = lex.text === \"\\\\limits\";\n }\n } else {\n throw new ParseError(\"Limit controls must follow a math operator\", lex);\n }\n this.consume();\n } else if (lex.text === \"^\") {\n // We got a superscript start\n if (superscript) {\n throw new ParseError(\"Double superscript\", lex);\n }\n superscript = this.handleSupSubscript(\"superscript\");\n } else if (lex.text === \"_\") {\n // We got a subscript start\n if (subscript) {\n throw new ParseError(\"Double subscript\", lex);\n }\n subscript = this.handleSupSubscript(\"subscript\");\n } else if (lex.text === \"'\") {\n // We got a prime\n if (superscript) {\n throw new ParseError(\"Double superscript\", lex);\n }\n var prime = {\n type: \"textord\",\n mode: this.mode,\n text: \"\\\\prime\"\n };\n // Many primes can be grouped together, so we handle this here\n var primes = [prime];\n this.consume();\n // Keep lexing tokens until we get something that's not a prime\n while (this.fetch().text === \"'\") {\n // For each one, add another prime to the list\n primes.push(prime);\n this.consume();\n }\n // If there's a superscript following the primes, combine that\n // superscript in with the primes.\n if (this.fetch().text === \"^\") {\n primes.push(this.handleSupSubscript(\"superscript\"));\n }\n // Put everything into an ordgroup as the superscript\n superscript = {\n type: \"ordgroup\",\n mode: this.mode,\n body: primes\n };\n } else if (uSubsAndSups[lex.text]) {\n // A Unicode subscript or superscript character.\n // We treat these similarly to the unicode-math package.\n // So we render a string of Unicode (sub|super)scripts the\n // same as a (sub|super)script of regular characters.\n var isSub = unicodeSubRegEx.test(lex.text);\n var subsupTokens = [];\n subsupTokens.push(new Token(uSubsAndSups[lex.text]));\n this.consume();\n // Continue fetching tokens to fill out the string.\n while (true) {\n var token = this.fetch().text;\n if (!uSubsAndSups[token]) {\n break;\n }\n if (unicodeSubRegEx.test(token) !== isSub) {\n break;\n }\n subsupTokens.unshift(new Token(uSubsAndSups[token]));\n this.consume();\n }\n // Now create a (sub|super)script.\n var body = this.subparse(subsupTokens);\n if (isSub) {\n subscript = {\n type: \"ordgroup\",\n mode: \"math\",\n body\n };\n } else {\n superscript = {\n type: \"ordgroup\",\n mode: \"math\",\n body\n };\n }\n } else {\n // If it wasn't ^, _, or ', stop parsing super/subscripts\n break;\n }\n }\n // Base must be set if superscript or subscript are set per logic above,\n // but need to check here for type check to pass.\n if (superscript || subscript) {\n // If we got either a superscript or subscript, create a supsub\n return {\n type: \"supsub\",\n mode: this.mode,\n base: base,\n sup: superscript,\n sub: subscript\n };\n } else {\n // Otherwise return the original body\n return base;\n }\n }\n /**\n * Parses an entire function, including its base and all of its arguments.\n */\n parseFunction(breakOnTokenText, name) {\n var token = this.fetch();\n var func = token.text;\n var funcData = functions[func];\n if (!funcData) {\n return null;\n }\n this.consume(); // consume command token\n if (name && name !== \"atom\" && !funcData.allowedInArgument) {\n throw new ParseError(\"Got function '\" + func + \"' with no arguments\" + (name ? \" as \" + name : \"\"), token);\n } else if (this.mode === \"text\" && !funcData.allowedInText) {\n throw new ParseError(\"Can't use function '\" + func + \"' in text mode\", token);\n } else if (this.mode === \"math\" && funcData.allowedInMath === false) {\n throw new ParseError(\"Can't use function '\" + func + \"' in math mode\", token);\n }\n var {\n args,\n optArgs\n } = this.parseArguments(func, funcData);\n return this.callFunction(func, args, optArgs, token, breakOnTokenText);\n }\n /**\n * Call a function handler with a suitable context and arguments.\n */\n callFunction(name, args, optArgs, token, breakOnTokenText) {\n var context = {\n funcName: name,\n parser: this,\n token,\n breakOnTokenText\n };\n var func = functions[name];\n if (func && func.handler) {\n return func.handler(context, args, optArgs);\n } else {\n throw new ParseError(\"No function handler for \" + name);\n }\n }\n /**\n * Parses the arguments of a function or environment\n */\n parseArguments(func,\n // Should look like \"\\name\" or \"\\begin{name}\".\n funcData) {\n var totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n if (totalArgs === 0) {\n return {\n args: [],\n optArgs: []\n };\n }\n var args = [];\n var optArgs = [];\n for (var i = 0; i < totalArgs; i++) {\n var argType = funcData.argTypes && funcData.argTypes[i];\n var isOptional = i < funcData.numOptionalArgs;\n if (\"primitive\" in funcData && funcData.primitive && argType == null ||\n // \\sqrt expands into primitive if optional argument doesn't exist\n funcData.type === \"sqrt\" && i === 1 && optArgs[0] == null) {\n argType = \"primitive\";\n }\n var arg = this.parseGroupOfType(\"argument to '\" + func + \"'\", argType, isOptional);\n if (isOptional) {\n optArgs.push(arg);\n } else if (arg != null) {\n args.push(arg);\n } else {\n // should be unreachable\n throw new ParseError(\"Null argument, please report this as a bug\");\n }\n }\n return {\n args,\n optArgs\n };\n }\n /**\n * Parses a group when the mode is changing.\n */\n parseGroupOfType(name, type, optional) {\n switch (type) {\n case \"color\":\n return this.parseColorGroup(optional);\n case \"size\":\n return this.parseSizeGroup(optional);\n case \"url\":\n return this.parseUrlGroup(optional);\n case \"math\":\n case \"text\":\n return this.parseArgumentGroup(optional, type);\n case \"hbox\":\n {\n // hbox argument type wraps the argument in the equivalent of\n // \\hbox, which is like \\text but switching to \\textstyle size.\n var group = this.parseArgumentGroup(optional, \"text\");\n return group != null ? {\n type: \"styling\",\n mode: group.mode,\n body: [group],\n style: \"text\" // simulate \\textstyle\n } : null;\n }\n case \"raw\":\n {\n var token = this.parseStringGroup(\"raw\", optional);\n return token != null ? {\n type: \"raw\",\n mode: \"text\",\n string: token.text\n } : null;\n }\n case \"primitive\":\n {\n if (optional) {\n throw new ParseError(\"A primitive argument cannot be optional\");\n }\n var _group2 = this.parseGroup(name);\n if (_group2 == null) {\n throw new ParseError(\"Expected group as \" + name, this.fetch());\n }\n return _group2;\n }\n case \"original\":\n case null:\n case undefined:\n return this.parseArgumentGroup(optional);\n default:\n throw new ParseError(\"Unknown group type as \" + name, this.fetch());\n }\n }\n /**\n * Discard any space tokens, fetching the next non-space token.\n */\n consumeSpaces() {\n while (this.fetch().text === \" \") {\n this.consume();\n }\n }\n /**\n * Parses a group, essentially returning the string formed by the\n * brace-enclosed tokens plus some position information.\n */\n parseStringGroup(modeName,\n // Used to describe the mode in error messages.\n optional) {\n var argToken = this.gullet.scanArgument(optional);\n if (argToken == null) {\n return null;\n }\n var str = \"\";\n var nextToken;\n while ((nextToken = this.fetch()).text !== \"EOF\") {\n str += nextToken.text;\n this.consume();\n }\n this.consume(); // consume the end of the argument\n argToken.text = str;\n return argToken;\n }\n /**\n * Parses a regex-delimited group: the largest sequence of tokens\n * whose concatenated strings match `regex`. Returns the string\n * formed by the tokens plus some position information.\n */\n parseRegexGroup(regex, modeName) {\n var firstToken = this.fetch();\n var lastToken = firstToken;\n var str = \"\";\n var nextToken;\n while ((nextToken = this.fetch()).text !== \"EOF\" && regex.test(str + nextToken.text)) {\n lastToken = nextToken;\n str += lastToken.text;\n this.consume();\n }\n if (str === \"\") {\n throw new ParseError(\"Invalid \" + modeName + \": '\" + firstToken.text + \"'\", firstToken);\n }\n return firstToken.range(lastToken, str);\n }\n /**\n * Parses a color description.\n */\n parseColorGroup(optional) {\n var res = this.parseStringGroup(\"color\", optional);\n if (res == null) {\n return null;\n }\n var match = /^(#[a-f0-9]{3,4}|#[a-f0-9]{6}|#[a-f0-9]{8}|[a-f0-9]{6}|[a-z]+)$/i.exec(res.text);\n if (!match) {\n throw new ParseError(\"Invalid color: '\" + res.text + \"'\", res);\n }\n var color = match[0];\n if (/^[0-9a-f]{6}$/i.test(color)) {\n // We allow a 6-digit HTML color spec without a leading \"#\".\n // This follows the xcolor package's HTML color model.\n // Predefined color names are all missed by this RegEx pattern.\n color = \"#\" + color;\n }\n return {\n type: \"color-token\",\n mode: this.mode,\n color\n };\n }\n /**\n * Parses a size specification, consisting of magnitude and unit.\n */\n parseSizeGroup(optional) {\n var res;\n var isBlank = false;\n // don't expand before parseStringGroup\n this.gullet.consumeSpaces();\n if (!optional && this.gullet.future().text !== \"{\") {\n res = this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/, \"size\");\n } else {\n res = this.parseStringGroup(\"size\", optional);\n }\n if (!res) {\n return null;\n }\n if (!optional && res.text.length === 0) {\n // Because we've tested for what is !optional, this block won't\n // affect \\kern, \\hspace, etc. It will capture the mandatory arguments\n // to \\genfrac and \\above.\n res.text = \"0pt\"; // Enable \\above{}\n isBlank = true; // This is here specifically for \\genfrac\n }\n var match = /([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(res.text);\n if (!match) {\n throw new ParseError(\"Invalid size: '\" + res.text + \"'\", res);\n }\n var data = {\n number: +(match[1] + match[2]),\n // sign + magnitude, cast to number\n unit: match[3]\n };\n if (!validUnit(data)) {\n throw new ParseError(\"Invalid unit: '\" + data.unit + \"'\", res);\n }\n return {\n type: \"size\",\n mode: this.mode,\n value: data,\n isBlank\n };\n }\n /**\n * Parses an URL, checking escaped letters and allowed protocols,\n * and setting the catcode of % as an active character (as in \\hyperref).\n */\n parseUrlGroup(optional) {\n this.gullet.lexer.setCatcode(\"%\", 13); // active character\n this.gullet.lexer.setCatcode(\"~\", 12); // other character\n var res = this.parseStringGroup(\"url\", optional);\n this.gullet.lexer.setCatcode(\"%\", 14); // comment character\n this.gullet.lexer.setCatcode(\"~\", 13); // active character\n if (res == null) {\n return null;\n }\n // hyperref package allows backslashes alone in href, but doesn't\n // generate valid links in such cases; we interpret this as\n // \"undefined\" behaviour, and keep them as-is. Some browser will\n // replace backslashes with forward slashes.\n var url = res.text.replace(/\\\\([#$%&~_^{}])/g, '$1');\n return {\n type: \"url\",\n mode: this.mode,\n url\n };\n }\n /**\n * Parses an argument with the mode specified.\n */\n parseArgumentGroup(optional, mode) {\n var argToken = this.gullet.scanArgument(optional);\n if (argToken == null) {\n return null;\n }\n var outerMode = this.mode;\n if (mode) {\n // Switch to specified mode\n this.switchMode(mode);\n }\n this.gullet.beginGroup();\n var expression = this.parseExpression(false, \"EOF\");\n // TODO: find an alternative way to denote the end\n this.expect(\"EOF\"); // expect the end of the argument\n this.gullet.endGroup();\n var result = {\n type: \"ordgroup\",\n mode: this.mode,\n loc: argToken.loc,\n body: expression\n };\n if (mode) {\n // Switch mode back\n this.switchMode(outerMode);\n }\n return result;\n }\n /**\n * Parses an ordinary group, which is either a single nucleus (like \"x\")\n * or an expression in braces (like \"{x+y}\") or an implicit group, a group\n * that starts at the current position, and ends right before a higher explicit\n * group ends, or at EOF.\n */\n parseGroup(name,\n // For error reporting.\n breakOnTokenText) {\n var firstToken = this.fetch();\n var text = firstToken.text;\n var result;\n // Try to parse an open brace or \\begingroup\n if (text === \"{\" || text === \"\\\\begingroup\") {\n this.consume();\n var groupEnd = text === \"{\" ? \"}\" : \"\\\\endgroup\";\n this.gullet.beginGroup();\n // If we get a brace, parse an expression\n var expression = this.parseExpression(false, groupEnd);\n var lastToken = this.fetch();\n this.expect(groupEnd); // Check that we got a matching closing brace\n this.gullet.endGroup();\n result = {\n type: \"ordgroup\",\n mode: this.mode,\n loc: SourceLocation.range(firstToken, lastToken),\n body: expression,\n // A group formed by \\begingroup...\\endgroup is a semi-simple group\n // which doesn't affect spacing in math mode, i.e., is transparent.\n // https://tex.stackexchange.com/questions/1930/when-should-one-\n // use-begingroup-instead-of-bgroup\n semisimple: text === \"\\\\begingroup\" || undefined\n };\n } else {\n // If there exists a function with this name, parse the function.\n // Otherwise, just return a nucleus\n result = this.parseFunction(breakOnTokenText, name) || this.parseSymbol();\n if (result == null && text[0] === \"\\\\\" && !implicitCommands.hasOwnProperty(text)) {\n if (this.settings.throwOnError) {\n throw new ParseError(\"Undefined control sequence: \" + text, firstToken);\n }\n result = this.formatUnsupportedCmd(text);\n this.consume();\n }\n }\n return result;\n }\n /**\n * Form ligature-like combinations of characters for text mode.\n * This includes inputs like \"--\", \"---\", \"``\" and \"''\".\n * The result will simply replace multiple textord nodes with a single\n * character in each value by a single textord node having multiple\n * characters in its value. The representation is still ASCII source.\n * The group will be modified in place.\n */\n formLigatures(group) {\n var n = group.length - 1;\n for (var i = 0; i < n; ++i) {\n var a = group[i];\n if (a.type !== \"textord\") {\n continue;\n }\n var v = a.text;\n var next = group[i + 1];\n if (!next || next.type !== \"textord\") {\n continue;\n }\n if (v === \"-\" && next.text === \"-\") {\n var afterNext = group[i + 2];\n if (i + 1 < n && afterNext && afterNext.type === \"textord\" && afterNext.text === \"-\") {\n group.splice(i, 3, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, afterNext),\n text: \"---\"\n });\n n -= 2;\n } else {\n group.splice(i, 2, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, next),\n text: \"--\"\n });\n n -= 1;\n }\n }\n if ((v === \"'\" || v === \"`\") && next.text === v) {\n group.splice(i, 2, {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(a, next),\n text: v + v\n });\n n -= 1;\n }\n }\n }\n /**\n * Parse a single symbol out of the string. Here, we handle single character\n * symbols and special functions like \\verb.\n */\n parseSymbol() {\n var nucleus = this.fetch();\n var text = nucleus.text;\n if (/^\\\\verb[^a-zA-Z]/.test(text)) {\n this.consume();\n var arg = text.slice(5);\n var star = arg.charAt(0) === \"*\";\n if (star) {\n arg = arg.slice(1);\n }\n // Lexer's tokenRegex is constructed to always have matching\n // first/last characters.\n if (arg.length < 2 || arg.charAt(0) !== arg.slice(-1)) {\n throw new ParseError(\"\\\\verb assertion failed --\\n please report what input caused this bug\");\n }\n arg = arg.slice(1, -1); // remove first and last char\n return {\n type: \"verb\",\n mode: \"text\",\n body: arg,\n star\n };\n }\n // At this point, we should have a symbol, possibly with accents.\n // First expand any accented base symbol according to unicodeSymbols.\n if (unicodeSymbols.hasOwnProperty(text[0]) && !symbols[this.mode][text[0]]) {\n // This behavior is not strict (XeTeX-compatible) in math mode.\n if (this.settings.strict && this.mode === \"math\") {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Accented Unicode text character \\\"\" + text[0] + \"\\\" used in \" + \"math mode\", nucleus);\n }\n text = unicodeSymbols[text[0]] + text.slice(1);\n }\n // Strip off any combining characters\n var match = combiningDiacriticalMarksEndRegex.exec(text);\n if (match) {\n text = text.substring(0, match.index);\n if (text === 'i') {\n text = '\\u0131'; // dotless i, in math and text mode\n } else if (text === 'j') {\n text = '\\u0237'; // dotless j, in math and text mode\n }\n }\n // Recognize base symbol\n var symbol;\n if (symbols[this.mode][text]) {\n if (this.settings.strict && this.mode === 'math' && extraLatin.includes(text)) {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Latin-1/Unicode text character \\\"\" + text[0] + \"\\\" used in \" + \"math mode\", nucleus);\n }\n var group = symbols[this.mode][text].group;\n var loc = SourceLocation.range(nucleus);\n var s;\n if (ATOMS.hasOwnProperty(group)) {\n // TODO(ts)\n var family = group;\n s = {\n type: \"atom\",\n mode: this.mode,\n family,\n loc,\n text\n };\n } else {\n // TODO(ts)\n s = {\n type: group,\n mode: this.mode,\n loc,\n text\n };\n }\n // TODO(ts)\n symbol = s;\n } else if (text.charCodeAt(0) >= 0x80) {\n // no symbol for e.g. ^\n if (this.settings.strict) {\n if (!supportedCodepoint(text.charCodeAt(0))) {\n this.settings.reportNonstrict(\"unknownSymbol\", \"Unrecognized Unicode character \\\"\" + text[0] + \"\\\"\" + (\" (\" + text.charCodeAt(0) + \")\"), nucleus);\n } else if (this.mode === \"math\") {\n this.settings.reportNonstrict(\"unicodeTextInMathMode\", \"Unicode text character \\\"\" + text[0] + \"\\\" used in math mode\", nucleus);\n }\n }\n // All nonmathematical Unicode characters are rendered as if they\n // are in text mode (wrapped in \\text) because that's what it\n // takes to render them in LaTeX. Setting `mode: this.mode` is\n // another natural choice (the user requested math mode), but\n // this makes it more difficult for getCharacterMetrics() to\n // distinguish Unicode characters without metrics and those for\n // which we want to simulate the letter M.\n symbol = {\n type: \"textord\",\n mode: \"text\",\n loc: SourceLocation.range(nucleus),\n text\n };\n } else {\n return null; // EOF, ^, _, {, }, etc.\n }\n this.consume();\n // Transform combining characters into accents\n if (match) {\n for (var i = 0; i < match[0].length; i++) {\n var accent = match[0][i];\n if (!unicodeAccents[accent]) {\n throw new ParseError(\"Unknown accent ' \" + accent + \"'\", nucleus);\n }\n var command = unicodeAccents[accent][this.mode] || unicodeAccents[accent].text;\n if (!command) {\n throw new ParseError(\"Accent \" + accent + \" unsupported in \" + this.mode + \" mode\", nucleus);\n }\n symbol = {\n type: \"accent\",\n mode: this.mode,\n loc: SourceLocation.range(nucleus),\n label: command,\n isStretchy: false,\n isShifty: true,\n // TODO(ts)\n base: symbol\n };\n }\n }\n // TODO(ts)\n return symbol;\n }\n}\nParser.endOfExpression = new Set([\"}\", \"\\\\endgroup\", \"\\\\end\", \"\\\\right\", \"&\"]);\n\n/**\n * Provides a single function for parsing an expression using a Parser\n * TODO(emily): Remove this\n */\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nvar parseTree = function parseTree(toParse, settings) {\n if (!(typeof toParse === 'string' || toParse instanceof String)) {\n throw new TypeError('KaTeX can only parse string typed expression');\n }\n var parser = new Parser(toParse, settings);\n // Blank out any \\df@tag to avoid spurious \"Duplicate \\tag\" errors\n delete parser.gullet.macros.current[\"\\\\df@tag\"];\n var tree = parser.parse();\n // Prevent a color definition from persisting between calls to katex.render().\n delete parser.gullet.macros.current[\"\\\\current@color\"];\n delete parser.gullet.macros.current[\"\\\\color\"];\n // If the input used \\tag, it will set the \\df@tag macro to the tag.\n // In this case, we separately parse the tag and wrap the tree.\n if (parser.gullet.macros.get(\"\\\\df@tag\")) {\n if (!settings.displayMode) {\n throw new ParseError(\"\\\\tag works only in display equations\");\n }\n tree = [{\n type: \"tag\",\n mode: \"text\",\n body: tree,\n tag: parser.subparse([new Token(\"\\\\df@tag\")])\n }];\n }\n return tree;\n};\n\n/* eslint no-console:0 */\n/**\n * Parse and build an expression, and place that expression in the DOM node\n * given.\n */\nvar render = function render(expression, baseNode, options) {\n baseNode.textContent = \"\";\n var node = renderToDomTree(expression, options).toNode();\n baseNode.appendChild(node);\n};\n// KaTeX's styles don't work properly in quirks mode. Print out an error, and\n// disable rendering.\nif (typeof document !== \"undefined\") {\n if (document.compatMode !== \"CSS1Compat\") {\n typeof console !== \"undefined\" && console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your \" + \"website has a suitable doctype.\");\n render = function render() {\n throw new ParseError(\"KaTeX doesn't work in quirks mode.\");\n };\n }\n}\n/**\n * Parse and build an expression, and return the markup for that.\n */\nvar renderToString = function renderToString(expression, options) {\n var markup = renderToDomTree(expression, options).toMarkup();\n return markup;\n};\n/**\n * Parse an expression and return the parse tree.\n */\nvar generateParseTree = function generateParseTree(expression, options) {\n var settings = new Settings(options);\n return parseTree(expression, settings);\n};\n/**\n * If the given error is a KaTeX ParseError and options.throwOnError is false,\n * renders the invalid LaTeX as a span with hover title giving the KaTeX\n * error message. Otherwise, simply throws the error.\n */\nvar renderError = function renderError(error, expression, options) {\n if (options.throwOnError || !(error instanceof ParseError)) {\n throw error;\n }\n var node = makeSpan([\"katex-error\"], [new SymbolNode(expression)]);\n node.setAttribute(\"title\", error.toString());\n node.setAttribute(\"style\", \"color:\" + options.errorColor);\n return node;\n};\n/**\n * Generates and returns the katex build tree. This is used for advanced\n * use cases (like rendering to custom output).\n */\nvar renderToDomTree = function renderToDomTree(expression, options) {\n var settings = new Settings(options);\n try {\n var tree = parseTree(expression, settings);\n return buildTree(tree, expression, settings);\n } catch (error) {\n return renderError(error, expression, settings);\n }\n};\n/**\n * Generates and returns the katex build tree, with just HTML (no MathML).\n * This is used for advanced use cases (like rendering to custom output).\n */\nvar renderToHTMLTree = function renderToHTMLTree(expression, options) {\n var settings = new Settings(options);\n try {\n var tree = parseTree(expression, settings);\n return buildHTMLTree(tree, expression, settings);\n } catch (error) {\n return renderError(error, expression, settings);\n }\n};\nvar version = \"0.16.45\";\nvar __domTree = {\n Span,\n Anchor,\n SymbolNode,\n SvgNode,\n PathNode,\n LineNode\n};\n// CJS exports and ESM default export\nvar katex = {\n /**\n * Current KaTeX version\n */\n version,\n /**\n * Renders the given LaTeX into an HTML+MathML combination, and adds\n * it as a child to the specified DOM node.\n */\n render,\n /**\n * Renders the given LaTeX into an HTML+MathML combination string,\n * for sending to the client.\n */\n renderToString,\n /**\n * KaTeX error, usually during parsing.\n */\n ParseError,\n /**\n * The schema of Settings\n */\n SETTINGS_SCHEMA,\n /**\n * Parses the given LaTeX into KaTeX's internal parse tree structure,\n * without rendering to HTML or MathML.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __parse: generateParseTree,\n /**\n * Renders the given LaTeX into an HTML+MathML internal DOM tree\n * representation, without flattening that representation to a string.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __renderToDomTree: renderToDomTree,\n /**\n * Renders the given LaTeX into an HTML internal DOM tree representation,\n * without MathML and without flattening that representation to a string.\n *\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __renderToHTMLTree: renderToHTMLTree,\n /**\n * extends internal font metrics object with a new object\n * each key in the new object represents a font name\n */\n __setFontMetrics: setFontMetrics,\n /**\n * adds a new symbol to builtin symbols table\n */\n __defineSymbol: defineSymbol,\n /**\n * adds a new function to builtin function list,\n * which directly produce parse tree elements\n * and have their own html/mathml builders\n */\n __defineFunction: defineFunction,\n /**\n * adds a new macro to builtin macro list\n */\n __defineMacro: defineMacro,\n /**\n * Expose the dom tree node types, which can be useful for type checking nodes.\n *\n * NOTE: These methods are not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __domTree\n};\n\nexport { ParseError, SETTINGS_SCHEMA, defineFunction as __defineFunction, defineMacro as __defineMacro, defineSymbol as __defineSymbol, __domTree, generateParseTree as __parse, renderToDomTree as __renderToDomTree, renderToHTMLTree as __renderToHTMLTree, setFontMetrics as __setFontMetrics, katex as default, render, renderToString, version };\n", "/// <reference types=\"mdast-util-math\" />\n/// <reference types=\"remark-parse\" />\n/// <reference types=\"remark-stringify\" />\n\n/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-math').ToOptions} Options\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\nimport {mathFromMarkdown, mathToMarkdown} from 'mdast-util-math'\nimport {math} from 'micromark-extension-math'\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Add support for math.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkMath(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(math(settings))\n fromMarkdownExtensions.push(mathFromMarkdown())\n toMarkdownExtensions.push(mathToMarkdown(settings))\n}\n", "/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let safeByteCutoff = 256 - (256 % alphabet.length)\n if (safeByteCutoff === 256) {\n let mask = alphabet.length - 1\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(size)\n let j = size\n while (j--) {\n id += alphabet[bytes[j] & mask]\n if (id.length >= size) return id\n }\n }\n }\n }\n let step = Math.ceil((1.6 * 256 * defaultSize) / safeByteCutoff)\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n if (bytes[j] < safeByteCutoff) {\n id += alphabet[bytes[j] % alphabet.length]\n if (id.length >= size) return id\n }\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "import type {\n Cleanup,\n Ctx,\n MilkdownPlugin,\n SliceType,\n TimerType,\n} from '@milkdown/ctx'\n\nimport { createTimer } from '@milkdown/ctx'\nimport { customAlphabet } from 'nanoid'\n\n/// @internal\nexport const nanoid = customAlphabet('abcedfghicklmn', 10)\n\n/// @internal\nexport type WithTimer<T> = T & { timer: TimerType }\n\n/// @internal\nexport function addTimer<\n T extends MilkdownPlugin,\n PluginWithTimer extends T = WithTimer<T>,\n>(\n runner: (\n ctx: Ctx,\n plugin: PluginWithTimer,\n done: () => void\n ) => Promise<void | Cleanup>,\n injectTo: SliceType<TimerType[], string>,\n timerName?: string\n): PluginWithTimer {\n const timer = createTimer(timerName || nanoid())\n let doneCalled = false\n\n const plugin: MilkdownPlugin = (ctx) => {\n ctx.record(timer)\n ctx.update(injectTo, (x) => x.concat(timer))\n\n return async () => {\n const done = () => {\n ctx.done(timer)\n doneCalled = true\n }\n\n const cleanup = await runner(ctx, <PluginWithTimer>plugin, done)\n\n if (!doneCalled) ctx.done(timer)\n\n return () => {\n ctx.update(injectTo, (x) => x.filter((y) => y !== timer))\n ctx.clearTimer(timer)\n if (cleanup) {\n const result = cleanup()\n if (result && 'then' in result) {\n result.catch(console.error)\n }\n }\n }\n }\n }\n ;(<T & { timer: TimerType }>plugin).timer = timer\n\n return <PluginWithTimer>plugin\n}\n", "import type { Cmd, CmdKey } from '@milkdown/core'\nimport type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n CommandsReady,\n commandsCtx,\n commandsTimerCtx,\n createCmdKey,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Command<T> = MilkdownPlugin & {\n run: (payload?: T) => boolean\n key: CmdKey<T>\n}\n\n/// Create a command plugin. The command will be registered in the `commandsCtx` and can be called by other parts of the editor.\n/// It takes a key and a factory function. The factory function will be called when the plugin is created.\n/// The factory should return a function that will be called when the command is executed.\n/// The function should receive at **most one parameter**, which is the payload of the command.\n/// And the payload should always be **optional**.\n///\n/// ```ts\n/// import { setBlockType } from '@milkdown/prose/commands'\n///\n/// const commandPlugin = $command('SetAsHeading', (ctx) => {\n/// return (level = 1) => setBlockType(headingSchema.type(), { level });\n/// });\n/// ```\n///\n/// Additional property:\n/// - `key`: The key of the command.\n/// - `run`: The function to run the command.\n///\n/// You can use `callCommand` in `editor.action` to call the command.\n///\n/// ```ts\n/// import { callCommand } from '@milkdown/utils';\n/// const editor = Editor.make().use(/* some plugins */).use(commandPlugin).create();\n///\n/// editor.action(callCommand(commandPlugin.key, 3));\n/// ```\nexport function $command<T, K extends string>(\n key: K,\n cmd: (ctx: Ctx) => Cmd<T>\n): $Command<T> {\n const cmdKey = createCmdKey<T>(key)\n\n const plugin: MilkdownPlugin = (ctx) => async () => {\n ;(<$Command<T>>plugin).key = cmdKey\n await ctx.wait(CommandsReady)\n const command = cmd(ctx)\n ctx.get(commandsCtx).create(cmdKey, command)\n ;(<$Command<T>>plugin).run = (payload?: T) =>\n ctx.get(commandsCtx).call(key, payload)\n\n return () => {\n ctx.get(commandsCtx).remove(cmdKey)\n }\n }\n\n return <$Command<T>>plugin\n}\n\n/// The async version for `$command`. You can use `await` in the factory when creating the command.\n/// ```ts\n/// const commandPlugin = $commandASync('LoadRemoteDoc', (ctx) => {\n/// return async (url = 'my-remote-api') => {\n/// const doc = await LoadRemoteDoc(url);\n/// return addDoc(doc);\n/// }\n/// });\n/// ```\n///\n/// Additional property:\n/// - `key`: The key of the command.\n/// - `run`: The function to run the command.\n/// - `timer`: The timer which will be resolved when the command is ready.\nexport function $commandAsync<T, K extends string>(\n key: K,\n cmd: (ctx: Ctx) => Promise<Cmd<T>>,\n timerName?: string\n) {\n const cmdKey = createCmdKey<T>(key)\n return addTimer<$Command<T>>(\n async (ctx, plugin) => {\n await ctx.wait(CommandsReady)\n const command = await cmd(ctx)\n ctx.get(commandsCtx).create(cmdKey, command)\n ;(<$Command<T>>plugin).run = (payload?: T) =>\n ctx.get(commandsCtx).call(key, payload)\n ;(<$Command<T>>plugin).key = cmdKey\n return () => {\n ctx.get(commandsCtx).remove(cmdKey)\n }\n },\n commandsTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { InputRule } from '@milkdown/prose/inputrules'\n\nimport { SchemaReady, editorStateTimerCtx, inputRulesCtx } from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $InputRule = MilkdownPlugin & {\n inputRule: InputRule\n}\n\n/// Create an input rule plugin.\n/// It takes a factory function which returns a [prosemirror input rule](https://prosemirror.net/docs/ref/#inputrules.InputRule).\n///\n/// Additional property:\n/// - `inputRule`: The prosemirror input rule created.\nexport function $inputRule(inputRule: (ctx: Ctx) => InputRule): $InputRule {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n const ir = inputRule(ctx)\n ctx.update(inputRulesCtx, (irs) => [...irs, ir])\n ;(<$InputRule>plugin).inputRule = ir\n\n return () => {\n ctx.update(inputRulesCtx, (irs) => irs.filter((x) => x !== ir))\n }\n }\n\n return <$InputRule>plugin\n}\n\n/// The async version for `$inputRule`. You can use `await` in the factory when creating the input rule.\n///\n/// Additional property:\n/// - `inputRule`: The prosemirror input rule created.\n/// - `timer`: The timer which will be resolved when the input rule is ready.\nexport function $inputRuleAsync(\n inputRule: (ctx: Ctx) => Promise<InputRule>,\n timerName?: string\n) {\n return addTimer<$InputRule>(\n async (ctx, plugin) => {\n await ctx.wait(SchemaReady)\n const ir = await inputRule(ctx)\n ctx.update(inputRulesCtx, (irs) => [...irs, ir])\n plugin.inputRule = ir\n return () => {\n ctx.update(inputRulesCtx, (irs) => irs.filter((x) => x !== ir))\n }\n },\n editorStateTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n pasteRulesCtx,\n pasteRulesTimerCtx,\n SchemaReady,\n type PasteRule,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $PasteRule = MilkdownPlugin & {\n pasteRule: PasteRule\n}\n\n/// Create a paste rule plugin.\n/// It takes a factory function which returns a paste rule.\n///\n/// Additional property:\n/// - `pasteRule`: The paste rule created.\nexport function $pasteRule(pasteRule: (ctx: Ctx) => PasteRule): $PasteRule {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n const pr = pasteRule(ctx)\n ctx.update(pasteRulesCtx, (prs) => [...prs, pr])\n ;(<$PasteRule>plugin).pasteRule = pr\n\n return () => {\n ctx.update(pasteRulesCtx, (prs) => prs.filter((x) => x !== pr))\n }\n }\n\n return <$PasteRule>plugin\n}\n\n/// The async version for `$pasteRule`. You can use `await` in the factory when creating the paste rule.\n///\n/// Additional property:\n/// - `pasteRule`: The paste rule created.\n/// - `timer`: The timer which will be resolved when the paste rule is ready.\nexport function $pasteRuleAsync(\n pasteRule: (ctx: Ctx) => Promise<PasteRule>,\n timerName?: string\n) {\n return addTimer<$PasteRule>(\n async (ctx, plugin) => {\n await ctx.wait(SchemaReady)\n const pr = await pasteRule(ctx)\n ctx.update(pasteRulesCtx, (prs) => [...prs, pr])\n plugin.pasteRule = pr\n return () => {\n ctx.update(pasteRulesCtx, (prs) => prs.filter((x) => x !== pr))\n }\n },\n pasteRulesTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { MarkType } from '@milkdown/prose/model'\nimport type { MarkSchema } from '@milkdown/transformer'\n\nimport { marksCtx, schemaCtx, schemaTimerCtx } from '@milkdown/core'\nimport { missingMarkInSchema } from '@milkdown/exception'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Mark = MilkdownPlugin & {\n id: string\n schema: MarkSchema\n type: (ctx: Ctx) => MarkType\n}\n\n/// Create a mark plugin.\n/// It takes a mark id and a factory function.\n/// The factory should return a function that returns a [mark schema](/transformer#interface-markschema).\n///\n/// Additional property:\n/// - `id`: The id of the mark.\n/// - `schema`: The mark schema created.\n/// - `type`: A function that will return the [prosemirror mark type](https://prosemirror.net/docs/ref/#model.MarkType).\nexport function $mark(id: string, schema: (ctx: Ctx) => MarkSchema): $Mark {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n const markSchema = schema(ctx)\n ctx.update(marksCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, markSchema] as [string, MarkSchema],\n ])\n ;(<$Mark>plugin).id = id\n ;(<$Mark>plugin).schema = markSchema\n\n return () => {\n ctx.update(marksCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n }\n ;(<$Mark>plugin).type = (ctx) => {\n const markType = ctx.get(schemaCtx).marks[id]\n if (!markType) throw missingMarkInSchema(id)\n return markType\n }\n\n return <$Mark>plugin\n}\n\n/// The async version for `$mark`. You can use `await` in the factory when creating the mark schema.\n///\n/// Additional property:\n/// - `id`: The id of the mark.\n/// - `schema`: The mark schema created.\n/// - `type`: A function that will return the [prosemirror mark type](https://prosemirror.net/docs/ref/#model.MarkType).\n/// - `timer`: The timer which will be resolved when the mark schema is ready.\nexport function $markAsync(\n id: string,\n schema: (ctx: Ctx) => Promise<MarkSchema>,\n timerName?: string\n) {\n const plugin = addTimer<$Mark>(\n async (ctx, plugin, done) => {\n const markSchema = await schema(ctx)\n ctx.update(marksCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, markSchema] as [string, MarkSchema],\n ])\n\n plugin.id = id\n plugin.schema = markSchema\n done()\n\n return () => {\n ctx.update(marksCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n },\n schemaTimerCtx,\n timerName\n )\n\n plugin.type = (ctx) => {\n const markType = ctx.get(schemaCtx).marks[id]\n if (!markType) throw missingMarkInSchema(id)\n return markType\n }\n\n return plugin\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { NodeType } from '@milkdown/prose/model'\nimport type { NodeSchema } from '@milkdown/transformer'\n\nimport { nodesCtx, schemaCtx, schemaTimerCtx } from '@milkdown/core'\nimport { missingNodeInSchema } from '@milkdown/exception'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Node = MilkdownPlugin & {\n id: string\n schema: NodeSchema\n type: (ctx: Ctx) => NodeType\n}\n\n/// Create a node plugin.\n/// It takes a node id and a factory function.\n/// The factory should return a function that returns a [node schema](/transformer#interface-nodeschema).\n///\n/// Additional property:\n/// - `id`: The id of the node.\n/// - `schema`: The node schema created.\n/// - `type`: A function that will return the [prosemirror node type](https://prosemirror.net/docs/ref/#model.NodeType).\nexport function $node(id: string, schema: (ctx: Ctx) => NodeSchema): $Node {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n const nodeSchema = schema(ctx)\n ctx.update(nodesCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, nodeSchema] as [string, NodeSchema],\n ])\n ;(<$Node>plugin).id = id\n ;(<$Node>plugin).schema = nodeSchema\n\n return () => {\n ctx.update(nodesCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n }\n\n ;(<$Node>plugin).type = (ctx) => {\n const nodeType = ctx.get(schemaCtx).nodes[id]\n if (!nodeType) throw missingNodeInSchema(id)\n\n return nodeType\n }\n\n return <$Node>plugin\n}\n\n/// The async version for `$node`. You can use `await` in the factory when creating the node schema.\n///\n/// Additional property:\n/// - `id`: The id of the node.\n/// - `schema`: The node schema created.\n/// - `type`: A function that will return the [prosemirror node type](https://prosemirror.net/docs/ref/#model.NodeType).\n/// - `timer`: The timer which will be resolved when the node schema is ready.\nexport function $nodeAsync(\n id: string,\n schema: (ctx: Ctx) => Promise<NodeSchema>,\n timerName?: string\n) {\n const plugin = addTimer<$Node>(\n async (ctx, plugin, done) => {\n const nodeSchema = await schema(ctx)\n ctx.update(nodesCtx, (ns) => [\n ...ns.filter((n) => n[0] !== id),\n [id, nodeSchema] as [string, NodeSchema],\n ])\n\n plugin.id = id\n plugin.schema = nodeSchema\n done()\n\n return () => {\n ctx.update(nodesCtx, (ns) => ns.filter(([x]) => x !== id))\n }\n },\n schemaTimerCtx,\n timerName\n )\n\n plugin.type = (ctx) => {\n const nodeType = ctx.get(schemaCtx).nodes[id]\n if (!nodeType) throw missingNodeInSchema(id)\n\n return nodeType\n }\n\n return plugin\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { Plugin, PluginKey } from '@milkdown/prose/state'\n\nimport {\n SchemaReady,\n editorStateTimerCtx,\n prosePluginsCtx,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $Prose = MilkdownPlugin & {\n plugin: () => Plugin\n key: () => PluginKey | undefined\n}\n\n/// Create a milkdown wrapper for [prosemirror plugin](https://prosemirror.net/docs/ref/#state.Plugin).\n/// It takes a factory function which returns a [prosemirror plugin](https://prosemirror.net/docs/ref/#state.Plugin).\n///\n/// Additional property:\n/// - `plugin`: The prosemirror plugin created.\n/// - `key`: The [prosemirror plugin key](https://prosemirror.net/docs/ref/#state.PluginKey) of the plugin.\nexport function $prose(prose: (ctx: Ctx) => Plugin): $Prose {\n let prosePlugin: Plugin | undefined\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n prosePlugin = prose(ctx)\n ctx.update(prosePluginsCtx, (ps) => [...ps, prosePlugin!])\n\n return () => {\n ctx.update(prosePluginsCtx, (ps) => ps.filter((x) => x !== prosePlugin))\n }\n }\n ;(<$Prose>plugin).plugin = () => prosePlugin!\n ;(<$Prose>plugin).key = () => prosePlugin!.spec.key\n\n return <$Prose>plugin\n}\n\n/// The async version for `$prose`. You can use `await` in the factory when creating the plugin.\n///\n/// Additional property:\n/// - `plugin`: The prosemirror plugin created.\n/// - `key`: The [prosemirror plugin key](https://prosemirror.net/docs/ref/#state.PluginKey) of the plugin.\n/// - `timer`: The timer which will be resolved when the plugin is ready.\nexport function $proseAsync(\n prose: (ctx: Ctx) => Promise<Plugin>,\n timerName?: string\n) {\n let prosePlugin: Plugin | undefined\n const plugin = addTimer<$Prose>(\n async (ctx) => {\n await ctx.wait(SchemaReady)\n prosePlugin = await prose(ctx)\n ctx.update(prosePluginsCtx, (ps) => [...ps, prosePlugin!])\n\n return () => {\n ctx.update(prosePluginsCtx, (ps) => ps.filter((x) => x !== prosePlugin))\n }\n },\n editorStateTimerCtx,\n timerName\n )\n\n plugin.plugin = () => prosePlugin!\n plugin.key = () => prosePlugin!.spec.key\n\n return plugin\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { Command } from '@milkdown/prose/state'\n\nimport {\n KeymapReady,\n editorStateTimerCtx,\n keymapCtx,\n type KeymapItem,\n} from '@milkdown/core'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type Keymap = Record<string, Command | KeymapItem>\n\n/// @internal\nexport type $Shortcut = MilkdownPlugin & {\n keymap: Keymap\n}\n\n/// Create a shortcut for the editor.\n/// It takes a factory function which returns a [prosemirror keymap](https://prosemirror.net/docs/ref/#keymap).\n///\n/// Additional property:\n/// - `keymap`: The prosemirror keymap created.\nexport function $shortcut(shortcut: (ctx: Ctx) => Keymap): $Shortcut {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(KeymapReady)\n const km = ctx.get(keymapCtx)\n const keymap = shortcut(ctx)\n const dispose = km.addObjectKeymap(keymap)\n ;(<$Shortcut>plugin).keymap = keymap\n\n return () => {\n dispose()\n }\n }\n\n return <$Shortcut>plugin\n}\n\n/// The async version for `$shortcut`. You can use `await` in the factory when creating the keymap.\n///\n/// Additional property:\n/// - `keymap`: The prosemirror keymap created.\n/// - `timer`: The timer which will be resolved when the plugin is ready.\nexport function $shortcutAsync(\n shortcut: (ctx: Ctx) => Promise<Keymap>,\n timerName?: string\n) {\n return addTimer<$Shortcut>(\n async (ctx, plugin) => {\n await ctx.wait(KeymapReady)\n const km = ctx.get(keymapCtx)\n const keymap = await shortcut(ctx)\n const dispose = km.addObjectKeymap(keymap)\n plugin.keymap = keymap\n\n return () => {\n dispose()\n }\n },\n editorStateTimerCtx,\n timerName\n )\n}\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type {\n MarkViewConstructor,\n NodeViewConstructor,\n} from '@milkdown/prose/view'\n\nimport {\n SchemaReady,\n editorViewTimerCtx,\n markViewCtx,\n nodeViewCtx,\n} from '@milkdown/core'\nimport { NodeType } from '@milkdown/prose/model'\n\nimport type { $Mark, $Node } from '.'\n\nimport { addTimer } from './utils'\n\n/// @internal\nexport type $View<\n T extends $Node | $Mark,\n V extends NodeViewConstructor | MarkViewConstructor,\n> = MilkdownPlugin & {\n view: V\n type: T\n}\n\n/// @internal\nexport type GetConstructor<T extends $Node | $Mark> = T extends $Node\n ? NodeViewConstructor\n : T extends $Mark\n ? MarkViewConstructor\n : NodeViewConstructor | MarkViewConstructor\n\n/// Create a [prosemirror node/mark view](https://prosemirror.net/docs/ref/#view.NodeView) plugin.\n/// It takes two arguments\n/// - `type`: The node/mark plugin that needs to add a view.\n/// - `view`: The factory that creates the view. It should return a function that returns a [node/mark view constructor](https://prosemirror.net/docs/ref/#view.NodeView).\n///\n/// Additional property:\n/// - `view`: The view created.\n/// - `type`: The node/mark plugin that needs to add a view.\nexport function $view<\n T extends $Node | $Mark,\n V extends NodeViewConstructor | MarkViewConstructor = GetConstructor<T>,\n>(type: T, view: (ctx: Ctx) => V): $View<T, V> {\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(SchemaReady)\n const v = view(ctx)\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, NodeViewConstructor],\n ])\n else\n ctx.update(markViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, MarkViewConstructor],\n ])\n ;(<$View<T, V>>plugin).view = v\n ;(<$View<T, V>>plugin).type = type\n\n return () => {\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n else ctx.update(markViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n }\n }\n\n return <$View<T, V>>plugin\n}\n\n/// The async version for `$view`. You can use `await` in the factory when creating the view.\n///\n/// Additional property:\n/// - `view`: The view created.\n/// - `type`: The node/mark plugin that needs to add a view.\n/// - `timer`: The timer which will be resolved when the view is ready.\nexport function $viewAsync<\n T extends $Node | $Mark,\n V extends NodeViewConstructor | MarkViewConstructor = GetConstructor<T>,\n>(type: T, view: (ctx: Ctx) => Promise<V>, timerName?: string) {\n return addTimer<$View<T, V>>(\n async (ctx, plugin) => {\n await ctx.wait(SchemaReady)\n const v = await view(ctx)\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, NodeViewConstructor],\n ])\n else\n ctx.update(markViewCtx, (ps) => [\n ...ps,\n [type.id, v] as [string, MarkViewConstructor],\n ])\n\n plugin.view = v\n plugin.type = type\n\n return () => {\n if (type.type(ctx) instanceof NodeType)\n ctx.update(nodeViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n else ctx.update(markViewCtx, (ps) => ps.filter((x) => x[0] !== type.id))\n }\n },\n editorViewTimerCtx,\n timerName\n )\n}\n", "import type { MilkdownPlugin, SliceType } from '@milkdown/ctx'\n\nimport { createSlice } from '@milkdown/ctx'\n\n/// @internal\nexport type $Ctx<T, N extends string> = MilkdownPlugin & {\n key: SliceType<T, N>\n}\n\n/// Create a slice plugin. The plugin will be registered in the `ctx` and can be accessed by other parts of the editor.\n/// ```ts\n/// const counterCtx = $ctx(0, 'counter');\n/// ```\n///\n/// Additional property:\n/// - `key`: The key of the slice.\nexport function $ctx<T, N extends string>(value: T, name: N): $Ctx<T, N> {\n const slice = createSlice(value, name)\n const plugin: $Ctx<T, N> = (ctx) => {\n ctx.inject(slice)\n return () => {\n return () => {\n ctx.remove(slice)\n }\n }\n }\n\n plugin.key = slice\n\n return plugin\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { NodeSchema } from '@milkdown/transformer'\n\nimport type { $Ctx } from '../$ctx'\nimport type { $Node } from '../$node'\n\nimport { $ctx } from '../$ctx'\nimport { $node } from '../$node'\n\n/// @internal\nexport type GetNodeSchema = (ctx: Ctx) => NodeSchema\n\n/// @internal\nexport type $NodeSchema<T extends string> = [\n schemaCtx: $Ctx<GetNodeSchema, T>,\n schema: $Node,\n] & {\n id: $Node['id']\n type: $Node['type']\n node: $Node\n ctx: $Ctx<GetNodeSchema, T>\n key: $Ctx<GetNodeSchema, T>['key']\n extendSchema: (\n handler: (prev: GetNodeSchema) => GetNodeSchema\n ) => $NodeSchema<T>\n}\n\n/// Create a plugin for node schema.\n/// The first parameter is the id of the node schema.\n/// The second parameter is the function that returns the node schema.\n///\n/// The function will return a plugin with additional properties:\n/// - `id`: The id of the node schema.\n/// - `type`: A function witch will return the type of the node schema.\n/// - `ctx`: The context of the node schema.\n/// - `node`: The node schema plugin.\n/// - `schema`: The node schema.\n/// - `key`: The key of slice which contains the node schema factory.\n/// - `extendSchema`: A function witch will return a plugin that can extend the node schema.\nexport function $nodeSchema<T extends string>(\n id: T,\n schema: GetNodeSchema\n): $NodeSchema<T> {\n const schemaCtx = $ctx(schema, id)\n\n const nodeSchema = $node(id, (ctx) => {\n const userSchema = ctx.get(schemaCtx.key)\n return userSchema(ctx)\n })\n\n const result = [schemaCtx, nodeSchema] as $NodeSchema<T>\n result.id = nodeSchema.id\n result.node = nodeSchema\n\n result.type = (ctx: Ctx) => nodeSchema.type(ctx)\n result.ctx = schemaCtx\n result.key = schemaCtx.key\n result.extendSchema = (handler) => {\n const nextSchema = handler(schema)\n\n return $nodeSchema(id, nextSchema)\n }\n\n return result\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { MarkSchema } from '@milkdown/transformer'\n\nimport type { $Ctx } from '../$ctx'\nimport type { $Mark } from '../$mark'\n\nimport { $ctx } from '../$ctx'\nimport { $mark } from '../$mark'\n\n/// @internal\nexport type GetMarkSchema = (ctx: Ctx) => MarkSchema\n\n/// @internal\nexport type $MarkSchema<T extends string> = [\n schemaCtx: $Ctx<GetMarkSchema, T>,\n schema: $Mark,\n] & {\n id: $Mark['id']\n type: $Mark['type']\n mark: $Mark\n ctx: $Ctx<GetMarkSchema, T>\n key: $Ctx<GetMarkSchema, T>['key']\n extendSchema: (\n handler: (prev: GetMarkSchema) => GetMarkSchema\n ) => $MarkSchema<T>\n}\n\n/// Create a plugin for mark schema.\n/// The first parameter is the id of the mark schema.\n/// The second parameter is the function that returns the mark schema.\n///\n/// The function will return a plugin with additional properties:\n/// - `id`: The id of the mark schema.\n/// - `type`: A function witch will return the type of the mark schema.\n/// - `ctx`: The context of the mark schema.\n/// - `mark`: The mark schema plugin.\n/// - `schema`: The mark schema.\n/// - `key`: The key of slice which contains the mark schema factory.\n/// - `extendSchema`: A function witch will return a plugin that can extend the mark schema.\nexport function $markSchema<T extends string>(\n id: T,\n schema: GetMarkSchema\n): $MarkSchema<T> {\n const schemaCtx = $ctx(schema, id)\n\n const markSchema = $mark(id, (ctx) => {\n const userSchema = ctx.get(schemaCtx.key)\n return userSchema(ctx)\n })\n\n const result = [schemaCtx, markSchema] as $MarkSchema<T>\n result.id = markSchema.id\n result.mark = markSchema\n\n result.type = (ctx: Ctx) => markSchema.type(ctx)\n result.ctx = schemaCtx\n result.key = schemaCtx.key\n result.extendSchema = (handler) => {\n const nextSchema = handler(schema)\n\n return $markSchema(id, nextSchema)\n }\n\n return result\n}\n", "import type { Ctx, SliceType } from '@milkdown/ctx'\nimport type { Command } from '@milkdown/prose/state'\n\nimport type { $Ctx } from '../$ctx'\nimport type { $Shortcut, Keymap } from '../$shortcut'\n\nimport { $ctx } from '../$ctx'\nimport { $shortcut } from '../$shortcut'\n\n/// @internal\nexport type KeymapConfig<K extends string> = Record<\n K,\n {\n shortcuts: string | string[]\n priority?: number\n }\n>\n\n/// @internal\nexport interface KeymapItem {\n shortcuts: string | string[]\n priority?: number\n command: (ctx: Ctx) => Command\n}\n\n/// @internal\nexport type UserKeymapConfig<Key extends string> = Record<Key, KeymapItem>\n\n/// @internal\nexport type $UserKeymap<N extends string, Key extends string> = [\n $Ctx<KeymapConfig<Key>, `${N}Keymap`>,\n $Shortcut,\n] & {\n key: SliceType<KeymapConfig<Key>, `${N}Keymap`>\n keymap: Keymap\n ctx: $Ctx<KeymapConfig<Key>, `${N}Keymap`>\n shortcuts: $Shortcut\n}\n\n/// Create a keymap which can be customized by user.\n/// It takes two arguments:\n/// - `name`: The name of the keymap.\n/// - `userKeymap`: The keymap config which contains the shortcuts and the command.\nexport function $useKeymap<N extends string, Key extends string>(\n name: N,\n userKeymap: UserKeymapConfig<Key>\n) {\n const key = Object.fromEntries(\n Object.entries<KeymapItem>(userKeymap).map(\n ([key, { shortcuts, priority }]) => {\n return [key, { shortcuts, priority }]\n }\n )\n ) as KeymapConfig<Key>\n\n const keymapDef = $ctx<KeymapConfig<Key>, `${N}Keymap`>(key, `${name}Keymap`)\n\n const shortcuts = $shortcut((ctx) => {\n const keys = ctx.get(keymapDef.key)\n\n const keymapTuple = Object.entries<KeymapItem>(userKeymap).flatMap(\n ([key, { command }]) => {\n const target = keys[key as Key]\n const targetKeys = [target.shortcuts].flat()\n const priority = target.priority\n\n return targetKeys.map(\n (targetKey) =>\n [\n targetKey,\n {\n key: targetKey,\n onRun: command,\n priority,\n },\n ] as const\n )\n }\n )\n\n return Object.fromEntries(keymapTuple)\n })\n\n const result = [keymapDef, shortcuts] as $UserKeymap<N, Key>\n result.ctx = keymapDef\n result.shortcuts = shortcuts\n result.key = keymapDef.key\n result.keymap = shortcuts.keymap\n\n return result\n}\n", "import type { Mark, Node } from '@milkdown/prose/model'\n\nimport type { $Ctx } from '../$ctx'\n\nimport { $ctx } from '../$ctx'\n\n/// @internal\nexport type $NodeAttr = $Ctx<\n (node: Node) => Record<string, any>,\n `${string}Attr`\n>\n\n/// Create a slice which contains the attributes for node schema.\nexport const $nodeAttr = (\n name: string,\n value: (node: Node) => Record<string, any> = () => ({})\n): $NodeAttr => $ctx(value, `${name}Attr`)\n\n/// @internal\nexport type $MarkAttr = $Ctx<\n (node: Mark) => Record<string, any>,\n `${string}Attr`\n>\n\n/// Create a slice which contains the attributes for mark schema.\nexport const $markAttr = (\n name: string,\n value: (mark: Mark) => Record<string, any> = () => ({})\n): $MarkAttr => $ctx(value, `${name}Attr`)\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { RemarkPlugin, RemarkPluginRaw } from '@milkdown/transformer'\n\nimport { InitReady, remarkPluginsCtx } from '@milkdown/core'\n\nimport type { $Ctx } from '../$ctx'\n\nimport { $ctx } from '../$ctx'\n\n/// @internal\nexport type $Remark<Id extends string, Options> = [\n optionsCtx: $Ctx<Options, Id>,\n plugin: MilkdownPlugin,\n] & {\n id: Id\n plugin: MilkdownPlugin\n options: $Ctx<Options, Id>\n}\n\n/// Create a milkdown wrapper for [remark plugin](https://github.com/remarkjs/remark/blob/main/doc/plugins.md).\n/// It takes a factory function which returns a [remark plugin](https://github.com/remarkjs/remark/blob/main/doc/plugins.md).\n///\n/// Additional property:\n/// - `id`: The id of the remark plugin.\n/// - `plugin`: The remark plugin created.\n/// - `options`: The ctx contains the options of the remark plugin.\nexport function $remark<Id extends string, Options>(\n id: Id,\n remark: (ctx: Ctx) => RemarkPluginRaw<Options>,\n initialOptions?: Options\n): $Remark<Id, Options> {\n const options = $ctx<Options, Id>(initialOptions ?? ({} as Options), id)\n const plugin: MilkdownPlugin = (ctx) => async () => {\n await ctx.wait(InitReady)\n const re = remark(ctx)\n const remarkPlugin: RemarkPlugin<Options> = {\n plugin: re,\n options: ctx.get(options.key),\n }\n ctx.update(remarkPluginsCtx, (rp) => [...rp, remarkPlugin as RemarkPlugin])\n\n return () => {\n ctx.update(remarkPluginsCtx, (rp) => rp.filter((x) => x !== remarkPlugin))\n }\n }\n\n const result = [options, plugin] as $Remark<Id, Options>\n result.id = id\n result.plugin = plugin\n result.options = options\n\n return result\n}\n", "import type { CmdKey } from '@milkdown/core'\nimport type { Ctx } from '@milkdown/ctx'\n\nimport { commandsCtx } from '@milkdown/core'\n\ntype InferParams<T> = T extends CmdKey<infer U> ? U : never\n\n/// Call a command. You can pass the command key and the payload to the macro.\nexport function callCommand<T extends CmdKey<any>>(\n slice: string,\n payload?: InferParams<T>\n): (ctx: Ctx) => boolean\nexport function callCommand<T>(\n slice: CmdKey<T>,\n payload?: T\n): (ctx: Ctx) => boolean\nexport function callCommand(\n slice: string | CmdKey<any>,\n payload?: any\n): (ctx: Ctx) => boolean\nexport function callCommand(\n slice: string | CmdKey<any>,\n payload?: any\n): (ctx: Ctx) => boolean {\n return (ctx: Ctx) => {\n return ctx.get(commandsCtx).call(slice, payload)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\n/// Force update the editor.\nexport function forceUpdate() {\n return (ctx: Ctx): void => {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n\n const nextTr = Object.assign(Object.create(tr), tr).setTime(Date.now())\n return view.dispatch(nextTr)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx, schemaCtx } from '@milkdown/core'\nimport { DOMSerializer } from '@milkdown/prose/model'\n\n/// Get content of the editor as HTML string.\nexport function getHTML() {\n return (ctx: Ctx): string => {\n const div = document.createElement('div')\n const schema = ctx.get(schemaCtx)\n const view = ctx.get(editorViewCtx)\n const fragment = DOMSerializer.fromSchema(schema).serializeFragment(\n view.state.doc.content\n )\n\n div.appendChild(fragment)\n\n return div.innerHTML\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx, schemaCtx, serializerCtx } from '@milkdown/core'\n\n/// Get content of the editor as markdown string.\n/// If range is provided, it will return the markdown string of the range.\n/// If range is not provided, it will return the markdown string of the whole document.\nexport function getMarkdown(range?: { from: number; to: number }) {\n return (ctx: Ctx): string => {\n const view = ctx.get(editorViewCtx)\n const schema = ctx.get(schemaCtx)\n const serializer = ctx.get(serializerCtx)\n\n if (!range) {\n return serializer(view.state.doc)\n }\n\n const state = view.state\n const slice = state.doc.slice(range.from, range.to, true)\n const doc = schema.topNodeType.createAndFill(null, slice.content)\n if (!doc) {\n console.error('No document found')\n return ''\n }\n return serializer(doc)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx, parserCtx, schemaCtx } from '@milkdown/core'\nimport { isTextOnlySlice } from '@milkdown/prose'\nimport { DOMParser, DOMSerializer, Slice } from '@milkdown/prose/model'\n\n/// Insert markdown string into the editor.\nexport function insert(markdown: string, inline: boolean = false) {\n return (ctx: Ctx) => {\n const view = ctx.get(editorViewCtx)\n const parser = ctx.get(parserCtx)\n const doc = parser(markdown)\n if (!doc) return\n\n if (!inline) {\n const contentSlice = view.state.selection.content()\n return view.dispatch(\n view.state.tr\n .replaceSelection(\n new Slice(doc.content, contentSlice.openStart, contentSlice.openEnd)\n )\n .scrollIntoView()\n )\n }\n\n const schema = ctx.get(schemaCtx)\n const dom = DOMSerializer.fromSchema(schema).serializeFragment(doc.content)\n const domParser = DOMParser.fromSchema(schema)\n const slice = domParser.parseSlice(dom)\n const node = isTextOnlySlice(slice)\n if (node) {\n view.dispatch(view.state.tr.replaceSelectionWith(node, true))\n return\n }\n\n view.dispatch(view.state.tr.replaceSelection(slice))\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\n/// Get outline of the editor.\nexport function outline() {\n return (ctx: Ctx): Array<{ text: string; level: number; id: string }> => {\n const view = ctx.get(editorViewCtx)\n const data: { text: string; level: number; id: string }[] = []\n const doc = view.state.doc\n doc.descendants((node) => {\n if (node.type.name === 'heading' && node.attrs.level)\n data.push({\n text: node.textContent,\n level: node.attrs.level,\n id: node.attrs.id,\n })\n })\n return data\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport {\n editorStateOptionsCtx,\n editorViewCtx,\n parserCtx,\n prosePluginsCtx,\n schemaCtx,\n} from '@milkdown/core'\nimport { Slice } from '@milkdown/prose/model'\nimport { EditorState } from '@milkdown/prose/state'\n\n/// Replace all content of the editor with markdown string.\n/// If flush is true, the editor state will be re-created.\nexport function replaceAll(markdown: string, flush = false) {\n return (ctx: Ctx): void => {\n const view = ctx.get(editorViewCtx)\n const parser = ctx.get(parserCtx)\n const doc = parser(markdown)\n if (!doc) return\n\n if (!flush) {\n const { state } = view\n return view.dispatch(\n state.tr.replace(\n 0,\n state.doc.content.size,\n new Slice(doc.content, 0, 0)\n )\n )\n }\n\n const schema = ctx.get(schemaCtx)\n const overrideOptions = ctx.get(editorStateOptionsCtx)\n const plugins = ctx.get(prosePluginsCtx)\n const newOptions = overrideOptions({\n schema,\n doc,\n plugins,\n })\n\n const state = EditorState.create(newOptions)\n\n view.updateState(state)\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Attrs } from '@milkdown/prose/model'\n\nimport { editorViewCtx } from '@milkdown/core'\n\n/// Set the attributes of the node at the given position.\nexport function setAttr(pos: number, update: (prevAttrs: Attrs) => Attrs) {\n return (ctx: Ctx) => {\n const view = ctx.get(editorViewCtx)\n const { tr } = view.state\n const node = tr.doc.nodeAt(pos)\n if (!node) return\n const nextAttr = update(node.attrs)\n return view.dispatch(tr.setNodeMarkup(pos, undefined, nextAttr))\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { parserCtx, schemaCtx } from '@milkdown/core'\nimport { DOMSerializer, DOMParser } from '@milkdown/prose/model'\n\n/// Convert markdown string to slice.\nexport function markdownToSlice(markdown: string) {\n return (ctx: Ctx) => {\n const parser = ctx.get(parserCtx)\n const doc = parser(markdown)\n const schema = ctx.get(schemaCtx)\n const dom = DOMSerializer.fromSchema(schema).serializeFragment(doc.content)\n const domParser = DOMParser.fromSchema(schema)\n const slice = domParser.parseSlice(dom)\n\n return slice\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\nimport { markdownToSlice } from './markdown-to-slice'\n\n/// Insert markdown string to the given position.\n/// If inline is true, the markdown will be inserted as inline text.\n/// If inline is false, the markdown will be inserted as block text.\nexport function insertPos(\n markdown: string,\n pos: number,\n inline: boolean = false\n) {\n return (ctx: Ctx) => {\n const slice = markdownToSlice(markdown)(ctx)\n const view = ctx.get(editorViewCtx)\n const toPos = view.state.doc.resolve(pos)\n\n const min = 0\n const max = view.state.doc.content.size\n const resolved = inline ? toPos.pos : toPos.after(toPos.depth - 1)\n const to = Math.min(Math.max(resolved, min), max)\n\n view.dispatch(view.state.tr.replace(resolved, to, slice))\n }\n}\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { editorViewCtx } from '@milkdown/core'\n\nimport { markdownToSlice } from './markdown-to-slice'\n\n/// Replace the content of the given range with the markdown string.\nexport function replaceRange(\n markdown: string,\n range: { from: number; to: number }\n) {\n return (ctx: Ctx) => {\n const view = ctx.get(editorViewCtx)\n const slice = markdownToSlice(markdown)(ctx)\n\n view.dispatch(view.state.tr.replace(range.from, range.to, slice))\n }\n}\n", "/// @internal\nexport type Many<T> = T | ReadonlyArray<T>\n\ninterface Pipe {\n pipe: (<A extends any[], R1, R2, R3, R4, R5, R6, R7>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5,\n f6: (a: R5) => R6,\n f7: (a: R6) => R7\n ) => (...args: A) => R7) &\n (<A extends any[], R1, R2, R3, R4, R5, R6, R7>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5,\n f6: (a: R5) => R6,\n f7: (a: R6) => R7,\n ...func: Array<Many<(a: any) => any>>\n ) => (...args: A) => any) &\n (<A extends any[], R1, R2, R3, R4, R5, R6>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5,\n f6: (a: R5) => R6\n ) => (...args: A) => R6) &\n (<A extends any[], R1, R2, R3, R4, R5>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4,\n f5: (a: R4) => R5\n ) => (...args: A) => R5) &\n (<A extends any[], R1, R2, R3, R4>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3,\n f4: (a: R3) => R4\n ) => (...args: A) => R4) &\n (<A extends any[], R1, R2, R3>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2,\n f3: (a: R2) => R3\n ) => (...args: A) => R3) &\n (<A extends any[], R1, R2>(\n f1: (...args: A) => R1,\n f2: (a: R1) => R2\n ) => (...args: A) => R2) &\n ((...func: Array<Many<(...args: any[]) => any>>) => (...args: any[]) => any)\n}\n\n/// @internal\nexport const pipe: Pipe['pipe'] = (...funcs: any[]) => {\n const length = funcs.length\n let index = length\n while (index--) {\n if (typeof funcs[index] !== 'function')\n throw new TypeError('Expected a function')\n }\n return (...args: any[]) => {\n let index = 0\n let result = length ? funcs[index](...args) : args[0]\n while (++index < length) result = funcs[index](result)\n\n return result\n }\n}\n", "import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `<ol>`\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1, validate: \"number\" } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `<ul>`.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`<li>`) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to);\n if (!range)\n return false;\n let tr = dispatch ? state.tr : null;\n if (!wrapRangeInList(tr, range, listType, attrs))\n return false;\n if (dispatch)\n dispatch(tr.scrollIntoView());\n return true;\n };\n}\n/**\nTry to wrap the given node range in a list of the given type.\nReturn `true` when this is possible, `false` otherwise. When `tr`\nis non-null, the wrapping is added to that transaction. When it is\n`null`, the function only queries whether the wrapping is\npossible.\n*/\nfunction wrapRangeInList(tr, range, listType, attrs = null) {\n let doJoin = false, outerRange = range, doc = range.$from.doc;\n // This is at the top of an existing list item\n if (range.depth >= 2 && range.$from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if (range.$from.index(range.depth - 1) == 0)\n return false;\n let $insert = doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new NodeRange(range.$from, doc.resolve(range.$to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (tr)\n doWrapInList(tr, range, wrap, doJoin, listType);\n return true;\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!canSplit(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nActs like [`splitListItem`](https://prosemirror.net/docs/ref/#schema-list.splitListItem), but\nwithout resetting the set of active marks at the cursor.\n*/\nfunction splitListItemKeepMarks(itemType, itemAttrs) {\n let split = splitListItem(itemType, itemAttrs);\n return (state, dispatch) => {\n return split(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = liftTarget(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let $after = tr.doc.resolve(tr.mapping.map(end, -1) - 1);\n if (canJoin(tr.doc, $after.pos) && $after.nodeBefore.type == $after.nodeAfter.type)\n tr.join($after.pos);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, splitListItemKeepMarks, wrapInList, wrapRangeInList };\n", "/**\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Nodes} Nodes\n */\n\n/**\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition (optional).\n * @returns {Definition | undefined}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport {visit} from 'unist-util-visit'\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Nodes} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Map<string, Definition>} */\n const cache = new Map()\n\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(tree, 'definition', function (definition) {\n const id = clean(definition.identifier)\n if (id && !cache.get(id)) {\n cache.set(id, definition)\n }\n })\n\n return definition\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier)\n return cache.get(id)\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n", "/**\n * @typedef {import('mdast').Root} Root\n */\n\nimport {definitions} from 'mdast-util-definitions'\nimport {SKIP, visit} from 'unist-util-visit'\n\n/**\n * Turn references and definitions into normal links and images.\n *\n * @returns\n * Transform.\n */\nexport default function remarkInlineLinks() {\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n const definition = definitions(tree)\n\n visit(tree, function (node, index, parent) {\n if (\n node.type === 'definition' &&\n parent !== undefined &&\n typeof index === 'number'\n ) {\n parent.children.splice(index, 1)\n return [SKIP, index]\n }\n\n if (node.type === 'imageReference' || node.type === 'linkReference') {\n const def = definition(node.identifier)\n\n if (def && parent && typeof index === 'number') {\n parent.children[index] =\n node.type === 'imageReference'\n ? {type: 'image', url: def.url, title: def.title, alt: node.alt}\n : {\n type: 'link',\n url: def.url,\n title: def.title,\n children: node.children\n }\n return [SKIP, index]\n }\n }\n })\n }\n}\n", "import type { Node } from '@milkdown/prose/model'\nimport type { SerializerState } from '@milkdown/transformer'\n\nimport { Fragment } from '@milkdown/prose/model'\n\nexport function serializeText(state: SerializerState, node: Node) {\n const lastIsHardBreak =\n node.childCount >= 1 && node.lastChild?.type.name === 'hardbreak'\n if (!lastIsHardBreak) {\n state.next(node.content)\n return\n }\n\n const contentArr: Node[] = []\n node.content.forEach((n, _, i) => {\n if (i === node.childCount - 1) return\n\n contentArr.push(n)\n })\n state.next(Fragment.fromArray(contentArr))\n}\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/preset-commonmark',\n ...meta,\n },\n })\n\n return plugin\n}\n", "import { commandsCtx, remarkStringifyOptionsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the emphasis mark.\nexport const emphasisAttr = $markAttr('emphasis')\n\nwithMeta(emphasisAttr, {\n displayName: 'Attr<emphasis>',\n group: 'Emphasis',\n})\n\n/// Emphasis mark schema.\nexport const emphasisSchema = $markSchema('emphasis', (ctx) => ({\n attrs: {\n marker: {\n default: ctx.get(remarkStringifyOptionsCtx).emphasis || '*',\n validate: 'string',\n },\n },\n parseDOM: [\n { tag: 'i' },\n { tag: 'em' },\n { style: 'font-style', getAttrs: (value) => (value === 'italic') as false },\n ],\n toDOM: (mark) => ['em', ctx.get(emphasisAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'emphasis',\n runner: (state, node, markType) => {\n state.openMark(markType, { marker: node.marker })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'emphasis',\n runner: (state, mark) => {\n state.withMark(mark, 'emphasis', undefined, {\n marker: mark.attrs.marker,\n })\n },\n },\n}))\n\nwithMeta(emphasisSchema.mark, {\n displayName: 'MarkSchema<emphasis>',\n group: 'Emphasis',\n})\n\nwithMeta(emphasisSchema.ctx, {\n displayName: 'MarkSchemaCtx<emphasis>',\n group: 'Emphasis',\n})\n\n/// A command to toggle the emphasis mark.\nexport const toggleEmphasisCommand = $command('ToggleEmphasis', (ctx) => () => {\n return toggleMark(emphasisSchema.type(ctx))\n})\n\nwithMeta(toggleEmphasisCommand, {\n displayName: 'Command<toggleEmphasisCommand>',\n group: 'Emphasis',\n})\n\n/// Input rule for use `*` to create emphasis mark.\nexport const emphasisStarInputRule = $inputRule((ctx) => {\n return markRule(/(?:^|[^*])\\*([^*]+)\\*$/, emphasisSchema.type(ctx), {\n getAttr: () => ({\n marker: '*',\n }),\n updateCaptured: ({ fullMatch, start }) =>\n !fullMatch.startsWith('*')\n ? { fullMatch: fullMatch.slice(1), start: start + 1 }\n : {},\n })\n})\n\nwithMeta(emphasisStarInputRule, {\n displayName: 'InputRule<emphasis>|Star',\n group: 'Emphasis',\n})\n\n/// Input rule for use `_` to create emphasis mark.\nexport const emphasisUnderscoreInputRule = $inputRule((ctx) => {\n return markRule(/\\b_(?![_\\s])(.*?[^_\\s])_\\b/, emphasisSchema.type(ctx), {\n getAttr: () => ({\n marker: '_',\n }),\n updateCaptured: ({ fullMatch, start }) =>\n !fullMatch.startsWith('_')\n ? { fullMatch: fullMatch.slice(1), start: start + 1 }\n : {},\n })\n})\n\nwithMeta(emphasisUnderscoreInputRule, {\n displayName: 'InputRule<emphasis>|Underscore',\n group: 'Emphasis',\n})\n\n/// Keymap for the emphasis mark.\n/// - `Mod-i` - Toggle the emphasis mark.\nexport const emphasisKeymap = $useKeymap('emphasisKeymap', {\n ToggleEmphasis: {\n shortcuts: 'Mod-i',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleEmphasisCommand.key)\n },\n },\n})\n\nwithMeta(emphasisKeymap.ctx, {\n displayName: 'KeymapCtx<emphasis>',\n group: 'Emphasis',\n})\n\nwithMeta(emphasisKeymap.shortcuts, {\n displayName: 'Keymap<emphasis>',\n group: 'Emphasis',\n})\n", "import { commandsCtx, remarkStringifyOptionsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the strong mark.\nexport const strongAttr = $markAttr('strong')\n\nwithMeta(strongAttr, {\n displayName: 'Attr<strong>',\n group: 'Strong',\n})\n\n/// Strong mark schema.\nexport const strongSchema = $markSchema('strong', (ctx) => ({\n attrs: {\n marker: {\n default: ctx.get(remarkStringifyOptionsCtx).strong || '*',\n validate: 'string',\n },\n },\n parseDOM: [\n // This works around a Google Docs misbehavior where\n // pasted content will be inexplicably wrapped in `<b>`\n // tags with a font-weight normal.\n {\n tag: 'b',\n getAttrs: (node: HTMLElement) =>\n node.style.fontWeight != 'normal' && null,\n },\n { tag: 'strong' },\n { style: 'font-style', getAttrs: (value) => (value === 'bold') as false },\n { style: 'font-weight=400', clearMark: (m) => m.type.name == 'strong' },\n {\n style: 'font-weight',\n getAttrs: (value: string) =>\n /^(bold(er)?|[5-9]\\d{2,})$/.test(value) && null,\n },\n ],\n toDOM: (mark) => ['strong', ctx.get(strongAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'strong',\n runner: (state, node, markType) => {\n state.openMark(markType, { marker: node.marker })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'strong',\n runner: (state, mark) => {\n state.withMark(mark, 'strong', undefined, {\n marker: mark.attrs.marker,\n })\n },\n },\n}))\n\nwithMeta(strongSchema.mark, {\n displayName: 'MarkSchema<strong>',\n group: 'Strong',\n})\n\nwithMeta(strongSchema.ctx, {\n displayName: 'MarkSchemaCtx<strong>',\n group: 'Strong',\n})\n\n/// A command to toggle the strong mark.\nexport const toggleStrongCommand = $command('ToggleStrong', (ctx) => () => {\n return toggleMark(strongSchema.type(ctx))\n})\n\nwithMeta(toggleStrongCommand, {\n displayName: 'Command<toggleStrongCommand>',\n group: 'Strong',\n})\n\n/// A input rule that will capture the strong mark.\nexport const strongInputRule = $inputRule((ctx) => {\n // Avoid matching when the opening delimiter is directly adjacent to alphanumeric characters,\n // colon or slash (to prevent matches inside file paths, URLs, or intra-word like `a**b**c`).\n // Also ensure the closing delimiter is not followed by such characters (mirrors strike-through rule).\n return markRule(\n /(?<![\\w:/])(?:\\*\\*|__)([^*_]+?)(?:\\*\\*|__)(?![\\w/])$/,\n strongSchema.type(ctx),\n {\n getAttr: (match) => {\n return {\n marker: match[0].startsWith('*') ? '*' : '_',\n }\n },\n }\n )\n})\n\nwithMeta(strongInputRule, {\n displayName: 'InputRule<strong>',\n group: 'Strong',\n})\n\n/// Keymap for the strong mark.\n/// - `Mod-b` - Toggle the strong mark.\nexport const strongKeymap = $useKeymap('strongKeymap', {\n ToggleBold: {\n shortcuts: ['Mod-b'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleStrongCommand.key)\n },\n },\n})\n\nwithMeta(strongKeymap.ctx, {\n displayName: 'KeymapCtx<strong>',\n group: 'Strong',\n})\n\nwithMeta(strongKeymap.shortcuts, {\n displayName: 'Keymap<strong>',\n group: 'Strong',\n})\n", "import type { MarkType } from '@milkdown/prose/model'\n\nimport { commandsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the inlineCode mark.\nexport const inlineCodeAttr = $markAttr('inlineCode')\n\nwithMeta(inlineCodeAttr, {\n displayName: 'Attr<inlineCode>',\n group: 'InlineCode',\n})\n\n/// InlineCode mark schema.\nexport const inlineCodeSchema = $markSchema('inlineCode', (ctx) => ({\n priority: 100,\n code: true,\n parseDOM: [{ tag: 'code' }],\n toDOM: (mark) => ['code', ctx.get(inlineCodeAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'inlineCode',\n runner: (state, node, markType) => {\n state.openMark(markType)\n state.addText(node.value as string)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'inlineCode',\n runner: (state, mark, node) => {\n state.withMark(mark, 'inlineCode', node.text || '')\n return true\n },\n },\n}))\n\nwithMeta(inlineCodeSchema.mark, {\n displayName: 'MarkSchema<inlineCode>',\n group: 'InlineCode',\n})\n\nwithMeta(inlineCodeSchema.ctx, {\n displayName: 'MarkSchemaCtx<inlineCode>',\n group: 'InlineCode',\n})\n\n/// A command to toggle the inlineCode mark.\nexport const toggleInlineCodeCommand = $command(\n 'ToggleInlineCode',\n (ctx) => () => (state, dispatch) => {\n const { selection, tr } = state\n if (selection.empty) return false\n const { from, to } = selection\n\n const has = state.doc.rangeHasMark(from, to, inlineCodeSchema.type(ctx))\n // remove exists inlineCode mark if have\n if (has) {\n dispatch?.(tr.removeMark(from, to, inlineCodeSchema.type(ctx)))\n return true\n }\n\n const restMarksName = Object.keys(state.schema.marks).filter(\n (x) => x !== inlineCodeSchema.type.name\n )\n\n // remove other marks\n restMarksName\n .map((name) => state.schema.marks[name] as MarkType)\n .forEach((t) => {\n tr.removeMark(from, to, t)\n })\n\n // add inlineCode mark\n dispatch?.(tr.addMark(from, to, inlineCodeSchema.type(ctx).create()))\n return true\n }\n)\n\nwithMeta(toggleInlineCodeCommand, {\n displayName: 'Command<toggleInlineCodeCommand>',\n group: 'InlineCode',\n})\n\n/// Input rule for create inlineCode mark.\nexport const inlineCodeInputRule = $inputRule((ctx) => {\n return markRule(/(?:`)([^`]+)(?:`)$/, inlineCodeSchema.type(ctx))\n})\n\nwithMeta(inlineCodeInputRule, {\n displayName: 'InputRule<inlineCodeInputRule>',\n group: 'InlineCode',\n})\n\n/// Keymap for the inlineCode mark.\n/// - `Mod-e` - Toggle the inlineCode mark.\nexport const inlineCodeKeymap = $useKeymap('inlineCodeKeymap', {\n ToggleInlineCode: {\n shortcuts: 'Mod-e',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleInlineCodeCommand.key)\n },\n },\n})\n\nwithMeta(inlineCodeKeymap.ctx, {\n displayName: 'KeymapCtx<inlineCode>',\n group: 'InlineCode',\n})\n\nwithMeta(inlineCodeKeymap.shortcuts, {\n displayName: 'Keymap<inlineCode>',\n group: 'InlineCode',\n})\n", "import type { Node as ProseNode } from '@milkdown/prose/model'\n\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport { TextSelection } from '@milkdown/prose/state'\nimport { $command, $markAttr, $markSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the link mark.\nexport const linkAttr = $markAttr('link')\n\nwithMeta(linkAttr, {\n displayName: 'Attr<link>',\n group: 'Link',\n})\n\n/// Link mark schema.\nexport const linkSchema = $markSchema('link', (ctx) => ({\n attrs: {\n href: { validate: 'string' },\n title: { default: null, validate: 'string|null' },\n },\n parseDOM: [\n {\n tag: 'a[href]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n href: dom.getAttribute('href'),\n title: dom.getAttribute('title'),\n }\n },\n },\n ],\n toDOM: (mark) => ['a', { ...ctx.get(linkAttr.key)(mark), ...mark.attrs }],\n parseMarkdown: {\n match: (node) => node.type === 'link',\n runner: (state, node, markType) => {\n const url = node.url as string\n const title = node.title as string\n state.openMark(markType, { href: url, title })\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'link',\n runner: (state, mark) => {\n state.withMark(mark, 'link', undefined, {\n title: mark.attrs.title,\n url: mark.attrs.href,\n })\n },\n },\n}))\n\nwithMeta(linkSchema.mark, {\n displayName: 'MarkSchema<link>',\n group: 'Link',\n})\n\n/// @internal\nexport interface UpdateLinkCommandPayload {\n href?: string\n title?: string\n}\n/// A command to toggle the link mark.\n/// You can pass the `href` and `title` to the link.\nexport const toggleLinkCommand = $command(\n 'ToggleLink',\n (ctx) =>\n (payload: UpdateLinkCommandPayload = {}) =>\n toggleMark(linkSchema.type(ctx), payload)\n)\n\nwithMeta(toggleLinkCommand, {\n displayName: 'Command<toggleLinkCommand>',\n group: 'Link',\n})\n\n/// A command to update the link mark.\n/// You can pass the `href` and `title` to update the link.\nexport const updateLinkCommand = $command(\n 'UpdateLink',\n (ctx) =>\n (payload: UpdateLinkCommandPayload = {}) =>\n (state, dispatch) => {\n if (!dispatch) return false\n\n let node: ProseNode | undefined\n let pos = -1\n const { selection } = state\n const { from, to } = selection\n state.doc.nodesBetween(from, from === to ? to + 1 : to, (n, p) => {\n if (linkSchema.type(ctx).isInSet(n.marks)) {\n node = n\n pos = p\n return false\n }\n\n return undefined\n })\n\n if (!node) return false\n\n const mark = node.marks.find(({ type }) => type === linkSchema.type(ctx))\n if (!mark) return false\n\n const start = pos\n const end = pos + node.nodeSize\n const { tr } = state\n const linkMark = linkSchema\n .type(ctx)\n .create({ ...mark.attrs, ...payload })\n if (!linkMark) return false\n\n dispatch(\n tr\n .removeMark(start, end, mark)\n .addMark(start, end, linkMark)\n .setSelection(new TextSelection(tr.selection.$anchor))\n .scrollIntoView()\n )\n\n return true\n }\n)\n\nwithMeta(updateLinkCommand, {\n displayName: 'Command<updateLinkCommand>',\n group: 'Link',\n})\n", "import { $node } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// The top-level document node.\nexport const docSchema = $node('doc', () => ({\n content: 'block+',\n parseMarkdown: {\n match: ({ type }) => type === 'root',\n runner: (state, node, type) => {\n state.injectRoot(node, type)\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'doc',\n runner: (state, node) => {\n state.openNode('root')\n state.next(node.content)\n },\n },\n}))\n\nwithMeta(docSchema, {\n displayName: 'NodeSchema<doc>',\n group: 'Doc',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\nimport { visitParents } from 'unist-util-visit-parents'\n\nimport { withMeta } from '../__internal__'\n\nfunction visitEmptyLine(ast: Node) {\n return visitParents(\n ast,\n (node: Node) =>\n node.type === 'html' &&\n ['<br />', '<br>', '<br >', '<br/>'].includes(\n (node as Node & { value: string }).value?.trim()\n ),\n (node: Node, parents: Node[]) => {\n if (!parents.length) return\n const parent = parents[parents.length - 1] as\n | (Node & { children: Node[] })\n | undefined\n if (!parent) return\n const index = parent.children.indexOf(node)\n if (index === -1) return\n\n parent.children.splice(index, 1)\n },\n true\n )\n}\n\n/// @internal\n/// This plugin is used to preserve the empty line.\n/// Markdown will fold the empty line into the previous line by default.\n/// This plugin will preserve the empty line by converting `<br />` to `line-break`.\n/// This plugin should be used with `linebreakSchema` to work.\nexport const remarkPreserveEmptyLinePlugin = $remark(\n 'remark-preserve-empty-line',\n () => () => visitEmptyLine\n)\n\nwithMeta(remarkPreserveEmptyLinePlugin.plugin, {\n displayName: 'Remark<remarkPreserveEmptyLine>',\n group: 'Remark',\n})\n\nwithMeta(remarkPreserveEmptyLinePlugin.options, {\n displayName: 'RemarkConfig<remarkPreserveEmptyLine>',\n group: 'Remark',\n})\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { commandsCtx, editorViewCtx } from '@milkdown/core'\nimport { setBlockType } from '@milkdown/prose/commands'\nimport { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils'\n\nimport { serializeText, withMeta } from '../__internal__'\nimport { remarkPreserveEmptyLinePlugin } from '../plugin/remark-preserve-empty-line'\n\n/// HTML attributes for paragraph node.\nexport const paragraphAttr = $nodeAttr('paragraph')\n\nwithMeta(paragraphAttr, {\n displayName: 'Attr<paragraph>',\n group: 'Paragraph',\n})\n\n/// Schema for paragraph node.\nexport const paragraphSchema = $nodeSchema('paragraph', (ctx) => ({\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM: (node) => ['p', ctx.get(paragraphAttr.key)(node), 0],\n parseMarkdown: {\n match: (node) => node.type === 'paragraph',\n runner: (state, node, type) => {\n state.openNode(type)\n if (node.children) state.next(node.children)\n else state.addText((node.value || '') as string)\n\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'paragraph',\n runner: (state, node) => {\n const view = ctx.get(editorViewCtx)\n const lastNode = view.state?.doc.lastChild\n\n state.openNode('paragraph')\n if (\n (!node.content || node.content.size === 0) &&\n node !== lastNode &&\n shouldPreserveEmptyLine(ctx)\n ) {\n state.addNode('html', undefined, '<br />')\n } else {\n serializeText(state, node)\n }\n state.closeNode()\n },\n },\n}))\n\nfunction shouldPreserveEmptyLine(ctx: Ctx) {\n let shouldPreserveEmptyLine = false\n try {\n ctx.get(remarkPreserveEmptyLinePlugin.id)\n shouldPreserveEmptyLine = true\n } catch {\n shouldPreserveEmptyLine = false\n }\n return shouldPreserveEmptyLine\n}\n\nwithMeta(paragraphSchema.node, {\n displayName: 'NodeSchema<paragraph>',\n group: 'Paragraph',\n})\nwithMeta(paragraphSchema.ctx, {\n displayName: 'NodeSchemaCtx<paragraph>',\n group: 'Paragraph',\n})\n\n/// This command can turn the selected block into paragraph.\nexport const turnIntoTextCommand = $command(\n 'TurnIntoText',\n (ctx) => () => setBlockType(paragraphSchema.type(ctx))\n)\n\nwithMeta(turnIntoTextCommand, {\n displayName: 'Command<turnIntoTextCommand>',\n group: 'Paragraph',\n})\n\n/// Keymap for paragraph node.\n/// - `<Mod-Alt-0>`: Turn the selected block into paragraph.\nexport const paragraphKeymap = $useKeymap('paragraphKeymap', {\n TurnIntoText: {\n shortcuts: 'Mod-Alt-0',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(turnIntoTextCommand.key)\n },\n },\n})\n\nwithMeta(paragraphKeymap.ctx, {\n displayName: 'KeymapCtx<paragraph>',\n group: 'Paragraph',\n})\n\nwithMeta(paragraphKeymap.shortcuts, {\n displayName: 'Keymap<paragraph>',\n group: 'Paragraph',\n})\n", "import type { Node } from '@milkdown/prose/model'\n\nimport { commandsCtx, editorViewCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { setBlockType } from '@milkdown/prose/commands'\nimport { textblockTypeInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $ctx,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { serializeText, withMeta } from '../__internal__'\nimport { paragraphSchema } from './paragraph'\n\nconst headingIndex = Array(6)\n .fill(0)\n .map((_, i) => i + 1)\n\nfunction defaultHeadingIdGenerator(node: Node) {\n return node.textContent.toLowerCase().trim().replace(/\\s+/g, '-')\n}\n\n/// This is a slice contains a function to generate heading id.\n/// You can configure it to generate id in your own way.\nexport const headingIdGenerator = $ctx(\n defaultHeadingIdGenerator,\n 'headingIdGenerator'\n)\n\nwithMeta(headingIdGenerator, {\n displayName: 'Ctx<HeadingIdGenerator>',\n group: 'Heading',\n})\n\n/// HTML attributes for heading node.\nexport const headingAttr = $nodeAttr('heading')\n\nwithMeta(headingAttr, {\n displayName: 'Attr<heading>',\n group: 'Heading',\n})\n\n/// Schema for heading node.\nexport const headingSchema = $nodeSchema('heading', (ctx) => {\n const getId = ctx.get(headingIdGenerator.key)\n return {\n content: 'inline*',\n group: 'block',\n defining: true,\n attrs: {\n id: {\n default: '',\n validate: 'string',\n },\n level: {\n default: 1,\n validate: 'number',\n },\n },\n parseDOM: headingIndex.map((x) => ({\n tag: `h${x}`,\n getAttrs: (node) => {\n if (!(node instanceof HTMLElement)) throw expectDomTypeError(node)\n\n return { level: x, id: node.id }\n },\n })),\n toDOM: (node) => {\n return [\n `h${node.attrs.level}`,\n {\n ...ctx.get(headingAttr.key)(node),\n id: node.attrs.id || getId(node),\n },\n 0,\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'heading',\n runner: (state, node, type) => {\n const depth = node.depth as number\n state.openNode(type, { level: depth })\n state.next(node.children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'heading',\n runner: (state, node) => {\n state.openNode('heading', undefined, { depth: node.attrs.level })\n serializeText(state, node)\n state.closeNode()\n },\n },\n }\n})\n\nwithMeta(headingSchema.node, {\n displayName: 'NodeSchema<heading>',\n group: 'Heading',\n})\n\nwithMeta(headingSchema.ctx, {\n displayName: 'NodeSchemaCtx<heading>',\n group: 'Heading',\n})\n\n/// This input rule can turn the selected block into heading.\n/// You can input numbers of `#` and a `space` to create heading.\nexport const wrapInHeadingInputRule = $inputRule((ctx) => {\n return textblockTypeInputRule(\n /^(?<hashes>#+)\\s$/,\n headingSchema.type(ctx),\n (match) => {\n const x = match.groups?.hashes?.length || 0\n\n const view = ctx.get(editorViewCtx)\n const { $from } = view.state.selection\n const node = $from.node()\n if (node.type.name === 'heading') {\n let level = Number(node.attrs.level) + Number(x)\n if (level > 6) level = 6\n\n return { level }\n }\n return { level: x }\n }\n )\n})\n\nwithMeta(wrapInHeadingInputRule, {\n displayName: 'InputRule<wrapInHeadingInputRule>',\n group: 'Heading',\n})\n\n/// This command can turn the selected block into heading.\n/// You can pass the level of heading to this command.\n/// By default, the level is 1, which means it will create a `h1` element.\nexport const wrapInHeadingCommand = $command('WrapInHeading', (ctx) => {\n return (level?: number) => {\n level ??= 1\n\n if (level < 1) return setBlockType(paragraphSchema.type(ctx))\n\n return setBlockType(headingSchema.type(ctx), { level })\n }\n})\n\nwithMeta(wrapInHeadingCommand, {\n displayName: 'Command<wrapInHeadingCommand>',\n group: 'Heading',\n})\n\n/// This command can downgrade the selected heading.\n/// For example, if you have a `h2` element, and you call this command, you will get a `h1` element.\n/// If the element is already a `h1` element, it will turn it into a `p` element.\nexport const downgradeHeadingCommand = $command(\n 'DowngradeHeading',\n (ctx) => () => (state, dispatch, view) => {\n const { $from } = state.selection\n const node = $from.node()\n if (\n node.type !== headingSchema.type(ctx) ||\n !state.selection.empty ||\n $from.parentOffset !== 0\n )\n return false\n\n const level = node.attrs.level - 1\n if (!level)\n return setBlockType(paragraphSchema.type(ctx))(state, dispatch, view)\n\n dispatch?.(\n state.tr.setNodeMarkup(state.selection.$from.before(), undefined, {\n ...node.attrs,\n level,\n })\n )\n return true\n }\n)\n\nwithMeta(downgradeHeadingCommand, {\n displayName: 'Command<downgradeHeadingCommand>',\n group: 'Heading',\n})\n\n/// Keymap for heading node.\n/// - `<Mod-Alt-{1-6}>`: Turn the selected block into `h{1-6}` element.\n/// - `<Delete>/<Backspace>`: Downgrade the selected heading.\nexport const headingKeymap = $useKeymap('headingKeymap', {\n TurnIntoH1: {\n shortcuts: 'Mod-Alt-1',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 1)\n },\n },\n TurnIntoH2: {\n shortcuts: 'Mod-Alt-2',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 2)\n },\n },\n TurnIntoH3: {\n shortcuts: 'Mod-Alt-3',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 3)\n },\n },\n TurnIntoH4: {\n shortcuts: 'Mod-Alt-4',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 4)\n },\n },\n TurnIntoH5: {\n shortcuts: 'Mod-Alt-5',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 5)\n },\n },\n TurnIntoH6: {\n shortcuts: 'Mod-Alt-6',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInHeadingCommand.key, 6)\n },\n },\n DowngradeHeading: {\n shortcuts: ['Delete', 'Backspace'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(downgradeHeadingCommand.key)\n },\n },\n})\n\nwithMeta(headingKeymap.ctx, {\n displayName: 'KeymapCtx<heading>',\n group: 'Heading',\n})\n\nwithMeta(headingKeymap.shortcuts, {\n displayName: 'Keymap<heading>',\n group: 'Heading',\n})\n", "import type { $NodeSchema } from '@milkdown/utils'\n\nimport { commandsCtx } from '@milkdown/core'\nimport { wrapIn } from '@milkdown/prose/commands'\nimport { wrappingInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for blockquote node.\nexport const blockquoteAttr = $nodeAttr('blockquote')\n\nwithMeta(blockquoteAttr, {\n displayName: 'Attr<blockquote>',\n group: 'Blockquote',\n})\n\n/// Schema for blockquote node.\nexport const blockquoteSchema: $NodeSchema<'blockquote'> = $nodeSchema(\n 'blockquote',\n (ctx) => ({\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [{ tag: 'blockquote' }],\n toDOM: (node) => ['blockquote', ctx.get(blockquoteAttr.key)(node), 0],\n parseMarkdown: {\n match: ({ type }) => type === 'blockquote',\n runner: (state, node, type) => {\n state.openNode(type).next(node.children).closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'blockquote',\n runner: (state, node) => {\n state.openNode('blockquote').next(node.content).closeNode()\n },\n },\n })\n)\n\nwithMeta(blockquoteSchema.node, {\n displayName: 'NodeSchema<blockquote>',\n group: 'Blockquote',\n})\n\nwithMeta(blockquoteSchema.ctx, {\n displayName: 'NodeSchemaCtx<blockquote>',\n group: 'Blockquote',\n})\n\n/// This input rule will convert a line that starts with `> ` into a blockquote.\n/// You can type `> ` at the start of a line to create a blockquote.\nexport const wrapInBlockquoteInputRule = $inputRule((ctx) =>\n wrappingInputRule(/^\\s*>\\s$/, blockquoteSchema.type(ctx))\n)\n\nwithMeta(wrapInBlockquoteInputRule, {\n displayName: 'InputRule<wrapInBlockquoteInputRule>',\n group: 'Blockquote',\n})\n\n/// This command will wrap the current selection in a blockquote.\nexport const wrapInBlockquoteCommand = $command(\n 'WrapInBlockquote',\n (ctx) => () => wrapIn(blockquoteSchema.type(ctx))\n)\n\nwithMeta(wrapInBlockquoteCommand, {\n displayName: 'Command<wrapInBlockquoteCommand>',\n group: 'Blockquote',\n})\n\n/// Keymap for blockquote.\n/// - `Mod-Shift-b`: Wrap selection in blockquote.\nexport const blockquoteKeymap = $useKeymap('blockquoteKeymap', {\n WrapInBlockquote: {\n shortcuts: 'Mod-Shift-b',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInBlockquoteCommand.key)\n },\n },\n})\n\nwithMeta(blockquoteKeymap.ctx, {\n displayName: 'KeymapCtx<blockquote>',\n group: 'Blockquote',\n})\n\nwithMeta(blockquoteKeymap.shortcuts, {\n displayName: 'Keymap<blockquote>',\n group: 'Blockquote',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { setBlockType } from '@milkdown/prose/commands'\nimport { textblockTypeInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for code block node.\nexport const codeBlockAttr = $nodeAttr('codeBlock', () => ({\n pre: {},\n code: {},\n}))\n\nwithMeta(codeBlockAttr, {\n displayName: 'Attr<codeBlock>',\n group: 'CodeBlock',\n})\n\n/// Schema for code block node.\nexport const codeBlockSchema = $nodeSchema('code_block', (ctx) => {\n return {\n content: 'text*',\n group: 'block',\n marks: '',\n defining: true,\n code: true,\n attrs: {\n language: {\n default: '',\n validate: 'string',\n },\n },\n parseDOM: [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return { language: dom.dataset.language }\n },\n },\n ],\n toDOM: (node) => {\n const attr = ctx.get(codeBlockAttr.key)(node)\n const language = node.attrs.language\n const languageAttrs =\n language && language.length > 0\n ? { 'data-language': language }\n : undefined\n\n return [\n 'pre',\n {\n ...attr.pre,\n ...languageAttrs,\n },\n ['code', attr.code, 0],\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'code',\n runner: (state, node, type) => {\n const language = node.lang ?? ''\n const value = node.value as string | null\n state.openNode(type, { language })\n if (value) state.addText(value)\n\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'code_block',\n runner: (state, node) => {\n state.addNode('code', undefined, node.content.firstChild?.text || '', {\n lang: node.attrs.language,\n })\n },\n },\n }\n})\n\nwithMeta(codeBlockSchema.node, {\n displayName: 'NodeSchema<codeBlock>',\n group: 'CodeBlock',\n})\n\nwithMeta(codeBlockSchema.ctx, {\n displayName: 'NodeSchemaCtx<codeBlock>',\n group: 'CodeBlock',\n})\n\n/// A input rule for creating code block.\n/// For example, ` ```javascript ` will create a code block with language javascript.\nexport const createCodeBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(\n /^```(?<language>[a-z]*)?[\\s\\n]$/,\n codeBlockSchema.type(ctx),\n (match) => ({\n language: match.groups?.language ?? '',\n })\n )\n)\n\nwithMeta(createCodeBlockInputRule, {\n displayName: 'InputRule<createCodeBlockInputRule>',\n group: 'CodeBlock',\n})\n\n/// A command for creating code block.\n/// You can pass the language of the code block as the parameter.\nexport const createCodeBlockCommand = $command(\n 'CreateCodeBlock',\n (ctx) =>\n (language = '') =>\n setBlockType(codeBlockSchema.type(ctx), { language })\n)\n\nwithMeta(createCodeBlockCommand, {\n displayName: 'Command<createCodeBlockCommand>',\n group: 'CodeBlock',\n})\n\n/// A command for updating the code block language of the target position.\nexport const updateCodeBlockLanguageCommand = $command(\n 'UpdateCodeBlockLanguage',\n () =>\n (\n { pos, language }: { pos: number; language: string } = {\n pos: -1,\n language: '',\n }\n ) =>\n (state, dispatch) => {\n if (pos >= 0) {\n dispatch?.(state.tr.setNodeAttribute(pos, 'language', language))\n return true\n }\n\n return false\n }\n)\n\nwithMeta(updateCodeBlockLanguageCommand, {\n displayName: 'Command<updateCodeBlockLanguageCommand>',\n group: 'CodeBlock',\n})\n\n/// Keymap for code block.\n/// - `Mod-Alt-c`: Create a code block.\nexport const codeBlockKeymap = $useKeymap('codeBlockKeymap', {\n CreateCodeBlock: {\n shortcuts: 'Mod-Alt-c',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(createCodeBlockCommand.key)\n },\n },\n})\n\nwithMeta(codeBlockKeymap.ctx, {\n displayName: 'KeymapCtx<codeBlock>',\n group: 'CodeBlock',\n})\n\nwithMeta(codeBlockKeymap.shortcuts, {\n displayName: 'Keymap<codeBlock>',\n group: 'CodeBlock',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { findSelectedNodeOfType } from '@milkdown/prose'\nimport { InputRule } from '@milkdown/prose/inputrules'\nimport { $command, $inputRule, $nodeAttr, $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for image node.\nexport const imageAttr = $nodeAttr('image')\n\nwithMeta(imageAttr, {\n displayName: 'Attr<image>',\n group: 'Image',\n})\n\n/// Schema for image node.\nexport const imageSchema = $nodeSchema('image', (ctx) => {\n return {\n inline: true,\n group: 'inline',\n selectable: true,\n draggable: true,\n marks: '',\n atom: true,\n defining: true,\n isolating: true,\n attrs: {\n src: { default: '', validate: 'string' },\n alt: { default: '', validate: 'string' },\n title: { default: '', validate: 'string' },\n },\n parseDOM: [\n {\n tag: 'img[src]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n src: dom.getAttribute('src') || '',\n alt: dom.getAttribute('alt') || '',\n title: dom.getAttribute('title') || dom.getAttribute('alt') || '',\n }\n },\n },\n ],\n toDOM: (node) => {\n return ['img', { ...ctx.get(imageAttr.key)(node), ...node.attrs }]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'image',\n runner: (state, node, type) => {\n const url = node.url as string\n const alt = node.alt as string\n const title = node.title as string\n state.addNode(type, {\n src: url,\n alt,\n title,\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'image',\n runner: (state, node) => {\n state.addNode('image', undefined, undefined, {\n title: node.attrs.title,\n url: node.attrs.src,\n alt: node.attrs.alt,\n })\n },\n },\n }\n})\n\nwithMeta(imageSchema.node, {\n displayName: 'NodeSchema<image>',\n group: 'Image',\n})\n\nwithMeta(imageSchema.ctx, {\n displayName: 'NodeSchemaCtx<image>',\n group: 'Image',\n})\n\n/// @internal\nexport interface UpdateImageCommandPayload {\n src?: string\n title?: string\n alt?: string\n}\n\n/// This command will insert a image node.\n/// You can pass a payload to set `src`, `alt` and `title` for the image node.\nexport const insertImageCommand = $command(\n 'InsertImage',\n (ctx) =>\n (payload: UpdateImageCommandPayload = {}) =>\n (state, dispatch) => {\n if (!dispatch) return true\n\n const { src = '', alt = '', title = '' } = payload\n\n const node = imageSchema.type(ctx).create({ src, alt, title })\n if (!node) return true\n\n dispatch(state.tr.replaceSelectionWith(node).scrollIntoView())\n return true\n }\n)\n\nwithMeta(insertImageCommand, {\n displayName: 'Command<insertImageCommand>',\n group: 'Image',\n})\n\n/// This command will update the selected image node.\n/// You can pass a payload to update `src`, `alt` and `title` for the image node.\nexport const updateImageCommand = $command(\n 'UpdateImage',\n (ctx) =>\n (payload: UpdateImageCommandPayload = {}) =>\n (state, dispatch) => {\n const nodeWithPos = findSelectedNodeOfType(\n state.selection,\n imageSchema.type(ctx)\n )\n if (!nodeWithPos) return false\n\n const { node, pos } = nodeWithPos\n\n const newAttrs = { ...node.attrs }\n const { src, alt, title } = payload\n if (src !== undefined) newAttrs.src = src\n if (alt !== undefined) newAttrs.alt = alt\n if (title !== undefined) newAttrs.title = title\n\n dispatch?.(\n state.tr.setNodeMarkup(pos, undefined, newAttrs).scrollIntoView()\n )\n return true\n }\n)\n\nwithMeta(updateImageCommand, {\n displayName: 'Command<updateImageCommand>',\n group: 'Image',\n})\n\n/// This input rule will insert a image node.\n/// You can input `![alt](src \"title\")` to insert a image node.\n/// The `title` is optional.\nexport const insertImageInputRule = $inputRule(\n (ctx) =>\n new InputRule(\n /!\\[(?<alt>.*?)]\\((?<filename>.*?)\\s*(?=\"|\\))\"?(?<title>[^\"]+)?\"?\\)/,\n (state, match, start, end) => {\n const [matched, alt, src = '', title] = match\n if (matched)\n return state.tr.replaceWith(\n start,\n end,\n imageSchema.type(ctx).create({ src, alt, title })\n )\n\n return null\n }\n )\n)\n\nwithMeta(insertImageInputRule, {\n displayName: 'InputRule<insertImageInputRule>',\n group: 'Image',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { Selection, TextSelection } from '@milkdown/prose/state'\nimport { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the hardbreak node.\n///\n/// Default value:\n/// - `data-is-inline` - Whether the hardbreak is inline.\nexport const hardbreakAttr = $nodeAttr('hardbreak', (node) => {\n return {\n 'data-type': 'hardbreak',\n 'data-is-inline': node.attrs.isInline,\n }\n})\n\nwithMeta(hardbreakAttr, {\n displayName: 'Attr<hardbreak>',\n group: 'Hardbreak',\n})\n\n/// Hardbreak node schema.\nexport const hardbreakSchema = $nodeSchema('hardbreak', (ctx) => ({\n inline: true,\n group: 'inline',\n attrs: {\n isInline: {\n default: false,\n validate: 'boolean',\n },\n },\n selectable: false,\n parseDOM: [\n { tag: 'br' },\n {\n tag: 'span[data-type=\"hardbreak\"]',\n getAttrs: () => ({ isInline: true }),\n },\n ],\n toDOM: (node) =>\n node.attrs.isInline\n ? ['span', ctx.get(hardbreakAttr.key)(node), ' ']\n : ['br', ctx.get(hardbreakAttr.key)(node)],\n parseMarkdown: {\n match: ({ type }) => type === 'break',\n runner: (state, node, type) => {\n state.addNode(type, {\n isInline: Boolean(\n (node.data as undefined | { isInline: boolean })?.isInline\n ),\n })\n },\n },\n leafText: () => '\\n',\n toMarkdown: {\n match: (node) => node.type.name === 'hardbreak',\n runner: (state, node) => {\n if (node.attrs.isInline) state.addNode('text', undefined, '\\n')\n else state.addNode('break')\n },\n },\n}))\n\nwithMeta(hardbreakSchema.node, {\n displayName: 'NodeSchema<hardbreak>',\n group: 'Hardbreak',\n})\n\nwithMeta(hardbreakSchema.ctx, {\n displayName: 'NodeSchemaCtx<hardbreak>',\n group: 'Hardbreak',\n})\n\n/// Command to insert a hardbreak.\nexport const insertHardbreakCommand = $command(\n 'InsertHardbreak',\n (ctx) => () => (state, dispatch) => {\n const { selection, tr } = state\n if (!(selection instanceof TextSelection)) return false\n\n if (selection.empty) {\n // Transform two successive hardbreak into a new line\n const node = selection.$from.node()\n if (node.childCount > 0 && node.lastChild?.type.name === 'hardbreak') {\n dispatch?.(\n tr\n .replaceRangeWith(\n selection.to - 1,\n selection.to,\n state.schema.node('paragraph')\n )\n .setSelection(Selection.near(tr.doc.resolve(selection.to)))\n .scrollIntoView()\n )\n return true\n }\n }\n dispatch?.(\n tr\n .setMeta('hardbreak', true)\n .replaceSelectionWith(hardbreakSchema.type(ctx).create())\n .scrollIntoView()\n )\n return true\n }\n)\n\nwithMeta(insertHardbreakCommand, {\n displayName: 'Command<insertHardbreakCommand>',\n group: 'Hardbreak',\n})\n\n/// Keymap for the hardbreak node.\n/// - `Shift-Enter` - Insert a hardbreak.\nexport const hardbreakKeymap = $useKeymap('hardbreakKeymap', {\n InsertHardbreak: {\n shortcuts: 'Shift-Enter',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(insertHardbreakCommand.key)\n },\n },\n})\n\nwithMeta(hardbreakKeymap.ctx, {\n displayName: 'KeymapCtx<hardbreak>',\n group: 'Hardbreak',\n})\n\nwithMeta(hardbreakKeymap.shortcuts, {\n displayName: 'Keymap<hardbreak>',\n group: 'Hardbreak',\n})\n", "import { InputRule } from '@milkdown/prose/inputrules'\nimport { Selection } from '@milkdown/prose/state'\nimport { $command, $inputRule, $nodeAttr, $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { paragraphSchema } from './paragraph'\n\n/// HTML attributes for the hr node.\nexport const hrAttr = $nodeAttr('hr')\n\nwithMeta(hrAttr, {\n displayName: 'Attr<hr>',\n group: 'Hr',\n})\n\n/// Hr node schema.\nexport const hrSchema = $nodeSchema('hr', (ctx) => ({\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n toDOM: (node) => ['hr', ctx.get(hrAttr.key)(node)],\n parseMarkdown: {\n match: ({ type }) => type === 'thematicBreak',\n runner: (state, _, type) => {\n state.addNode(type)\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'hr',\n runner: (state) => {\n state.addNode('thematicBreak')\n },\n },\n}))\n\nwithMeta(hrSchema.node, {\n displayName: 'NodeSchema<hr>',\n group: 'Hr',\n})\n\nwithMeta(hrSchema.ctx, {\n displayName: 'NodeSchemaCtx<hr>',\n group: 'Hr',\n})\n\n/// Input rule to insert a hr.\n/// For example, `---` will be converted to a hr.\nexport const insertHrInputRule = $inputRule(\n (ctx) =>\n new InputRule(/^(?:---|___\\s|\\*\\*\\*\\s)$/, (state, match, start, end) => {\n const { tr } = state\n\n if (match[0]) tr.replaceWith(start - 1, end, hrSchema.type(ctx).create())\n\n return tr\n })\n)\n\nwithMeta(insertHrInputRule, {\n displayName: 'InputRule<insertHrInputRule>',\n group: 'Hr',\n})\n\n/// Command to insert a hr.\nexport const insertHrCommand = $command(\n 'InsertHr',\n (ctx) => () => (state, dispatch) => {\n if (!dispatch) return true\n\n const paragraph = paragraphSchema.node.type(ctx).create()\n const { tr, selection } = state\n const { from } = selection\n const node = hrSchema.type(ctx).create()\n if (!node) return true\n\n const _tr = tr.replaceSelectionWith(node).insert(from, paragraph)\n const sel = Selection.findFrom(_tr.doc.resolve(from), 1, true)\n if (!sel) return true\n\n dispatch(_tr.setSelection(sel).scrollIntoView())\n return true\n }\n)\n\nwithMeta(insertHrCommand, {\n displayName: 'Command<insertHrCommand>',\n group: 'Hr',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { wrapIn } from '@milkdown/prose/commands'\nimport { wrappingInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for bullet list node.\nexport const bulletListAttr = $nodeAttr('bulletList')\n\nwithMeta(bulletListAttr, {\n displayName: 'Attr<bulletList>',\n group: 'BulletList',\n})\n\n/// Schema for bullet list node.\nexport const bulletListSchema = $nodeSchema('bullet_list', (ctx) => {\n return {\n content: 'listItem+',\n group: 'block',\n attrs: {\n spread: {\n default: false,\n validate: 'boolean',\n },\n },\n parseDOM: [\n {\n tag: 'ul',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n spread: dom.dataset.spread === 'true',\n }\n },\n },\n ],\n toDOM: (node) => {\n return [\n 'ul',\n {\n ...ctx.get(bulletListAttr.key)(node),\n 'data-spread': node.attrs.spread,\n },\n 0,\n ]\n },\n parseMarkdown: {\n match: ({ type, ordered }) => type === 'list' && !ordered,\n runner: (state, node, type) => {\n const spread = node.spread != null ? `${node.spread}` : 'false'\n state.openNode(type, { spread }).next(node.children).closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'bullet_list',\n runner: (state, node) => {\n state\n .openNode('list', undefined, {\n ordered: false,\n spread: node.attrs.spread,\n })\n .next(node.content)\n .closeNode()\n },\n },\n }\n})\n\nwithMeta(bulletListSchema.node, {\n displayName: 'NodeSchema<bulletList>',\n group: 'BulletList',\n})\n\nwithMeta(bulletListSchema.ctx, {\n displayName: 'NodeSchemaCtx<bulletList>',\n group: 'BulletList',\n})\n\n/// Input rule for wrapping a block in bullet list node.\nexport const wrapInBulletListInputRule = $inputRule((ctx) =>\n wrappingInputRule(/^\\s*([-+*])\\s$/, bulletListSchema.type(ctx))\n)\n\nwithMeta(wrapInBulletListInputRule, {\n displayName: 'InputRule<wrapInBulletListInputRule>',\n group: 'BulletList',\n})\n\n/// Command for creating bullet list node.\nexport const wrapInBulletListCommand = $command(\n 'WrapInBulletList',\n (ctx) => () => wrapIn(bulletListSchema.type(ctx))\n)\n\nwithMeta(wrapInBulletListCommand, {\n displayName: 'Command<wrapInBulletListCommand>',\n group: 'BulletList',\n})\n\n/// Keymap for bullet list node.\n/// - `Mod-Alt-8`: Wrap a block in bullet list.\nexport const bulletListKeymap = $useKeymap('bulletListKeymap', {\n WrapInBulletList: {\n shortcuts: 'Mod-Alt-8',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInBulletListCommand.key)\n },\n },\n})\n\nwithMeta(bulletListKeymap.ctx, {\n displayName: 'KeymapCtx<bulletListKeymap>',\n group: 'BulletList',\n})\n\nwithMeta(bulletListKeymap.shortcuts, {\n displayName: 'Keymap<bulletListKeymap>',\n group: 'BulletList',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { wrapIn } from '@milkdown/prose/commands'\nimport { wrappingInputRule } from '@milkdown/prose/inputrules'\nimport {\n $command,\n $inputRule,\n $nodeAttr,\n $nodeSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for ordered list node.\nexport const orderedListAttr = $nodeAttr('orderedList')\n\nwithMeta(orderedListAttr, {\n displayName: 'Attr<orderedList>',\n group: 'OrderedList',\n})\n\n/// Schema for ordered list node.\nexport const orderedListSchema = $nodeSchema('ordered_list', (ctx) => ({\n content: 'listItem+',\n group: 'block',\n attrs: {\n order: {\n default: 1,\n validate: 'number',\n },\n spread: {\n default: false,\n validate: 'boolean',\n },\n },\n parseDOM: [\n {\n tag: 'ol',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n spread: dom.dataset.spread,\n order: dom.hasAttribute('start')\n ? Number(dom.getAttribute('start'))\n : 1,\n }\n },\n },\n ],\n toDOM: (node) => [\n 'ol',\n {\n ...ctx.get(orderedListAttr.key)(node),\n ...(node.attrs.order === 1 ? {} : { start: node.attrs.order }),\n 'data-spread': node.attrs.spread,\n },\n 0,\n ],\n parseMarkdown: {\n match: ({ type, ordered }) => type === 'list' && !!ordered,\n runner: (state, node, type) => {\n const spread = node.spread != null ? `${node.spread}` : 'true'\n state\n .openNode(type, { spread, order: node.start ?? 1 })\n .next(node.children)\n .closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'ordered_list',\n runner: (state, node) => {\n state.openNode('list', undefined, {\n ordered: true,\n start: node.attrs.order ?? 1,\n spread: node.attrs.spread === 'true',\n })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(orderedListSchema.node, {\n displayName: 'NodeSchema<orderedList>',\n group: 'OrderedList',\n})\n\nwithMeta(orderedListSchema.ctx, {\n displayName: 'NodeSchemaCtx<orderedList>',\n group: 'OrderedList',\n})\n\n/// Input rule for wrapping a block in ordered list node.\nexport const wrapInOrderedListInputRule = $inputRule((ctx) =>\n wrappingInputRule(\n /^\\s*(\\d+)\\.\\s$/,\n orderedListSchema.type(ctx),\n (match) => ({ order: Number(match[1]) }),\n (match, node) => node.childCount + node.attrs.order === Number(match[1])\n )\n)\n\nwithMeta(wrapInOrderedListInputRule, {\n displayName: 'InputRule<wrapInOrderedListInputRule>',\n group: 'OrderedList',\n})\n\n/// Command for wrapping a block in ordered list node.\nexport const wrapInOrderedListCommand = $command(\n 'WrapInOrderedList',\n (ctx) => () => wrapIn(orderedListSchema.type(ctx))\n)\n\nwithMeta(wrapInOrderedListCommand, {\n displayName: 'Command<wrapInOrderedListCommand>',\n group: 'OrderedList',\n})\n\n/// Keymap for ordered list node.\n/// - `Mod-Alt-7`: Wrap a block in ordered list.\nexport const orderedListKeymap = $useKeymap('orderedListKeymap', {\n WrapInOrderedList: {\n shortcuts: 'Mod-Alt-7',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(wrapInOrderedListCommand.key)\n },\n },\n})\n\nwithMeta(orderedListKeymap.ctx, {\n displayName: 'KeymapCtx<orderedList>',\n group: 'OrderedList',\n})\n\nwithMeta(orderedListKeymap.shortcuts, {\n displayName: 'Keymap<orderedList>',\n group: 'OrderedList',\n})\n", "import type { Ctx } from '@milkdown/ctx'\n\nimport { commandsCtx } from '@milkdown/core'\nimport { expectDomTypeError } from '@milkdown/exception'\nimport { joinBackward } from '@milkdown/prose/commands'\nimport {\n liftListItem,\n sinkListItem,\n splitListItem,\n} from '@milkdown/prose/schema-list'\nimport { type Command, TextSelection } from '@milkdown/prose/state'\nimport { $command, $nodeAttr, $nodeSchema, $useKeymap } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for list item node.\nexport const listItemAttr = $nodeAttr('listItem')\n\nwithMeta(listItemAttr, {\n displayName: 'Attr<listItem>',\n group: 'ListItem',\n})\n\n/// Schema for list item node.\nexport const listItemSchema = $nodeSchema('list_item', (ctx) => ({\n group: 'listItem',\n content: 'paragraph block*',\n attrs: {\n label: {\n default: '•',\n validate: 'string',\n },\n listType: {\n default: 'bullet',\n validate: 'string',\n },\n spread: {\n default: true,\n validate: 'boolean',\n },\n },\n defining: true,\n parseDOM: [\n {\n tag: 'li',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n listType: dom.dataset.listType,\n spread: dom.dataset.spread === 'true',\n }\n },\n },\n ],\n toDOM: (node) => [\n 'li',\n {\n ...ctx.get(listItemAttr.key)(node),\n 'data-label': node.attrs.label,\n 'data-list-type': node.attrs.listType,\n 'data-spread': node.attrs.spread,\n },\n 0,\n ],\n parseMarkdown: {\n match: ({ type }) => type === 'listItem',\n runner: (state, node, type) => {\n const label = node.label != null ? `${node.label}.` : '•'\n const listType = node.label != null ? 'ordered' : 'bullet'\n const spread = node.spread != null ? `${node.spread}` : 'true'\n state.openNode(type, { label, listType, spread })\n state.next(node.children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'list_item',\n runner: (state, node) => {\n state.openNode('listItem', undefined, {\n spread: node.attrs.spread,\n })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(listItemSchema.node, {\n displayName: 'NodeSchema<listItem>',\n group: 'ListItem',\n})\n\nwithMeta(listItemSchema.ctx, {\n displayName: 'NodeSchemaCtx<listItem>',\n group: 'ListItem',\n})\n\n/// The command to sink list item.\n///\n/// For example:\n/// ```md\n/// * List item 1\n/// * List item 2 <- cursor here\n/// ```\n/// Will get:\n/// ```md\n/// * List item 1\n/// * List item 2\n/// ```\nexport const sinkListItemCommand = $command(\n 'SinkListItem',\n (ctx) => () => sinkListItem(listItemSchema.type(ctx))\n)\n\nwithMeta(sinkListItemCommand, {\n displayName: 'Command<sinkListItemCommand>',\n group: 'ListItem',\n})\n\n/// The command to lift list item.\n///\n/// For example:\n/// ```md\n/// * List item 1\n/// * List item 2 <- cursor here\n/// ```\n/// Will get:\n/// ```md\n/// * List item 1\n/// * List item 2\n/// ```\nexport const liftListItemCommand = $command(\n 'LiftListItem',\n (ctx) => () => liftListItem(listItemSchema.type(ctx))\n)\n\nwithMeta(liftListItemCommand, {\n displayName: 'Command<liftListItemCommand>',\n group: 'ListItem',\n})\n\n/// The command to split a list item.\n///\n/// For example:\n/// ```md\n/// * List item 1\n/// * List item 2 <- cursor here\n/// ```\n/// Will get:\n/// ```md\n/// * List item 1\n/// * List item 2\n/// * <- cursor here\n/// ```\nexport const splitListItemCommand = $command(\n 'SplitListItem',\n (ctx) => () => splitListItem(listItemSchema.type(ctx))\n)\n\nwithMeta(splitListItemCommand, {\n displayName: 'Command<splitListItemCommand>',\n group: 'ListItem',\n})\n\nfunction liftFirstListItem(ctx: Ctx): Command {\n return (state, dispatch, view) => {\n const { selection } = state\n if (!(selection instanceof TextSelection)) return false\n\n const { empty, $from } = selection\n\n // selection should be empty and at the start of the node\n if (!empty || $from.parentOffset !== 0) return false\n\n const parentItem = $from.node(-1)\n // selection should be in list item\n if (parentItem.type !== listItemSchema.type(ctx)) return false\n\n return joinBackward(state, dispatch, view)\n }\n}\n\n/// The command to remove list item **only if**:\n///\n/// - Selection is at the start of the list item.\n/// - List item is the only child of the list.\n///\n/// Most of the time, you shouldn't use this command directly.\nexport const liftFirstListItemCommand = $command(\n 'LiftFirstListItem',\n (ctx) => () => liftFirstListItem(ctx)\n)\n\nwithMeta(liftFirstListItemCommand, {\n displayName: 'Command<liftFirstListItemCommand>',\n group: 'ListItem',\n})\n\n/// Keymap for list item node.\n/// - `<Enter>`: Split the current list item.\n/// - `<Tab>/<Mod-]>`: Sink the current list item.\n/// - `<Shift-Tab>/<Mod-[>`: Lift the current list item.\nexport const listItemKeymap = $useKeymap('listItemKeymap', {\n NextListItem: {\n shortcuts: 'Enter',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(splitListItemCommand.key)\n },\n },\n SinkListItem: {\n shortcuts: ['Tab', 'Mod-]'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(sinkListItemCommand.key)\n },\n },\n LiftListItem: {\n shortcuts: ['Shift-Tab', 'Mod-['],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(liftListItemCommand.key)\n },\n },\n LiftFirstListItem: {\n shortcuts: ['Backspace', 'Delete'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(liftFirstListItemCommand.key)\n },\n },\n})\n\nwithMeta(listItemKeymap.ctx, {\n displayName: 'KeymapCtx<listItem>',\n group: 'ListItem',\n})\n\nwithMeta(listItemKeymap.shortcuts, {\n displayName: 'Keymap<listItem>',\n group: 'ListItem',\n})\n", "import { $node } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// The bottom-level node.\nexport const textSchema = $node('text', () => ({\n group: 'inline',\n parseMarkdown: {\n match: ({ type }) => type === 'text',\n runner: (state, node) => {\n state.addText(node.value as string)\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'text',\n runner: (state, node) => {\n state.addNode('text', undefined, node.text as string)\n },\n },\n}))\n\nwithMeta(textSchema, {\n displayName: 'NodeSchema<text>',\n group: 'Text',\n})\n", "import { $nodeAttr, $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\nexport const htmlAttr = $nodeAttr('html')\n\nwithMeta(htmlAttr, {\n displayName: 'Attr<html>',\n group: 'Html',\n})\n\nexport const htmlSchema = $nodeSchema('html', (ctx) => {\n return {\n atom: true,\n group: 'inline',\n inline: true,\n attrs: {\n value: {\n default: '',\n validate: 'string',\n },\n },\n toDOM: (node) => {\n const span = document.createElement('span')\n const attr = {\n ...ctx.get(htmlAttr.key)(node),\n 'data-value': node.attrs.value,\n 'data-type': 'html',\n }\n span.textContent = node.attrs.value\n return ['span', attr, node.attrs.value]\n },\n parseDOM: [\n {\n tag: 'span[data-type=\"html\"]',\n getAttrs: (dom) => {\n return {\n value: dom.dataset.value ?? '',\n }\n },\n },\n ],\n parseMarkdown: {\n match: ({ type }) => Boolean(type === 'html'),\n runner: (state, node, type) => {\n state.addNode(type, { value: node.value as string })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'html',\n runner: (state, node) => {\n state.addNode('html', undefined, node.attrs.value)\n },\n },\n }\n})\n\nwithMeta(htmlSchema.node, {\n displayName: 'NodeSchema<html>',\n group: 'Html',\n})\n\nwithMeta(htmlSchema.ctx, {\n displayName: 'NodeSchemaCtx<html>',\n group: 'Html',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n emphasisAttr,\n emphasisSchema,\n inlineCodeAttr,\n inlineCodeSchema,\n linkAttr,\n linkSchema,\n strongAttr,\n strongSchema,\n} from '../mark'\nimport {\n blockquoteAttr,\n blockquoteSchema,\n bulletListAttr,\n bulletListSchema,\n codeBlockAttr,\n codeBlockSchema,\n docSchema,\n hardbreakAttr,\n hardbreakSchema,\n headingAttr,\n headingIdGenerator,\n headingSchema,\n hrAttr,\n hrSchema,\n htmlAttr,\n htmlSchema,\n imageAttr,\n imageSchema,\n listItemAttr,\n listItemSchema,\n orderedListAttr,\n orderedListSchema,\n paragraphAttr,\n paragraphSchema,\n textSchema,\n} from '../node'\n\n/// @internal\nexport const schema: MilkdownPlugin[] = [\n docSchema,\n\n paragraphAttr,\n paragraphSchema,\n\n headingIdGenerator,\n headingAttr,\n headingSchema,\n\n hardbreakAttr,\n hardbreakSchema,\n\n blockquoteAttr,\n blockquoteSchema,\n\n codeBlockAttr,\n codeBlockSchema,\n\n hrAttr,\n hrSchema,\n\n imageAttr,\n imageSchema,\n\n bulletListAttr,\n bulletListSchema,\n\n orderedListAttr,\n orderedListSchema,\n\n listItemAttr,\n listItemSchema,\n\n emphasisAttr,\n emphasisSchema,\n\n strongAttr,\n strongSchema,\n\n inlineCodeAttr,\n inlineCodeSchema,\n\n linkAttr,\n linkSchema,\n\n htmlAttr,\n htmlSchema,\n\n textSchema,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n emphasisStarInputRule,\n emphasisUnderscoreInputRule,\n inlineCodeInputRule,\n strongInputRule,\n} from '../mark'\nimport {\n createCodeBlockInputRule,\n insertHrInputRule,\n wrapInBlockquoteInputRule,\n wrapInBulletListInputRule,\n wrapInHeadingInputRule,\n wrapInOrderedListInputRule,\n} from '../node'\n\n/// @internal\nexport const inputRules: MilkdownPlugin[] = [\n wrapInBlockquoteInputRule,\n wrapInBulletListInputRule,\n wrapInOrderedListInputRule,\n createCodeBlockInputRule,\n insertHrInputRule,\n wrapInHeadingInputRule,\n].flat()\n\n/// @internal\nexport const markInputRules: MilkdownPlugin[] = [\n emphasisStarInputRule,\n emphasisUnderscoreInputRule,\n inlineCodeInputRule,\n strongInputRule,\n]\n", "import { findNodeInSelection } from '@milkdown/prose'\nimport {\n Node,\n type Attrs,\n type MarkType,\n type NodeType,\n} from '@milkdown/prose/model'\nimport { TextSelection } from '@milkdown/prose/state'\nimport { findWrapping } from '@milkdown/prose/transform'\nimport { $command } from '@milkdown/utils'\n\n/// A command to check if a mark is selected.\nexport const isMarkSelectedCommand = $command(\n 'IsMarkSelected',\n () => (markType?: MarkType) => (state) => {\n if (!markType) return false\n const { doc, selection } = state\n const hasLink = doc.rangeHasMark(selection.from, selection.to, markType)\n return hasLink\n }\n)\n\n/// A command to check if a node is selected.\nexport const isNodeSelectedCommand = $command(\n 'IsNoteSelected',\n () => (nodeType?: NodeType) => (state) => {\n if (!nodeType) return false\n const result = findNodeInSelection(state, nodeType)\n return result.hasNode\n }\n)\n\n/// A command to clear text in the current block.\nexport const clearTextInCurrentBlockCommand = $command(\n 'ClearTextInCurrentBlock',\n () => () => (state, dispatch) => {\n let tr = state.tr\n const { $from, $to } = tr.selection\n const { pos: from } = $from\n const { pos: right } = $to\n const left = from - $from.node().content.size\n if (left < 0) return false\n\n tr = tr.deleteRange(left, right)\n dispatch?.(tr)\n return true\n }\n)\n\n/// Set block type to target block and attribute.\nexport const setBlockTypeCommand = $command(\n 'SetBlockType',\n () =>\n (payload?: { nodeType: NodeType; attrs?: Attrs | null }) =>\n (state, dispatch) => {\n const { nodeType, attrs = null } = payload ?? {}\n if (!nodeType) return false\n const tr = state.tr\n const { from, to } = tr.selection\n try {\n tr.setBlockType(from, to, nodeType, attrs)\n } catch {\n return false\n }\n dispatch?.(tr)\n return true\n }\n)\n\n/// A command to wrap the current block with a block type.\nexport const wrapInBlockTypeCommand = $command(\n 'WrapInBlockType',\n () =>\n (payload?: { nodeType: NodeType; attrs?: Attrs | null }) =>\n (state, dispatch) => {\n const { nodeType, attrs = null } = payload ?? {}\n if (!nodeType) return false\n\n let tr = state.tr\n\n try {\n const { $from, $to } = tr.selection\n const blockRange = $from.blockRange($to)\n const wrapping = blockRange && findWrapping(blockRange, nodeType, attrs)\n if (!wrapping) return false\n tr = tr.wrap(blockRange, wrapping)\n } catch {\n return false\n }\n\n dispatch?.(tr)\n return true\n }\n)\n\n/// A command to add a block type to the current selection.\nexport const addBlockTypeCommand = $command(\n 'AddBlockType',\n () =>\n (payload?: { nodeType: NodeType | Node; attrs?: Attrs | null }) =>\n (state, dispatch) => {\n const { nodeType, attrs = null } = payload ?? {}\n if (!nodeType) return false\n const tr = state.tr\n\n try {\n const node =\n nodeType instanceof Node ? nodeType : nodeType.createAndFill(attrs)\n if (!node) return false\n\n tr.replaceSelectionWith(node)\n } catch {\n return false\n }\n dispatch?.(tr)\n return true\n }\n)\n\n/// A command to select text near a position.\nexport const selectTextNearPosCommand = $command(\n 'SelectTextNearPos',\n () => (payload?: { pos?: number }) => (state, dispatch) => {\n const { pos } = payload ?? {}\n if (pos == null) return false\n\n const clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max)\n\n const tr = state.tr\n try {\n const $pos = state.doc.resolve(clamp(pos, 0, state.doc.content.size))\n tr.setSelection(TextSelection.near($pos))\n } catch {\n return false\n }\n dispatch?.(tr.scrollIntoView())\n return true\n }\n)\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n addBlockTypeCommand,\n clearTextInCurrentBlockCommand,\n isMarkSelectedCommand,\n isNodeSelectedCommand,\n selectTextNearPosCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n} from '../commands'\nimport {\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleLinkCommand,\n toggleStrongCommand,\n updateLinkCommand,\n} from '../mark'\nimport {\n createCodeBlockCommand,\n downgradeHeadingCommand,\n insertHardbreakCommand,\n insertHrCommand,\n insertImageCommand,\n liftFirstListItemCommand,\n liftListItemCommand,\n sinkListItemCommand,\n splitListItemCommand,\n turnIntoTextCommand,\n updateImageCommand,\n wrapInBlockquoteCommand,\n wrapInBulletListCommand,\n wrapInHeadingCommand,\n wrapInOrderedListCommand,\n} from '../node'\n\n/// @internal\nexport const commands: MilkdownPlugin[] = [\n turnIntoTextCommand,\n wrapInBlockquoteCommand,\n wrapInHeadingCommand,\n downgradeHeadingCommand,\n createCodeBlockCommand,\n insertHardbreakCommand,\n insertHrCommand,\n\n insertImageCommand,\n updateImageCommand,\n\n wrapInOrderedListCommand,\n wrapInBulletListCommand,\n sinkListItemCommand,\n splitListItemCommand,\n liftListItemCommand,\n liftFirstListItemCommand,\n\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n\n toggleLinkCommand,\n updateLinkCommand,\n\n isMarkSelectedCommand,\n isNodeSelectedCommand,\n\n clearTextInCurrentBlockCommand,\n setBlockTypeCommand,\n wrapInBlockTypeCommand,\n addBlockTypeCommand,\n selectTextNearPosCommand,\n]\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { emphasisKeymap, inlineCodeKeymap, strongKeymap } from '../mark'\nimport {\n blockquoteKeymap,\n bulletListKeymap,\n codeBlockKeymap,\n hardbreakKeymap,\n headingKeymap,\n listItemKeymap,\n orderedListKeymap,\n paragraphKeymap,\n} from '../node'\n\n/// @internal\nexport const keymap: MilkdownPlugin[] = [\n blockquoteKeymap,\n codeBlockKeymap,\n hardbreakKeymap,\n headingKeymap,\n listItemKeymap,\n orderedListKeymap,\n bulletListKeymap,\n paragraphKeymap,\n\n emphasisKeymap,\n inlineCodeKeymap,\n strongKeymap,\n].flat()\n", "import { $remark } from '@milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to add order in list for remark AST.\nexport const remarkAddOrderInListPlugin = $remark(\n 'remarkAddOrderInList',\n () => () => (tree) => {\n visit(tree, 'list', (node) => {\n if (node.ordered) {\n const start = node.start ?? 1\n node.children.forEach((child, index) => {\n ;(child as unknown as Record<string, number>).label = index + start\n })\n }\n })\n }\n)\n\nwithMeta(remarkAddOrderInListPlugin.plugin, {\n displayName: 'Remark<remarkAddOrderInListPlugin>',\n group: 'Remark',\n})\n\nwithMeta(remarkAddOrderInListPlugin.options, {\n displayName: 'RemarkConfig<remarkAddOrderInListPlugin>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to add inline line break for remark AST.\n/// The inline line break should be treated as a `space`.\n/// And the normal line break should be treated as a `LF`.\nexport const remarkLineBreak = $remark(\n 'remarkLineBreak',\n () => () => (tree: Node) => {\n const find = /[\\t ]*(?:\\r?\\n|\\r)/g\n visit(\n tree,\n 'text',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n if (!node.value || typeof node.value !== 'string') return\n\n const result = []\n let start = 0\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n\n if (start !== position)\n result.push({\n type: 'text',\n value: node.value.slice(start, position),\n })\n\n result.push({ type: 'break', data: { isInline: true } })\n start = position + match[0].length\n match = find.exec(node.value)\n }\n\n const hasResultAndIndex =\n result.length > 0 && parent && typeof index === 'number'\n\n if (!hasResultAndIndex) return\n\n if (start < node.value.length)\n result.push({ type: 'text', value: node.value.slice(start) })\n\n parent.children.splice(index, 1, ...result)\n return index + result.length\n }\n )\n }\n)\n\nwithMeta(remarkLineBreak.plugin, {\n displayName: 'Remark<remarkLineBreak>',\n group: 'Remark',\n})\n\nwithMeta(remarkLineBreak.options, {\n displayName: 'RemarkConfig<remarkLineBreak>',\n group: 'Remark',\n})\n", "import { $remark } from '@milkdown/utils'\nimport remarkInlineLinks from 'remark-inline-links'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin wraps [remark-inline-links](https://github.com/remarkjs/remark-inline-links).\nexport const remarkInlineLinkPlugin = $remark(\n 'remarkInlineLink',\n () => remarkInlineLinks\n)\n\nwithMeta(remarkInlineLinkPlugin.plugin, {\n displayName: 'Remark<remarkInlineLinkPlugin>',\n group: 'Remark',\n})\n\nwithMeta(remarkInlineLinkPlugin.options, {\n displayName: 'RemarkConfig<remarkInlineLinkPlugin>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\nconst isParent = (node: Node): node is Node & { children: Node[] } =>\n !!(node as Node & { children: Node[] }).children\nconst isHTML = (\n node: Node\n): node is Node & { children: Node[]; value: unknown } => node.type === 'html'\n\nfunction flatMapWithDepth(\n ast: Node,\n fn: (node: Node, index: number, parent: Node | null) => Node[]\n) {\n return transform(ast, 0, null)[0]\n\n function transform(node: Node, index: number, parent: Node | null) {\n if (isParent(node)) {\n const out = []\n for (let i = 0, n = node.children.length; i < n; i++) {\n const nthChild = node.children[i]\n if (nthChild) {\n const xs = transform(nthChild, i, node)\n if (xs) {\n for (let j = 0, m = xs.length; j < m; j++) {\n const item = xs[j]\n if (item) out.push(item)\n }\n }\n }\n }\n node.children = out\n }\n\n return fn(node, index, parent)\n }\n}\n\n// List of container node types that can contain block-level content\n// and thus may need HTML content to be wrapped in paragraphs\nconst BLOCK_CONTAINER_TYPES = ['root', 'blockquote', 'listItem']\n\n/// @internal\n/// This plugin should be deprecated after we support HTML.\nexport const remarkHtmlTransformer = $remark(\n 'remarkHTMLTransformer',\n () => () => (tree: Node) => {\n flatMapWithDepth(tree, (node, _index, parent) => {\n if (!isHTML(node)) return [node]\n\n // If the parent is a block container that expects block content,\n // wrap the HTML in a paragraph node\n if (parent && BLOCK_CONTAINER_TYPES.includes(parent.type)) {\n node.children = [{ ...node }]\n delete node.value\n ;(node as { type: string }).type = 'paragraph'\n }\n\n return [node]\n })\n }\n)\n\nwithMeta(remarkHtmlTransformer.plugin, {\n displayName: 'Remark<remarkHtmlTransformer>',\n group: 'Remark',\n})\n\nwithMeta(remarkHtmlTransformer.options, {\n displayName: 'RemarkConfig<remarkHtmlTransformer>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/transformer'\n\nimport { $remark } from '@milkdown/utils'\nimport { visit } from 'unist-util-visit'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to keep the marker (`_` and `*`) of emphasis and strong nodes.\nexport const remarkMarker = $remark(\n 'remarkMarker',\n () => () => (tree, file) => {\n const getMarker = (node: Node) => {\n return (file.value as string).charAt(node.position!.start.offset!)\n }\n visit(\n tree,\n (node: Node) => ['strong', 'emphasis'].includes(node.type),\n (node: Node) => {\n ;(node as Node & { marker: string }).marker = getMarker(node)\n }\n )\n }\n)\n\nwithMeta(remarkMarker.plugin, {\n displayName: 'Remark<remarkMarker>',\n group: 'Remark',\n})\n\nwithMeta(remarkMarker.options, {\n displayName: 'RemarkConfig<remarkMarker>',\n group: 'Remark',\n})\n", "import { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { Decoration, DecorationSet } from '@milkdown/prose/view'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is to solve the [chrome 98 bug](https://discuss.prosemirror.net/t/cursor-jumps-at-the-end-of-line-when-it-betweens-two-inline-nodes/4641).\nexport const inlineNodesCursorPlugin = $prose(() => {\n let lock = false\n const inlineNodesCursorPluginKey = new PluginKey(\n 'MILKDOWN_INLINE_NODES_CURSOR'\n )\n const inlineNodesCursorPlugin: Plugin = new Plugin({\n key: inlineNodesCursorPluginKey,\n state: {\n init() {\n return false\n },\n apply(tr) {\n if (!tr.selection.empty) return false\n\n const pos = tr.selection.$from\n const left = pos.nodeBefore\n const right = pos.nodeAfter\n if (\n left &&\n right &&\n left.isInline &&\n !left.isText &&\n right.isInline &&\n !right.isText\n )\n return true\n\n return false\n },\n },\n props: {\n handleDOMEvents: {\n compositionend: (view, e) => {\n if (lock) {\n lock = false\n requestAnimationFrame(() => {\n const active = inlineNodesCursorPlugin.getState(view.state)\n if (active) {\n const from = view.state.selection.from\n e.preventDefault()\n view.dispatch(view.state.tr.insertText(e.data || '', from))\n }\n })\n\n return true\n }\n return false\n },\n compositionstart: (view) => {\n const active = inlineNodesCursorPlugin.getState(view.state)\n if (active) lock = true\n\n return false\n },\n beforeinput: (view, e) => {\n const active = inlineNodesCursorPlugin.getState(view.state)\n if (active && e instanceof InputEvent && e.data && !lock) {\n const from = view.state.selection.from\n e.preventDefault()\n view.dispatch(view.state.tr.insertText(e.data || '', from))\n\n return true\n }\n\n return false\n },\n },\n decorations(state) {\n const active = inlineNodesCursorPlugin.getState(state)\n if (active) {\n const pos = state.selection.$from\n const position = pos.pos\n const left = document.createElement('span')\n const leftDec = Decoration.widget(position, left, {\n side: -1,\n })\n const right = document.createElement('span')\n const rightDec = Decoration.widget(position, right)\n setTimeout(() => {\n left.contentEditable = 'true'\n right.contentEditable = 'true'\n })\n return DecorationSet.create(state.doc, [leftDec, rightDec])\n }\n return DecorationSet.empty\n },\n },\n })\n\n return inlineNodesCursorPlugin\n})\n\nwithMeta(inlineNodesCursorPlugin, {\n displayName: 'Prose<inlineNodesCursorPlugin>',\n group: 'Prose',\n})\n", "import { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { AddMarkStep, ReplaceStep } from '@milkdown/prose/transform'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { hardbreakSchema } from '../node'\n\n/// This plugin is used to clear the marks around the hardbreak node.\nexport const hardbreakClearMarkPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('MILKDOWN_HARDBREAK_MARKS'),\n appendTransaction: (trs, _oldState, newState) => {\n if (!trs.length) return\n\n const [tr] = trs\n if (!tr) return\n\n const [step] = tr.steps\n\n const isInsertHr = tr.getMeta('hardbreak')\n if (isInsertHr) {\n if (!(step instanceof ReplaceStep)) return\n\n const { from } = step as unknown as { from: number }\n return newState.tr.setNodeMarkup(\n from,\n hardbreakSchema.type(ctx),\n undefined,\n []\n )\n }\n\n const isAddMarkStep = step instanceof AddMarkStep\n if (isAddMarkStep) {\n let _tr = newState.tr\n const { from, to } = step as unknown as { from: number; to: number }\n newState.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type === hardbreakSchema.type(ctx))\n _tr = _tr.setNodeMarkup(\n pos,\n hardbreakSchema.type(ctx),\n undefined,\n []\n )\n })\n\n return _tr\n }\n\n return undefined\n },\n })\n})\n\nwithMeta(hardbreakClearMarkPlugin, {\n displayName: 'Prose<hardbreakClearMarkPlugin>',\n group: 'Prose',\n})\n", "import { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $ctx, $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This slice contains the nodes that within which the hardbreak will be ignored.\nexport const hardbreakFilterNodes = $ctx(\n ['table', 'code_block'],\n 'hardbreakFilterNodes'\n)\n\nwithMeta(hardbreakFilterNodes, {\n displayName: 'Ctx<hardbreakFilterNodes>',\n group: 'Prose',\n})\n\n/// This plugin is used to filter the hardbreak node.\n/// If the hardbreak is going to be inserted within a node that is in the `hardbreakFilterNodes`, ignore it.\nexport const hardbreakFilterPlugin = $prose((ctx) => {\n const notIn = ctx.get(hardbreakFilterNodes.key)\n return new Plugin({\n key: new PluginKey('MILKDOWN_HARDBREAK_FILTER'),\n filterTransaction: (tr, state) => {\n const isInsertHr = tr.getMeta('hardbreak')\n const [step] = tr.steps\n if (isInsertHr && step) {\n const { from } = step as unknown as { from: number }\n const $from = state.doc.resolve(from)\n let curDepth = $from.depth\n let canApply = true\n while (curDepth > 0) {\n if (notIn.includes($from.node(curDepth).type.name)) canApply = false\n\n curDepth--\n }\n return canApply\n }\n return true\n },\n })\n})\n\nwithMeta(hardbreakFilterPlugin, {\n displayName: 'Prose<hardbreakFilterPlugin>',\n group: 'Prose',\n})\n", "import type { EditorView } from '@milkdown/prose/view'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { headingIdGenerator, headingSchema } from '../node/heading'\n\n/// This plugin is used to sync the heading id when the heading content changes.\n/// It will use the `headingIdGenerator` to generate the id.\nexport const syncHeadingIdPlugin = $prose((ctx) => {\n const headingIdPluginKey = new PluginKey('MILKDOWN_HEADING_ID')\n\n const updateId = (view: EditorView) => {\n if (view.composing) return\n\n const getId = ctx.get(headingIdGenerator.key)\n const tr = view.state.tr.setMeta('addToHistory', false)\n\n let found = false\n const idMap: Record<string, number> = {}\n\n view.state.doc.descendants((node, pos) => {\n if (node.type === headingSchema.type(ctx)) {\n if (node.textContent.trim().length === 0) return\n\n const attrs = node.attrs\n let id = getId(node)\n if (idMap[id]) {\n idMap[id]! += 1\n id += `-#${idMap[id]}`\n } else {\n idMap[id] = 1\n }\n\n if (attrs.id !== id) {\n found = true\n tr.setMeta(headingIdPluginKey, true).setNodeMarkup(pos, undefined, {\n ...attrs,\n id,\n })\n }\n }\n })\n\n if (found) view.dispatch(tr)\n }\n\n return new Plugin({\n key: headingIdPluginKey,\n view: (view) => {\n updateId(view)\n\n return {\n update: (view, prevState) => {\n if (view.state.doc.eq(prevState.doc)) return\n updateId(view)\n },\n }\n },\n })\n})\n\nwithMeta(syncHeadingIdPlugin, {\n displayName: 'Prose<syncHeadingIdPlugin>',\n group: 'Prose',\n})\n", "import type { Node } from '@milkdown/prose/model'\nimport type { EditorState, Transaction } from '@milkdown/prose/state'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\nimport { bulletListSchema } from '../node'\nimport { listItemSchema } from '../node/list-item'\nimport { orderedListSchema } from '../node/ordered-list'\n\n/// This plugin is used to keep the label of list item up to date in ordered list.\nexport const syncListOrderPlugin = $prose((ctx) => {\n const syncOrderLabel = (\n transactions: readonly Transaction[],\n _oldState: EditorState,\n newState: EditorState\n ) => {\n // Skip if composing or not editable\n if (\n !newState.selection ||\n transactions.some(\n (tr) => tr.getMeta('addToHistory') === false || !tr.isGeneric\n )\n )\n return null\n\n const orderedListType = orderedListSchema.type(ctx)\n const bulletListType = bulletListSchema.type(ctx)\n const listItemType = listItemSchema.type(ctx)\n\n const handleNodeItem = (\n attrs: Record<string, any>,\n index: number,\n order: number = 1\n ): boolean => {\n let changed = false\n const expectedLabel = `${index + order}.`\n if (attrs.label !== expectedLabel) {\n attrs.label = expectedLabel\n changed = true\n }\n\n return changed\n }\n\n let tr = newState.tr\n let needDispatch = false\n\n newState.doc.descendants(\n (node: Node, pos: number, parent: Node | null, index: number) => {\n if (node.type === bulletListType) {\n const base = node.maybeChild(0)\n if (\n base?.type === listItemType &&\n base.attrs.listType === 'ordered'\n ) {\n needDispatch = true\n tr.setNodeMarkup(pos, orderedListType, { spread: 'true' })\n\n node.descendants(\n (\n child: Node,\n pos: number,\n _parent: Node | null,\n index: number\n ) => {\n if (child.type === listItemType) {\n const attrs = { ...child.attrs }\n const changed = handleNodeItem(attrs, index)\n if (changed) tr = tr.setNodeMarkup(pos, undefined, attrs)\n }\n return false\n }\n )\n }\n } else if (\n node.type === listItemType &&\n parent?.type === orderedListType\n ) {\n const attrs = { ...node.attrs }\n let changed = false\n if (attrs.listType !== 'ordered') {\n attrs.listType = 'ordered'\n changed = true\n }\n\n const base = parent?.maybeChild(0)\n if (base)\n changed = handleNodeItem(attrs, index, parent?.attrs.order ?? 1)\n\n if (changed) {\n tr = tr.setNodeMarkup(pos, undefined, attrs)\n needDispatch = true\n }\n }\n }\n )\n\n return needDispatch ? tr.setMeta('addToHistory', false) : null\n }\n\n return new Plugin({\n key: new PluginKey('MILKDOWN_KEEP_LIST_ORDER'),\n appendTransaction: syncOrderLabel,\n })\n})\n\nwithMeta(syncListOrderPlugin, {\n displayName: 'Prose<syncListOrderPlugin>',\n group: 'Prose',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n hardbreakClearMarkPlugin,\n hardbreakFilterNodes,\n hardbreakFilterPlugin,\n inlineNodesCursorPlugin,\n remarkAddOrderInListPlugin,\n remarkHtmlTransformer,\n remarkInlineLinkPlugin,\n remarkLineBreak,\n remarkMarker,\n remarkPreserveEmptyLinePlugin,\n syncHeadingIdPlugin,\n syncListOrderPlugin,\n} from '../plugin'\n\n/// @internal\nexport const plugins: MilkdownPlugin[] = [\n hardbreakClearMarkPlugin,\n hardbreakFilterNodes,\n hardbreakFilterPlugin,\n\n inlineNodesCursorPlugin,\n\n remarkAddOrderInListPlugin,\n remarkInlineLinkPlugin,\n remarkLineBreak,\n remarkHtmlTransformer,\n remarkMarker,\n remarkPreserveEmptyLinePlugin,\n\n syncHeadingIdPlugin,\n syncListOrderPlugin,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n commands,\n inputRules,\n keymap,\n markInputRules,\n plugins,\n schema,\n} from './composed'\n\nexport * from './node'\nexport * from './mark'\nexport * from './plugin'\nexport * from './composed'\nexport * from './commands'\n\n/// The commonmark preset, includes all the plugins.\nexport const commonmark: MilkdownPlugin[] = [\n schema,\n inputRules,\n markInputRules,\n commands,\n keymap,\n plugins,\n].flat()\n", "// Because working with row and column-spanning cells is not quite\n// trivial, this code builds up a descriptive structure for a given\n// table node. The structures are cached with the (persistent) table\n// nodes as key, so that they only have to be recomputed when the\n// content of the table changes.\n//\n// This does mean that they have to store table-relative, not\n// document-relative positions. So code that uses them will typically\n// compute the start position of the table and offset positions passed\n// to or gotten from this structure by that amount.\nimport type { Attrs, Node } from 'prosemirror-model';\n\nimport type { CellAttrs } from './util';\n\n/**\n * @public\n */\nexport type ColWidths = number[];\n\n/**\n * @public\n */\nexport type Problem =\n | {\n type: 'colwidth mismatch';\n pos: number;\n colwidth: ColWidths;\n }\n | {\n type: 'collision';\n pos: number;\n row: number;\n n: number;\n }\n | {\n type: 'missing';\n row: number;\n n: number;\n }\n | {\n type: 'overlong_rowspan';\n pos: number;\n n: number;\n }\n | {\n type: 'zero_sized';\n };\n\nlet readFromCache: (key: Node) => TableMap | undefined;\nlet addToCache: (key: Node, value: TableMap) => TableMap;\n\n// Prefer using a weak map to cache table maps. Fall back on a\n// fixed-size cache if that's not supported.\nif (typeof WeakMap != 'undefined') {\n let cache = new WeakMap<Node, TableMap>();\n readFromCache = (key) => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n} else {\n const cache: (Node | TableMap)[] = [];\n const cacheSize = 10;\n let cachePos = 0;\n readFromCache = (key) => {\n for (let i = 0; i < cache.length; i += 2)\n if (cache[i] == key) return cache[i + 1] as TableMap;\n };\n addToCache = (key, value) => {\n if (cachePos == cacheSize) cachePos = 0;\n cache[cachePos++] = key;\n return (cache[cachePos++] = value);\n };\n}\n\n/**\n * @public\n */\nexport interface Rect {\n left: number;\n top: number;\n right: number;\n bottom: number;\n}\n\n/**\n * A table map describes the structure of a given table. To avoid\n * recomputing them all the time, they are cached per table node. To\n * be able to do that, positions saved in the map are relative to the\n * start of the table, rather than the start of the document.\n *\n * @public\n */\nexport class TableMap {\n constructor(\n /**\n * The number of columns\n */\n public width: number,\n /**\n * The number of rows\n */\n public height: number,\n /**\n * A width * height array with the start position of\n * the cell covering that part of the table in each slot\n */\n public map: number[],\n /**\n * An optional array of problems (cell overlap or non-rectangular\n * shape) for the table, used by the table normalizer.\n */\n public problems: Problem[] | null,\n ) {}\n\n // Find the dimensions of the cell at the given position.\n findCell(pos: number): Rect {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos != pos) continue;\n\n const left = i % this.width;\n const top = (i / this.width) | 0;\n let right = left + 1;\n let bottom = top + 1;\n\n for (let j = 1; right < this.width && this.map[i + j] == curPos; j++) {\n right++;\n }\n for (\n let j = 1;\n bottom < this.height && this.map[i + this.width * j] == curPos;\n j++\n ) {\n bottom++;\n }\n\n return { left, top, right, bottom };\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n // Find the left side of the cell at the given position.\n colCount(pos: number): number {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] == pos) {\n return i % this.width;\n }\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos: number, axis: 'horiz' | 'vert', dir: number): null | number {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis == 'horiz') {\n if (dir < 0 ? left == 0 : right == this.width) return null;\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height) return null;\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n\n // Get the rectangle spanning the two given cells.\n rectBetween(a: number, b: number): Rect {\n const {\n left: leftA,\n right: rightA,\n top: topA,\n bottom: bottomA,\n } = this.findCell(a);\n const {\n left: leftB,\n right: rightB,\n top: topB,\n bottom: bottomB,\n } = this.findCell(b);\n return {\n left: Math.min(leftA, leftB),\n top: Math.min(topA, topB),\n right: Math.max(rightA, rightB),\n bottom: Math.max(bottomA, bottomB),\n };\n }\n\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect: Rect): number[] {\n const result: number[] = [];\n const seen: Record<number, boolean> = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col;\n const pos = this.map[index];\n\n if (seen[pos]) continue;\n seen[pos] = true;\n\n if (\n (col == rect.left && col && this.map[index - 1] == pos) ||\n (row == rect.top && row && this.map[index - this.width] == pos)\n ) {\n continue;\n }\n result.push(pos);\n }\n }\n return result;\n }\n\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row: number, col: number, table: Node): number {\n for (let i = 0, rowStart = 0; ; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n let index = col + row * this.width;\n const rowEndIndex = (row + 1) * this.width;\n // Skip past cells from previous rows (via rowspan)\n while (index < rowEndIndex && this.map[index] < rowStart) index++;\n return index == rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n\n // Find the table map for the given table node.\n static get(table: Node): TableMap {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n}\n\n// Compute a table map.\nfunction computeMap(table: Node): TableMap {\n if (table.type.spec.tableRole != 'table')\n throw new RangeError('Not a table node: ' + table.type.name);\n const width = findWidth(table),\n height = table.childCount;\n const map = [];\n let mapPos = 0;\n let problems: Problem[] | null = null;\n const colWidths: ColWidths = [];\n for (let i = 0, e = width * height; i < e; i++) map[i] = 0;\n\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = table.child(row);\n pos++;\n for (let i = 0; ; i++) {\n while (mapPos < map.length && map[mapPos] != 0) mapPos++;\n if (i == rowNode.childCount) break;\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({\n type: 'overlong_rowspan',\n pos,\n n: rowspan - h,\n });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map[start + w] == 0) map[start + w] = pos;\n else\n (problems || (problems = [])).push({\n type: 'collision',\n row,\n pos,\n n: colspan - w,\n });\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = ((start + w) % width) * 2,\n prev = colWidths[widthIndex];\n if (\n prev == null ||\n (prev != colW && colWidths[widthIndex + 1] == 1)\n ) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos) if (map[mapPos++] == 0) missing++;\n if (missing)\n (problems || (problems = [])).push({ type: 'missing', row, n: missing });\n pos++;\n }\n\n if (width === 0 || height === 0)\n (problems || (problems = [])).push({ type: 'zero_sized' });\n\n const tableMap = new TableMap(width, height, map, problems);\n let badWidths = false;\n\n // For columns that have defined widths, but whose widths disagree\n // between rows, fix up the cells whose width doesn't match the\n // computed one.\n for (let i = 0; !badWidths && i < colWidths.length; i += 2)\n if (colWidths[i] != null && colWidths[i + 1] < height) badWidths = true;\n if (badWidths) findBadColWidths(tableMap, colWidths, table);\n\n return tableMap;\n}\n\nfunction findWidth(table: Node): number {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan)\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row) rowWidth += cell.attrs.colspan;\n }\n }\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1) hasRowSpan = true;\n }\n if (width == -1) width = rowWidth;\n else if (width != rowWidth) width = Math.max(width, rowWidth);\n }\n return width;\n}\n\nfunction findBadColWidths(\n map: TableMap,\n colWidths: ColWidths,\n table: Node,\n): void {\n if (!map.problems) map.problems = [];\n const seen: Record<number, boolean> = {};\n for (let i = 0; i < map.map.length; i++) {\n const pos = map.map[i];\n if (seen[pos]) continue;\n seen[pos] = true;\n const node = table.nodeAt(pos);\n if (!node) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n let updated = null;\n const attrs = node.attrs as CellAttrs;\n for (let j = 0; j < attrs.colspan; j++) {\n const col = (i + j) % map.width;\n const colWidth = colWidths[col * 2];\n if (\n colWidth != null &&\n (!attrs.colwidth || attrs.colwidth[j] != colWidth)\n )\n (updated || (updated = freshColWidth(attrs)))[j] = colWidth;\n }\n if (updated)\n map.problems.unshift({\n type: 'colwidth mismatch',\n pos,\n colwidth: updated,\n });\n }\n}\n\nfunction freshColWidth(attrs: Attrs): ColWidths {\n if (attrs.colwidth) return attrs.colwidth.slice();\n const result: ColWidths = [];\n for (let i = 0; i < attrs.colspan; i++) result.push(0);\n return result;\n}\n", "// Helper for creating a schema that supports tables.\n\nimport type {\n AttributeSpec,\n Attrs,\n Node,\n NodeSpec,\n NodeType,\n Schema,\n} from 'prosemirror-model';\n\nimport type { CellAttrs, MutableAttrs } from './util';\n\nfunction getCellAttrs(dom: HTMLElement | string, extraAttrs: Attrs): Attrs {\n if (typeof dom === 'string') {\n return {};\n }\n\n const widthAttr = dom.getAttribute('data-colwidth');\n const widths =\n widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr)\n ? widthAttr.split(',').map((s) => Number(s))\n : null;\n const colspan = Number(dom.getAttribute('colspan') || 1);\n const result: MutableAttrs = {\n colspan,\n rowspan: Number(dom.getAttribute('rowspan') || 1),\n colwidth: widths && widths.length == colspan ? widths : null,\n } satisfies CellAttrs;\n for (const prop in extraAttrs) {\n const getter = extraAttrs[prop].getFromDOM;\n const value = getter && getter(dom);\n if (value != null) {\n result[prop] = value;\n }\n }\n return result;\n}\n\nfunction setCellAttrs(node: Node, extraAttrs: Attrs): Attrs {\n const attrs: MutableAttrs = {};\n if (node.attrs.colspan != 1) attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1) attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth)\n attrs['data-colwidth'] = node.attrs.colwidth.join(',');\n for (const prop in extraAttrs) {\n const setter = extraAttrs[prop].setDOMAttr;\n if (setter) setter(node.attrs[prop], attrs);\n }\n return attrs;\n}\n\n/**\n * @public\n */\nexport type getFromDOM = (dom: HTMLElement) => unknown;\n\n/**\n * @public\n */\nexport type setDOMAttr = (value: unknown, attrs: MutableAttrs) => void;\n\n/**\n * @public\n */\nexport interface CellAttributes {\n /**\n * The attribute's default value.\n */\n default: unknown;\n\n /**\n * A function or type name used to validate values of this attribute.\n *\n * See [validate](https://prosemirror.net/docs/ref/#model.AttributeSpec.validate).\n */\n validate?: string | ((value: unknown) => void);\n\n /**\n * A function to read the attribute's value from a DOM node.\n */\n getFromDOM?: getFromDOM;\n\n /**\n * A function to add the attribute's value to an attribute\n * object that's used to render the cell's DOM.\n */\n setDOMAttr?: setDOMAttr;\n}\n\n/**\n * @public\n */\nexport interface TableNodesOptions {\n /**\n * A group name (something like `\"block\"`) to add to the table\n * node type.\n */\n tableGroup?: string;\n\n /**\n * The content expression for table cells.\n */\n cellContent: string;\n\n /**\n * Additional attributes to add to cells. Maps attribute names to\n * objects with the following properties:\n */\n cellAttributes: { [key: string]: CellAttributes };\n}\n\n/**\n * @public\n */\nexport type TableNodes = Record<\n 'table' | 'table_row' | 'table_cell' | 'table_header',\n NodeSpec\n>;\n\nfunction validateColwidth(value: unknown) {\n if (value === null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError('colwidth must be null or an array');\n }\n for (const item of value) {\n if (typeof item !== 'number') {\n throw new TypeError('colwidth must be null or an array of numbers');\n }\n }\n}\n\n/**\n * This function creates a set of [node\n * specs](http://prosemirror.net/docs/ref/#model.SchemaSpec.nodes) for\n * `table`, `table_row`, and `table_cell` nodes types as used by this\n * module. The result can then be added to the set of nodes when\n * creating a schema.\n *\n * @public\n */\nexport function tableNodes(options: TableNodesOptions): TableNodes {\n const extraAttrs = options.cellAttributes || {};\n const cellAttrs: Record<string, AttributeSpec> = {\n colspan: { default: 1, validate: 'number' },\n rowspan: { default: 1, validate: 'number' },\n colwidth: { default: null, validate: validateColwidth },\n };\n for (const prop in extraAttrs)\n cellAttrs[prop] = {\n default: extraAttrs[prop].default,\n validate: extraAttrs[prop].validate,\n };\n\n return {\n table: {\n content: 'table_row+',\n tableRole: 'table',\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{ tag: 'table' }],\n toDOM() {\n return ['table', ['tbody', 0]];\n },\n },\n table_row: {\n content: '(table_cell | table_header)*',\n tableRole: 'row',\n parseDOM: [{ tag: 'tr' }],\n toDOM() {\n return ['tr', 0];\n },\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: 'cell',\n isolating: true,\n parseDOM: [\n { tag: 'td', getAttrs: (dom) => getCellAttrs(dom, extraAttrs) },\n ],\n toDOM(node) {\n return ['td', setCellAttrs(node, extraAttrs), 0];\n },\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: 'header_cell',\n isolating: true,\n parseDOM: [\n { tag: 'th', getAttrs: (dom) => getCellAttrs(dom, extraAttrs) },\n ],\n toDOM(node) {\n return ['th', setCellAttrs(node, extraAttrs), 0];\n },\n },\n };\n}\n\n/**\n * @public\n */\nexport type TableRole = 'table' | 'row' | 'cell' | 'header_cell';\n\n/**\n * @public\n */\nexport function tableNodeTypes(schema: Schema): Record<TableRole, NodeType> {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (const name in schema.nodes) {\n const type = schema.nodes[name],\n role = type.spec.tableRole;\n if (role) result[role] = type;\n }\n }\n return result;\n}\n", "// Various helper function for working with tables\n\nimport type { Attrs, Node, ResolvedPos } from 'prosemirror-model';\nimport type { EditorState, NodeSelection } from 'prosemirror-state';\nimport { PluginKey } from 'prosemirror-state';\n\nimport type { CellSelection } from './cellselection';\nimport { tableNodeTypes } from './schema';\nimport type { Rect } from './tablemap';\nimport { TableMap } from './tablemap';\n\n/**\n * @public\n */\nexport type MutableAttrs = Record<string, unknown>;\n\n/**\n * @public\n */\nexport interface CellAttrs {\n colspan: number;\n rowspan: number;\n colwidth: number[] | null;\n}\n\n/**\n * @public\n */\nexport const tableEditingKey = new PluginKey<number>('selectingCells');\n\n/**\n * @public\n */\nexport function cellAround($pos: ResolvedPos): ResolvedPos | null {\n for (let d = $pos.depth - 1; d > 0; d--)\n if ($pos.node(d).type.spec.tableRole == 'row')\n return $pos.node(0).resolve($pos.before(d + 1));\n return null;\n}\n\nexport function cellWrapping($pos: ResolvedPos): null | Node {\n for (let d = $pos.depth; d > 0; d--) {\n // Sometimes the cell can be in the same depth.\n const role = $pos.node(d).type.spec.tableRole;\n if (role === 'cell' || role === 'header_cell') return $pos.node(d);\n }\n return null;\n}\n\n/**\n * @public\n */\nexport function isInTable(state: EditorState): boolean {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--)\n if ($head.node(d).type.spec.tableRole == 'row') return true;\n return false;\n}\n\n/**\n * @internal\n */\nexport function selectionCell(state: EditorState): ResolvedPos {\n const sel = state.selection as CellSelection | NodeSelection;\n if ('$anchorCell' in sel && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos\n ? sel.$anchorCell\n : sel.$headCell;\n } else if (\n 'node' in sel &&\n sel.node &&\n sel.node.type.spec.tableRole == 'cell'\n ) {\n return sel.$anchor;\n }\n const $cell = cellAround(sel.$head) || cellNear(sel.$head);\n if ($cell) {\n return $cell;\n }\n throw new RangeError(`No cell found around position ${sel.head}`);\n}\n\n/**\n * @public\n */\nexport function cellNear($pos: ResolvedPos): ResolvedPos | undefined {\n for (\n let after = $pos.nodeAfter, pos = $pos.pos;\n after;\n after = after.firstChild, pos++\n ) {\n const role = after.type.spec.tableRole;\n if (role == 'cell' || role == 'header_cell') return $pos.doc.resolve(pos);\n }\n for (\n let before = $pos.nodeBefore, pos = $pos.pos;\n before;\n before = before.lastChild, pos--\n ) {\n const role = before.type.spec.tableRole;\n if (role == 'cell' || role == 'header_cell')\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n}\n\n/**\n * @public\n */\nexport function pointsAtCell($pos: ResolvedPos): boolean {\n return $pos.parent.type.spec.tableRole == 'row' && !!$pos.nodeAfter;\n}\n\n/**\n * @public\n */\nexport function moveCellForward($pos: ResolvedPos): ResolvedPos {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter!.nodeSize);\n}\n\n/**\n * @internal\n */\nexport function inSameTable($cellA: ResolvedPos, $cellB: ResolvedPos): boolean {\n return (\n $cellA.depth == $cellB.depth &&\n $cellA.pos >= $cellB.start(-1) &&\n $cellA.pos <= $cellB.end(-1)\n );\n}\n\n/**\n * @public\n */\nexport function findCell($pos: ResolvedPos): Rect {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1));\n}\n\n/**\n * @public\n */\nexport function colCount($pos: ResolvedPos): number {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1));\n}\n\n/**\n * @public\n */\nexport function nextCell(\n $pos: ResolvedPos,\n axis: 'horiz' | 'vert',\n dir: number,\n): ResolvedPos | null {\n const table = $pos.node(-1);\n const map = TableMap.get(table);\n const tableStart = $pos.start(-1);\n\n const moved = map.nextCell($pos.pos - tableStart, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(tableStart + moved);\n}\n\n/**\n * @public\n */\nexport function removeColSpan(attrs: CellAttrs, pos: number, n = 1): CellAttrs {\n const result: CellAttrs = { ...attrs, colspan: attrs.colspan - n };\n\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some((w) => w > 0)) result.colwidth = null;\n }\n return result;\n}\n\n/**\n * @public\n */\nexport function addColSpan(attrs: CellAttrs, pos: number, n = 1): Attrs {\n const result = { ...attrs, colspan: attrs.colspan + n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++) result.colwidth.splice(pos, 0, 0);\n }\n return result;\n}\n\n/**\n * @public\n */\nexport function columnIsHeader(\n map: TableMap,\n table: Node,\n col: number,\n): boolean {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let row = 0; row < map.height; row++)\n if (table.nodeAt(map.map[col + row * map.width])!.type != headerCell)\n return false;\n return true;\n}\n", "// This file defines a ProseMirror selection subclass that models\n// table cell selections. The table plugin needs to be active to wire\n// in the user interaction part of table selections (so that you\n// actually get such selections when you select across cells).\n\nimport type { Node, ResolvedPos } from 'prosemirror-model';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport {\n NodeSelection,\n Selection,\n SelectionRange,\n TextSelection,\n} from 'prosemirror-state';\nimport type { Mappable } from 'prosemirror-transform';\nimport type { DecorationSource } from 'prosemirror-view';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\n\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport { inSameTable, pointsAtCell, removeColSpan } from './util';\n\n/**\n * @public\n */\nexport interface CellSelectionJSON {\n type: string;\n anchor: number;\n head: number;\n}\n\n/**\n * A [`Selection`](http://prosemirror.net/docs/ref/#state.Selection)\n * subclass that represents a cell selection spanning part of a table.\n * With the plugin enabled, these will be created when the user\n * selects across cells, and will be drawn by giving selected cells a\n * `selectedCell` CSS class.\n *\n * @public\n */\nexport class CellSelection extends Selection {\n // A resolved position pointing _in front of_ the anchor cell (the one\n // that doesn't move when extending the selection).\n public $anchorCell: ResolvedPos;\n\n // A resolved position pointing in front of the head cell (the one\n // moves when extending the selection).\n public $headCell: ResolvedPos;\n\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell: ResolvedPos, $headCell: ResolvedPos = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const rect = map.rectBetween(\n $anchorCell.pos - tableStart,\n $headCell.pos - tableStart,\n );\n\n const doc = $anchorCell.node(0);\n const cells = map\n .cellsInRect(rect)\n .filter((p) => p != $headCell.pos - tableStart);\n // Make the head cell the first range, so that it counts as the\n // primary part of the selection\n cells.unshift($headCell.pos - tableStart);\n const ranges = cells.map((pos) => {\n const cell = table.nodeAt(pos);\n if (!cell) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n const from = tableStart + pos + 1;\n return new SelectionRange(\n doc.resolve(from),\n doc.resolve(from + cell.content.size),\n );\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n this.$anchorCell = $anchorCell;\n this.$headCell = $headCell;\n }\n\n public map(doc: Node, mapping: Mappable): CellSelection | Selection {\n const $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n const $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (\n pointsAtCell($anchorCell) &&\n pointsAtCell($headCell) &&\n inSameTable($anchorCell, $headCell)\n ) {\n const tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n return CellSelection.rowSelection($anchorCell, $headCell);\n else if (tableChanged && this.isColSelection())\n return CellSelection.colSelection($anchorCell, $headCell);\n else return new CellSelection($anchorCell, $headCell);\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n public override content(): Slice {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n\n const rect = map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart,\n );\n const seen: Record<number, boolean> = {};\n const rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n const rowContent = [];\n for (\n let index = row * map.width + rect.left, col = rect.left;\n col < rect.right;\n col++, index++\n ) {\n const pos = map.map[index];\n if (seen[pos]) continue;\n seen[pos] = true;\n\n const cellRect = map.findCell(pos);\n let cell = table.nodeAt(pos);\n if (!cell) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n\n const extraLeft = rect.left - cellRect.left;\n const extraRight = cellRect.right - rect.right;\n\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs as CellAttrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(\n attrs,\n attrs.colspan - extraRight,\n extraRight,\n );\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n if (!cell) {\n throw new RangeError(\n `Could not create cell with attrs ${JSON.stringify(attrs)}`,\n );\n }\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n const attrs = {\n ...cell.attrs,\n rowspan:\n Math.min(cellRect.bottom, rect.bottom) -\n Math.max(cellRect.top, rect.top),\n };\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs)!;\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n\n const fragment =\n this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n\n public override replace(tr: Transaction, content: Slice = Slice.empty): void {\n const mapFrom = tr.steps.length,\n ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const { $from, $to } = ranges[i],\n mapping = tr.mapping.slice(mapFrom);\n tr.replace(\n mapping.map($from.pos),\n mapping.map($to.pos),\n i ? Slice.empty : content,\n );\n }\n const sel = Selection.findFrom(\n tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)),\n -1,\n );\n if (sel) tr.setSelection(sel);\n }\n\n public override replaceWith(tr: Transaction, node: Node): void {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n\n public forEachCell(f: (node: Node, pos: number) => void): void {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n\n const cells = map.cellsInRect(\n map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart,\n ),\n );\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i])!, tableStart + cells[i]);\n }\n }\n\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n public isColSelection(): boolean {\n const anchorTop = this.$anchorCell.index(-1);\n const headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0) return false;\n\n const anchorBottom = anchorTop + this.$anchorCell.nodeAfter!.attrs.rowspan;\n const headBottom = headTop + this.$headCell.nodeAfter!.attrs.rowspan;\n\n return (\n Math.max(anchorBottom, headBottom) == this.$headCell.node(-1).childCount\n );\n }\n\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n public static colSelection(\n $anchorCell: ResolvedPos,\n $headCell: ResolvedPos = $anchorCell,\n ): CellSelection {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n $anchorCell = doc.resolve(tableStart + map.map[anchorRect.left]);\n if (headRect.bottom < map.height)\n $headCell = doc.resolve(\n tableStart +\n map.map[map.width * (map.height - 1) + headRect.right - 1],\n );\n } else {\n if (headRect.top > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.left]);\n if (anchorRect.bottom < map.height)\n $anchorCell = doc.resolve(\n tableStart +\n map.map[map.width * (map.height - 1) + anchorRect.right - 1],\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n\n // True if this selection goes all the way from the left to the\n // right of the table.\n public isRowSelection(): boolean {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n\n const anchorLeft = map.colCount(this.$anchorCell.pos - tableStart);\n const headLeft = map.colCount(this.$headCell.pos - tableStart);\n if (Math.min(anchorLeft, headLeft) > 0) return false;\n\n const anchorRight = anchorLeft + this.$anchorCell.nodeAfter!.attrs.colspan;\n const headRight = headLeft + this.$headCell.nodeAfter!.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width;\n }\n\n public eq(other: unknown): boolean {\n return (\n other instanceof CellSelection &&\n other.$anchorCell.pos == this.$anchorCell.pos &&\n other.$headCell.pos == this.$headCell.pos\n );\n }\n\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n public static rowSelection(\n $anchorCell: ResolvedPos,\n $headCell: ResolvedPos = $anchorCell,\n ): CellSelection {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n $anchorCell = doc.resolve(\n tableStart + map.map[anchorRect.top * map.width],\n );\n if (headRect.right < map.width)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (headRect.top + 1) - 1],\n );\n } else {\n if (headRect.left > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.top * map.width]);\n if (anchorRect.right < map.width)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (anchorRect.top + 1) - 1],\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n\n public toJSON(): CellSelectionJSON {\n return {\n type: 'cell',\n anchor: this.$anchorCell.pos,\n head: this.$headCell.pos,\n };\n }\n\n public static override fromJSON(\n doc: Node,\n json: CellSelectionJSON,\n ): CellSelection {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n\n static create(\n doc: Node,\n anchorCell: number,\n headCell: number = anchorCell,\n ): CellSelection {\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n\n public override getBookmark(): CellBookmark {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n}\n\nCellSelection.prototype.visible = false;\n\nSelection.jsonID('cell', CellSelection);\n\n/**\n * @public\n */\nexport class CellBookmark {\n constructor(\n public anchor: number,\n public head: number,\n ) {}\n\n map(mapping: Mappable): CellBookmark {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n\n resolve(doc: Node): CellSelection | Selection {\n const $anchorCell = doc.resolve(this.anchor),\n $headCell = doc.resolve(this.head);\n if (\n $anchorCell.parent.type.spec.tableRole == 'row' &&\n $headCell.parent.type.spec.tableRole == 'row' &&\n $anchorCell.index() < $anchorCell.parent.childCount &&\n $headCell.index() < $headCell.parent.childCount &&\n inSameTable($anchorCell, $headCell)\n )\n return new CellSelection($anchorCell, $headCell);\n else return Selection.near($headCell, 1);\n }\n}\n\nexport function drawCellSelection(state: EditorState): DecorationSource | null {\n if (!(state.selection instanceof CellSelection)) return null;\n const cells: Decoration[] = [];\n state.selection.forEachCell((node, pos) => {\n cells.push(\n Decoration.node(pos, pos + node.nodeSize, { class: 'selectedCell' }),\n );\n });\n return DecorationSet.create(state.doc, cells);\n}\n\nfunction isCellBoundarySelection({ $from, $to }: TextSelection) {\n if ($from.pos == $to.pos || $from.pos < $to.pos - 6) return false; // Cheap elimination\n let afterFrom = $from.pos;\n let beforeTo = $to.pos;\n let depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n if ($from.after(depth + 1) < $from.end(depth)) break;\n for (let d = $to.depth; d >= 0; d--, beforeTo--)\n if ($to.before(d + 1) > $to.start(d)) break;\n return (\n afterFrom == beforeTo &&\n /row|table/.test($from.node(depth).type.spec.tableRole)\n );\n}\n\nfunction isTextSelectionAcrossCells({ $from, $to }: TextSelection) {\n let fromCellBoundaryNode: Node | undefined;\n let toCellBoundaryNode: Node | undefined;\n\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (\n node.type.spec.tableRole === 'cell' ||\n node.type.spec.tableRole === 'header_cell'\n ) {\n fromCellBoundaryNode = node;\n break;\n }\n }\n\n for (let i = $to.depth; i > 0; i--) {\n const node = $to.node(i);\n if (\n node.type.spec.tableRole === 'cell' ||\n node.type.spec.tableRole === 'header_cell'\n ) {\n toCellBoundaryNode = node;\n break;\n }\n }\n\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0;\n}\n\nexport function normalizeSelection(\n state: EditorState,\n tr: Transaction | undefined,\n allowTableNodeSelection: boolean,\n): Transaction | undefined {\n const sel = (tr || state).selection;\n const doc = (tr || state).doc;\n let normalize: Selection | undefined;\n let role: string | undefined;\n if (sel instanceof NodeSelection && (role = sel.node.type.spec.tableRole)) {\n if (role == 'cell' || role == 'header_cell') {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == 'row') {\n const $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n const map = TableMap.get(sel.node);\n const start = sel.from + 1;\n const lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize) (tr || (tr = state.tr)).setSelection(normalize);\n return tr;\n}\n", "// This file defines helpers for normalizing tables, making sure no\n// cells overlap (which can happen, if you have the wrong col- and\n// rowspans) and that each row has the same width. Uses the problems\n// reported by `TableMap`.\n\nimport type { Node } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport { PluginKey } from 'prosemirror-state';\n\nimport type { TableRole } from './schema';\nimport { tableNodeTypes } from './schema';\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport { removeColSpan } from './util';\n\n/**\n * @public\n */\nexport const fixTablesKey = new PluginKey<{ fixTables: boolean }>('fix-tables');\n\n/**\n * Helper for iterating through the nodes in a document that changed\n * compared to the given previous document. Useful for avoiding\n * duplicate work on each transaction.\n *\n * @public\n */\nfunction changedDescendants(\n old: Node,\n cur: Node,\n offset: number,\n f: (node: Node, pos: number) => void,\n): void {\n const oldSize = old.childCount,\n curSize = cur.childCount;\n outer: for (let i = 0, j = 0; i < curSize; i++) {\n const child = cur.child(i);\n for (let scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer;\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n changedDescendants(old.child(j), child, offset + 1, f);\n else child.nodesBetween(0, child.content.size, f, offset + 1);\n offset += child.nodeSize;\n }\n}\n\n/**\n * Inspect all tables in the given state's document and return a\n * transaction that fixes them, if necessary. If `oldState` was\n * provided, that is assumed to hold a previous, known-good state,\n * which will be used to avoid re-scanning unchanged parts of the\n * document.\n *\n * @public\n */\nexport function fixTables(\n state: EditorState,\n oldState?: EditorState,\n): Transaction | undefined {\n let tr: Transaction | undefined;\n const check = (node: Node, pos: number) => {\n if (node.type.spec.tableRole == 'table')\n tr = fixTable(state, node, pos, tr);\n };\n if (!oldState) state.doc.descendants(check);\n else if (oldState.doc != state.doc)\n changedDescendants(oldState.doc, state.doc, 0, check);\n return tr;\n}\n\n// Fix the given table, if necessary. Will append to the transaction\n// it was given, if non-null, or create a new one if necessary.\nexport function fixTable(\n state: EditorState,\n table: Node,\n tablePos: number,\n tr: Transaction | undefined,\n): Transaction | undefined {\n const map = TableMap.get(table);\n if (!map.problems) return tr;\n if (!tr) tr = state.tr;\n\n // Track which rows we must add cells to, so that we can adjust that\n // when fixing collisions.\n const mustAdd: number[] = [];\n for (let i = 0; i < map.height; i++) mustAdd.push(0);\n for (let i = 0; i < map.problems.length; i++) {\n const prob = map.problems[i];\n if (prob.type == 'collision') {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n const attrs = cell.attrs as CellAttrs;\n for (let j = 0; j < attrs.rowspan; j++) mustAdd[prob.row + j] += prob.n;\n tr.setNodeMarkup(\n tr.mapping.map(tablePos + 1 + prob.pos),\n null,\n removeColSpan(attrs, attrs.colspan - prob.n, prob.n),\n );\n } else if (prob.type == 'missing') {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == 'overlong_rowspan') {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n rowspan: cell.attrs.rowspan - prob.n,\n });\n } else if (prob.type == 'colwidth mismatch') {\n const cell = table.nodeAt(prob.pos);\n if (!cell) continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n colwidth: prob.colwidth,\n });\n } else if (prob.type == 'zero_sized') {\n const pos = tr.mapping.map(tablePos);\n tr.delete(pos, pos + table.nodeSize);\n }\n }\n let first, last;\n for (let i = 0; i < mustAdd.length; i++)\n if (mustAdd[i]) {\n if (first == null) first = i;\n last = i;\n }\n // Add the necessary cells, using a heuristic for whether to add the\n // cells at the start or end of the rows (if it looks like a 'bite'\n // was taken out of the table, add cells at the start of the row\n // after the bite. Otherwise add them at the end).\n for (let i = 0, pos = tablePos + 1; i < map.height; i++) {\n const row = table.child(i);\n const end = pos + row.nodeSize;\n const add = mustAdd[i];\n if (add > 0) {\n let role: TableRole = 'cell';\n if (row.firstChild) {\n role = row.firstChild.type.spec.tableRole;\n }\n const nodes: Node[] = [];\n for (let j = 0; j < add; j++) {\n const node = tableNodeTypes(state.schema)[role].createAndFill();\n\n if (node) nodes.push(node);\n }\n const side = (i == 0 || first == i - 1) && last == i ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true });\n}\n", "import type { Node } from 'prosemirror-model';\n\nimport { TableMap } from '../tablemap';\n\n/**\n * This function will transform the table node into a matrix of rows and columns\n * respecting merged cells, for example this table:\n *\n * ```\n * ┌──────┬──────┬─────────────┐\n * │ A1 │ B1 │ C1 │\n * ├──────┼──────┴──────┬──────┤\n * │ A2 │ B2 │ │\n * ├──────┼─────────────┤ D1 │\n * │ A3 │ B3 │ C3 │ │\n * └──────┴──────┴──────┴──────┘\n * ```\n *\n * will be converted to the below:\n *\n * ```javascript\n * [\n * [A1, B1, C1, null],\n * [A2, B2, null, D1],\n * [A3, B3, C3, null],\n * ]\n * ```\n * @internal\n */\nexport function convertTableNodeToArrayOfRows(\n tableNode: Node,\n): (Node | null)[][] {\n const map = TableMap.get(tableNode);\n const rows: (Node | null)[][] = [];\n const rowCount = map.height;\n const colCount = map.width;\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row: (Node | null)[] = [];\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\n const cellIndex = rowIndex * colCount + colIndex;\n const cellPos = map.map[cellIndex];\n if (rowIndex > 0) {\n const topCellIndex = cellIndex - colCount;\n const topCellPos = map.map[topCellIndex];\n if (cellPos === topCellPos) {\n row.push(null);\n continue;\n }\n }\n if (colIndex > 0) {\n const leftCellIndex = cellIndex - 1;\n const leftCellPos = map.map[leftCellIndex];\n if (cellPos === leftCellPos) {\n row.push(null);\n continue;\n }\n }\n row.push(tableNode.nodeAt(cellPos));\n }\n rows.push(row);\n }\n\n return rows;\n}\n\n/**\n * Convert an array of rows to a table node.\n *\n * @internal\n */\nexport function convertArrayOfRowsToTableNode(\n tableNode: Node,\n arrayOfNodes: (Node | null)[][],\n): Node {\n const newRows: Node[] = [];\n const map = TableMap.get(tableNode);\n const rowCount = map.height;\n const colCount = map.width;\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const oldRow: Node = tableNode.child(rowIndex);\n const newCells: Node[] = [];\n\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\n const cell = arrayOfNodes[rowIndex][colIndex];\n if (!cell) {\n continue;\n }\n\n const cellPos = map.map[rowIndex * map.width + colIndex];\n const oldCell = tableNode.nodeAt(cellPos);\n if (!oldCell) {\n continue;\n }\n\n const newCell = oldCell.type.createChecked(\n cell.attrs,\n cell.content,\n cell.marks,\n );\n newCells.push(newCell);\n }\n\n const newRow = oldRow.type.createChecked(\n oldRow.attrs,\n newCells,\n oldRow.marks,\n );\n newRows.push(newRow);\n }\n\n const newTable = tableNode.type.createChecked(\n tableNode.attrs,\n newRows,\n tableNode.marks,\n );\n return newTable;\n}\n", "/**\n * Move a row in an array of rows.\n *\n * @internal\n */\nexport function moveRowInArrayOfRows<T>(\n rows: T[],\n indexesOrigin: number[],\n indexesTarget: number[],\n directionOverride: -1 | 1 | 0,\n): T[] {\n const direction = indexesOrigin[0] > indexesTarget[0] ? -1 : 1;\n\n const rowsExtracted = rows.splice(indexesOrigin[0], indexesOrigin.length);\n const positionOffset = rowsExtracted.length % 2 === 0 ? 1 : 0;\n let target: number;\n\n if (directionOverride === -1 && direction === 1) {\n target = indexesTarget[0] - 1;\n } else if (directionOverride === 1 && direction === -1) {\n target = indexesTarget[indexesTarget.length - 1] - positionOffset + 1;\n } else {\n target =\n direction === -1\n ? indexesTarget[0]\n : indexesTarget[indexesTarget.length - 1] - positionOffset;\n }\n\n rows.splice(target, 0, ...rowsExtracted);\n return rows;\n}\n", "import type { Node, ResolvedPos } from 'prosemirror-model';\nimport type { Selection } from 'prosemirror-state';\n\nimport { CellSelection } from '../cellselection';\nimport { cellAround, cellNear, inSameTable } from '../util';\n\n/**\n * Checks if the given object is a `CellSelection` instance.\n *\n * @internal\n */\nfunction isCellSelection(value: unknown): value is CellSelection {\n return value instanceof CellSelection;\n}\n\n/**\n * Find the closest table node for a given position.\n *\n * @public\n */\nexport function findTable($pos: ResolvedPos): FindNodeResult | null {\n return findParentNode((node) => node.type.spec.tableRole === 'table', $pos);\n}\n\n/**\n * Try to find the anchor and head cell in the same table by using the given\n * anchor and head as hit points, or fallback to the selection's anchor and\n * head.\n *\n * @public\n */\nexport function findCellRange(\n selection: Selection,\n anchorHit?: number,\n headHit?: number,\n): [ResolvedPos, ResolvedPos] | null {\n if (anchorHit == null && headHit == null && isCellSelection(selection)) {\n return [selection.$anchorCell, selection.$headCell];\n }\n\n const anchor: number = anchorHit ?? headHit ?? selection.anchor;\n const head: number = headHit ?? anchorHit ?? selection.head;\n\n const doc = selection.$head.doc;\n\n const $anchorCell = findCellPos(doc, anchor);\n const $headCell = findCellPos(doc, head);\n\n if ($anchorCell && $headCell && inSameTable($anchorCell, $headCell)) {\n return [$anchorCell, $headCell];\n }\n return null;\n}\n\n/**\n * Try to find a resolved pos of a cell by using the given pos as a hit point.\n *\n * @public\n */\nexport function findCellPos(doc: Node, pos: number): ResolvedPos | undefined {\n const $pos = doc.resolve(pos);\n return cellAround($pos) || cellNear($pos);\n}\n\n/**\n * Result of finding a parent node.\n *\n * @public\n */\nexport interface FindNodeResult {\n /**\n * The closest parent node that satisfies the predicate.\n */\n node: Node;\n\n /**\n * The position directly before the node.\n */\n pos: number;\n\n /**\n * The position at the start of the node.\n */\n start: number;\n\n /**\n * The depth of the node.\n */\n depth: number;\n}\n\n/**\n * Find the closest parent node that satisfies the predicate.\n *\n * @internal\n */\nfunction findParentNode(\n /**\n * The predicate to test the parent node.\n */\n predicate: (node: Node) => boolean,\n /**\n * The position to start searching from.\n */\n $pos: ResolvedPos,\n): FindNodeResult | null {\n for (let depth = $pos.depth; depth >= 0; depth -= 1) {\n const node = $pos.node(depth);\n\n if (predicate(node)) {\n const pos = depth === 0 ? 0 : $pos.before(depth);\n const start = $pos.start(depth);\n return { node, pos, start, depth };\n }\n }\n\n return null;\n}\n", "import type { Selection } from 'prosemirror-state';\n\nimport { TableMap } from '../tablemap';\n\nimport type { FindNodeResult } from './query';\nimport { findTable } from './query';\n\n/**\n * Returns an array of cells in a column at the specified column index.\n *\n * @internal\n */\nexport function getCellsInColumn(\n columnIndex: number,\n selection: Selection,\n): FindNodeResult[] | undefined {\n const table = findTable(selection.$from);\n if (!table) {\n return;\n }\n\n const map = TableMap.get(table.node);\n\n if (columnIndex < 0 || columnIndex > map.width - 1) {\n return;\n }\n\n const cells = map.cellsInRect({\n left: columnIndex,\n right: columnIndex + 1,\n top: 0,\n bottom: map.height,\n });\n\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!;\n const pos = nodePos + table.start;\n return { pos, start: pos + 1, node, depth: table.depth + 2 };\n });\n}\n\n/**\n * Returns an array of cells in a row at the specified row index.\n *\n * @internal\n */\nexport function getCellsInRow(\n rowIndex: number,\n selection: Selection,\n): FindNodeResult[] | undefined {\n const table = findTable(selection.$from);\n if (!table) {\n return;\n }\n\n const map = TableMap.get(table.node);\n\n if (rowIndex < 0 || rowIndex > map.height - 1) {\n return;\n }\n\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: rowIndex,\n bottom: rowIndex + 1,\n });\n\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!;\n const pos = nodePos + table.start;\n return { pos, start: pos + 1, node, depth: table.depth + 2 };\n });\n}\n", "import type { ResolvedPos } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\n\nimport { getCellsInColumn, getCellsInRow } from './get-cells';\n\nexport type CellSelectionRange = {\n $anchor: ResolvedPos;\n $head: ResolvedPos;\n // an array of column/row indexes\n indexes: number[];\n};\n\n/**\n * Returns a range of rectangular selection spanning all merged cells around a\n * column at index `columnIndex`.\n *\n * Original implementation from Atlassian (Apache License 2.0)\n *\n * https://bitbucket.org/atlassian/atlassian-frontend-mirror/src/5f91cb871e8248bc3bae5ddc30bb9fd9200fadbb/editor/editor-tables/src/utils/get-selection-range-in-column.ts#editor/editor-tables/src/utils/get-selection-range-in-column.ts\n *\n * @internal\n */\nexport function getSelectionRangeInColumn(\n tr: Transaction,\n startColIndex: number,\n endColIndex: number = startColIndex,\n): CellSelectionRange | undefined {\n let startIndex = startColIndex;\n let endIndex = endColIndex;\n\n // looking for selection start column (startIndex)\n for (let i = startColIndex; i >= 0; i--) {\n const cells = getCellsInColumn(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.colspan + i - 1;\n if (maybeEndIndex >= startIndex) {\n startIndex = i;\n }\n if (maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n // looking for selection end column (endIndex)\n for (let i = startColIndex; i <= endIndex; i++) {\n const cells = getCellsInColumn(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.colspan + i - 1;\n if (cell.node.attrs.colspan > 1 && maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n\n // filter out columns without cells (where all rows have colspan > 1 in the same column)\n const indexes = [];\n for (let i = startIndex; i <= endIndex; i++) {\n const maybeCells = getCellsInColumn(i, tr.selection);\n if (maybeCells && maybeCells.length > 0) {\n indexes.push(i);\n }\n }\n startIndex = indexes[0];\n endIndex = indexes[indexes.length - 1];\n\n const firstSelectedColumnCells = getCellsInColumn(startIndex, tr.selection);\n const firstRowCells = getCellsInRow(0, tr.selection);\n if (!firstSelectedColumnCells || !firstRowCells) {\n return;\n }\n\n const $anchor = tr.doc.resolve(\n firstSelectedColumnCells[firstSelectedColumnCells.length - 1].pos,\n );\n\n let headCell;\n for (let i = endIndex; i >= startIndex; i--) {\n const columnCells = getCellsInColumn(i, tr.selection);\n if (columnCells && columnCells.length > 0) {\n for (let j = firstRowCells.length - 1; j >= 0; j--) {\n if (firstRowCells[j].pos === columnCells[0].pos) {\n headCell = columnCells[0];\n break;\n }\n }\n if (headCell) {\n break;\n }\n }\n }\n if (!headCell) {\n return;\n }\n\n const $head = tr.doc.resolve(headCell.pos);\n return { $anchor, $head, indexes };\n}\n\n/**\n * Returns a range of rectangular selection spanning all merged cells around a\n * row at index `rowIndex`.\n *\n * Original implementation from Atlassian (Apache License 2.0)\n *\n * https://bitbucket.org/atlassian/atlassian-frontend-mirror/src/5f91cb871e8248bc3bae5ddc30bb9fd9200fadbb/editor/editor-tables/src/utils/get-selection-range-in-row.ts#editor/editor-tables/src/utils/get-selection-range-in-row.ts\n *\n * @internal\n */\nexport function getSelectionRangeInRow(\n tr: Transaction,\n startRowIndex: number,\n endRowIndex: number = startRowIndex,\n): CellSelectionRange | undefined {\n let startIndex = startRowIndex;\n let endIndex = endRowIndex;\n\n // looking for selection start row (startIndex)\n for (let i = startRowIndex; i >= 0; i--) {\n const cells = getCellsInRow(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.rowspan + i - 1;\n if (maybeEndIndex >= startIndex) {\n startIndex = i;\n }\n if (maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n // looking for selection end row (endIndex)\n for (let i = startRowIndex; i <= endIndex; i++) {\n const cells = getCellsInRow(i, tr.selection);\n if (cells) {\n cells.forEach((cell) => {\n const maybeEndIndex = cell.node.attrs.rowspan + i - 1;\n if (cell.node.attrs.rowspan > 1 && maybeEndIndex > endIndex) {\n endIndex = maybeEndIndex;\n }\n });\n }\n }\n\n // filter out rows without cells (where all columns have rowspan > 1 in the same row)\n const indexes = [];\n for (let i = startIndex; i <= endIndex; i++) {\n const maybeCells = getCellsInRow(i, tr.selection);\n if (maybeCells && maybeCells.length > 0) {\n indexes.push(i);\n }\n }\n startIndex = indexes[0];\n endIndex = indexes[indexes.length - 1];\n\n const firstSelectedRowCells = getCellsInRow(startIndex, tr.selection);\n const firstColumnCells = getCellsInColumn(0, tr.selection);\n if (!firstSelectedRowCells || !firstColumnCells) {\n return;\n }\n\n const $anchor = tr.doc.resolve(\n firstSelectedRowCells[firstSelectedRowCells.length - 1].pos,\n );\n\n let headCell;\n for (let i = endIndex; i >= startIndex; i--) {\n const rowCells = getCellsInRow(i, tr.selection);\n if (rowCells && rowCells.length > 0) {\n for (let j = firstColumnCells.length - 1; j >= 0; j--) {\n if (firstColumnCells[j].pos === rowCells[0].pos) {\n headCell = rowCells[0];\n break;\n }\n }\n if (headCell) {\n break;\n }\n }\n }\n if (!headCell) {\n return;\n }\n\n const $head = tr.doc.resolve(headCell.pos);\n return { $anchor, $head, indexes };\n}\n", "/**\n * Transposes a 2D array by flipping columns to rows.\n *\n * Transposition is a familiar algebra concept where the matrix is flipped\n * along its diagonal. For more details, see:\n * https://en.wikipedia.org/wiki/Transpose\n *\n * @example\n * ```javascript\n * const arr = [\n * ['a1', 'a2', 'a3'],\n * ['b1', 'b2', 'b3'],\n * ['c1', 'c2', 'c3'],\n * ['d1', 'd2', 'd3'],\n * ];\n *\n * const result = transpose(arr);\n * result === [\n * ['a1', 'b1', 'c1', 'd1'],\n * ['a2', 'b2', 'c2', 'd2'],\n * ['a3', 'b3', 'c3', 'd3'],\n * ]\n * ```\n */\nexport function transpose<T>(array: T[][]): T[][] {\n return array[0].map((_, i) => {\n return array.map((column) => column[i]);\n });\n}\n", "import type { Node } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\n\nimport { CellSelection } from '../cellselection';\nimport { TableMap } from '../tablemap';\n\nimport {\n convertArrayOfRowsToTableNode,\n convertTableNodeToArrayOfRows,\n} from './convert';\nimport { moveRowInArrayOfRows } from './move-row-in-array-of-rows';\nimport { findTable } from './query';\nimport { getSelectionRangeInColumn } from './selection-range';\nimport { transpose } from './transpose';\n\n/**\n * Parameters for moving a column in a table.\n *\n * @internal\n */\nexport interface MoveColumnParams {\n tr: Transaction;\n originIndex: number;\n targetIndex: number;\n select: boolean;\n pos: number;\n}\n\n/**\n * Move a column from index `origin` to index `target`.\n *\n * @internal\n */\nexport function moveColumn(moveColParams: MoveColumnParams): boolean {\n const { tr, originIndex, targetIndex, select, pos } = moveColParams;\n const $pos = tr.doc.resolve(pos);\n const table = findTable($pos);\n if (!table) return false;\n\n const indexesOriginColumn = getSelectionRangeInColumn(\n tr,\n originIndex,\n )?.indexes;\n const indexesTargetColumn = getSelectionRangeInColumn(\n tr,\n targetIndex,\n )?.indexes;\n\n if (!indexesOriginColumn || !indexesTargetColumn) return false;\n\n if (indexesOriginColumn.includes(targetIndex)) return false;\n\n const newTable = moveTableColumn(\n table.node,\n indexesOriginColumn,\n indexesTargetColumn,\n 0,\n );\n\n tr.replaceWith(table.pos, table.pos + table.node.nodeSize, newTable);\n\n if (!select) return true;\n\n const map = TableMap.get(newTable);\n const start = table.start;\n const index = targetIndex;\n const lastCell = map.positionAt(map.height - 1, index, newTable);\n const $lastCell = tr.doc.resolve(start + lastCell);\n\n const firstCell = map.positionAt(0, index, newTable);\n const $firstCell = tr.doc.resolve(start + firstCell);\n\n tr.setSelection(CellSelection.colSelection($lastCell, $firstCell));\n return true;\n}\n\nfunction moveTableColumn(\n table: Node,\n indexesOrigin: number[],\n indexesTarget: number[],\n direction: -1 | 1 | 0,\n) {\n let rows = transpose(convertTableNodeToArrayOfRows(table));\n\n rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);\n rows = transpose(rows);\n\n return convertArrayOfRowsToTableNode(table, rows);\n}\n", "import type { Node } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\n\nimport { CellSelection } from '../cellselection';\nimport { TableMap } from '../tablemap';\n\nimport {\n convertArrayOfRowsToTableNode,\n convertTableNodeToArrayOfRows,\n} from './convert';\nimport { moveRowInArrayOfRows } from './move-row-in-array-of-rows';\nimport { findTable } from './query';\nimport { getSelectionRangeInRow } from './selection-range';\n\n/**\n * Parameters for moving a row in a table.\n *\n * @internal\n */\nexport interface MoveRowParams {\n tr: Transaction;\n originIndex: number;\n targetIndex: number;\n select: boolean;\n pos: number;\n}\n\n/**\n * Move a row from index `origin` to index `target`.\n *\n * @internal\n */\nexport function moveRow(moveRowParams: MoveRowParams): boolean {\n const { tr, originIndex, targetIndex, select, pos } = moveRowParams;\n const $pos = tr.doc.resolve(pos);\n const table = findTable($pos);\n if (!table) return false;\n\n const indexesOriginRow = getSelectionRangeInRow(tr, originIndex)?.indexes;\n const indexesTargetRow = getSelectionRangeInRow(tr, targetIndex)?.indexes;\n\n if (!indexesOriginRow || !indexesTargetRow) return false;\n\n if (indexesOriginRow.includes(targetIndex)) return false;\n\n const newTable = moveTableRow(\n table.node,\n indexesOriginRow,\n indexesTargetRow,\n 0,\n );\n\n tr.replaceWith(table.pos, table.pos + table.node.nodeSize, newTable);\n\n if (!select) return true;\n\n const map = TableMap.get(newTable);\n const start = table.start;\n const index = targetIndex;\n const lastCell = map.positionAt(index, map.width - 1, newTable);\n const $lastCell = tr.doc.resolve(start + lastCell);\n\n const firstCell = map.positionAt(index, 0, newTable);\n const $firstCell = tr.doc.resolve(start + firstCell);\n\n tr.setSelection(CellSelection.rowSelection($lastCell, $firstCell));\n return true;\n}\n\nfunction moveTableRow(\n table: Node,\n indexesOrigin: number[],\n indexesTarget: number[],\n direction: -1 | 1 | 0,\n) {\n let rows = convertTableNodeToArrayOfRows(table);\n\n rows = moveRowInArrayOfRows(rows, indexesOrigin, indexesTarget, direction);\n\n return convertArrayOfRowsToTableNode(table, rows);\n}\n", "// This file defines a number of table-related commands.\n\nimport type { Node, NodeType, ResolvedPos } from 'prosemirror-model';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport type { Command, EditorState, Transaction } from 'prosemirror-state';\nimport { TextSelection } from 'prosemirror-state';\n\nimport { CellSelection } from './cellselection';\nimport type { Direction } from './input';\nimport type { TableRole } from './schema';\nimport { tableNodeTypes } from './schema';\nimport type { Rect } from './tablemap';\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport {\n addColSpan,\n cellAround,\n cellWrapping,\n columnIsHeader,\n isInTable,\n moveCellForward,\n removeColSpan,\n selectionCell,\n} from './util';\nimport { moveColumn } from './utils/move-column';\nimport { moveRow } from './utils/move-row';\n\n/**\n * @public\n */\nexport type TableRect = Rect & {\n tableStart: number;\n map: TableMap;\n table: Node;\n};\n\n/**\n * Helper to get the selected rectangle in a table, if any. Adds table\n * map, table node, and table start offset to the object for\n * convenience.\n *\n * @public\n */\nexport function selectedRect(state: EditorState): TableRect {\n const sel = state.selection;\n const $pos = selectionCell(state);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map = TableMap.get(table);\n const rect =\n sel instanceof CellSelection\n ? map.rectBetween(\n sel.$anchorCell.pos - tableStart,\n sel.$headCell.pos - tableStart,\n )\n : map.findCell($pos.pos - tableStart);\n return { ...rect, tableStart, map, table };\n}\n\n/**\n * Add a column at the given position in a table.\n *\n * @public\n */\nexport function addColumn(\n tr: Transaction,\n { map, tableStart, table }: TableRect,\n col: number,\n): Transaction {\n let refColumn: number | null = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn)) {\n refColumn = col == 0 || col == map.width ? null : 0;\n }\n\n for (let row = 0; row < map.height; row++) {\n const index = row * map.width + col;\n // If this position falls inside a col-spanning cell\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n const pos = map.map[index];\n const cell = table.nodeAt(pos)!;\n tr.setNodeMarkup(\n tr.mapping.map(tableStart + pos),\n null,\n addColSpan(cell.attrs as CellAttrs, col - map.colCount(pos)),\n );\n // Skip ahead if rowspan > 1\n row += cell.attrs.rowspan - 1;\n } else {\n const type =\n refColumn == null\n ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refColumn])!.type;\n const pos = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos), type.createAndFill()!);\n }\n }\n return tr;\n}\n\n/**\n * Command to add a column before the column with the selection.\n *\n * @public\n */\nexport function addColumnBefore(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true;\n}\n\n/**\n * Command to add a column after the column with the selection.\n *\n * @public\n */\nexport function addColumnAfter(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true;\n}\n\n/**\n * @public\n */\nexport function removeColumn(\n tr: Transaction,\n { map, table, tableStart }: TableRect,\n col: number,\n) {\n const mapStart = tr.mapping.maps.length;\n for (let row = 0; row < map.height; ) {\n const index = row * map.width + col;\n const pos = map.map[index];\n const cell = table.nodeAt(pos)!;\n const attrs = cell.attrs as CellAttrs;\n // If this is part of a col-spanning cell\n if (\n (col > 0 && map.map[index - 1] == pos) ||\n (col < map.width - 1 && map.map[index + 1] == pos)\n ) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapStart).map(tableStart + pos),\n null,\n removeColSpan(attrs, col - map.colCount(pos)),\n );\n } else {\n const start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += attrs.rowspan;\n }\n}\n\n/**\n * Command function that removes the selected columns from a table.\n *\n * @public\n */\nexport function deleteColumn(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n const tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width) return false;\n for (let i = rect.right - 1; ; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left) break;\n const table = rect.tableStart\n ? tr.doc.nodeAt(rect.tableStart - 1)\n : tr.doc;\n if (!table) {\n throw new RangeError('No table found');\n }\n rect.table = table;\n rect.map = TableMap.get(table);\n }\n dispatch(tr);\n }\n return true;\n}\n\n/**\n * @public\n */\nexport function rowIsHeader(map: TableMap, table: Node, row: number): boolean {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map.width; col++)\n if (table.nodeAt(map.map[col + row * map.width])?.type != headerCell)\n return false;\n return true;\n}\n\n/**\n * @public\n */\nexport function addRow(\n tr: Transaction,\n { map, tableStart, table }: TableRect,\n row: number,\n): Transaction {\n let rowPos = tableStart;\n for (let i = 0; i < row; i++) rowPos += table.child(i).nodeSize;\n const cells = [];\n let refRow: number | null = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n refRow = row == 0 || row == map.height ? null : 0;\n for (let col = 0, index = map.width * row; col < map.width; col++, index++) {\n // Covered by a rowspan cell\n if (\n row > 0 &&\n row < map.height &&\n map.map[index] == map.map[index - map.width]\n ) {\n const pos = map.map[index];\n const attrs = table.nodeAt(pos)!.attrs;\n tr.setNodeMarkup(tableStart + pos, null, {\n ...attrs,\n rowspan: attrs.rowspan + 1,\n });\n col += attrs.colspan - 1;\n } else {\n const type =\n refRow == null\n ? tableNodeTypes(table.type.schema).cell\n : table.nodeAt(map.map[index + refRow * map.width])?.type;\n const node = type?.createAndFill();\n if (node) cells.push(node);\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n}\n\n/**\n * Add a table row before the selection.\n *\n * @public\n */\nexport function addRowBefore(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n}\n\n/**\n * Add a table row after the selection.\n *\n * @public\n */\nexport function addRowAfter(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n}\n\n/**\n * @public\n */\nexport function removeRow(\n tr: Transaction,\n { map, table, tableStart }: TableRect,\n row: number,\n): void {\n let rowPos = 0;\n for (let i = 0; i < row; i++) rowPos += table.child(i).nodeSize;\n const nextRow = rowPos + table.child(row).nodeSize;\n\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n\n const seen = new Set<number>();\n\n for (let col = 0, index = row * map.width; col < map.width; col++, index++) {\n const pos = map.map[index];\n\n // Skip cells that are checked already\n if (seen.has(pos)) continue;\n seen.add(pos);\n\n if (row > 0 && pos == map.map[index - map.width]) {\n // If this cell starts in the row above, simply reduce its rowspan\n const attrs = table.nodeAt(pos)!.attrs as CellAttrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, {\n ...attrs,\n rowspan: attrs.rowspan - 1,\n });\n col += attrs.colspan - 1;\n } else if (row < map.height && pos == map.map[index + map.width]) {\n // Else, if it continues in the row below, it has to be moved down\n const cell = table.nodeAt(pos)!;\n const attrs = cell.attrs as CellAttrs;\n const copy = cell.type.create(\n { ...attrs, rowspan: cell.attrs.rowspan - 1 },\n cell.content,\n );\n const newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += attrs.colspan - 1;\n }\n }\n}\n\n/**\n * Remove the selected rows from a table.\n *\n * @public\n */\nexport function deleteRow(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const rect = selectedRect(state),\n tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height) return false;\n for (let i = rect.bottom - 1; ; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top) break;\n const table = rect.tableStart\n ? tr.doc.nodeAt(rect.tableStart - 1)\n : tr.doc;\n if (!table) {\n throw new RangeError('No table found');\n }\n rect.table = table;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n}\n\nfunction isEmpty(cell: Node): boolean {\n const c = cell.content;\n\n return (\n c.childCount == 1 && c.child(0).isTextblock && c.child(0).childCount == 0\n );\n}\n\nfunction cellsOverlapRectangle({ width, height, map }: TableMap, rect: Rect) {\n let indexTop = rect.top * width + rect.left,\n indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left,\n indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if (\n (rect.left > 0 && map[indexLeft] == map[indexLeft - 1]) ||\n (rect.right < width && map[indexRight] == map[indexRight + 1])\n )\n return true;\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if (\n (rect.top > 0 && map[indexTop] == map[indexTop - width]) ||\n (rect.bottom < height && map[indexBottom] == map[indexBottom + width])\n )\n return true;\n indexTop++;\n indexBottom++;\n }\n return false;\n}\n\n/**\n * Merge the selected cells into a single cell. Only available when\n * the selected cells' outline forms a rectangle.\n *\n * @public\n */\nexport function mergeCells(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const sel = state.selection;\n if (\n !(sel instanceof CellSelection) ||\n sel.$anchorCell.pos == sel.$headCell.pos\n )\n return false;\n const rect = selectedRect(state),\n { map } = rect;\n if (cellsOverlapRectangle(map, rect)) return false;\n if (dispatch) {\n const tr = state.tr;\n const seen: Record<number, boolean> = {};\n let content = Fragment.empty;\n let mergedPos: number | undefined;\n let mergedCell: Node | undefined;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map.map[row * map.width + col];\n const cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos] || !cell) continue;\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell)) content = content.append(cell.content);\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n if (mergedPos == null || mergedCell == null) {\n return true;\n }\n\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, {\n ...addColSpan(\n mergedCell.attrs as CellAttrs,\n mergedCell.attrs.colspan,\n rect.right - rect.left - mergedCell.attrs.colspan,\n ),\n rowspan: rect.bottom - rect.top,\n });\n if (content.size > 0) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(\n new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart)),\n );\n dispatch(tr);\n }\n return true;\n}\n\n/**\n * Split a selected cell, whose rowpan or colspan is greater than one,\n * into smaller cells. Use the first cell type for the new cells.\n *\n * @public\n */\nexport function splitCell(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole as TableRole];\n })(state, dispatch);\n}\n\n/**\n * @public\n */\nexport interface GetCellTypeOptions {\n node: Node;\n row: number;\n col: number;\n}\n\n/**\n * Split a selected cell, whose rowpan or colspan is greater than one,\n * into smaller cells with the cell type (th, td) returned by getType function.\n *\n * @public\n */\nexport function splitCellWithType(\n getCellType: (options: GetCellTypeOptions) => NodeType,\n): Command {\n return (state, dispatch) => {\n const sel = state.selection;\n let cellNode: Node | null | undefined;\n let cellPos: number | undefined;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode) return false;\n cellPos = cellAround(sel.$from)?.pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos) return false;\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode == null || cellPos == null) {\n return false;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1) baseAttrs = { ...baseAttrs, rowspan: 1 };\n if (baseAttrs.colspan > 1) baseAttrs = { ...baseAttrs, colspan: 1 };\n const rect = selectedRect(state),\n tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++)\n attrs.push(\n colwidth\n ? {\n ...baseAttrs,\n colwidth: colwidth && colwidth[i] ? [colwidth[i]] : null,\n }\n : baseAttrs,\n );\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top) pos += cellNode.nodeSize;\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col == rect.left && row == rect.top) continue;\n tr.insert(\n (lastCell = tr.mapping.map(pos + rect.tableStart, 1)),\n getCellType({ node: cellNode, row, col }).createAndFill(attrs[i])!,\n );\n }\n }\n tr.setNodeMarkup(\n cellPos,\n getCellType({ node: cellNode, row: rect.top, col: rect.left }),\n attrs[0],\n );\n if (sel instanceof CellSelection)\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(sel.$anchorCell.pos),\n lastCell ? tr.doc.resolve(lastCell) : undefined,\n ),\n );\n dispatch(tr);\n }\n return true;\n };\n}\n\n/**\n * Returns a command that sets the given attribute to the given value,\n * and is only available when the currently selected cell doesn't\n * already have that attribute set to that value.\n *\n * @public\n */\nexport function setCellAttr(name: string, value: unknown): Command {\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n const $cell = selectionCell(state);\n if ($cell.nodeAfter!.attrs[name] === value) return false;\n if (dispatch) {\n const tr = state.tr;\n if (state.selection instanceof CellSelection)\n state.selection.forEachCell((node, pos) => {\n if (node.attrs[name] !== value)\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n [name]: value,\n });\n });\n else\n tr.setNodeMarkup($cell.pos, null, {\n ...$cell.nodeAfter!.attrs,\n [name]: value,\n });\n dispatch(tr);\n }\n return true;\n };\n}\n\nfunction deprecated_toggleHeader(type: ToggleHeaderType): Command {\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state),\n tr = state.tr;\n const cells = rect.map.cellsInRect(\n type == 'column'\n ? {\n left: rect.left,\n top: 0,\n right: rect.right,\n bottom: rect.map.height,\n }\n : type == 'row'\n ? {\n left: 0,\n top: rect.top,\n right: rect.map.width,\n bottom: rect.bottom,\n }\n : rect,\n );\n const nodes = cells.map((pos) => rect.table.nodeAt(pos)!);\n for (\n let i = 0;\n i < cells.length;\n i++ // Remove headers, if any\n )\n if (nodes[i].type == types.header_cell)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.cell,\n nodes[i].attrs,\n );\n if (tr.steps.length === 0)\n for (\n let i = 0;\n i < cells.length;\n i++ // No headers removed, add instead\n )\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.header_cell,\n nodes[i].attrs,\n );\n dispatch(tr);\n }\n return true;\n };\n}\n\nfunction isHeaderEnabledByType(\n type: 'row' | 'column',\n rect: TableRect,\n types: Record<string, NodeType>,\n): boolean {\n // Get cell positions for first row or first column\n const cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == 'row' ? rect.map.width : 1,\n bottom: type == 'column' ? rect.map.height : 1,\n });\n\n for (let i = 0; i < cellPositions.length; i++) {\n const cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * @public\n */\nexport type ToggleHeaderType = 'column' | 'row' | 'cell';\n\n/**\n * Toggles between row/column header and normal cells (Only applies to first row/column).\n * For deprecated behavior pass `useDeprecatedLogic` in options with true.\n *\n * @public\n */\nexport function toggleHeader(\n type: ToggleHeaderType,\n options?: { useDeprecatedLogic: boolean },\n): Command {\n options = options || { useDeprecatedLogic: false };\n\n if (options.useDeprecatedLogic) return deprecated_toggleHeader(type);\n\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state),\n tr = state.tr;\n\n const isHeaderRowEnabled = isHeaderEnabledByType('row', rect, types);\n const isHeaderColumnEnabled = isHeaderEnabledByType(\n 'column',\n rect,\n types,\n );\n\n const isHeaderEnabled =\n type === 'column'\n ? isHeaderRowEnabled\n : type === 'row'\n ? isHeaderColumnEnabled\n : false;\n\n const selectionStartsAt = isHeaderEnabled ? 1 : 0;\n\n const cellsRect =\n type == 'column'\n ? {\n left: 0,\n top: selectionStartsAt,\n right: 1,\n bottom: rect.map.height,\n }\n : type == 'row'\n ? {\n left: selectionStartsAt,\n top: 0,\n right: rect.map.width,\n bottom: 1,\n }\n : rect;\n\n const newType =\n type == 'column'\n ? isHeaderColumnEnabled\n ? types.cell\n : types.header_cell\n : type == 'row'\n ? isHeaderRowEnabled\n ? types.cell\n : types.header_cell\n : types.cell;\n\n rect.map.cellsInRect(cellsRect).forEach((relativeCellPos) => {\n const cellPos = relativeCellPos + rect.tableStart;\n const cell = tr.doc.nodeAt(cellPos);\n\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n\n dispatch(tr);\n }\n return true;\n };\n}\n\n/**\n * Toggles whether the selected row contains header cells.\n *\n * @public\n */\nexport const toggleHeaderRow: Command = toggleHeader('row', {\n useDeprecatedLogic: true,\n});\n\n/**\n * Toggles whether the selected column contains header cells.\n *\n * @public\n */\nexport const toggleHeaderColumn: Command = toggleHeader('column', {\n useDeprecatedLogic: true,\n});\n\n/**\n * Toggles whether the selected cells are header cells.\n *\n * @public\n */\nexport const toggleHeaderCell: Command = toggleHeader('cell', {\n useDeprecatedLogic: true,\n});\n\nfunction findNextCell($cell: ResolvedPos, dir: Direction): number | null {\n if (dir < 0) {\n const before = $cell.nodeBefore;\n if (before) return $cell.pos - before.nodeSize;\n for (\n let row = $cell.index(-1) - 1, rowEnd = $cell.before();\n row >= 0;\n row--\n ) {\n const rowNode = $cell.node(-1).child(row);\n const lastChild = rowNode.lastChild;\n if (lastChild) {\n return rowEnd - 1 - lastChild.nodeSize;\n }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) {\n return $cell.pos + $cell.nodeAfter!.nodeSize;\n }\n const table = $cell.node(-1);\n for (\n let row = $cell.indexAfter(-1), rowStart = $cell.after();\n row < table.childCount;\n row++\n ) {\n const rowNode = table.child(row);\n if (rowNode.childCount) return rowStart + 1;\n rowStart += rowNode.nodeSize;\n }\n }\n return null;\n}\n\n/**\n * Returns a command for selecting the next (direction=1) or previous\n * (direction=-1) cell in a table.\n *\n * @public\n */\nexport function goToNextCell(direction: Direction): Command {\n return function (state, dispatch) {\n if (!isInTable(state)) return false;\n const cell = findNextCell(selectionCell(state), direction);\n if (cell == null) return false;\n if (dispatch) {\n const $cell = state.doc.resolve(cell);\n dispatch(\n state.tr\n .setSelection(TextSelection.between($cell, moveCellForward($cell)))\n .scrollIntoView(),\n );\n }\n return true;\n };\n}\n\n/**\n * Deletes the table around the selection, if any.\n *\n * @public\n */\nexport function deleteTable(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (node.type.spec.tableRole == 'table') {\n if (dispatch)\n dispatch(\n state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView(),\n );\n return true;\n }\n }\n return false;\n}\n\n/**\n * Deletes the content of the selected cells, if they are not empty.\n *\n * @public\n */\nexport function deleteCellSelection(\n state: EditorState,\n dispatch?: (tr: Transaction) => void,\n): boolean {\n const sel = state.selection;\n if (!(sel instanceof CellSelection)) return false;\n if (dispatch) {\n const tr = state.tr;\n const baseContent = tableNodeTypes(state.schema).cell.createAndFill()!\n .content;\n sel.forEachCell((cell, pos) => {\n if (!cell.content.eq(baseContent))\n tr.replace(\n tr.mapping.map(pos + 1),\n tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice(baseContent, 0, 0),\n );\n });\n if (tr.docChanged) dispatch(tr);\n }\n return true;\n}\n\n/**\n * Options for moveTableRow\n *\n * @public\n */\nexport interface MoveTableRowOptions {\n /**\n * The source row index to move from.\n */\n from: number;\n\n /**\n * The destination row index to move to.\n */\n to: number;\n\n /**\n * Whether to select the moved row after the operation.\n *\n * @default true\n */\n select?: boolean;\n\n /**\n * Optional position to resolve table from. If not provided, uses the current selection.\n */\n pos?: number;\n}\n\n/**\n * Move a table row from index `from` to index `to`.\n *\n * @public\n */\nexport function moveTableRow(options: MoveTableRowOptions): Command {\n return (state, dispatch) => {\n const {\n from: originIndex,\n to: targetIndex,\n select = true,\n pos = state.selection.from,\n } = options;\n const tr = state.tr;\n if (moveRow({ tr, originIndex, targetIndex, select, pos })) {\n dispatch?.(tr);\n return true;\n }\n return false;\n };\n}\n\n/**\n * Options for moveTableColumn\n *\n * @public\n */\nexport interface MoveTableColumnOptions {\n /**\n * The source column index to move from.\n */\n from: number;\n\n /**\n * The destination column index to move to.\n */\n to: number;\n\n /**\n * Whether to select the moved column after the operation.\n *\n * @default true\n */\n select?: boolean;\n\n /**\n * Optional position to resolve table from. If not provided, uses the current selection.\n */\n pos?: number;\n}\n\n/**\n * Move a table column from index `from` to index `to`.\n *\n * @public\n */\nexport function moveTableColumn(options: MoveTableColumnOptions): Command {\n return (state, dispatch) => {\n const {\n from: originIndex,\n to: targetIndex,\n select = true,\n pos = state.selection.from,\n } = options;\n const tr = state.tr;\n if (moveColumn({ tr, originIndex, targetIndex, select, pos })) {\n dispatch?.(tr);\n return true;\n }\n return false;\n };\n}\n", "// Utilities used for copy/paste handling.\n//\n// This module handles pasting cell content into tables, or pasting\n// anything into a cell selection, as replacing a block of cells with\n// the content of the selection. When pasting cells into a cell, that\n// involves placing the block of pasted content so that its top left\n// aligns with the selection cell, optionally extending the table to\n// the right or bottom to make sure it is large enough. Pasting into a\n// cell selection is different, here the cells in the selection are\n// clipped to the selection's rectangle, optionally repeating the\n// pasted cells when they are smaller than the selection.\n\nimport type { Node, NodeType, Schema } from 'prosemirror-model';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport { Transform } from 'prosemirror-transform';\n\nimport { CellSelection } from './cellselection';\nimport { tableNodeTypes } from './schema';\nimport type { ColWidths, Rect } from './tablemap';\nimport { TableMap } from './tablemap';\nimport type { CellAttrs } from './util';\nimport { removeColSpan } from './util';\n\n/**\n * @internal\n */\nexport type Area = { width: number; height: number; rows: Fragment[] };\n\n// Utilities to help with copying and pasting table cells\n\n/**\n * Get a rectangular area of cells from a slice, or null if the outer\n * nodes of the slice aren't table cells or rows.\n *\n * @internal\n */\nexport function pastedCells(slice: Slice): Area | null {\n if (slice.size === 0) return null;\n let { content, openStart, openEnd } = slice;\n while (\n content.childCount == 1 &&\n ((openStart > 0 && openEnd > 0) ||\n content.child(0).type.spec.tableRole == 'table')\n ) {\n openStart--;\n openEnd--;\n content = content.child(0).content;\n }\n const first = content.child(0);\n const role = first.type.spec.tableRole;\n const schema = first.type.schema,\n rows = [];\n if (role == 'row') {\n for (let i = 0; i < content.childCount; i++) {\n let cells = content.child(i).content;\n const left = i ? 0 : Math.max(0, openStart - 1);\n const right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right)\n cells = fitSlice(\n tableNodeTypes(schema).row,\n new Slice(cells, left, right),\n ).content;\n rows.push(cells);\n }\n } else if (role == 'cell' || role == 'header_cell') {\n rows.push(\n openStart || openEnd\n ? fitSlice(\n tableNodeTypes(schema).row,\n new Slice(content, openStart, openEnd),\n ).content\n : content,\n );\n } else {\n return null;\n }\n return ensureRectangular(schema, rows);\n}\n\n// Compute the width and height of a set of cells, and make sure each\n// row has the same number of cells.\nfunction ensureRectangular(schema: Schema, rows: Fragment[]): Area {\n const widths: ColWidths = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n for (let j = row.childCount - 1; j >= 0; j--) {\n const { rowspan, colspan } = row.child(j).attrs;\n for (let r = i; r < i + rowspan; r++)\n widths[r] = (widths[r] || 0) + colspan;\n }\n }\n let width = 0;\n for (let r = 0; r < widths.length; r++) width = Math.max(width, widths[r]);\n for (let r = 0; r < widths.length; r++) {\n if (r >= rows.length) rows.push(Fragment.empty);\n if (widths[r] < width) {\n const empty = tableNodeTypes(schema).cell.createAndFill()!;\n const cells = [];\n for (let i = widths[r]; i < width; i++) {\n cells.push(empty);\n }\n rows[r] = rows[r].append(Fragment.from(cells));\n }\n }\n return { height: rows.length, width, rows };\n}\n\nexport function fitSlice(nodeType: NodeType, slice: Slice): Node {\n const node = nodeType.createAndFill()!;\n const tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc;\n}\n\n/**\n * Clip or extend (repeat) the given set of cells to cover the given\n * width and height. Will clip rowspan/colspan cells at the edges when\n * they stick out.\n *\n * @internal\n */\nexport function clipCells(\n { width, height, rows }: Area,\n newWidth: number,\n newHeight: number,\n): Area {\n if (width != newWidth) {\n const added: number[] = [];\n const newRows: Fragment[] = [];\n for (let row = 0; row < rows.length; row++) {\n const frag = rows[row],\n cells = [];\n for (let col = added[row] || 0, i = 0; col < newWidth; i++) {\n let cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n cell = cell.type.createChecked(\n removeColSpan(\n cell.attrs as CellAttrs,\n cell.attrs.colspan,\n col + cell.attrs.colspan - newWidth,\n ),\n cell.content,\n );\n cells.push(cell);\n col += cell.attrs.colspan;\n for (let j = 1; j < cell.attrs.rowspan; j++)\n added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n\n if (height != newHeight) {\n const newRows = [];\n for (let row = 0, i = 0; row < newHeight; row++, i++) {\n const cells = [],\n source = rows[i % height];\n for (let j = 0; j < source.childCount; j++) {\n let cell = source.child(j);\n if (row + cell.attrs.rowspan > newHeight)\n cell = cell.type.create(\n {\n ...cell.attrs,\n rowspan: Math.max(1, newHeight - cell.attrs.rowspan),\n },\n cell.content,\n );\n cells.push(cell);\n }\n newRows.push(Fragment.from(cells));\n }\n rows = newRows;\n height = newHeight;\n }\n\n return { width, height, rows };\n}\n\n// Make sure a table has at least the given width and height. Return\n// true if something was changed.\nfunction growTable(\n tr: Transaction,\n map: TableMap,\n table: Node,\n start: number,\n width: number,\n height: number,\n mapFrom: number,\n): boolean {\n const schema = tr.doc.type.schema;\n const types = tableNodeTypes(schema);\n let empty;\n let emptyHead;\n if (width > map.width) {\n for (let row = 0, rowEnd = 0; row < map.height; row++) {\n const rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n const cells: Node[] = [];\n let add: Node;\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n add = empty || (empty = types.cell.createAndFill()!);\n else add = emptyHead || (emptyHead = types.header_cell.createAndFill()!);\n for (let i = map.width; i < width; i++) cells.push(add);\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n const cells = [];\n for (\n let i = 0, start = (map.height - 1) * map.width;\n i < Math.max(map.width, width);\n i++\n ) {\n const header =\n i >= map.width\n ? false\n : table.nodeAt(map.map[start + i])!.type == types.header_cell;\n cells.push(\n header\n ? emptyHead || (emptyHead = types.header_cell.createAndFill()!)\n : empty || (empty = types.cell.createAndFill()!),\n );\n }\n\n const emptyRow = types.row.create(null, Fragment.from(cells)),\n rows = [];\n for (let i = map.height; i < height; i++) rows.push(emptyRow);\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead);\n}\n\n// Make sure the given line (left, top) to (right, top) doesn't cross\n// any rowspan cells by splitting cells that cross it. Return true if\n// something changed.\nfunction isolateHorizontal(\n tr: Transaction,\n map: TableMap,\n table: Node,\n start: number,\n left: number,\n right: number,\n top: number,\n mapFrom: number,\n): boolean {\n if (top == 0 || top == map.height) return false;\n let found = false;\n for (let col = left; col < right; col++) {\n const index = top * map.width + col,\n pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n const cell = table.nodeAt(pos)!;\n const { top: cellTop, left: cellLeft } = map.findCell(pos);\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, {\n ...cell.attrs,\n rowspan: top - cellTop,\n });\n tr.insert(\n tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill({\n ...cell.attrs,\n rowspan: cellTop + cell.attrs.rowspan - top,\n })!,\n );\n col += cell.attrs.colspan - 1;\n }\n }\n return found;\n}\n\n// Make sure the given line (left, top) to (left, bottom) doesn't\n// cross any colspan cells by splitting cells that cross it. Return\n// true if something changed.\nfunction isolateVertical(\n tr: Transaction,\n map: TableMap,\n table: Node,\n start: number,\n top: number,\n bottom: number,\n left: number,\n mapFrom: number,\n): boolean {\n if (left == 0 || left == map.width) return false;\n let found = false;\n for (let row = top; row < bottom; row++) {\n const index = row * map.width + left,\n pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n const cell = table.nodeAt(pos)!;\n const cellLeft = map.colCount(pos);\n const updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(\n updatePos,\n null,\n removeColSpan(\n cell.attrs as CellAttrs,\n left - cellLeft,\n cell.attrs.colspan - (left - cellLeft),\n ),\n );\n tr.insert(\n updatePos + cell.nodeSize,\n cell.type.createAndFill(\n removeColSpan(cell.attrs as CellAttrs, 0, left - cellLeft),\n )!,\n );\n row += cell.attrs.rowspan - 1;\n }\n }\n return found;\n}\n\n/**\n * Insert the given set of cells (as returned by `pastedCells`) into a\n * table, at the position pointed at by rect.\n *\n * @internal\n */\nexport function insertCells(\n state: EditorState,\n dispatch: (tr: Transaction) => void,\n tableStart: number,\n rect: Rect,\n cells: Area,\n): void {\n let table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc;\n if (!table) {\n throw new Error('No table found');\n }\n let map = TableMap.get(table);\n const { top, left } = rect;\n const right = left + cells.width,\n bottom = top + cells.height;\n const tr = state.tr;\n let mapFrom = 0;\n\n function recomp(): void {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n if (!table) {\n throw new Error('No table found');\n }\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n\n // Prepare the table to be large enough and not have any cells\n // crossing the boundaries of the rectangle that we want to\n // insert into. If anything about it changes, recompute the table\n // map so that subsequent operations can see the current shape.\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom)) recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom))\n recomp();\n if (\n isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom)\n )\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom))\n recomp();\n\n for (let row = top; row < bottom; row++) {\n const from = map.positionAt(row, left, table),\n to = map.positionAt(row, right, table);\n tr.replace(\n tr.mapping.slice(mapFrom).map(from + tableStart),\n tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice(cells.rows[row - top], 0, 0),\n );\n }\n recomp();\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table)),\n ),\n );\n dispatch(tr);\n}\n", "// This file defines a number of helpers for wiring up user input to\n// table-related functionality.\n\nimport { keydownHandler } from 'prosemirror-keymap';\nimport type { ResolvedPos, Slice } from 'prosemirror-model';\nimport { Fragment } from 'prosemirror-model';\nimport type { Command, EditorState, Transaction } from 'prosemirror-state';\nimport { Selection, TextSelection } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\n\nimport { CellSelection } from './cellselection';\nimport { deleteCellSelection } from './commands';\nimport { clipCells, fitSlice, insertCells, pastedCells } from './copypaste';\nimport { tableNodeTypes } from './schema';\nimport { TableMap } from './tablemap';\nimport {\n cellAround,\n inSameTable,\n isInTable,\n nextCell,\n selectionCell,\n tableEditingKey,\n} from './util';\n\ntype Axis = 'horiz' | 'vert';\n\n/**\n * @public\n */\nexport type Direction = -1 | 1;\n\nexport const handleKeyDown = keydownHandler({\n ArrowLeft: arrow('horiz', -1),\n ArrowRight: arrow('horiz', 1),\n ArrowUp: arrow('vert', -1),\n ArrowDown: arrow('vert', 1),\n\n 'Shift-ArrowLeft': shiftArrow('horiz', -1),\n 'Shift-ArrowRight': shiftArrow('horiz', 1),\n 'Shift-ArrowUp': shiftArrow('vert', -1),\n 'Shift-ArrowDown': shiftArrow('vert', 1),\n\n Backspace: deleteCellSelection,\n 'Mod-Backspace': deleteCellSelection,\n Delete: deleteCellSelection,\n 'Mod-Delete': deleteCellSelection,\n});\n\nfunction maybeSetSelection(\n state: EditorState,\n dispatch: undefined | ((tr: Transaction) => void),\n selection: Selection,\n): boolean {\n if (selection.eq(state.selection)) return false;\n if (dispatch) dispatch(state.tr.setSelection(selection).scrollIntoView());\n return true;\n}\n\n/**\n * @internal\n */\nexport function arrow(axis: Axis, dir: Direction): Command {\n return (state, dispatch, view) => {\n if (!view) return false;\n const sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(\n state,\n dispatch,\n Selection.near(sel.$headCell, dir),\n );\n }\n if (axis != 'horiz' && !sel.empty) return false;\n const end = atEndOfCell(view, axis, dir);\n if (end == null) return false;\n if (axis == 'horiz') {\n return maybeSetSelection(\n state,\n dispatch,\n Selection.near(state.doc.resolve(sel.head + dir), dir),\n );\n } else {\n const $cell = state.doc.resolve(end);\n const $next = nextCell($cell, axis, dir);\n let newSel;\n if ($next) newSel = Selection.near($next, 1);\n else if (dir < 0)\n newSel = Selection.near(state.doc.resolve($cell.before(-1)), -1);\n else newSel = Selection.near(state.doc.resolve($cell.after(-1)), 1);\n return maybeSetSelection(state, dispatch, newSel);\n }\n };\n}\n\nfunction shiftArrow(axis: Axis, dir: Direction): Command {\n return (state, dispatch, view) => {\n if (!view) return false;\n const sel = state.selection;\n let cellSel: CellSelection;\n if (sel instanceof CellSelection) {\n cellSel = sel;\n } else {\n const end = atEndOfCell(view, axis, dir);\n if (end == null) return false;\n cellSel = new CellSelection(state.doc.resolve(end));\n }\n\n const $head = nextCell(cellSel.$headCell, axis, dir);\n if (!$head) return false;\n return maybeSetSelection(\n state,\n dispatch,\n new CellSelection(cellSel.$anchorCell, $head),\n );\n };\n}\n\nexport function handleTripleClick(view: EditorView, pos: number): boolean {\n const doc = view.state.doc,\n $cell = cellAround(doc.resolve(pos));\n if (!$cell) return false;\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true;\n}\n\n/**\n * @public\n */\nexport function handlePaste(\n view: EditorView,\n _: ClipboardEvent,\n slice: Slice,\n): boolean {\n if (!isInTable(view.state)) return false;\n let cells = pastedCells(slice);\n const sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells)\n cells = {\n width: 1,\n height: 1,\n rows: [\n Fragment.from(\n fitSlice(tableNodeTypes(view.state.schema).cell, slice),\n ),\n ],\n };\n const table = sel.$anchorCell.node(-1);\n const start = sel.$anchorCell.start(-1);\n const rect = TableMap.get(table).rectBetween(\n sel.$anchorCell.pos - start,\n sel.$headCell.pos - start,\n );\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true;\n } else if (cells) {\n const $cell = selectionCell(view.state);\n const start = $cell.start(-1);\n insertCells(\n view.state,\n view.dispatch,\n start,\n TableMap.get($cell.node(-1)).findCell($cell.pos - start),\n cells,\n );\n return true;\n } else {\n return false;\n }\n}\n\nexport function handleMouseDown(\n view: EditorView,\n startEvent: MouseEvent,\n): void {\n // Only handle mouse down events for the main button (usually the left button).\n // This ensures that the cell selection won't be triggered when trying to open\n // the context menu.\n if (startEvent.button != 0) return;\n\n if (startEvent.ctrlKey || startEvent.metaKey) return;\n\n const startDOMCell = domInCell(view, startEvent.target as Node);\n let $anchor;\n if (startEvent.shiftKey && view.state.selection instanceof CellSelection) {\n // Adding to an existing cell selection\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (\n startEvent.shiftKey &&\n startDOMCell &&\n ($anchor = cellAround(view.state.selection.$anchor)) != null &&\n cellUnderMouse(view, startEvent)?.pos != $anchor.pos\n ) {\n // Adding to a selection that starts in another cell (causing a\n // cell selection to be created).\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n // Not in a cell, let the default behavior happen.\n return;\n }\n\n // Create and dispatch a cell selection between the given anchor and\n // the position under the mouse.\n function setCellSelection($anchor: ResolvedPos, event: MouseEvent): void {\n let $head = cellUnderMouse(view, event);\n const starting = tableEditingKey.getState(view.state) == null;\n if (!$head || !inSameTable($anchor, $head)) {\n if (starting) $head = $anchor;\n else return;\n }\n const selection = new CellSelection($anchor, $head);\n if (starting || !view.state.selection.eq(selection)) {\n const tr = view.state.tr.setSelection(selection);\n if (starting) tr.setMeta(tableEditingKey, $anchor.pos);\n view.dispatch(tr);\n }\n }\n\n // Stop listening to mouse motion events.\n function stop(): void {\n view.root.removeEventListener('mouseup', stop);\n view.root.removeEventListener('dragstart', stop);\n view.root.removeEventListener('mousemove', move);\n if (tableEditingKey.getState(view.state) != null)\n view.dispatch(view.state.tr.setMeta(tableEditingKey, -1));\n }\n\n function move(_event: Event): void {\n const event = _event as MouseEvent;\n const anchor = tableEditingKey.getState(view.state);\n let $anchor;\n if (anchor != null) {\n // Continuing an existing cross-cell selection\n $anchor = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target as Node) != startDOMCell) {\n // Moving out of the initial cell -- start a new cell selection\n $anchor = cellUnderMouse(view, startEvent);\n if (!$anchor) return stop();\n }\n if ($anchor) setCellSelection($anchor, event);\n }\n\n view.root.addEventListener('mouseup', stop);\n view.root.addEventListener('dragstart', stop);\n view.root.addEventListener('mousemove', move);\n}\n\n// Check whether the cursor is at the end of a cell (so that further\n// motion would move out of the cell)\nfunction atEndOfCell(view: EditorView, axis: Axis, dir: number): null | number {\n if (!(view.state.selection instanceof TextSelection)) return null;\n const { $head } = view.state.selection;\n for (let d = $head.depth - 1; d >= 0; d--) {\n const parent = $head.node(d),\n index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount)) return null;\n if (\n parent.type.spec.tableRole == 'cell' ||\n parent.type.spec.tableRole == 'header_cell'\n ) {\n const cellPos = $head.before(d);\n const dirStr: 'up' | 'down' | 'left' | 'right' =\n axis == 'vert' ? (dir > 0 ? 'down' : 'up') : dir > 0 ? 'right' : 'left';\n return view.endOfTextblock(dirStr) ? cellPos : null;\n }\n }\n return null;\n}\n\nfunction domInCell(view: EditorView, dom: Node | null): Node | null {\n for (; dom && dom != view.dom; dom = dom.parentNode) {\n if (dom.nodeName == 'TD' || dom.nodeName == 'TH') {\n return dom;\n }\n }\n return null;\n}\n\nfunction cellUnderMouse(\n view: EditorView,\n event: MouseEvent,\n): ResolvedPos | null {\n const mousePos = view.posAtCoords({\n left: event.clientX,\n top: event.clientY,\n });\n if (!mousePos) return null;\n // Prefer `inside` position for better accuracy with merged cells (rowspan/colspan),\n // but fall back to `pos` if `inside` doesn't resolve to a valid cell\n let { inside, pos } = mousePos;\n return (\n (inside >= 0 && cellAround(view.state.doc.resolve(inside))) ||\n cellAround(view.state.doc.resolve(pos))\n );\n}\n", "import type { Node } from 'prosemirror-model';\nimport type { NodeView, ViewMutationRecord } from 'prosemirror-view';\n\nimport type { CellAttrs } from './util';\n\n/**\n * @public\n */\nexport class TableView implements NodeView {\n public dom: HTMLDivElement;\n public table: HTMLTableElement;\n public colgroup: HTMLTableColElement;\n public contentDOM: HTMLTableSectionElement;\n\n constructor(\n public node: Node,\n public defaultCellMinWidth: number,\n ) {\n this.dom = document.createElement('div');\n this.dom.className = 'tableWrapper';\n this.table = this.dom.appendChild(document.createElement('table'));\n this.table.style.setProperty(\n '--default-cell-min-width',\n `${defaultCellMinWidth}px`,\n );\n this.colgroup = this.table.appendChild(document.createElement('colgroup'));\n updateColumnsOnResize(node, this.colgroup, this.table, defaultCellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement('tbody'));\n }\n\n update(node: Node): boolean {\n if (node.type != this.node.type) return false;\n this.node = node;\n updateColumnsOnResize(\n node,\n this.colgroup,\n this.table,\n this.defaultCellMinWidth,\n );\n return true;\n }\n\n ignoreMutation(record: ViewMutationRecord): boolean {\n return (\n record.type == 'attributes' &&\n (record.target == this.table || this.colgroup.contains(record.target))\n );\n }\n}\n\n/**\n * @public\n */\nexport function updateColumnsOnResize(\n node: Node,\n colgroup: HTMLTableColElement,\n table: HTMLTableElement,\n defaultCellMinWidth: number,\n overrideCol?: number,\n overrideValue?: number,\n): void {\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild as HTMLElement;\n const row = node.firstChild;\n if (!row) return;\n\n for (let i = 0, col = 0; i < row.childCount; i++) {\n const { colspan, colwidth } = row.child(i).attrs as CellAttrs;\n for (let j = 0; j < colspan; j++, col++) {\n const hasWidth =\n overrideCol == col ? overrideValue : colwidth && colwidth[j];\n const cssWidth = hasWidth ? hasWidth + 'px' : '';\n totalWidth += hasWidth || defaultCellMinWidth;\n if (!hasWidth) fixedWidth = false;\n if (!nextDOM) {\n const col = document.createElement('col');\n col.style.width = cssWidth;\n colgroup.appendChild(col);\n } else {\n if (nextDOM.style.width != cssWidth) {\n nextDOM.style.width = cssWidth;\n }\n nextDOM = nextDOM.nextSibling as HTMLElement;\n }\n }\n }\n\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n nextDOM.parentNode?.removeChild(nextDOM);\n nextDOM = after as HTMLElement;\n }\n\n if (fixedWidth) {\n table.style.width = totalWidth + 'px';\n table.style.minWidth = '';\n } else {\n table.style.width = '';\n table.style.minWidth = totalWidth + 'px';\n }\n}\n", "import type { Attrs, Node as ProsemirrorNode } from 'prosemirror-model';\nimport type { EditorState, Transaction } from 'prosemirror-state';\nimport { Plugin, PluginKey } from 'prosemirror-state';\nimport type { EditorView, NodeView } from 'prosemirror-view';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\n\nimport { tableNodeTypes } from './schema';\nimport { TableMap } from './tablemap';\nimport { TableView, updateColumnsOnResize } from './tableview';\nimport type { CellAttrs } from './util';\nimport { cellAround, pointsAtCell } from './util';\n\n/**\n * @public\n */\nexport const columnResizingPluginKey = new PluginKey<ResizeState>(\n 'tableColumnResizing',\n);\n\n/**\n * @public\n */\nexport type ColumnResizingOptions = {\n handleWidth?: number;\n /**\n * Minimum width of a cell /column. The column cannot be resized smaller than this.\n */\n cellMinWidth?: number;\n /**\n * The default minWidth of a cell / column when it doesn't have an explicit width (i.e.: it has not been resized manually)\n */\n defaultCellMinWidth?: number;\n lastColumnResizable?: boolean;\n /**\n * A custom node view for the rendering table nodes. By default, the plugin\n * uses the {@link TableView} class. You can explicitly set this to `null` to\n * not use a custom node view.\n */\n View?:\n | (new (\n node: ProsemirrorNode,\n cellMinWidth: number,\n view: EditorView,\n ) => NodeView)\n | null;\n};\n\n/**\n * @public\n */\nexport type Dragging = { startX: number; startWidth: number };\n\n/**\n * @public\n */\nexport function columnResizing({\n handleWidth = 5,\n cellMinWidth = 25,\n defaultCellMinWidth = 100,\n View = TableView,\n lastColumnResizable = true,\n}: ColumnResizingOptions = {}): Plugin {\n const plugin = new Plugin<ResizeState>({\n key: columnResizingPluginKey,\n state: {\n init(_, state) {\n const nodeViews = plugin.spec?.props?.nodeViews;\n const tableName = tableNodeTypes(state.schema).table.name;\n if (View && nodeViews) {\n nodeViews[tableName] = (node, view) => {\n return new View(node, defaultCellMinWidth, view);\n };\n }\n return new ResizeState(-1, false);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n },\n },\n props: {\n attributes: (state): Record<string, string> => {\n const pluginState = columnResizingPluginKey.getState(state);\n return pluginState && pluginState.activeHandle > -1\n ? { class: 'resize-cursor' }\n : {};\n },\n\n handleDOMEvents: {\n mousemove: (view, event) => {\n handleMouseMove(view, event, handleWidth, lastColumnResizable);\n },\n mouseleave: (view) => {\n handleMouseLeave(view);\n },\n mousedown: (view, event) => {\n handleMouseDown(view, event, cellMinWidth, defaultCellMinWidth);\n },\n },\n\n decorations: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n if (pluginState && pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n\n nodeViews: {},\n },\n });\n return plugin;\n}\n\n/**\n * @public\n */\nexport class ResizeState {\n constructor(\n public activeHandle: number,\n public dragging: Dragging | false,\n ) {}\n\n apply(tr: Transaction): ResizeState {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const state = this;\n const action = tr.getMeta(columnResizingPluginKey);\n if (action && action.setHandle != null)\n return new ResizeState(action.setHandle, false);\n if (action && action.setDragging !== undefined)\n return new ResizeState(state.activeHandle, action.setDragging);\n if (state.activeHandle > -1 && tr.docChanged) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n return new ResizeState(handle, state.dragging);\n }\n return state;\n }\n}\n\nfunction handleMouseMove(\n view: EditorView,\n event: MouseEvent,\n handleWidth: number,\n lastColumnResizable: boolean,\n): void {\n if (!view.editable) return;\n\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState) return;\n\n if (!pluginState.dragging) {\n const target = domCellAround(event.target as HTMLElement);\n let cell = -1;\n if (target) {\n const { left, right } = target.getBoundingClientRect();\n if (event.clientX - left <= handleWidth)\n cell = edgeCell(view, event, 'left', handleWidth);\n else if (right - event.clientX <= handleWidth)\n cell = edgeCell(view, event, 'right', handleWidth);\n }\n\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $cell.start(-1);\n const col =\n map.colCount($cell.pos - tableStart) +\n $cell.nodeAfter!.attrs.colspan -\n 1;\n\n if (col == map.width - 1) {\n return;\n }\n }\n\n updateHandle(view, cell);\n }\n }\n}\n\nfunction handleMouseLeave(view: EditorView): void {\n if (!view.editable) return;\n\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging)\n updateHandle(view, -1);\n}\n\nfunction handleMouseDown(\n view: EditorView,\n event: MouseEvent,\n cellMinWidth: number,\n defaultCellMinWidth: number,\n): boolean {\n if (!view.editable) return false;\n\n const win = view.dom.ownerDocument.defaultView ?? window;\n\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging)\n return false;\n\n const cell = view.state.doc.nodeAt(pluginState.activeHandle)!;\n const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, {\n setDragging: { startX: event.clientX, startWidth: width },\n }),\n );\n\n function finish(event: MouseEvent) {\n win.removeEventListener('mouseup', finish);\n win.removeEventListener('mousemove', move);\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState?.dragging) {\n updateColumnWidth(\n view,\n pluginState.activeHandle,\n draggedWidth(pluginState.dragging, event, cellMinWidth),\n );\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null }),\n );\n }\n }\n\n function move(event: MouseEvent): void {\n if (!event.which) return finish(event);\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState) return;\n if (pluginState.dragging) {\n const dragged = draggedWidth(pluginState.dragging, event, cellMinWidth);\n displayColumnWidth(\n view,\n pluginState.activeHandle,\n dragged,\n defaultCellMinWidth,\n );\n }\n }\n\n displayColumnWidth(\n view,\n pluginState.activeHandle,\n width,\n defaultCellMinWidth,\n );\n\n win.addEventListener('mouseup', finish);\n win.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\n\nfunction currentColWidth(\n view: EditorView,\n cellPos: number,\n { colspan, colwidth }: Attrs,\n): number {\n const width = colwidth && colwidth[colwidth.length - 1];\n if (width) return width;\n const dom = view.domAtPos(cellPos);\n const node = dom.node.childNodes[dom.offset] as HTMLElement;\n let domWidth = node.offsetWidth,\n parts = colspan;\n if (colwidth)\n for (let i = 0; i < colspan; i++)\n if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n }\n return domWidth / parts;\n}\n\nfunction domCellAround(target: HTMLElement | null): HTMLElement | null {\n while (target && target.nodeName != 'TD' && target.nodeName != 'TH')\n target =\n target.classList && target.classList.contains('ProseMirror')\n ? null\n : (target.parentNode as HTMLElement);\n return target;\n}\n\nfunction edgeCell(\n view: EditorView,\n event: MouseEvent,\n side: 'left' | 'right',\n handleWidth: number,\n): number {\n // posAtCoords returns inconsistent positions when cursor is moving\n // across a collapsed table border. Use an offset to adjust the\n // target viewport coordinates away from the table border.\n const offset = side == 'right' ? -handleWidth : handleWidth;\n const found = view.posAtCoords({\n left: event.clientX + offset,\n top: event.clientY,\n });\n if (!found) return -1;\n const { pos } = found;\n const $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell) return -1;\n if (side == 'right') return $cell.pos;\n const map = TableMap.get($cell.node(-1)),\n start = $cell.start(-1);\n const index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1];\n}\n\nfunction draggedWidth(\n dragging: Dragging,\n event: MouseEvent,\n resizeMinWidth: number,\n): number {\n const offset = event.clientX - dragging.startX;\n return Math.max(resizeMinWidth, dragging.startWidth + offset);\n}\n\nfunction updateHandle(view: EditorView, value: number): void {\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value }),\n );\n}\n\nfunction updateColumnWidth(\n view: EditorView,\n cell: number,\n width: number,\n): void {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1),\n map = TableMap.get(table),\n start = $cell.start(-1);\n const col =\n map.colCount($cell.pos - start) + $cell.nodeAfter!.attrs.colspan - 1;\n const tr = view.state.tr;\n for (let row = 0; row < map.height; row++) {\n const mapIndex = row * map.width + col;\n // Rowspanning cell that has already been handled\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width]) continue;\n const pos = map.map[mapIndex];\n const attrs = table.nodeAt(pos)!.attrs as CellAttrs;\n const index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width) continue;\n const colwidth = attrs.colwidth\n ? attrs.colwidth.slice()\n : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, { ...attrs, colwidth: colwidth });\n }\n if (tr.docChanged) view.dispatch(tr);\n}\n\nfunction displayColumnWidth(\n view: EditorView,\n cell: number,\n width: number,\n defaultCellMinWidth: number,\n): void {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1),\n start = $cell.start(-1);\n const col =\n TableMap.get(table).colCount($cell.pos - start) +\n $cell.nodeAfter!.attrs.colspan -\n 1;\n let dom: Node | null = view.domAtPos($cell.start(-1)).node;\n while (dom && dom.nodeName != 'TABLE') {\n dom = dom.parentNode;\n }\n if (!dom) return;\n updateColumnsOnResize(\n table,\n dom.firstChild as HTMLTableColElement,\n dom as HTMLTableElement,\n defaultCellMinWidth,\n col,\n width,\n );\n}\n\nfunction zeroes(n: number): 0[] {\n return Array(n).fill(0);\n}\n\nexport function handleDecorations(\n state: EditorState,\n cell: number,\n): DecorationSet {\n const decorations = [];\n const $cell = state.doc.resolve(cell);\n const table = $cell.node(-1);\n if (!table) {\n return DecorationSet.empty;\n }\n const map = TableMap.get(table);\n const start = $cell.start(-1);\n const col =\n map.colCount($cell.pos - start) + $cell.nodeAfter!.attrs.colspan - 1;\n for (let row = 0; row < map.height; row++) {\n const index = col + row * map.width;\n // For positions that have either a different cell or the end\n // of the table to their right, and either the top of the table or\n // a different cell above them, add a decoration\n if (\n (col == map.width - 1 || map.map[index] != map.map[index + 1]) &&\n (row == 0 || map.map[index] != map.map[index - map.width])\n ) {\n const cellPos = map.map[index];\n const pos = start + cellPos + table.nodeAt(cellPos)!.nodeSize - 1;\n const dom = document.createElement('div');\n dom.className = 'column-resize-handle';\n if (columnResizingPluginKey.getState(state)?.dragging) {\n decorations.push(\n Decoration.node(\n start + cellPos,\n start + cellPos + table.nodeAt(cellPos)!.nodeSize,\n {\n class: 'column-resize-dragging',\n },\n ),\n );\n }\n\n decorations.push(Decoration.widget(pos, dom));\n }\n }\n return DecorationSet.create(state.doc, decorations);\n}\n", "// This file defines a plugin that handles the drawing of cell\n// selections and the basic user interactions for creating and working\n// with such selections. It also makes sure that, after each\n// transaction, the shapes of tables are normalized to be rectangular\n// and not contain overlapping cells.\n\nimport { Plugin } from 'prosemirror-state';\n\nimport { drawCellSelection, normalizeSelection } from './cellselection';\nimport { fixTables, fixTablesKey } from './fixtables';\nimport {\n handleKeyDown,\n handleMouseDown,\n handlePaste,\n handleTripleClick,\n} from './input';\nimport { tableEditingKey } from './util';\n\nexport { CellBookmark, CellSelection } from './cellselection';\nexport type { CellSelectionJSON } from './cellselection';\nexport {\n columnResizing,\n columnResizingPluginKey,\n ResizeState,\n} from './columnresizing';\nexport type { ColumnResizingOptions, Dragging } from './columnresizing';\nexport * from './commands';\nexport {\n clipCells as __clipCells,\n insertCells as __insertCells,\n pastedCells as __pastedCells,\n} from './copypaste';\nexport type { Area as __Area } from './copypaste';\nexport type { Direction } from './input';\nexport { tableNodes, tableNodeTypes } from './schema';\nexport type {\n CellAttributes,\n getFromDOM,\n setDOMAttr,\n TableNodes,\n TableNodesOptions,\n TableRole,\n} from './schema';\nexport { TableMap } from './tablemap';\nexport type { ColWidths, Problem, Rect } from './tablemap';\nexport { TableView, updateColumnsOnResize } from './tableview';\nexport {\n addColSpan,\n cellAround,\n cellNear,\n colCount,\n columnIsHeader,\n findCell,\n inSameTable,\n isInTable,\n moveCellForward,\n nextCell,\n pointsAtCell,\n removeColSpan,\n selectionCell,\n} from './util';\nexport type { MutableAttrs } from './util';\nexport { findCellPos, findCellRange, findTable } from './utils/query';\nexport type { FindNodeResult } from './utils/query';\nexport { fixTables, fixTablesKey, handlePaste, tableEditingKey };\n\n/**\n * @public\n */\nexport type TableEditingOptions = {\n /**\n * Whether to allow table node selection.\n *\n * By default, any node selection wrapping a table will be converted into a\n * CellSelection wrapping all cells in the table. You can pass `true` to allow\n * the selection to remain a NodeSelection.\n *\n * @default false\n */\n allowTableNodeSelection?: boolean;\n};\n\n/**\n * Creates a [plugin](http://prosemirror.net/docs/ref/#state.Plugin)\n * that, when added to an editor, enables cell-selection, handles\n * cell-based copy/paste, and makes sure tables stay well-formed (each\n * row has the same width, and cells don't overlap).\n *\n * You should probably put this plugin near the end of your array of\n * plugins, since it handles mouse and arrow key events in tables\n * rather broadly, and other plugins, like the gap cursor or the\n * column-width dragging plugin, might want to get a turn first to\n * perform more specific behavior.\n *\n * @public\n */\nexport function tableEditing({\n allowTableNodeSelection = false,\n}: TableEditingOptions = {}): Plugin {\n return new Plugin({\n key: tableEditingKey,\n\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init() {\n return null;\n },\n apply(tr, cur) {\n const set = tr.getMeta(tableEditingKey);\n if (set != null) return set == -1 ? null : set;\n if (cur == null || !tr.docChanged) return cur;\n const { deleted, pos } = tr.mapping.mapResult(cur);\n return deleted ? null : pos;\n },\n },\n\n props: {\n decorations: drawCellSelection,\n\n handleDOMEvents: {\n mousedown: handleMouseDown,\n },\n\n createSelectionBetween(view) {\n return tableEditingKey.getState(view.state) != null\n ? view.state.selection\n : null;\n },\n\n handleTripleClick,\n\n handleKeyDown,\n\n handlePaste,\n },\n\n appendTransaction(_, oldState, state) {\n return normalizeSelection(\n state,\n fixTables(state, oldState),\n allowTableNodeSelection,\n );\n },\n });\n}\n", "// src/index.ts\nimport {\n Plugin,\n PluginKey\n} from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\n// src/browser.ts\nvar nav = typeof navigator != \"undefined\" ? navigator : null;\nvar agent = nav && nav.userAgent || \"\";\nvar ie_edge = /Edge\\/(\\d+)/.exec(agent);\nvar ie_upto10 = /MSIE \\d/.exec(agent);\nvar ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nvar ie = !!(ie_upto10 || ie_11up || ie_edge);\nvar safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n\n// src/index.ts\nvar key = new PluginKey(\"safari-ime-span\");\nvar isComposing = false;\nvar spec = {\n key,\n props: {\n decorations: createDecorations,\n handleDOMEvents: {\n compositionstart: () => {\n isComposing = true;\n },\n compositionend: () => {\n isComposing = false;\n }\n }\n }\n};\nfunction createDecorations(state) {\n const { $from, $to, to } = state.selection;\n if (isComposing && $from.sameParent($to)) {\n const deco = Decoration.widget(to, createSpan, {\n ignoreSelection: true,\n key: \"safari-ime-span\"\n });\n return DecorationSet.create(state.doc, [deco]);\n }\n}\nfunction createSpan(view) {\n const span = view.dom.ownerDocument.createElement(\"span\");\n span.className = \"ProseMirror-safari-ime-span\";\n return span;\n}\nvar imeSpan = new Plugin(safari ? spec : { key });\nexport {\n imeSpan\n};\n", "/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n * Value to search in.\n * @param {string} character\n * Character (or substring) to look for.\n * @return {number}\n * Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n const source = String(value)\n\n if (typeof character !== 'string') {\n throw new TypeError('Expected character')\n }\n\n let count = 0\n let index = source.indexOf(character)\n\n while (index !== -1) {\n count++\n index = source.indexOf(character, index + character.length)\n }\n\n return count\n}\n", "export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n", "/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n * Info on the match.\n * @property {number} index\n * The index of the search at which the result was found.\n * @property {string} input\n * A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n * All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n * Pattern to find.\n *\n * Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n * Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n * Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n * Thing to replace with.\n *\n * @callback ReplaceFunction\n * Callback called when a search matches.\n * @param {...any} parameters\n * The parameters are the result of corresponding search expression:\n *\n * * `value` (`string`) \u2014 whole match\n * * `...capture` (`Array<string>`) \u2014 matches from regex capture groups\n * * `match` (`RegExpMatchObject`) \u2014 info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n * Thing to replace with.\n *\n * * when `null`, `undefined`, `''`, remove the match\n * * \u2026or when `false`, do not replace at all\n * * \u2026or when `string`, replace with a text node of that value\n * * \u2026or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n * Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n * All find and replaced.\n *\n * @typedef Options\n * Configuration.\n * @property {Test | null | undefined} [ignore]\n * Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n * Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n * Patterns to find.\n * @param {Options | null | undefined} [options]\n * Configuration (when `find` is not `Find`).\n * @returns {undefined}\n * Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n const settings = options || {}\n const ignored = convert(settings.ignore || [])\n const pairs = toPairs(list)\n let pairIndex = -1\n\n while (++pairIndex < pairs.length) {\n visitParents(tree, 'text', visitor)\n }\n\n /** @type {BuildVisitor<Root, 'text'>} */\n function visitor(node, parents) {\n let index = -1\n /** @type {Parents | undefined} */\n let grandparent\n\n while (++index < parents.length) {\n const parent = parents[index]\n /** @type {Array<Nodes> | undefined} */\n const siblings = grandparent ? grandparent.children : undefined\n\n if (\n ignored(\n parent,\n siblings ? siblings.indexOf(parent) : undefined,\n grandparent\n )\n ) {\n return\n }\n\n grandparent = parent\n }\n\n if (grandparent) {\n return handler(node, parents)\n }\n }\n\n /**\n * Handle a text node which is not in an ignored parent.\n *\n * @param {Text} node\n * Text node.\n * @param {Array<Parents>} parents\n * Parents.\n * @returns {VisitorResult}\n * Result.\n */\n function handler(node, parents) {\n const parent = parents[parents.length - 1]\n const find = pairs[pairIndex][0]\n const replace = pairs[pairIndex][1]\n let start = 0\n /** @type {Array<Nodes>} */\n const siblings = parent.children\n const index = siblings.indexOf(node)\n let change = false\n /** @type {Array<PhrasingContent>} */\n let nodes = []\n\n find.lastIndex = 0\n\n let match = find.exec(node.value)\n\n while (match) {\n const position = match.index\n /** @type {RegExpMatchObject} */\n const matchObject = {\n index: match.index,\n input: match.input,\n stack: [...parents, node]\n }\n let value = replace(...match, matchObject)\n\n if (typeof value === 'string') {\n value = value.length > 0 ? {type: 'text', value} : undefined\n }\n\n // It wasn\u2019t a match after all.\n if (value === false) {\n // False acts as if there was no match.\n // So we need to reset `lastIndex`, which currently being at the end of\n // the current match, to the beginning.\n find.lastIndex = position + 1\n } else {\n if (start !== position) {\n nodes.push({\n type: 'text',\n value: node.value.slice(start, position)\n })\n }\n\n if (Array.isArray(value)) {\n nodes.push(...value)\n } else if (value) {\n nodes.push(value)\n }\n\n start = position + match[0].length\n change = true\n }\n\n if (!find.global) {\n break\n }\n\n match = find.exec(node.value)\n }\n\n if (change) {\n if (start < node.value.length) {\n nodes.push({type: 'text', value: node.value.slice(start)})\n }\n\n parent.children.splice(index, 1, ...nodes)\n } else {\n nodes = [node]\n }\n\n return index + nodes.length\n }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n * Schema.\n * @returns {Pairs}\n * Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n /** @type {Pairs} */\n const result = []\n\n if (!Array.isArray(tupleOrList)) {\n throw new TypeError('Expected find and replace tuple or list of tuples')\n }\n\n /** @type {FindAndReplaceList} */\n // @ts-expect-error: correct.\n const list =\n !tupleOrList[0] || Array.isArray(tupleOrList[0])\n ? tupleOrList\n : [tupleOrList]\n\n let index = -1\n\n while (++index < list.length) {\n const tuple = list[index]\n result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n }\n\n return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n * Find.\n * @returns {RegExp}\n * Expression.\n */\nfunction toExpression(find) {\n return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n * Replace.\n * @returns {ReplaceFunction}\n * Function.\n */\nfunction toFunction(replace) {\n return typeof replace === 'function'\n ? replace\n : function () {\n return replace\n }\n}\n", "/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n return {\n transforms: [transformGfmAutolinkLiterals],\n enter: {\n literalAutolink: enterLiteralAutolink,\n literalAutolinkEmail: enterLiteralAutolinkValue,\n literalAutolinkHttp: enterLiteralAutolinkValue,\n literalAutolinkWww: enterLiteralAutolinkValue\n },\n exit: {\n literalAutolink: exitLiteralAutolink,\n literalAutolinkEmail: exitLiteralAutolinkEmail,\n literalAutolinkHttp: exitLiteralAutolinkHttp,\n literalAutolinkWww: exitLiteralAutolinkWww\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n return {\n unsafe: [\n {\n character: '@',\n before: '[+\\\\-.\\\\w]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: '.',\n before: '[Ww]',\n after: '[\\\\-.\\\\w]',\n inConstruct,\n notInConstruct\n },\n {\n character: ':',\n before: '[ps]',\n after: '\\\\/',\n inConstruct,\n notInConstruct\n }\n ]\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n this.config.exit.data.call(this, token)\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'link')\n node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n findAndReplace(\n tree,\n [\n [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n ],\n {ignore: ['link', 'linkReference']}\n )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n let prefix = ''\n\n // Not an expected previous character.\n if (!previous(match)) {\n return false\n }\n\n // Treat `www` as part of the domain.\n if (/^w/i.test(protocol)) {\n domain = protocol + domain\n protocol = ''\n prefix = 'http://'\n }\n\n if (!isCorrectDomain(domain)) {\n return false\n }\n\n const parts = splitUrl(domain + path)\n\n if (!parts[0]) return false\n\n /** @type {Link} */\n const result = {\n type: 'link',\n title: null,\n url: prefix + protocol + parts[0],\n children: [{type: 'text', value: protocol + parts[0]}]\n }\n\n if (parts[1]) {\n return [result, {type: 'text', value: parts[1]}]\n }\n\n return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n if (\n // Not an expected previous character.\n !previous(match, true) ||\n // Label ends in not allowed character.\n /[-\\d_]$/.test(label)\n ) {\n return false\n }\n\n return {\n type: 'link',\n title: null,\n url: 'mailto:' + atext + '@' + label,\n children: [{type: 'text', value: atext + '@' + label}]\n }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n const parts = domain.split('.')\n\n if (\n parts.length < 2 ||\n (parts[parts.length - 1] &&\n (/_/.test(parts[parts.length - 1]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n (parts[parts.length - 2] &&\n (/_/.test(parts[parts.length - 2]) ||\n !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n if (!trailExec) {\n return [url, undefined]\n }\n\n url = url.slice(0, trailExec.index)\n\n let trail = trailExec[0]\n let closingParenIndex = trail.indexOf(')')\n const openingParens = ccount(url, '(')\n let closingParens = ccount(url, ')')\n\n while (closingParenIndex !== -1 && openingParens > closingParens) {\n url += trail.slice(0, closingParenIndex + 1)\n trail = trail.slice(closingParenIndex + 1)\n closingParenIndex = trail.indexOf(')')\n closingParens++\n }\n\n return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n const code = match.input.charCodeAt(match.index - 1)\n\n return (\n (match.index === 0 ||\n unicodeWhitespace(code) ||\n unicodePunctuation(code)) &&\n // If it\u2019s an email, the previous character should not be a slash.\n (!email || code !== 47)\n )\n}\n", "/**\n * @import {\n * CompileContext,\n * Extension as FromMarkdownExtension,\n * Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {ToMarkdownOptions} from 'mdast-util-gfm-footnote'\n * @import {\n * Handle as ToMarkdownHandle,\n * Map,\n * Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n * @import {FootnoteDefinition, FootnoteReference} from 'mdast'\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n this.enter(\n {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n token\n )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteReference')\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n const label = this.resume()\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'footnoteDefinition')\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n this.exit(token)\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteReference')\n const subexit = state.enter('reference')\n value += tracker.move(\n state.safe(state.associationId(node), {after: ']', before: value})\n )\n subexit()\n exit()\n value += tracker.move(']')\n return value\n}\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n return {\n enter: {\n gfmFootnoteCallString: enterFootnoteCallString,\n gfmFootnoteCall: enterFootnoteCall,\n gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n gfmFootnoteDefinition: enterFootnoteDefinition\n },\n exit: {\n gfmFootnoteCallString: exitFootnoteCallString,\n gfmFootnoteCall: exitFootnoteCall,\n gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n gfmFootnoteDefinition: exitFootnoteDefinition\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n * Configuration (optional).\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown(options) {\n // To do: next major: change default.\n let firstLineBlank = false\n\n if (options && options.firstLineBlank) {\n firstLineBlank = true\n }\n\n return {\n handlers: {footnoteDefinition, footnoteReference},\n // This is on by default already.\n unsafe: [{character: '[', inConstruct: ['label', 'phrasing', 'reference']}]\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {FootnoteDefinition} node\n */\n function footnoteDefinition(node, _, state, info) {\n const tracker = state.createTracker(info)\n let value = tracker.move('[^')\n const exit = state.enter('footnoteDefinition')\n const subexit = state.enter('label')\n value += tracker.move(\n state.safe(state.associationId(node), {before: value, after: ']'})\n )\n subexit()\n\n value += tracker.move(']:')\n\n if (node.children && node.children.length > 0) {\n tracker.shift(4)\n\n value += tracker.move(\n (firstLineBlank ? '\\n' : ' ') +\n state.indentLines(\n state.containerFlow(node, tracker.current()),\n firstLineBlank ? mapAll : mapExceptFirst\n )\n )\n }\n\n exit()\n\n return value\n }\n}\n\n/** @type {Map} */\nfunction mapExceptFirst(line, index, blank) {\n return index === 0 ? line : mapAll(line, index, blank)\n}\n\n/** @type {Map} */\nfunction mapAll(line, index, blank) {\n return (blank ? '' : ' ') + line\n}\n", "/**\n * @typedef {import('mdast').Delete} Delete\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').ConstructName} ConstructName\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n 'autolink',\n 'destinationLiteral',\n 'destinationRaw',\n 'reference',\n 'titleQuote',\n 'titleApostrophe'\n]\n\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n return {\n canContainEols: ['delete'],\n enter: {strikethrough: enterStrikethrough},\n exit: {strikethrough: exitStrikethrough}\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n return {\n unsafe: [\n {\n character: '~',\n inConstruct: 'phrasing',\n notInConstruct: constructsWithoutStrikethrough\n }\n ],\n handlers: {delete: handleDelete}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n this.enter({type: 'delete', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n */\nfunction handleDelete(node, _, state, info) {\n const tracker = state.createTracker(info)\n const exit = state.enter('strikethrough')\n let value = tracker.move('~~')\n value += state.containerPhrasing(node, {\n ...tracker.current(),\n before: value,\n after: '~'\n })\n value += tracker.move('~~')\n exit()\n return value\n}\n\n/** @type {ToMarkdownHandle} */\nfunction peekDelete() {\n return '~'\n}\n", "// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n * Configuration.\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n * Whether to align the delimiters (default: `true`);\n * they are aligned by default:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * Pass `false` to make them staggered:\n *\n * ```markdown\n * | Alpha | B |\n * | - | - |\n * | C | Delta |\n * ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n * How to align columns (default: `''`);\n * one style for all columns or styles for their respective columns;\n * each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n * other values are treated as `''`, which doesn\u2019t place the colon in the\n * alignment row but does align left;\n * *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n * Whether to end each row with the delimiter (default: `true`).\n *\n * > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n * > that aren\u2019t understandable to some markdown parsers.\n *\n * When `true`, there are ending delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no ending delimiters:\n *\n * ```markdown\n * | Alpha | B\n * | ----- | -----\n * | C | Delta\n * ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n * Whether to begin each row with the delimiter (default: `true`).\n *\n * > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n * > that aren\u2019t understandable to some markdown parsers.\n *\n * When `true`, there are starting delimiters:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there are no starting delimiters:\n *\n * ```markdown\n * Alpha | B |\n * ----- | ----- |\n * C | Delta |\n * ```\n * @property {boolean | null | undefined} [padding=true]\n * Whether to add a space of padding between delimiters and cells\n * (default: `true`).\n *\n * When `true`, there is padding:\n *\n * ```markdown\n * | Alpha | B |\n * | ----- | ----- |\n * | C | Delta |\n * ```\n *\n * When `false`, there is no padding:\n *\n * ```markdown\n * |Alpha|B |\n * |-----|-----|\n * |C |Delta|\n * ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n * Function to detect the length of table cell content (optional);\n * this is used when aligning the delimiters (`|`) between table cells;\n * full-width characters and emoji mess up delimiter alignment when viewing\n * the markdown source;\n * to fix this, you can pass this function,\n * which receives the cell content and returns its \u201Cvisible\u201D size;\n * note that what is and isn\u2019t visible depends on where the text is displayed.\n *\n * Without such a function, the following:\n *\n * ```js\n * markdownTable([\n * ['Alpha', 'Bravo'],\n * ['\u4E2D\u6587', 'Charlie'],\n * ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n * ])\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | - | - |\n * | \u4E2D\u6587 | Charlie |\n * | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n * ```\n *\n * With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n * ```js\n * import stringWidth from 'string-width'\n *\n * markdownTable(\n * [\n * ['Alpha', 'Bravo'],\n * ['\u4E2D\u6587', 'Charlie'],\n * ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n * ],\n * {stringLength: stringWidth}\n * )\n * ```\n *\n * Yields:\n *\n * ```markdown\n * | Alpha | Bravo |\n * | ----- | ------- |\n * | \u4E2D\u6587 | Charlie |\n * | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n * ```\n */\n\n/**\n * @param {string} value\n * Cell value.\n * @returns {number}\n * Cell size.\n */\nfunction defaultStringLength(value) {\n return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n * Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Result.\n */\nexport function markdownTable(table, options) {\n const settings = options || {}\n // To do: next major: change to spread.\n const align = (settings.align || []).concat()\n const stringLength = settings.stringLength || defaultStringLength\n /** @type {Array<number>} Character codes as symbols for alignment per column. */\n const alignments = []\n /** @type {Array<Array<string>>} Cells per row. */\n const cellMatrix = []\n /** @type {Array<Array<number>>} Sizes of each cell per row. */\n const sizeMatrix = []\n /** @type {Array<number>} */\n const longestCellByColumn = []\n let mostCellsPerRow = 0\n let rowIndex = -1\n\n // This is a superfluous loop if we don\u2019t align delimiters, but otherwise we\u2019d\n // do superfluous work when aligning, so optimize for aligning.\n while (++rowIndex < table.length) {\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n let columnIndex = -1\n\n if (table[rowIndex].length > mostCellsPerRow) {\n mostCellsPerRow = table[rowIndex].length\n }\n\n while (++columnIndex < table[rowIndex].length) {\n const cell = serialize(table[rowIndex][columnIndex])\n\n if (settings.alignDelimiters !== false) {\n const size = stringLength(cell)\n sizes[columnIndex] = size\n\n if (\n longestCellByColumn[columnIndex] === undefined ||\n size > longestCellByColumn[columnIndex]\n ) {\n longestCellByColumn[columnIndex] = size\n }\n }\n\n row.push(cell)\n }\n\n cellMatrix[rowIndex] = row\n sizeMatrix[rowIndex] = sizes\n }\n\n // Figure out which alignments to use.\n let columnIndex = -1\n\n if (typeof align === 'object' && 'length' in align) {\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = toAlignment(align[columnIndex])\n }\n } else {\n const code = toAlignment(align)\n\n while (++columnIndex < mostCellsPerRow) {\n alignments[columnIndex] = code\n }\n }\n\n // Inject the alignment row.\n columnIndex = -1\n /** @type {Array<string>} */\n const row = []\n /** @type {Array<number>} */\n const sizes = []\n\n while (++columnIndex < mostCellsPerRow) {\n const code = alignments[columnIndex]\n let before = ''\n let after = ''\n\n if (code === 99 /* `c` */) {\n before = ':'\n after = ':'\n } else if (code === 108 /* `l` */) {\n before = ':'\n } else if (code === 114 /* `r` */) {\n after = ':'\n }\n\n // There *must* be at least one hyphen-minus in each alignment cell.\n let size =\n settings.alignDelimiters === false\n ? 1\n : Math.max(\n 1,\n longestCellByColumn[columnIndex] - before.length - after.length\n )\n\n const cell = before + '-'.repeat(size) + after\n\n if (settings.alignDelimiters !== false) {\n size = before.length + size + after.length\n\n if (size > longestCellByColumn[columnIndex]) {\n longestCellByColumn[columnIndex] = size\n }\n\n sizes[columnIndex] = size\n }\n\n row[columnIndex] = cell\n }\n\n // Inject the alignment row.\n cellMatrix.splice(1, 0, row)\n sizeMatrix.splice(1, 0, sizes)\n\n rowIndex = -1\n /** @type {Array<string>} */\n const lines = []\n\n while (++rowIndex < cellMatrix.length) {\n const row = cellMatrix[rowIndex]\n const sizes = sizeMatrix[rowIndex]\n columnIndex = -1\n /** @type {Array<string>} */\n const line = []\n\n while (++columnIndex < mostCellsPerRow) {\n const cell = row[columnIndex] || ''\n let before = ''\n let after = ''\n\n if (settings.alignDelimiters !== false) {\n const size =\n longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n const code = alignments[columnIndex]\n\n if (code === 114 /* `r` */) {\n before = ' '.repeat(size)\n } else if (code === 99 /* `c` */) {\n if (size % 2) {\n before = ' '.repeat(size / 2 + 0.5)\n after = ' '.repeat(size / 2 - 0.5)\n } else {\n before = ' '.repeat(size / 2)\n after = before\n }\n } else {\n after = ' '.repeat(size)\n }\n }\n\n if (settings.delimiterStart !== false && !columnIndex) {\n line.push('|')\n }\n\n if (\n settings.padding !== false &&\n // Don\u2019t add the opening space if we\u2019re not aligning and the cell is\n // empty: there will be a closing space.\n !(settings.alignDelimiters === false && cell === '') &&\n (settings.delimiterStart !== false || columnIndex)\n ) {\n line.push(' ')\n }\n\n if (settings.alignDelimiters !== false) {\n line.push(before)\n }\n\n line.push(cell)\n\n if (settings.alignDelimiters !== false) {\n line.push(after)\n }\n\n if (settings.padding !== false) {\n line.push(' ')\n }\n\n if (\n settings.delimiterEnd !== false ||\n columnIndex !== mostCellsPerRow - 1\n ) {\n line.push('|')\n }\n }\n\n lines.push(\n settings.delimiterEnd === false\n ? line.join('').replace(/ +$/, '')\n : line.join('')\n )\n }\n\n return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n * Value to serialize.\n * @returns {string}\n * Result.\n */\nfunction serialize(value) {\n return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n * Value.\n * @returns {number}\n * Alignment.\n */\nfunction toAlignment(value) {\n const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n return code === 67 /* `C` */ || code === 99 /* `c` */\n ? 99 /* `c` */\n : code === 76 /* `L` */ || code === 108 /* `l` */\n ? 108 /* `l` */\n : code === 82 /* `R` */ || code === 114 /* `r` */\n ? 114 /* `r` */\n : 0\n}\n", "/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n * Whether to add a space of padding between delimiters and cells (default:\n * `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n * Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n * Function to detect the length of table cell content, used when aligning\n * the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n return {\n enter: {\n table: enterTable,\n tableData: enterCell,\n tableHeader: enterCell,\n tableRow: enterRow\n },\n exit: {\n codeText: exitCodeText,\n table: exitTable,\n tableData: exit,\n tableHeader: exit,\n tableRow: exit\n }\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n const align = token._align\n assert(align, 'expected `_align` on table')\n this.enter(\n {\n type: 'table',\n align: align.map(function (d) {\n return d === 'none' ? null : d\n }),\n children: []\n },\n token\n )\n this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n this.exit(token)\n this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n let value = this.resume()\n\n if (this.data.inTable) {\n value = value.replace(/\\\\([\\\\|])/g, replace)\n }\n\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'inlineCode')\n node.value = value\n this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n // Pipes work, backslashes don\u2019t (but can\u2019t escape pipes).\n return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n const settings = options || {}\n const padding = settings.tableCellPadding\n const alignDelimiters = settings.tablePipeAlign\n const stringLength = settings.stringLength\n const around = padding ? ' ' : '|'\n\n return {\n unsafe: [\n {character: '\\r', inConstruct: 'tableCell'},\n {character: '\\n', inConstruct: 'tableCell'},\n // A pipe, when followed by a tab or space (padding), or a dash or colon\n // (unpadded delimiter row), could result in a table.\n {atBreak: true, character: '|', after: '[\\t :-]'},\n // A pipe in a cell must be encoded.\n {character: '|', inConstruct: 'tableCell'},\n // A colon must be followed by a dash, in which case it could start a\n // delimiter row.\n {atBreak: true, character: ':', after: '-'},\n // A delimiter row can also start with a dash, when followed by more\n // dashes, a colon, or a pipe.\n // This is a stricter version than the built in check for lists, thematic\n // breaks, and setex heading underlines though:\n // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n {atBreak: true, character: '-', after: '[:|-]'}\n ],\n handlers: {\n inlineCode: inlineCodeWithTable,\n table: handleTable,\n tableCell: handleTableCell,\n tableRow: handleTableRow\n }\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {Table} node\n */\n function handleTable(node, _, state, info) {\n return serializeData(handleTableAsData(node, state, info), node.align)\n }\n\n /**\n * This function isn\u2019t really used normally, because we handle rows at the\n * table level.\n * But, if someone passes in a table row, this ensures we make somewhat sense.\n *\n * @type {ToMarkdownHandle}\n * @param {TableRow} node\n */\n function handleTableRow(node, _, state, info) {\n const row = handleTableRowAsData(node, state, info)\n const value = serializeData([row])\n // `markdown-table` will always add an align row\n return value.slice(0, value.indexOf('\\n'))\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {TableCell} node\n */\n function handleTableCell(node, _, state, info) {\n const exit = state.enter('tableCell')\n const subexit = state.enter('phrasing')\n const value = state.containerPhrasing(node, {\n ...info,\n before: around,\n after: around\n })\n subexit()\n exit()\n return value\n }\n\n /**\n * @param {Array<Array<string>>} matrix\n * @param {Array<string | null | undefined> | null | undefined} [align]\n */\n function serializeData(matrix, align) {\n return markdownTable(matrix, {\n align,\n // @ts-expect-error: `markdown-table` types should support `null`.\n alignDelimiters,\n // @ts-expect-error: `markdown-table` types should support `null`.\n padding,\n // @ts-expect-error: `markdown-table` types should support `null`.\n stringLength\n })\n }\n\n /**\n * @param {Table} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array<Array<string>>} */\n const result = []\n const subexit = state.enter('table')\n\n while (++index < children.length) {\n result[index] = handleTableRowAsData(children[index], state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @param {TableRow} node\n * @param {State} state\n * @param {Info} info\n */\n function handleTableRowAsData(node, state, info) {\n const children = node.children\n let index = -1\n /** @type {Array<string>} */\n const result = []\n const subexit = state.enter('tableRow')\n\n while (++index < children.length) {\n // Note: the positional info as used here is incorrect.\n // Making it correct would be impossible due to aligning cells?\n // And it would need copy/pasting `markdown-table` into this project.\n result[index] = handleTableCell(children[index], node, state, info)\n }\n\n subexit()\n\n return result\n }\n\n /**\n * @type {ToMarkdownHandle}\n * @param {InlineCode} node\n */\n function inlineCodeWithTable(node, parent, state) {\n let value = defaultHandlers.inlineCode(node, parent, state)\n\n if (state.stack.includes('tableCell')) {\n value = value.replace(/\\|/g, '\\\\$&')\n }\n\n return value\n }\n}\n", "/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n * Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n return {\n exit: {\n taskListCheckValueChecked: exitCheck,\n taskListCheckValueUnchecked: exitCheck,\n paragraph: exitParagraphWithTaskListItem\n }\n }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n return {\n unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n handlers: {listItem: listItemWithTaskListItem}\n }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n // We\u2019re always in a paragraph, in a list item.\n const node = this.stack[this.stack.length - 2]\n assert(node.type === 'listItem')\n node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n const parent = this.stack[this.stack.length - 2]\n\n if (\n parent &&\n parent.type === 'listItem' &&\n typeof parent.checked === 'boolean'\n ) {\n const node = this.stack[this.stack.length - 1]\n assert(node.type === 'paragraph')\n const head = node.children[0]\n\n if (head && head.type === 'text') {\n const siblings = parent.children\n let index = -1\n /** @type {Paragraph | undefined} */\n let firstParaghraph\n\n while (++index < siblings.length) {\n const sibling = siblings[index]\n if (sibling.type === 'paragraph') {\n firstParaghraph = sibling\n break\n }\n }\n\n if (firstParaghraph === node) {\n // Must start with a space or a tab.\n head.value = head.value.slice(1)\n\n if (head.value.length === 0) {\n node.children.shift()\n } else if (\n node.position &&\n head.position &&\n typeof head.position.start.offset === 'number'\n ) {\n head.position.start.column++\n head.position.start.offset++\n node.position.start = Object.assign({}, head.position.start)\n }\n }\n }\n }\n\n this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n const head = node.children[0]\n const checkable =\n typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n const tracker = state.createTracker(info)\n\n if (checkable) {\n tracker.move(checkbox)\n }\n\n let value = defaultHandlers.listItem(node, parent, state, {\n ...info,\n ...tracker.current()\n })\n\n if (checkable) {\n value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n }\n\n return value\n\n /**\n * @param {string} $0\n * @returns {string}\n */\n function check($0) {\n return $0 + checkbox\n }\n}\n", "/**\n * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'\n * @import {Options} from 'mdast-util-gfm'\n * @import {Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n */\n\nimport {\n gfmAutolinkLiteralFromMarkdown,\n gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n gfmFootnoteFromMarkdown,\n gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n gfmStrikethroughFromMarkdown,\n gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n gfmTaskListItemFromMarkdown,\n gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n * Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n return [\n gfmAutolinkLiteralFromMarkdown(),\n gfmFootnoteFromMarkdown(),\n gfmStrikethroughFromMarkdown(),\n gfmTableFromMarkdown(),\n gfmTaskListItemFromMarkdown()\n ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {ToMarkdownExtension}\n * Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n * footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n return {\n extensions: [\n gfmAutolinkLiteralToMarkdown(),\n gfmFootnoteToMarkdown(options),\n gfmStrikethroughToMarkdown(),\n gfmTableToMarkdown(options),\n gfmTaskListItemToMarkdown()\n ]\n }\n}\n", "/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n tokenize: tokenizeWwwPrefix,\n partial: true\n};\nconst domain = {\n tokenize: tokenizeDomain,\n partial: true\n};\nconst path = {\n tokenize: tokenizePath,\n partial: true\n};\nconst trail = {\n tokenize: tokenizeTrail,\n partial: true\n};\nconst emailDomainDotTrail = {\n tokenize: tokenizeEmailDomainDotTrail,\n partial: true\n};\nconst wwwAutolink = {\n name: 'wwwAutolink',\n tokenize: tokenizeWwwAutolink,\n previous: previousWww\n};\nconst protocolAutolink = {\n name: 'protocolAutolink',\n tokenize: tokenizeProtocolAutolink,\n previous: previousProtocol\n};\nconst emailAutolink = {\n name: 'emailAutolink',\n tokenize: tokenizeEmailAutolink,\n previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n return {\n text\n };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n text[code] = emailAutolink;\n code++;\n if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That\u2019s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n const self = this;\n /** @type {boolean | undefined} */\n let dot;\n /** @type {boolean} */\n let data;\n return start;\n\n /**\n * Start of email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code);\n }\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkEmail');\n return atext(code);\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function atext(code) {\n if (gfmAtext(code)) {\n effects.consume(code);\n return atext;\n }\n if (code === 64) {\n effects.consume(code);\n return emailDomain;\n }\n return nok(code);\n }\n\n /**\n * In email domain.\n *\n * The reference code is a bit overly complex as it handles the `@`, of which\n * there may be just one.\n * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomain(code) {\n // Dot followed by alphanumerical (not `-` or `_`).\n if (code === 46) {\n return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n }\n\n // Alphanumerical, `-`, and `_`.\n if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n data = true;\n effects.consume(code);\n return emailDomain;\n }\n\n // To do: `/` if xmpp.\n\n // Note: normally we\u2019d truncate trailing punctuation from the link.\n // However, email autolink literals cannot contain any of those markers,\n // except for `.`, but that can only occur if it isn\u2019t trailing.\n // So we can ignore truncating!\n return emailDomainAfter(code);\n }\n\n /**\n * In email domain, on dot that is not a trail.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainDot(code) {\n effects.consume(code);\n dot = true;\n return emailDomain;\n }\n\n /**\n * After email domain.\n *\n * ```markdown\n * > | a contact@example.org b\n * ^\n * ```\n *\n * @type {State}\n */\n function emailDomainAfter(code) {\n // Domain must not be empty, must include a dot, and must end in alphabetical.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n if (data && dot && asciiAlpha(self.previous)) {\n effects.exit('literalAutolinkEmail');\n effects.exit('literalAutolink');\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n const self = this;\n return wwwStart;\n\n /**\n * Start of www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwStart(code) {\n if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n return nok(code);\n }\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkWww');\n // Note: we *check*, so we can discard the `www.` we parsed.\n // If it worked, we consider it as a part of the domain.\n return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n }\n\n /**\n * After a www autolink literal.\n *\n * ```markdown\n * > | www.example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwAfter(code) {\n effects.exit('literalAutolinkWww');\n effects.exit('literalAutolink');\n return ok(code);\n }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n const self = this;\n let buffer = '';\n let seen = false;\n return protocolStart;\n\n /**\n * Start of protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolStart(code) {\n if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n effects.enter('literalAutolink');\n effects.enter('literalAutolinkHttp');\n buffer += String.fromCodePoint(code);\n effects.consume(code);\n return protocolPrefixInside;\n }\n return nok(code);\n }\n\n /**\n * In protocol.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^^^^\n * ```\n *\n * @type {State}\n */\n function protocolPrefixInside(code) {\n // `5` is size of `https`\n if (asciiAlpha(code) && buffer.length < 5) {\n // @ts-expect-error: definitely number.\n buffer += String.fromCodePoint(code);\n effects.consume(code);\n return protocolPrefixInside;\n }\n if (code === 58) {\n const protocol = buffer.toLowerCase();\n if (protocol === 'http' || protocol === 'https') {\n effects.consume(code);\n return protocolSlashesInside;\n }\n }\n return nok(code);\n }\n\n /**\n * In slashes.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^^\n * ```\n *\n * @type {State}\n */\n function protocolSlashesInside(code) {\n if (code === 47) {\n effects.consume(code);\n if (seen) {\n return afterProtocol;\n }\n seen = true;\n return protocolSlashesInside;\n }\n return nok(code);\n }\n\n /**\n * After protocol, before domain.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function afterProtocol(code) {\n // To do: this is different from `markdown-rs`:\n // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n }\n\n /**\n * After a protocol autolink literal.\n *\n * ```markdown\n * > | https://example.com/a?b#c\n * ^\n * ```\n *\n * @type {State}\n */\n function protocolAfter(code) {\n effects.exit('literalAutolinkHttp');\n effects.exit('literalAutolink');\n return ok(code);\n }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n * ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n let size = 0;\n return wwwPrefixInside;\n\n /**\n * In www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixInside(code) {\n if ((code === 87 || code === 119) && size < 3) {\n size++;\n effects.consume(code);\n return wwwPrefixInside;\n }\n if (code === 46 && size === 3) {\n effects.consume(code);\n return wwwPrefixAfter;\n }\n return nok(code);\n }\n\n /**\n * After www prefix.\n *\n * ```markdown\n * > | www.example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function wwwPrefixAfter(code) {\n // If there is *anything*, we can link.\n return code === null ? nok(code) : ok(code);\n }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n * ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n /** @type {boolean | undefined} */\n let underscoreInLastSegment;\n /** @type {boolean | undefined} */\n let underscoreInLastLastSegment;\n /** @type {boolean | undefined} */\n let seen;\n return domainInside;\n\n /**\n * In domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^^^^^^^^^^\n * ```\n *\n * @type {State}\n */\n function domainInside(code) {\n // Check whether this marker, which is a trailing punctuation\n // marker, optionally followed by more trailing markers, and then\n // followed by an end.\n if (code === 46 || code === 95) {\n return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n }\n\n // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n // occur, which sounds like ASCII only, but they also support `www.\u9EDE\u770B.com`,\n // so that\u2019s Unicode.\n // Instead of some new production for Unicode alphanumerics, markdown\n // already has that for Unicode punctuation and whitespace, so use those.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n return domainAfter(code);\n }\n seen = true;\n effects.consume(code);\n return domainInside;\n }\n\n /**\n * In domain, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com\n * ^\n * ```\n *\n * @type {State}\n */\n function domainAtPunctuation(code) {\n // There is an underscore in the last segment of the domain\n if (code === 95) {\n underscoreInLastSegment = true;\n }\n // Otherwise, it\u2019s a `.`: save the last segment underscore in the\n // penultimate segment slot.\n else {\n underscoreInLastLastSegment = underscoreInLastSegment;\n underscoreInLastSegment = undefined;\n }\n effects.consume(code);\n return domainInside;\n }\n\n /**\n * After domain.\n *\n * ```markdown\n * > | https://example.com/a\n * ^\n * ```\n *\n * @type {State} */\n function domainAfter(code) {\n // Note: that\u2019s GH says a dot is needed, but it\u2019s not true:\n // <https://github.com/github/cmark-gfm/issues/279>\n if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n return nok(code);\n }\n return ok(code);\n }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n * ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n let sizeOpen = 0;\n let sizeClose = 0;\n return pathInside;\n\n /**\n * In path.\n *\n * ```markdown\n * > | https://example.com/a\n * ^^\n * ```\n *\n * @type {State}\n */\n function pathInside(code) {\n if (code === 40) {\n sizeOpen++;\n effects.consume(code);\n return pathInside;\n }\n\n // To do: `markdown-rs` also needs this.\n // If this is a paren, and there are less closings than openings,\n // we don\u2019t check for a trail.\n if (code === 41 && sizeClose < sizeOpen) {\n return pathAtPunctuation(code);\n }\n\n // Check whether this trailing punctuation marker is optionally\n // followed by more trailing markers, and then followed\n // by an end.\n if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n return effects.check(trail, ok, pathAtPunctuation)(code);\n }\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n effects.consume(code);\n return pathInside;\n }\n\n /**\n * In path, at potential trailing punctuation, that was not trailing.\n *\n * ```markdown\n * > | https://example.com/a\"b\n * ^\n * ```\n *\n * @type {State}\n */\n function pathAtPunctuation(code) {\n // Count closing parens.\n if (code === 41) {\n sizeClose++;\n }\n effects.consume(code);\n return pathInside;\n }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n * ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n return trail;\n\n /**\n * In trail of domain or path.\n *\n * ```markdown\n * > | https://example.com\").\n * ^\n * ```\n *\n * @type {State}\n */\n function trail(code) {\n // Regular trailing punctuation.\n if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n effects.consume(code);\n return trail;\n }\n\n // `&` followed by one or more alphabeticals and then a `;`, is\n // as a whole considered as trailing punctuation.\n // In all other cases, it is considered as continuation of the URL.\n if (code === 38) {\n effects.consume(code);\n return trailCharacterReferenceStart;\n }\n\n // Needed because we allow literals after `[`, as we fix:\n // <https://github.com/github/cmark-gfm/issues/278>.\n // Check that it is not followed by `(` or `[`.\n if (code === 93) {\n effects.consume(code);\n return trailBracketAfter;\n }\n if (\n // `<` is an end.\n code === 60 ||\n // So is whitespace.\n code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In trail, after `]`.\n *\n * > \uD83D\uDC49 **Note**: this deviates from `cmark-gfm` to fix a bug.\n * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n *\n * ```markdown\n * > | https://example.com](\n * ^\n * ```\n *\n * @type {State}\n */\n function trailBracketAfter(code) {\n // Whitespace or something that could start a resource or reference is the end.\n // Switch back to trail otherwise.\n if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return ok(code);\n }\n return trail(code);\n }\n\n /**\n * In character-reference like trail, after `&`.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharacterReferenceStart(code) {\n // When non-alpha, it\u2019s not a trail.\n return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n }\n\n /**\n * In character-reference like trail.\n *\n * ```markdown\n * > | https://example.com&).\n * ^\n * ```\n *\n * @type {State}\n */\n function trailCharacterReferenceInside(code) {\n // Switch back to trail if this is well-formed.\n if (code === 59) {\n effects.consume(code);\n return trail;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return trailCharacterReferenceInside;\n }\n\n // It\u2019s not a trail.\n return nok(code);\n }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n return start;\n\n /**\n * Dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Must be dot.\n effects.consume(code);\n return after;\n }\n\n /**\n * After dot.\n *\n * ```markdown\n * > | contact@example.org.\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Not a trail if alphanumeric.\n return asciiAlphanumeric(code) ? nok(code) : ok(code);\n }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n // Do not allow a slash \u201Cinside\u201D atext.\n // The reference code is a bit weird, but that\u2019s what it results in.\n // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n // Other than slash, every preceding character is allowed.\n return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n let index = events.length;\n let result = false;\n while (index--) {\n const token = events[index][1];\n if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n result = true;\n break;\n }\n\n // If we\u2019ve seen this token, and it was marked as not having any unbalanced\n // bracket before it, we can exit.\n if (token._gfmAutolinkLiteralWalkedInto) {\n result = false;\n break;\n }\n }\n if (events.length > 0 && !result) {\n // Mark the last token as \u201Cwalked into\u201D w/o finding\n // anything.\n events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n }\n return result;\n}", "/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n tokenize: tokenizeIndent,\n partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to\n * enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n /** @type {Extension} */\n return {\n document: {\n [91]: {\n name: 'gfmFootnoteDefinition',\n tokenize: tokenizeDefinitionStart,\n continuation: {\n tokenize: tokenizeDefinitionContinuation\n },\n exit: gfmFootnoteDefinitionEnd\n }\n },\n text: {\n [91]: {\n name: 'gfmFootnoteCall',\n tokenize: tokenizeGfmFootnoteCall\n },\n [93]: {\n name: 'gfmPotentialFootnoteCall',\n add: 'after',\n tokenize: tokenizePotentialGfmFootnoteCall,\n resolveTo: resolveToPotentialGfmFootnoteCall\n }\n }\n };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n /** @type {Token} */\n let labelStart;\n\n // Find an opening.\n while (index--) {\n const token = self.events[index][1];\n if (token.type === \"labelImage\") {\n labelStart = token;\n break;\n }\n\n // Exit if we\u2019ve walked far enough.\n if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n break;\n }\n }\n return start;\n\n /**\n * @type {State}\n */\n function start(code) {\n if (!labelStart || !labelStart._balanced) {\n return nok(code);\n }\n const id = normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n }));\n if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n return nok(code);\n }\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n return ok(code);\n }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n let index = events.length;\n /** @type {Token | undefined} */\n let labelStart;\n\n // Find an opening.\n while (index--) {\n if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n labelStart = events[index][1];\n break;\n }\n }\n // Change the `labelImageMarker` to a `data`.\n events[index + 1][1].type = \"data\";\n events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n // The whole (without `!`):\n /** @type {Token} */\n const call = {\n type: 'gfmFootnoteCall',\n start: Object.assign({}, events[index + 3][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n // The `^` marker\n /** @type {Token} */\n const marker = {\n type: 'gfmFootnoteCallMarker',\n start: Object.assign({}, events[index + 3][1].end),\n end: Object.assign({}, events[index + 3][1].end)\n };\n // Increment the end 1 character.\n marker.end.column++;\n marker.end.offset++;\n marker.end._bufferIndex++;\n /** @type {Token} */\n const string = {\n type: 'gfmFootnoteCallString',\n start: Object.assign({}, marker.end),\n end: Object.assign({}, events[events.length - 1][1].start)\n };\n /** @type {Token} */\n const chunk = {\n type: \"chunkString\",\n contentType: 'string',\n start: Object.assign({}, string.start),\n end: Object.assign({}, string.end)\n };\n\n /** @type {Array<Event>} */\n const replacement = [\n // Take the `labelImageMarker` (now `data`, the `!`)\n events[index + 1], events[index + 2], ['enter', call, context],\n // The `[`\n events[index + 3], events[index + 4],\n // The `^`.\n ['enter', marker, context], ['exit', marker, context],\n // Everything in between.\n ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n // The ending (`]`, properly parsed and labelled).\n events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n events.splice(index, events.length - index + 1, ...replacement);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n let size = 0;\n /** @type {boolean} */\n let data;\n\n // Note: the implementation of `markdown-rs` is different, because it houses\n // core *and* extensions in one project.\n // Therefore, it can include footnote logic inside `label-end`.\n // We can\u2019t do that, but luckily, we can parse footnotes in a simpler way than\n // needed for labels.\n return start;\n\n /**\n * Start of footnote label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteCall');\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n return callStart;\n }\n\n /**\n * After `[`, at `^`.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callStart(code) {\n if (code !== 94) return nok(code);\n effects.enter('gfmFootnoteCallMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallMarker');\n effects.enter('gfmFootnoteCallString');\n effects.enter('chunkString').contentType = 'string';\n return callData;\n }\n\n /**\n * In label.\n *\n * ```markdown\n * > | a [^b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function callData(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n code === 93 && !data ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit('chunkString');\n const token = effects.exit('gfmFootnoteCallString');\n if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n return nok(code);\n }\n effects.enter('gfmFootnoteCallLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteCallLabelMarker');\n effects.exit('gfmFootnoteCall');\n return ok;\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true;\n }\n size++;\n effects.consume(code);\n return code === 92 ? callEscape : callData;\n }\n\n /**\n * On character after escape.\n *\n * ```markdown\n * > | a [^b\\c] d\n * ^\n * ```\n *\n * @type {State}\n */\n function callEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return callData;\n }\n return callData(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n const self = this;\n const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n /** @type {string} */\n let identifier;\n let size = 0;\n /** @type {boolean | undefined} */\n let data;\n return start;\n\n /**\n * Start of GFM footnote definition.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('gfmFootnoteDefinition')._container = true;\n effects.enter('gfmFootnoteDefinitionLabel');\n effects.enter('gfmFootnoteDefinitionLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionLabelMarker');\n return labelAtMarker;\n }\n\n /**\n * In label, at caret.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAtMarker(code) {\n if (code === 94) {\n effects.enter('gfmFootnoteDefinitionMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionMarker');\n effects.enter('gfmFootnoteDefinitionLabelString');\n effects.enter('chunkString').contentType = 'string';\n return labelInside;\n }\n return nok(code);\n }\n\n /**\n * In label.\n *\n * > \uD83D\uDC49 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n * > definition labels.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (\n // Too long.\n size > 999 ||\n // Closing brace with nothing.\n code === 93 && !data ||\n // Space or tab is not supported by GFM for some reason.\n // `\\n` and `[` not being supported makes sense.\n code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit('chunkString');\n const token = effects.exit('gfmFootnoteDefinitionLabelString');\n identifier = normalizeIdentifier(self.sliceSerialize(token));\n effects.enter('gfmFootnoteDefinitionLabelMarker');\n effects.consume(code);\n effects.exit('gfmFootnoteDefinitionLabelMarker');\n effects.exit('gfmFootnoteDefinitionLabel');\n return labelAfter;\n }\n if (!markdownLineEndingOrSpace(code)) {\n data = true;\n }\n size++;\n effects.consume(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * > \uD83D\uDC49 **Note**: `cmark-gfm` currently does not support escaped brackets:\n * > <https://github.com/github/cmark-gfm/issues/240>\n *\n * ```markdown\n * > | [^a\\*b]: c\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n\n /**\n * After definition label.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n if (code === 58) {\n effects.enter('definitionMarker');\n effects.consume(code);\n effects.exit('definitionMarker');\n if (!defined.includes(identifier)) {\n defined.push(identifier);\n }\n\n // Any whitespace after the marker is eaten, forming indented code\n // is not possible.\n // No space is also fine, just like a block quote marker.\n return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n }\n return nok(code);\n }\n\n /**\n * After definition prefix.\n *\n * ```markdown\n * > | [^a]: b\n * ^\n * ```\n *\n * @type {State}\n */\n function whitespaceAfter(code) {\n // `markdown-rs` has a wrapping token for the prefix that is closed here.\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n /// Start of footnote definition continuation.\n ///\n /// ```markdown\n /// | [^a]: b\n /// > | c\n /// ^\n /// ```\n //\n // Either a blank line, which is okay, or an indented thing.\n return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n /**\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n }\n}", "/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n * Configuration.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions`, to\n * enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n const options_ = options || {};\n let single = options_.singleTilde;\n const tokenizer = {\n name: 'strikethrough',\n tokenize: tokenizeStrikethrough,\n resolveAll: resolveAllStrikethrough\n };\n if (single === null || single === undefined) {\n single = true;\n }\n return {\n text: {\n [126]: tokenizer\n },\n insideSpan: {\n null: [tokenizer]\n },\n attentionMarkers: {\n null: [126]\n }\n };\n\n /**\n * Take events and resolve strikethrough.\n *\n * @type {Resolver}\n */\n function resolveAllStrikethrough(events, context) {\n let index = -1;\n\n // Walk through all events.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n let open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n // If the sizes are the same:\n events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n events[index][1].type = 'strikethroughSequence';\n events[open][1].type = 'strikethroughSequence';\n\n /** @type {Token} */\n const strikethrough = {\n type: 'strikethrough',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[index][1].end)\n };\n\n /** @type {Token} */\n const text = {\n type: 'strikethroughText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n\n // Opening.\n /** @type {Array<Event>} */\n const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n const insideSpan = context.parser.constructs.insideSpan.null;\n if (insideSpan) {\n // Between.\n splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n }\n\n // Closing.\n splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - 2;\n break;\n }\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'strikethroughSequenceTemporary') {\n events[index][1].type = \"data\";\n }\n }\n return events;\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeStrikethrough(effects, ok, nok) {\n const previous = this.previous;\n const events = this.events;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n return nok(code);\n }\n effects.enter('strikethroughSequenceTemporary');\n return more(code);\n }\n\n /** @type {State} */\n function more(code) {\n const before = classifyCharacter(previous);\n if (code === 126) {\n // If this is the third marker, exit.\n if (size > 1) return nok(code);\n effects.consume(code);\n size++;\n return more;\n }\n if (size < 2 && !single) return nok(code);\n const token = effects.exit('strikethroughSequenceTemporary');\n const after = classifyCharacter(code);\n token._open = !after || after === 2 && Boolean(before);\n token._close = !before || before === 2 && Boolean(after);\n return ok(code);\n }\n }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it\u2019s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it\u2019s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n /**\n * Create a new edit map.\n */\n constructor() {\n /**\n * Record of changes.\n *\n * @type {Array<Change>}\n */\n this.map = [];\n }\n\n /**\n * Create an edit: a remove and/or add at a certain place.\n *\n * @param {number} index\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\n add(index, remove, add) {\n addImplementation(this, index, remove, add);\n }\n\n // To do: add this when moving to `micromark`.\n // /**\n // * Create an edit: but insert `add` before existing additions.\n // *\n // * @param {number} index\n // * @param {number} remove\n // * @param {Array<Event>} add\n // * @returns {undefined}\n // */\n // addBefore(index, remove, add) {\n // addImplementation(this, index, remove, add, true)\n // }\n\n /**\n * Done, change the events.\n *\n * @param {Array<Event>} events\n * @returns {undefined}\n */\n consume(events) {\n this.map.sort(function (a, b) {\n return a[0] - b[0];\n });\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (this.map.length === 0) {\n return;\n }\n\n // To do: if links are added in events, like they are in `markdown-rs`,\n // this is needed.\n // // Calculate jumps: where items in the current list move to.\n // /** @type {Array<Jump>} */\n // const jumps = []\n // let index = 0\n // let addAcc = 0\n // let removeAcc = 0\n // while (index < this.map.length) {\n // const [at, remove, add] = this.map[index]\n // removeAcc += remove\n // addAcc += add.length\n // jumps.push([at, removeAcc, addAcc])\n // index += 1\n // }\n //\n // . shiftLinks(events, jumps)\n\n let index = this.map.length;\n /** @type {Array<Array<Event>>} */\n const vecs = [];\n while (index > 0) {\n index -= 1;\n vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n // Truncate rest.\n events.length = this.map[index][0];\n }\n vecs.push(events.slice());\n events.length = 0;\n let slice = vecs.pop();\n while (slice) {\n for (const element of slice) {\n events.push(element);\n }\n slice = vecs.pop();\n }\n\n // Truncate everything.\n this.map.length = 0;\n }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n * @param {number} at\n * @param {number} remove\n * @param {Array<Event>} add\n * @returns {undefined}\n */\nfunction addImplementation(editMap, at, remove, add) {\n let index = 0;\n\n /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n if (remove === 0 && add.length === 0) {\n return;\n }\n while (index < editMap.map.length) {\n if (editMap.map[index][0] === at) {\n editMap.map[index][1] += remove;\n\n // To do: before not used by tables, use when moving to micromark.\n // if (before) {\n // add.push(...editMap.map[index][2])\n // editMap.map[index][2] = add\n // } else {\n editMap.map[index][2].push(...add);\n // }\n\n return;\n }\n index += 1;\n }\n editMap.map.push([at, remove, add]);\n}\n\n// /**\n// * Shift `previous` and `next` links according to `jumps`.\n// *\n// * This fixes links in case there are events removed or added between them.\n// *\n// * @param {Array<Event>} events\n// * @param {Array<Jump>} jumps\n// */\n// function shiftLinks(events, jumps) {\n// let jumpIndex = 0\n// let index = 0\n// let add = 0\n// let rm = 0\n\n// while (index < events.length) {\n// const rmCurr = rm\n\n// while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n// add = jumps[jumpIndex][2]\n// rm = jumps[jumpIndex][1]\n// jumpIndex += 1\n// }\n\n// // Ignore items that will be removed.\n// if (rm > rmCurr) {\n// index += rm - rmCurr\n// } else {\n// // ?\n// // if let Some(link) = &events[index].link {\n// // if let Some(next) = link.next {\n// // events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n// // while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n// // add = jumps[jumpIndex].2;\n// // rm = jumps[jumpIndex].1;\n// // jumpIndex += 1;\n// // }\n// // events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n// // index = next;\n// // continue;\n// // }\n// // }\n// index += 1\n// }\n// }\n// }", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n * List of events.\n * @param {number} index\n * Table enter event.\n * @returns {Array<Align>}\n * List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n let inDelimiterRow = false;\n /** @type {Array<Align>} */\n const align = [];\n while (index < events.length) {\n const event = events[index];\n if (inDelimiterRow) {\n if (event[0] === 'enter') {\n // Start of alignment value: set a new column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n if (event[1].type === 'tableContent') {\n align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n }\n }\n // Exits:\n // End of alignment value: change the column.\n // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n else if (event[1].type === 'tableContent') {\n if (events[index - 1][1].type === 'tableDelimiterMarker') {\n const alignIndex = align.length - 1;\n align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n }\n }\n // Done!\n else if (event[1].type === 'tableDelimiterRow') {\n break;\n }\n } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n inDelimiterRow = true;\n }\n index += 1;\n }\n return align;\n}", "/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n * Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n * Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * table syntax.\n */\nexport function gfmTable() {\n return {\n flow: {\n null: {\n name: 'table',\n tokenize: tokenizeTable,\n resolveAll: resolveTable\n }\n }\n };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n const self = this;\n let size = 0;\n let sizeB = 0;\n /** @type {boolean | undefined} */\n let seen;\n return start;\n\n /**\n * Start of a GFM table.\n *\n * If there is a valid table row or table head before, then we try to parse\n * another row.\n * Otherwise, we try to parse a head.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * > | | b |\n * ^\n * ```\n * @type {State}\n */\n function start(code) {\n let index = self.events.length - 1;\n while (index > -1) {\n const type = self.events[index][1].type;\n if (type === \"lineEnding\" ||\n // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n type === \"linePrefix\") index--;else break;\n }\n const tail = index > -1 ? self.events[index][1].type : null;\n const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n // Don\u2019t allow lazy body rows.\n if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n return next(code);\n }\n\n /**\n * Before table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBefore(code) {\n effects.enter('tableHead');\n effects.enter('tableRow');\n return headRowStart(code);\n }\n\n /**\n * Before table head row, after whitespace.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowStart(code) {\n if (code === 124) {\n return headRowBreak(code);\n }\n\n // To do: micromark-js should let us parse our own whitespace in extensions,\n // like `markdown-rs`:\n //\n // ```js\n // // 4+ spaces.\n // if (markdownSpace(code)) {\n // return nok(code)\n // }\n // ```\n\n seen = true;\n // Count the first character, that isn\u2019t a pipe, double.\n sizeB += 1;\n return headRowBreak(code);\n }\n\n /**\n * At break in table head row.\n *\n * ```markdown\n * > | | a |\n * ^\n * ^\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowBreak(code) {\n if (code === null) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n // If anything other than one pipe (ignoring whitespace) was used, it\u2019s fine.\n if (sizeB > 1) {\n sizeB = 0;\n // To do: check if this works.\n // Feel free to interrupt:\n self.interrupt = true;\n effects.exit('tableRow');\n effects.enter(\"lineEnding\");\n effects.consume(code);\n effects.exit(\"lineEnding\");\n return headDelimiterStart;\n }\n\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n return nok(code);\n }\n if (markdownSpace(code)) {\n // To do: check if this is fine.\n // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n // State::Retry(space_or_tab(tokenizer))\n return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n }\n sizeB += 1;\n if (seen) {\n seen = false;\n // Header cell count.\n size += 1;\n }\n if (code === 124) {\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n // Whether a delimiter was seen.\n seen = true;\n return headRowBreak;\n }\n\n // Anything else is cell data.\n effects.enter(\"data\");\n return headRowData(code);\n }\n\n /**\n * In table head row data.\n *\n * ```markdown\n * > | | a |\n * ^\n * | | - |\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"data\");\n return headRowBreak(code);\n }\n effects.consume(code);\n return code === 92 ? headRowEscape : headRowData;\n }\n\n /**\n * In table head row escape.\n *\n * ```markdown\n * > | | a\\-b |\n * ^\n * | | ---- |\n * | | c |\n * ```\n *\n * @type {State}\n */\n function headRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code);\n return headRowData;\n }\n return headRowData(code);\n }\n\n /**\n * Before delimiter row.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterStart(code) {\n // Reset `interrupt`.\n self.interrupt = false;\n\n // Note: in `markdown-rs`, we need to handle piercing here too.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n effects.enter('tableDelimiterRow');\n // Track if we\u2019ve seen a `:` or `|`.\n seen = false;\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return headDelimiterBefore(code);\n }\n\n /**\n * Before delimiter row, after optional whitespace.\n *\n * Reused when a `|` is found later, to parse another cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * | | b |\n * ```\n *\n * @type {State}\n */\n function headDelimiterBefore(code) {\n if (code === 45 || code === 58) {\n return headDelimiterValueBefore(code);\n }\n if (code === 124) {\n seen = true;\n // If we start with a pipe, we open a cell marker.\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n return headDelimiterCellBefore;\n }\n\n // More whitespace / empty row not allowed at start.\n return headDelimiterNok(code);\n }\n\n /**\n * After `|`, before delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellBefore(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n }\n return headDelimiterValueBefore(code);\n }\n\n /**\n * Before delimiter cell value.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterValueBefore(code) {\n // Align: left.\n if (code === 58) {\n sizeB += 1;\n seen = true;\n effects.enter('tableDelimiterMarker');\n effects.consume(code);\n effects.exit('tableDelimiterMarker');\n return headDelimiterLeftAlignmentAfter;\n }\n\n // Align: none.\n if (code === 45) {\n sizeB += 1;\n // To do: seems weird that this *isn\u2019t* left aligned, but that state is used?\n return headDelimiterLeftAlignmentAfter(code);\n }\n if (code === null || markdownLineEnding(code)) {\n return headDelimiterCellAfter(code);\n }\n return headDelimiterNok(code);\n }\n\n /**\n * After delimiter cell left alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | :- |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterLeftAlignmentAfter(code) {\n if (code === 45) {\n effects.enter('tableDelimiterFiller');\n return headDelimiterFiller(code);\n }\n\n // Anything else is not ok after the left-align colon.\n return headDelimiterNok(code);\n }\n\n /**\n * In delimiter cell filler.\n *\n * ```markdown\n * | | a |\n * > | | - |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterFiller(code) {\n if (code === 45) {\n effects.consume(code);\n return headDelimiterFiller;\n }\n\n // Align is `center` if it was `left`, `right` otherwise.\n if (code === 58) {\n seen = true;\n effects.exit('tableDelimiterFiller');\n effects.enter('tableDelimiterMarker');\n effects.consume(code);\n effects.exit('tableDelimiterMarker');\n return headDelimiterRightAlignmentAfter;\n }\n effects.exit('tableDelimiterFiller');\n return headDelimiterRightAlignmentAfter(code);\n }\n\n /**\n * After delimiter cell right alignment marker.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterRightAlignmentAfter(code) {\n if (markdownSpace(code)) {\n return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n }\n return headDelimiterCellAfter(code);\n }\n\n /**\n * After delimiter cell.\n *\n * ```markdown\n * | | a |\n * > | | -: |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterCellAfter(code) {\n if (code === 124) {\n return headDelimiterBefore(code);\n }\n if (code === null || markdownLineEnding(code)) {\n // Exit when:\n // * there was no `:` or `|` at all (it\u2019s a thematic break or setext\n // underline instead)\n // * the header cell count is not the delimiter cell count\n if (!seen || size !== sizeB) {\n return headDelimiterNok(code);\n }\n\n // Note: in markdown-rs`, a reset is needed here.\n effects.exit('tableDelimiterRow');\n effects.exit('tableHead');\n // To do: in `markdown-rs`, resolvers need to be registered manually.\n // effects.register_resolver(ResolveName::GfmTable)\n return ok(code);\n }\n return headDelimiterNok(code);\n }\n\n /**\n * In delimiter row, at a disallowed byte.\n *\n * ```markdown\n * | | a |\n * > | | x |\n * ^\n * ```\n *\n * @type {State}\n */\n function headDelimiterNok(code) {\n // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n return nok(code);\n }\n\n /**\n * Before table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowStart(code) {\n // Note: in `markdown-rs` we need to manually take care of a prefix,\n // but in `micromark-js` that is done for us, so if we\u2019re here, we\u2019re\n // never at whitespace.\n effects.enter('tableRow');\n return bodyRowBreak(code);\n }\n\n /**\n * At break in table body row.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ^\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowBreak(code) {\n if (code === 124) {\n effects.enter('tableCellDivider');\n effects.consume(code);\n effects.exit('tableCellDivider');\n return bodyRowBreak;\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('tableRow');\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n }\n\n // Anything else is cell content.\n effects.enter(\"data\");\n return bodyRowData(code);\n }\n\n /**\n * In table body row data.\n *\n * ```markdown\n * | | a |\n * | | - |\n * > | | b |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowData(code) {\n if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n effects.exit(\"data\");\n return bodyRowBreak(code);\n }\n effects.consume(code);\n return code === 92 ? bodyRowEscape : bodyRowData;\n }\n\n /**\n * In table body row escape.\n *\n * ```markdown\n * | | a |\n * | | ---- |\n * > | | b\\-c |\n * ^\n * ```\n *\n * @type {State}\n */\n function bodyRowEscape(code) {\n if (code === 92 || code === 124) {\n effects.consume(code);\n return bodyRowData;\n }\n return bodyRowData(code);\n }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n let index = -1;\n let inFirstCellAwaitingPipe = true;\n /** @type {RowKind} */\n let rowKind = 0;\n /** @type {Range} */\n let lastCell = [0, 0, 0, 0];\n /** @type {Range} */\n let cell = [0, 0, 0, 0];\n let afterHeadAwaitingFirstBodyRow = false;\n let lastTableEnd = 0;\n /** @type {Token | undefined} */\n let currentTable;\n /** @type {Token | undefined} */\n let currentBody;\n /** @type {Token | undefined} */\n let currentCell;\n const map = new EditMap();\n while (++index < events.length) {\n const event = events[index];\n const token = event[1];\n if (event[0] === 'enter') {\n // Start of head.\n if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = false;\n\n // Inject previous (body end and) table end.\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n currentBody = undefined;\n lastTableEnd = 0;\n }\n\n // Inject table start.\n currentTable = {\n type: 'table',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map.add(index, 0, [['enter', currentTable, context]]);\n } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n inFirstCellAwaitingPipe = true;\n currentCell = undefined;\n lastCell = [0, 0, 0, 0];\n cell = [0, index + 1, 0, 0];\n\n // Inject table body start.\n if (afterHeadAwaitingFirstBodyRow) {\n afterHeadAwaitingFirstBodyRow = false;\n currentBody = {\n type: 'tableBody',\n start: Object.assign({}, token.start),\n // Note: correct end is set later.\n end: Object.assign({}, token.end)\n };\n map.add(index, 0, [['enter', currentBody, context]]);\n }\n rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n }\n // Cell data.\n else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n inFirstCellAwaitingPipe = false;\n\n // First value in cell.\n if (cell[2] === 0) {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n lastCell = [0, 0, 0, 0];\n }\n cell[2] = index;\n }\n } else if (token.type === 'tableCellDivider') {\n if (inFirstCellAwaitingPipe) {\n inFirstCellAwaitingPipe = false;\n } else {\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n }\n lastCell = cell;\n cell = [lastCell[1], index, 0, 0];\n }\n }\n }\n // Exit events.\n else if (token.type === 'tableHead') {\n afterHeadAwaitingFirstBodyRow = true;\n lastTableEnd = index;\n } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n lastTableEnd = index;\n if (lastCell[1] !== 0) {\n cell[0] = cell[1];\n currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n } else if (cell[1] !== 0) {\n currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n }\n rowKind = 0;\n } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n cell[3] = index;\n }\n }\n if (lastTableEnd !== 0) {\n flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n }\n map.consume(context.events);\n\n // To do: move this into `html`, when events are exposed there.\n // That\u2019s what `markdown-rs` does.\n // That needs updates to `mdast-util-gfm-table`.\n index = -1;\n while (++index < context.events.length) {\n const event = context.events[index];\n if (event[0] === 'enter' && event[1].type === 'table') {\n event[1]._align = gfmTableAlign(context.events, index);\n }\n }\n return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n * @param {Readonly<TokenizeContext>} context\n * @param {Readonly<Range>} range\n * @param {RowKind} rowKind\n * @param {number | undefined} rowEnd\n * @param {Token | undefined} previousCell\n * @returns {Token | undefined}\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n // `markdown-rs` uses:\n // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n const valueName = 'tableContent';\n\n // Insert an exit for the previous cell, if there is one.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[0] !== 0) {\n previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n map.add(range[0], 0, [['exit', previousCell, context]]);\n }\n\n // Insert enter of this cell.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^^^^-- this cell\n // ```\n const now = getPoint(context.events, range[1]);\n previousCell = {\n type: groupName,\n start: Object.assign({}, now),\n // Note: correct end is set later.\n end: Object.assign({}, now)\n };\n map.add(range[1], 0, [['enter', previousCell, context]]);\n\n // Insert text start at first data start and end at last data end, and\n // remove events between.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- enter\n // ^-- exit\n // ^^^^-- this cell\n // ```\n if (range[2] !== 0) {\n const relatedStart = getPoint(context.events, range[2]);\n const relatedEnd = getPoint(context.events, range[3]);\n /** @type {Token} */\n const valueToken = {\n type: valueName,\n start: Object.assign({}, relatedStart),\n end: Object.assign({}, relatedEnd)\n };\n map.add(range[2], 0, [['enter', valueToken, context]]);\n if (rowKind !== 2) {\n // Fix positional info on remaining events\n const start = context.events[range[2]];\n const end = context.events[range[3]];\n start[1].end = Object.assign({}, end[1].end);\n start[1].type = \"chunkText\";\n start[1].contentType = \"text\";\n\n // Remove if needed.\n if (range[3] > range[2] + 1) {\n const a = range[2] + 1;\n const b = range[3] - range[2] - 1;\n map.add(a, b, []);\n }\n }\n map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n }\n\n // Insert an exit for the last cell, if at the row end.\n //\n // ```markdown\n // > | | aa | bb | cc |\n // ^-- exit\n // ^^^^^^-- this cell (the last one contains two \u201Cbetween\u201D parts)\n // ```\n if (rowEnd !== undefined) {\n previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n map.add(rowEnd, 0, [['exit', previousCell, context]]);\n previousCell = undefined;\n }\n return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n * @param {Readonly<TokenizeContext>} context\n * @param {number} index\n * @param {Token} table\n * @param {Token | undefined} tableBody\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n /** @type {Array<Event>} */\n const exits = [];\n const related = getPoint(context.events, index);\n if (tableBody) {\n tableBody.end = Object.assign({}, related);\n exits.push(['exit', tableBody, context]);\n }\n table.end = Object.assign({}, related);\n exits.push(['exit', table, context]);\n map.add(index + 1, 0, exits);\n}\n\n/**\n * @param {Readonly<Array<Event>>} events\n * @param {number} index\n * @returns {Readonly<Point>}\n */\nfunction getPoint(events, index) {\n const event = events[index];\n const side = event[0] === 'enter' ? 'start' : 'end';\n return event[1][side];\n}", "/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n name: 'tasklistCheck',\n tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n return {\n text: {\n [91]: tasklistCheck\n }\n };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n const self = this;\n return open;\n\n /**\n * At start of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (\n // Exit if there\u2019s stuff before.\n self.previous !== null ||\n // Exit if not in the first content that is the first child of a list\n // item.\n !self._gfmTasklistFirstContentOfListItem) {\n return nok(code);\n }\n effects.enter('taskListCheck');\n effects.enter('taskListCheckMarker');\n effects.consume(code);\n effects.exit('taskListCheckMarker');\n return inside;\n }\n\n /**\n * In task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // Currently we match how GH works in files.\n // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n if (markdownLineEndingOrSpace(code)) {\n effects.enter('taskListCheckValueUnchecked');\n effects.consume(code);\n effects.exit('taskListCheckValueUnchecked');\n return close;\n }\n if (code === 88 || code === 120) {\n effects.enter('taskListCheckValueChecked');\n effects.consume(code);\n effects.exit('taskListCheckValueChecked');\n return close;\n }\n return nok(code);\n }\n\n /**\n * At close of task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function close(code) {\n if (code === 93) {\n effects.enter('taskListCheckMarker');\n effects.consume(code);\n effects.exit('taskListCheckMarker');\n effects.exit('taskListCheck');\n return after;\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n */\n function after(code) {\n // EOL in paragraph means there must be something else after it.\n if (markdownLineEnding(code)) {\n return ok(code);\n }\n\n // Space or tab?\n // Check what comes after.\n if (markdownSpace(code)) {\n return effects.check({\n tokenize: spaceThenNonSpace\n }, ok, nok)(code);\n }\n\n // EOF, or non-whitespace, both wrong.\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n return factorySpace(effects, after, \"whitespace\");\n\n /**\n * After whitespace, after task list item check.\n *\n * ```markdown\n * > | * [x] y.\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // EOF means there was nothing, so bad.\n // EOL means there\u2019s content after it, so good.\n // Impossible to have more spaces.\n // Anything else is good.\n return code === null ? nok(code) : ok(code);\n }\n}", "/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n combineExtensions,\n combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n gfmAutolinkLiteral,\n gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n gfmStrikethrough,\n gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n gfmTaskListItem,\n gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n * Extension for `micromark` that can be passed in `extensions` to enable GFM\n * syntax.\n */\nexport function gfm(options) {\n return combineExtensions([\n gfmAutolinkLiteral(),\n gfmFootnote(),\n gfmStrikethrough(options),\n gfmTable(),\n gfmTaskListItem()\n ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n * Configuration (optional).\n *\n * Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n * Extension for `micromark` that can be passed in `htmlExtensions` to\n * support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n return combineHtmlExtensions([\n gfmAutolinkLiteralHtml(),\n gfmFootnoteHtml(options),\n gfmStrikethroughHtml(),\n gfmTableHtml(),\n gfmTagfilterHtml(),\n gfmTaskListItemHtml()\n ])\n}\n", "/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {undefined}\n * Nothing.\n */\nexport default function remarkGfm(options) {\n // @ts-expect-error: TS is wrong about `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {Processor<Root>} */ (this)\n const settings = options || emptyOptions\n const data = self.data()\n\n const micromarkExtensions =\n data.micromarkExtensions || (data.micromarkExtensions = [])\n const fromMarkdownExtensions =\n data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n const toMarkdownExtensions =\n data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n micromarkExtensions.push(gfm(settings))\n fromMarkdownExtensions.push(gfmFromMarkdown())\n toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/preset-gfm',\n ...meta,\n },\n })\n\n return plugin\n}\n", "import { commandsCtx } from '@milkdown/core'\nimport { markRule } from '@milkdown/prose'\nimport { toggleMark } from '@milkdown/prose/commands'\nimport {\n $command,\n $inputRule,\n $markAttr,\n $markSchema,\n $useKeymap,\n} from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// HTML attributes for the strikethrough mark.\nexport const strikethroughAttr = $markAttr('strike_through')\n\nwithMeta(strikethroughAttr, {\n displayName: 'Attr<strikethrough>',\n group: 'Strikethrough',\n})\n\n/// Strikethrough mark schema.\nexport const strikethroughSchema = $markSchema('strike_through', (ctx) => ({\n parseDOM: [\n { tag: 'del' },\n {\n style: 'text-decoration',\n getAttrs: (value) => (value === 'line-through') as false,\n },\n ],\n toDOM: (mark) => ['del', ctx.get(strikethroughAttr.key)(mark)],\n parseMarkdown: {\n match: (node) => node.type === 'delete',\n runner: (state, node, markType) => {\n state.openMark(markType)\n state.next(node.children)\n state.closeMark(markType)\n },\n },\n toMarkdown: {\n match: (mark) => mark.type.name === 'strike_through',\n runner: (state, mark) => {\n state.withMark(mark, 'delete')\n },\n },\n}))\n\nwithMeta(strikethroughSchema.mark, {\n displayName: 'MarkSchema<strikethrough>',\n group: 'Strikethrough',\n})\n\nwithMeta(strikethroughSchema.ctx, {\n displayName: 'MarkSchemaCtx<strikethrough>',\n group: 'Strikethrough',\n})\n\n/// A command to toggle the strikethrough mark.\nexport const toggleStrikethroughCommand = $command(\n 'ToggleStrikeThrough',\n (ctx) => () => {\n return toggleMark(strikethroughSchema.type(ctx))\n }\n)\n\nwithMeta(toggleStrikethroughCommand, {\n displayName: 'Command<ToggleStrikethrough>',\n group: 'Strikethrough',\n})\n\n/// Input rule to create the strikethrough mark.\nexport const strikethroughInputRule = $inputRule((ctx) => {\n return markRule(\n /(?<![\\w:/])(~{1,2})(.+?)\\1(?!\\w|\\/)/,\n strikethroughSchema.type(ctx)\n )\n})\n\nwithMeta(strikethroughInputRule, {\n displayName: 'InputRule<strikethrough>',\n group: 'Strikethrough',\n})\n\n/// Keymap for the strikethrough mark.\n/// - `Mod-Alt-x` - Toggle the strikethrough mark.\nexport const strikethroughKeymap = $useKeymap('strikeThroughKeymap', {\n ToggleStrikethrough: {\n shortcuts: 'Mod-Alt-x',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(toggleStrikethroughCommand.key)\n },\n },\n})\n\nwithMeta(strikethroughKeymap.ctx, {\n displayName: 'KeymapCtx<strikethrough>',\n group: 'Strikethrough',\n})\n\nwithMeta(strikethroughKeymap.shortcuts, {\n displayName: 'Keymap<strikethrough>',\n group: 'Strikethrough',\n})\n", "import type { NodeType } from '@milkdown/prose/model'\nimport type { MarkdownNode } from '@milkdown/transformer'\n\nimport { tableNodes } from '@milkdown/prose/tables'\nimport { $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\n\nconst originalSchema = tableNodes({\n tableGroup: 'block',\n cellContent: 'paragraph',\n cellAttributes: {\n alignment: {\n default: 'left',\n getFromDOM: (dom) => dom.style.textAlign || 'left',\n setDOMAttr: (value, attrs) => {\n attrs.style = `text-align: ${value || 'left'}`\n },\n },\n },\n})\n\n/// Schema for table node.\nexport const tableSchema = $nodeSchema('table', () => ({\n ...originalSchema.table,\n content: 'table_header_row table_row+',\n disableDropCursor: true,\n parseMarkdown: {\n match: (node) => node.type === 'table',\n runner: (state, node, type) => {\n const align = node.align as (string | null)[]\n const children = (node.children as MarkdownNode[]).map((x, i) => ({\n ...x,\n align,\n isHeader: i === 0,\n }))\n state.openNode(type)\n state.next(children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table',\n runner: (state, node) => {\n const firstLine = node.content.firstChild?.content\n if (!firstLine) return\n\n const align: (string | null)[] = []\n firstLine.forEach((cell) => {\n align.push(cell.attrs.alignment)\n })\n state.openNode('table', undefined, { align })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableSchema.node, {\n displayName: 'NodeSchema<table>',\n group: 'Table',\n})\n\nwithMeta(tableSchema.ctx, {\n displayName: 'NodeSchemaCtx<table>',\n group: 'Table',\n})\n\n/// Schema for table header row node.\nexport const tableHeaderRowSchema = $nodeSchema('table_header_row', () => ({\n ...originalSchema.table_row,\n disableDropCursor: true,\n content: '(table_header)*',\n parseDOM: [\n { tag: 'tr[data-is-header]' },\n {\n tag: 'tr',\n getAttrs: (dom: HTMLElement) => {\n if (dom instanceof HTMLElement) {\n const hasHeader = dom.querySelector('th')\n return hasHeader ? {} : false\n }\n return false\n },\n },\n ],\n toDOM() {\n return ['tr', { 'data-is-header': true }, 0]\n },\n parseMarkdown: {\n match: (node) => Boolean(node.type === 'tableRow' && node.isHeader),\n runner: (state, node, type) => {\n const align = node.align as (string | null)[]\n const children = (node.children as MarkdownNode[]).map((x, i) => ({\n ...x,\n align: align[i],\n isHeader: node.isHeader,\n }))\n state.openNode(type)\n state.next(children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_header_row',\n runner: (state, node) => {\n // if the row is empty, we don't need to create a table row\n // prevent remark from crashing\n if (node.content.size === 0) {\n return\n }\n state.openNode('tableRow', undefined, { isHeader: true })\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableHeaderRowSchema.node, {\n displayName: 'NodeSchema<tableHeaderRow>',\n group: 'Table',\n})\n\nwithMeta(tableHeaderRowSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableHeaderRow>',\n group: 'Table',\n})\n\n/// Schema for table row node.\nexport const tableRowSchema = $nodeSchema('table_row', () => ({\n ...originalSchema.table_row,\n disableDropCursor: true,\n content: '(table_cell)*',\n parseMarkdown: {\n match: (node) => node.type === 'tableRow',\n runner: (state, node, type) => {\n const align = node.align as (string | null)[]\n const children = (node.children as MarkdownNode[]).map((x, i) => ({\n ...x,\n align: align[i],\n }))\n state.openNode(type)\n state.next(children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_row',\n runner: (state, node) => {\n // if the row is empty, we don't need to create a table row\n // prevent remark from crashing\n if (node.content.size === 0) {\n return\n }\n state.openNode('tableRow')\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableRowSchema.node, {\n displayName: 'NodeSchema<tableRow>',\n group: 'Table',\n})\n\nwithMeta(tableRowSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableRow>',\n group: 'Table',\n})\n\n/// Schema for table cell node.\nexport const tableCellSchema = $nodeSchema('table_cell', () => ({\n ...originalSchema.table_cell,\n disableDropCursor: true,\n parseMarkdown: {\n match: (node) => node.type === 'tableCell' && !node.isHeader,\n runner: (state, node, type) => {\n const align = node.align as string\n state\n .openNode(type, { alignment: align })\n .openNode(state.schema.nodes.paragraph as NodeType)\n .next(node.children)\n .closeNode()\n .closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_cell',\n runner: (state, node) => {\n state.openNode('tableCell').next(node.content).closeNode()\n },\n },\n}))\n\nwithMeta(tableCellSchema.node, {\n displayName: 'NodeSchema<tableCell>',\n group: 'Table',\n})\n\nwithMeta(tableCellSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableCell>',\n group: 'Table',\n})\n\n/// Schema for table header node.\nexport const tableHeaderSchema = $nodeSchema('table_header', () => ({\n ...originalSchema.table_header,\n disableDropCursor: true,\n parseMarkdown: {\n match: (node) => node.type === 'tableCell' && !!node.isHeader,\n runner: (state, node, type) => {\n const align = node.align as string\n state.openNode(type, { alignment: align })\n state.openNode(state.schema.nodes.paragraph as NodeType)\n state.next(node.children)\n state.closeNode()\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'table_header',\n runner: (state, node) => {\n state.openNode('tableCell')\n state.next(node.content)\n state.closeNode()\n },\n },\n}))\n\nwithMeta(tableHeaderSchema.node, {\n displayName: 'NodeSchema<tableHeader>',\n group: 'Table',\n})\n\nwithMeta(tableHeaderSchema.ctx, {\n displayName: 'NodeSchemaCtx<tableHeader>',\n group: 'Table',\n})\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Node } from '@milkdown/prose/model'\n\nimport {\n tableCellSchema,\n tableHeaderRowSchema,\n tableHeaderSchema,\n tableRowSchema,\n tableSchema,\n} from '../schema'\n\n/// @internal\nexport function createTable(ctx: Ctx, rowsCount = 3, colsCount = 3): Node {\n const cells = Array(colsCount)\n .fill(0)\n .map(() => tableCellSchema.type(ctx).createAndFill()!)\n\n const headerCells = Array(colsCount)\n .fill(0)\n .map(() => tableHeaderSchema.type(ctx).createAndFill()!)\n\n const rows = Array(rowsCount)\n .fill(0)\n .map((_, i) =>\n i === 0\n ? tableHeaderRowSchema.type(ctx).create(null, headerCells)\n : tableRowSchema.type(ctx).create(null, cells)\n )\n\n return tableSchema.type(ctx).create(null, rows)\n}\n", "import type { Selection } from '@milkdown/prose/state'\n\nimport { findTable, TableMap } from '@milkdown/prose/tables'\n\nimport type { CellPos } from './types'\n\n/// Get cells in a column of a table.\nexport function getCellsInCol(\n columnIndexes: number | number[],\n selection: Selection\n): CellPos[] | undefined {\n const table = findTable(selection.$from)\n if (!table) return undefined\n\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(columnIndexes) ? columnIndexes : [columnIndexes]\n\n return indexes\n .filter((index) => index >= 0 && index <= map.width - 1)\n .flatMap((index) => {\n const cells = map.cellsInRect({\n left: index,\n right: index + 1,\n top: 0,\n bottom: map.height,\n })\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node, depth: table.depth + 2 }\n })\n })\n}\n", "import type { Selection } from '@milkdown/prose/state'\n\nimport { findTable, TableMap } from '@milkdown/prose/tables'\n\nimport type { CellPos } from './types'\n\n/// Get cells in a row of a table.\nexport function getCellsInRow(\n rowIndex: number | number[],\n selection: Selection\n): CellPos[] | undefined {\n const table = findTable(selection.$from)\n if (!table) {\n return\n }\n\n const map = TableMap.get(table.node)\n const indexes = Array.isArray(rowIndex) ? rowIndex : [rowIndex]\n\n return indexes\n .filter((index) => index >= 0 && index <= map.height - 1)\n .flatMap((index) => {\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: index,\n bottom: index + 1,\n })\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)!\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node, depth: table.depth + 2 }\n })\n })\n}\n", "import type { Selection, Transaction } from '@milkdown/prose/state'\n\nimport { cloneTr, findParentNodeClosestToPos } from '@milkdown/prose'\nimport { CellSelection, TableMap } from '@milkdown/prose/tables'\n\n/// @internal\nexport function selectLine(type: 'row' | 'col') {\n return (index: number, pos?: number) => (tr: Transaction) => {\n pos = pos ?? tr.selection.from\n const $pos = tr.doc.resolve(pos)\n const $node = findParentNodeClosestToPos(\n (node) => node.type.name === 'table'\n )($pos)\n const table = $node\n ? {\n node: $node.node,\n from: $node.start,\n }\n : undefined\n\n const isRowSelection = type === 'row'\n if (table) {\n const map = TableMap.get(table.node)\n\n // Check if the index is valid\n if (index >= 0 && index < (isRowSelection ? map.height : map.width)) {\n const lastCell = map.positionAt(\n isRowSelection ? index : map.height - 1,\n isRowSelection ? map.width - 1 : index,\n table.node\n )\n const $lastCell = tr.doc.resolve(table.from + lastCell)\n\n const createCellSelection = isRowSelection\n ? // oxlint-disable-next-line typescript/unbound-method\n CellSelection.rowSelection\n : // oxlint-disable-next-line typescript/unbound-method\n CellSelection.colSelection\n\n const firstCell = map.positionAt(\n isRowSelection ? index : 0,\n isRowSelection ? 0 : index,\n table.node\n )\n const $firstCell = tr.doc.resolve(table.from + firstCell)\n return cloneTr(\n tr.setSelection(\n createCellSelection($lastCell, $firstCell) as unknown as Selection\n )\n )\n }\n }\n return tr\n }\n}\n\n/// If the selection is in a table,\n/// select the {index} row.\nexport const selectRow = selectLine('row')\n\n/// If the selection is in a table,\n/// select the {index} column.\nexport const selectCol = selectLine('col')\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Node } from '@milkdown/prose/model'\nimport type { Transaction } from '@milkdown/prose/state'\nimport type { TableRect } from '@milkdown/prose/tables'\n\nimport { tableCellSchema, tableRowSchema } from '../schema'\n\n/// @internal\nexport function addRowWithAlignment(\n ctx: Ctx,\n tr: Transaction,\n { map, tableStart, table }: TableRect,\n row: number\n) {\n const rowPos = Array(row)\n .fill(0)\n .reduce((acc, _, i) => {\n return acc + table.child(i).nodeSize\n }, tableStart)\n\n const cells = Array(map.width)\n .fill(0)\n .map((_, col) => {\n const headerCol = table.nodeAt(map.map[col] as number)\n return tableCellSchema\n .type(ctx)\n .createAndFill({ alignment: headerCol?.attrs.alignment }) as Node\n })\n\n tr.insert(rowPos, tableRowSchema.type(ctx).create(null, cells))\n return tr\n}\n", "import type { Selection } from '@milkdown/prose/state'\n\nimport { findTable, TableMap } from '@milkdown/prose/tables'\n\n/// Get all cells in a table.\nexport function getAllCellsInTable(selection: Selection) {\n const table = findTable(selection.$from)\n if (!table) return\n\n const map = TableMap.get(table.node)\n const cells = map.cellsInRect({\n left: 0,\n right: map.width,\n top: 0,\n bottom: map.height,\n })\n return cells.map((nodePos) => {\n const node = table.node.nodeAt(nodePos)\n const pos = nodePos + table.start\n return { pos, start: pos + 1, node }\n })\n}\n", "import type { Transaction } from '@milkdown/prose/state'\n\nimport { cloneTr } from '@milkdown/prose'\nimport { CellSelection } from '@milkdown/prose/tables'\n\nimport { getAllCellsInTable } from './get-all-cells-in-table'\n\n/// Select a possible table in current selection.\nexport function selectTable(tr: Transaction) {\n const cells = getAllCellsInTable(tr.selection)\n if (cells && cells[0]) {\n const $firstCell = tr.doc.resolve(cells[0].pos)\n const last = cells[cells.length - 1]\n if (last) {\n const $lastCell = tr.doc.resolve(last.pos)\n return cloneTr(tr.setSelection(new CellSelection($lastCell, $firstCell)))\n }\n }\n return tr\n}\n", "import { paragraphSchema } from '@milkdown/preset-commonmark'\nimport { findParentNodeType } from '@milkdown/prose'\nimport { Selection } from '@milkdown/prose/state'\nimport {\n CellSelection,\n addColumnAfter,\n addColumnBefore,\n deleteColumn,\n deleteRow,\n deleteTable,\n goToNextCell,\n isInTable,\n selectedRect,\n setCellAttr,\n moveTableRow,\n moveTableColumn,\n} from '@milkdown/prose/tables'\nimport { $command } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\nimport { tableSchema } from './schema'\nimport {\n addRowWithAlignment,\n createTable,\n selectCol,\n selectRow,\n selectTable,\n} from './utils'\n\n/// A command for moving cursor to previous cell.\nexport const goToPrevTableCellCommand = $command(\n 'GoToPrevTableCell',\n () => () => goToNextCell(-1)\n)\n\nwithMeta(goToPrevTableCellCommand, {\n displayName: 'Command<goToPrevTableCellCommand>',\n group: 'Table',\n})\n\n/// A command for moving cursor to next cell.\nexport const goToNextTableCellCommand = $command(\n 'GoToNextTableCell',\n () => () => goToNextCell(1)\n)\n\nwithMeta(goToNextTableCellCommand, {\n displayName: 'Command<goToNextTableCellCommand>',\n group: 'Table',\n})\n\n/// A command for quitting current table and insert a new paragraph node.\nexport const exitTable = $command(\n 'ExitTable',\n (ctx) => () => (state, dispatch) => {\n if (!isInTable(state)) return false\n\n const { $head } = state.selection\n const table = findParentNodeType($head, tableSchema.type(ctx))\n if (!table) return false\n\n const { to } = table\n\n const tr = state.tr.replaceWith(\n to,\n to,\n paragraphSchema.type(ctx).createAndFill()!\n )\n\n tr.setSelection(Selection.near(tr.doc.resolve(to), 1)).scrollIntoView()\n dispatch?.(tr)\n return true\n }\n)\n\nwithMeta(exitTable, {\n displayName: 'Command<breakTableCommand>',\n group: 'Table',\n})\n\n/// A command for inserting a table.\n/// You can specify the number of rows and columns.\n/// By default, it will insert a 3x3 table.\nexport const insertTableCommand = $command(\n 'InsertTable',\n (ctx) =>\n ({ row, col }: { row?: number; col?: number } = {}) =>\n (state, dispatch) => {\n const { selection, tr } = state\n const { from } = selection\n const table = createTable(ctx, row, col)\n const _tr = tr.replaceSelectionWith(table)\n const sel = Selection.findFrom(_tr.doc.resolve(from), 1, true)\n if (sel) _tr.setSelection(sel)\n\n dispatch?.(_tr)\n\n return true\n }\n)\n\nwithMeta(insertTableCommand, {\n displayName: 'Command<insertTableCommand>',\n group: 'Table',\n})\n\n/// A command for moving a row in a table.\n/// You should specify the `from` and `to` index.\nexport const moveRowCommand = $command(\n 'MoveRow',\n () =>\n ({ from, to, pos }: { from?: number; to?: number; pos?: number } = {}) =>\n moveTableRow({\n from: from ?? 0,\n to: to ?? 0,\n pos,\n })\n)\n\nwithMeta(moveRowCommand, {\n displayName: 'Command<moveRowCommand>',\n group: 'Table',\n})\n\n/// A command for moving a column in a table.\n/// You should specify the `from` and `to` index.\nexport const moveColCommand = $command(\n 'MoveCol',\n () =>\n ({ from, to, pos }: { from?: number; to?: number; pos?: number } = {}) =>\n moveTableColumn({\n from: from ?? 0,\n to: to ?? 0,\n pos,\n })\n)\n\nwithMeta(moveColCommand, {\n displayName: 'Command<moveColCommand>',\n group: 'Table',\n})\n\n/// A command for selecting a row.\nexport const selectRowCommand = $command<\n { index: number; pos?: number },\n 'SelectRow'\n>(\n 'SelectRow',\n () =>\n (payload: { index: number; pos?: number } = { index: 0 }) =>\n (state, dispatch) => {\n const { tr } = state\n const result = dispatch?.(selectRow(payload.index, payload.pos)(tr))\n\n return Boolean(result)\n }\n)\n\nwithMeta(selectRowCommand, {\n displayName: 'Command<selectRowCommand>',\n group: 'Table',\n})\n\n/// A command for selecting a column.\nexport const selectColCommand = $command<\n { index: number; pos?: number },\n 'SelectCol'\n>(\n 'SelectCol',\n () =>\n (payload: { index: number; pos?: number } = { index: 0 }) =>\n (state, dispatch) => {\n const { tr } = state\n const result = dispatch?.(selectCol(payload.index, payload.pos)(tr))\n\n return Boolean(result)\n }\n)\n\nwithMeta(selectColCommand, {\n displayName: 'Command<selectColCommand>',\n group: 'Table',\n})\n\n/// A command for selecting a table.\nexport const selectTableCommand = $command(\n 'SelectTable',\n () => () => (state, dispatch) => {\n const { tr } = state\n const result = dispatch?.(selectTable(tr))\n\n return Boolean(result)\n }\n)\n\nwithMeta(selectTableCommand, {\n displayName: 'Command<selectTableCommand>',\n group: 'Table',\n})\n\n/// A command for deleting selected cells.\n/// If the selection is a row or column, the row or column will be deleted.\n/// If all cells are selected, the table will be deleted.\nexport const deleteSelectedCellsCommand = $command(\n 'DeleteSelectedCells',\n () => () => (state, dispatch) => {\n const { selection } = state\n if (!(selection instanceof CellSelection)) return false\n\n const isRow = selection.isRowSelection()\n const isCol = selection.isColSelection()\n\n if (isRow && isCol) return deleteTable(state, dispatch)\n\n if (isCol) return deleteColumn(state, dispatch)\n else return deleteRow(state, dispatch)\n }\n)\n\nwithMeta(deleteSelectedCellsCommand, {\n displayName: 'Command<deleteSelectedCellsCommand>',\n group: 'Table',\n})\n\n/// A command for adding a column before the current column.\nexport const addColBeforeCommand = $command(\n 'AddColBefore',\n () => () => addColumnBefore\n)\n\nwithMeta(addColBeforeCommand, {\n displayName: 'Command<addColBeforeCommand>',\n group: 'Table',\n})\n\n/// A command for adding a column after the current column.\nexport const addColAfterCommand = $command(\n 'AddColAfter',\n () => () => addColumnAfter\n)\n\nwithMeta(addColAfterCommand, {\n displayName: 'Command<addColAfterCommand>',\n group: 'Table',\n})\n\n/// A command for adding a row before the current row.\nexport const addRowBeforeCommand = $command(\n 'AddRowBefore',\n (ctx) => () => (state, dispatch) => {\n if (!isInTable(state)) return false\n if (dispatch) {\n const rect = selectedRect(state)\n dispatch(addRowWithAlignment(ctx, state.tr, rect, rect.top))\n }\n return true\n }\n)\n\nwithMeta(addRowBeforeCommand, {\n displayName: 'Command<addRowBeforeCommand>',\n group: 'Table',\n})\n\n/// A command for adding a row after the current row.\nexport const addRowAfterCommand = $command(\n 'AddRowAfter',\n (ctx) => () => (state, dispatch) => {\n if (!isInTable(state)) return false\n if (dispatch) {\n const rect = selectedRect(state)\n dispatch(addRowWithAlignment(ctx, state.tr, rect, rect.bottom))\n }\n return true\n }\n)\n\nwithMeta(addRowAfterCommand, {\n displayName: 'Command<addRowAfterCommand>',\n group: 'Table',\n})\n\n/// A command for setting alignment property for selected cells.\n/// You can specify the alignment as `left`, `center`, or `right`.\n/// It's `left` by default.\nexport const setAlignCommand = $command<\n 'left' | 'center' | 'right',\n 'SetAlign'\n>(\n 'SetAlign',\n () =>\n (alignment = 'left') =>\n setCellAttr('alignment', alignment)\n)\n\nwithMeta(setAlignCommand, {\n displayName: 'Command<setAlignCommand>',\n group: 'Table',\n})\n", "import { commandsCtx } from '@milkdown/core'\nimport { paragraphSchema } from '@milkdown/preset-commonmark'\nimport { InputRule } from '@milkdown/prose/inputrules'\nimport {\n type Fragment as FragmentType,\n Fragment,\n type Node as ProsemirrorNode,\n Slice,\n} from '@milkdown/prose/model'\nimport { TextSelection } from '@milkdown/prose/state'\nimport { $inputRule, $pasteRule, $useKeymap } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\nimport {\n exitTable,\n goToNextTableCellCommand,\n goToPrevTableCellCommand,\n} from './command'\nimport {\n tableHeaderRowSchema,\n tableHeaderSchema,\n tableRowSchema,\n tableSchema,\n} from './schema'\nimport { createTable } from './utils'\n\n/// A input rule for creating table.\n/// For example, `|2x2|` will create a 2x2 table.\nexport const insertTableInputRule = $inputRule(\n (ctx) =>\n new InputRule(\n /^\\|(?<col>\\d+)[xX](?<row>\\d+)\\|\\s$/,\n (state, match, start, end) => {\n const $start = state.doc.resolve(start)\n if (\n !$start\n .node(-1)\n .canReplaceWith(\n $start.index(-1),\n $start.indexAfter(-1),\n tableSchema.type(ctx)\n )\n )\n return null\n\n const row = Math.max(Number(match.groups?.row ?? 0), 2)\n\n const tableNode = createTable(ctx, row, Number(match.groups?.col))\n const tr = state.tr.replaceRangeWith(start, end, tableNode)\n return tr\n .setSelection(TextSelection.create(tr.doc, start + 3))\n .scrollIntoView()\n }\n )\n)\n\nwithMeta(insertTableInputRule, {\n displayName: 'InputRule<insertTableInputRule>',\n group: 'Table',\n})\n\n/// A paste rule for fixing tables without header cells.\n/// This is a workaround for some editors (e.g. Google Docs) which allow creating tables without header cells,\n/// which is not supported by Markdown schema.\n/// This paste rule will promote the first data row to header, or add empty header cells as a fallback.\nexport const tablePasteRule = $pasteRule((ctx) => ({\n run: (slice, _view, isPlainText) => {\n if (isPlainText) {\n return slice\n }\n\n function fixTable(node: ProsemirrorNode): ProsemirrorNode {\n const rowsCount = node.childCount\n const colsCount = node.lastChild?.childCount ?? 0\n if (rowsCount === 0 || colsCount === 0) {\n return paragraphSchema.type(ctx).create()\n }\n\n const headerRow = node.firstChild\n const needToFixHeaderRow =\n colsCount > 0 && headerRow && headerRow.childCount === 0\n if (!needToFixHeaderRow) {\n return node\n }\n\n // If there are 2+ data rows (3+ total: empty header + 2+ data rows),\n // promote the first data row to header\n if (rowsCount >= 3) {\n const firstDataRow = node.child(1)\n const headerCells: ProsemirrorNode[] = []\n for (let i = 0; i < firstDataRow.childCount; i++) {\n const cell = firstDataRow.child(i)\n headerCells.push(\n tableHeaderSchema\n .type(ctx)\n .create(cell.attrs, cell.content, cell.marks)\n )\n }\n const newHeaderRow = headerRow.type.create(headerRow.attrs, headerCells)\n\n // Collect remaining data rows (skip promoted row at index 1)\n const remainingRows: ProsemirrorNode[] = []\n for (let i = 2; i < rowsCount; i++) {\n remainingRows.push(node.child(i))\n }\n\n return node.type.create(node.attrs, [newHeaderRow, ...remainingRows])\n }\n\n // Fallback: only 1 data row, can't promote (would leave 0 data rows).\n // Fill the empty header with blank cells.\n const headerCells = Array(colsCount)\n .fill(0)\n .map(() => tableHeaderSchema.type(ctx).createAndFill()!)\n\n const tableCells = new Slice(Fragment.from(headerCells), 0, 0)\n\n const newHeaderRow = headerRow.replace(0, 0, tableCells)\n const newTable = node.replace(\n 0,\n headerRow.nodeSize,\n new Slice(Fragment.from(newHeaderRow), 0, 0)\n )\n return newTable\n }\n\n // Wrap consecutive orphaned table_row nodes (at the top level of a fragment)\n // into a proper table. This happens when ProseMirror's parseSlice breaks\n // a table apart (e.g. when pasting multiple tables from Google Docs).\n function wrapOrphanedRows(fragment: FragmentType): FragmentType {\n const rowType = tableRowSchema.type(ctx)\n const nodes: ProsemirrorNode[] = []\n let pendingRows: ProsemirrorNode[] = []\n let hasOrphans = false\n\n function flushPendingRows() {\n if (pendingRows.length === 0) return\n\n // Create an empty table_header_row, then fixTable will promote the first data row\n const emptyHeaderRow = tableHeaderRowSchema.type(ctx).createAndFill()!\n const table = tableSchema\n .type(ctx)\n .create(null, [emptyHeaderRow, ...pendingRows])\n nodes.push(fixTable(table))\n pendingRows = []\n }\n\n fragment.forEach((node) => {\n if (node.type === rowType) {\n hasOrphans = true\n pendingRows.push(node)\n } else {\n flushPendingRows()\n nodes.push(node)\n }\n })\n flushPendingRows()\n\n return hasOrphans ? Fragment.from(nodes) : fragment\n }\n\n function fixFragment(fragment: FragmentType): FragmentType {\n // First, wrap any orphaned table_row nodes into tables\n let result = wrapOrphanedRows(fragment)\n\n // Then fix existing tables and recurse into children\n let changed = result !== fragment\n const fixed: ProsemirrorNode[] = []\n result.forEach((node) => {\n if (node.type === tableSchema.type(ctx)) {\n const fixedNode = fixTable(node)\n if (fixedNode !== node) changed = true\n fixed.push(fixedNode)\n } else if (node.childCount > 0) {\n const fixedContent = fixFragment(node.content)\n if (fixedContent !== node.content) {\n changed = true\n fixed.push(node.copy(fixedContent))\n } else {\n fixed.push(node)\n }\n } else {\n fixed.push(node)\n }\n })\n return changed ? Fragment.from(fixed) : fragment\n }\n\n // Remove empty paragraphs that directly precede a table\n // (artifacts of broken table parsing from Google Docs)\n function cleanEmptyParagraphs(fragment: FragmentType): FragmentType {\n const nodes: ProsemirrorNode[] = []\n const allNodes: ProsemirrorNode[] = []\n fragment.forEach((node) => allNodes.push(node))\n\n for (let i = 0; i < allNodes.length; i++) {\n const node = allNodes[i]!\n const next = allNodes[i + 1]\n if (\n node.type === paragraphSchema.type(ctx) &&\n node.content.size === 0 &&\n next &&\n next.type === tableSchema.type(ctx)\n ) {\n continue // skip empty paragraph before table\n }\n nodes.push(node)\n }\n\n return nodes.length < allNodes.length ? Fragment.from(nodes) : fragment\n }\n\n let fragment = fixFragment(slice.content)\n fragment = cleanEmptyParagraphs(fragment)\n return new Slice(Fragment.from(fragment), slice.openStart, slice.openEnd)\n },\n}))\n\nwithMeta(tablePasteRule, {\n displayName: 'PasteRule<table>',\n group: 'Table',\n})\n\n/// Keymap for table commands.\n/// - `<Mod-]>`/`<Tab>`: Move to the next cell.\n/// - `<Mod-[>`/`<Shift-Tab>`: Move to the previous cell.\n/// - `<Mod-Enter>`: Exit the table, and break it if possible.\nexport const tableKeymap = $useKeymap('tableKeymap', {\n NextCell: {\n priority: 100,\n shortcuts: ['Mod-]', 'Tab'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n\n return () => commands.call(goToNextTableCellCommand.key)\n },\n },\n PrevCell: {\n shortcuts: ['Mod-[', 'Shift-Tab'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n\n return () => commands.call(goToPrevTableCellCommand.key)\n },\n },\n ExitTable: {\n shortcuts: ['Mod-Enter', 'Enter'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n\n return () => commands.call(exitTable.key)\n },\n },\n})\n\nwithMeta(tableKeymap.ctx, {\n displayName: 'KeymapCtx<table>',\n group: 'Table',\n})\n\nwithMeta(tableKeymap.shortcuts, {\n displayName: 'Keymap<table>',\n group: 'Table',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\n\nconst id = 'footnote_definition'\nconst markdownId = 'footnoteDefinition'\n\n/// Footnote definition node schema.\nexport const footnoteDefinitionSchema = $nodeSchema(\n 'footnote_definition',\n () => ({\n group: 'block',\n content: 'block+',\n defining: true,\n attrs: {\n label: {\n default: '',\n validate: 'string',\n },\n },\n parseDOM: [\n {\n tag: `dl[data-type=\"${id}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n }\n },\n contentElement: 'dd',\n },\n ],\n toDOM: (node) => {\n const label = node.attrs.label\n\n return [\n 'dl',\n {\n // TODO: add a prosemirror plugin to sync label on change\n 'data-label': label,\n 'data-type': id,\n },\n ['dt', label],\n ['dd', 0],\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === markdownId,\n runner: (state, node, type) => {\n state\n .openNode(type, {\n label: node.label as string,\n })\n .next(node.children)\n .closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === id,\n runner: (state, node) => {\n state\n .openNode(markdownId, undefined, {\n label: node.attrs.label,\n identifier: node.attrs.label,\n })\n .next(node.content)\n .closeNode()\n },\n },\n })\n)\n\nwithMeta(footnoteDefinitionSchema.ctx, {\n displayName: 'NodeSchemaCtx<footnodeDef>',\n group: 'footnote',\n})\n\nwithMeta(footnoteDefinitionSchema.node, {\n displayName: 'NodeSchema<footnodeDef>',\n group: 'footnote',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { $nodeSchema } from '@milkdown/utils'\n\nimport { withMeta } from '../../__internal__'\n\nconst id = 'footnote_reference'\n\n/// Footnote reference node schema.\nexport const footnoteReferenceSchema = $nodeSchema(\n 'footnote_reference',\n () => ({\n group: 'inline',\n inline: true,\n atom: true,\n attrs: {\n label: {\n default: '',\n validate: 'string',\n },\n },\n parseDOM: [\n {\n tag: `sup[data-type=\"${id}\"]`,\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n }\n },\n },\n ],\n toDOM: (node) => {\n const label = node.attrs.label\n return [\n 'sup',\n {\n // TODO: add a prosemirror plugin to sync label on change\n 'data-label': label,\n 'data-type': id,\n },\n label,\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'footnoteReference',\n runner: (state, node, type) => {\n state.addNode(type, {\n label: node.label as string,\n })\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === id,\n runner: (state, node) => {\n state.addNode('footnoteReference', undefined, undefined, {\n label: node.attrs.label,\n identifier: node.attrs.label,\n })\n },\n },\n })\n)\n\nwithMeta(footnoteReferenceSchema.ctx, {\n displayName: 'NodeSchemaCtx<footnodeRef>',\n group: 'footnote',\n})\n\nwithMeta(footnoteReferenceSchema.node, {\n displayName: 'NodeSchema<footnodeRef>',\n group: 'footnote',\n})\n", "import { expectDomTypeError } from '@milkdown/exception'\nimport { listItemSchema } from '@milkdown/preset-commonmark'\nimport { InputRule } from '@milkdown/prose/inputrules'\nimport { $inputRule } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This schema extends the [list item](/preset-commonmark#list-item) schema and add task list support for it.\nexport const extendListItemSchemaForTask = listItemSchema.extendSchema(\n (prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n attrs: {\n ...baseSchema.attrs,\n checked: {\n default: null,\n validate: 'boolean|null',\n },\n },\n parseDOM: [\n {\n tag: 'li[data-item-type=\"task\"]',\n getAttrs: (dom) => {\n if (!(dom instanceof HTMLElement)) throw expectDomTypeError(dom)\n\n return {\n label: dom.dataset.label,\n listType: dom.dataset.listType,\n spread: dom.dataset.spread,\n checked: dom.dataset.checked\n ? dom.dataset.checked === 'true'\n : null,\n }\n },\n },\n ...(baseSchema?.parseDOM || []),\n ],\n toDOM: (node) => {\n if (baseSchema.toDOM && node.attrs.checked == null)\n return baseSchema.toDOM(node)\n\n return [\n 'li',\n {\n 'data-item-type': 'task',\n 'data-label': node.attrs.label,\n 'data-list-type': node.attrs.listType,\n 'data-spread': node.attrs.spread,\n 'data-checked': node.attrs.checked,\n },\n 0,\n ]\n },\n parseMarkdown: {\n match: ({ type }) => type === 'listItem',\n runner: (state, node, type) => {\n if (node.checked == null) {\n baseSchema.parseMarkdown.runner(state, node, type)\n return\n }\n\n const label = node.label != null ? `${node.label}.` : '•'\n const checked = node.checked != null ? Boolean(node.checked) : null\n const listType = node.label != null ? 'ordered' : 'bullet'\n const spread = node.spread != null ? `${node.spread}` : 'true'\n\n state.openNode(type, { label, listType, spread, checked })\n state.next(node.children)\n state.closeNode()\n },\n },\n toMarkdown: {\n match: (node) => node.type.name === 'list_item',\n runner: (state, node) => {\n if (node.attrs.checked == null) {\n baseSchema.toMarkdown.runner(state, node)\n return\n }\n\n const label = node.attrs.label\n const listType = node.attrs.listType\n const spread = node.attrs.spread === 'true'\n const checked = node.attrs.checked\n\n state.openNode('listItem', undefined, {\n label,\n listType,\n spread,\n checked,\n })\n state.next(node.content)\n state.closeNode()\n },\n },\n }\n }\n }\n)\n\nwithMeta(extendListItemSchemaForTask.node, {\n displayName: 'NodeSchema<taskListItem>',\n group: 'ListItem',\n})\n\nwithMeta(extendListItemSchemaForTask.ctx, {\n displayName: 'NodeSchemaCtx<taskListItem>',\n group: 'ListItem',\n})\n\n/// Input rule for wrapping a block in task list node.\n/// Users can type `[ ] ` or `[x] ` to wrap the block in task list node with checked status.\nexport const wrapInTaskListInputRule = $inputRule(() => {\n return new InputRule(\n /^\\[(?<checked>\\s|x)\\]\\s$/,\n (state, match, start, end) => {\n const pos = state.doc.resolve(start)\n let depth = 0\n let node = pos.node(depth)\n while (node && node.type.name !== 'list_item') {\n depth--\n node = pos.node(depth)\n }\n\n if (!node || node.attrs.checked != null) return null\n\n const checked = Boolean(match.groups?.checked === 'x')\n\n const finPos = pos.before(depth)\n const tr = state.tr\n\n tr.deleteRange(start, end).setNodeMarkup(finPos, undefined, {\n ...node.attrs,\n checked,\n })\n\n return tr\n }\n )\n})\n\nwithMeta(wrapInTaskListInputRule, {\n displayName: 'InputRule<wrapInTaskListInputRule>',\n group: 'ListItem',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { strikethroughKeymap } from '../mark'\nimport { tableKeymap } from '../node'\n\n/// @internal\nexport const keymap: MilkdownPlugin[] = [\n strikethroughKeymap,\n tableKeymap,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { strikethroughInputRule } from '../mark'\nimport { insertTableInputRule, wrapInTaskListInputRule } from '../node'\n\n/// @internal\nexport const inputRules: MilkdownPlugin[] = [\n insertTableInputRule,\n wrapInTaskListInputRule,\n]\n\nexport const markInputRules: MilkdownPlugin[] = [strikethroughInputRule]\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { tablePasteRule } from '../node'\n\n/// @internal\nexport const pasteRules: MilkdownPlugin[] = [tablePasteRule]\n", "import { $prose } from '@milkdown/utils'\nimport { imeSpan } from 'prosemirror-safari-ime-span'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is used to fix the bug of IME composing in table in Safari browser.\n/// original discussion in https://discuss.prosemirror.net/t/ime-composing-problems-on-td-or-th-element-in-safari-browser/4501\nexport const autoInsertSpanPlugin = $prose(() => imeSpan)\n\nwithMeta(autoInsertSpanPlugin, {\n displayName: 'Prose<autoInsertSpanPlugin>',\n group: 'Prose',\n})\n", "import { columnResizing } from '@milkdown/prose/tables'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is wrapping the `columnResizing` plugin from [prosemirror-tables](https://github.com/ProseMirror/prosemirror-tables).\nexport const columnResizingPlugin = $prose(() => columnResizing({}))\n\nwithMeta(columnResizingPlugin, {\n displayName: 'Prose<columnResizingPlugin>',\n group: 'Prose',\n})\n", "import { tableEditing } from '@milkdown/prose/tables'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is wrapping the `tableEditing` plugin from [prosemirror-tables](https://github.com/ProseMirror/prosemirror-tables).\nexport const tableEditingPlugin = $prose(() =>\n tableEditing({ allowTableNodeSelection: true })\n)\n\nwithMeta(tableEditingPlugin, {\n displayName: 'Prose<tableEditingPlugin>',\n group: 'Prose',\n})\n", "import type { $Remark } from '@milkdown/utils'\nimport type { Options } from 'remark-gfm'\n\nimport { $remark } from '@milkdown/utils'\nimport remarkGFM from 'remark-gfm'\n\nimport { withMeta } from '../__internal__'\n\n/// This plugin is wrapping the [remark-gfm](https://github.com/remarkjs/remark-gfm).\nexport const remarkGFMPlugin: $Remark<'remarkGFM', Options | null | undefined> =\n $remark('remarkGFM', () => remarkGFM)\n\nwithMeta(remarkGFMPlugin.plugin, {\n displayName: 'Remark<remarkGFMPlugin>',\n group: 'Remark',\n})\n\nwithMeta(remarkGFMPlugin.options, {\n displayName: 'RemarkConfig<remarkGFMPlugin>',\n group: 'Remark',\n})\n", "import type { Node } from '@milkdown/prose/model'\nimport type { Transaction } from '@milkdown/prose/state'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { withMeta } from '../__internal__'\n\nconst pluginKey = new PluginKey('MILKDOWN_KEEP_TABLE_ALIGN_PLUGIN')\n\nfunction getChildIndex(node: Node, parent: Node) {\n let index = 0\n parent.forEach((child, _offset, i) => {\n if (child === node) index = i\n })\n return index\n}\n\nexport const keepTableAlignPlugin = $prose(() => {\n return new Plugin({\n key: pluginKey,\n appendTransaction: (_tr, oldState, state) => {\n let tr: Transaction | undefined\n const check = (node: Node, pos: number) => {\n if (!tr) tr = state.tr\n\n if (node.type.name !== 'table_cell') return\n\n const $pos = state.doc.resolve(pos)\n const tableRow = $pos.node($pos.depth)\n const table = $pos.node($pos.depth - 1)\n const tableHeaderRow = table.firstChild\n // TODO: maybe consider add a header row\n if (!tableHeaderRow) return\n\n const index = getChildIndex(node, tableRow)\n const headerCell = tableHeaderRow.maybeChild(index)\n if (!headerCell) return\n const align = headerCell.attrs.alignment\n const currentAlign = node.attrs.alignment\n if (align === currentAlign) return\n\n tr.setNodeMarkup(pos, undefined, { ...node.attrs, alignment: align })\n }\n if (oldState.doc !== state.doc) state.doc.descendants(check)\n\n return tr\n },\n })\n})\n\nwithMeta(keepTableAlignPlugin, {\n displayName: 'Prose<keepTableAlignPlugin>',\n group: 'Prose',\n})\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport {\n autoInsertSpanPlugin,\n keepTableAlignPlugin,\n remarkGFMPlugin,\n tableEditingPlugin,\n} from '../plugin'\n\n/// @internal\nexport const plugins: MilkdownPlugin[] = [\n keepTableAlignPlugin,\n autoInsertSpanPlugin,\n remarkGFMPlugin,\n tableEditingPlugin,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { strikethroughAttr, strikethroughSchema } from '../mark'\nimport {\n extendListItemSchemaForTask,\n footnoteDefinitionSchema,\n footnoteReferenceSchema,\n tableCellSchema,\n tableHeaderRowSchema,\n tableHeaderSchema,\n tableRowSchema,\n tableSchema,\n} from '../node'\n\n/// @internal\nexport const schema: MilkdownPlugin[] = [\n extendListItemSchemaForTask,\n\n tableSchema,\n tableHeaderRowSchema,\n tableRowSchema,\n tableHeaderSchema,\n tableCellSchema,\n\n footnoteDefinitionSchema,\n footnoteReferenceSchema,\n\n strikethroughAttr,\n strikethroughSchema,\n].flat()\n", "import { toggleStrikethroughCommand } from '../mark'\nimport {\n addColAfterCommand,\n addColBeforeCommand,\n addRowAfterCommand,\n addRowBeforeCommand,\n deleteSelectedCellsCommand,\n exitTable,\n goToNextTableCellCommand,\n goToPrevTableCellCommand,\n insertTableCommand,\n moveColCommand,\n moveRowCommand,\n selectColCommand,\n selectRowCommand,\n selectTableCommand,\n setAlignCommand,\n} from '../node'\n\n/// @internal\nexport const commands = [\n goToNextTableCellCommand,\n goToPrevTableCellCommand,\n exitTable,\n insertTableCommand,\n moveRowCommand,\n moveColCommand,\n selectRowCommand,\n selectColCommand,\n selectTableCommand,\n deleteSelectedCellsCommand,\n addRowBeforeCommand,\n addRowAfterCommand,\n addColBeforeCommand,\n addColAfterCommand,\n setAlignCommand,\n\n toggleStrikethroughCommand,\n]\n", "import {\n commands,\n inputRules,\n keymap,\n markInputRules,\n pasteRules,\n plugins,\n schema,\n} from './composed'\n\nexport * from './node'\nexport * from './mark'\nexport * from './plugin'\nexport * from './composed'\n\n/// The GFM preset, includes all the plugins.\nexport const gfm = [\n schema,\n inputRules,\n pasteRules,\n markInputRules,\n keymap,\n commands,\n plugins,\n].flat()\n", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n", "import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n", "import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n", "import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n", "import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n", "/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n", "import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n", "/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n", "import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n", "/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n", "import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n", "import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n", "import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n", "import type { Ctx, MilkdownPlugin } from '@milkdown/ctx'\nimport type { Node as ProseNode } from '@milkdown/prose/model'\nimport type { Selection, Transaction } from '@milkdown/prose/state'\n\nimport {\n EditorViewReady,\n InitReady,\n SerializerReady,\n prosePluginsCtx,\n serializerCtx,\n} from '@milkdown/core'\nimport { createSlice } from '@milkdown/ctx'\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { debounce } from 'lodash-es'\n\n/// The dictionary of subscribers of each event.\nexport interface Subscribers {\n beforeMount: ((ctx: Ctx) => void)[]\n mounted: ((ctx: Ctx) => void)[]\n updated: ((ctx: Ctx, doc: ProseNode, prevDoc: ProseNode) => void)[]\n markdownUpdated: ((\n ctx: Ctx,\n markdown: string,\n prevMarkdown: string\n ) => void)[]\n blur: ((ctx: Ctx) => void)[]\n focus: ((ctx: Ctx) => void)[]\n destroy: ((ctx: Ctx) => void)[]\n selectionUpdated: ((\n ctx: Ctx,\n selection: Selection,\n prevSelection: Selection | null\n ) => void)[]\n}\n\n/// The manager of listeners. It provides methods to subscribe to events.\nexport class ListenerManager {\n private beforeMountedListeners: Array<(ctx: Ctx) => void> = []\n private mountedListeners: Array<(ctx: Ctx) => void> = []\n private updatedListeners: Array<\n (ctx: Ctx, doc: ProseNode, prevDoc: ProseNode) => void\n > = []\n private selectionUpdatedListeners: Array<\n (ctx: Ctx, selection: Selection, prevDoc: Selection | null) => void\n > = []\n private markdownUpdatedListeners: Array<\n (ctx: Ctx, markdown: string, prevMarkdown: string) => void\n > = []\n private blurListeners: Array<(ctx: Ctx) => void> = []\n private focusListeners: Array<(ctx: Ctx) => void> = []\n private destroyListeners: Array<(ctx: Ctx) => void> = []\n\n /// A getter to get all [subscribers](#interface-subscribers). You should not use this method directly.\n get listeners(): Subscribers {\n return {\n beforeMount: this.beforeMountedListeners,\n mounted: this.mountedListeners,\n updated: this.updatedListeners,\n markdownUpdated: this.markdownUpdatedListeners,\n blur: this.blurListeners,\n focus: this.focusListeners,\n destroy: this.destroyListeners,\n selectionUpdated: this.selectionUpdatedListeners,\n }\n }\n\n /// Subscribe to the beforeMount event.\n /// This event will be triggered before the editor is mounted.\n beforeMount = (fn: (ctx: Ctx) => void) => {\n this.beforeMountedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the mounted event.\n /// This event will be triggered after the editor is mounted.\n mounted = (fn: (ctx: Ctx) => void) => {\n this.mountedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the updated event.\n /// This event will be triggered after the editor state is updated and **the document is changed**.\n /// The second parameter is the current document and the third parameter is the previous document.\n updated = (\n fn: (ctx: Ctx, doc: ProseNode, prevDoc: ProseNode | null) => void\n ) => {\n this.updatedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the markdownUpdated event.\n /// This event will be triggered after the editor state is updated and **the document is changed**.\n /// The second parameter is the current markdown and the third parameter is the previous markdown.\n markdownUpdated(\n fn: (ctx: Ctx, markdown: string, prevMarkdown: string) => void\n ) {\n this.markdownUpdatedListeners.push(fn)\n return this\n }\n\n /// Subscribe to the blur event.\n /// This event will be triggered when the editor is blurred.\n blur(fn: (ctx: Ctx) => void) {\n this.blurListeners.push(fn)\n return this\n }\n\n /// Subscribe to the focus event.\n /// This event will be triggered when the editor is focused.\n focus(fn: (ctx: Ctx) => void) {\n this.focusListeners.push(fn)\n return this\n }\n\n /// Subscribe to the destroy event.\n /// This event will be triggered before the editor is destroyed.\n destroy(fn: (ctx: Ctx) => void) {\n this.destroyListeners.push(fn)\n return this\n }\n\n /// Subscribe to the selectionUpdated event.\n /// This event will be triggered when the editor selection is updated.\n selectionUpdated(\n fn: (\n ctx: Ctx,\n selection: Selection,\n prevSelection: Selection | null\n ) => void\n ) {\n this.selectionUpdatedListeners.push(fn)\n return this\n }\n}\n\n/// The ctx key of the listener manager.\n/// You can use `ctx.get(listenerCtx)` to get the [listener manager](#class-listenermanager).\nexport const listenerCtx = createSlice<ListenerManager>(\n new ListenerManager(),\n 'listener'\n)\n\n/// The plugin key of the listener prosemirror plugin.\nexport const key = new PluginKey('MILKDOWN_LISTENER')\n\n/// The listener plugin.\nexport const listener: MilkdownPlugin = (ctx) => {\n ctx.inject(listenerCtx, new ListenerManager())\n\n return async () => {\n await ctx.wait(InitReady)\n const listener = ctx.get(listenerCtx)\n const { listeners } = listener\n\n listeners.beforeMount.forEach((fn) => fn(ctx))\n\n await ctx.wait(SerializerReady)\n const serializer = ctx.get(serializerCtx)\n\n let prevDoc: ProseNode | null = null\n let prevMarkdown: string | null = null\n let prevSelection: Selection | null = null\n let latestTr: Transaction | null = null\n\n const debouncedHandler = debounce(() => {\n if (!latestTr) return\n const { doc } = latestTr\n\n if (listeners.updated.length > 0 && prevDoc && !prevDoc.eq(doc)) {\n listeners.updated.forEach((fn) => {\n fn(ctx, doc, prevDoc!)\n })\n }\n\n if (listeners.markdownUpdated.length > 0 && prevDoc && !prevDoc.eq(doc)) {\n const markdown = serializer(doc)\n listeners.markdownUpdated.forEach((fn) => {\n fn(ctx, markdown, prevMarkdown!)\n })\n prevMarkdown = markdown\n }\n\n prevDoc = doc\n latestTr = null\n }, 200)\n\n const plugin = new Plugin({\n key,\n view: () => {\n return {\n destroy: () => {\n listeners.destroy.forEach((fn) => fn(ctx))\n },\n }\n },\n props: {\n handleDOMEvents: {\n focus: () => {\n listeners.focus.forEach((fn) => fn(ctx))\n return false\n },\n blur: () => {\n listeners.blur.forEach((fn) => fn(ctx))\n return false\n },\n },\n },\n state: {\n init: (_, instance) => {\n prevDoc = instance.doc\n prevMarkdown = serializer(instance.doc)\n },\n apply: (tr) => {\n const currentSelection = tr.selection\n if (\n (!prevSelection && currentSelection) ||\n (prevSelection && !currentSelection.eq(prevSelection))\n ) {\n listeners.selectionUpdated.forEach((fn) => {\n fn(ctx, currentSelection, prevSelection)\n })\n prevSelection = currentSelection\n }\n\n if (\n !(tr.docChanged || tr.storedMarksSet) ||\n tr.getMeta('addToHistory') === false\n )\n return\n\n latestTr = tr\n debouncedHandler()\n },\n },\n })\n ctx.update(prosePluginsCtx, (x) => x.concat(plugin))\n\n await ctx.wait(EditorViewReady)\n listeners.mounted.forEach((fn) => fn(ctx))\n }\n}\n\nlistener.meta = {\n package: '@milkdown/plugin-listener',\n displayName: 'Listener',\n}\n", "type UnknownRecord = Record<string, unknown>\nexport function isPureText(\n content: UnknownRecord | UnknownRecord[] | undefined | null\n): boolean {\n if (!content) return false\n if (Array.isArray(content)) {\n if (content.length > 1) return false\n return isPureText(content[0])\n }\n\n const child = content.content\n if (child) return isPureText(child as UnknownRecord[])\n\n return content.type === 'text'\n}\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nexport function withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/plugin-clipboard',\n ...meta,\n },\n })\n\n return plugin\n}\n", "import type { EditorView } from '@milkdown/prose/view'\n\nimport {\n editorViewOptionsCtx,\n parserCtx,\n schemaCtx,\n serializerCtx,\n} from '@milkdown/core'\nimport { getNodeFromSchema, isTextOnlySlice } from '@milkdown/prose'\nimport {\n DOMParser,\n DOMSerializer,\n type Node as ProsemirrorNode,\n type Slice,\n} from '@milkdown/prose/model'\nimport { Plugin, PluginKey, TextSelection } from '@milkdown/prose/state'\nimport { $prose } from '@milkdown/utils'\n\nimport { isPureText } from './__internal__/is-pure-text'\nimport { withMeta } from './__internal__/with-meta'\n\nfunction dispatchPasteSlice(view: EditorView, slice: Slice): boolean {\n const node = isTextOnlySlice(slice)\n if (node) {\n view.dispatch(view.state.tr.replaceSelectionWith(node, true))\n return true\n }\n\n try {\n view.dispatch(view.state.tr.replaceSelection(slice))\n return true\n } catch {\n return false\n }\n}\n\n/// The prosemirror plugin for clipboard.\nexport const clipboard = $prose((ctx) => {\n const schema = ctx.get(schemaCtx)\n\n // Set editable props for https://github.com/Milkdown/milkdown/issues/190\n ctx.update(editorViewOptionsCtx, (prev) => ({\n ...prev,\n editable: prev.editable ?? (() => true),\n transformPastedHTML: (html: string, view: EditorView) => {\n const prevTransform = prev.transformPastedHTML\n if (prevTransform) html = prevTransform(html, view)\n\n // Google Docs wraps pasted content in <b style=\"font-weight:normal;\" id=\"docs-internal-guid-...\">\n // This wrapper causes ProseMirror's parser to fail when parsing multiple tables.\n // Strip it so block content is at the top level.\n if (html.includes('docs-internal-guid')) {\n html = html.replace(\n /<b[^>]*id=\"docs-internal-guid[^\"]*\"[^>]*>([\\s\\S]*)<\\/b>/,\n '$1'\n )\n // Also unwrap <div> elements that wrap tables.\n // Google Docs wraps each table in <div dir=\"ltr\" ...><table>...</table></div>\n // These wrappers interfere with ProseMirror's parseSlice for multiple tables.\n html = html.replace(/<div[^>]*>(<table[\\s\\S]*?<\\/table>)<\\/div>/g, '$1')\n }\n return html\n },\n }))\n\n const key = new PluginKey('MILKDOWN_CLIPBOARD')\n const plugin = new Plugin({\n key,\n props: {\n handlePaste: (view, event, preProcessedSlice) => {\n const parser = ctx.get(parserCtx)\n const editable = view.props.editable?.(view.state)\n const { clipboardData } = event\n if (!editable || !clipboardData) return false\n\n const currentNode = view.state.selection.$from.node()\n if (currentNode.type.spec.code) return false\n\n const text = clipboardData.getData('text/plain')\n\n // if is copied from vscode, try to create a code block\n const vscodeData = clipboardData.getData('vscode-editor-data')\n if (vscodeData) {\n const data = JSON.parse(vscodeData)\n const language = data?.mode\n if (text && language) {\n const { tr } = view.state\n const codeBlock = getNodeFromSchema('code_block', schema)\n\n tr.replaceSelectionWith(codeBlock.create({ language }))\n .setSelection(\n TextSelection.near(\n tr.doc.resolve(Math.max(0, tr.selection.from - 2))\n )\n )\n .insertText(text.replace(/\\r\\n?/g, '\\n'))\n\n view.dispatch(tr)\n return true\n }\n }\n\n const html = clipboardData.getData('text/html')\n if (html.length === 0 && text.length === 0) return false\n\n // When HTML is present, use the pre-processed Slice from ProseMirror.\n // ProseMirror's parseFromClipboard already ran transformPastedHTML\n // (e.g. Google Docs wrapper stripping) and transformPasted (paste rules\n // like table header fix), producing a better Slice than re-parsing here.\n if (html.length > 0 && preProcessedSlice) {\n return dispatchPasteSlice(view, preProcessedSlice)\n }\n\n const domParser = DOMParser.fromSchema(schema)\n let dom: Node\n if (html.length === 0) {\n const slice = parser(text)\n if (!slice || typeof slice === 'string') return false\n\n dom = DOMSerializer.fromSchema(schema).serializeFragment(\n slice.content\n )\n } else {\n const template = document.createElement('template')\n template.innerHTML = html\n dom = template.content.cloneNode(true)\n template.remove()\n }\n\n const slice = domParser.parseSlice(dom)\n return dispatchPasteSlice(view, slice)\n },\n clipboardTextSerializer: (slice) => {\n const serializer = ctx.get(serializerCtx)\n const isText = isPureText(slice.content.toJSON())\n if (isText)\n return (slice.content as unknown as ProsemirrorNode).textBetween(\n 0,\n slice.content.size,\n '\\n\\n'\n )\n\n const doc = schema.topNodeType.createAndFill(undefined, slice.content)\n if (!doc) return ''\n const value = serializer(doc)\n return value\n },\n },\n })\n\n return plugin\n})\n\nwithMeta(clipboard, { displayName: 'Prose<clipboard>' })\n", "var GOOD_LEAF_SIZE = 200;\n\n// :: class<T> A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence<T>>) \u2192 RopeSequence<T>\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) \u2192 RopeSequence<T>\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) \u2192 T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) \u2192 ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) \u2192 U, ?number, ?number) \u2192 [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence<T>>) \u2192 RopeSequence<T>\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n", "import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' \u2014 a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(maps) {\n let result = [];\n for (let i = maps.length - 1; i >= 0 && result.length == 0; i--)\n maps[i].forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return null;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n return pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist });\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command || !view.editable)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\nfunction buildCommand(redo, scroll) {\n return (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || (redo ? hist.undone : hist.done).eventCount == 0)\n return false;\n if (dispatch) {\n let tr = histTransaction(hist, state, redo);\n if (tr)\n dispatch(scroll ? tr.scrollIntoView() : tr);\n }\n return true;\n };\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = buildCommand(false, true);\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = buildCommand(true, true);\n/**\nA command function that undoes the last change. Don't scroll the\nselection into view.\n*/\nconst undoNoScroll = buildCommand(false, false);\n/**\nA command function that redoes the last undone change. Don't\nscroll the selection into view.\n*/\nconst redoNoScroll = buildCommand(true, false);\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n/**\nReturns true if the given transaction was generated by the history\nplugin.\n*/\nfunction isHistoryTransaction(tr) {\n return tr.getMeta(historyKey) != null;\n}\n\nexport { closeHistory, history, isHistoryTransaction, redo, redoDepth, redoNoScroll, undo, undoDepth, undoNoScroll };\n", "import type { Meta, MilkdownPlugin } from '@milkdown/ctx'\n\nimport { commandsCtx } from '@milkdown/core'\nimport {\n history as prosemirrorHistory,\n redo,\n undo,\n} from '@milkdown/prose/history'\nimport { $command, $ctx, $prose, $useKeymap } from '@milkdown/utils'\n\nfunction withMeta<T extends MilkdownPlugin>(\n plugin: T,\n meta: Partial<Meta> & Pick<Meta, 'displayName'>\n): T {\n Object.assign(plugin, {\n meta: {\n package: '@milkdown/plugin-history',\n ...meta,\n },\n })\n\n return plugin\n}\n\n/// The milkdown command wrapper of [undo API](https://prosemirror.net/docs/ref/#history.undo) in [prosemirror-history](https://prosemirror.net/docs/ref/#history).\nexport const undoCommand = $command('Undo', () => () => undo)\n\nwithMeta(undoCommand, {\n displayName: 'Command<undo>',\n})\n\n/// The milkdown command wrapper of [redo API](https://prosemirror.net/docs/ref/#history.redo) in [prosemirror-history](https://prosemirror.net/docs/ref/#history).\nexport const redoCommand = $command('Redo', () => () => redo)\n\nwithMeta(redoCommand, {\n displayName: 'Command<redo>',\n})\n\n/// The [config](https://prosemirror.net/docs/ref/#history.history%5Econfig) of prosemirror history plugin.\nexport const historyProviderConfig = $ctx<\n { depth?: number; newGroupDelay?: number },\n 'historyProviderConfig'\n>({}, 'historyProviderConfig')\n\nwithMeta(historyProviderConfig, {\n displayName: 'Ctx<historyProviderConfig>',\n})\n\n/// The milkdown wrapper of [history API](https://prosemirror.net/docs/ref/#history.history) in [prosemirror-history](https://prosemirror.net/docs/ref/#history).\nexport const historyProviderPlugin = $prose((ctx) =>\n prosemirrorHistory(ctx.get(historyProviderConfig.key))\n)\n\nwithMeta(historyProviderPlugin, {\n displayName: 'Ctx<historyProviderPlugin>',\n})\n\n/// The keymap of history plugin, it's `mod-z` for undo and `mod-y`/`shift-mod-z` for redo.\nexport const historyKeymap = $useKeymap('historyKeymap', {\n Undo: {\n shortcuts: 'Mod-z',\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(undoCommand.key)\n },\n },\n Redo: {\n shortcuts: ['Mod-y', 'Shift-Mod-z'],\n command: (ctx) => {\n const commands = ctx.get(commandsCtx)\n return () => commands.call(redoCommand.key)\n },\n },\n})\n\nwithMeta(historyKeymap.ctx, {\n displayName: 'KeymapCtx<history>',\n})\nwithMeta(historyKeymap.shortcuts, {\n displayName: 'Keymap<history>',\n})\n\n/// The milkdown history plugin.\nexport const history: MilkdownPlugin[] = [\n historyProviderConfig,\n historyProviderPlugin,\n historyKeymap,\n undoCommand,\n redoCommand,\n].flat()\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\nimport type { Node } from '@milkdown/prose/model'\nimport type { EditorState } from '@milkdown/prose/state'\n\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { $ctx, $prose } from '@milkdown/utils'\n\n/// Options for trailing config.\nexport interface TrailingConfigOptions {\n /// A function that returns a boolean value.\n /// If it returns `true`, the plugin will append a node at the end of the document.\n /// By default, it returns `false` if the last node is a heading or a paragraph.\n shouldAppend: (lastNode: Node | null, state: EditorState) => boolean\n /// A function that returns a node.\n /// By default, it returns a paragraph node.\n getNode: (state: EditorState) => Node\n}\n\n/// A slice contains the trailing config.\n/// You can use [TrailingConfigOptions](#TrailingConfigOptions) to customize the behavior of the plugin.\nexport const trailingConfig = $ctx<TrailingConfigOptions, 'trailingConfig'>(\n {\n shouldAppend: (lastNode) => {\n if (!lastNode) return false\n\n if (['heading', 'paragraph'].includes(lastNode.type.name)) return false\n\n return true\n },\n getNode: (state) => state.schema.nodes.paragraph!.create(),\n },\n 'trailingConfig'\n)\n\ntrailingConfig.meta = {\n package: '@milkdown/plugin-trailing',\n displayName: 'Ctx<trailingConfig>',\n}\n\n/// The prosemirror plugin for trailing.\nexport const trailingPlugin = $prose((ctx) => {\n const trailingPluginKey = new PluginKey('MILKDOWN_TRAILING')\n const { shouldAppend, getNode } = ctx.get(trailingConfig.key)\n const plugin = new Plugin({\n key: trailingPluginKey,\n state: {\n init: (_, state) => {\n const lastNode = state.tr.doc.lastChild\n\n return shouldAppend(lastNode, state)\n },\n apply: (tr, value, _, state) => {\n if (!tr.docChanged) return value\n\n const lastNode = tr.doc.lastChild\n\n return shouldAppend(lastNode, state)\n },\n },\n appendTransaction: (_, __, state) => {\n const { doc, tr } = state\n const nodeType = getNode?.(state)\n const shouldInsertNodeAtEnd = plugin.getState(state)\n const endPosition = doc.content.size\n\n if (!shouldInsertNodeAtEnd || !nodeType) return\n\n return tr.insert(endPosition, nodeType)\n },\n })\n\n return plugin\n})\n\ntrailingPlugin.meta = {\n package: '@milkdown/plugin-trailing',\n displayName: 'Prose<trailing>',\n}\n\n/// All plugins exported by this package.\nexport const trailing: MilkdownPlugin[] = [trailingConfig, trailingPlugin]\n", "import type { Node } from '@milkdown/prose/model'\n\nimport { missingNodeInSchema } from '@milkdown/exception'\n\nimport type { Uploader } from './upload'\n\n/// Read the image file as base64.\nexport function readImageAsBase64(\n file: File\n): Promise<{ alt: string; src: string }> {\n return new Promise((resolve) => {\n const reader = new FileReader()\n reader.addEventListener(\n 'load',\n () => {\n resolve({\n alt: file.name,\n src: reader.result as string,\n })\n },\n false\n )\n reader.readAsDataURL(file)\n })\n}\n\n/// The default uploader.\n/// It will upload transform images to base64.\nexport const defaultUploader: Uploader = async (files, schema) => {\n const imgs: File[] = []\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i)\n if (!file) continue\n\n if (!file.type.includes('image')) continue\n\n imgs.push(file)\n }\n\n const { image } = schema.nodes\n if (!image) throw missingNodeInSchema('image')\n\n const data = await Promise.all(imgs.map((img) => readImageAsBase64(img)))\n\n return data.map(({ alt, src }) => image.createAndFill({ src, alt }) as Node)\n}\n", "import type { Ctx } from '@milkdown/ctx'\nimport type { Fragment, Node, Schema } from '@milkdown/prose/model'\nimport type { EditorState } from '@milkdown/prose/state'\nimport type { EditorView } from '@milkdown/prose/view'\n\nimport { schemaCtx } from '@milkdown/core'\nimport { Plugin, PluginKey } from '@milkdown/prose/state'\nimport { Decoration, DecorationSet } from '@milkdown/prose/view'\nimport { $ctx, $prose } from '@milkdown/utils'\n\nimport { defaultUploader } from './default-uploader'\n\n/// @internal\nexport type Uploader = UploadOptions['uploader']\ninterface Spec {\n id: symbol\n pos: number\n}\n\n/// The configuration for upload.\nexport interface UploadOptions {\n /// The uploader for upload plugin.\n /// It takes the files / schema / ctx / insertPos as parameters.\n /// It should return a `Promise` of Prosemirror `Fragment` or `Node` or `Node[]`.\n uploader: (\n files: FileList,\n schema: Schema,\n ctx: Ctx,\n insertPos: number\n ) => Promise<Fragment | Node | Node[]>\n /// Whether to enable the html file uploader.\n /// When paste files from html (for example copy images by right click context menu),\n /// this option will make the plugin to upload the image copied instead of using the original link.\n enableHtmlFileUploader: boolean\n /// The factory for upload widget.\n /// The widget will be displayed when the file is uploading.\n /// It takes the position and spec as parameters.\n /// It should return a `Decoration` of Prosemirror.\n /// By default, it will return `<span>Upload in progress...</span>`.\n uploadWidgetFactory: (\n pos: number,\n spec: Parameters<typeof Decoration.widget>[2]\n ) => Decoration\n // A custom calculator for new nodes to insert\n getInsertPos?: (\n event: ClipboardEvent | DragEvent,\n ctx: Ctx,\n defaultInsertPos: number\n ) => number\n}\n\n/// A slice that contains the configuration for upload.\n/// It should be typed of `UploadConfig`.\nexport const uploadConfig = $ctx<UploadOptions, 'uploadConfig'>(\n {\n uploader: defaultUploader,\n enableHtmlFileUploader: false,\n uploadWidgetFactory: (pos, spec) => {\n const widgetDOM = document.createElement('span')\n widgetDOM.textContent = 'Upload in progress...'\n return Decoration.widget(pos, widgetDOM, spec)\n },\n },\n 'uploadConfig'\n)\n\nuploadConfig.meta = {\n package: '@milkdown/plugin-upload',\n displayName: 'Ctx<uploadConfig>',\n}\n\n/// The prosemirror plugin for upload.\nexport const uploadPlugin = $prose((ctx) => {\n const pluginKey = new PluginKey('MILKDOWN_UPLOAD')\n\n const findPlaceholder = (state: EditorState, id: symbol): number => {\n const decorations = pluginKey.getState(state)\n if (!decorations) return -1\n const found = decorations.find(\n undefined,\n undefined,\n (spec: Spec) => spec.id === id\n )\n if (!found.length) return -1\n return found[0]?.from ?? -1\n }\n\n const handleUpload = (\n view: EditorView,\n event: DragEvent | ClipboardEvent,\n files: FileList | undefined\n ) => {\n if (!files || files.length <= 0) return false\n\n const id = Symbol('upload symbol')\n const schema = ctx.get(schemaCtx)\n const { uploader, getInsertPos } = ctx.get(uploadConfig.key)\n const { tr } = view.state\n\n const defaultInsertPos =\n event instanceof DragEvent\n ? (view.posAtCoords({ left: event.clientX, top: event.clientY })?.pos ??\n tr.selection.from)\n : tr.selection.from\n\n const insertPos =\n typeof getInsertPos === 'function'\n ? getInsertPos(event, ctx, defaultInsertPos)\n : defaultInsertPos\n\n view.dispatch(tr.setMeta(pluginKey, { add: { id, pos: insertPos } }))\n\n uploader(files, schema, ctx, insertPos)\n .then((fragment) => {\n const pos = findPlaceholder(view.state, id)\n if (pos < 0) return\n\n view.dispatch(\n view.state.tr\n .replaceWith(pos, pos, fragment)\n .setMeta(pluginKey, { remove: { id } })\n )\n })\n .catch((e) => {\n console.error(e)\n })\n return true\n }\n\n return new Plugin({\n key: pluginKey,\n state: {\n init() {\n return DecorationSet.empty\n },\n apply(this: Plugin, tr, set) {\n const _set = set.map(tr.mapping, tr.doc)\n const action = tr.getMeta(this)\n if (!action) return _set\n\n if (action.add) {\n const { uploadWidgetFactory } = ctx.get(uploadConfig.key)\n\n const decoration = uploadWidgetFactory(action.add.pos, {\n id: action.add.id,\n })\n return _set.add(tr.doc, [decoration])\n }\n if (action.remove) {\n const target = _set.find(\n undefined,\n undefined,\n (spec: Spec) => spec.id === action.remove.id\n )\n return _set.remove(target)\n }\n\n return _set\n },\n },\n props: {\n decorations(this: Plugin, state) {\n return this.getState(state)\n },\n handlePaste: (view, event) => {\n const { enableHtmlFileUploader } = ctx.get(uploadConfig.key)\n if (!(event instanceof ClipboardEvent)) return false\n\n if (\n !enableHtmlFileUploader &&\n event.clipboardData?.getData('text/html')\n )\n return false\n\n return handleUpload(view, event, event.clipboardData?.files)\n },\n handleDrop: (view, event) => {\n if (!(event instanceof DragEvent)) return false\n\n return handleUpload(view, event, event.dataTransfer?.files)\n },\n },\n })\n})\n\nuploadPlugin.meta = {\n package: '@milkdown/plugin-upload',\n displayName: 'Prose<upload>',\n}\n", "import type { MilkdownPlugin } from '@milkdown/ctx'\n\nimport { uploadConfig, uploadPlugin } from './upload'\n\nexport * from './upload'\nexport * from './default-uploader'\n\n/// All plugins exported by this package.\nexport const upload: MilkdownPlugin[] = [uploadConfig, uploadPlugin]\n", "export const CODE_BLOCK_TONES = [\"auto\", \"light\", \"dark\"] as const;\n\nexport type CodeBlockTone = typeof CODE_BLOCK_TONES[number];\n\nexport interface CodeCopyLabels {\n copyLabel: string;\n copiedLabel: string;\n}\n\nexport interface BlockToneLabels {\n toneLabel: string;\n autoLabel: string;\n lightLabel: string;\n darkLabel: string;\n}\n\nexport const CODE_BLOCK_CLASSES = {\n actionGroup: \"code-actions\",\n block: \"code-block\",\n copyButton: \"copy-code\",\n copySource: \"code-copy-source\",\n diagramBlock: \"diagram-block\",\n language: \"code-language\",\n mathBlock: \"math-block\",\n toneButton: \"code-color-toggle\"\n} as const;\n\nexport function normalizeCodeBlockTone(value: string | undefined): CodeBlockTone {\n return CODE_BLOCK_TONES.includes(value as CodeBlockTone) ? value as CodeBlockTone : \"auto\";\n}\n\nexport function nextCodeBlockTone(value: string | undefined): CodeBlockTone {\n const current = normalizeCodeBlockTone(value);\n const index = CODE_BLOCK_TONES.indexOf(current);\n return CODE_BLOCK_TONES[(index + 1) % CODE_BLOCK_TONES.length];\n}\n\nexport function codeBlockToneLabel(tone: CodeBlockTone, labels: BlockToneLabels): string {\n if (tone === \"light\") {\n return labels.lightLabel;\n }\n if (tone === \"dark\") {\n return labels.darkLabel;\n }\n return labels.autoLabel;\n}\n", "export function escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nexport function escapeAttribute(value: string): string {\n return escapeHtml(value).replace(/'/g, \"'\");\n}\n\nexport function escapeJsonForScript(json: string): string {\n return json.replace(/[<>&\\u2028\\u2029]/g, (character) => {\n switch (character) {\n case \"<\":\n return \"\\\\u003c\";\n case \">\":\n return \"\\\\u003e\";\n case \"&\":\n return \"\\\\u0026\";\n case \"\\u2028\":\n return \"\\\\u2028\";\n case \"\\u2029\":\n return \"\\\\u2029\";\n default:\n return character;\n }\n });\n}\n\nexport function safeInlineUrl(value: string): string {\n const url = String(value || \"\").trim();\n const scheme = extractUrlScheme(url);\n if (!scheme) {\n return url;\n }\n return [\"http\", \"https\", \"mailto\"].includes(scheme) ? url : \"#\";\n}\n\nfunction extractUrlScheme(url: string): string | undefined {\n const colonIndex = url.indexOf(\":\");\n if (colonIndex <= 0) {\n return undefined;\n }\n const rawScheme = url.slice(0, colonIndex);\n const normalized = Array.from(rawScheme)\n .filter((character) => {\n const code = character.charCodeAt(0);\n return code > 0x20 && code !== 0x7f;\n })\n .join(\"\")\n .toLowerCase();\n return /^[a-z][a-z0-9+.-]*$/.test(normalized) ? normalized : undefined;\n}\n", "import katex from \"katex\";\nimport { escapeAttribute, escapeHtml } from \"../utils/html\";\n\nexport type SafeInlineHtmlTag = \"u\" | \"mark\" | \"kbd\";\n\nexport interface MarkdownFeaturePolicy {\n katexEnabled?: boolean;\n safeInlineHtmlTags?: readonly SafeInlineHtmlTag[];\n}\n\nexport interface RenderMathOptions {\n katexEnabled?: boolean;\n errorColor?: string;\n}\n\nexport interface FootnoteRenderModel {\n id: string;\n normalizedId: string;\n label: string;\n exists: boolean;\n referenceId: string;\n definitionId: string;\n fallbackMarkdown: string;\n}\n\nexport interface BlockquoteAdmonition {\n type: \"note\" | \"tip\" | \"important\" | \"warning\" | \"caution\";\n label: string;\n body: string;\n}\n\nexport const DEFAULT_SAFE_INLINE_HTML_TAGS: readonly SafeInlineHtmlTag[] = [\"u\", \"mark\", \"kbd\"];\n\nexport function renderKatexHtml(expression: string, displayMode: boolean, options: RenderMathOptions = {}): string {\n if (!options.katexEnabled) {\n return `<code>${escapeHtml(displayMode ? `$$\\n${expression}\\n$$` : `$${expression}$`)}</code>`;\n }\n try {\n return katex.renderToString(expression, {\n displayMode,\n throwOnError: false,\n errorColor: options.errorColor || \"#cc0000\"\n });\n } catch {\n return `<code>${escapeHtml(expression)}</code>`;\n }\n}\n\nexport function normalizeFootnoteId(id: string): string {\n return String(id || \"\").trim().replace(/\\s+/g, \"-\").toLowerCase();\n}\n\nexport function resolveFootnoteReference(id: string, footnotes?: ReadonlyMap<string, string>): FootnoteRenderModel {\n const label = String(id || \"\").trim();\n const normalizedId = normalizeFootnoteId(label);\n return {\n id: label,\n normalizedId,\n label,\n exists: footnotes ? hasFootnote(footnotes, label, normalizedId) : true,\n referenceId: `fnref-${normalizedId}`,\n definitionId: `fn-${normalizedId}`,\n fallbackMarkdown: `[^${label}]`\n };\n}\n\nfunction hasFootnote(footnotes: ReadonlyMap<string, string>, label: string, normalizedId: string): boolean {\n if (footnotes.has(label)) {\n return true;\n }\n for (const id of footnotes.keys()) {\n if (normalizeFootnoteId(id) === normalizedId) {\n return true;\n }\n }\n return false;\n}\n\nexport function renderSafeInlineHtmlToken(tag: SafeInlineHtmlTag, innerHtml: string): string {\n return `<${tag}>${innerHtml}</${tag}>`;\n}\n\nexport function isSafeInlineHtmlTag(value: string, policy: MarkdownFeaturePolicy = {}): value is SafeInlineHtmlTag {\n const normalized = value.toLowerCase();\n const allowed = policy.safeInlineHtmlTags || DEFAULT_SAFE_INLINE_HTML_TAGS;\n return allowed.includes(normalized as SafeInlineHtmlTag);\n}\n\nexport function renderInertInlineHtml(value: string): string {\n return `<code class=\"safe-html-source\">${escapeHtml(value)}</code>`;\n}\n\nexport function renderFootnoteReferenceHtml(model: FootnoteRenderModel): string {\n if (!model.exists) {\n return escapeHtml(model.fallbackMarkdown);\n }\n return `<sup id=\"${escapeAttribute(model.referenceId)}\"><a href=\"#${escapeAttribute(model.definitionId)}\">${escapeHtml(model.label)}</a></sup>`;\n}\n\nexport function renderFootnoteDefinitionHtml(model: FootnoteRenderModel, html: string): string {\n return `<li id=\"${escapeAttribute(model.definitionId)}\">${html}</li>`;\n}\n\nexport function detectBlockquoteAdmonition(text: string): BlockquoteAdmonition | null {\n const lines = String(text || \"\").split(/\\r?\\n/);\n const match = lines[0]?.trim().match(/^\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)]\\s*(.*)$/i);\n if (!match) {\n return null;\n }\n const type = match[1].toLowerCase() as BlockquoteAdmonition[\"type\"];\n const rest = match[2] ? [match[2]] : [];\n return {\n type,\n label: match[1].toUpperCase(),\n body: [...rest, ...lines.slice(1)].join(\"\\n\").trim()\n };\n}\n", "//#region src/error.ts\nvar ShikiError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"ShikiError\";\n\t}\n};\n\n//#endregion\nexport { ShikiError };", "// src/utils.ts\nfunction clone(something) {\n return doClone(something);\n}\nfunction doClone(something) {\n if (Array.isArray(something)) {\n return cloneArray(something);\n }\n if (something instanceof RegExp) {\n return something;\n }\n if (typeof something === \"object\") {\n return cloneObj(something);\n }\n return something;\n}\nfunction cloneArray(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = doClone(arr[i]);\n }\n return r;\n}\nfunction cloneObj(obj) {\n let r = {};\n for (let key in obj) {\n r[key] = doClone(obj[key]);\n }\n return r;\n}\nfunction mergeObjects(target, ...sources) {\n sources.forEach((source) => {\n for (let key in source) {\n target[key] = source[key];\n }\n });\n return target;\n}\nfunction basename(path) {\n const idx = ~path.lastIndexOf(\"/\") || ~path.lastIndexOf(\"\\\\\");\n if (idx === 0) {\n return path;\n } else if (~idx === path.length - 1) {\n return basename(path.substring(0, path.length - 1));\n } else {\n return path.substr(~idx + 1);\n }\n}\nvar CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/g;\nvar RegexSource = class {\n static hasCaptures(regexSource) {\n if (regexSource === null) {\n return false;\n }\n CAPTURING_REGEX_SOURCE.lastIndex = 0;\n return CAPTURING_REGEX_SOURCE.test(regexSource);\n }\n static replaceCaptures(regexSource, captureSource, captureIndices) {\n return regexSource.replace(CAPTURING_REGEX_SOURCE, (match, index, commandIndex, command) => {\n let capture = captureIndices[parseInt(index || commandIndex, 10)];\n if (capture) {\n let result = captureSource.substring(capture.start, capture.end);\n while (result[0] === \".\") {\n result = result.substring(1);\n }\n switch (command) {\n case \"downcase\":\n return result.toLowerCase();\n case \"upcase\":\n return result.toUpperCase();\n default:\n return result;\n }\n } else {\n return match;\n }\n });\n }\n};\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nfunction strArrCmp(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n let len1 = a.length;\n let len2 = b.length;\n if (len1 === len2) {\n for (let i = 0; i < len1; i++) {\n let res = strcmp(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n }\n return len1 - len2;\n}\nfunction isValidHexColor(hex) {\n if (/^#[0-9a-f]{6}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{8}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{3}$/i.test(hex)) {\n return true;\n }\n if (/^#[0-9a-f]{4}$/i.test(hex)) {\n return true;\n }\n return false;\n}\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n}\nvar CachedFn = class {\n constructor(fn) {\n this.fn = fn;\n }\n cache = /* @__PURE__ */ new Map();\n get(key) {\n if (this.cache.has(key)) {\n return this.cache.get(key);\n }\n const value = this.fn(key);\n this.cache.set(key, value);\n return value;\n }\n};\n\n// src/theme.ts\nvar Theme = class {\n constructor(_colorMap, _defaults, _root) {\n this._colorMap = _colorMap;\n this._defaults = _defaults;\n this._root = _root;\n }\n static createFromRawTheme(source, colorMap) {\n return this.createFromParsedTheme(parseTheme(source), colorMap);\n }\n static createFromParsedTheme(source, colorMap) {\n return resolveParsedThemeRules(source, colorMap);\n }\n _cachedMatchRoot = new CachedFn(\n (scopeName) => this._root.match(scopeName)\n );\n getColorMap() {\n return this._colorMap.getColorMap();\n }\n getDefaults() {\n return this._defaults;\n }\n match(scopePath) {\n if (scopePath === null) {\n return this._defaults;\n }\n const scopeName = scopePath.scopeName;\n const matchingTrieElements = this._cachedMatchRoot.get(scopeName);\n const effectiveRule = matchingTrieElements.find(\n (v) => _scopePathMatchesParentScopes(scopePath.parent, v.parentScopes)\n );\n if (!effectiveRule) {\n return null;\n }\n return new StyleAttributes(\n effectiveRule.fontStyle,\n effectiveRule.foreground,\n effectiveRule.background\n );\n }\n};\nvar ScopeStack = class _ScopeStack {\n constructor(parent, scopeName) {\n this.parent = parent;\n this.scopeName = scopeName;\n }\n static push(path, scopeNames) {\n for (const name of scopeNames) {\n path = new _ScopeStack(path, name);\n }\n return path;\n }\n static from(...segments) {\n let result = null;\n for (let i = 0; i < segments.length; i++) {\n result = new _ScopeStack(result, segments[i]);\n }\n return result;\n }\n push(scopeName) {\n return new _ScopeStack(this, scopeName);\n }\n getSegments() {\n let item = this;\n const result = [];\n while (item) {\n result.push(item.scopeName);\n item = item.parent;\n }\n result.reverse();\n return result;\n }\n toString() {\n return this.getSegments().join(\" \");\n }\n extends(other) {\n if (this === other) {\n return true;\n }\n if (this.parent === null) {\n return false;\n }\n return this.parent.extends(other);\n }\n getExtensionIfDefined(base) {\n const result = [];\n let item = this;\n while (item && item !== base) {\n result.push(item.scopeName);\n item = item.parent;\n }\n return item === base ? result.reverse() : void 0;\n }\n};\nfunction _scopePathMatchesParentScopes(scopePath, parentScopes) {\n if (parentScopes.length === 0) {\n return true;\n }\n for (let index = 0; index < parentScopes.length; index++) {\n let scopePattern = parentScopes[index];\n let scopeMustMatch = false;\n if (scopePattern === \">\") {\n if (index === parentScopes.length - 1) {\n return false;\n }\n scopePattern = parentScopes[++index];\n scopeMustMatch = true;\n }\n while (scopePath) {\n if (_matchesScope(scopePath.scopeName, scopePattern)) {\n break;\n }\n if (scopeMustMatch) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n if (!scopePath) {\n return false;\n }\n scopePath = scopePath.parent;\n }\n return true;\n}\nfunction _matchesScope(scopeName, scopePattern) {\n return scopePattern === scopeName || scopeName.startsWith(scopePattern) && scopeName[scopePattern.length] === \".\";\n}\nvar StyleAttributes = class {\n constructor(fontStyle, foregroundId, backgroundId) {\n this.fontStyle = fontStyle;\n this.foregroundId = foregroundId;\n this.backgroundId = backgroundId;\n }\n};\nfunction parseTheme(source) {\n if (!source) {\n return [];\n }\n if (!source.settings || !Array.isArray(source.settings)) {\n return [];\n }\n let settings = source.settings;\n let result = [], resultLen = 0;\n for (let i = 0, len = settings.length; i < len; i++) {\n let entry = settings[i];\n if (!entry.settings) {\n continue;\n }\n let scopes;\n if (typeof entry.scope === \"string\") {\n let _scope = entry.scope;\n _scope = _scope.replace(/^[,]+/, \"\");\n _scope = _scope.replace(/[,]+$/, \"\");\n scopes = _scope.split(\",\");\n } else if (Array.isArray(entry.scope)) {\n scopes = entry.scope;\n } else {\n scopes = [\"\"];\n }\n let fontStyle = -1 /* NotSet */;\n if (typeof entry.settings.fontStyle === \"string\") {\n fontStyle = 0 /* None */;\n let segments = entry.settings.fontStyle.split(\" \");\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n let segment = segments[j];\n switch (segment) {\n case \"italic\":\n fontStyle = fontStyle | 1 /* Italic */;\n break;\n case \"bold\":\n fontStyle = fontStyle | 2 /* Bold */;\n break;\n case \"underline\":\n fontStyle = fontStyle | 4 /* Underline */;\n break;\n case \"strikethrough\":\n fontStyle = fontStyle | 8 /* Strikethrough */;\n break;\n }\n }\n }\n let foreground = null;\n if (typeof entry.settings.foreground === \"string\" && isValidHexColor(entry.settings.foreground)) {\n foreground = entry.settings.foreground;\n }\n let background = null;\n if (typeof entry.settings.background === \"string\" && isValidHexColor(entry.settings.background)) {\n background = entry.settings.background;\n }\n for (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n let _scope = scopes[j].trim();\n let segments = _scope.split(\" \");\n let scope = segments[segments.length - 1];\n let parentScopes = null;\n if (segments.length > 1) {\n parentScopes = segments.slice(0, segments.length - 1);\n parentScopes.reverse();\n }\n result[resultLen++] = new ParsedThemeRule(\n scope,\n parentScopes,\n i,\n fontStyle,\n foreground,\n background\n );\n }\n }\n return result;\n}\nvar ParsedThemeRule = class {\n constructor(scope, parentScopes, index, fontStyle, foreground, background) {\n this.scope = scope;\n this.parentScopes = parentScopes;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n};\nvar FontStyle = /* @__PURE__ */ ((FontStyle2) => {\n FontStyle2[FontStyle2[\"NotSet\"] = -1] = \"NotSet\";\n FontStyle2[FontStyle2[\"None\"] = 0] = \"None\";\n FontStyle2[FontStyle2[\"Italic\"] = 1] = \"Italic\";\n FontStyle2[FontStyle2[\"Bold\"] = 2] = \"Bold\";\n FontStyle2[FontStyle2[\"Underline\"] = 4] = \"Underline\";\n FontStyle2[FontStyle2[\"Strikethrough\"] = 8] = \"Strikethrough\";\n return FontStyle2;\n})(FontStyle || {});\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n parsedThemeRules.sort((a, b) => {\n let r = strcmp(a.scope, b.scope);\n if (r !== 0) {\n return r;\n }\n r = strArrCmp(a.parentScopes, b.parentScopes);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n let defaultFontStyle = 0 /* None */;\n let defaultForeground = \"#000000\";\n let defaultBackground = \"#ffffff\";\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === \"\") {\n let incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n let colorMap = new ColorMap(_colorMap);\n let defaults = new StyleAttributes(defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n let root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n let rule = parsedThemeRules[i];\n root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new Theme(colorMap, defaults, root);\n}\nvar ColorMap = class {\n _isFrozen;\n _lastColorId;\n _id2color;\n _color2id;\n constructor(_colorMap) {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = /* @__PURE__ */ Object.create(null);\n if (Array.isArray(_colorMap)) {\n this._isFrozen = true;\n for (let i = 0, len = _colorMap.length; i < len; i++) {\n this._color2id[_colorMap[i]] = i;\n this._id2color[i] = _colorMap[i];\n }\n } else {\n this._isFrozen = false;\n }\n }\n getId(color) {\n if (color === null) {\n return 0;\n }\n color = color.toUpperCase();\n let value = this._color2id[color];\n if (value) {\n return value;\n }\n if (this._isFrozen) {\n throw new Error(`Missing color in color map - ${color}`);\n }\n value = ++this._lastColorId;\n this._color2id[color] = value;\n this._id2color[value] = color;\n return value;\n }\n getColorMap() {\n return this._id2color.slice(0);\n }\n};\nvar emptyParentScopes = Object.freeze([]);\nvar ThemeTrieElementRule = class _ThemeTrieElementRule {\n scopeDepth;\n parentScopes;\n fontStyle;\n foreground;\n background;\n constructor(scopeDepth, parentScopes, fontStyle, foreground, background) {\n this.scopeDepth = scopeDepth;\n this.parentScopes = parentScopes || emptyParentScopes;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n clone() {\n return new _ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n }\n static cloneArr(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = arr[i].clone();\n }\n return r;\n }\n acceptOverwrite(scopeDepth, fontStyle, foreground, background) {\n if (this.scopeDepth > scopeDepth) {\n console.log(\"how did this happen?\");\n } else {\n this.scopeDepth = scopeDepth;\n }\n if (fontStyle !== -1 /* NotSet */) {\n this.fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n this.foreground = foreground;\n }\n if (background !== 0) {\n this.background = background;\n }\n }\n};\nvar ThemeTrieElement = class _ThemeTrieElement {\n constructor(_mainRule, rulesWithParentScopes = [], _children = {}) {\n this._mainRule = _mainRule;\n this._children = _children;\n this._rulesWithParentScopes = rulesWithParentScopes;\n }\n _rulesWithParentScopes;\n static _cmpBySpecificity(a, b) {\n if (a.scopeDepth !== b.scopeDepth) {\n return b.scopeDepth - a.scopeDepth;\n }\n let aParentIndex = 0;\n let bParentIndex = 0;\n while (true) {\n if (a.parentScopes[aParentIndex] === \">\") {\n aParentIndex++;\n }\n if (b.parentScopes[bParentIndex] === \">\") {\n bParentIndex++;\n }\n if (aParentIndex >= a.parentScopes.length || bParentIndex >= b.parentScopes.length) {\n break;\n }\n const parentScopeLengthDiff = b.parentScopes[bParentIndex].length - a.parentScopes[aParentIndex].length;\n if (parentScopeLengthDiff !== 0) {\n return parentScopeLengthDiff;\n }\n aParentIndex++;\n bParentIndex++;\n }\n return b.parentScopes.length - a.parentScopes.length;\n }\n match(scope) {\n if (scope !== \"\") {\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n if (this._children.hasOwnProperty(head)) {\n return this._children[head].match(tail);\n }\n }\n const rules = this._rulesWithParentScopes.concat(this._mainRule);\n rules.sort(_ThemeTrieElement._cmpBySpecificity);\n return rules;\n }\n insert(scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n if (scope === \"\") {\n this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n return;\n }\n let dotIndex = scope.indexOf(\".\");\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = \"\";\n } else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n let child;\n if (this._children.hasOwnProperty(head)) {\n child = this._children[head];\n } else {\n child = new _ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n this._children[head] = child;\n }\n child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n }\n _doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background) {\n if (parentScopes === null) {\n this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n for (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n let rule = this._rulesWithParentScopes[i];\n if (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n }\n if (fontStyle === -1 /* NotSet */) {\n fontStyle = this._mainRule.fontStyle;\n }\n if (foreground === 0) {\n foreground = this._mainRule.foreground;\n }\n if (background === 0) {\n background = this._mainRule.background;\n }\n this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n }\n};\n\n// src/encodedTokenAttributes.ts\nvar EncodedTokenMetadata = class _EncodedTokenMetadata {\n static toBinaryStr(encodedTokenAttributes) {\n return encodedTokenAttributes.toString(2).padStart(32, \"0\");\n }\n static print(encodedTokenAttributes) {\n const languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n const tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n const fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n const foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n const background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n console.log({\n languageId,\n tokenType,\n fontStyle,\n foreground,\n background\n });\n }\n static getLanguageId(encodedTokenAttributes) {\n return (encodedTokenAttributes & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\n }\n static getTokenType(encodedTokenAttributes) {\n return (encodedTokenAttributes & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\n }\n static containsBalancedBrackets(encodedTokenAttributes) {\n return (encodedTokenAttributes & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;\n }\n static getFontStyle(encodedTokenAttributes) {\n return (encodedTokenAttributes & 30720 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\n }\n static getForeground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 16744448 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;\n }\n static getBackground(encodedTokenAttributes) {\n return (encodedTokenAttributes & 4278190080 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;\n }\n /**\n * Updates the fields in `metadata`.\n * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.\n */\n static set(encodedTokenAttributes, languageId, tokenType, containsBalancedBrackets, fontStyle, foreground, background) {\n let _languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n let _tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n let _containsBalancedBracketsBit = _EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes) ? 1 : 0;\n let _fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n let _foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n let _background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n if (languageId !== 0) {\n _languageId = languageId;\n }\n if (tokenType !== 8 /* NotSet */) {\n _tokenType = fromOptionalTokenType(tokenType);\n }\n if (containsBalancedBrackets !== null) {\n _containsBalancedBracketsBit = containsBalancedBrackets ? 1 : 0;\n }\n if (fontStyle !== -1 /* NotSet */) {\n _fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n _foreground = foreground;\n }\n if (background !== 0) {\n _background = background;\n }\n return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;\n }\n};\nfunction toOptionalTokenType(standardType) {\n return standardType;\n}\nfunction fromOptionalTokenType(standardType) {\n return standardType;\n}\n\n// src/matcher.ts\nfunction createMatchers(selector, matchesName) {\n const results = [];\n const tokenizer = newTokenizer(selector);\n let token = tokenizer.next();\n while (token !== null) {\n let priority = 0;\n if (token.length === 2 && token.charAt(1) === \":\") {\n switch (token.charAt(0)) {\n case \"R\":\n priority = 1;\n break;\n case \"L\":\n priority = -1;\n break;\n default:\n console.log(`Unknown priority ${token} in scope selector`);\n }\n token = tokenizer.next();\n }\n let matcher = parseConjunction();\n results.push({ matcher, priority });\n if (token !== \",\") {\n break;\n }\n token = tokenizer.next();\n }\n return results;\n function parseOperand() {\n if (token === \"-\") {\n token = tokenizer.next();\n const expressionToNegate = parseOperand();\n return (matcherInput) => !!expressionToNegate && !expressionToNegate(matcherInput);\n }\n if (token === \"(\") {\n token = tokenizer.next();\n const expressionInParents = parseInnerExpression();\n if (token === \")\") {\n token = tokenizer.next();\n }\n return expressionInParents;\n }\n if (isIdentifier(token)) {\n const identifiers = [];\n do {\n identifiers.push(token);\n token = tokenizer.next();\n } while (isIdentifier(token));\n return (matcherInput) => matchesName(identifiers, matcherInput);\n }\n return null;\n }\n function parseConjunction() {\n const matchers = [];\n let matcher = parseOperand();\n while (matcher) {\n matchers.push(matcher);\n matcher = parseOperand();\n }\n return (matcherInput) => matchers.every((matcher2) => matcher2(matcherInput));\n }\n function parseInnerExpression() {\n const matchers = [];\n let matcher = parseConjunction();\n while (matcher) {\n matchers.push(matcher);\n if (token === \"|\" || token === \",\") {\n do {\n token = tokenizer.next();\n } while (token === \"|\" || token === \",\");\n } else {\n break;\n }\n matcher = parseConjunction();\n }\n return (matcherInput) => matchers.some((matcher2) => matcher2(matcherInput));\n }\n}\nfunction isIdentifier(token) {\n return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n let regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n let match = regex.exec(input);\n return {\n next: () => {\n if (!match) {\n return null;\n }\n const res = match[0];\n match = regex.exec(input);\n return res;\n }\n };\n}\n\n// src/onigLib.ts\nvar FindOption = /* @__PURE__ */ ((FindOption2) => {\n FindOption2[FindOption2[\"None\"] = 0] = \"None\";\n FindOption2[FindOption2[\"NotBeginString\"] = 1] = \"NotBeginString\";\n FindOption2[FindOption2[\"NotEndString\"] = 2] = \"NotEndString\";\n FindOption2[FindOption2[\"NotBeginPosition\"] = 4] = \"NotBeginPosition\";\n FindOption2[FindOption2[\"DebugCall\"] = 8] = \"DebugCall\";\n return FindOption2;\n})(FindOption || {});\nfunction disposeOnigString(str) {\n if (typeof str.dispose === \"function\") {\n str.dispose();\n }\n}\n\n// src/grammar/grammarDependencies.ts\nvar TopLevelRuleReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n toKey() {\n return this.scopeName;\n }\n};\nvar TopLevelRepositoryRuleReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n toKey() {\n return `${this.scopeName}#${this.ruleName}`;\n }\n};\nvar ExternalReferenceCollector = class {\n _references = [];\n _seenReferenceKeys = /* @__PURE__ */ new Set();\n get references() {\n return this._references;\n }\n visitedRule = /* @__PURE__ */ new Set();\n add(reference) {\n const key = reference.toKey();\n if (this._seenReferenceKeys.has(key)) {\n return;\n }\n this._seenReferenceKeys.add(key);\n this._references.push(reference);\n }\n};\nvar ScopeDependencyProcessor = class {\n constructor(repo, initialScopeName) {\n this.repo = repo;\n this.initialScopeName = initialScopeName;\n this.seenFullScopeRequests.add(this.initialScopeName);\n this.Q = [new TopLevelRuleReference(this.initialScopeName)];\n }\n seenFullScopeRequests = /* @__PURE__ */ new Set();\n seenPartialScopeRequests = /* @__PURE__ */ new Set();\n Q;\n processQueue() {\n const q = this.Q;\n this.Q = [];\n const deps = new ExternalReferenceCollector();\n for (const dep of q) {\n collectReferencesOfReference(dep, this.initialScopeName, this.repo, deps);\n }\n for (const dep of deps.references) {\n if (dep instanceof TopLevelRuleReference) {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n this.seenFullScopeRequests.add(dep.scopeName);\n this.Q.push(dep);\n } else {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n continue;\n }\n if (this.seenPartialScopeRequests.has(dep.toKey())) {\n continue;\n }\n this.seenPartialScopeRequests.add(dep.toKey());\n this.Q.push(dep);\n }\n }\n }\n};\nfunction collectReferencesOfReference(reference, baseGrammarScopeName, repo, result) {\n const selfGrammar = repo.lookup(reference.scopeName);\n if (!selfGrammar) {\n if (reference.scopeName === baseGrammarScopeName) {\n throw new Error(`No grammar provided for <${baseGrammarScopeName}>`);\n }\n return;\n }\n const baseGrammar = repo.lookup(baseGrammarScopeName);\n if (reference instanceof TopLevelRuleReference) {\n collectExternalReferencesInTopLevelRule({ baseGrammar, selfGrammar }, result);\n } else {\n collectExternalReferencesInTopLevelRepositoryRule(\n reference.ruleName,\n { baseGrammar, selfGrammar, repository: selfGrammar.repository },\n result\n );\n }\n const injections = repo.injections(reference.scopeName);\n if (injections) {\n for (const injection of injections) {\n result.add(new TopLevelRuleReference(injection));\n }\n }\n}\nfunction collectExternalReferencesInTopLevelRepositoryRule(ruleName, context, result) {\n if (context.repository && context.repository[ruleName]) {\n const rule = context.repository[ruleName];\n collectExternalReferencesInRules([rule], context, result);\n }\n}\nfunction collectExternalReferencesInTopLevelRule(context, result) {\n if (context.selfGrammar.patterns && Array.isArray(context.selfGrammar.patterns)) {\n collectExternalReferencesInRules(\n context.selfGrammar.patterns,\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n if (context.selfGrammar.injections) {\n collectExternalReferencesInRules(\n Object.values(context.selfGrammar.injections),\n { ...context, repository: context.selfGrammar.repository },\n result\n );\n }\n}\nfunction collectExternalReferencesInRules(rules, context, result) {\n for (const rule of rules) {\n if (result.visitedRule.has(rule)) {\n continue;\n }\n result.visitedRule.add(rule);\n const patternRepository = rule.repository ? mergeObjects({}, context.repository, rule.repository) : context.repository;\n if (Array.isArray(rule.patterns)) {\n collectExternalReferencesInRules(rule.patterns, { ...context, repository: patternRepository }, result);\n }\n const include = rule.include;\n if (!include) {\n continue;\n }\n const reference = parseInclude(include);\n switch (reference.kind) {\n case 0 /* Base */:\n collectExternalReferencesInTopLevelRule({ ...context, selfGrammar: context.baseGrammar }, result);\n break;\n case 1 /* Self */:\n collectExternalReferencesInTopLevelRule(context, result);\n break;\n case 2 /* RelativeReference */:\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { ...context, repository: patternRepository }, result);\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const selfGrammar = reference.scopeName === context.selfGrammar.scopeName ? context.selfGrammar : reference.scopeName === context.baseGrammar.scopeName ? context.baseGrammar : void 0;\n if (selfGrammar) {\n const newContext = { baseGrammar: context.baseGrammar, selfGrammar, repository: patternRepository };\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, newContext, result);\n } else {\n collectExternalReferencesInTopLevelRule(newContext, result);\n }\n } else {\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n result.add(new TopLevelRepositoryRuleReference(reference.scopeName, reference.ruleName));\n } else {\n result.add(new TopLevelRuleReference(reference.scopeName));\n }\n }\n break;\n }\n }\n}\nvar BaseReference = class {\n kind = 0 /* Base */;\n};\nvar SelfReference = class {\n kind = 1 /* Self */;\n};\nvar RelativeReference = class {\n constructor(ruleName) {\n this.ruleName = ruleName;\n }\n kind = 2 /* RelativeReference */;\n};\nvar TopLevelReference = class {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n kind = 3 /* TopLevelReference */;\n};\nvar TopLevelRepositoryReference = class {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n kind = 4 /* TopLevelRepositoryReference */;\n};\nfunction parseInclude(include) {\n if (include === \"$base\") {\n return new BaseReference();\n } else if (include === \"$self\") {\n return new SelfReference();\n }\n const indexOfSharp = include.indexOf(\"#\");\n if (indexOfSharp === -1) {\n return new TopLevelReference(include);\n } else if (indexOfSharp === 0) {\n return new RelativeReference(include.substring(1));\n } else {\n const scopeName = include.substring(0, indexOfSharp);\n const ruleName = include.substring(indexOfSharp + 1);\n return new TopLevelRepositoryReference(scopeName, ruleName);\n }\n}\n\n// src/rule.ts\nvar HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nvar BACK_REFERENCING_END = /\\\\(\\d+)/g;\nvar ruleIdSymbol = Symbol(\"RuleId\");\nvar endRuleId = -1;\nvar whileRuleId = -2;\nfunction ruleIdFromNumber(id) {\n return id;\n}\nfunction ruleIdToNumber(id) {\n return id;\n}\nvar Rule = class {\n $location;\n id;\n _nameIsCapturing;\n _name;\n _contentNameIsCapturing;\n _contentName;\n constructor($location, id, name, contentName) {\n this.$location = $location;\n this.id = id;\n this._name = name || null;\n this._nameIsCapturing = RegexSource.hasCaptures(this._name);\n this._contentName = contentName || null;\n this._contentNameIsCapturing = RegexSource.hasCaptures(this._contentName);\n }\n get debugName() {\n const location = this.$location ? `${basename(this.$location.filename)}:${this.$location.line}` : \"unknown\";\n return `${this.constructor.name}#${this.id} @ ${location}`;\n }\n getName(lineText, captureIndices) {\n if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n return this._name;\n }\n return RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n }\n getContentName(lineText, captureIndices) {\n if (!this._contentNameIsCapturing || this._contentName === null) {\n return this._contentName;\n }\n return RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n }\n};\nvar CaptureRule = class extends Rule {\n retokenizeCapturedWithRuleId;\n constructor($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n super($location, id, name, contentName);\n this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n }\n dispose() {\n }\n collectPatterns(grammar, out) {\n throw new Error(\"Not supported!\");\n }\n compile(grammar, endRegexSource) {\n throw new Error(\"Not supported!\");\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n throw new Error(\"Not supported!\");\n }\n};\nvar MatchRule = class extends Rule {\n _match;\n captures;\n _cachedCompiledPatterns;\n constructor($location, id, name, match, captures) {\n super($location, id, name, null);\n this._match = new RegExpSource(match, this.id);\n this.captures = captures;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugMatchRegExp() {\n return `${this._match.source}`;\n }\n collectPatterns(grammar, out) {\n out.push(this._match);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar IncludeOnlyRule = class extends Rule {\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, patterns) {\n super($location, id, name, contentName);\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n collectPatterns(grammar, out) {\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, out);\n }\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginEndRule = class extends Rule {\n _begin;\n beginCaptures;\n _end;\n endHasBackReferences;\n endCaptures;\n applyEndPatternLast;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this._end = new RegExpSource(end ? end : \"\\uFFFF\", -1);\n this.endHasBackReferences = this._end.hasBackReferences;\n this.endCaptures = endCaptures;\n this.applyEndPatternLast = applyEndPatternLast || false;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugEndRegExp() {\n return `${this._end.source}`;\n }\n getEndWithResolvedBackReferences(lineText, captureIndices) {\n return this._end.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n } else {\n this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n }\n if (this._end.hasBackReferences) {\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n } else {\n this._cachedCompiledPatterns.setSource(0, endRegexSource);\n }\n }\n return this._cachedCompiledPatterns;\n }\n};\nvar BeginWhileRule = class extends Rule {\n _begin;\n beginCaptures;\n whileCaptures;\n _while;\n whileHasBackReferences;\n hasMissingPatterns;\n patterns;\n _cachedCompiledPatterns;\n _cachedCompiledWhilePatterns;\n constructor($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this.whileCaptures = whileCaptures;\n this._while = new RegExpSource(_while, whileRuleId);\n this.whileHasBackReferences = this._while.hasBackReferences;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n this._cachedCompiledWhilePatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n if (this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns.dispose();\n this._cachedCompiledWhilePatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugWhileRegExp() {\n return `${this._while.source}`;\n }\n getWhileWithResolvedBackReferences(lineText, captureIndices) {\n return this._while.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n }\n return this._cachedCompiledPatterns;\n }\n compileWhile(grammar, endRegexSource) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compile(grammar);\n }\n compileWhileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledWhilePatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns = new RegExpSourceList();\n this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n }\n if (this._while.hasBackReferences) {\n this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : \"\\uFFFF\");\n }\n return this._cachedCompiledWhilePatterns;\n }\n};\nvar RuleFactory = class _RuleFactory {\n static createCaptureRule(helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n return helper.registerRule((id) => {\n return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n });\n }\n static getCompiledRuleId(desc, helper, repository) {\n if (!desc.id) {\n helper.registerRule((id) => {\n desc.id = id;\n if (desc.match) {\n return new MatchRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.match,\n _RuleFactory._compileCaptures(desc.captures, helper, repository)\n );\n }\n if (typeof desc.begin === \"undefined\") {\n if (desc.repository) {\n repository = mergeObjects({}, repository, desc.repository);\n }\n let patterns = desc.patterns;\n if (typeof patterns === \"undefined\" && desc.include) {\n patterns = [{ include: desc.include }];\n }\n return new IncludeOnlyRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n _RuleFactory._compilePatterns(patterns, helper, repository)\n );\n }\n if (desc.while) {\n return new BeginWhileRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.while,\n _RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository),\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n }\n return new BeginEndRule(\n desc.$vscodeTextmateLocation,\n desc.id,\n desc.name,\n desc.contentName,\n desc.begin,\n _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n desc.end,\n _RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository),\n desc.applyEndPatternLast,\n _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n );\n });\n }\n return desc.id;\n }\n static _compileCaptures(captures, helper, repository) {\n let r = [];\n if (captures) {\n let maximumCaptureId = 0;\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n if (numericCaptureId > maximumCaptureId) {\n maximumCaptureId = numericCaptureId;\n }\n }\n for (let i = 0; i <= maximumCaptureId; i++) {\n r[i] = null;\n }\n for (const captureId in captures) {\n if (captureId === \"$vscodeTextmateLocation\") {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n let retokenizeCapturedWithRuleId = 0;\n if (captures[captureId].patterns) {\n retokenizeCapturedWithRuleId = _RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n }\n r[numericCaptureId] = _RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n }\n }\n return r;\n }\n static _compilePatterns(patterns, helper, repository) {\n let r = [];\n if (patterns) {\n for (let i = 0, len = patterns.length; i < len; i++) {\n const pattern = patterns[i];\n let ruleId = -1;\n if (pattern.include) {\n const reference = parseInclude(pattern.include);\n switch (reference.kind) {\n case 0 /* Base */:\n case 1 /* Self */:\n ruleId = _RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n break;\n case 2 /* RelativeReference */:\n let localIncludedRule = repository[reference.ruleName];\n if (localIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n } else {\n }\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const externalGrammarName = reference.scopeName;\n const externalGrammarInclude = reference.kind === 4 /* TopLevelRepositoryReference */ ? reference.ruleName : null;\n const externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n if (externalGrammar) {\n if (externalGrammarInclude) {\n let externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n if (externalIncludedRule) {\n ruleId = _RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n } else {\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n }\n } else {\n }\n break;\n }\n } else {\n ruleId = _RuleFactory.getCompiledRuleId(pattern, helper, repository);\n }\n if (ruleId !== -1) {\n const rule = helper.getRule(ruleId);\n let skipRule = false;\n if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n skipRule = true;\n }\n }\n if (skipRule) {\n continue;\n }\n r.push(ruleId);\n }\n }\n }\n return {\n patterns: r,\n hasMissingPatterns: (patterns ? patterns.length : 0) !== r.length\n };\n }\n};\nvar RegExpSource = class _RegExpSource {\n source;\n ruleId;\n hasAnchor;\n hasBackReferences;\n _anchorCache;\n constructor(regExpSource, ruleId) {\n if (regExpSource && typeof regExpSource === \"string\") {\n const len = regExpSource.length;\n let lastPushedPos = 0;\n let output = [];\n let hasAnchor = false;\n for (let pos = 0; pos < len; pos++) {\n const ch = regExpSource.charAt(pos);\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n const nextCh = regExpSource.charAt(pos + 1);\n if (nextCh === \"z\") {\n output.push(regExpSource.substring(lastPushedPos, pos));\n output.push(\"$(?!\\\\n)(?<!\\\\n)\");\n lastPushedPos = pos + 2;\n } else if (nextCh === \"A\" || nextCh === \"G\") {\n hasAnchor = true;\n }\n pos++;\n }\n }\n }\n this.hasAnchor = hasAnchor;\n if (lastPushedPos === 0) {\n this.source = regExpSource;\n } else {\n output.push(regExpSource.substring(lastPushedPos, len));\n this.source = output.join(\"\");\n }\n } else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n } else {\n this._anchorCache = null;\n }\n this.ruleId = ruleId;\n if (typeof this.source === \"string\") {\n this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n } else {\n this.hasBackReferences = false;\n }\n }\n clone() {\n return new _RegExpSource(this.source, this.ruleId);\n }\n setSource(newSource) {\n if (this.source === newSource) {\n return;\n }\n this.source = newSource;\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n }\n resolveBackReferences(lineText, captureIndices) {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let capturedValues = captureIndices.map((capture) => {\n return lineText.substring(capture.start, capture.end);\n });\n BACK_REFERENCING_END.lastIndex = 0;\n return this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n return escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || \"\");\n });\n }\n _buildAnchorCache() {\n if (typeof this.source !== \"string\") {\n throw new Error(\"This method should only be called if the source is a string\");\n }\n let A0_G0_result = [];\n let A0_G1_result = [];\n let A1_G0_result = [];\n let A1_G1_result = [];\n let pos, len, ch, nextCh;\n for (pos = 0, len = this.source.length; pos < len; pos++) {\n ch = this.source.charAt(pos);\n A0_G0_result[pos] = ch;\n A0_G1_result[pos] = ch;\n A1_G0_result[pos] = ch;\n A1_G1_result[pos] = ch;\n if (ch === \"\\\\\") {\n if (pos + 1 < len) {\n nextCh = this.source.charAt(pos + 1);\n if (nextCh === \"A\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"\\uFFFF\";\n A1_G0_result[pos + 1] = \"A\";\n A1_G1_result[pos + 1] = \"A\";\n } else if (nextCh === \"G\") {\n A0_G0_result[pos + 1] = \"\\uFFFF\";\n A0_G1_result[pos + 1] = \"G\";\n A1_G0_result[pos + 1] = \"\\uFFFF\";\n A1_G1_result[pos + 1] = \"G\";\n } else {\n A0_G0_result[pos + 1] = nextCh;\n A0_G1_result[pos + 1] = nextCh;\n A1_G0_result[pos + 1] = nextCh;\n A1_G1_result[pos + 1] = nextCh;\n }\n pos++;\n }\n }\n }\n return {\n A0_G0: A0_G0_result.join(\"\"),\n A0_G1: A0_G1_result.join(\"\"),\n A1_G0: A1_G0_result.join(\"\"),\n A1_G1: A1_G1_result.join(\"\")\n };\n }\n resolveAnchors(allowA, allowG) {\n if (!this.hasAnchor || !this._anchorCache || typeof this.source !== \"string\") {\n return this.source;\n }\n if (allowA) {\n if (allowG) {\n return this._anchorCache.A1_G1;\n } else {\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n return this._anchorCache.A0_G1;\n } else {\n return this._anchorCache.A0_G0;\n }\n }\n }\n};\nvar RegExpSourceList = class {\n _items;\n _hasAnchors;\n _cached;\n _anchorCache;\n constructor() {\n this._items = [];\n this._hasAnchors = false;\n this._cached = null;\n this._anchorCache = {\n A0_G0: null,\n A0_G1: null,\n A1_G0: null,\n A1_G1: null\n };\n }\n dispose() {\n this._disposeCaches();\n }\n _disposeCaches() {\n if (this._cached) {\n this._cached.dispose();\n this._cached = null;\n }\n if (this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0.dispose();\n this._anchorCache.A0_G0 = null;\n }\n if (this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1.dispose();\n this._anchorCache.A0_G1 = null;\n }\n if (this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0.dispose();\n this._anchorCache.A1_G0 = null;\n }\n if (this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1.dispose();\n this._anchorCache.A1_G1 = null;\n }\n }\n push(item) {\n this._items.push(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n unshift(item) {\n this._items.unshift(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n length() {\n return this._items.length;\n }\n setSource(index, newSource) {\n if (this._items[index].source !== newSource) {\n this._disposeCaches();\n this._items[index].setSource(newSource);\n }\n }\n compile(onigLib) {\n if (!this._cached) {\n let regExps = this._items.map((e) => e.source);\n this._cached = new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n return this._cached;\n }\n compileAG(onigLib, allowA, allowG) {\n if (!this._hasAnchors) {\n return this.compile(onigLib);\n } else {\n if (allowA) {\n if (allowG) {\n if (!this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G1;\n } else {\n if (!this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G0;\n }\n } else {\n if (allowG) {\n if (!this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G1;\n } else {\n if (!this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G0;\n }\n }\n }\n }\n _resolveAnchors(onigLib, allowA, allowG) {\n let regExps = this._items.map((e) => e.resolveAnchors(allowA, allowG));\n return new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n }\n};\nvar CompiledRule = class {\n constructor(onigLib, regExps, rules) {\n this.regExps = regExps;\n this.rules = rules;\n this.scanner = onigLib.createOnigScanner(regExps);\n }\n scanner;\n dispose() {\n if (typeof this.scanner.dispose === \"function\") {\n this.scanner.dispose();\n }\n }\n toString() {\n const r = [];\n for (let i = 0, len = this.rules.length; i < len; i++) {\n r.push(\" - \" + this.rules[i] + \": \" + this.regExps[i]);\n }\n return r.join(\"\\n\");\n }\n findNextMatchSync(string, startPosition, options) {\n const result = this.scanner.findNextMatchSync(string, startPosition, options);\n if (!result) {\n return null;\n }\n return {\n ruleId: this.rules[result.index],\n captureIndices: result.captureIndices\n };\n }\n};\n\n// src/grammar/basicScopesAttributeProvider.ts\nvar BasicScopeAttributes = class {\n constructor(languageId, tokenType) {\n this.languageId = languageId;\n this.tokenType = tokenType;\n }\n};\nvar BasicScopeAttributesProvider = class _BasicScopeAttributesProvider {\n _defaultAttributes;\n _embeddedLanguagesMatcher;\n constructor(initialLanguageId, embeddedLanguages) {\n this._defaultAttributes = new BasicScopeAttributes(initialLanguageId, 8 /* NotSet */);\n this._embeddedLanguagesMatcher = new ScopeMatcher(Object.entries(embeddedLanguages || {}));\n }\n getDefaultAttributes() {\n return this._defaultAttributes;\n }\n getBasicScopeAttributes(scopeName) {\n if (scopeName === null) {\n return _BasicScopeAttributesProvider._NULL_SCOPE_METADATA;\n }\n return this._getBasicScopeAttributes.get(scopeName);\n }\n static _NULL_SCOPE_METADATA = new BasicScopeAttributes(0, 0);\n _getBasicScopeAttributes = new CachedFn((scopeName) => {\n const languageId = this._scopeToLanguage(scopeName);\n const standardTokenType = this._toStandardTokenType(scopeName);\n return new BasicScopeAttributes(languageId, standardTokenType);\n });\n /**\n * Given a produced TM scope, return the language that token describes or null if unknown.\n * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n */\n _scopeToLanguage(scope) {\n return this._embeddedLanguagesMatcher.match(scope) || 0;\n }\n _toStandardTokenType(scopeName) {\n const m = scopeName.match(_BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 8 /* NotSet */;\n }\n switch (m[1]) {\n case \"comment\":\n return 1 /* Comment */;\n case \"string\":\n return 2 /* String */;\n case \"regex\":\n return 3 /* RegEx */;\n case \"meta.embedded\":\n return 0 /* Other */;\n }\n throw new Error(\"Unexpected match for standard token type!\");\n }\n static STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n};\nvar ScopeMatcher = class {\n values;\n scopesRegExp;\n constructor(values) {\n if (values.length === 0) {\n this.values = null;\n this.scopesRegExp = null;\n } else {\n this.values = new Map(values);\n const escapedScopes = values.map(\n ([scopeName, value]) => escapeRegExpCharacters(scopeName)\n );\n escapedScopes.sort();\n escapedScopes.reverse();\n this.scopesRegExp = new RegExp(\n `^((${escapedScopes.join(\")|(\")}))($|\\\\.)`,\n \"\"\n );\n }\n }\n match(scope) {\n if (!this.scopesRegExp) {\n return void 0;\n }\n const m = scope.match(this.scopesRegExp);\n if (!m) {\n return void 0;\n }\n return this.values.get(m[1]);\n }\n};\n\n// src/debug.ts\nvar DebugFlags = {\n InDebugMode: typeof process !== \"undefined\" && !!process.env[\"VSCODE_TEXTMATE_DEBUG\"]\n};\nvar UseOnigurumaFindOptions = false;\n\n// src/grammar/tokenizeString.ts\nvar TokenizeStringResult = class {\n constructor(stack, stoppedEarly) {\n this.stack = stack;\n this.stoppedEarly = stoppedEarly;\n }\n};\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions, timeLimit) {\n const lineLength = lineText.content.length;\n let STOP = false;\n let anchorPosition = -1;\n if (checkWhileConditions) {\n const whileCheckResult = _checkWhileConditions(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n lineTokens\n );\n stack = whileCheckResult.stack;\n linePos = whileCheckResult.linePos;\n isFirstLine = whileCheckResult.isFirstLine;\n anchorPosition = whileCheckResult.anchorPosition;\n }\n const startTime = Date.now();\n while (!STOP) {\n if (timeLimit !== 0) {\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime > timeLimit) {\n return new TokenizeStringResult(stack, true);\n }\n }\n scanNext();\n }\n return new TokenizeStringResult(stack, false);\n function scanNext() {\n if (false) {\n console.log(\"\");\n console.log(\n `@@scanNext ${linePos}: |${lineText.content.substr(linePos).replace(/\\n$/, \"\\\\n\")}|`\n );\n }\n const r = matchRuleOrInjections(\n grammar,\n lineText,\n isFirstLine,\n linePos,\n stack,\n anchorPosition\n );\n if (!r) {\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n const captureIndices = r.captureIndices;\n const matchedRuleId = r.matchedRuleId;\n const hasAdvanced = captureIndices && captureIndices.length > 0 ? captureIndices[0].end > linePos : false;\n if (matchedRuleId === endRuleId) {\n const poppedRule = stack.getRule(grammar);\n if (false) {\n console.log(\n \" popping \" + poppedRule.debugName + \" - \" + poppedRule.debugEndRegExp\n );\n }\n lineTokens.produce(stack, captureIndices[0].start);\n stack = stack.withContentNameScopesList(stack.nameScopesList);\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n poppedRule.endCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n const popped = stack;\n stack = stack.parent;\n anchorPosition = popped.getAnchorPos();\n if (!hasAdvanced && popped.getEnterPos() === linePos) {\n if (false) {\n console.error(\n \"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\"\n );\n }\n stack = popped;\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const _rule = grammar.getRule(matchedRuleId);\n lineTokens.produce(stack, captureIndices[0].start);\n const beforePush = stack;\n const scopeName = _rule.getName(lineText.content, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(\n scopeName,\n grammar\n );\n stack = stack.push(\n matchedRuleId,\n linePos,\n anchorPosition,\n captureIndices[0].end === lineLength,\n null,\n nameScopesList,\n nameScopesList\n );\n if (_rule instanceof BeginEndRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\n \" pushing \" + pushedRule.debugName + \" - \" + pushedRule.debugBeginRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.endHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getEndWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else if (_rule instanceof BeginWhileRule) {\n const pushedRule = _rule;\n if (false) {\n console.log(\" pushing \" + pushedRule.debugName);\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n pushedRule.beginCaptures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(\n lineText.content,\n captureIndices\n );\n const contentNameScopesList = nameScopesList.pushAttributed(\n contentName,\n grammar\n );\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.whileHasBackReferences) {\n stack = stack.withEndRule(\n pushedRule.getWhileWithResolvedBackReferences(\n lineText.content,\n captureIndices\n )\n );\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n if (false) {\n console.error(\n \"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n );\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n } else {\n const matchingRule = _rule;\n if (false) {\n console.log(\n \" matched \" + matchingRule.debugName + \" - \" + matchingRule.debugMatchRegExp\n );\n }\n handleCaptures(\n grammar,\n lineText,\n isFirstLine,\n stack,\n lineTokens,\n matchingRule.captures,\n captureIndices\n );\n lineTokens.produce(stack, captureIndices[0].end);\n stack = stack.pop();\n if (!hasAdvanced) {\n if (false) {\n console.error(\n \"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\"\n );\n }\n stack = stack.safePop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n }\n if (captureIndices[0].end > linePos) {\n linePos = captureIndices[0].end;\n isFirstLine = false;\n }\n }\n}\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n let anchorPosition = stack.beginRuleCapturedEOL ? 0 : -1;\n const whileRules = [];\n for (let node = stack; node; node = node.pop()) {\n const nodeRule = node.getRule(grammar);\n if (nodeRule instanceof BeginWhileRule) {\n whileRules.push({\n rule: nodeRule,\n stack: node\n });\n }\n }\n for (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n const { ruleScanner, findOptions } = prepareRuleWhileSearch(whileRule.rule, grammar, whileRule.stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (false) {\n console.log(\" scanning for while rule\");\n console.log(ruleScanner.toString());\n }\n if (r) {\n const matchedRuleId = r.ruleId;\n if (matchedRuleId !== whileRuleId) {\n stack = whileRule.stack.pop();\n break;\n }\n if (r.captureIndices && r.captureIndices.length) {\n lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n anchorPosition = r.captureIndices[0].end;\n if (r.captureIndices[0].end > linePos) {\n linePos = r.captureIndices[0].end;\n isFirstLine = false;\n }\n }\n } else {\n if (false) {\n console.log(\" popping \" + whileRule.rule.debugName + \" - \" + whileRule.rule.debugWhileRegExp);\n }\n stack = whileRule.stack.pop();\n break;\n }\n }\n return { stack, linePos, anchorPosition, isFirstLine };\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n const injections = grammar.getInjections();\n if (injections.length === 0) {\n return matchResult;\n }\n const injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!injectionResult) {\n return matchResult;\n }\n if (!matchResult) {\n return injectionResult;\n }\n const matchResultScore = matchResult.captureIndices[0].start;\n const injectionResultScore = injectionResult.captureIndices[0].start;\n if (injectionResultScore < matchResultScore || injectionResult.priorityMatch && injectionResultScore === matchResultScore) {\n return injectionResult;\n }\n return matchResult;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const rule = stack.getRule(grammar);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (r) {\n return {\n captureIndices: r.captureIndices,\n matchedRuleId: r.ruleId\n };\n }\n return null;\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n let bestMatchRating = Number.MAX_VALUE;\n let bestMatchCaptureIndices = null;\n let bestMatchRuleId;\n let bestMatchResultPriority = 0;\n const scopes = stack.contentNameScopesList.getScopeNames();\n for (let i = 0, len = injections.length; i < len; i++) {\n const injection = injections[i];\n if (!injection.matcher(scopes)) {\n continue;\n }\n const rule = grammar.getRule(injection.ruleId);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, null, isFirstLine, linePos === anchorPosition);\n const matchResult = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (!matchResult) {\n continue;\n }\n if (false) {\n console.log(` matched injection: ${injection.debugSelector}`);\n console.log(ruleScanner.toString());\n }\n const matchRating = matchResult.captureIndices[0].start;\n if (matchRating >= bestMatchRating) {\n continue;\n }\n bestMatchRating = matchRating;\n bestMatchCaptureIndices = matchResult.captureIndices;\n bestMatchRuleId = matchResult.ruleId;\n bestMatchResultPriority = injection.priority;\n if (bestMatchRating === linePos) {\n break;\n }\n }\n if (bestMatchCaptureIndices) {\n return {\n priorityMatch: bestMatchResultPriority === -1,\n captureIndices: bestMatchCaptureIndices,\n matchedRuleId: bestMatchRuleId\n };\n }\n return null;\n}\nfunction prepareRuleSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction prepareRuleWhileSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (UseOnigurumaFindOptions) {\n const ruleScanner2 = rule.compileWhile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner: ruleScanner2, findOptions };\n }\n const ruleScanner = rule.compileWhileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction getFindOptions(allowA, allowG) {\n let options = 0 /* None */;\n if (!allowA) {\n options |= 1 /* NotBeginString */;\n }\n if (!allowG) {\n options |= 4 /* NotBeginPosition */;\n }\n return options;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n if (captures.length === 0) {\n return;\n }\n const lineTextContent = lineText.content;\n const len = Math.min(captures.length, captureIndices.length);\n const localStack = [];\n const maxEnd = captureIndices[0].end;\n for (let i = 0; i < len; i++) {\n const captureRule = captures[i];\n if (captureRule === null) {\n continue;\n }\n const captureIndex = captureIndices[i];\n if (captureIndex.length === 0) {\n continue;\n }\n if (captureIndex.start > maxEnd) {\n break;\n }\n while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n if (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n } else {\n lineTokens.produce(stack, captureIndex.start);\n }\n if (captureRule.retokenizeCapturedWithRuleId) {\n const scopeName = captureRule.getName(lineTextContent, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n const contentName = captureRule.getContentName(lineTextContent, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n const stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n const onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n _tokenizeString(\n grammar,\n onigSubStr,\n isFirstLine && captureIndex.start === 0,\n captureIndex.start,\n stackClone,\n lineTokens,\n false,\n /* no time limit */\n 0\n );\n disposeOnigString(onigSubStr);\n continue;\n }\n const captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n if (captureRuleScopeName !== null) {\n const base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n const captureRuleScopesList = base.pushAttributed(captureRuleScopeName, grammar);\n localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n }\n }\n while (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n}\nvar LocalStackElement = class {\n scopes;\n endPos;\n constructor(scopes, endPos) {\n this.scopes = scopes;\n this.endPos = endPos;\n }\n};\n\n// src/grammar/grammar.ts\nfunction createGrammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib) {\n return new Grammar(\n scopeName,\n grammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n grammarRepository,\n onigLib\n );\n}\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n const matchers = createMatchers(selector, nameMatcher);\n const ruleId = RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n for (const matcher of matchers) {\n result.push({\n debugSelector: selector,\n matcher: matcher.matcher,\n ruleId,\n grammar,\n priority: matcher.priority\n });\n }\n}\nfunction nameMatcher(identifers, scopes) {\n if (scopes.length < identifers.length) {\n return false;\n }\n let lastIndex = 0;\n return identifers.every((identifier) => {\n for (let i = lastIndex; i < scopes.length; i++) {\n if (scopesAreMatching(scopes[i], identifier)) {\n lastIndex = i + 1;\n return true;\n }\n }\n return false;\n });\n}\nfunction scopesAreMatching(thisScopeName, scopeName) {\n if (!thisScopeName) {\n return false;\n }\n if (thisScopeName === scopeName) {\n return true;\n }\n const len = scopeName.length;\n return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === \".\";\n}\nvar Grammar = class {\n constructor(_rootScopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, _onigLib) {\n this._rootScopeName = _rootScopeName;\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._onigLib = _onigLib;\n this._basicScopeAttributesProvider = new BasicScopeAttributesProvider(\n initialLanguage,\n embeddedLanguages\n );\n this._rootId = -1;\n this._lastRuleId = 0;\n this._ruleId2desc = [null];\n this._includedGrammars = {};\n this._grammarRepository = grammarRepository;\n this._grammar = initGrammar(grammar, null);\n this._injections = null;\n this._tokenTypeMatchers = [];\n if (tokenTypes) {\n for (const selector of Object.keys(tokenTypes)) {\n const matchers = createMatchers(selector, nameMatcher);\n for (const matcher of matchers) {\n this._tokenTypeMatchers.push({\n matcher: matcher.matcher,\n type: tokenTypes[selector]\n });\n }\n }\n }\n }\n _rootId;\n _lastRuleId;\n _ruleId2desc;\n _includedGrammars;\n _grammarRepository;\n _grammar;\n _injections;\n _basicScopeAttributesProvider;\n _tokenTypeMatchers;\n get themeProvider() {\n return this._grammarRepository;\n }\n dispose() {\n for (const rule of this._ruleId2desc) {\n if (rule) {\n rule.dispose();\n }\n }\n }\n createOnigScanner(sources) {\n return this._onigLib.createOnigScanner(sources);\n }\n createOnigString(sources) {\n return this._onigLib.createOnigString(sources);\n }\n getMetadataForScope(scope) {\n return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope);\n }\n _collectInjections() {\n const grammarRepository = {\n lookup: (scopeName2) => {\n if (scopeName2 === this._rootScopeName) {\n return this._grammar;\n }\n return this.getExternalGrammar(scopeName2);\n },\n injections: (scopeName2) => {\n return this._grammarRepository.injections(scopeName2);\n }\n };\n const result = [];\n const scopeName = this._rootScopeName;\n const grammar = grammarRepository.lookup(scopeName);\n if (grammar) {\n const rawInjections = grammar.injections;\n if (rawInjections) {\n for (let expression in rawInjections) {\n collectInjections(\n result,\n expression,\n rawInjections[expression],\n this,\n grammar\n );\n }\n }\n const injectionScopeNames = this._grammarRepository.injections(scopeName);\n if (injectionScopeNames) {\n injectionScopeNames.forEach((injectionScopeName) => {\n const injectionGrammar = this.getExternalGrammar(injectionScopeName);\n if (injectionGrammar) {\n const selector = injectionGrammar.injectionSelector;\n if (selector) {\n collectInjections(\n result,\n selector,\n injectionGrammar,\n this,\n injectionGrammar\n );\n }\n }\n });\n }\n }\n result.sort((i1, i2) => i1.priority - i2.priority);\n return result;\n }\n getInjections() {\n if (this._injections === null) {\n this._injections = this._collectInjections();\n }\n return this._injections;\n }\n registerRule(factory) {\n const id = ++this._lastRuleId;\n const result = factory(ruleIdFromNumber(id));\n this._ruleId2desc[id] = result;\n return result;\n }\n getRule(ruleId) {\n return this._ruleId2desc[ruleIdToNumber(ruleId)];\n }\n getExternalGrammar(scopeName, repository) {\n if (this._includedGrammars[scopeName]) {\n return this._includedGrammars[scopeName];\n } else if (this._grammarRepository) {\n const rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n if (rawIncludedGrammar) {\n this._includedGrammars[scopeName] = initGrammar(\n rawIncludedGrammar,\n repository && repository.$base\n );\n return this._includedGrammars[scopeName];\n }\n }\n return void 0;\n }\n tokenizeLine(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, false, timeLimit);\n return {\n tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n tokenizeLine2(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, true, timeLimit);\n return {\n tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly\n };\n }\n _tokenize(lineText, prevState, emitBinaryTokens, timeLimit) {\n if (this._rootId === -1) {\n this._rootId = RuleFactory.getCompiledRuleId(\n this._grammar.repository.$self,\n this,\n this._grammar.repository\n );\n this.getInjections();\n }\n let isFirstLine;\n if (!prevState || prevState === StateStackImpl.NULL) {\n isFirstLine = true;\n const rawDefaultMetadata = this._basicScopeAttributesProvider.getDefaultAttributes();\n const defaultStyle = this.themeProvider.getDefaults();\n const defaultMetadata = EncodedTokenMetadata.set(\n 0,\n rawDefaultMetadata.languageId,\n rawDefaultMetadata.tokenType,\n null,\n defaultStyle.fontStyle,\n defaultStyle.foregroundId,\n defaultStyle.backgroundId\n );\n const rootScopeName = this.getRule(this._rootId).getName(\n null,\n null\n );\n let scopeList;\n if (rootScopeName) {\n scopeList = AttributedScopeStack.createRootAndLookUpScopeName(\n rootScopeName,\n defaultMetadata,\n this\n );\n } else {\n scopeList = AttributedScopeStack.createRoot(\n \"unknown\",\n defaultMetadata\n );\n }\n prevState = new StateStackImpl(\n null,\n this._rootId,\n -1,\n -1,\n false,\n null,\n scopeList,\n scopeList\n );\n } else {\n isFirstLine = false;\n prevState.reset();\n }\n lineText = lineText + \"\\n\";\n const onigLineText = this.createOnigString(lineText);\n const lineLength = onigLineText.content.length;\n const lineTokens = new LineTokens(\n emitBinaryTokens,\n lineText,\n this._tokenTypeMatchers,\n this.balancedBracketSelectors\n );\n const r = _tokenizeString(\n this,\n onigLineText,\n isFirstLine,\n 0,\n prevState,\n lineTokens,\n true,\n timeLimit\n );\n disposeOnigString(onigLineText);\n return {\n lineLength,\n lineTokens,\n ruleStack: r.stack,\n stoppedEarly: r.stoppedEarly\n };\n }\n};\nfunction initGrammar(grammar, base) {\n grammar = clone(grammar);\n grammar.repository = grammar.repository || {};\n grammar.repository.$self = {\n $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n patterns: grammar.patterns,\n name: grammar.scopeName\n };\n grammar.repository.$base = base || grammar.repository.$self;\n return grammar;\n}\nvar AttributedScopeStack = class _AttributedScopeStack {\n /**\n * Invariant:\n * ```\n * if (parent && !scopePath.extends(parent.scopePath)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, scopePath, tokenAttributes) {\n this.parent = parent;\n this.scopePath = scopePath;\n this.tokenAttributes = tokenAttributes;\n }\n static fromExtension(namesScopeList, contentNameScopesList) {\n let current = namesScopeList;\n let scopeNames = namesScopeList?.scopePath ?? null;\n for (const frame of contentNameScopesList) {\n scopeNames = ScopeStack.push(scopeNames, frame.scopeNames);\n current = new _AttributedScopeStack(current, scopeNames, frame.encodedTokenAttributes);\n }\n return current;\n }\n static createRoot(scopeName, tokenAttributes) {\n return new _AttributedScopeStack(null, new ScopeStack(null, scopeName), tokenAttributes);\n }\n static createRootAndLookUpScopeName(scopeName, tokenAttributes, grammar) {\n const rawRootMetadata = grammar.getMetadataForScope(scopeName);\n const scopePath = new ScopeStack(null, scopeName);\n const rootStyle = grammar.themeProvider.themeMatch(scopePath);\n const resolvedTokenAttributes = _AttributedScopeStack.mergeAttributes(\n tokenAttributes,\n rawRootMetadata,\n rootStyle\n );\n return new _AttributedScopeStack(null, scopePath, resolvedTokenAttributes);\n }\n get scopeName() {\n return this.scopePath.scopeName;\n }\n toString() {\n return this.getScopeNames().join(\" \");\n }\n equals(other) {\n return _AttributedScopeStack.equals(this, other);\n }\n static equals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.scopeName !== b.scopeName || a.tokenAttributes !== b.tokenAttributes) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n static mergeAttributes(existingTokenAttributes, basicScopeAttributes, styleAttributes) {\n let fontStyle = -1 /* NotSet */;\n let foreground = 0;\n let background = 0;\n if (styleAttributes !== null) {\n fontStyle = styleAttributes.fontStyle;\n foreground = styleAttributes.foregroundId;\n background = styleAttributes.backgroundId;\n }\n return EncodedTokenMetadata.set(\n existingTokenAttributes,\n basicScopeAttributes.languageId,\n basicScopeAttributes.tokenType,\n null,\n fontStyle,\n foreground,\n background\n );\n }\n pushAttributed(scopePath, grammar) {\n if (scopePath === null) {\n return this;\n }\n if (scopePath.indexOf(\" \") === -1) {\n return _AttributedScopeStack._pushAttributed(this, scopePath, grammar);\n }\n const scopes = scopePath.split(/ /g);\n let result = this;\n for (const scope of scopes) {\n result = _AttributedScopeStack._pushAttributed(result, scope, grammar);\n }\n return result;\n }\n static _pushAttributed(target, scopeName, grammar) {\n const rawMetadata = grammar.getMetadataForScope(scopeName);\n const newPath = target.scopePath.push(scopeName);\n const scopeThemeMatchResult = grammar.themeProvider.themeMatch(newPath);\n const metadata = _AttributedScopeStack.mergeAttributes(\n target.tokenAttributes,\n rawMetadata,\n scopeThemeMatchResult\n );\n return new _AttributedScopeStack(target, newPath, metadata);\n }\n getScopeNames() {\n return this.scopePath.getSegments();\n }\n getExtensionIfDefined(base) {\n const result = [];\n let self = this;\n while (self && self !== base) {\n result.push({\n encodedTokenAttributes: self.tokenAttributes,\n scopeNames: self.scopePath.getExtensionIfDefined(self.parent?.scopePath ?? null)\n });\n self = self.parent;\n }\n return self === base ? result.reverse() : void 0;\n }\n};\nvar StateStackImpl = class _StateStackImpl {\n /**\n * Invariant:\n * ```\n * if (contentNameScopesList !== nameScopesList && contentNameScopesList?.parent !== nameScopesList) {\n * \tthrow new Error();\n * }\n * if (this.parent && !nameScopesList.extends(this.parent.contentNameScopesList)) {\n * \tthrow new Error();\n * }\n * ```\n */\n constructor(parent, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n this.parent = parent;\n this.ruleId = ruleId;\n this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n this.endRule = endRule;\n this.nameScopesList = nameScopesList;\n this.contentNameScopesList = contentNameScopesList;\n this.depth = this.parent ? this.parent.depth + 1 : 1;\n this._enterPos = enterPos;\n this._anchorPos = anchorPos;\n }\n _stackElementBrand = void 0;\n // TODO remove me\n static NULL = new _StateStackImpl(\n null,\n 0,\n 0,\n 0,\n false,\n null,\n null,\n null\n );\n /**\n * The position on the current line where this state was pushed.\n * This is relevant only while tokenizing a line, to detect endless loops.\n * Its value is meaningless across lines.\n */\n _enterPos;\n /**\n * The captured anchor position when this stack element was pushed.\n * This is relevant only while tokenizing a line, to restore the anchor position when popping.\n * Its value is meaningless across lines.\n */\n _anchorPos;\n /**\n * The depth of the stack.\n */\n depth;\n equals(other) {\n if (other === null) {\n return false;\n }\n return _StateStackImpl._equals(this, other);\n }\n static _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!this._structuralEquals(a, b)) {\n return false;\n }\n return AttributedScopeStack.equals(a.contentNameScopesList, b.contentNameScopesList);\n }\n /**\n * A structural equals check. Does not take into account `scopes`.\n */\n static _structuralEquals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n clone() {\n return this;\n }\n static _reset(el) {\n while (el) {\n el._enterPos = -1;\n el._anchorPos = -1;\n el = el.parent;\n }\n }\n reset() {\n _StateStackImpl._reset(this);\n }\n pop() {\n return this.parent;\n }\n safePop() {\n if (this.parent) {\n return this.parent;\n }\n return this;\n }\n push(ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n return new _StateStackImpl(\n this,\n ruleId,\n enterPos,\n anchorPos,\n beginRuleCapturedEOL,\n endRule,\n nameScopesList,\n contentNameScopesList\n );\n }\n getEnterPos() {\n return this._enterPos;\n }\n getAnchorPos() {\n return this._anchorPos;\n }\n getRule(grammar) {\n return grammar.getRule(this.ruleId);\n }\n toString() {\n const r = [];\n this._writeString(r, 0);\n return \"[\" + r.join(\",\") + \"]\";\n }\n _writeString(res, outIndex) {\n if (this.parent) {\n outIndex = this.parent._writeString(res, outIndex);\n }\n res[outIndex++] = `(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`;\n return outIndex;\n }\n withContentNameScopesList(contentNameScopeStack) {\n if (this.contentNameScopesList === contentNameScopeStack) {\n return this;\n }\n return this.parent.push(\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n this.endRule,\n this.nameScopesList,\n contentNameScopeStack\n );\n }\n withEndRule(endRule) {\n if (this.endRule === endRule) {\n return this;\n }\n return new _StateStackImpl(\n this.parent,\n this.ruleId,\n this._enterPos,\n this._anchorPos,\n this.beginRuleCapturedEOL,\n endRule,\n this.nameScopesList,\n this.contentNameScopesList\n );\n }\n // Used to warn of endless loops\n hasSameRuleAs(other) {\n let el = this;\n while (el && el._enterPos === other._enterPos) {\n if (el.ruleId === other.ruleId) {\n return true;\n }\n el = el.parent;\n }\n return false;\n }\n toStateStackFrame() {\n return {\n ruleId: ruleIdToNumber(this.ruleId),\n beginRuleCapturedEOL: this.beginRuleCapturedEOL,\n endRule: this.endRule,\n nameScopesList: this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList ?? null) ?? [],\n contentNameScopesList: this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList) ?? []\n };\n }\n static pushFrame(self, frame) {\n const namesScopeList = AttributedScopeStack.fromExtension(self?.nameScopesList ?? null, frame.nameScopesList);\n return new _StateStackImpl(\n self,\n ruleIdFromNumber(frame.ruleId),\n frame.enterPos ?? -1,\n frame.anchorPos ?? -1,\n frame.beginRuleCapturedEOL,\n frame.endRule,\n namesScopeList,\n AttributedScopeStack.fromExtension(namesScopeList, frame.contentNameScopesList)\n );\n }\n};\nvar BalancedBracketSelectors = class {\n balancedBracketScopes;\n unbalancedBracketScopes;\n allowAny = false;\n constructor(balancedBracketScopes, unbalancedBracketScopes) {\n this.balancedBracketScopes = balancedBracketScopes.flatMap(\n (selector) => {\n if (selector === \"*\") {\n this.allowAny = true;\n return [];\n }\n return createMatchers(selector, nameMatcher).map((m) => m.matcher);\n }\n );\n this.unbalancedBracketScopes = unbalancedBracketScopes.flatMap(\n (selector) => createMatchers(selector, nameMatcher).map((m) => m.matcher)\n );\n }\n get matchesAlways() {\n return this.allowAny && this.unbalancedBracketScopes.length === 0;\n }\n get matchesNever() {\n return this.balancedBracketScopes.length === 0 && !this.allowAny;\n }\n match(scopes) {\n for (const excluder of this.unbalancedBracketScopes) {\n if (excluder(scopes)) {\n return false;\n }\n }\n for (const includer of this.balancedBracketScopes) {\n if (includer(scopes)) {\n return true;\n }\n }\n return this.allowAny;\n }\n};\nvar LineTokens = class {\n constructor(emitBinaryTokens, lineText, tokenTypeOverrides, balancedBracketSelectors) {\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._emitBinaryTokens = emitBinaryTokens;\n this._tokenTypeOverrides = tokenTypeOverrides;\n if (false) {\n this._lineText = lineText;\n } else {\n this._lineText = null;\n }\n this._tokens = [];\n this._binaryTokens = [];\n this._lastTokenEndIndex = 0;\n }\n _emitBinaryTokens;\n /**\n * defined only if `false`.\n */\n _lineText;\n /**\n * used only if `_emitBinaryTokens` is false.\n */\n _tokens;\n /**\n * used only if `_emitBinaryTokens` is true.\n */\n _binaryTokens;\n _lastTokenEndIndex;\n _tokenTypeOverrides;\n produce(stack, endIndex) {\n this.produceFromScopes(stack.contentNameScopesList, endIndex);\n }\n produceFromScopes(scopesList, endIndex) {\n if (this._lastTokenEndIndex >= endIndex) {\n return;\n }\n if (this._emitBinaryTokens) {\n let metadata = scopesList?.tokenAttributes ?? 0;\n let containsBalancedBrackets = false;\n if (this.balancedBracketSelectors?.matchesAlways) {\n containsBalancedBrackets = true;\n }\n if (this._tokenTypeOverrides.length > 0 || this.balancedBracketSelectors && !this.balancedBracketSelectors.matchesAlways && !this.balancedBracketSelectors.matchesNever) {\n const scopes2 = scopesList?.getScopeNames() ?? [];\n for (const tokenType of this._tokenTypeOverrides) {\n if (tokenType.matcher(scopes2)) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n toOptionalTokenType(tokenType.type),\n null,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n }\n if (this.balancedBracketSelectors) {\n containsBalancedBrackets = this.balancedBracketSelectors.match(scopes2);\n }\n }\n if (containsBalancedBrackets) {\n metadata = EncodedTokenMetadata.set(\n metadata,\n 0,\n 8 /* NotSet */,\n containsBalancedBrackets,\n -1 /* NotSet */,\n 0,\n 0\n );\n }\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n this._lastTokenEndIndex = endIndex;\n return;\n }\n this._binaryTokens.push(this._lastTokenEndIndex);\n this._binaryTokens.push(metadata);\n this._lastTokenEndIndex = endIndex;\n return;\n }\n const scopes = scopesList?.getScopeNames() ?? [];\n this._tokens.push({\n startIndex: this._lastTokenEndIndex,\n endIndex,\n // value: lineText.substring(lastTokenEndIndex, endIndex),\n scopes\n });\n this._lastTokenEndIndex = endIndex;\n }\n getResult(stack, lineLength) {\n if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n this._tokens.pop();\n }\n if (this._tokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._tokens[this._tokens.length - 1].startIndex = 0;\n }\n return this._tokens;\n }\n getBinaryResult(stack, lineLength) {\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n this._binaryTokens.pop();\n this._binaryTokens.pop();\n }\n if (this._binaryTokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._binaryTokens[this._binaryTokens.length - 2] = 0;\n }\n const result = new Uint32Array(this._binaryTokens.length);\n for (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n result[i] = this._binaryTokens[i];\n }\n return result;\n }\n};\n\n// src/registry.ts\nvar SyncRegistry = class {\n constructor(theme, _onigLib) {\n this._onigLib = _onigLib;\n this._theme = theme;\n }\n _grammars = /* @__PURE__ */ new Map();\n _rawGrammars = /* @__PURE__ */ new Map();\n _injectionGrammars = /* @__PURE__ */ new Map();\n _theme;\n dispose() {\n for (const grammar of this._grammars.values()) {\n grammar.dispose();\n }\n }\n setTheme(theme) {\n this._theme = theme;\n }\n getColorMap() {\n return this._theme.getColorMap();\n }\n /**\n * Add `grammar` to registry and return a list of referenced scope names\n */\n addGrammar(grammar, injectionScopeNames) {\n this._rawGrammars.set(grammar.scopeName, grammar);\n if (injectionScopeNames) {\n this._injectionGrammars.set(grammar.scopeName, injectionScopeNames);\n }\n }\n /**\n * Lookup a raw grammar.\n */\n lookup(scopeName) {\n return this._rawGrammars.get(scopeName);\n }\n /**\n * Returns the injections for the given grammar\n */\n injections(targetScope) {\n return this._injectionGrammars.get(targetScope);\n }\n /**\n * Get the default theme settings\n */\n getDefaults() {\n return this._theme.getDefaults();\n }\n /**\n * Match a scope in the theme.\n */\n themeMatch(scopePath) {\n return this._theme.match(scopePath);\n }\n /**\n * Lookup a grammar.\n */\n grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n if (!this._grammars.has(scopeName)) {\n let rawGrammar = this._rawGrammars.get(scopeName);\n if (!rawGrammar) {\n return null;\n }\n this._grammars.set(scopeName, createGrammar(\n scopeName,\n rawGrammar,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors,\n this,\n this._onigLib\n ));\n }\n return this._grammars.get(scopeName);\n }\n};\n\n// src/index.ts\nvar Registry = class {\n _options;\n _syncRegistry;\n _ensureGrammarCache;\n constructor(options) {\n this._options = options;\n this._syncRegistry = new SyncRegistry(\n Theme.createFromRawTheme(options.theme, options.colorMap),\n options.onigLib\n );\n this._ensureGrammarCache = /* @__PURE__ */ new Map();\n }\n dispose() {\n this._syncRegistry.dispose();\n }\n /**\n * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n */\n setTheme(theme, colorMap) {\n this._syncRegistry.setTheme(Theme.createFromRawTheme(theme, colorMap));\n }\n /**\n * Returns a lookup array for color ids.\n */\n getColorMap() {\n return this._syncRegistry.getColorMap();\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithEmbeddedLanguages(initialScopeName, initialLanguage, embeddedLanguages) {\n return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithConfiguration(initialScopeName, initialLanguage, configuration) {\n return this._loadGrammar(\n initialScopeName,\n initialLanguage,\n configuration.embeddedLanguages,\n configuration.tokenTypes,\n new BalancedBracketSelectors(\n configuration.balancedBracketSelectors || [],\n configuration.unbalancedBracketSelectors || []\n )\n );\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n */\n loadGrammar(initialScopeName) {\n return this._loadGrammar(initialScopeName, 0, null, null, null);\n }\n _loadGrammar(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n const dependencyProcessor = new ScopeDependencyProcessor(this._syncRegistry, initialScopeName);\n while (dependencyProcessor.Q.length > 0) {\n dependencyProcessor.Q.map((request) => this._loadSingleGrammar(request.scopeName));\n dependencyProcessor.processQueue();\n }\n return this._grammarForScopeName(\n initialScopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n _loadSingleGrammar(scopeName) {\n if (!this._ensureGrammarCache.has(scopeName)) {\n this._doLoadSingleGrammar(scopeName);\n this._ensureGrammarCache.set(scopeName, true);\n }\n }\n _doLoadSingleGrammar(scopeName) {\n const grammar = this._options.loadGrammar(scopeName);\n if (grammar) {\n const injections = typeof this._options.getInjections === \"function\" ? this._options.getInjections(scopeName) : void 0;\n this._syncRegistry.addGrammar(grammar, injections);\n }\n }\n /**\n * Adds a rawGrammar.\n */\n addGrammar(rawGrammar, injections = [], initialLanguage = 0, embeddedLanguages = null) {\n this._syncRegistry.addGrammar(rawGrammar, injections);\n return this._grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages);\n }\n /**\n * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n */\n _grammarForScopeName(scopeName, initialLanguage = 0, embeddedLanguages = null, tokenTypes = null, balancedBracketSelectors = null) {\n return this._syncRegistry.grammarForScopeName(\n scopeName,\n initialLanguage,\n embeddedLanguages,\n tokenTypes,\n balancedBracketSelectors\n );\n }\n};\nvar INITIAL = StateStackImpl.NULL;\nexport {\n EncodedTokenMetadata,\n FindOption,\n FontStyle,\n INITIAL,\n Registry,\n Theme,\n disposeOnigString\n};\n", "import { ShikiError } from \"@shikijs/types\";\nimport { EncodedTokenMetadata, INITIAL, Registry as Registry$1, Theme } from \"@shikijs/vscode-textmate\";\n\nexport * from \"@shikijs/types\"\n\n//#region src/utils/colors.ts\nfunction resolveColorReplacements(theme, options) {\n\tconst replacements = typeof theme === \"string\" ? {} : { ...theme.colorReplacements };\n\tconst themeName = typeof theme === \"string\" ? theme : theme.name;\n\tfor (const [key, value] of Object.entries(options?.colorReplacements || {})) if (typeof value === \"string\") replacements[key] = value;\n\telse if (key === themeName) Object.assign(replacements, value);\n\treturn replacements;\n}\nfunction applyColorReplacements(color, replacements) {\n\tif (!color) return color;\n\treturn replacements?.[color?.toLowerCase()] || color;\n}\n\n//#endregion\n//#region src/utils/general.ts\nfunction toArray(x) {\n\treturn Array.isArray(x) ? x : [x];\n}\n/**\n* Normalize a getter to a promise.\n*/\nasync function normalizeGetter(p) {\n\treturn Promise.resolve(typeof p === \"function\" ? p() : p).then((r) => r.default || r);\n}\n/**\n* Check if the language is plaintext that is ignored by Shiki.\n*\n* Hard-coded plain text languages: `plaintext`, `txt`, `text`, `plain`.\n*/\nfunction isPlainLang(lang) {\n\treturn !lang || [\n\t\t\"plaintext\",\n\t\t\"txt\",\n\t\t\"text\",\n\t\t\"plain\"\n\t].includes(lang);\n}\n/**\n* Check if the language is specially handled or bypassed by Shiki.\n*\n* Hard-coded languages: `ansi` and plaintexts like `plaintext`, `txt`, `text`, `plain`.\n*/\nfunction isSpecialLang(lang) {\n\treturn lang === \"ansi\" || isPlainLang(lang);\n}\n/**\n* Check if the theme is specially handled or bypassed by Shiki.\n*\n* Hard-coded themes: `none`.\n*/\nfunction isNoneTheme(theme) {\n\treturn theme === \"none\";\n}\n/**\n* Check if the theme is specially handled or bypassed by Shiki.\n*\n* Hard-coded themes: `none`.\n*/\nfunction isSpecialTheme(theme) {\n\treturn isNoneTheme(theme);\n}\n\n//#endregion\n//#region src/utils/strings.ts\n/**\n* Split a string into lines, each line preserves the line ending.\n*\n* @param code - The code string to split into lines\n* @param preserveEnding - Whether to preserve line endings in the result\n* @returns Array of tuples containing [line content, offset index]\n*\n* @example\n* ```ts\n* splitLines('hello\\nworld', false)\n* // => [['hello', 0], ['world', 6]]\n*\n* splitLines('hello\\nworld', true)\n* // => [['hello\\n', 0], ['world', 6]]\n* ```\n*/\nfunction splitLines(code, preserveEnding = false) {\n\tif (code.length === 0) return [[\"\", 0]];\n\tconst parts = code.split(/(\\r?\\n)/g);\n\tlet index = 0;\n\tconst lines = [];\n\tfor (let i = 0; i < parts.length; i += 2) {\n\t\tconst line = preserveEnding ? parts[i] + (parts[i + 1] || \"\") : parts[i];\n\t\tlines.push([line, index]);\n\t\tindex += parts[i].length;\n\t\tindex += parts[i + 1]?.length || 0;\n\t}\n\treturn lines;\n}\n\n//#endregion\n//#region src/textmate/normalize-theme.ts\n/**\n* https://github.com/microsoft/vscode/blob/f7f05dee53fb33fe023db2e06e30a89d3094488f/src/vs/platform/theme/common/colorRegistry.ts#L258-L268\n*/\nconst VSCODE_FALLBACK_EDITOR_FG = {\n\tlight: \"#333333\",\n\tdark: \"#bbbbbb\"\n};\nconst VSCODE_FALLBACK_EDITOR_BG = {\n\tlight: \"#fffffe\",\n\tdark: \"#1e1e1e\"\n};\nconst RESOLVED_KEY = \"__shiki_resolved\";\n/**\n* Normalize a textmate theme to shiki theme\n*/\nfunction normalizeTheme(rawTheme) {\n\tif (rawTheme?.[RESOLVED_KEY]) return rawTheme;\n\tconst theme = { ...rawTheme };\n\tif (theme.tokenColors && !theme.settings) {\n\t\ttheme.settings = theme.tokenColors;\n\t\tdelete theme.tokenColors;\n\t}\n\ttheme.type ||= \"dark\";\n\ttheme.colorReplacements = { ...theme.colorReplacements };\n\ttheme.settings ||= [];\n\tlet { bg, fg } = theme;\n\tif (!bg || !fg) {\n\t\t/**\n\t\t* First try:\n\t\t* Theme might contain a global `tokenColor` without `name` or `scope`\n\t\t* Used as default value for foreground/background\n\t\t*/\n\t\tconst globalSetting = theme.settings ? theme.settings.find((s) => !s.name && !s.scope) : void 0;\n\t\tif (globalSetting?.settings?.foreground) fg = globalSetting.settings.foreground;\n\t\tif (globalSetting?.settings?.background) bg = globalSetting.settings.background;\n\t\t/**\n\t\t* Second try:\n\t\t* If there's no global `tokenColor` without `name` or `scope`\n\t\t* Use `editor.foreground` and `editor.background`\n\t\t*/\n\t\tif (!fg && theme?.colors?.[\"editor.foreground\"]) fg = theme.colors[\"editor.foreground\"];\n\t\tif (!bg && theme?.colors?.[\"editor.background\"]) bg = theme.colors[\"editor.background\"];\n\t\t/**\n\t\t* Last try:\n\t\t* If there's no fg/bg color specified in theme, use default\n\t\t*/\n\t\tif (!fg) fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n\t\tif (!bg) bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n\t\ttheme.fg = fg;\n\t\ttheme.bg = bg;\n\t}\n\tif (!(theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope)) theme.settings.unshift({ settings: {\n\t\tforeground: theme.fg,\n\t\tbackground: theme.bg\n\t} });\n\tlet replacementCount = 0;\n\tconst replacementMap = /* @__PURE__ */ new Map();\n\tfunction getReplacementColor(value) {\n\t\tif (replacementMap.has(value)) return replacementMap.get(value);\n\t\treplacementCount += 1;\n\t\tconst hex = `#${replacementCount.toString(16).padStart(8, \"0\").toLowerCase()}`;\n\t\tif (theme.colorReplacements?.[`#${hex}`]) return getReplacementColor(value);\n\t\treplacementMap.set(value, hex);\n\t\treturn hex;\n\t}\n\ttheme.settings = theme.settings.map((setting) => {\n\t\tconst replaceFg = setting.settings?.foreground && !setting.settings.foreground.startsWith(\"#\");\n\t\tconst replaceBg = setting.settings?.background && !setting.settings.background.startsWith(\"#\");\n\t\tif (!replaceFg && !replaceBg) return setting;\n\t\tconst clone = {\n\t\t\t...setting,\n\t\t\tsettings: { ...setting.settings }\n\t\t};\n\t\tif (replaceFg) {\n\t\t\tconst replacement = getReplacementColor(setting.settings.foreground);\n\t\t\ttheme.colorReplacements[replacement] = setting.settings.foreground;\n\t\t\tclone.settings.foreground = replacement;\n\t\t}\n\t\tif (replaceBg) {\n\t\t\tconst replacement = getReplacementColor(setting.settings.background);\n\t\t\ttheme.colorReplacements[replacement] = setting.settings.background;\n\t\t\tclone.settings.background = replacement;\n\t\t}\n\t\treturn clone;\n\t});\n\tfor (const key of Object.keys(theme.colors || {})) if (key === \"editor.foreground\" || key === \"editor.background\" || key.startsWith(\"terminal.ansi\")) {\n\t\tif (!theme.colors[key]?.startsWith(\"#\")) {\n\t\t\tconst replacement = getReplacementColor(theme.colors[key]);\n\t\t\ttheme.colorReplacements[replacement] = theme.colors[key];\n\t\t\ttheme.colors[key] = replacement;\n\t\t}\n\t}\n\tObject.defineProperty(theme, RESOLVED_KEY, {\n\t\tenumerable: false,\n\t\twritable: false,\n\t\tvalue: true\n\t});\n\treturn theme;\n}\n\n//#endregion\n//#region src/textmate/getters-resolve.ts\n/**\n* Resolve\n*/\nasync function resolveLangs(langs) {\n\treturn Array.from(new Set((await Promise.all(langs.filter((l) => !isSpecialLang(l)).map(async (lang) => await normalizeGetter(lang).then((r) => Array.isArray(r) ? r : [r])))).flat()));\n}\nasync function resolveThemes(themes) {\n\treturn (await Promise.all(themes.map(async (theme) => isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))))).filter((i) => !!i);\n}\n\n//#endregion\n//#region src/utils/alias.ts\nfunction resolveLangAlias(name, alias) {\n\tif (!alias) return name;\n\tif (alias[name]) {\n\t\tconst resolved = new Set([name]);\n\t\twhile (alias[name]) {\n\t\t\tname = alias[name];\n\t\t\tif (resolved.has(name)) throw new ShikiError(`Circular alias \\`${Array.from(resolved).join(\" -> \")} -> ${name}\\``);\n\t\t\tresolved.add(name);\n\t\t}\n\t}\n\treturn name;\n}\n\n//#endregion\n//#region src/textmate/registry.ts\nvar Registry = class extends Registry$1 {\n\t_resolvedThemes = /* @__PURE__ */ new Map();\n\t_resolvedGrammars = /* @__PURE__ */ new Map();\n\t_langMap = /* @__PURE__ */ new Map();\n\t_langGraph = /* @__PURE__ */ new Map();\n\t_textmateThemeCache = /* @__PURE__ */ new WeakMap();\n\t_loadedThemesCache = null;\n\t_loadedLanguagesCache = null;\n\tconstructor(_resolver, _themes, _langs, _alias = {}) {\n\t\tsuper(_resolver);\n\t\tthis._resolver = _resolver;\n\t\tthis._themes = _themes;\n\t\tthis._langs = _langs;\n\t\tthis._alias = _alias;\n\t\tthis._themes.map((t) => this.loadTheme(t));\n\t\tthis.loadLanguages(this._langs);\n\t}\n\tgetTheme(theme) {\n\t\tif (typeof theme === \"string\") return this._resolvedThemes.get(theme);\n\t\telse return this.loadTheme(theme);\n\t}\n\tloadTheme(theme) {\n\t\tconst _theme = normalizeTheme(theme);\n\t\tif (_theme.name) {\n\t\t\tthis._resolvedThemes.set(_theme.name, _theme);\n\t\t\tthis._loadedThemesCache = null;\n\t\t}\n\t\treturn _theme;\n\t}\n\tgetLoadedThemes() {\n\t\tif (!this._loadedThemesCache) this._loadedThemesCache = [...this._resolvedThemes.keys()];\n\t\treturn this._loadedThemesCache;\n\t}\n\tsetTheme(theme) {\n\t\tlet textmateTheme = this._textmateThemeCache.get(theme);\n\t\tif (!textmateTheme) {\n\t\t\ttextmateTheme = Theme.createFromRawTheme(theme);\n\t\t\tthis._textmateThemeCache.set(theme, textmateTheme);\n\t\t}\n\t\tthis._syncRegistry.setTheme(textmateTheme);\n\t}\n\tgetGrammar(name) {\n\t\tname = resolveLangAlias(name, this._alias);\n\t\treturn this._resolvedGrammars.get(name);\n\t}\n\tloadLanguage(lang) {\n\t\tif (this.getGrammar(lang.name)) return;\n\t\tconst embeddedLazilyBy = new Set([...this._langMap.values()].filter((i) => i.embeddedLangsLazy?.includes(lang.name)));\n\t\tthis._resolver.addLanguage(lang);\n\t\tconst grammarConfig = {\n\t\t\tbalancedBracketSelectors: lang.balancedBracketSelectors || [\"*\"],\n\t\t\tunbalancedBracketSelectors: lang.unbalancedBracketSelectors || []\n\t\t};\n\t\tthis._syncRegistry._rawGrammars.set(lang.scopeName, lang);\n\t\tconst g = this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);\n\t\tg.name = lang.name;\n\t\tthis._resolvedGrammars.set(lang.name, g);\n\t\tif (lang.aliases) lang.aliases.forEach((alias) => {\n\t\t\tthis._alias[alias] = lang.name;\n\t\t});\n\t\tthis._loadedLanguagesCache = null;\n\t\tif (embeddedLazilyBy.size) for (const e of embeddedLazilyBy) {\n\t\t\tthis._resolvedGrammars.delete(e.name);\n\t\t\tthis._loadedLanguagesCache = null;\n\t\t\tthis._syncRegistry?._injectionGrammars?.delete(e.scopeName);\n\t\t\tthis._syncRegistry?._grammars?.delete(e.scopeName);\n\t\t\tthis.loadLanguage(this._langMap.get(e.name));\n\t\t}\n\t}\n\tdispose() {\n\t\tsuper.dispose();\n\t\tthis._resolvedThemes.clear();\n\t\tthis._resolvedGrammars.clear();\n\t\tthis._langMap.clear();\n\t\tthis._langGraph.clear();\n\t\tthis._loadedThemesCache = null;\n\t}\n\tloadLanguages(langs) {\n\t\tfor (const lang of langs) this.resolveEmbeddedLanguages(lang);\n\t\tconst langsGraphArray = Array.from(this._langGraph.entries());\n\t\tconst missingLangs = langsGraphArray.filter(([_, lang]) => !lang);\n\t\tif (missingLangs.length) {\n\t\t\tconst dependents = langsGraphArray.filter(([_, lang]) => {\n\t\t\t\tif (!lang) return false;\n\t\t\t\treturn (lang.embeddedLanguages || lang.embeddedLangs)?.some((l) => missingLangs.map(([name]) => name).includes(l));\n\t\t\t}).filter((lang) => !missingLangs.includes(lang));\n\t\t\tthrow new ShikiError(`Missing languages ${missingLangs.map(([name]) => `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) => `\\`${name}\\``).join(\", \")}`);\n\t\t}\n\t\tfor (const [_, lang] of langsGraphArray) this._resolver.addLanguage(lang);\n\t\tfor (const [_, lang] of langsGraphArray) this.loadLanguage(lang);\n\t}\n\tgetLoadedLanguages() {\n\t\tif (!this._loadedLanguagesCache) this._loadedLanguagesCache = [...new Set([...this._resolvedGrammars.keys(), ...Object.keys(this._alias)])];\n\t\treturn this._loadedLanguagesCache;\n\t}\n\tresolveEmbeddedLanguages(lang) {\n\t\tthis._langMap.set(lang.name, lang);\n\t\tthis._langGraph.set(lang.name, lang);\n\t\tconst embedded = lang.embeddedLanguages ?? lang.embeddedLangs;\n\t\tif (embedded) for (const embeddedLang of embedded) this._langGraph.set(embeddedLang, this._langMap.get(embeddedLang));\n\t}\n};\n\n//#endregion\n//#region src/textmate/resolver.ts\nvar Resolver = class {\n\t_langs = /* @__PURE__ */ new Map();\n\t_scopeToLang = /* @__PURE__ */ new Map();\n\t_injections = /* @__PURE__ */ new Map();\n\t_onigLib;\n\tconstructor(engine, langs) {\n\t\tthis._onigLib = {\n\t\t\tcreateOnigScanner: (patterns) => engine.createScanner(patterns),\n\t\t\tcreateOnigString: (s) => engine.createString(s)\n\t\t};\n\t\tlangs.forEach((i) => this.addLanguage(i));\n\t}\n\tget onigLib() {\n\t\treturn this._onigLib;\n\t}\n\tgetLangRegistration(langIdOrAlias) {\n\t\treturn this._langs.get(langIdOrAlias);\n\t}\n\tloadGrammar(scopeName) {\n\t\treturn this._scopeToLang.get(scopeName);\n\t}\n\taddLanguage(l) {\n\t\tthis._langs.set(l.name, l);\n\t\tif (l.aliases) l.aliases.forEach((a) => {\n\t\t\tthis._langs.set(a, l);\n\t\t});\n\t\tthis._scopeToLang.set(l.scopeName, l);\n\t\tif (l.injectTo) l.injectTo.forEach((i) => {\n\t\t\tif (!this._injections.get(i)) this._injections.set(i, []);\n\t\t\tthis._injections.get(i).push(l.scopeName);\n\t\t});\n\t}\n\tgetInjections(scopeName) {\n\t\tconst scopeParts = scopeName.split(\".\");\n\t\tlet injections = [];\n\t\tfor (let i = 1; i <= scopeParts.length; i++) {\n\t\t\tconst subScopeName = scopeParts.slice(0, i).join(\".\");\n\t\t\tinjections = [...injections, ...this._injections.get(subScopeName) || []];\n\t\t}\n\t\treturn injections;\n\t}\n};\n\n//#endregion\n//#region src/constructors/primitive.ts\nlet instancesCount = 0;\n/**\n* Get the minimal shiki primitive instance.\n*\n* Requires to provide the engine and all themes and languages upfront.\n*/\nfunction createShikiPrimitive(options) {\n\tinstancesCount += 1;\n\tif (options.warnings !== false && instancesCount >= 10 && instancesCount % 10 === 0) console.warn(`[Shiki] ${instancesCount} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \\`highlighter.dispose()\\` to release unused instances.`);\n\tlet isDisposed = false;\n\tif (!options.engine) throw new ShikiError(\"`engine` option is required for synchronous mode\");\n\tconst langs = (options.langs || []).flat(1);\n\tconst themes = (options.themes || []).flat(1).map(normalizeTheme);\n\tconst _registry = new Registry(new Resolver(options.engine, langs), themes, langs, options.langAlias);\n\tlet _lastTheme;\n\tfunction resolveLangAlias$1(name) {\n\t\treturn resolveLangAlias(name, options.langAlias);\n\t}\n\tfunction getLanguage(name) {\n\t\tensureNotDisposed();\n\t\tconst _lang = _registry.getGrammar(typeof name === \"string\" ? name : name.name);\n\t\tif (!_lang) throw new ShikiError(`Language \\`${name}\\` not found, you may need to load it first`);\n\t\treturn _lang;\n\t}\n\tfunction getTheme(name) {\n\t\tif (name === \"none\") return {\n\t\t\tbg: \"\",\n\t\t\tfg: \"\",\n\t\t\tname: \"none\",\n\t\t\tsettings: [],\n\t\t\ttype: \"dark\"\n\t\t};\n\t\tensureNotDisposed();\n\t\tconst _theme = _registry.getTheme(name);\n\t\tif (!_theme) throw new ShikiError(`Theme \\`${name}\\` not found, you may need to load it first`);\n\t\treturn _theme;\n\t}\n\tfunction setTheme(name) {\n\t\tensureNotDisposed();\n\t\tconst theme = getTheme(name);\n\t\tif (_lastTheme !== name) {\n\t\t\t_registry.setTheme(theme);\n\t\t\t_lastTheme = name;\n\t\t}\n\t\treturn {\n\t\t\ttheme,\n\t\t\tcolorMap: _registry.getColorMap()\n\t\t};\n\t}\n\tfunction getLoadedThemes() {\n\t\tensureNotDisposed();\n\t\treturn _registry.getLoadedThemes();\n\t}\n\tfunction getLoadedLanguages() {\n\t\tensureNotDisposed();\n\t\treturn _registry.getLoadedLanguages();\n\t}\n\tfunction loadLanguageSync(...langs) {\n\t\tensureNotDisposed();\n\t\t_registry.loadLanguages(langs.flat(1));\n\t}\n\tasync function loadLanguage(...langs) {\n\t\treturn loadLanguageSync(await resolveLangs(langs));\n\t}\n\tfunction loadThemeSync(...themes) {\n\t\tensureNotDisposed();\n\t\tfor (const theme of themes.flat(1)) _registry.loadTheme(theme);\n\t}\n\tasync function loadTheme(...themes) {\n\t\tensureNotDisposed();\n\t\treturn loadThemeSync(await resolveThemes(themes));\n\t}\n\tfunction ensureNotDisposed() {\n\t\tif (isDisposed) throw new ShikiError(\"Shiki instance has been disposed\");\n\t}\n\tfunction dispose() {\n\t\tif (isDisposed) return;\n\t\tisDisposed = true;\n\t\t_registry.dispose();\n\t\tinstancesCount -= 1;\n\t}\n\treturn {\n\t\tsetTheme,\n\t\tgetTheme,\n\t\tgetLanguage,\n\t\tgetLoadedThemes,\n\t\tgetLoadedLanguages,\n\t\tresolveLangAlias: resolveLangAlias$1,\n\t\tloadLanguage,\n\t\tloadLanguageSync,\n\t\tloadTheme,\n\t\tloadThemeSync,\n\t\tdispose,\n\t\t[Symbol.dispose]: dispose\n\t};\n}\n/**\n* @deprecated Use `createShikiPrimitive` instead.\n*/\nconst createShikiInternalSync = createShikiPrimitive;\n\n//#endregion\n//#region src/constructors/async.ts\n/**\n* Get the minimal shiki primitive instance.\n*/\nasync function createShikiPrimitiveAsync(options) {\n\tif (!options.engine) console.warn(\"`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.\");\n\tconst [themes, langs, engine] = await Promise.all([\n\t\tresolveThemes(options.themes || []),\n\t\tresolveLangs(options.langs || []),\n\t\toptions.engine\n\t]);\n\treturn createShikiPrimitive({\n\t\t...options,\n\t\tthemes,\n\t\tlangs,\n\t\tengine\n\t});\n}\n/**\n* @deprecated Use `createShikiPrimitiveAsync` instead.\n*/\nconst createShikiInternal = createShikiPrimitiveAsync;\n\n//#endregion\n//#region src/textmate/grammar-state.ts\nconst _grammarStateMap = /* @__PURE__ */ new WeakMap();\nfunction setLastGrammarStateToMap(keys, state) {\n\t_grammarStateMap.set(keys, state);\n}\nfunction getLastGrammarStateFromMap(keys) {\n\treturn _grammarStateMap.get(keys);\n}\n/**\n* GrammarState is a special reference object that holds the state of a grammar.\n*\n* It's used to highlight code snippets that are part of the target language.\n*/\nvar GrammarState = class GrammarState {\n\t/**\n\t* Theme to Stack mapping\n\t*/\n\t_stacks = {};\n\tlang;\n\tget themes() {\n\t\treturn Object.keys(this._stacks);\n\t}\n\tget theme() {\n\t\treturn this.themes[0];\n\t}\n\tget _stack() {\n\t\treturn this._stacks[this.theme];\n\t}\n\t/**\n\t* Static method to create a initial grammar state.\n\t*/\n\tstatic initial(lang, themes) {\n\t\treturn new GrammarState(Object.fromEntries(toArray(themes).map((theme) => [theme, INITIAL])), lang);\n\t}\n\tconstructor(...args) {\n\t\tif (args.length === 2) {\n\t\t\tconst [stacksMap, lang] = args;\n\t\t\tthis.lang = lang;\n\t\t\tthis._stacks = stacksMap;\n\t\t} else {\n\t\t\tconst [stack, lang, theme] = args;\n\t\t\tthis.lang = lang;\n\t\t\tthis._stacks = { [theme]: stack };\n\t\t}\n\t}\n\t/**\n\t* Get the internal stack object.\n\t* @internal\n\t*/\n\tgetInternalStack(theme = this.theme) {\n\t\treturn this._stacks[theme];\n\t}\n\tgetScopes(theme = this.theme) {\n\t\treturn getScopes(this._stacks[theme]);\n\t}\n\ttoJSON() {\n\t\treturn {\n\t\t\tlang: this.lang,\n\t\t\ttheme: this.theme,\n\t\t\tthemes: this.themes,\n\t\t\tscopes: this.getScopes()\n\t\t};\n\t}\n};\nfunction getScopes(stack) {\n\tconst scopes = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tfunction pushScope(stack) {\n\t\tif (visited.has(stack)) return;\n\t\tvisited.add(stack);\n\t\tconst name = stack?.nameScopesList?.scopeName;\n\t\tif (name) scopes.push(name);\n\t\tif (stack.parent) pushScope(stack.parent);\n\t}\n\tpushScope(stack);\n\treturn scopes;\n}\nfunction getGrammarStack(state, theme) {\n\tif (!(state instanceof GrammarState)) throw new ShikiError(\"Invalid grammar state\");\n\treturn state.getInternalStack(theme);\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-base.ts\n/**\n* Code to tokens, with a simple theme.\n*/\nfunction codeToTokensBase(primitive, code, options = {}) {\n\tconst { theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (isPlainLang(primitive.resolveLangAlias(options.lang || \"text\")) || isNoneTheme(themeName)) return splitLines(code).map((line) => [{\n\t\tcontent: line[0],\n\t\toffset: line[1]\n\t}]);\n\tconst { theme, colorMap } = primitive.setTheme(themeName);\n\tconst _grammar = primitive.getLanguage(options.lang || \"text\");\n\tif (options.grammarState) {\n\t\tif (options.grammarState.lang !== _grammar.name) throw new ShikiError(`Grammar state language \"${options.grammarState.lang}\" does not match highlight language \"${_grammar.name}\"`);\n\t\tif (!options.grammarState.themes.includes(theme.name)) throw new ShikiError(`Grammar state themes \"${options.grammarState.themes}\" do not contain highlight theme \"${theme.name}\"`);\n\t}\n\treturn tokenizeWithTheme(code, _grammar, theme, colorMap, options);\n}\nfunction getLastGrammarState(...args) {\n\tif (args.length === 2) return getLastGrammarStateFromMap(args[1]);\n\tconst [primitive, code, options = {}] = args;\n\tconst { lang = \"text\", theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (isPlainLang(lang) || isNoneTheme(themeName)) throw new ShikiError(\"Plain language does not have grammar state\");\n\tif (lang === \"ansi\") throw new ShikiError(\"ANSI language does not have grammar state\");\n\tconst { theme, colorMap } = primitive.setTheme(themeName);\n\tconst _grammar = primitive.getLanguage(lang);\n\treturn new GrammarState(_tokenizeWithTheme(code, _grammar, theme, colorMap, options).stateStack, _grammar.name, theme.name);\n}\nfunction tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n\tconst result = _tokenizeWithTheme(code, grammar, theme, colorMap, options);\n\tconst grammarState = new GrammarState(result.stateStack, grammar.name, theme.name);\n\tsetLastGrammarStateToMap(result.tokens, grammarState);\n\treturn result.tokens;\n}\nfunction _tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n\tconst colorReplacements = resolveColorReplacements(theme, options);\n\tconst { tokenizeMaxLineLength = 0, tokenizeTimeLimit = 500 } = options;\n\tconst lines = splitLines(code);\n\tlet stateStack = options.grammarState ? getGrammarStack(options.grammarState, theme.name) ?? INITIAL : options.grammarContextCode != null ? _tokenizeWithTheme(options.grammarContextCode, grammar, theme, colorMap, {\n\t\t...options,\n\t\tgrammarState: void 0,\n\t\tgrammarContextCode: void 0\n\t}).stateStack : INITIAL;\n\tlet actual = [];\n\tconst final = [];\n\tfor (let i = 0, len = lines.length; i < len; i++) {\n\t\tconst [line, lineOffset] = lines[i];\n\t\tif (line === \"\") {\n\t\t\tactual = [];\n\t\t\tfinal.push([]);\n\t\t\tcontinue;\n\t\t}\n\t\tif (tokenizeMaxLineLength > 0 && line.length >= tokenizeMaxLineLength) {\n\t\t\tactual = [];\n\t\t\tfinal.push([{\n\t\t\t\tcontent: line,\n\t\t\t\toffset: lineOffset,\n\t\t\t\tcolor: \"\",\n\t\t\t\tfontStyle: 0\n\t\t\t}]);\n\t\t\tcontinue;\n\t\t}\n\t\tlet resultWithScopes;\n\t\tlet tokensWithScopes;\n\t\tlet tokensWithScopesIndex;\n\t\tif (options.includeExplanation) {\n\t\t\tresultWithScopes = grammar.tokenizeLine(line, stateStack, tokenizeTimeLimit);\n\t\t\ttokensWithScopes = resultWithScopes.tokens;\n\t\t\ttokensWithScopesIndex = 0;\n\t\t}\n\t\tconst result = grammar.tokenizeLine2(line, stateStack, tokenizeTimeLimit);\n\t\tconst tokensLength = result.tokens.length / 2;\n\t\tfor (let j = 0; j < tokensLength; j++) {\n\t\t\tconst startIndex = result.tokens[2 * j];\n\t\t\tconst nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n\t\t\tif (startIndex === nextStartIndex) continue;\n\t\t\tconst metadata = result.tokens[2 * j + 1];\n\t\t\tconst color = applyColorReplacements(colorMap[EncodedTokenMetadata.getForeground(metadata)], colorReplacements);\n\t\t\tconst fontStyle = EncodedTokenMetadata.getFontStyle(metadata);\n\t\t\tconst token = {\n\t\t\t\tcontent: line.substring(startIndex, nextStartIndex),\n\t\t\t\toffset: lineOffset + startIndex,\n\t\t\t\tcolor,\n\t\t\t\tfontStyle\n\t\t\t};\n\t\t\tif (options.includeExplanation) {\n\t\t\t\tconst themeSettingsSelectors = [];\n\t\t\t\tif (options.includeExplanation !== \"scopeName\") for (const setting of theme.settings) {\n\t\t\t\t\tlet selectors;\n\t\t\t\t\tswitch (typeof setting.scope) {\n\t\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\t\tselectors = setting.scope.split(/,/).map((scope) => scope.trim());\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tselectors = setting.scope;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: continue;\n\t\t\t\t\t}\n\t\t\t\t\tthemeSettingsSelectors.push({\n\t\t\t\t\t\tsettings: setting,\n\t\t\t\t\t\tselectors: selectors.map((selector) => selector.split(/ /))\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttoken.explanation = [];\n\t\t\t\tlet offset = 0;\n\t\t\t\twhile (startIndex + offset < nextStartIndex) {\n\t\t\t\t\tconst tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n\t\t\t\t\tconst tokenWithScopesText = line.substring(tokenWithScopes.startIndex, tokenWithScopes.endIndex);\n\t\t\t\t\toffset += tokenWithScopesText.length;\n\t\t\t\t\ttoken.explanation.push({\n\t\t\t\t\t\tcontent: tokenWithScopesText,\n\t\t\t\t\t\tscopes: options.includeExplanation === \"scopeName\" ? explainThemeScopesNameOnly(tokenWithScopes.scopes) : explainThemeScopesFull(themeSettingsSelectors, tokenWithScopes.scopes)\n\t\t\t\t\t});\n\t\t\t\t\ttokensWithScopesIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tactual.push(token);\n\t\t}\n\t\tfinal.push(actual);\n\t\tactual = [];\n\t\tstateStack = result.ruleStack;\n\t}\n\treturn {\n\t\ttokens: final,\n\t\tstateStack\n\t};\n}\nfunction explainThemeScopesNameOnly(scopes) {\n\treturn scopes.map((scope) => ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n\tconst result = [];\n\tfor (let i = 0, len = scopes.length; i < len; i++) {\n\t\tconst scope = scopes[i];\n\t\tresult[i] = {\n\t\t\tscopeName: scope,\n\t\t\tthemeMatches: explainThemeScope(themeSelectors, scope, scopes.slice(0, i))\n\t\t};\n\t}\n\treturn result;\n}\nfunction matchesOne(selector, scope) {\n\treturn selector === scope || scope.substring(0, selector.length) === selector && scope[selector.length] === \".\";\n}\nfunction matches(selectors, scope, parentScopes) {\n\tif (!matchesOne(selectors[selectors.length - 1], scope)) return false;\n\tlet selectorParentIndex = selectors.length - 2;\n\tlet parentIndex = parentScopes.length - 1;\n\twhile (selectorParentIndex >= 0 && parentIndex >= 0) {\n\t\tif (matchesOne(selectors[selectorParentIndex], parentScopes[parentIndex])) selectorParentIndex -= 1;\n\t\tparentIndex -= 1;\n\t}\n\tif (selectorParentIndex === -1) return true;\n\treturn false;\n}\nfunction explainThemeScope(themeSettingsSelectors, scope, parentScopes) {\n\tconst result = [];\n\tfor (const { selectors, settings } of themeSettingsSelectors) for (const selectorPieces of selectors) if (matches(selectorPieces, scope, parentScopes)) {\n\t\tresult.push(settings);\n\t\tbreak;\n\t}\n\treturn result;\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-themes.ts\n/**\n* Get tokens with multiple themes\n*/\nfunction codeToTokensWithThemes(primitive, code, options, codeToTokensBaseFn = codeToTokensBase) {\n\tconst themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({\n\t\tcolor: i[0],\n\t\ttheme: i[1]\n\t}));\n\tconst themedTokens = themes.map((t) => {\n\t\tconst tokens = codeToTokensBaseFn(primitive, code, {\n\t\t\t...options,\n\t\t\ttheme: t.theme\n\t\t});\n\t\treturn {\n\t\t\ttokens,\n\t\t\tstate: getLastGrammarStateFromMap(tokens),\n\t\t\ttheme: typeof t.theme === \"string\" ? t.theme : t.theme.name\n\t\t};\n\t});\n\tconst tokens = alignThemesTokenization(...themedTokens.map((i) => i.tokens));\n\tconst mergedTokens = tokens[0].map((line, lineIdx) => line.map((_token, tokenIdx) => {\n\t\tconst mergedToken = {\n\t\t\tcontent: _token.content,\n\t\t\tvariants: {},\n\t\t\toffset: _token.offset\n\t\t};\n\t\tif (\"includeExplanation\" in options && options.includeExplanation) mergedToken.explanation = _token.explanation;\n\t\ttokens.forEach((t, themeIdx) => {\n\t\t\tconst { content: _, explanation: __, offset: ___, ...styles } = t[lineIdx][tokenIdx];\n\t\t\tmergedToken.variants[themes[themeIdx].color] = styles;\n\t\t});\n\t\treturn mergedToken;\n\t}));\n\tconst mergedGrammarState = themedTokens[0].state ? new GrammarState(Object.fromEntries(themedTokens.map((s) => [s.theme, s.state?.getInternalStack(s.theme)])), themedTokens[0].state.lang) : void 0;\n\tif (mergedGrammarState) setLastGrammarStateToMap(mergedTokens, mergedGrammarState);\n\treturn mergedTokens;\n}\n/**\n* Break tokens from multiple themes into same tokenization.\n*\n* For example, given two themes that tokenize `console.log(\"hello\")` as:\n*\n* - `console . log (\" hello \")` (6 tokens)\n* - `console .log ( \"hello\" )` (5 tokens)\n*\n* This function will return:\n*\n* - `console . log ( \" hello \" )` (8 tokens)\n* - `console . log ( \" hello \" )` (8 tokens)\n*/\nfunction alignThemesTokenization(...themes) {\n\tconst outThemes = themes.map(() => []);\n\tconst count = themes.length;\n\tfor (let i = 0; i < themes[0].length; i++) {\n\t\tconst lines = themes.map((t) => t[i]);\n\t\tconst outLines = outThemes.map(() => []);\n\t\toutThemes.forEach((t, i) => t.push(outLines[i]));\n\t\tconst indexes = lines.map(() => 0);\n\t\tconst current = lines.map((l) => l[0]);\n\t\twhile (current.every((t) => t)) {\n\t\t\tconst minLength = Math.min(...current.map((t) => t.content.length));\n\t\t\tfor (let n = 0; n < count; n++) {\n\t\t\t\tconst token = current[n];\n\t\t\t\tif (token.content.length === minLength) {\n\t\t\t\t\toutLines[n].push(token);\n\t\t\t\t\tindexes[n] += 1;\n\t\t\t\t\tcurrent[n] = lines[n][indexes[n]];\n\t\t\t\t} else {\n\t\t\t\t\toutLines[n].push({\n\t\t\t\t\t\t...token,\n\t\t\t\t\t\tcontent: token.content.slice(0, minLength)\n\t\t\t\t\t});\n\t\t\t\t\tcurrent[n] = {\n\t\t\t\t\t\t...token,\n\t\t\t\t\t\tcontent: token.content.slice(minLength),\n\t\t\t\t\t\toffset: token.offset + minLength\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn outThemes;\n}\n\n//#endregion\nexport { GrammarState, Registry, Resolver, alignThemesTokenization, applyColorReplacements, codeToTokensBase, codeToTokensWithThemes, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitiveAsync, getGrammarStack, getLastGrammarState, getLastGrammarStateFromMap, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, normalizeGetter, normalizeTheme, resolveColorReplacements, resolveLangAlias, resolveLangs, resolveThemes, setLastGrammarStateToMap, splitLines, toArray, tokenizeWithTheme };", "/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n 'area',\n 'base',\n 'basefont',\n 'bgsound',\n 'br',\n 'col',\n 'command',\n 'embed',\n 'frame',\n 'hr',\n 'image',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr'\n]\n", "/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n", "/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n", "/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n", "/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n", "let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n", "/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n", "/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n", "import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n", "/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n", "import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n", "import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n", "import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n", "import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n", "import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n", "import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n", "/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n", "// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n", "/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n * Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n * Whether to only escape possibly dangerous characters.\n * Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n * Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n value = value.replace(\n options.subset\n ? charactersToExpressionCached(options.subset)\n : defaultSubsetRegex,\n basic\n )\n\n if (options.subset || options.escapeOnly) {\n return value\n }\n\n return (\n value\n // Surrogate pairs.\n .replace(surrogatePairsRegex, surrogate)\n // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n // non-ASCII ones).\n .replace(controlCharactersRegex, basic)\n )\n\n /**\n * @param {string} pair\n * @param {number} index\n * @param {string} all\n */\n function surrogate(pair, index, all) {\n return options.format(\n (pair.charCodeAt(0) - 0xd800) * 0x400 +\n pair.charCodeAt(1) -\n 0xdc00 +\n 0x10000,\n all.charCodeAt(index + 2),\n options\n )\n }\n\n /**\n * @param {string} character\n * @param {number} index\n * @param {string} all\n */\n function basic(character, index, all) {\n return options.format(\n character.charCodeAt(0),\n all.charCodeAt(index + 1),\n options\n )\n }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n let cached = subsetToRegexCache.get(subset)\n\n if (!cached) {\n cached = charactersToExpression(subset)\n subsetToRegexCache.set(subset, cached)\n }\n\n return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n /** @type {Array<string>} */\n const groups = []\n let index = -1\n\n while (++index < subset.length) {\n groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n }\n\n return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n", "const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n const value = '&#x' + code.toString(16).toUpperCase()\n return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n", "const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n const value = '&#' + String(code)\n return omit && next && !decimalRegex.test(String.fromCharCode(next))\n ? value\n : value + ';'\n}\n", "/**\n * List of legacy HTML named character references that don\u2019t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n 'AElig',\n 'AMP',\n 'Aacute',\n 'Acirc',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Auml',\n 'COPY',\n 'Ccedil',\n 'ETH',\n 'Eacute',\n 'Ecirc',\n 'Egrave',\n 'Euml',\n 'GT',\n 'Iacute',\n 'Icirc',\n 'Igrave',\n 'Iuml',\n 'LT',\n 'Ntilde',\n 'Oacute',\n 'Ocirc',\n 'Ograve',\n 'Oslash',\n 'Otilde',\n 'Ouml',\n 'QUOT',\n 'REG',\n 'THORN',\n 'Uacute',\n 'Ucirc',\n 'Ugrave',\n 'Uuml',\n 'Yacute',\n 'aacute',\n 'acirc',\n 'acute',\n 'aelig',\n 'agrave',\n 'amp',\n 'aring',\n 'atilde',\n 'auml',\n 'brvbar',\n 'ccedil',\n 'cedil',\n 'cent',\n 'copy',\n 'curren',\n 'deg',\n 'divide',\n 'eacute',\n 'ecirc',\n 'egrave',\n 'eth',\n 'euml',\n 'frac12',\n 'frac14',\n 'frac34',\n 'gt',\n 'iacute',\n 'icirc',\n 'iexcl',\n 'igrave',\n 'iquest',\n 'iuml',\n 'laquo',\n 'lt',\n 'macr',\n 'micro',\n 'middot',\n 'nbsp',\n 'not',\n 'ntilde',\n 'oacute',\n 'ocirc',\n 'ograve',\n 'ordf',\n 'ordm',\n 'oslash',\n 'otilde',\n 'ouml',\n 'para',\n 'plusmn',\n 'pound',\n 'quot',\n 'raquo',\n 'reg',\n 'sect',\n 'shy',\n 'sup1',\n 'sup2',\n 'sup3',\n 'szlig',\n 'thorn',\n 'times',\n 'uacute',\n 'ucirc',\n 'ugrave',\n 'uml',\n 'uuml',\n 'yacute',\n 'yen',\n 'yuml'\n]\n", "/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n nbsp: '\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n Agrave: '\u00C0',\n Aacute: '\u00C1',\n Acirc: '\u00C2',\n Atilde: '\u00C3',\n Auml: '\u00C4',\n Aring: '\u00C5',\n AElig: '\u00C6',\n Ccedil: '\u00C7',\n Egrave: '\u00C8',\n Eacute: '\u00C9',\n Ecirc: '\u00CA',\n Euml: '\u00CB',\n Igrave: '\u00CC',\n Iacute: '\u00CD',\n Icirc: '\u00CE',\n Iuml: '\u00CF',\n ETH: '\u00D0',\n Ntilde: '\u00D1',\n Ograve: '\u00D2',\n Oacute: '\u00D3',\n Ocirc: '\u00D4',\n Otilde: '\u00D5',\n Ouml: '\u00D6',\n times: '\u00D7',\n Oslash: '\u00D8',\n Ugrave: '\u00D9',\n Uacute: '\u00DA',\n Ucirc: '\u00DB',\n Uuml: '\u00DC',\n Yacute: '\u00DD',\n THORN: '\u00DE',\n szlig: '\u00DF',\n agrave: '\u00E0',\n aacute: '\u00E1',\n acirc: '\u00E2',\n atilde: '\u00E3',\n auml: '\u00E4',\n aring: '\u00E5',\n aelig: '\u00E6',\n ccedil: '\u00E7',\n egrave: '\u00E8',\n eacute: '\u00E9',\n ecirc: '\u00EA',\n euml: '\u00EB',\n igrave: '\u00EC',\n iacute: '\u00ED',\n icirc: '\u00EE',\n iuml: '\u00EF',\n eth: '\u00F0',\n ntilde: '\u00F1',\n ograve: '\u00F2',\n oacute: '\u00F3',\n ocirc: '\u00F4',\n otilde: '\u00F5',\n ouml: '\u00F6',\n divide: '\u00F7',\n oslash: '\u00F8',\n ugrave: '\u00F9',\n uacute: '\u00FA',\n ucirc: '\u00FB',\n uuml: '\u00FC',\n yacute: '\u00FD',\n thorn: '\u00FE',\n yuml: '\u00FF',\n fnof: '\u0192',\n Alpha: '\u0391',\n Beta: '\u0392',\n Gamma: '\u0393',\n Delta: '\u0394',\n Epsilon: '\u0395',\n Zeta: '\u0396',\n Eta: '\u0397',\n Theta: '\u0398',\n Iota: '\u0399',\n Kappa: '\u039A',\n Lambda: '\u039B',\n Mu: '\u039C',\n Nu: '\u039D',\n Xi: '\u039E',\n Omicron: '\u039F',\n Pi: '\u03A0',\n Rho: '\u03A1',\n Sigma: '\u03A3',\n Tau: '\u03A4',\n Upsilon: '\u03A5',\n Phi: '\u03A6',\n Chi: '\u03A7',\n Psi: '\u03A8',\n Omega: '\u03A9',\n alpha: '\u03B1',\n beta: '\u03B2',\n gamma: '\u03B3',\n delta: '\u03B4',\n epsilon: '\u03B5',\n zeta: '\u03B6',\n eta: '\u03B7',\n theta: '\u03B8',\n iota: '\u03B9',\n kappa: '\u03BA',\n lambda: '\u03BB',\n mu: '\u03BC',\n nu: '\u03BD',\n xi: '\u03BE',\n omicron: '\u03BF',\n pi: '\u03C0',\n rho: '\u03C1',\n sigmaf: '\u03C2',\n sigma: '\u03C3',\n tau: '\u03C4',\n upsilon: '\u03C5',\n phi: '\u03C6',\n chi: '\u03C7',\n psi: '\u03C8',\n omega: '\u03C9',\n thetasym: '\u03D1',\n upsih: '\u03D2',\n piv: '\u03D6',\n bull: '\u2022',\n hellip: '\u2026',\n prime: '\u2032',\n Prime: '\u2033',\n oline: '\u203E',\n frasl: '\u2044',\n weierp: '\u2118',\n image: '\u2111',\n real: '\u211C',\n trade: '\u2122',\n alefsym: '\u2135',\n larr: '\u2190',\n uarr: '\u2191',\n rarr: '\u2192',\n darr: '\u2193',\n harr: '\u2194',\n crarr: '\u21B5',\n lArr: '\u21D0',\n uArr: '\u21D1',\n rArr: '\u21D2',\n dArr: '\u21D3',\n hArr: '\u21D4',\n forall: '\u2200',\n part: '\u2202',\n exist: '\u2203',\n empty: '\u2205',\n nabla: '\u2207',\n isin: '\u2208',\n notin: '\u2209',\n ni: '\u220B',\n prod: '\u220F',\n sum: '\u2211',\n minus: '\u2212',\n lowast: '\u2217',\n radic: '\u221A',\n prop: '\u221D',\n infin: '\u221E',\n ang: '\u2220',\n and: '\u2227',\n or: '\u2228',\n cap: '\u2229',\n cup: '\u222A',\n int: '\u222B',\n there4: '\u2234',\n sim: '\u223C',\n cong: '\u2245',\n asymp: '\u2248',\n ne: '\u2260',\n equiv: '\u2261',\n le: '\u2264',\n ge: '\u2265',\n sub: '\u2282',\n sup: '\u2283',\n nsub: '\u2284',\n sube: '\u2286',\n supe: '\u2287',\n oplus: '\u2295',\n otimes: '\u2297',\n perp: '\u22A5',\n sdot: '\u22C5',\n lceil: '\u2308',\n rceil: '\u2309',\n lfloor: '\u230A',\n rfloor: '\u230B',\n lang: '\u2329',\n rang: '\u232A',\n loz: '\u25CA',\n spades: '\u2660',\n clubs: '\u2663',\n hearts: '\u2665',\n diams: '\u2666',\n quot: '\"',\n amp: '&',\n lt: '<',\n gt: '>',\n OElig: '\u0152',\n oelig: '\u0153',\n Scaron: '\u0160',\n scaron: '\u0161',\n Yuml: '\u0178',\n circ: '\u02C6',\n tilde: '\u02DC',\n ensp: '\u2002',\n emsp: '\u2003',\n thinsp: '\u2009',\n zwnj: '\u200C',\n zwj: '\u200D',\n lrm: '\u200E',\n rlm: '\u200F',\n ndash: '\u2013',\n mdash: '\u2014',\n lsquo: '\u2018',\n rsquo: '\u2019',\n sbquo: '\u201A',\n ldquo: '\u201C',\n rdquo: '\u201D',\n bdquo: '\u201E',\n dagger: '\u2020',\n Dagger: '\u2021',\n permil: '\u2030',\n lsaquo: '\u2039',\n rsaquo: '\u203A',\n euro: '\u20AC'\n}\n", "/**\n * List of legacy (that don\u2019t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n 'cent',\n 'copy',\n 'divide',\n 'gt',\n 'lt',\n 'not',\n 'para',\n 'times'\n]\n", "import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n if (own.call(characterEntitiesHtml4, key)) {\n characters[characterEntitiesHtml4[key]] = key\n }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n const character = String.fromCharCode(code)\n\n if (own.call(characters, character)) {\n const name = characters[character]\n const value = '&' + name\n\n if (\n omit &&\n characterEntitiesLegacy.includes(name) &&\n !dangerous.includes(name) &&\n (!attribute ||\n (next &&\n next !== 61 /* `=` */ &&\n notAlphanumericRegex.test(String.fromCharCode(next))))\n ) {\n return value\n }\n\n return value + ';'\n }\n\n return ''\n}\n", "/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n * Prefer named character references (`&`) where possible.\n * @property {boolean} [useShortestReferences=false]\n * Prefer the shortest possible reference, if that results in less bytes.\n * **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n * Whether to omit semicolons when possible.\n * **Note**: This creates what HTML calls \u201Cparse errors\u201D but is otherwise still valid HTML \u2014 don\u2019t use this except when building a minifier.\n * Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n * Create character references which don\u2019t fail in attributes.\n * **Note**: `attribute` only applies when operating dangerously with\n * `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n /** @type {string|undefined} */\n let named\n\n if (options.useNamedReferences || options.useShortestReferences) {\n named = toNamed(\n code,\n next,\n options.omitOptionalSemicolons,\n options.attribute\n )\n }\n\n // Use the shortest numeric reference when requested.\n // A simple algorithm would use decimal for all code points under 100, as\n // those are shorter than hexadecimal:\n //\n // * `c` vs `c` (decimal shorter)\n // * `d` vs `d` (equal)\n //\n // However, because we take `next` into consideration when `omit` is used,\n // And it would be possible that decimals are shorter on bigger values as\n // well if `next` is hexadecimal but not decimal, we instead compare both.\n if (\n (options.useShortestReferences || !named) &&\n options.useShortestReferences\n ) {\n const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n if (decimal.length < numeric.length) {\n numeric = decimal\n }\n }\n\n return named &&\n (!options.useShortestReferences || named.length < numeric.length)\n ? named\n : numeric\n}\n", "/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n * Value to encode.\n * @param {Options} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntities(value, options) {\n return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n * Value to encode.\n * @param {LightOptions} [options]\n * Configuration.\n * @returns {string}\n * Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n return core(value, Object.assign({format: formatBasic}, options))\n}\n", "/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n return state.settings.bogusComments\n ? '<?' +\n stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: bogusCommentEntitySubset\n })\n ) +\n '>'\n : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n /**\n * @param {string} $0\n */\n function encode($0) {\n return stringifyEntities(\n $0,\n Object.assign({}, state.settings.characterReferences, {\n subset: commentEntitySubset\n })\n )\n }\n}\n", "/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n * Node to handle.\n * @param {number | undefined} _2\n * Index of `node` in `parent.\n * @param {Parents | undefined} _3\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n return (\n '<!' +\n (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n (state.settings.tightDoctype ? '' : ' ') +\n 'html>'\n )\n}\n", "/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n", "/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n", "/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n", "/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n return sibling\n\n /**\n * Find applicable siblings in a direction.\n *\n * @template {Parents} Parent\n * Parent type.\n * @param {Parent | undefined} parent\n * Parent.\n * @param {number | undefined} index\n * Index of child in `parent`.\n * @param {boolean | undefined} [includeWhitespace=false]\n * Whether to include whitespace (default: `false`).\n * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n * Child of parent.\n */\n function sibling(parent, index, includeWhitespace) {\n const siblings = parent ? parent.children : emptyChildren\n let offset = (index || 0) + increment\n let next = siblings[offset]\n\n if (!includeWhitespace) {\n while (next && whitespace(next)) {\n offset += increment\n next = siblings[offset]\n }\n }\n\n // @ts-expect-error: it\u2019s a correct child.\n return next\n }\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n * Check if a tag can be omitted.\n * @param {Element} element\n * Element to check.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n * Omission handlers, where each key is a tag name, and each value is the\n * corresponding handler.\n * @returns {OmitHandle}\n * Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n return omit\n\n /**\n * Check if a given node can have a tag omitted.\n *\n * @type {OmitHandle}\n */\n function omit(node, index, parent) {\n return (\n own.call(handlers, node.tagName) &&\n handlers[node.tagName](node, index, parent)\n )\n }\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n body,\n caption: headOrColgroupOrCaption,\n colgroup: headOrColgroupOrCaption,\n dd,\n dt,\n head: headOrColgroupOrCaption,\n html,\n li,\n optgroup,\n option,\n p,\n rp: rubyElement,\n rt: rubyElement,\n tbody,\n td: cells,\n tfoot,\n th: cells,\n thead,\n tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n const next = siblingAfter(parent, index, true)\n return (\n !next ||\n (next.type !== 'comment' &&\n !(next.type === 'text' && whitespace(next.value.charAt(0))))\n )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n const next = siblingAfter(parent, index)\n return next\n ? next.type === 'element' &&\n (next.tagName === 'address' ||\n next.tagName === 'article' ||\n next.tagName === 'aside' ||\n next.tagName === 'blockquote' ||\n next.tagName === 'details' ||\n next.tagName === 'div' ||\n next.tagName === 'dl' ||\n next.tagName === 'fieldset' ||\n next.tagName === 'figcaption' ||\n next.tagName === 'figure' ||\n next.tagName === 'footer' ||\n next.tagName === 'form' ||\n next.tagName === 'h1' ||\n next.tagName === 'h2' ||\n next.tagName === 'h3' ||\n next.tagName === 'h4' ||\n next.tagName === 'h5' ||\n next.tagName === 'h6' ||\n next.tagName === 'header' ||\n next.tagName === 'hgroup' ||\n next.tagName === 'hr' ||\n next.tagName === 'main' ||\n next.tagName === 'menu' ||\n next.tagName === 'nav' ||\n next.tagName === 'ol' ||\n next.tagName === 'p' ||\n next.tagName === 'pre' ||\n next.tagName === 'section' ||\n next.tagName === 'table' ||\n next.tagName === 'ul')\n : !parent ||\n // Confusing parent.\n !(\n parent.type === 'element' &&\n (parent.tagName === 'a' ||\n parent.tagName === 'audio' ||\n parent.tagName === 'del' ||\n parent.tagName === 'ins' ||\n parent.tagName === 'map' ||\n parent.tagName === 'noscript' ||\n parent.tagName === 'video')\n )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd')\n )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'dt' || next.tagName === 'dd'))\n )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'rp' || next.tagName === 'rt'))\n )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'option' || next.tagName === 'optgroup'))\n )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n const next = siblingAfter(parent, index)\n return Boolean(\n next &&\n next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot')\n )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n const next = siblingAfter(parent, index)\n return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n const next = siblingAfter(parent, index)\n return (\n !next ||\n (next.type === 'element' &&\n (next.tagName === 'td' || next.tagName === 'th'))\n )\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n body,\n colgroup,\n head,\n html,\n tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction html(node) {\n const head = siblingAfter(node, -1)\n return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction head(node) {\n /** @type {Set<string>} */\n const seen = new Set()\n\n // Whether `srcdoc` or not,\n // make sure the content model at least doesn\u2019t have too many `base`s/`title`s.\n for (const child of node.children) {\n if (\n child.type === 'element' &&\n (child.tagName === 'base' || child.tagName === 'title')\n ) {\n if (seen.has(child.tagName)) return false\n seen.add(child.tagName)\n }\n }\n\n // \u201CMay be omitted if the element is empty,\n // or if the first thing inside the head element is an element.\u201D\n const child = node.children[0]\n return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n * Element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction body(node) {\n const head = siblingAfter(node, -1, true)\n\n return (\n !head ||\n (head.type !== 'comment' &&\n !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n !(\n head.type === 'element' &&\n (head.tagName === 'meta' ||\n head.tagName === 'link' ||\n head.tagName === 'script' ||\n head.tagName === 'style' ||\n head.tagName === 'template')\n ))\n )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it\u2019s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1, true)\n\n // Previous colgroup was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n previous.tagName === 'colgroup' &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n * Element.\n * @param {number | undefined} index\n * Index of element in parent.\n * @param {Parents | undefined} parent\n * Parent of element.\n * @returns {boolean}\n * Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n const previous = siblingBefore(parent, index)\n const head = siblingAfter(node, -1)\n\n // Previous table section was already omitted.\n if (\n parent &&\n previous &&\n previous.type === 'element' &&\n (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n closing(previous, parent.children.indexOf(previous), parent)\n ) {\n return false\n }\n\n return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n", "/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n name: [\n ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n unquoted: [\n ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n single: [\n [\"&'\".split(''), '\"&\\'`'.split('')],\n [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n ],\n // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n double: [\n ['\"&'.split(''), '\"&\\'`'.split('')],\n ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function element(node, index, parent, state) {\n const schema = state.schema\n const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n let selfClosing =\n schema.space === 'svg'\n ? state.settings.closeEmptyElements\n : state.settings.voids.includes(node.tagName.toLowerCase())\n /** @type {Array<string>} */\n const parts = []\n /** @type {string} */\n let last\n\n if (schema.space === 'html' && node.tagName === 'svg') {\n state.schema = svg\n }\n\n const attributes = serializeAttributes(state, node.properties)\n\n const content = state.all(\n schema.space === 'html' && node.tagName === 'template' ? node.content : node\n )\n\n state.schema = schema\n\n // If the node is categorised as void, but it has children, remove the\n // categorisation.\n // This enables for example `menuitem`s, which are void in W3C HTML but not\n // void in WHATWG HTML, to be stringified properly.\n // Note: `menuitem` has since been removed from the HTML spec, and so is no\n // longer void.\n if (content) selfClosing = false\n\n if (attributes || !omit || !opening(node, index, parent)) {\n parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n if (\n selfClosing &&\n (schema.space === 'svg' || state.settings.closeSelfClosing)\n ) {\n last = attributes.charAt(attributes.length - 1)\n if (\n !state.settings.tightSelfClosing ||\n last === '/' ||\n (last && last !== '\"' && last !== \"'\")\n ) {\n parts.push(' ')\n }\n\n parts.push('/')\n }\n\n parts.push('>')\n }\n\n parts.push(content)\n\n if (!selfClosing && (!omit || !closing(node, index, parent))) {\n parts.push('</' + node.tagName + '>')\n }\n\n return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n /** @type {Array<string>} */\n const values = []\n let index = -1\n /** @type {string} */\n let key\n\n if (properties) {\n for (key in properties) {\n if (properties[key] !== null && properties[key] !== undefined) {\n const value = serializeAttribute(state, key, properties[key])\n if (value) values.push(value)\n }\n }\n }\n\n while (++index < values.length) {\n const last = state.settings.tightAttributes\n ? values[index].charAt(values[index].length - 1)\n : undefined\n\n // In tight mode, don\u2019t add a space after quoted attributes.\n if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n values[index] += ' '\n }\n }\n\n return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n const info = find(state.schema, key)\n const x =\n state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n const y = state.settings.allowDangerousCharacters ? 0 : 1\n let quote = state.quote\n /** @type {string | undefined} */\n let result\n\n if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n value = true\n } else if (\n (info.boolean || info.overloadedBoolean) &&\n (typeof value !== 'string' || value === info.attribute || value === '')\n ) {\n value = Boolean(value)\n }\n\n if (\n value === null ||\n value === undefined ||\n value === false ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return ''\n }\n\n const name = stringifyEntities(\n info.attribute,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: constants.name[x][y]\n })\n )\n\n // No value.\n // There is currently only one boolean property in SVG: `[download]` on\n // `<a>`.\n // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n // so I can\u2019t test if dropping the value works.\n // But I assume that it should:\n //\n // ```html\n // <!doctype html>\n // <svg viewBox=\"0 0 100 100\">\n // <a href=https://example.com download>\n // <circle cx=50 cy=40 r=35 />\n // </a>\n // </svg>\n // ```\n //\n // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n if (value === true) return name\n\n // `spaces` doesn\u2019t accept a second argument, but it\u2019s given here just to\n // keep the code cleaner.\n value = Array.isArray(value)\n ? (info.commaSeparated ? commas : spaces)(value, {\n padLeft: !state.settings.tightCommaSeparatedLists\n })\n : String(value)\n\n if (state.settings.collapseEmptyAttributes && !value) return name\n\n // Check unquoted value.\n if (state.settings.preferUnquoted) {\n result = stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n attribute: true,\n subset: constants.unquoted[x][y]\n })\n )\n }\n\n // If we don\u2019t want unquoted, or if `value` contains character references when\n // unquoted\u2026\n if (result !== value) {\n // If the alternative is less common than `quote`, switch.\n if (\n state.settings.quoteSmart &&\n ccount(value, quote) > ccount(value, state.alternative)\n ) {\n quote = state.alternative\n }\n\n result =\n quote +\n stringifyEntities(\n value,\n Object.assign({}, state.settings.characterReferences, {\n // Always encode without parse errors in non-HTML.\n subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n attribute: true\n })\n ) +\n quote\n }\n\n // Don\u2019t add a `=` for unquoted empties.\n return name + (result ? '=' + result : result)\n}\n", "/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n * Node to handle.\n * @param {number | undefined} _\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function text(node, _, parent, state) {\n // Check if content of `node` should be escaped.\n return parent &&\n parent.type === 'element' &&\n (parent.tagName === 'script' || parent.tagName === 'style')\n ? node.value\n : stringifyEntities(\n node.value,\n Object.assign({}, state.settings.characterReferences, {\n subset: textEntitySubset\n })\n )\n}\n", "/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function raw(node, index, parent, state) {\n return state.settings.allowDangerousHtml\n ? node.value\n : text(node, index, parent, state)\n}\n", "/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n * Node to handle.\n * @param {number | undefined} _1\n * Index of `node` in `parent.\n * @param {Parents | undefined} _2\n * Parent of `node`.\n * @param {State} state\n * Info passed around about the current state.\n * @returns {string}\n * Serialized node.\n */\nexport function root(node, _1, _2, state) {\n return state.all(node)\n}\n", "/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n invalid,\n unknown,\n handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n * Unknown value.\n * @returns {never}\n * Never.\n */\nfunction invalid(node) {\n throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n * Unknown node.\n * @returns {never}\n * Never.\n */\nfunction unknown(node_) {\n // `type` is guaranteed by runtime JS.\n const node = /** @type {Nodes} */ (node_)\n throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n", "/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n * Do not encode some characters which cause XSS vulnerabilities in older\n * browsers (default: `false`).\n *\n * > \u26A0\uFE0F **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n * When `false`, `Raw` nodes are encoded.\n *\n * > \u26A0\uFE0F **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n * Do not encode characters which cause parse errors (even though they work),\n * to save bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n * Use \u201Cbogus comments\u201D instead of comments to save byes: `<?charlie>`\n * instead of `<!--charlie-->` (default: `false`).\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n * Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n * Close SVG elements without any content with slash (`/`) on the opening tag\n * instead of an end tag: `<circle />` instead of `<circle></circle>`\n * (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n * Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n * `<img>` (default: `false`).\n *\n * See `tightSelfClosing` to control whether a space is used before the\n * slash.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n * Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n * `false`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n * Omit optional opening and closing tags (default: `false`).\n *\n * For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n * tags can be omitted.\n * The first because it\u2019s followed by another `li`, the last because it\u2019s\n * followed by nothing.\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n * Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n * Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n * Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n * Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n * When an `<svg>` element is found in the HTML space, this package already\n * automatically switches to and from the SVG space when entering and exiting\n * it (default: `'html'`).\n *\n * > \uD83D\uDC49 **Note**: hast is not XML.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG might break but fragments of modern SVG should be fine.\n * > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n * Join attributes together, without whitespace, if possible: get\n * `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n * bytes (default: `false`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n * Join known comma-separated attribute values with just a comma (`,`),\n * instead of padding them on the right as well (`,\u2420`, where `\u2420` represents a\n * space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n * Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n * `<!doctype html>` to save bytes (default: `false`).\n *\n * > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n * > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n * Do not use an extra space when closing self-closing elements: `<img/>`\n * instead of `<img />` (default: `false`).\n *\n * > \uD83D\uDC49 **Note**: only used if `closeSelfClosing: true` or\n * > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n * Use a `<!DOCTYPE\u2026` instead of `<!doctype\u2026` (default: `false`).\n *\n * Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n * Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n * Not used in the SVG space.\n *\n * > \uD83D\uDC49 **Note**: It\u2019s highly unlikely that you want to pass this, because\n * > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n * HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n * Namespace.\n *\n * @typedef State\n * Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n * Serialize the children of a parent node.\n * @property {Quote} alternative\n * Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n * Serialize one node.\n * @property {Quote} quote\n * Preferred quote.\n * @property {Schema} schema\n * Current schema.\n * @property {Settings} settings\n * User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n * Tree to serialize.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized HTML.\n */\nexport function toHtml(tree, options) {\n const options_ = options || emptyOptions\n const quote = options_.quote || '\"'\n const alternative = quote === '\"' ? \"'\" : '\"'\n\n if (quote !== '\"' && quote !== \"'\") {\n throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n }\n\n /** @type {State} */\n const state = {\n one,\n all,\n settings: {\n omitOptionalTags: options_.omitOptionalTags || false,\n allowParseErrors: options_.allowParseErrors || false,\n allowDangerousCharacters: options_.allowDangerousCharacters || false,\n quoteSmart: options_.quoteSmart || false,\n preferUnquoted: options_.preferUnquoted || false,\n tightAttributes: options_.tightAttributes || false,\n upperDoctype: options_.upperDoctype || false,\n tightDoctype: options_.tightDoctype || false,\n bogusComments: options_.bogusComments || false,\n tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n tightSelfClosing: options_.tightSelfClosing || false,\n collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n allowDangerousHtml: options_.allowDangerousHtml || false,\n voids: options_.voids || htmlVoidElements,\n characterReferences:\n options_.characterReferences || emptyCharacterReferences,\n closeSelfClosing: options_.closeSelfClosing || false,\n closeEmptyElements: options_.closeEmptyElements || false\n },\n schema: options_.space === 'svg' ? svg : html,\n quote,\n alternative\n }\n\n return state.one(\n Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n undefined,\n undefined\n )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Nodes} node\n * Node to handle.\n * @param {number | undefined} index\n * Index of `node` in `parent.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {string}\n * Serialized node.\n */\nfunction one(node, index, parent) {\n return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n * Info passed around about the current state.\n * @param {Parents | undefined} parent\n * Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n /** @type {Array<string>} */\n const results = []\n const children = (parent && parent.children) || emptyChildren\n let index = -1\n\n while (++index < children.length) {\n results[index] = this.one(children[index], index, parent)\n }\n\n return results.join('')\n}\n", "import { ShikiError as ShikiError$1 } from \"@shikijs/types\";\nimport { ShikiError, applyColorReplacements, codeToTokensBase as codeToTokensBase$1, codeToTokensWithThemes, codeToTokensWithThemes as codeToTokensWithThemes$1, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitive as createShikiPrimitive$1, createShikiPrimitiveAsync, createShikiPrimitiveAsync as createShikiPrimitiveAsync$1, getLastGrammarState, getLastGrammarStateFromMap, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, normalizeGetter, normalizeTheme, resolveColorReplacements, setLastGrammarStateToMap, splitLines, splitLines as splitLines$1, toArray, tokenizeWithTheme } from \"@shikijs/primitive\";\nimport { FontStyle } from \"@shikijs/vscode-textmate\";\nimport { toHtml } from \"hast-util-to-html\";\n\nexport * from \"@shikijs/types\"\n\n//#region src/utils/hast.ts\n/**\n* Utility to append class to a hast node\n*\n* If the `property.class` is a string, it will be splitted by space and converted to an array.\n*/\nfunction addClassToHast(node, className) {\n\tif (!className) return node;\n\tnode.properties ||= {};\n\tnode.properties.class ||= [];\n\tif (typeof node.properties.class === \"string\") node.properties.class = node.properties.class.split(/\\s+/g);\n\tif (!Array.isArray(node.properties.class)) node.properties.class = [];\n\tconst targets = Array.isArray(className) ? className : className.split(/\\s+/g);\n\tfor (const c of targets) if (c && !node.properties.class.includes(c)) node.properties.class.push(c);\n\treturn node;\n}\n\n//#endregion\n//#region src/utils/strings.ts\n/**\n* Creates a converter between index and position in a code block.\n*\n* Overflow/underflow are unchecked.\n*/\nfunction createPositionConverter(code) {\n\tconst lines = splitLines$1(code, true).map(([line]) => line);\n\tfunction indexToPos(index) {\n\t\tif (index === code.length) return {\n\t\t\tline: lines.length - 1,\n\t\t\tcharacter: lines[lines.length - 1].length\n\t\t};\n\t\tlet character = index;\n\t\tlet line = 0;\n\t\tfor (const lineText of lines) {\n\t\t\tif (character < lineText.length) break;\n\t\t\tcharacter -= lineText.length;\n\t\t\tline++;\n\t\t}\n\t\treturn {\n\t\t\tline,\n\t\t\tcharacter\n\t\t};\n\t}\n\tfunction posToIndex(line, character) {\n\t\tlet index = 0;\n\t\tfor (let i = 0; i < line; i++) index += lines[i].length;\n\t\tindex += character;\n\t\treturn index;\n\t}\n\treturn {\n\t\tlines,\n\t\tindexToPos,\n\t\tposToIndex\n\t};\n}\n/**\n* Guess embedded languages from given code and highlighter.\n*\n* When highlighter is provided, only bundled languages will be included.\n*\n* @param code - The code string to analyze\n* @param _lang - The primary language of the code (currently unused)\n* @param highlighter - Optional highlighter instance to validate languages\n* @returns Array of detected language identifiers\n*\n* @example\n* ```ts\n* // Detects 'javascript' from Vue SFC\n* guessEmbeddedLanguages('<script lang=\"javascript\">')\n*\n* // Detects 'python' from markdown code block\n* guessEmbeddedLanguages('```python\\nprint(\"hi\")\\n```')\n* ```\n*/\nfunction guessEmbeddedLanguages(code, _lang, highlighter) {\n\tconst langs = /* @__PURE__ */ new Set();\n\tfor (const match of code.matchAll(/:?lang=[\"']([^\"']+)[\"']/g)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(/(?:```|~~~)([\\w-]+)/g)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(/\\\\begin\\{([\\w-]+)\\}/g)) {\n\t\tconst lang = match[1].toLowerCase().trim();\n\t\tif (lang) langs.add(lang);\n\t}\n\tfor (const match of code.matchAll(/<script\\s+(?:type|lang)=[\"']([^\"']+)[\"']/gi)) {\n\t\tconst fullType = match[1].toLowerCase().trim();\n\t\tconst lang = fullType.includes(\"/\") ? fullType.split(\"/\").pop() : fullType;\n\t\tif (lang) langs.add(lang);\n\t}\n\tif (!highlighter) return Array.from(langs);\n\tconst bundle = highlighter.getBundledLanguages();\n\treturn Array.from(langs).filter((l) => l && bundle[l]);\n}\n\n//#endregion\n//#region src/utils/constants.ts\nconst DEFAULT_COLOR_LIGHT_DARK = \"light-dark()\";\nconst COLOR_KEYS = [\"color\", \"background-color\"];\n\n//#endregion\n//#region src/utils/tokens.ts\n/**\n* Split a token into multiple tokens by given offsets.\n*\n* The offsets are relative to the token, and should be sorted.\n*/\nfunction splitToken(token, offsets) {\n\tlet lastOffset = 0;\n\tconst tokens = [];\n\tfor (const offset of offsets) {\n\t\tif (offset > lastOffset) tokens.push({\n\t\t\t...token,\n\t\t\tcontent: token.content.slice(lastOffset, offset),\n\t\t\toffset: token.offset + lastOffset\n\t\t});\n\t\tlastOffset = offset;\n\t}\n\tif (lastOffset < token.content.length) tokens.push({\n\t\t...token,\n\t\tcontent: token.content.slice(lastOffset),\n\t\toffset: token.offset + lastOffset\n\t});\n\treturn tokens;\n}\n/**\n* Split 2D tokens array by given breakpoints.\n*/\nfunction splitTokens(tokens, breakpoints) {\n\tconst sorted = Array.from(breakpoints instanceof Set ? breakpoints : new Set(breakpoints)).sort((a, b) => a - b);\n\tif (!sorted.length) return tokens;\n\treturn tokens.map((line) => {\n\t\treturn line.flatMap((token) => {\n\t\t\tconst breakpointsInToken = sorted.filter((i) => token.offset < i && i < token.offset + token.content.length).map((i) => i - token.offset).sort((a, b) => a - b);\n\t\t\tif (!breakpointsInToken.length) return token;\n\t\t\treturn splitToken(token, breakpointsInToken);\n\t\t});\n\t});\n}\nfunction flatTokenVariants(merged, variantsOrder, cssVariablePrefix, defaultColor, colorsRendering = \"css-vars\") {\n\tconst token = {\n\t\tcontent: merged.content,\n\t\texplanation: merged.explanation,\n\t\toffset: merged.offset\n\t};\n\tconst styles = variantsOrder.map((t) => getTokenStyleObject(merged.variants[t]));\n\tconst styleKeys = new Set(styles.flatMap((t) => Object.keys(t)));\n\tconst mergedStyles = {};\n\tconst varKey = (idx, key) => {\n\t\tconst keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n\t\treturn cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n\t};\n\tstyles.forEach((cur, idx) => {\n\t\tfor (const key of styleKeys) {\n\t\t\tconst value = cur[key] || \"inherit\";\n\t\t\tif (idx === 0 && defaultColor && COLOR_KEYS.includes(key)) if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && styles.length > 1) {\n\t\t\t\tconst lightIndex = variantsOrder.findIndex((t) => t === \"light\");\n\t\t\t\tconst darkIndex = variantsOrder.findIndex((t) => t === \"dark\");\n\t\t\t\tif (lightIndex === -1 || darkIndex === -1) throw new ShikiError$1(\"When using `defaultColor: \\\"light-dark()\\\"`, you must provide both `light` and `dark` themes\");\n\t\t\t\tmergedStyles[key] = `light-dark(${styles[lightIndex][key] || \"inherit\"}, ${styles[darkIndex][key] || \"inherit\"})`;\n\t\t\t\tif (colorsRendering === \"css-vars\") mergedStyles[varKey(idx, key)] = value;\n\t\t\t} else mergedStyles[key] = value;\n\t\t\telse if (colorsRendering === \"css-vars\") mergedStyles[varKey(idx, key)] = value;\n\t\t}\n\t});\n\ttoken.htmlStyle = mergedStyles;\n\treturn token;\n}\nfunction getTokenStyleObject(token) {\n\tconst styles = {};\n\tif (token.color) styles.color = token.color;\n\tif (token.bgColor) styles[\"background-color\"] = token.bgColor;\n\tif (token.fontStyle) {\n\t\tif (token.fontStyle & FontStyle.Italic) styles[\"font-style\"] = \"italic\";\n\t\tif (token.fontStyle & FontStyle.Bold) styles[\"font-weight\"] = \"bold\";\n\t\tconst decorations = [];\n\t\tif (token.fontStyle & FontStyle.Underline) decorations.push(\"underline\");\n\t\tif (token.fontStyle & FontStyle.Strikethrough) decorations.push(\"line-through\");\n\t\tif (decorations.length) styles[\"text-decoration\"] = decorations.join(\" \");\n\t}\n\treturn styles;\n}\nfunction stringifyTokenStyle(token) {\n\tif (typeof token === \"string\") return token;\n\treturn Object.entries(token).map(([key, value]) => `${key}:${value}`).join(\";\");\n}\n\n//#endregion\n//#region src/transformer-decorations.ts\n/**\n* A built-in transformer to add decorations to the highlighted code.\n*/\nfunction transformerDecorations() {\n\tconst map = /* @__PURE__ */ new WeakMap();\n\tfunction getContext(shiki) {\n\t\tif (!map.has(shiki.meta)) {\n\t\t\tconst converter = createPositionConverter(shiki.source);\n\t\t\tfunction normalizePosition(p) {\n\t\t\t\tif (typeof p === \"number\") {\n\t\t\t\t\tif (p < 0 || p > shiki.source.length) throw new ShikiError$1(`Invalid decoration offset: ${p}. Code length: ${shiki.source.length}`);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...converter.indexToPos(p),\n\t\t\t\t\t\toffset: p\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tconst line = converter.lines[p.line];\n\t\t\t\t\tif (line === void 0) throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Lines length: ${converter.lines.length}`);\n\t\t\t\t\tlet character = p.character;\n\t\t\t\t\tif (character < 0) character = line.length + character;\n\t\t\t\t\tif (character < 0 || character > line.length) throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Line ${p.line} length: ${line.length}`);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...p,\n\t\t\t\t\t\tcharacter,\n\t\t\t\t\t\toffset: converter.posToIndex(p.line, character)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst decorations = (shiki.options.decorations || []).map((d) => ({\n\t\t\t\t...d,\n\t\t\t\tstart: normalizePosition(d.start),\n\t\t\t\tend: normalizePosition(d.end)\n\t\t\t}));\n\t\t\tverifyIntersections(decorations);\n\t\t\tmap.set(shiki.meta, {\n\t\t\t\tdecorations,\n\t\t\t\tconverter,\n\t\t\t\tsource: shiki.source\n\t\t\t});\n\t\t}\n\t\treturn map.get(shiki.meta);\n\t}\n\treturn {\n\t\tname: \"shiki:decorations\",\n\t\ttokens(tokens) {\n\t\t\tif (!this.options.decorations?.length) return;\n\t\t\treturn splitTokens(tokens, getContext(this).decorations.flatMap((d) => [d.start.offset, d.end.offset]));\n\t\t},\n\t\tcode(codeEl) {\n\t\t\tif (!this.options.decorations?.length) return;\n\t\t\tconst ctx = getContext(this);\n\t\t\tconst lines = Array.from(codeEl.children).filter((i) => i.type === \"element\" && i.tagName === \"span\");\n\t\t\tif (lines.length !== ctx.converter.lines.length) throw new ShikiError$1(`Number of lines in code element (${lines.length}) does not match the number of lines in the source (${ctx.converter.lines.length}). Failed to apply decorations.`);\n\t\t\tfunction applyLineSection(line, start, end, decoration) {\n\t\t\t\tconst lineEl = lines[line];\n\t\t\t\tlet text = \"\";\n\t\t\t\tlet startIndex = -1;\n\t\t\t\tlet endIndex = -1;\n\t\t\t\tif (start === 0) startIndex = 0;\n\t\t\t\tif (end === 0) endIndex = 0;\n\t\t\t\tif (end === Number.POSITIVE_INFINITY) endIndex = lineEl.children.length;\n\t\t\t\tif (startIndex === -1 || endIndex === -1) for (let i = 0; i < lineEl.children.length; i++) {\n\t\t\t\t\ttext += stringify(lineEl.children[i]);\n\t\t\t\t\tif (startIndex === -1 && text.length === start) startIndex = i + 1;\n\t\t\t\t\tif (endIndex === -1 && text.length === end) endIndex = i + 1;\n\t\t\t\t}\n\t\t\t\tif (startIndex === -1) throw new ShikiError$1(`Failed to find start index for decoration ${JSON.stringify(decoration.start)}`);\n\t\t\t\tif (endIndex === -1) throw new ShikiError$1(`Failed to find end index for decoration ${JSON.stringify(decoration.end)}`);\n\t\t\t\tconst children = lineEl.children.slice(startIndex, endIndex);\n\t\t\t\tif (!decoration.alwaysWrap && children.length === lineEl.children.length) applyDecoration(lineEl, decoration, \"line\");\n\t\t\t\telse if (!decoration.alwaysWrap && children.length === 1 && children[0].type === \"element\") applyDecoration(children[0], decoration, \"token\");\n\t\t\t\telse {\n\t\t\t\t\tconst wrapper = {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\ttagName: \"span\",\n\t\t\t\t\t\tproperties: {},\n\t\t\t\t\t\tchildren\n\t\t\t\t\t};\n\t\t\t\t\tapplyDecoration(wrapper, decoration, \"wrapper\");\n\t\t\t\t\tlineEl.children.splice(startIndex, children.length, wrapper);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction applyLine(line, decoration) {\n\t\t\t\tlines[line] = applyDecoration(lines[line], decoration, \"line\");\n\t\t\t}\n\t\t\tfunction applyDecoration(el, decoration, type) {\n\t\t\t\tconst properties = decoration.properties || {};\n\t\t\t\tconst transform = decoration.transform || ((i) => i);\n\t\t\t\tel.tagName = decoration.tagName || \"span\";\n\t\t\t\tel.properties = {\n\t\t\t\t\t...el.properties,\n\t\t\t\t\t...properties,\n\t\t\t\t\tclass: el.properties.class\n\t\t\t\t};\n\t\t\t\tif (decoration.properties?.class) addClassToHast(el, decoration.properties.class);\n\t\t\t\tel = transform(el, type) || el;\n\t\t\t\treturn el;\n\t\t\t}\n\t\t\tconst lineApplies = [];\n\t\t\tconst sorted = ctx.decorations.sort((a, b) => b.start.offset - a.start.offset || a.end.offset - b.end.offset);\n\t\t\tfor (const decoration of sorted) {\n\t\t\t\tconst { start, end } = decoration;\n\t\t\t\tif (start.line === end.line) applyLineSection(start.line, start.character, end.character, decoration);\n\t\t\t\telse if (start.line < end.line) {\n\t\t\t\t\tapplyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n\t\t\t\t\tfor (let i = start.line + 1; i < end.line; i++) lineApplies.unshift(() => applyLine(i, decoration));\n\t\t\t\t\tapplyLineSection(end.line, 0, end.character, decoration);\n\t\t\t\t}\n\t\t\t}\n\t\t\tlineApplies.forEach((i) => i());\n\t\t}\n\t};\n}\nfunction verifyIntersections(items) {\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst foo = items[i];\n\t\tif (foo.start.offset > foo.end.offset) throw new ShikiError$1(`Invalid decoration range: ${JSON.stringify(foo.start)} - ${JSON.stringify(foo.end)}`);\n\t\tfor (let j = i + 1; j < items.length; j++) {\n\t\t\tconst bar = items[j];\n\t\t\tconst isFooHasBarStart = foo.start.offset <= bar.start.offset && bar.start.offset < foo.end.offset;\n\t\t\tconst isFooHasBarEnd = foo.start.offset < bar.end.offset && bar.end.offset <= foo.end.offset;\n\t\t\tconst isBarHasFooStart = bar.start.offset <= foo.start.offset && foo.start.offset < bar.end.offset;\n\t\t\tconst isBarHasFooEnd = bar.start.offset < foo.end.offset && foo.end.offset <= bar.end.offset;\n\t\t\tif (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n\t\t\t\tif (isFooHasBarStart && isFooHasBarEnd) continue;\n\t\t\t\tif (isBarHasFooStart && isBarHasFooEnd) continue;\n\t\t\t\tif (isBarHasFooStart && foo.start.offset === foo.end.offset) continue;\n\t\t\t\tif (isFooHasBarEnd && bar.start.offset === bar.end.offset) continue;\n\t\t\t\tthrow new ShikiError$1(`Decorations ${JSON.stringify(foo.start)} and ${JSON.stringify(bar.start)} intersect.`);\n\t\t\t}\n\t\t}\n\t}\n}\nfunction stringify(el) {\n\tif (el.type === \"text\") return el.value;\n\tif (el.type === \"element\") return el.children.map(stringify).join(\"\");\n\treturn \"\";\n}\n\n//#endregion\n//#region src/highlight/_get-transformers.ts\nconst builtInTransformers = [/* @__PURE__ */ transformerDecorations()];\nfunction getTransformers(options) {\n\tconst transformers = sortTransformersByEnforcement(options.transformers || []);\n\treturn [\n\t\t...transformers.pre,\n\t\t...transformers.normal,\n\t\t...transformers.post,\n\t\t...builtInTransformers\n\t];\n}\nfunction sortTransformersByEnforcement(transformers) {\n\tconst pre = [];\n\tconst post = [];\n\tconst normal = [];\n\tfor (const transformer of transformers) switch (transformer.enforce) {\n\t\tcase \"pre\":\n\t\t\tpre.push(transformer);\n\t\t\tbreak;\n\t\tcase \"post\":\n\t\t\tpost.push(transformer);\n\t\t\tbreak;\n\t\tdefault: normal.push(transformer);\n\t}\n\treturn {\n\t\tpre,\n\t\tpost,\n\t\tnormal\n\t};\n}\n\n//#endregion\n//#region ../../node_modules/.pnpm/ansi-sequence-parser@1.1.3/node_modules/ansi-sequence-parser/dist/index.js\nvar namedColors = [\n\t\"black\",\n\t\"red\",\n\t\"green\",\n\t\"yellow\",\n\t\"blue\",\n\t\"magenta\",\n\t\"cyan\",\n\t\"white\",\n\t\"brightBlack\",\n\t\"brightRed\",\n\t\"brightGreen\",\n\t\"brightYellow\",\n\t\"brightBlue\",\n\t\"brightMagenta\",\n\t\"brightCyan\",\n\t\"brightWhite\"\n];\nvar decorations = {\n\t1: \"bold\",\n\t2: \"dim\",\n\t3: \"italic\",\n\t4: \"underline\",\n\t7: \"reverse\",\n\t8: \"hidden\",\n\t9: \"strikethrough\"\n};\nfunction findSequence(value, position) {\n\tconst nextEscape = value.indexOf(\"\\x1B\", position);\n\tif (nextEscape !== -1) {\n\t\tif (value[nextEscape + 1] === \"[\") {\n\t\t\tconst nextClose = value.indexOf(\"m\", nextEscape);\n\t\t\tif (nextClose !== -1) return {\n\t\t\t\tsequence: value.substring(nextEscape + 2, nextClose).split(\";\"),\n\t\t\t\tstartPosition: nextEscape,\n\t\t\t\tposition: nextClose + 1\n\t\t\t};\n\t\t}\n\t}\n\treturn { position: value.length };\n}\nfunction parseColor(sequence) {\n\tconst colorMode = sequence.shift();\n\tif (colorMode === \"2\") {\n\t\tconst rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));\n\t\tif (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x))) return;\n\t\treturn {\n\t\t\ttype: \"rgb\",\n\t\t\trgb\n\t\t};\n\t} else if (colorMode === \"5\") {\n\t\tconst index = sequence.shift();\n\t\tif (index) return {\n\t\t\ttype: \"table\",\n\t\t\tindex: Number(index)\n\t\t};\n\t}\n}\nfunction parseSequence(sequence) {\n\tconst commands = [];\n\twhile (sequence.length > 0) {\n\t\tconst code = sequence.shift();\n\t\tif (!code) continue;\n\t\tconst codeInt = Number.parseInt(code);\n\t\tif (Number.isNaN(codeInt)) continue;\n\t\tif (codeInt === 0) commands.push({ type: \"resetAll\" });\n\t\telse if (codeInt <= 9) {\n\t\t\tif (decorations[codeInt]) commands.push({\n\t\t\t\ttype: \"setDecoration\",\n\t\t\t\tvalue: decorations[codeInt]\n\t\t\t});\n\t\t} else if (codeInt <= 29) {\n\t\t\tconst decoration = decorations[codeInt - 20];\n\t\t\tif (decoration) {\n\t\t\t\tcommands.push({\n\t\t\t\t\ttype: \"resetDecoration\",\n\t\t\t\t\tvalue: decoration\n\t\t\t\t});\n\t\t\t\tif (decoration === \"dim\") commands.push({\n\t\t\t\t\ttype: \"resetDecoration\",\n\t\t\t\t\tvalue: \"bold\"\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (codeInt <= 37) commands.push({\n\t\t\ttype: \"setForegroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 30]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt === 38) {\n\t\t\tconst color = parseColor(sequence);\n\t\t\tif (color) commands.push({\n\t\t\t\ttype: \"setForegroundColor\",\n\t\t\t\tvalue: color\n\t\t\t});\n\t\t} else if (codeInt === 39) commands.push({ type: \"resetForegroundColor\" });\n\t\telse if (codeInt <= 47) commands.push({\n\t\t\ttype: \"setBackgroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 40]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt === 48) {\n\t\t\tconst color = parseColor(sequence);\n\t\t\tif (color) commands.push({\n\t\t\t\ttype: \"setBackgroundColor\",\n\t\t\t\tvalue: color\n\t\t\t});\n\t\t} else if (codeInt === 49) commands.push({ type: \"resetBackgroundColor\" });\n\t\telse if (codeInt === 53) commands.push({\n\t\t\ttype: \"setDecoration\",\n\t\t\tvalue: \"overline\"\n\t\t});\n\t\telse if (codeInt === 55) commands.push({\n\t\t\ttype: \"resetDecoration\",\n\t\t\tvalue: \"overline\"\n\t\t});\n\t\telse if (codeInt >= 90 && codeInt <= 97) commands.push({\n\t\t\ttype: \"setForegroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 90 + 8]\n\t\t\t}\n\t\t});\n\t\telse if (codeInt >= 100 && codeInt <= 107) commands.push({\n\t\t\ttype: \"setBackgroundColor\",\n\t\t\tvalue: {\n\t\t\t\ttype: \"named\",\n\t\t\t\tname: namedColors[codeInt - 100 + 8]\n\t\t\t}\n\t\t});\n\t}\n\treturn commands;\n}\nfunction createAnsiSequenceParser() {\n\tlet foreground = null;\n\tlet background = null;\n\tlet decorations2 = /* @__PURE__ */ new Set();\n\treturn { parse(value) {\n\t\tconst tokens = [];\n\t\tlet position = 0;\n\t\tdo {\n\t\t\tconst findResult = findSequence(value, position);\n\t\t\tconst text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);\n\t\t\tif (text.length > 0) tokens.push({\n\t\t\t\tvalue: text,\n\t\t\t\tforeground,\n\t\t\t\tbackground,\n\t\t\t\tdecorations: new Set(decorations2)\n\t\t\t});\n\t\t\tif (findResult.sequence) {\n\t\t\t\tconst commands = parseSequence(findResult.sequence);\n\t\t\t\tfor (const styleToken of commands) if (styleToken.type === \"resetAll\") {\n\t\t\t\t\tforeground = null;\n\t\t\t\t\tbackground = null;\n\t\t\t\t\tdecorations2.clear();\n\t\t\t\t} else if (styleToken.type === \"resetForegroundColor\") foreground = null;\n\t\t\t\telse if (styleToken.type === \"resetBackgroundColor\") background = null;\n\t\t\t\telse if (styleToken.type === \"resetDecoration\") decorations2.delete(styleToken.value);\n\t\t\t\tfor (const styleToken of commands) if (styleToken.type === \"setForegroundColor\") foreground = styleToken.value;\n\t\t\t\telse if (styleToken.type === \"setBackgroundColor\") background = styleToken.value;\n\t\t\t\telse if (styleToken.type === \"setDecoration\") decorations2.add(styleToken.value);\n\t\t\t}\n\t\t\tposition = findResult.position;\n\t\t} while (position < value.length);\n\t\treturn tokens;\n\t} };\n}\nvar defaultNamedColorsMap = {\n\tblack: \"#000000\",\n\tred: \"#bb0000\",\n\tgreen: \"#00bb00\",\n\tyellow: \"#bbbb00\",\n\tblue: \"#0000bb\",\n\tmagenta: \"#ff00ff\",\n\tcyan: \"#00bbbb\",\n\twhite: \"#eeeeee\",\n\tbrightBlack: \"#555555\",\n\tbrightRed: \"#ff5555\",\n\tbrightGreen: \"#00ff00\",\n\tbrightYellow: \"#ffff55\",\n\tbrightBlue: \"#5555ff\",\n\tbrightMagenta: \"#ff55ff\",\n\tbrightCyan: \"#55ffff\",\n\tbrightWhite: \"#ffffff\"\n};\nfunction createColorPalette(namedColorsMap = defaultNamedColorsMap) {\n\tfunction namedColor(name) {\n\t\treturn namedColorsMap[name];\n\t}\n\tfunction rgbColor(rgb) {\n\t\treturn `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n\t}\n\tlet colorTable;\n\tfunction getColorTable() {\n\t\tif (colorTable) return colorTable;\n\t\tcolorTable = [];\n\t\tfor (let i = 0; i < namedColors.length; i++) colorTable.push(namedColor(namedColors[i]));\n\t\tlet levels = [\n\t\t\t0,\n\t\t\t95,\n\t\t\t135,\n\t\t\t175,\n\t\t\t215,\n\t\t\t255\n\t\t];\n\t\tfor (let r = 0; r < 6; r++) for (let g = 0; g < 6; g++) for (let b = 0; b < 6; b++) colorTable.push(rgbColor([\n\t\t\tlevels[r],\n\t\t\tlevels[g],\n\t\t\tlevels[b]\n\t\t]));\n\t\tlet level = 8;\n\t\tfor (let i = 0; i < 24; i++, level += 10) colorTable.push(rgbColor([\n\t\t\tlevel,\n\t\t\tlevel,\n\t\t\tlevel\n\t\t]));\n\t\treturn colorTable;\n\t}\n\tfunction tableColor(index) {\n\t\treturn getColorTable()[index];\n\t}\n\tfunction value(color) {\n\t\tswitch (color.type) {\n\t\t\tcase \"named\": return namedColor(color.name);\n\t\t\tcase \"rgb\": return rgbColor(color.rgb);\n\t\t\tcase \"table\": return tableColor(color.index);\n\t\t}\n\t}\n\treturn { value };\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-ansi.ts\n/**\n* Default ANSI palette (VSCode compatible fallbacks)\n* Used when the theme does not define terminal.ansi* colors.\n*/\nconst defaultAnsiColors = {\n\tblack: \"#000000\",\n\tred: \"#cd3131\",\n\tgreen: \"#0DBC79\",\n\tyellow: \"#E5E510\",\n\tblue: \"#2472C8\",\n\tmagenta: \"#BC3FBC\",\n\tcyan: \"#11A8CD\",\n\twhite: \"#E5E5E5\",\n\tbrightBlack: \"#666666\",\n\tbrightRed: \"#F14C4C\",\n\tbrightGreen: \"#23D18B\",\n\tbrightYellow: \"#F5F543\",\n\tbrightBlue: \"#3B8EEA\",\n\tbrightMagenta: \"#D670D6\",\n\tbrightCyan: \"#29B8DB\",\n\tbrightWhite: \"#FFFFFF\"\n};\nfunction tokenizeAnsiWithTheme(theme, fileContents, options) {\n\tconst colorReplacements = resolveColorReplacements(theme, options);\n\tconst lines = splitLines(fileContents);\n\tconst colorPalette = createColorPalette(Object.fromEntries(namedColors.map((name) => {\n\t\tconst key = `terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`;\n\t\treturn [name, theme.colors?.[key] || defaultAnsiColors[name]];\n\t})));\n\tconst parser = createAnsiSequenceParser();\n\treturn lines.map((line) => parser.parse(line[0]).map((token) => {\n\t\tlet color;\n\t\tlet bgColor;\n\t\tif (token.decorations.has(\"reverse\")) {\n\t\t\tcolor = token.background ? colorPalette.value(token.background) : theme.bg;\n\t\t\tbgColor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n\t\t} else {\n\t\t\tcolor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n\t\t\tbgColor = token.background ? colorPalette.value(token.background) : void 0;\n\t\t}\n\t\tcolor = applyColorReplacements(color, colorReplacements);\n\t\tbgColor = applyColorReplacements(bgColor, colorReplacements);\n\t\tif (token.decorations.has(\"dim\")) color = dimColor(color);\n\t\tlet fontStyle = FontStyle.None;\n\t\tif (token.decorations.has(\"bold\")) fontStyle |= FontStyle.Bold;\n\t\tif (token.decorations.has(\"italic\")) fontStyle |= FontStyle.Italic;\n\t\tif (token.decorations.has(\"underline\")) fontStyle |= FontStyle.Underline;\n\t\tif (token.decorations.has(\"strikethrough\")) fontStyle |= FontStyle.Strikethrough;\n\t\treturn {\n\t\t\tcontent: token.value,\n\t\t\toffset: line[1],\n\t\t\tcolor,\n\t\t\tbgColor,\n\t\t\tfontStyle\n\t\t};\n\t}));\n}\n/**\n* Adds 50% alpha to a hex color string or the \"-dim\" postfix to a CSS variable\n*/\nfunction dimColor(color) {\n\tconst hexMatch = color.match(/#([0-9a-f]{3,8})/i);\n\tif (hexMatch) {\n\t\tconst hex = hexMatch[1];\n\t\tif (hex.length === 8) {\n\t\t\tconst alpha = Math.round(Number.parseInt(hex.slice(6, 8), 16) / 2).toString(16).padStart(2, \"0\");\n\t\t\treturn `#${hex.slice(0, 6)}${alpha}`;\n\t\t} else if (hex.length === 6) return `#${hex}80`;\n\t\telse if (hex.length === 4) {\n\t\t\tconst r = hex[0];\n\t\t\tconst g = hex[1];\n\t\t\tconst b = hex[2];\n\t\t\tconst a = hex[3];\n\t\t\treturn `#${r}${r}${g}${g}${b}${b}${Math.round(Number.parseInt(`${a}${a}`, 16) / 2).toString(16).padStart(2, \"0\")}`;\n\t\t} else if (hex.length === 3) {\n\t\t\tconst r = hex[0];\n\t\t\tconst g = hex[1];\n\t\t\tconst b = hex[2];\n\t\t\treturn `#${r}${r}${g}${g}${b}${b}80`;\n\t\t}\n\t}\n\tconst cssVarMatch = color.match(/var\\((--[\\w-]+-ansi-[\\w-]+)\\)/);\n\tif (cssVarMatch) return `var(${cssVarMatch[1]}-dim)`;\n\treturn color;\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens-base.ts\n/**\n* Code to tokens, with a simple theme.\n* This wraps the tokenizer's implementation to add ANSI support.\n*/\nfunction codeToTokensBase(primitive, code, options = {}) {\n\tconst lang = primitive.resolveLangAlias(options.lang || \"text\");\n\tconst { theme: themeName = primitive.getLoadedThemes()[0] } = options;\n\tif (!isPlainLang(lang) && !isNoneTheme(themeName) && lang === \"ansi\") {\n\t\tconst { theme } = primitive.setTheme(themeName);\n\t\treturn tokenizeAnsiWithTheme(theme, code, options);\n\t}\n\treturn codeToTokensBase$1(primitive, code, options);\n}\n\n//#endregion\n//#region src/highlight/code-to-tokens.ts\n/**\n* High-level code-to-tokens API.\n*\n* It will use `codeToTokensWithThemes` or `codeToTokensBase` based on the options.\n*/\nfunction codeToTokens(primitive, code, options) {\n\tlet bg;\n\tlet fg;\n\tlet tokens;\n\tlet themeName;\n\tlet rootStyle;\n\tlet grammarState;\n\tif (\"themes\" in options) {\n\t\tconst { defaultColor = \"light\", cssVariablePrefix = \"--shiki-\", colorsRendering = \"css-vars\" } = options;\n\t\tconst themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({\n\t\t\tcolor: i[0],\n\t\t\ttheme: i[1]\n\t\t})).sort((a, b) => a.color === defaultColor ? -1 : b.color === defaultColor ? 1 : 0);\n\t\tif (themes.length === 0) throw new ShikiError$1(\"`themes` option must not be empty\");\n\t\tconst themeTokens = codeToTokensWithThemes$1(primitive, code, options, codeToTokensBase);\n\t\tgrammarState = getLastGrammarStateFromMap(themeTokens);\n\t\tif (defaultColor && DEFAULT_COLOR_LIGHT_DARK !== defaultColor && !themes.find((t) => t.color === defaultColor)) throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n\t\tconst themeRegs = themes.map((t) => primitive.getTheme(t.theme));\n\t\tconst themesOrder = themes.map((t) => t.color);\n\t\ttokens = themeTokens.map((line) => line.map((token) => flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n\t\tif (grammarState) setLastGrammarStateToMap(tokens, grammarState);\n\t\tconst themeColorReplacements = themes.map((t) => resolveColorReplacements(t.theme, options));\n\t\tfg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"fg\", colorsRendering);\n\t\tbg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"bg\", colorsRendering);\n\t\tthemeName = `shiki-themes ${themeRegs.map((t) => t.name).join(\" \")}`;\n\t\trootStyle = defaultColor ? void 0 : [fg, bg].join(\";\");\n\t} else if (\"theme\" in options) {\n\t\tconst colorReplacements = resolveColorReplacements(options.theme, options);\n\t\ttokens = codeToTokensBase(primitive, code, options);\n\t\tconst _theme = primitive.getTheme(options.theme);\n\t\tbg = applyColorReplacements(_theme.bg, colorReplacements);\n\t\tfg = applyColorReplacements(_theme.fg, colorReplacements);\n\t\tthemeName = _theme.name;\n\t\tgrammarState = getLastGrammarStateFromMap(tokens);\n\t} else throw new ShikiError$1(\"Invalid options, either `theme` or `themes` must be provided\");\n\treturn {\n\t\ttokens,\n\t\tfg,\n\t\tbg,\n\t\tthemeName,\n\t\trootStyle,\n\t\tgrammarState\n\t};\n}\nfunction mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, property, colorsRendering) {\n\treturn themes.map((t, idx) => {\n\t\tconst value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n\t\tconst cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n\t\tif (idx === 0 && defaultColor) {\n\t\t\tif (defaultColor === DEFAULT_COLOR_LIGHT_DARK && themes.length > 1) {\n\t\t\t\tconst lightIndex = themes.findIndex((t) => t.color === \"light\");\n\t\t\t\tconst darkIndex = themes.findIndex((t) => t.color === \"dark\");\n\t\t\t\tif (lightIndex === -1 || darkIndex === -1) throw new ShikiError$1(\"When using `defaultColor: \\\"light-dark()\\\"`, you must provide both `light` and `dark` themes\");\n\t\t\t\treturn `light-dark(${applyColorReplacements(themeRegs[lightIndex][property], themeColorReplacements[lightIndex]) || \"inherit\"}, ${applyColorReplacements(themeRegs[darkIndex][property], themeColorReplacements[darkIndex]) || \"inherit\"});${cssVar}`;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t\tif (colorsRendering === \"css-vars\") return cssVar;\n\t\treturn null;\n\t}).filter((i) => !!i).join(\";\");\n}\n\n//#endregion\n//#region src/highlight/code-to-hast.ts\nfunction codeToHast(primitive, code, options, transformerContext = {\n\tmeta: {},\n\toptions,\n\tcodeToHast: (_code, _options) => codeToHast(primitive, _code, _options),\n\tcodeToTokens: (_code, _options) => codeToTokens(primitive, _code, _options)\n}) {\n\tlet input = code;\n\tfor (const transformer of getTransformers(options)) input = transformer.preprocess?.call(transformerContext, input, options) || input;\n\tlet { tokens, fg, bg, themeName, rootStyle, grammarState } = codeToTokens(primitive, input, options);\n\tconst { mergeWhitespaces = true, mergeSameStyleTokens = false } = options;\n\tif (mergeWhitespaces === true) tokens = mergeWhitespaceTokens(tokens);\n\telse if (mergeWhitespaces === \"never\") tokens = splitWhitespaceTokens(tokens);\n\tif (mergeSameStyleTokens) tokens = mergeAdjacentStyledTokens(tokens);\n\tconst contextSource = {\n\t\t...transformerContext,\n\t\tget source() {\n\t\t\treturn input;\n\t\t}\n\t};\n\tfor (const transformer of getTransformers(options)) tokens = transformer.tokens?.call(contextSource, tokens) || tokens;\n\treturn tokensToHast(tokens, {\n\t\t...options,\n\t\tfg,\n\t\tbg,\n\t\tthemeName,\n\t\trootStyle: options.rootStyle === false ? false : options.rootStyle ?? rootStyle\n\t}, contextSource, grammarState);\n}\nfunction tokensToHast(tokens, options, transformerContext, grammarState = getLastGrammarStateFromMap(tokens)) {\n\tconst transformers = getTransformers(options);\n\tconst lines = [];\n\tconst root = {\n\t\ttype: \"root\",\n\t\tchildren: []\n\t};\n\tconst { structure = \"classic\", tabindex = \"0\" } = options;\n\tconst properties = { class: `shiki ${options.themeName || \"\"}` };\n\tif (options.rootStyle !== false) if (options.rootStyle != null) properties.style = options.rootStyle;\n\telse properties.style = `background-color:${options.bg};color:${options.fg}`;\n\tif (tabindex !== false && tabindex != null) properties.tabindex = tabindex.toString();\n\tfor (const [key, value] of Object.entries(options.meta || {})) if (!key.startsWith(\"_\")) properties[key] = value;\n\tlet preNode = {\n\t\ttype: \"element\",\n\t\ttagName: \"pre\",\n\t\tproperties,\n\t\tchildren: [],\n\t\tdata: options.data\n\t};\n\tlet codeNode = {\n\t\ttype: \"element\",\n\t\ttagName: \"code\",\n\t\tproperties: {},\n\t\tchildren: lines\n\t};\n\tconst lineNodes = [];\n\tconst context = {\n\t\t...transformerContext,\n\t\tstructure,\n\t\taddClassToHast,\n\t\tget source() {\n\t\t\treturn transformerContext.source;\n\t\t},\n\t\tget tokens() {\n\t\t\treturn tokens;\n\t\t},\n\t\tget options() {\n\t\t\treturn options;\n\t\t},\n\t\tget root() {\n\t\t\treturn root;\n\t\t},\n\t\tget pre() {\n\t\t\treturn preNode;\n\t\t},\n\t\tget code() {\n\t\t\treturn codeNode;\n\t\t},\n\t\tget lines() {\n\t\t\treturn lineNodes;\n\t\t}\n\t};\n\ttokens.forEach((line, idx) => {\n\t\tif (idx) {\n\t\t\tif (structure === \"inline\") root.children.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"br\",\n\t\t\t\tproperties: {},\n\t\t\t\tchildren: []\n\t\t\t});\n\t\t\telse if (structure === \"classic\") lines.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: \"\\n\"\n\t\t\t});\n\t\t}\n\t\tlet lineNode = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { class: \"line\" },\n\t\t\tchildren: []\n\t\t};\n\t\tlet col = 0;\n\t\tfor (const token of line) {\n\t\t\tlet tokenNode = {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"span\",\n\t\t\t\tproperties: { ...token.htmlAttrs },\n\t\t\t\tchildren: [{\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\tvalue: token.content\n\t\t\t\t}]\n\t\t\t};\n\t\t\tconst style = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n\t\t\tif (style) tokenNode.properties.style = style;\n\t\t\tfor (const transformer of transformers) tokenNode = transformer?.span?.call(context, tokenNode, idx + 1, col, lineNode, token) || tokenNode;\n\t\t\tif (structure === \"inline\") root.children.push(tokenNode);\n\t\t\telse if (structure === \"classic\") lineNode.children.push(tokenNode);\n\t\t\tcol += token.content.length;\n\t\t}\n\t\tif (structure === \"classic\") {\n\t\t\tfor (const transformer of transformers) lineNode = transformer?.line?.call(context, lineNode, idx + 1) || lineNode;\n\t\t\tlineNodes.push(lineNode);\n\t\t\tlines.push(lineNode);\n\t\t} else if (structure === \"inline\") lineNodes.push(lineNode);\n\t});\n\tif (structure === \"classic\") {\n\t\tfor (const transformer of transformers) codeNode = transformer?.code?.call(context, codeNode) || codeNode;\n\t\tpreNode.children.push(codeNode);\n\t\tfor (const transformer of transformers) preNode = transformer?.pre?.call(context, preNode) || preNode;\n\t\troot.children.push(preNode);\n\t} else if (structure === \"inline\") {\n\t\tconst syntheticLines = [];\n\t\tlet currentLine = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"span\",\n\t\t\tproperties: { class: \"line\" },\n\t\t\tchildren: []\n\t\t};\n\t\tfor (const child of root.children) if (child.type === \"element\" && child.tagName === \"br\") {\n\t\t\tsyntheticLines.push(currentLine);\n\t\t\tcurrentLine = {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"span\",\n\t\t\t\tproperties: { class: \"line\" },\n\t\t\t\tchildren: []\n\t\t\t};\n\t\t} else if (child.type === \"element\" || child.type === \"text\") currentLine.children.push(child);\n\t\tsyntheticLines.push(currentLine);\n\t\tlet transformedCode = {\n\t\t\ttype: \"element\",\n\t\t\ttagName: \"code\",\n\t\t\tproperties: {},\n\t\t\tchildren: syntheticLines\n\t\t};\n\t\tfor (const transformer of transformers) transformedCode = transformer?.code?.call(context, transformedCode) || transformedCode;\n\t\troot.children = [];\n\t\tfor (let i = 0; i < transformedCode.children.length; i++) {\n\t\t\tif (i > 0) root.children.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttagName: \"br\",\n\t\t\t\tproperties: {},\n\t\t\t\tchildren: []\n\t\t\t});\n\t\t\tconst line = transformedCode.children[i];\n\t\t\tif (line.type === \"element\") root.children.push(...line.children);\n\t\t}\n\t}\n\tlet result = root;\n\tfor (const transformer of transformers) result = transformer?.root?.call(context, result) || result;\n\tif (grammarState) setLastGrammarStateToMap(result, grammarState);\n\treturn result;\n}\nfunction mergeWhitespaceTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\tconst newLine = [];\n\t\tlet carryOnContent = \"\";\n\t\tlet firstOffset;\n\t\tline.forEach((token, idx) => {\n\t\t\tconst couldMerge = !(token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough));\n\t\t\tif (couldMerge && token.content.match(/^\\s+$/) && line[idx + 1]) {\n\t\t\t\tif (firstOffset === void 0) firstOffset = token.offset;\n\t\t\t\tcarryOnContent += token.content;\n\t\t\t} else if (carryOnContent) {\n\t\t\t\tif (couldMerge) newLine.push({\n\t\t\t\t\t...token,\n\t\t\t\t\toffset: firstOffset,\n\t\t\t\t\tcontent: carryOnContent + token.content\n\t\t\t\t});\n\t\t\t\telse newLine.push({\n\t\t\t\t\tcontent: carryOnContent,\n\t\t\t\t\toffset: firstOffset\n\t\t\t\t}, token);\n\t\t\t\tfirstOffset = void 0;\n\t\t\t\tcarryOnContent = \"\";\n\t\t\t} else newLine.push(token);\n\t\t});\n\t\treturn newLine;\n\t});\n}\nfunction splitWhitespaceTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\treturn line.flatMap((token) => {\n\t\t\tif (token.content.match(/^\\s+$/)) return token;\n\t\t\tconst match = token.content.match(/^(\\s*)(.*?)(\\s*)$/);\n\t\t\tif (!match) return token;\n\t\t\tconst [, leading, content, trailing] = match;\n\t\t\tif (!leading && !trailing) return token;\n\t\t\tconst expanded = [{\n\t\t\t\t...token,\n\t\t\t\toffset: token.offset + leading.length,\n\t\t\t\tcontent\n\t\t\t}];\n\t\t\tif (leading) expanded.unshift({\n\t\t\t\tcontent: leading,\n\t\t\t\toffset: token.offset\n\t\t\t});\n\t\t\tif (trailing) expanded.push({\n\t\t\t\tcontent: trailing,\n\t\t\t\toffset: token.offset + leading.length + content.length\n\t\t\t});\n\t\t\treturn expanded;\n\t\t});\n\t});\n}\nfunction mergeAdjacentStyledTokens(tokens) {\n\treturn tokens.map((line) => {\n\t\tconst newLine = [];\n\t\tfor (const token of line) {\n\t\t\tif (newLine.length === 0) {\n\t\t\t\tnewLine.push({ ...token });\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst prevToken = newLine[newLine.length - 1];\n\t\t\tconst prevStyle = stringifyTokenStyle(prevToken.htmlStyle || getTokenStyleObject(prevToken));\n\t\t\tconst currentStyle = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n\t\t\tconst isPrevDecorated = prevToken.fontStyle && (prevToken.fontStyle & FontStyle.Underline || prevToken.fontStyle & FontStyle.Strikethrough);\n\t\t\tconst isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n\t\t\tif (!isPrevDecorated && !isDecorated && prevStyle === currentStyle) prevToken.content += token.content;\n\t\t\telse newLine.push({ ...token });\n\t\t}\n\t\treturn newLine;\n\t});\n}\n\n//#endregion\n//#region src/highlight/code-to-html.ts\nconst hastToHtml = toHtml;\n/**\n* Get highlighted code in HTML.\n*/\nfunction codeToHtml(primitive, code, options) {\n\tconst context = {\n\t\tmeta: {},\n\t\toptions,\n\t\tcodeToHast: (_code, _options) => codeToHast(primitive, _code, _options),\n\t\tcodeToTokens: (_code, _options) => codeToTokens(primitive, _code, _options)\n\t};\n\tlet result = hastToHtml(codeToHast(primitive, code, options, context));\n\tfor (const transformer of getTransformers(options)) result = transformer.postprocess?.call(context, result, options) || result;\n\treturn result;\n}\n\n//#endregion\n//#region src/constructors/highlighter.ts\n/**\n* Create a Shiki core highlighter instance, with no languages or themes bundled.\n* Wasm and each language and theme must be loaded manually.\n*\n* @see http://shiki.style/guide/bundles#fine-grained-bundle\n*/\nasync function createHighlighterCore(options) {\n\tconst primitive = await createShikiPrimitiveAsync$1(options);\n\treturn {\n\t\tgetLastGrammarState: (...args) => getLastGrammarState(primitive, ...args),\n\t\tcodeToTokensBase: (code, options) => codeToTokensBase(primitive, code, options),\n\t\tcodeToTokensWithThemes: (code, options) => codeToTokensWithThemes$1(primitive, code, options),\n\t\tcodeToTokens: (code, options) => codeToTokens(primitive, code, options),\n\t\tcodeToHast: (code, options) => codeToHast(primitive, code, options),\n\t\tcodeToHtml: (code, options) => codeToHtml(primitive, code, options),\n\t\tgetBundledLanguages: () => ({}),\n\t\tgetBundledThemes: () => ({}),\n\t\t...primitive,\n\t\tgetInternalContext: () => primitive\n\t};\n}\n/**\n* Create a Shiki core highlighter instance, with no languages or themes bundled.\n* Wasm and each language and theme must be loaded manually.\n*\n* Synchronous version of `createHighlighterCore`, which requires to provide the engine and all themes and languages upfront.\n*\n* @see http://shiki.style/guide/bundles#fine-grained-bundle\n*/\nfunction createHighlighterCoreSync(options) {\n\tconst internal = createShikiPrimitive$1(options);\n\treturn {\n\t\tgetLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n\t\tcodeToTokensBase: (code, options) => codeToTokensBase(internal, code, options),\n\t\tcodeToTokensWithThemes: (code, options) => codeToTokensWithThemes$1(internal, code, options),\n\t\tcodeToTokens: (code, options) => codeToTokens(internal, code, options),\n\t\tcodeToHast: (code, options) => codeToHast(internal, code, options),\n\t\tcodeToHtml: (code, options) => codeToHtml(internal, code, options),\n\t\tgetBundledLanguages: () => ({}),\n\t\tgetBundledThemes: () => ({}),\n\t\t...internal,\n\t\tgetInternalContext: () => internal\n\t};\n}\nfunction makeSingletonHighlighterCore(createHighlighter) {\n\tlet _shiki;\n\tasync function getSingletonHighlighterCore(options) {\n\t\tif (!_shiki) {\n\t\t\t_shiki = createHighlighter({\n\t\t\t\t...options,\n\t\t\t\tthemes: options.themes || [],\n\t\t\t\tlangs: options.langs || []\n\t\t\t});\n\t\t\treturn _shiki;\n\t\t} else {\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t}\n\t}\n\treturn getSingletonHighlighterCore;\n}\nconst getSingletonHighlighterCore = /* @__PURE__ */ makeSingletonHighlighterCore(createHighlighterCore);\n\n//#endregion\n//#region src/constructors/bundle-factory.ts\nfunction createBundledHighlighter(options) {\n\tconst bundledLanguages = options.langs;\n\tconst bundledThemes = options.themes;\n\tconst engine = options.engine;\n\tasync function createHighlighter(options) {\n\t\tfunction resolveLang(lang) {\n\t\t\tif (typeof lang === \"string\") {\n\t\t\t\tlang = options.langAlias?.[lang] || lang;\n\t\t\t\tif (isSpecialLang(lang)) return [];\n\t\t\t\tconst bundle = bundledLanguages[lang];\n\t\t\t\tif (!bundle) throw new ShikiError$1(`Language \\`${lang}\\` is not included in this bundle. You may want to load it from external source.`);\n\t\t\t\treturn bundle;\n\t\t\t}\n\t\t\treturn lang;\n\t\t}\n\t\tfunction resolveTheme(theme) {\n\t\t\tif (isSpecialTheme(theme)) return \"none\";\n\t\t\tif (typeof theme === \"string\") {\n\t\t\t\tconst bundle = bundledThemes[theme];\n\t\t\t\tif (!bundle) throw new ShikiError$1(`Theme \\`${theme}\\` is not included in this bundle. You may want to load it from external source.`);\n\t\t\t\treturn bundle;\n\t\t\t}\n\t\t\treturn theme;\n\t\t}\n\t\tconst _themes = (options.themes ?? []).map((i) => resolveTheme(i));\n\t\tconst langs = (options.langs ?? []).map((i) => resolveLang(i));\n\t\tconst core = await createHighlighterCore({\n\t\t\tengine: options.engine ?? engine(),\n\t\t\t...options,\n\t\t\tthemes: _themes,\n\t\t\tlangs\n\t\t});\n\t\treturn {\n\t\t\t...core,\n\t\t\tloadLanguage(...langs) {\n\t\t\t\treturn core.loadLanguage(...langs.map(resolveLang));\n\t\t\t},\n\t\t\tloadTheme(...themes) {\n\t\t\t\treturn core.loadTheme(...themes.map(resolveTheme));\n\t\t\t},\n\t\t\tgetBundledLanguages() {\n\t\t\t\treturn bundledLanguages;\n\t\t\t},\n\t\t\tgetBundledThemes() {\n\t\t\t\treturn bundledThemes;\n\t\t\t}\n\t\t};\n\t}\n\treturn createHighlighter;\n}\nfunction makeSingletonHighlighter(createHighlighter) {\n\tlet _shiki;\n\tasync function getSingletonHighlighter(options = {}) {\n\t\tif (!_shiki) {\n\t\t\t_shiki = createHighlighter({\n\t\t\t\t...options,\n\t\t\t\tthemes: [],\n\t\t\t\tlangs: []\n\t\t\t});\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t} else {\n\t\t\tconst s = await _shiki;\n\t\t\tawait Promise.all([s.loadTheme(...options.themes || []), s.loadLanguage(...options.langs || [])]);\n\t\t\treturn s;\n\t\t}\n\t}\n\treturn getSingletonHighlighter;\n}\nfunction createSingletonShorthands(createHighlighter, config) {\n\tconst getSingletonHighlighter = makeSingletonHighlighter(createHighlighter);\n\tasync function get(code, options) {\n\t\tconst shiki = await getSingletonHighlighter({\n\t\t\tlangs: [options.lang],\n\t\t\tthemes: \"theme\" in options ? [options.theme] : Object.values(options.themes)\n\t\t});\n\t\tconst langs = await config?.guessEmbeddedLanguages?.(code, options.lang, shiki);\n\t\tif (langs) await shiki.loadLanguage(...langs);\n\t\treturn shiki;\n\t}\n\treturn {\n\t\tgetSingletonHighlighter(options) {\n\t\t\treturn getSingletonHighlighter(options);\n\t\t},\n\t\tasync codeToHtml(code, options) {\n\t\t\treturn (await get(code, options)).codeToHtml(code, options);\n\t\t},\n\t\tasync codeToHast(code, options) {\n\t\t\treturn (await get(code, options)).codeToHast(code, options);\n\t\t},\n\t\tasync codeToTokens(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokens(code, options);\n\t\t},\n\t\tasync codeToTokensBase(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokensBase(code, options);\n\t\t},\n\t\tasync codeToTokensWithThemes(code, options) {\n\t\t\treturn (await get(code, options)).codeToTokensWithThemes(code, options);\n\t\t},\n\t\tasync getLastGrammarState(code, options) {\n\t\t\treturn (await getSingletonHighlighter({\n\t\t\t\tlangs: [options.lang],\n\t\t\t\tthemes: [options.theme]\n\t\t\t})).getLastGrammarState(code, options);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/theme-css-variables.ts\n/**\n* A factory function to create a css-variable-based theme\n*\n* @see https://shiki.style/guide/theme-colors#css-variables-theme\n*/\nfunction createCssVariablesTheme(options = {}) {\n\tconst { name = \"css-variables\", variablePrefix = \"--shiki-\", fontStyle = true } = options;\n\tconst variable = (name) => {\n\t\tif (options.variableDefaults?.[name]) return `var(${variablePrefix}${name}, ${options.variableDefaults[name]})`;\n\t\treturn `var(${variablePrefix}${name})`;\n\t};\n\tconst theme = {\n\t\tname,\n\t\ttype: \"dark\",\n\t\tcolors: {\n\t\t\t\"editor.foreground\": variable(\"foreground\"),\n\t\t\t\"editor.background\": variable(\"background\"),\n\t\t\t\"terminal.ansiBlack\": variable(\"ansi-black\"),\n\t\t\t\"terminal.ansiRed\": variable(\"ansi-red\"),\n\t\t\t\"terminal.ansiGreen\": variable(\"ansi-green\"),\n\t\t\t\"terminal.ansiYellow\": variable(\"ansi-yellow\"),\n\t\t\t\"terminal.ansiBlue\": variable(\"ansi-blue\"),\n\t\t\t\"terminal.ansiMagenta\": variable(\"ansi-magenta\"),\n\t\t\t\"terminal.ansiCyan\": variable(\"ansi-cyan\"),\n\t\t\t\"terminal.ansiWhite\": variable(\"ansi-white\"),\n\t\t\t\"terminal.ansiBrightBlack\": variable(\"ansi-bright-black\"),\n\t\t\t\"terminal.ansiBrightRed\": variable(\"ansi-bright-red\"),\n\t\t\t\"terminal.ansiBrightGreen\": variable(\"ansi-bright-green\"),\n\t\t\t\"terminal.ansiBrightYellow\": variable(\"ansi-bright-yellow\"),\n\t\t\t\"terminal.ansiBrightBlue\": variable(\"ansi-bright-blue\"),\n\t\t\t\"terminal.ansiBrightMagenta\": variable(\"ansi-bright-magenta\"),\n\t\t\t\"terminal.ansiBrightCyan\": variable(\"ansi-bright-cyan\"),\n\t\t\t\"terminal.ansiBrightWhite\": variable(\"ansi-bright-white\")\n\t\t},\n\t\ttokenColors: [\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"keyword.operator.accessor\",\n\t\t\t\t\t\"meta.group.braces.round.function.arguments\",\n\t\t\t\t\t\"meta.template.expression\",\n\t\t\t\t\t\"markup.fenced_code meta.embedded.block\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"foreground\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"emphasis\",\n\t\t\t\tsettings: { fontStyle: \"italic\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"strong\",\n\t\t\t\t\t\"markup.heading.markdown\",\n\t\t\t\t\t\"markup.bold.markdown\"\n\t\t\t\t],\n\t\t\t\tsettings: { fontStyle: \"bold\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.italic.markdown\"],\n\t\t\t\tsettings: { fontStyle: \"italic\" }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"meta.link.inline.markdown\",\n\t\t\t\tsettings: {\n\t\t\t\t\tfontStyle: \"underline\",\n\t\t\t\t\tforeground: variable(\"token-link\")\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"markup.fenced_code\",\n\t\t\t\t\t\"markup.inline\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-string\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"comment\", \"string.quoted.docstring.multi\"],\n\t\t\t\tsettings: { foreground: variable(\"token-comment\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"constant.numeric\",\n\t\t\t\t\t\"constant.language\",\n\t\t\t\t\t\"constant.other.placeholder\",\n\t\t\t\t\t\"constant.character.format.placeholder\",\n\t\t\t\t\t\"variable.language.this\",\n\t\t\t\t\t\"variable.other.object\",\n\t\t\t\t\t\"variable.other.class\",\n\t\t\t\t\t\"variable.other.constant\",\n\t\t\t\t\t\"meta.property-name\",\n\t\t\t\t\t\"meta.property-value\",\n\t\t\t\t\t\"support\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-constant\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"keyword\",\n\t\t\t\t\t\"storage.modifier\",\n\t\t\t\t\t\"storage.type\",\n\t\t\t\t\t\"storage.control.clojure\",\n\t\t\t\t\t\"entity.name.function.clojure\",\n\t\t\t\t\t\"entity.name.tag.yaml\",\n\t\t\t\t\t\"support.function.node\",\n\t\t\t\t\t\"support.type.property-name.json\",\n\t\t\t\t\t\"punctuation.separator.key-value\",\n\t\t\t\t\t\"punctuation.definition.template-expression\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-keyword\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: \"variable.parameter.function\",\n\t\t\t\tsettings: { foreground: variable(\"token-parameter\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"support.function\",\n\t\t\t\t\t\"entity.name.type\",\n\t\t\t\t\t\"entity.other.inherited-class\",\n\t\t\t\t\t\"meta.function-call\",\n\t\t\t\t\t\"meta.instance.constructor\",\n\t\t\t\t\t\"entity.other.attribute-name\",\n\t\t\t\t\t\"entity.name.function\",\n\t\t\t\t\t\"constant.keyword.clojure\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-function\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"entity.name.tag\",\n\t\t\t\t\t\"string.quoted\",\n\t\t\t\t\t\"string.regexp\",\n\t\t\t\t\t\"string.interpolated\",\n\t\t\t\t\t\"string.template\",\n\t\t\t\t\t\"string.unquoted.plain.out.yaml\",\n\t\t\t\t\t\"keyword.other.template\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-string-expression\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"punctuation.definition.arguments\",\n\t\t\t\t\t\"punctuation.definition.dict\",\n\t\t\t\t\t\"punctuation.separator\",\n\t\t\t\t\t\"meta.function-call.arguments\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-punctuation\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.underline.link\", \"punctuation.definition.metadata.markdown\"],\n\t\t\t\tsettings: { foreground: variable(\"token-link\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"beginning.punctuation.definition.list.markdown\"],\n\t\t\t\tsettings: { foreground: variable(\"token-string\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"punctuation.definition.string.begin.markdown\",\n\t\t\t\t\t\"punctuation.definition.string.end.markdown\",\n\t\t\t\t\t\"string.other.link.title.markdown\",\n\t\t\t\t\t\"string.other.link.description.markdown\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-keyword\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"markup.inserted\",\n\t\t\t\t\t\"meta.diff.header.to-file\",\n\t\t\t\t\t\"punctuation.definition.inserted\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-inserted\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\n\t\t\t\t\t\"markup.deleted\",\n\t\t\t\t\t\"meta.diff.header.from-file\",\n\t\t\t\t\t\"punctuation.definition.deleted\"\n\t\t\t\t],\n\t\t\t\tsettings: { foreground: variable(\"token-deleted\") }\n\t\t\t},\n\t\t\t{\n\t\t\t\tscope: [\"markup.changed\", \"punctuation.definition.changed\"],\n\t\t\t\tsettings: { foreground: variable(\"token-changed\") }\n\t\t\t}\n\t\t]\n\t};\n\tif (!fontStyle) theme.tokenColors = theme.tokenColors?.map((tokenColor) => {\n\t\tif (tokenColor.settings?.fontStyle) delete tokenColor.settings.fontStyle;\n\t\treturn tokenColor;\n\t});\n\treturn theme;\n}\n\n//#endregion\nexport { ShikiError, addClassToHast, applyColorReplacements, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createBundledHighlighter, createCssVariablesTheme, createHighlighterCore, createHighlighterCoreSync, createPositionConverter, createShikiInternal, createShikiInternalSync, createShikiPrimitive, createShikiPrimitiveAsync, createSingletonShorthands, flatTokenVariants, getLastGrammarState, getSingletonHighlighterCore, getTokenStyleObject, guessEmbeddedLanguages, hastToHtml, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, makeSingletonHighlighter, makeSingletonHighlighterCore, normalizeGetter, normalizeTheme, resolveColorReplacements, splitLines, splitToken, splitTokens, stringifyTokenStyle, toArray, tokenizeAnsiWithTheme, tokenizeWithTheme, tokensToHast, transformerDecorations };", "//#region src/scanner.ts\nconst MAX = 4294967295;\nvar JavaScriptScanner = class {\n\tregexps;\n\tconstructor(patterns, options = {}) {\n\t\tthis.patterns = patterns;\n\t\tthis.options = options;\n\t\tconst { forgiving = false, cache, regexConstructor } = options;\n\t\tif (!regexConstructor) throw new Error(\"Option `regexConstructor` is not provided\");\n\t\tthis.regexps = patterns.map((p) => {\n\t\t\tif (typeof p !== \"string\") return p;\n\t\t\tconst cached = cache?.get(p);\n\t\t\tif (cached) {\n\t\t\t\tif (cached instanceof RegExp) return cached;\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow cached;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst regex = regexConstructor(p);\n\t\t\t\tcache?.set(p, regex);\n\t\t\t\treturn regex;\n\t\t\t} catch (e) {\n\t\t\t\tcache?.set(p, e);\n\t\t\t\tif (forgiving) return null;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t});\n\t}\n\tfindNextMatchSync(string, startPosition, _options) {\n\t\tconst str = typeof string === \"string\" ? string : string.content;\n\t\tconst pending = [];\n\t\tfunction toResult(index, match, offset = 0) {\n\t\t\treturn {\n\t\t\t\tindex,\n\t\t\t\tcaptureIndices: match.indices.map((indice) => {\n\t\t\t\t\tif (indice == null) return {\n\t\t\t\t\t\tstart: MAX,\n\t\t\t\t\t\tend: MAX,\n\t\t\t\t\t\tlength: 0\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstart: indice[0] + offset,\n\t\t\t\t\t\tend: indice[1] + offset,\n\t\t\t\t\t\tlength: indice[1] - indice[0]\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t\tfor (let i = 0; i < this.regexps.length; i++) {\n\t\t\tconst regexp = this.regexps[i];\n\t\t\tif (!regexp) continue;\n\t\t\ttry {\n\t\t\t\tregexp.lastIndex = startPosition;\n\t\t\t\tconst match = regexp.exec(str);\n\t\t\t\tif (!match) continue;\n\t\t\t\tif (match.index === startPosition) return toResult(i, match, 0);\n\t\t\t\tpending.push([\n\t\t\t\t\ti,\n\t\t\t\t\tmatch,\n\t\t\t\t\t0\n\t\t\t\t]);\n\t\t\t} catch (e) {\n\t\t\t\tif (this.options.forgiving) continue;\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\t\tif (pending.length) {\n\t\t\tconst minIndex = Math.min(...pending.map((m) => m[1].index));\n\t\t\tfor (const [i, match, offset] of pending) if (match.index === minIndex) return toResult(i, match, offset);\n\t\t}\n\t\treturn null;\n\t}\n};\n\n//#endregion\nexport { JavaScriptScanner as t };", "function cpOf(char: string): number {\n // Count code point length\n if ([...char].length !== 1) {\n throw new Error(`Expected \"${char}\" to be a single code point`);\n }\n return char.codePointAt(0)!;\n}\n\nfunction getOrInsert<Key, Value>(map: Map<Key, Value>, key: Key, defaultValue: Value): Value {\n if (!map.has(key)) {\n map.set(key, defaultValue);\n }\n return map.get(key)!;\n}\n\nconst PosixClassNames = new Set([\n 'alnum',\n 'alpha',\n 'ascii',\n 'blank',\n 'cntrl',\n 'digit',\n 'graph',\n 'lower',\n 'print',\n 'punct',\n 'space',\n 'upper',\n 'word',\n 'xdigit',\n]);\n\nconst r = String.raw;\n\nfunction throwIfNullish<Value>(value: Value, msg?: string): NonNullable<Value> {\n if (value == null) {\n throw new Error(msg ?? 'Value expected');\n }\n return value;\n}\n\nexport {\n cpOf,\n getOrInsert,\n PosixClassNames,\n r,\n throwIfNullish,\n};\n", "import {cpOf, PosixClassNames, r, throwIfNullish} from '../utils.js';\n\ntype Token =\n AlternatorToken |\n AssertionToken |\n BackreferenceToken |\n CharacterToken |\n CharacterClassCloseToken |\n CharacterClassHyphenToken |\n CharacterClassIntersectorToken |\n CharacterClassOpenToken |\n CharacterSetToken |\n DirectiveToken |\n GroupCloseToken |\n GroupOpenToken |\n NamedCalloutToken |\n QuantifierToken |\n SubroutineToken;\n\ntype IntermediateToken =\n EscapedNumberToken;\n\ntype TokenCharacterSetKind =\n 'any' |\n 'digit' |\n 'dot' |\n 'hex' |\n 'newline' |\n 'posix' |\n 'property' |\n 'space' |\n 'text_segment' |\n 'word';\n\ntype TokenDirectiveKind =\n 'flags' |\n 'keep';\n\ntype TokenGroupOpenKind =\n 'absence_repeater' |\n 'atomic' |\n 'capturing' |\n 'group' |\n 'lookahead' |\n 'lookbehind';\n\ntype TokenQuantifierKind =\n 'greedy' |\n 'lazy' |\n 'possessive';\n\ntype TokenNamedCalloutKind =\n 'count' |\n 'cmp' |\n 'error' |\n 'fail' |\n 'max' |\n 'mismatch' |\n 'skip' |\n 'total_count' |\n 'custom';\n\nconst charClassOpenPattern = r`\\[\\^?`;\nconst sharedEscapesPattern = `${\n // Control char\n 'c.? | C(?:-.?)?'\n}|${\n // Unicode property; Onig considers `\\p` an identity escape, but e.g. `\\p{`, `\\p{ ^L}`, and\n // `\\p{gc=L}` are invalid\n r`[pP]\\{(?:\\^?[-\\x20_]*[A-Za-z][-\\x20\\w]*\\})?`\n}|${\n // Hex encoded byte sequence; attempt match before other `\\xNN` hex char\n r`x[89A-Fa-f]\\p{AHex}(?:\\\\x[89A-Fa-f]\\p{AHex})*`\n}|${\n // Hex char\n r`u(?:\\p{AHex}{4})? | x\\{[^\\}]*\\}? | x\\p{AHex}{0,2}`\n}|${\n // Enclosed octal code point\n r`o\\{[^\\}]*\\}?`\n}|${\n // Escaped number\n r`\\d{1,3}`\n}`;\n// Even with flag x, Onig doesn't allow whitespace to separate a quantifier from the `?` or `+`\n// that makes it lazy or possessive. Possessive suffixes don't apply to interval quantifiers\nconst quantifierRe = /[?*+][?+]?|\\{(?:\\d+(?:,\\d*)?|,\\d+)\\}\\??/;\nconst tokenRe = new RegExp(r`\n \\\\ (?:\n ${sharedEscapesPattern}\n | [gk]<[^>]*>?\n | [gk]'[^']*'?\n | .\n )\n | \\( (?:\n \\? (?:\n [:=!>({]\n | <[=!]\n | <[^>]*>\n | '[^']*'\n | ~\\|?\n | #(?:[^)\\\\]|\\\\.?)*\n | [^:)]*[:)]\n )?\n | \\*[^\\)]*\\)?\n )?\n | (?:${quantifierRe.source})+\n | ${charClassOpenPattern}\n | .\n`.replace(/\\s+/g, ''), 'gsu');\nconst charClassTokenRe = new RegExp(r`\n \\\\ (?:\n ${sharedEscapesPattern}\n | .\n )\n | \\[:(?:\\^?\\p{Alpha}+|\\^):\\]\n | ${charClassOpenPattern}\n | &&\n | .\n`.replace(/\\s+/g, ''), 'gsu');\n\ntype Context = {\n captureGroup: boolean;\n getCurrentModX(): boolean;\n numOpenGroups: number;\n popModX(): void;\n pushModX(isXOn: boolean): void;\n replaceCurrentModX(isXOn: boolean): void;\n singleline: boolean;\n};\n\ntype TokenizeOptions = {\n flags?: string;\n rules?: {\n captureGroup?: boolean;\n singleline?: boolean;\n };\n};\n\nfunction tokenize(pattern: string, options: TokenizeOptions = {}): {\n tokens: Array<Token>;\n flags: FlagProperties;\n} {\n const opts = {\n flags: '',\n ...options,\n rules: {\n captureGroup: false, // `ONIG_OPTION_CAPTURE_GROUP`\n singleline: false, // `ONIG_OPTION_SINGLELINE`\n ...options.rules,\n },\n };\n if (typeof pattern !== 'string') {\n throw new Error('String expected as pattern');\n }\n const flagProperties = getFlagProperties(opts.flags);\n const xStack = [flagProperties.extended];\n const context: Context = {\n captureGroup: opts.rules.captureGroup,\n // Always at least has the top-level flag x\n getCurrentModX() {return xStack.at(-1)!},\n numOpenGroups: 0,\n popModX() {xStack.pop()},\n pushModX(isXOn) {xStack.push(isXOn)},\n replaceCurrentModX(isXOn) {xStack[xStack.length - 1] = isXOn},\n singleline: opts.rules.singleline,\n };\n let tokens: Array<Token | IntermediateToken> = [];\n let match: RegExpExecArray | null;\n tokenRe.lastIndex = 0;\n while ((match = tokenRe.exec(pattern))) {\n const result = getTokenWithDetails(context, pattern, match[0], tokenRe.lastIndex);\n if (result.tokens) {\n tokens.push(...result.tokens);\n } else if (result.token) {\n tokens.push(result.token);\n }\n if (result.lastIndex !== undefined) {\n tokenRe.lastIndex = result.lastIndex;\n }\n }\n\n const potentialUnnamedCaptureTokens: Array<GroupOpenToken> = [];\n let numNamedAndOptInUnnamedCaptures = 0;\n tokens.filter(t => t.type === 'GroupOpen').forEach(t => {\n if (t.kind === 'capturing') {\n t.number = ++numNamedAndOptInUnnamedCaptures;\n } else if (t.raw === '(') {\n potentialUnnamedCaptureTokens.push(t);\n }\n });\n // Enable unnamed capturing groups if no named captures (when `captureGroup` not enabled)\n if (!numNamedAndOptInUnnamedCaptures) {\n potentialUnnamedCaptureTokens.forEach((t, i) => {\n t.kind = 'capturing';\n t.number = i + 1;\n });\n }\n const numCaptures = numNamedAndOptInUnnamedCaptures || potentialUnnamedCaptureTokens.length;\n // Can now split escaped nums accurately, accounting for number of captures\n const tokensWithoutIntermediate = tokens.map(\n t => t.type === 'EscapedNumber' ? splitEscapedNumberToken(t, numCaptures) : t\n ).flat();\n\n return {\n tokens: tokensWithoutIntermediate,\n flags: flagProperties,\n };\n}\n\nfunction getTokenWithDetails(context: Context, pattern: string, m: string, lastIndex: number): {\n token: Token | IntermediateToken;\n tokens?: never;\n lastIndex?: number;\n} | {\n token?: never;\n tokens: Array<Token | IntermediateToken>;\n lastIndex?: number;\n} | {\n token?: never;\n tokens?: never;\n lastIndex: number;\n} {\n const [m0, m1] = m;\n\n if (m === '[' || m === '[^') {\n const result = getAllTokensForCharClass(pattern, m, lastIndex);\n return {\n // Array of all of the char class's tokens\n tokens: result.tokens,\n // Jump forward to the end of the char class\n lastIndex: result.lastIndex,\n };\n }\n\n if (m0 === '\\\\') {\n if ('AbBGyYzZ'.includes(m1)) {\n return {\n token: createAssertionToken(m, m),\n };\n }\n if (/^\\\\g[<']/.test(m)) {\n if (!/^\\\\g(?:<[^>]+>|'[^']+')$/.test(m)) {\n throw new Error(`Invalid group name \"${m}\"`);\n }\n return {\n token: createSubroutineToken(m),\n };\n }\n if (/^\\\\k[<']/.test(m)) {\n if (!/^\\\\k(?:<[^>]+>|'[^']+')$/.test(m)) {\n throw new Error(`Invalid group name \"${m}\"`);\n }\n return {\n token: createBackreferenceToken(m),\n };\n }\n if (m1 === 'K') {\n return {\n token: createDirectiveToken('keep', m),\n };\n }\n if (m1 === 'N' || m1 === 'R') {\n return {\n token: createCharacterSetToken('newline', m, {\n // `\\N` and `\\R` are not actually opposites since the former only excludes `\\n`\n negate: m1 === 'N',\n }),\n };\n }\n if (m1 === 'O') {\n return {\n token: createCharacterSetToken('any', m),\n };\n }\n if (m1 === 'X') {\n return {\n token: createCharacterSetToken('text_segment', m),\n };\n }\n // Run last since it assumes an identity escape as final condition\n const result = tokenizeSharedEscape(m, {inCharClass: false});\n return Array.isArray(result) ? {tokens: result} : {token: result};\n }\n\n if (m0 === '(') {\n if (m1 === '*') {\n return {\n token: tokenizeNamedCallout(m),\n };\n }\n if (m === '(?{') {\n throw new Error(`Unsupported callout \"${m}\"`);\n }\n // Comment group\n if (m.startsWith('(?#')) {\n // Everything except the closing unescaped `)` is included in the match\n if (pattern[lastIndex] !== ')') {\n throw new Error('Unclosed comment group \"(?#\"');\n }\n return {\n // Jump forward to after the closing paren\n lastIndex: lastIndex + 1,\n };\n }\n // Flag modifier (directive or group opener)\n if (/^\\(\\?[-imx]+[:)]$/.test(m)) {\n return {\n token: tokenizeFlagModifier(m, context),\n };\n }\n // --- Remaining group types all reuse current flag x status ---\n context.pushModX(context.getCurrentModX());\n context.numOpenGroups++;\n if (\n // Unnamed capture if no named captures present and `captureGroup` not enabled, else\n // noncapturing group\n (m === '(' && !context.captureGroup) ||\n // Noncapturing group\n m === '(?:'\n ) {\n return {\n // For `(`, will later change to `capturing` and add `number` prop if no named captures\n token: createGroupOpenToken('group', m),\n };\n }\n // Atomic group\n if (m === '(?>') {\n return {\n token: createGroupOpenToken('atomic', m),\n };\n }\n // Lookaround\n if (m === '(?=' || m === '(?!' || m === '(?<=' || m === '(?<!') {\n return {\n token: createGroupOpenToken(m[2] === '<' ? 'lookbehind' : 'lookahead', m, {\n negate: m.endsWith('!'),\n }),\n };\n }\n // Unnamed capture when `captureGroup` enabled, or named capture (checked after lookbehind due\n // to similar syntax)\n if (\n (m === '(' && context.captureGroup) ||\n (m.startsWith('(?<') && m.endsWith('>')) ||\n (m.startsWith(\"(?'\") && m.endsWith(\"'\"))\n ) {\n return {\n token: createGroupOpenToken('capturing', m, {\n // Will add `number` prop in a second pass\n ...(m !== '(' && {name: m.slice(3, -1)}),\n }),\n };\n }\n if (m.startsWith('(?~')) {\n if (m === '(?~|') {\n throw new Error(`Unsupported absence function kind \"${m}\"`);\n }\n return {\n token: createGroupOpenToken('absence_repeater', m),\n };\n }\n if (m === '(?(') {\n // TODO: Add support\n throw new Error(`Unsupported conditional \"${m}\"`);\n }\n throw new Error(`Invalid or unsupported group option \"${m}\"`);\n }\n if (m === ')') {\n context.popModX();\n context.numOpenGroups--;\n if (context.numOpenGroups < 0) {\n throw new Error('Unmatched \")\"');\n }\n return {\n token: createGroupCloseToken(m),\n };\n }\n\n if (context.getCurrentModX()) {\n if (m === '#') {\n // Onig's only line break char is line feed\n const end = pattern.indexOf('\\n', lastIndex);\n return {\n // Jump forward to the end of the comment\n lastIndex: end === -1 ? pattern.length : end,\n };\n }\n if (/^\\s$/.test(m)) {\n const re = /\\s+/y;\n re.lastIndex = lastIndex;\n const rest = re.exec(pattern);\n return {\n // Jump forward to the end of the whitespace\n lastIndex: rest ? re.lastIndex : lastIndex,\n };\n }\n }\n\n if (m === '.') {\n return {\n token: createCharacterSetToken('dot', m),\n };\n }\n\n if (m === '^' || m === '$') {\n const kind = context.singleline ? {\n '^': r`\\A`,\n '$': r`\\Z`,\n }[m] : m;\n return {\n token: createAssertionToken(kind, m),\n };\n }\n\n if (m === '|') {\n return {\n token: createAlternatorToken(m),\n };\n }\n\n if (quantifierRe.test(m)) {\n return {\n tokens: splitQuantifierMatch(m),\n };\n }\n\n // `cpOf` asserts that it's a single code point\n return {\n token: createCharacterToken(cpOf(m), m),\n };\n}\n\nfunction getAllTokensForCharClass(pattern: string, opener: CharacterClassOpener, lastIndex: number): {\n tokens: Array<Token | IntermediateToken>;\n lastIndex: number;\n} {\n const tokens: Array<Token | IntermediateToken> = [createCharacterClassOpenToken(opener[1] === '^', opener)];\n let numCharClassesOpen = 1;\n let match: RegExpExecArray | null;\n charClassTokenRe.lastIndex = lastIndex;\n while ((match = charClassTokenRe.exec(pattern))) {\n const m = match[0];\n // Start of nested char class\n // POSIX classes are handled as a single token; not as a nested char class\n if (m[0] === '[' && m[1] !== ':') {\n numCharClassesOpen++;\n tokens.push(createCharacterClassOpenToken(m[1] === '^', m as CharacterClassOpener));\n } else if (m === ']') {\n // Always at least includes the char class opener\n if (tokens.at(-1)!.type === 'CharacterClassOpen') {\n // Allow unescaped `]` as leading char\n tokens.push(createCharacterToken(93, m));\n } else {\n numCharClassesOpen--;\n tokens.push(createCharacterClassCloseToken(m));\n if (!numCharClassesOpen) {\n break;\n }\n }\n } else {\n const result = tokenizeAnyTokenWithinCharClass(m);\n if (Array.isArray(result)) {\n tokens.push(...result);\n } else {\n tokens.push(result);\n }\n }\n }\n return {\n tokens,\n lastIndex: charClassTokenRe.lastIndex || pattern.length,\n };\n}\n\nfunction tokenizeAnyTokenWithinCharClass(raw: string): Token | IntermediateToken | Array<Token> {\n if (raw[0] === '\\\\') {\n // Assumes an identity escape as final condition\n return tokenizeSharedEscape(raw, {inCharClass: true});\n }\n // POSIX class: `[:name:]` or `[:^name:]`\n if (raw[0] === '[') {\n const posix = /\\[:(?<negate>\\^?)(?<name>[a-z]+):\\]/.exec(raw);\n if (!posix || !PosixClassNames.has(posix.groups!.name)) {\n throw new Error(`Invalid POSIX class \"${raw}\"`);\n }\n return createCharacterSetToken('posix', raw, {\n value: posix.groups!.name,\n negate: !!posix.groups!.negate,\n });\n }\n // Range (possibly invalid) or literal hyphen\n if (raw === '-') {\n return createCharacterClassHyphenToken(raw);\n }\n if (raw === '&&') {\n return createCharacterClassIntersectorToken(raw);\n }\n // `cpOf` asserts that it's a single code point\n return createCharacterToken(cpOf(raw), raw);\n}\n\n// Tokens shared by base syntax and char class syntax that start with `\\`\nfunction tokenizeSharedEscape(raw: string, {inCharClass}: {inCharClass: boolean}): Token | IntermediateToken | Array<Token> {\n const char1 = raw[1];\n if (char1 === 'c' || char1 === 'C') {\n return tokenizeControlCharacter(raw);\n }\n if ('dDhHsSwW'.includes(char1)) {\n return tokenizeShorthand(raw);\n }\n if (raw.startsWith(r`\\o{`)) {\n throw new Error(`Incomplete, invalid, or unsupported octal code point \"${raw}\"`);\n }\n if (/^\\\\[pP]\\{/.test(raw)) {\n if (raw.length === 3) {\n throw new Error(`Incomplete or invalid Unicode property \"${raw}\"`);\n }\n return tokenizeUnicodeProperty(raw);\n }\n // Hex UTF-8 encoded byte sequence\n if (/^\\\\x[89A-Fa-f]\\p{AHex}/u.test(raw)) {\n try {\n const bytes = raw.split(/\\\\x/).slice(1).map(hex => parseInt(hex, 16));\n const decoded = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true,\n }).decode(new Uint8Array(bytes));\n const encoder = new TextEncoder();\n const tokens = [...decoded].map(char => {\n // Since this regenerates `raw`, it might have different casing for hex A-F than the input\n const raw = [...encoder.encode(char)].map(byte => `\\\\x${byte.toString(16)}`).join('');\n return createCharacterToken(cpOf(char), raw);\n });\n return tokens;\n } catch {\n throw new Error(`Multibyte code \"${raw}\" incomplete or invalid in Oniguruma`);\n }\n }\n if (char1 === 'u' || char1 === 'x') {\n return createCharacterToken(getValidatedHexCharCode(raw), raw);\n }\n if (EscapeCharCodes.has(char1)) {\n return createCharacterToken(EscapeCharCodes.get(char1)!, raw);\n }\n // Escaped number: backref (possibly invalid), null, octal, or identity escape, possibly followed\n // by 1-2 literal digits\n if (/\\d/.test(char1)) {\n return createEscapedNumberToken(inCharClass, raw);\n }\n if (raw === '\\\\') {\n throw new Error(r`Incomplete escape \"\\\"`);\n }\n // Meta `\\M-x` and `\\M-\\C-x` are unsupported; avoid treating as an identity escape\n if (char1 === 'M') {\n // TODO: Add support. See:\n // - <github.com/kkos/oniguruma/blob/master/doc/SYNTAX.md#12-onig_syn_op2_esc_capital_m_bar_meta-enable-m-x>\n // - <github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/regparse.c#L4695>\n // - <github.com/ammar/regexp_parser/blob/8851030feda68223d74f502335fb254a20d77016/lib/regexp_parser/expression/classes/escape_sequence.rb#L75>\n throw new Error(`Unsupported meta \"${raw}\"`);\n }\n // Identity escape; count code point length\n if ([...raw].length === 2) {\n return createCharacterToken(raw.codePointAt(1)!, raw);\n }\n throw new Error(`Unexpected escape \"${raw}\"`);\n}\n\n// --------------------------------\n// --- Token creation and types ---\n// --------------------------------\n\ntype AlternatorToken = {\n type: 'Alternator';\n raw: '|';\n};\nfunction createAlternatorToken(raw: '|'): AlternatorToken {\n return {\n type: 'Alternator',\n raw,\n };\n}\n\ntype AssertionToken = {\n type: 'Assertion';\n kind: string;\n raw: string;\n};\nfunction createAssertionToken(kind: string, raw: string): AssertionToken {\n return {\n type: 'Assertion',\n kind,\n raw,\n };\n}\n\ntype BackreferenceToken = {\n type: 'Backreference';\n raw: string;\n};\nfunction createBackreferenceToken(raw: string): BackreferenceToken {\n return {\n type: 'Backreference',\n raw,\n };\n}\n\ntype CharacterToken = {\n type: 'Character';\n value: number;\n raw: string;\n};\nfunction createCharacterToken(value: number, raw: string): CharacterToken {\n return {\n type: 'Character',\n value,\n raw,\n };\n}\n\ntype CharacterClassCloseToken = {\n type: 'CharacterClassClose';\n raw: ']';\n};\nfunction createCharacterClassCloseToken(raw: ']'): CharacterClassCloseToken {\n return {\n type: 'CharacterClassClose',\n raw,\n };\n}\n\ntype CharacterClassHyphenToken = {\n type: 'CharacterClassHyphen';\n raw: '-';\n};\nfunction createCharacterClassHyphenToken(raw: '-'): CharacterClassHyphenToken {\n return {\n type: 'CharacterClassHyphen',\n raw,\n };\n}\n\ntype CharacterClassIntersectorToken = {\n type: 'CharacterClassIntersector';\n raw: '&&';\n};\nfunction createCharacterClassIntersectorToken(raw: '&&'): CharacterClassIntersectorToken {\n return {\n type: 'CharacterClassIntersector',\n raw,\n };\n}\n\ntype CharacterClassOpenToken = {\n type: 'CharacterClassOpen';\n negate: boolean;\n raw: CharacterClassOpener;\n};\ntype CharacterClassOpener = '[' | '[^';\nfunction createCharacterClassOpenToken(negate: boolean, raw: CharacterClassOpener): CharacterClassOpenToken {\n return {\n type: 'CharacterClassOpen',\n negate,\n raw,\n };\n}\n\ntype CharacterSetToken = {\n type: 'CharacterSet';\n kind: TokenCharacterSetKind;\n value?: string;\n negate?: boolean;\n raw: string;\n};\nfunction createCharacterSetToken(\n kind: TokenCharacterSetKind,\n raw: string,\n options: {\n value?: string;\n negate?: boolean;\n } = {}\n): CharacterSetToken {\n return {\n type: 'CharacterSet',\n kind,\n ...options,\n raw,\n };\n}\n\ntype DirectiveToken = {\n type: 'Directive';\n raw: string;\n} & ({\n kind: 'keep';\n flags?: never;\n} | {\n kind: 'flags';\n flags: FlagGroupModifiers;\n});\nfunction createDirectiveToken(kind: TokenDirectiveKind, raw: string, options: {flags?: FlagGroupModifiers} = {}): DirectiveToken {\n if (kind === 'keep') {\n return {\n type: 'Directive',\n kind,\n raw,\n };\n }\n return {\n type: 'Directive',\n kind,\n flags: throwIfNullish(options.flags),\n raw,\n };\n}\n\ntype EscapedNumberToken = {\n type: 'EscapedNumber';\n inCharClass: boolean;\n raw: string;\n};\n/**\nIntermediate representation only; will become a `Backreference` or one or more `Character`s.\n*/\nfunction createEscapedNumberToken(inCharClass: boolean, raw: string): EscapedNumberToken {\n return {\n type: 'EscapedNumber',\n inCharClass,\n raw,\n };\n}\n\ntype GroupCloseToken = {\n type: 'GroupClose';\n raw: ')';\n};\nfunction createGroupCloseToken(raw: ')'): GroupCloseToken {\n return {\n type: 'GroupClose',\n raw,\n };\n}\n\ntype GroupOpenToken = {\n type: 'GroupOpen';\n kind: TokenGroupOpenKind;\n flags?: FlagGroupModifiers;\n name?: string;\n number?: number;\n negate?: boolean;\n raw: string;\n};\nfunction createGroupOpenToken(\n kind: TokenGroupOpenKind,\n raw: string,\n options: {\n flags?: FlagGroupModifiers;\n name?: string;\n number?: number;\n negate?: boolean;\n } = {}\n): GroupOpenToken {\n return {\n type: 'GroupOpen',\n kind,\n ...options,\n raw,\n };\n}\n\ntype NamedCalloutToken = {\n type: 'NamedCallout';\n kind: TokenNamedCalloutKind;\n tag: string | null;\n arguments: Array<string | number> | null;\n raw: string;\n};\nfunction createNamedCalloutToken(\n kind: TokenNamedCalloutKind,\n tag: string | null,\n args: Array<string | number> | null,\n raw: string\n): NamedCalloutToken {\n return {\n type: 'NamedCallout',\n kind,\n tag,\n arguments: args,\n raw,\n };\n};\n\ntype QuantifierToken = {\n type: 'Quantifier';\n kind: TokenQuantifierKind;\n min: number;\n max: number;\n raw: string;\n};\nfunction createQuantifierToken(\n kind: TokenQuantifierKind,\n min: number,\n max: number,\n raw: string\n): QuantifierToken {\n return {\n type: 'Quantifier',\n kind,\n min,\n max,\n raw,\n };\n}\n\ntype SubroutineToken = {\n type: 'Subroutine';\n raw: string;\n};\nfunction createSubroutineToken(raw: string): SubroutineToken {\n return {\n type: 'Subroutine',\n raw,\n };\n}\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\ntype FlagProperties = {\n ignoreCase: boolean;\n dotAll: boolean;\n extended: boolean;\n digitIsAscii: boolean;\n posixIsAscii: boolean;\n spaceIsAscii: boolean;\n wordIsAscii: boolean;\n textSegmentMode: 'grapheme' | 'word' | null;\n};\n\ntype FlagGroupModifiers = {\n enable?: FlagGroupSwitches;\n disable?: FlagGroupSwitches;\n};\n\ntype FlagGroupSwitches = {\n ignoreCase?: true;\n dotAll?: true;\n extended?: true;\n};\n\nconst CalloutNames = new Set<Uppercase<Exclude<TokenNamedCalloutKind, 'custom'>>>([\n 'COUNT',\n 'CMP',\n 'ERROR',\n 'FAIL',\n 'MAX',\n 'MISMATCH',\n 'SKIP',\n 'TOTAL_COUNT',\n]);\n\nconst EscapeCharCodes = new Map([\n ['a', 7], // alert/bell (Not available in JS)\n ['b', 8], // backspace (only in char classes)\n ['e', 27], // escape (Not available in JS)\n ['f', 12], // form feed\n ['n', 10], // line feed\n ['r', 13], // carriage return\n ['t', 9], // horizontal tab\n ['v', 11], // vertical tab\n]);\n\n// Expects `\\cx` or `\\C-x`\nfunction tokenizeControlCharacter(raw: string): CharacterToken {\n const char = raw[1] === 'c' ? raw[2] : raw[3];\n if (!char || !/[A-Za-z]/.test(char)) {\n // Unlike JS, Onig allows any char to follow `\\c` or `\\C-`, but this is an extreme edge case\n // TODO: Add support. See:\n // - <github.com/kkos/oniguruma/blob/master/doc/SYNTAX.md#11-onig_syn_op2_esc_capital_c_bar_control-enable-c-x>\n // - <github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/regparse.c#L4695>\n throw new Error(`Unsupported control character \"${raw}\"`);\n }\n return createCharacterToken(cpOf(char.toUpperCase()) - 64, raw);\n}\n\nfunction tokenizeFlagModifier(raw: string, context: Context): DirectiveToken | GroupOpenToken {\n // Allows multiple `-` and solo `-` without `on` or `off` flags\n let {on, off} = /^\\(\\?(?<on>[imx]*)(?:-(?<off>[-imx]*))?/.exec(raw)!.groups as {on: string, off: string | undefined};\n off ??= '';\n // Flag x is used directly by the tokenizer since it changes how to interpret the pattern\n const isXOn = (context.getCurrentModX() || on.includes('x')) && !off.includes('x');\n const enabledFlags = getFlagGroupSwitches(on);\n const disabledFlags = getFlagGroupSwitches(off);\n const flagChanges: FlagGroupModifiers = {};\n enabledFlags && (flagChanges.enable = enabledFlags);\n disabledFlags && (flagChanges.disable = disabledFlags);\n // Flag directive; ex: `(?im-x)`\n if (raw.endsWith(')')) {\n // Replace flag x value until the end of the current group\n context.replaceCurrentModX(isXOn);\n // Can't remove flag directives without flags like `(?-)`; they affect following quantifiers\n return createDirectiveToken('flags', raw, {\n flags: flagChanges,\n });\n }\n // Flag group opener; ex: `(?im-x:`\n if (raw.endsWith(':')) {\n context.pushModX(isXOn);\n context.numOpenGroups++;\n return createGroupOpenToken('group', raw, {\n ...((enabledFlags || disabledFlags) && {flags: flagChanges}),\n });\n }\n throw new Error(`Unexpected flag modifier \"${raw}\"`);\n}\n\nfunction tokenizeNamedCallout(raw: string): NamedCalloutToken {\n const callout = /\\(\\*(?<name>[A-Za-z_]\\w*)?(?:\\[(?<tag>(?:[A-Za-z_]\\w*)?)\\])?(?:\\{(?<args>[^}]*)\\})?\\)/.exec(raw);\n if (!callout) {\n throw new Error(`Incomplete or invalid named callout \"${raw}\"`);\n }\n const {name, tag, args} = callout.groups as Partial<{\n name: string;\n tag: string;\n args: string;\n }>;\n if (!name) {\n throw new Error(`Invalid named callout \"${raw}\"`);\n }\n if (tag === '') {\n throw new Error(`Named callout tag with empty value not allowed \"${raw}\"`);\n }\n const argsArray: Array<string | number> = args ?\n args.split(',').\n // Onig skips over/ignores redundant/unnecessary commas\n filter(arg => arg !== '').\n map(arg => /^[+-]?\\d+$/.test(arg) ? +arg : arg) :\n [];\n const [arg0, arg1, arg2] = argsArray;\n const kind: TokenNamedCalloutKind = CalloutNames.has(name as Uppercase<Exclude<TokenNamedCalloutKind, 'custom'>>) ?\n name.toLowerCase() as TokenNamedCalloutKind :\n 'custom';\n switch (kind) {\n case 'fail':\n case 'mismatch':\n case 'skip':\n if (argsArray.length > 0) {\n throw new Error(`Named callout arguments not allowed \"${argsArray}\"`);\n }\n break;\n case 'error':\n if (argsArray.length > 1) {\n throw new Error(`Named callout allows only one argument \"${argsArray}\"`);\n }\n if (typeof arg0 === 'string') {\n throw new Error(`Named callout argument must be a number \"${arg0}\"`);\n }\n break;\n case 'max':\n if (!argsArray.length || argsArray.length > 2) {\n throw new Error(`Named callout must have one or two arguments \"${argsArray}\"`);\n }\n if (typeof arg0 === 'string' && !/^[A-Za-z_]\\w*$/.test(arg0)) {\n throw new Error(`Named callout argument one must be a tag or number \"${arg0}\"`);\n }\n if (argsArray.length === 2 && (typeof arg1 === 'number' || !/^[<>X]$/.test(arg1))) {\n throw new Error(`Named callout optional argument two must be '<', '>', or 'X' \"${arg1}\"`);\n }\n break;\n case 'count':\n case 'total_count':\n if (argsArray.length > 1) {\n throw new Error(`Named callout allows only one argument \"${argsArray}\"`);\n }\n if (argsArray.length === 1 && (typeof arg0 === 'number' || !/^[<>X]$/.test(arg0))) {\n throw new Error(`Named callout optional argument must be '<', '>', or 'X' \"${arg0}\"`);\n }\n break;\n case 'cmp':\n if (argsArray.length !== 3) {\n throw new Error(`Named callout must have three arguments \"${argsArray}\"`);\n }\n if (typeof arg0 === 'string' && !/^[A-Za-z_]\\w*$/.test(arg0)) {\n throw new Error(`Named callout argument one must be a tag or number \"${arg0}\"`);\n }\n if (typeof arg1 === 'number' || !/^(?:[<>!=]=|[<>])$/.test(arg1)) {\n throw new Error(`Named callout argument two must be '==', '!=', '>', '<', '>=', or '<=' \"${arg1}\"`);\n }\n if (typeof arg2 === 'string' && !/^[A-Za-z_]\\w*$/.test(arg2)) {\n throw new Error(`Named callout argument three must be a tag or number \"${arg2}\"`);\n }\n break;\n case 'custom':\n // TODO: Can support custom callout names via a new option that allows providing a list of\n // allowed, non-built-in names\n throw new Error(`Undefined callout name \"${name}\"`);\n default:\n throw new Error(`Unexpected named callout kind \"${kind}\"`);\n }\n // TODO: If supporting custom callout names in the future (with an added `name` property for\n // `NamedCalloutToken`), will need to set `name` to `null` if `kind` isn't `'custom'`\n return createNamedCalloutToken(kind, tag ?? null, args?.split(',') ?? null, raw);\n}\n\nfunction tokenizeQuantifier(raw: string): QuantifierToken {\n let kind: TokenQuantifierKind = null!;\n let min: number;\n let max: number;\n if (raw[0] === '{') {\n const {minStr, maxStr} =\n /^\\{(?<minStr>\\d*)(?:,(?<maxStr>\\d*))?/.exec(raw)!.groups as {minStr: string, maxStr: string | undefined};\n const limit = 100_000;\n if (+minStr > limit || (maxStr && +maxStr > limit)) {\n throw new Error('Quantifier value unsupported in Oniguruma');\n }\n min = +minStr;\n max = maxStr === undefined ? +minStr : (maxStr === '' ? Infinity : +maxStr);\n // By default, Onig doesn't support making interval quantifiers possessive with a `+` suffix;\n // uses reversed range instead\n if (min > max) {\n kind = 'possessive';\n [min, max] = [max, min];\n }\n if (raw.endsWith('?')) {\n if (kind === 'possessive') {\n // TODO: <github.com/slevithan/oniguruma-parser/issues/10>\n throw new Error('Unsupported possessive interval quantifier chain with \"?\"');\n }\n kind = 'lazy';\n } else if (!kind) {\n kind = 'greedy';\n }\n } else {\n min = raw[0] === '+' ? 1 : 0;\n max = raw[0] === '?' ? 1 : Infinity;\n kind = raw[1] === '+' ? 'possessive' : (raw[1] === '?' ? 'lazy' : 'greedy');\n }\n return createQuantifierToken(kind, min, max, raw);\n}\n\nfunction tokenizeShorthand(raw: string): CharacterSetToken {\n const lower = raw[1].toLowerCase();\n return createCharacterSetToken({\n 'd': 'digit',\n 'h': 'hex',\n 's': 'space',\n 'w': 'word',\n }[lower] as TokenCharacterSetKind, raw, {\n negate: raw[1] !== lower,\n });\n}\n\nfunction tokenizeUnicodeProperty(raw: string): CharacterSetToken {\n const {p, neg, value} = /^\\\\(?<p>[pP])\\{(?<neg>\\^?)(?<value>[^}]+)/.exec(raw)!.groups!;\n const negate = (p === 'P' && !neg) || (p === 'p' && !!neg);\n return createCharacterSetToken('property', raw, {\n value,\n negate,\n });\n}\n\nfunction getFlagGroupSwitches(flags: string): FlagGroupSwitches | null {\n // Don't include `false` for flags that aren't included\n const obj: FlagGroupSwitches = {};\n if (flags.includes('i')) {\n obj.ignoreCase = true;\n }\n if (flags.includes('m')) {\n // Onig flag m is equivalent to JS flag s\n obj.dotAll = true;\n }\n if (flags.includes('x')) {\n obj.extended = true;\n }\n return Object.keys(obj).length ? obj : null;\n}\n\nfunction getFlagProperties(flags: string): FlagProperties {\n const flagProperties: FlagProperties = {\n ignoreCase: false,\n dotAll: false,\n extended: false,\n digitIsAscii: false,\n posixIsAscii: false,\n spaceIsAscii: false,\n wordIsAscii: false,\n textSegmentMode: null,\n };\n for (let i = 0; i < flags.length; i++) {\n const char = flags[i];\n if (!'imxDPSWy'.includes(char)) {\n throw new Error(`Invalid flag \"${char}\"`);\n }\n // Flags y{g}, y{w} are currently only supported via the top-level `flags` option\n if (char === 'y') {\n if (!/^y{[gw]}/.test(flags.slice(i))) {\n throw new Error('Invalid or unspecified flag \"y\" mode');\n }\n // If text segment mode flags appear multiple times, use the last one\n flagProperties.textSegmentMode = flags[i + 2] === 'g' ? 'grapheme' : 'word';\n i += 3;\n continue;\n }\n flagProperties[{\n i: 'ignoreCase',\n // Flag m is called `multiline` in Onig, but that has a different meaning in JS. Onig flag m\n // is equivalent to JS flag s\n m: 'dotAll',\n // Flag x is fully handled during tokenization\n x: 'extended',\n // Flags D, P, S, W are currently only supported via the top-level `flags` option\n D: 'digitIsAscii',\n P: 'posixIsAscii',\n S: 'spaceIsAscii',\n W: 'wordIsAscii',\n }[char] as Exclude<keyof FlagProperties, 'textSegmentMode'>] = true;\n }\n return flagProperties;\n}\n\n// - Unenclosed `\\xNN` above 0x7F is handled elsewhere as a UTF-8 encoded byte sequence\n// - Enclosed `\\x{}` with value above 0x10FFFF is allowed here; handled in the parser\nfunction getValidatedHexCharCode(raw: string): number {\n // Note: Onig 6.9.10 and earlier have a bug where pattern-terminating `\\u` and `\\x` are treated\n // as identity escapes; see <github.com/kkos/oniguruma/issues/343>. Don't emulate these bugs.\n // Additionally, Onig treats bare `\\x` as equivalent to `\\0`, and treats incomplete `\\x{` (with\n // the brace but not immediately followed by a hex digit) as an identity escape, so e.g. `\\x{`\n // matches `x{` and `^\\x{,2}$` matches `xx`, but `\\x{2,}` and `\\x{0,2}` are errors. Currently,\n // this library treats all such cases as errors\n if (/^(?:\\\\u(?!\\p{AHex}{4})|\\\\x(?!\\p{AHex}{1,2}|\\{\\p{AHex}{1,8}\\}))/u.test(raw)) {\n throw new Error(`Incomplete or invalid escape \"${raw}\"`);\n }\n // Might include leading 0s\n const hex = raw[2] === '{' ?\n /^\\\\x\\{\\s*(?<hex>\\p{AHex}+)/u.exec(raw)!.groups!.hex :\n raw.slice(2);\n return parseInt(hex, 16);\n}\n\n// Value is 1-3 digits, which can be a backref (possibly invalid), null, octal, or identity escape,\n// possibly followed by 1-2 literal digits\nfunction splitEscapedNumberToken(token: EscapedNumberToken, numCaptures: number): Array<BackreferenceToken> | Array<CharacterToken> {\n const {raw, inCharClass} = token;\n // Keep any leading 0s since they indicate octal\n const value = raw.slice(1);\n // Backref (possibly invalid)\n if (\n !inCharClass &&\n ( // Single digit 1-9 outside a char class is always treated as a backref\n (value !== '0' && value.length === 1) ||\n // Leading 0 makes it octal; backrefs can't include following literal digits\n (value[0] !== '0' && +value <= numCaptures)\n )\n ) {\n return [createBackreferenceToken(raw)];\n }\n const tokens: Array<CharacterToken> = [];\n // Returns 1-3 matches; the first (only) might be octal\n const matches = value.match(/^[0-7]+|\\d/g)!;\n for (let i = 0; i < matches.length; i++) {\n const m = matches[i];\n let value: number;\n // Octal digits are 0-7\n if (i === 0 && m !== '8' && m !== '9') {\n value = parseInt(m, 8);\n if (value > 0o177) {\n // Octal UTF-8 encoded byte sequence; not yet supported\n throw new Error(r`Octal encoded byte above 177 unsupported \"${raw}\"`);\n }\n } else {\n value = cpOf(m);\n }\n tokens.push(createCharacterToken(value, (i === 0 ? '\\\\' : '') + m));\n }\n return tokens;\n}\n\nfunction splitQuantifierMatch(str: string): Array<QuantifierToken> {\n const tokens: Array<QuantifierToken> = [];\n // `str` is one or more quantifiers in a chain. It can't be split by a regex because of one edge\n // case where we have to compare numeric values: although `{1,2}?` is a single, lazy quantifier,\n // a reversed (possessive) interval quantifier like `{2,1}` can't be both possessive and lazy, so\n // any following `?`, `??`, or `?+` is a second, chained quantifier (i.e., `{2,1}?` is equivalent\n // to `{2,1}{0,1}` or `{2,0}`)\n const withG = new RegExp(quantifierRe, 'gy');\n let match: RegExpExecArray | null;\n while ((match = withG.exec(str))) {\n const m = match[0];\n if (m[0] === '{') {\n // Doesn't need to handle fixed `{n}`, infinite max `{n,}`, or implicit zero min `{,n}`\n // since, according to Onig syntax rules, those can't be possessive\n const parts = /^\\{(?<min>\\d+),(?<max>\\d+)\\}\\??$/.exec(m);\n if (parts) {\n const {min, max} = parts.groups as {min: string, max: string};\n if (+min > +max && m.endsWith('?')) {\n // Leave the trailing `?` for the next match\n withG.lastIndex--;\n tokens.push(tokenizeQuantifier(m.slice(0, -1)));\n continue;\n }\n }\n }\n tokens.push(tokenizeQuantifier(m));\n }\n return tokens;\n}\n\nexport {\n type AlternatorToken,\n type AssertionToken,\n type BackreferenceToken,\n type CharacterToken,\n type CharacterClassCloseToken,\n type CharacterClassHyphenToken,\n type CharacterClassIntersectorToken,\n type CharacterClassOpenToken,\n type CharacterSetToken,\n type DirectiveToken,\n type FlagGroupModifiers,\n type FlagProperties,\n type GroupCloseToken,\n type GroupOpenToken,\n type NamedCalloutToken,\n type QuantifierToken,\n type SubroutineToken,\n type Token,\n type TokenCharacterSetKind,\n type TokenDirectiveKind,\n type TokenNamedCalloutKind,\n type TokenQuantifierKind,\n tokenize,\n};\n", "import type {AlternativeContainerNode, Node, ParentNode, QuantifiableNode} from './parse.js';\n\ntype KeysOfUnion<T> = T extends T ? keyof T: never;\ntype Props = {[key in KeysOfUnion<Node>]?: any} & {type?: Node['type']};\n\nfunction hasOnlyChild(node: ParentNode & {body: Array<Node>}, props?: Props): boolean {\n if (!Array.isArray(node.body)) {\n throw new Error('Expected node with body array');\n }\n if (node.body.length !== 1) {\n return false;\n }\n const kid = node.body[0] as Props;\n return !props || Object.keys(props).every(key => props[key as keyof Props] === kid[key as keyof Props]);\n}\n\nfunction isAlternativeContainer(node: Node): node is AlternativeContainerNode {\n if (\n !alternativeContainerTypes.has(node.type) ||\n (node.type === 'AbsenceFunction' && node.kind !== 'repeater')\n ) {\n return false;\n }\n return true;\n}\nconst alternativeContainerTypes = new Set<Node['type']>([\n 'AbsenceFunction',\n 'CapturingGroup',\n 'Group',\n 'LookaroundAssertion',\n 'Regex',\n]);\n\nfunction isQuantifiable(node: Node): node is QuantifiableNode {\n return quantifiableTypes.has(node.type);\n}\nconst quantifiableTypes = new Set<Node['type']>([\n 'AbsenceFunction',\n 'Backreference',\n 'CapturingGroup',\n 'Character',\n 'CharacterClass',\n 'CharacterSet',\n 'Group',\n 'Quantifier',\n 'Subroutine',\n]);\n\nexport {\n hasOnlyChild,\n isAlternativeContainer,\n isQuantifiable,\n};\n", "import type {AssertionToken, BackreferenceToken, CharacterClassHyphenToken, CharacterClassOpenToken, CharacterSetToken, FlagGroupModifiers, FlagProperties, GroupOpenToken, QuantifierToken, SubroutineToken, Token, TokenCharacterSetKind, TokenDirectiveKind, TokenNamedCalloutKind, TokenQuantifierKind} from '../tokenizer/tokenize.js';\nimport {tokenize} from '../tokenizer/tokenize.js';\nimport {cpOf, getOrInsert, PosixClassNames, r, throwIfNullish} from '../utils.js';\nimport {hasOnlyChild, isAlternativeContainer, isQuantifiable} from './node-utils.js';\n\n// Watch out for the DOM `Node` interface!\ntype Node =\n AbsenceFunctionNode |\n AlternativeNode |\n AssertionNode |\n BackreferenceNode |\n CapturingGroupNode |\n CharacterNode |\n CharacterClassNode |\n CharacterClassRangeNode |\n CharacterSetNode |\n DirectiveNode |\n FlagsNode |\n GroupNode |\n LookaroundAssertionNode |\n NamedCalloutNode |\n QuantifierNode |\n RegexNode |\n SubroutineNode;\n\ntype OnigurumaAst = RegexNode;\n\ntype ParentNode =\n AlternativeContainerNode |\n AlternativeNode |\n CharacterClassNode |\n CharacterClassRangeNode |\n QuantifierNode;\n\n// See also `isAlternativeContainer`\ntype AlternativeContainerNode =\n AbsenceFunctionNode | // Some sub-kinds aren't alternative containers\n CapturingGroupNode |\n GroupNode |\n LookaroundAssertionNode |\n RegexNode;\n\ntype AlternativeElementNode =\n AbsenceFunctionNode |\n AssertionNode |\n BackreferenceNode |\n CapturingGroupNode |\n CharacterNode |\n CharacterClassNode |\n CharacterSetNode |\n DirectiveNode |\n GroupNode |\n LookaroundAssertionNode |\n NamedCalloutNode |\n QuantifierNode |\n SubroutineNode;\n\ntype CharacterClassElementNode =\n CharacterNode |\n CharacterClassNode |\n CharacterClassRangeNode |\n CharacterSetNode;\n\n// See also `isQuantifiable`\ntype QuantifiableNode =\n AbsenceFunctionNode |\n BackreferenceNode |\n CapturingGroupNode |\n CharacterNode |\n CharacterClassNode |\n CharacterSetNode |\n GroupNode |\n QuantifierNode |\n SubroutineNode;\n\n// TODO: Support remaining kinds; see <github.com/slevithan/oniguruma-to-es/issues/13>\ntype NodeAbsenceFunctionKind =\n 'repeater';\n\ntype NodeAssertionKind =\n 'line_end' |\n 'line_start' |\n 'search_start' |\n 'string_end' |\n 'string_end_newline' |\n 'string_start' |\n 'text_segment_boundary' |\n 'word_boundary';\n\ntype NodeCharacterClassKind =\n 'union' |\n 'intersection';\n\ntype NodeCharacterSetKind = TokenCharacterSetKind;\n\ntype NodeDirectiveKind = TokenDirectiveKind;\n\ntype NodeLookaroundAssertionKind =\n 'lookahead' |\n 'lookbehind';\n\ntype NodeNamedCalloutKind = TokenNamedCalloutKind;\n\ntype NodeQuantifierKind = TokenQuantifierKind;\n\ntype UnicodePropertyMap = Map<string, string>;\n\ntype Context = {\n capturingGroups: Array<CapturingGroupNode>;\n hasNumberedRef: boolean;\n namedGroupsByName: Map<string, Array<CapturingGroupNode>>;\n nextIndex: number;\n normalizeUnknownPropertyNames: boolean;\n parent: ParentNode;\n skipBackrefValidation: boolean;\n skipLookbehindValidation: boolean;\n skipPropertyNameValidation: boolean;\n subroutines: Array<SubroutineNode>;\n tokens: Array<Token>;\n unicodePropertyMap: UnicodePropertyMap | null;\n walk: (parent: ParentNode, state: State) => Node;\n};\n\n// Top-level `walk` calls are given empty state; nested calls can add data specific to their `walk`\ntype State = {\n isCheckingRangeEnd?: boolean;\n isInAbsenceFunction?: boolean;\n isInLookbehind?: boolean;\n isInNegLookbehind?: boolean;\n};\n\ntype ParseOptions = {\n flags?: string;\n normalizeUnknownPropertyNames?: boolean;\n rules?: {\n captureGroup?: boolean;\n singleline?: boolean;\n };\n skipBackrefValidation?: boolean;\n skipLookbehindValidation?: boolean;\n skipPropertyNameValidation?: boolean;\n unicodePropertyMap?: UnicodePropertyMap | null;\n};\n\nfunction parse(pattern: string, options: ParseOptions = {}): OnigurumaAst {\n const opts: Required<ParseOptions> = {\n flags: '',\n normalizeUnknownPropertyNames: false,\n skipBackrefValidation: false,\n skipLookbehindValidation: false,\n skipPropertyNameValidation: false,\n // `toOnigurumaAst` provides `OnigUnicodePropertyMap`, but it can be custom or `null`\n unicodePropertyMap: null,\n ...options,\n rules: {\n captureGroup: false, // `ONIG_OPTION_CAPTURE_GROUP`\n singleline: false, // `ONIG_OPTION_SINGLELINE`\n ...options.rules,\n },\n };\n const tokenized = tokenize(pattern, {\n // Limit to the tokenizer's options\n flags: opts.flags,\n rules: {\n captureGroup: opts.rules.captureGroup,\n singleline: opts.rules.singleline,\n },\n });\n const walk: Context['walk'] = (parent, state) => {\n const token = tokenized.tokens[context.nextIndex];\n context.parent = parent;\n // Advance for the next iteration\n context.nextIndex++;\n switch (token.type) {\n case 'Alternator':\n // Top-level only; groups handle their own alternators\n return createAlternative();\n case 'Assertion':\n return parseAssertion(token);\n case 'Backreference':\n return parseBackreference(token, context);\n case 'Character':\n return createCharacter(token.value, {useLastValid: !!state.isCheckingRangeEnd});\n case 'CharacterClassHyphen':\n return parseCharacterClassHyphen(token, context, state);\n case 'CharacterClassOpen':\n return parseCharacterClassOpen(token, context, state);\n case 'CharacterSet':\n return parseCharacterSet(token, context);\n case 'Directive':\n return createDirective(token.kind, {flags: token.flags});\n case 'GroupOpen':\n return parseGroupOpen(token, context, state);\n case 'NamedCallout':\n return createNamedCallout(token.kind, token.tag, token.arguments);\n case 'Quantifier':\n return parseQuantifier(token, context);\n case 'Subroutine':\n return parseSubroutine(token, context);\n default:\n throw new Error(`Unexpected token type \"${token.type}\"`);\n }\n }\n const context: Context = {\n capturingGroups: [],\n hasNumberedRef: false,\n namedGroupsByName: new Map(),\n nextIndex: 0,\n normalizeUnknownPropertyNames: opts.normalizeUnknownPropertyNames,\n parent: null!, // Assigned by `walk`\n skipBackrefValidation: opts.skipBackrefValidation,\n skipLookbehindValidation: opts.skipLookbehindValidation,\n skipPropertyNameValidation: opts.skipPropertyNameValidation,\n subroutines: [],\n tokens: tokenized.tokens,\n unicodePropertyMap: opts.unicodePropertyMap,\n walk,\n };\n\n // ## AST construction from tokens\n const ast = createRegex(createFlags(tokenized.flags));\n let top = ast.body[0]; // First alt\n while (context.nextIndex < tokenized.tokens.length) {\n const node = walk(top, {});\n if (node.type === 'Alternative') {\n ast.body.push(node);\n top = node;\n } else {\n top.body.push(node as AlternativeElementNode);\n }\n }\n\n // ## Validation that requires knowledge about the complete pattern\n // `context` updated by the preceding `walk` loop\n const {capturingGroups, hasNumberedRef, namedGroupsByName, subroutines} = context;\n if (hasNumberedRef && namedGroupsByName.size && !opts.rules.captureGroup) {\n throw new Error('Numbered backref/subroutine not allowed when using named capture');\n }\n for (const {ref} of subroutines) {\n if (typeof ref === 'number') {\n // Relative nums are already resolved\n if (ref > capturingGroups.length) {\n throw new Error(`Subroutine uses a group number that's not defined`);\n }\n if (ref) {\n capturingGroups[ref - 1].isSubroutined = true;\n }\n } else if (!namedGroupsByName.has(ref)) {\n throw new Error(r`Subroutine uses a group name that's not defined \"\\g<${ref}>\"`);\n } else if (namedGroupsByName.get(ref)!.length > 1) {\n throw new Error(r`Subroutine uses a duplicate group name \"\\g<${ref}>\"`);\n } else {\n namedGroupsByName.get(ref)![0].isSubroutined = true;\n }\n }\n\n return ast;\n}\n\nfunction parseAssertion({kind}: AssertionToken): AssertionNode {\n return createAssertion(\n throwIfNullish({\n '^': 'line_start',\n '$': 'line_end',\n '\\\\A': 'string_start',\n '\\\\b': 'word_boundary',\n '\\\\B': 'word_boundary',\n '\\\\G': 'search_start',\n '\\\\y': 'text_segment_boundary',\n '\\\\Y': 'text_segment_boundary',\n '\\\\z': 'string_end',\n '\\\\Z': 'string_end_newline',\n }[kind], `Unexpected assertion kind \"${kind}\"`) as NodeAssertionKind,\n {negate: kind === r`\\B` || kind === r`\\Y`}\n );\n}\n\n// Supported (if the backref appears to the right of the reffed capture's opening paren):\n// - `\\k<name>`, `\\k'name'`\n// - When named capture not used:\n// - `\\n`, `\\nn`, `\\nnn`\n// - `\\k<n>`, `\\k'n'\n// - `\\k<-n>`, `\\k'-n'`\n// Unsupported:\n// - `\\k<+n>`, `\\k'+n'` - Note that, Unlike Oniguruma, Onigmo doesn't support this as special\n// syntax and therefore considers it a valid group name.\n// - Backref with recursion level (with num or name): `\\k<n+level>`, `\\k<n-level>`, etc.\n// (Onigmo also supports `\\k<-n+level>`, `\\k<-n-level>`, etc.)\n// Backrefs in Onig use multiplexing for duplicate group names (the rules can be complicated when\n// overlapping with subroutines), but a `Backreference`'s simple `ref` prop doesn't capture these\n// details so multiplexed ref pointers need to be derived when working with the AST\nfunction parseBackreference({raw}: BackreferenceToken, context: Context): BackreferenceNode {\n const hasKWrapper = /^\\\\k[<']/.test(raw);\n const ref = hasKWrapper ? raw.slice(3, -1) : raw.slice(1);\n const fromNum = (num: number, isRelative = false) => {\n const numCapturesToLeft = context.capturingGroups.length;\n let orphan = false;\n // Note: It's not an error for numbered backrefs to come before their referenced group in Onig,\n // but it's currently an error in this library.\n // - Most such placements are mistakes and can never match, due to Onig's behavior for backrefs\n // to nonparticipating groups.\n // - The edge cases where they're matchable rely on rules for backref resetting within\n // quantified groups that are different in JS (thus not emulatable in `oniguruma-to-es`).\n // - Erroring matches the correct behavior of named backrefs.\n // - For unenclosed backrefs, this only affects `\\1`-`\\9` since it's not a backref in the first\n // place if using `\\10` or higher and not as many capturing groups are defined to the left\n // (it's an octal or identity escape).\n // TODO: Ideally this would be refactored to include the backref in the AST when it's not an\n // error in Onig (due to the reffed group being defined to the right), and the error handling\n // would move to the `oniguruma-to-es` transformer\n if (num > numCapturesToLeft) {\n // Skipping the error breaks assumptions and might create edge case issues, since backrefs\n // are required to come after their captures; unfortunately this option is needed for\n // TextMate grammars\n if (context.skipBackrefValidation) {\n orphan = true;\n } else {\n throw new Error(`Not enough capturing groups defined to the left \"${raw}\"`);\n }\n }\n context.hasNumberedRef = true;\n return createBackreference(isRelative ? numCapturesToLeft + 1 - num : num, {orphan});\n };\n if (hasKWrapper) {\n const numberedRef = /^(?<sign>-?)0*(?<num>[1-9]\\d*)$/.exec(ref);\n if (numberedRef) {\n return fromNum(+numberedRef.groups!.num, !!numberedRef.groups!.sign);\n }\n // Invalid in a backref name even when valid in a group name\n if (/[-+]/.test(ref)) {\n throw new Error(`Invalid backref name \"${raw}\"`);\n }\n if (!context.namedGroupsByName.has(ref)) {\n throw new Error(`Group name not defined to the left \"${raw}\"`);\n }\n return createBackreference(ref);\n }\n return fromNum(+ref);\n}\n\nfunction parseCharacterClassHyphen(_: CharacterClassHyphenToken, context: Context, state: State): CharacterNode | CharacterClassRangeNode {\n const {tokens, walk} = context;\n const parent = context.parent as CharacterClassNode;\n const prevSiblingNode = parent.body.at(-1);\n const nextToken = tokens[context.nextIndex];\n if (\n !state.isCheckingRangeEnd &&\n prevSiblingNode &&\n prevSiblingNode.type !== 'CharacterClass' &&\n prevSiblingNode.type !== 'CharacterClassRange' &&\n nextToken &&\n nextToken.type !== 'CharacterClassOpen' &&\n nextToken.type !== 'CharacterClassClose' &&\n nextToken.type !== 'CharacterClassIntersector'\n ) {\n const nextNode = walk(parent, {\n ...state,\n isCheckingRangeEnd: true,\n });\n if (prevSiblingNode.type === 'Character' && nextNode.type === 'Character') {\n parent.body.pop();\n return createCharacterClassRange(prevSiblingNode, nextNode);\n }\n throw new Error('Invalid character class range');\n }\n return createCharacter(cpOf('-'));\n}\n\nfunction parseCharacterClassOpen({negate}: CharacterClassOpenToken, context: Context, state: State): CharacterClassNode {\n const {tokens, walk} = context;\n const intersections = [createCharacterClass()];\n const ccFirstToken = tokens[context.nextIndex];\n let nextToken = throwIfUnclosedCharacterClass(ccFirstToken);\n while (nextToken.type !== 'CharacterClassClose') {\n if (nextToken.type === 'CharacterClassIntersector') {\n intersections.push(createCharacterClass());\n // Skip the intersector\n context.nextIndex++;\n } else {\n const cc = intersections.at(-1)!; // Always at least one\n cc.body.push(walk(cc, state) as CharacterClassElementNode);\n }\n nextToken = throwIfUnclosedCharacterClass(tokens[context.nextIndex], ccFirstToken);\n }\n const node = createCharacterClass({negate});\n if (intersections.length === 1) {\n node.body = intersections[0].body;\n } else {\n node.kind = 'intersection';\n node.body = intersections.map(cc => cc.body.length === 1 ? cc.body[0] : cc);\n }\n // Skip the closing square bracket\n context.nextIndex++;\n return node;\n}\n\nfunction parseCharacterSet({kind, negate, value}: CharacterSetToken, context: Context): CharacterSetNode {\n const {normalizeUnknownPropertyNames, skipPropertyNameValidation, unicodePropertyMap} = context;\n if (kind === 'property') {\n const normalized = slug(value!);\n // Don't treat as POSIX if it's in the provided list of Unicode property names\n if (PosixClassNames.has(normalized) && !unicodePropertyMap?.has(normalized)) {\n kind = 'posix';\n value = normalized;\n } else {\n return createUnicodeProperty(value!, {\n negate,\n normalizeUnknownPropertyNames,\n skipPropertyNameValidation,\n unicodePropertyMap,\n });\n }\n }\n if (kind === 'posix') {\n return createPosixClass(value!, {negate});\n }\n return createCharacterSet(kind, {negate});\n}\n\nfunction parseGroupOpen(token: GroupOpenToken, context: Context, state: State): AbsenceFunctionNode | CapturingGroupNode | GroupNode | LookaroundAssertionNode {\n const {tokens, capturingGroups, namedGroupsByName, skipLookbehindValidation, walk} = context;\n const node = createByGroupKind(token);\n const isThisAbsenceFunction = node.type === 'AbsenceFunction';\n const isThisLookbehind = isLookbehind(node);\n const isThisNegLookbehind = isThisLookbehind && node.negate;\n // Track capturing group details for backrefs and subroutines (before parsing the group's\n // contents so nested groups with the same name are tracked in order)\n if (node.type === 'CapturingGroup') {\n capturingGroups.push(node);\n if (node.name) {\n getOrInsert(namedGroupsByName, node.name, []).push(node);\n }\n }\n // Don't allow nested absence functions\n if (isThisAbsenceFunction && state.isInAbsenceFunction) {\n // Is officially unsupported in Onig but doesn't throw, gives strange results\n throw new Error('Nested absence function not supported by Oniguruma');\n }\n let nextToken = throwIfUnclosedGroup(tokens[context.nextIndex]);\n while (nextToken.type !== 'GroupClose') {\n if (nextToken.type === 'Alternator') {\n node.body.push(createAlternative());\n // Skip the alternator\n context.nextIndex++;\n } else {\n const alt = node.body.at(-1)!; // Always at least one\n const child = walk(alt, {\n ...state,\n isInAbsenceFunction: state.isInAbsenceFunction || isThisAbsenceFunction,\n isInLookbehind: state.isInLookbehind || isThisLookbehind,\n isInNegLookbehind: state.isInNegLookbehind || isThisNegLookbehind,\n }) as AlternativeElementNode;\n alt.body.push(child);\n // Centralized validation of lookbehind contents\n if ((isThisLookbehind || state.isInLookbehind) && !skipLookbehindValidation) {\n // JS supports all features within lookbehind, but Onig doesn't. Absence functions of form\n // `(?~|)` and `(?~|\u2026)` are also invalid in lookbehind (the `(?~\u2026)` and `(?~|\u2026|\u2026)` forms\n // are allowed), but all forms with `(?~|` throw since they aren't yet supported\n const msg = 'Lookbehind includes a pattern not allowed by Oniguruma';\n if (isThisNegLookbehind || state.isInNegLookbehind) {\n // - Invalid: `(?=\u2026)`, `(?!\u2026)`, capturing groups\n // - Valid: `(?<=\u2026)`, `(?<!\u2026)`\n if (isLookahead(child) || child.type === 'CapturingGroup') {\n throw new Error(msg);\n }\n } else {\n // - Invalid: `(?=\u2026)`, `(?!\u2026)`, `(?<!\u2026)`\n // - Valid: `(?<=\u2026)`, capturing groups\n if (isLookahead(child) || (isLookbehind(child) && child.negate)) {\n throw new Error(msg);\n }\n }\n }\n }\n nextToken = throwIfUnclosedGroup(tokens[context.nextIndex]);\n }\n // Skip the closing parenthesis\n context.nextIndex++;\n return node;\n}\n\nfunction parseQuantifier({kind, min, max}: QuantifierToken, context: Context): QuantifierNode {\n const parent = context.parent as AlternativeNode;\n const quantifiedNode = parent.body.at(-1);\n if (!quantifiedNode || !isQuantifiable(quantifiedNode)) {\n throw new Error('Quantifier requires a repeatable token');\n }\n const node = createQuantifier(kind, min, max, quantifiedNode);\n parent.body.pop();\n return node;\n}\n\n// Onig subroutine behavior:\n// - Subroutines can appear before the groups they reference; ex: `\\g<1>(a)` is valid.\n// - Multiple subroutines can reference the same group.\n// - Subroutines can reference groups that themselves contain subroutines, followed to any depth.\n// - Subroutines can be used recursively, and `\\g<0>` recursively references the whole pattern.\n// - Subroutines can use relative references (backward or forward); ex: `\\g<+1>(.)\\g<-1>`.\n// - Subroutines don't get their own capturing group numbers; ex: `(.)\\g<1>\\2` is invalid.\n// - Subroutines use the flags that apply to their referenced group, so e.g.\n// `(?-i)(?<a>a)(?i)\\g<a>` is fully case sensitive.\n// - Differences from PCRE/Perl/Regex+ subroutines:\n// - Subroutines can't reference duplicate group names (though duplicate names are valid if no\n// subroutines reference them).\n// - Subroutines can't use absolute or relative numbers if named capture is used anywhere.\n// - Named backrefs must be to the right of their group definition, so the backref in\n// `\\g<a>\\k<a>(?<a>)` is invalid (not directly related to subroutines).\n// - Subroutines don't restore capturing group match values (for backrefs) upon exit, so e.g.\n// `(?<a>(?<b>[ab]))\\g<a>\\k<b>` matches `abb` but not `aba`; same for numbered.\n// The interaction of backref multiplexing (an Onig-specific feature) and subroutines is complex:\n// - Only the most recent value matched by a capturing group and its subroutines is considered for\n// backref multiplexing, and this also applies to capturing groups nested within a group that's\n// referenced by a subroutine.\n// - Although a subroutine can't reference a group with a duplicate name, it can reference a group\n// with a nested capture whose name is duplicated (e.g. outside of the referenced group).\n// - These duplicate names can then multiplex; but only the most recent value matched from within\n// the outer group (or the subroutines that reference it) is available for multiplexing.\n// - Ex: With `(?<a>(?<b>[123]))\\g<a>\\g<a>(?<b>0)\\k<b>`, the backref `\\k<b>` can only match `0`\n// or whatever was matched by the most recently matched subroutine. If you took out `(?<b>0)`,\n// no multiplexing would occur.\nfunction parseSubroutine({raw}: SubroutineToken, context: Context): SubroutineNode {\n const {capturingGroups, subroutines} = context;\n let ref: string | number = raw.slice(3, -1);\n const numberedRef = /^(?<sign>[-+]?)0*(?<num>[1-9]\\d*)$/.exec(ref);\n if (numberedRef) {\n const num = +numberedRef.groups!.num;\n const numCapturesToLeft = capturingGroups.length;\n context.hasNumberedRef = true;\n ref = {\n '': num,\n '+': numCapturesToLeft + num,\n '-': numCapturesToLeft + 1 - num,\n }[numberedRef.groups!.sign]!;\n if (ref < 1) {\n throw new Error('Invalid subroutine number');\n }\n // Special case for full-pattern recursion; can't be `+0`, `-0`, `00`, etc.\n } else if (ref === '0') {\n ref = 0;\n }\n const node = createSubroutine(ref);\n subroutines.push(node);\n return node;\n}\n\n// -------------------------------\n// --- Node creation and types ---\n// -------------------------------\n\ntype AbsenceFunctionNode = {\n type: 'AbsenceFunction';\n kind: NodeAbsenceFunctionKind;\n body: Array<AlternativeNode>;\n};\nfunction createAbsenceFunction(kind: NodeAbsenceFunctionKind, options?: {\n body?: Array<AlternativeNode>;\n}): AbsenceFunctionNode {\n if (kind !== 'repeater') {\n throw new Error(`Unexpected absence function kind \"${kind}\"`);\n }\n return {\n type: 'AbsenceFunction',\n kind,\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype AlternativeNode = {\n type: 'Alternative';\n body: Array<AlternativeElementNode>;\n};\nfunction createAlternative(options?: {\n body?: Array<AlternativeElementNode>;\n}): AlternativeNode {\n return {\n type: 'Alternative',\n body: getBodyForElementContainer(options?.body) as Array<AlternativeElementNode>,\n };\n}\n\ntype AssertionNode = {\n type: 'Assertion';\n kind: NodeAssertionKind;\n negate?: boolean;\n};\nfunction createAssertion(kind: NodeAssertionKind, options?: {\n negate?: boolean;\n}): AssertionNode {\n const node: AssertionNode = {\n type: 'Assertion',\n kind,\n };\n if (kind === 'word_boundary' || kind === 'text_segment_boundary') {\n node.negate = !!options?.negate;\n }\n return node;\n}\n\ntype BackreferenceNode = {\n type: 'Backreference';\n ref: string | number;\n orphan?: boolean;\n};\nfunction createBackreference(ref: string | number, options?: {\n orphan?: boolean;\n}): BackreferenceNode {\n const orphan = !!options?.orphan;\n return {\n type: 'Backreference',\n ref,\n ...(orphan && {orphan}),\n };\n}\n\ntype CapturingGroupNode = {\n type: 'CapturingGroup';\n kind?: never;\n number: number;\n name?: string;\n // One or more subroutines in the regex reference this group\n isSubroutined?: boolean;\n body: Array<AlternativeNode>;\n};\nfunction createCapturingGroup(number: number, options?: {\n name?: string;\n isSubroutined?: boolean;\n body?: Array<AlternativeNode>;\n}): CapturingGroupNode {\n const opts = {\n name: undefined,\n isSubroutined: false,\n ...options,\n };\n if (opts.name !== undefined && !isValidGroupName(opts.name)) {\n throw new Error(`Group name \"${opts.name}\" invalid in Oniguruma`);\n }\n return {\n type: 'CapturingGroup',\n number,\n ...(opts.name && {name: opts.name}),\n ...(opts.isSubroutined && {isSubroutined: opts.isSubroutined}),\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype CharacterNode = {\n type: 'Character';\n value: number;\n};\nfunction createCharacter(charCode: number, options?: {\n useLastValid?: boolean;\n}): CharacterNode {\n const opts = {\n useLastValid: false,\n ...options,\n };\n if (charCode > 0x10FFFF) {\n const hex = charCode.toString(16);\n if (opts.useLastValid) {\n charCode = 0x10FFFF;\n } else if (charCode > 0x13FFFF) {\n throw new Error(`Invalid code point out of range \"\\\\x{${hex}}\"`);\n } else {\n throw new Error(`Invalid code point out of range in JS \"\\\\x{${hex}}\"`);\n }\n }\n return {\n type: 'Character',\n value: charCode,\n };\n}\n\ntype CharacterClassNode = {\n type: 'CharacterClass';\n kind: NodeCharacterClassKind;\n negate: boolean;\n body: Array<CharacterClassElementNode>;\n};\nfunction createCharacterClass(options?: {\n kind?: NodeCharacterClassKind;\n negate?: boolean;\n body?: Array<CharacterClassElementNode>;\n}): CharacterClassNode {\n const opts = {\n kind: 'union' as NodeCharacterClassKind,\n negate: false,\n ...options,\n };\n return {\n type: 'CharacterClass',\n kind: opts.kind,\n negate: opts.negate,\n body: getBodyForElementContainer(options?.body) as Array<CharacterClassElementNode>,\n };\n}\n\ntype CharacterClassRangeNode = {\n type: 'CharacterClassRange';\n min: CharacterNode;\n max: CharacterNode;\n};\nfunction createCharacterClassRange(min: CharacterNode, max: CharacterNode): CharacterClassRangeNode {\n if (max.value < min.value) {\n throw new Error('Character class range out of order');\n }\n return {\n type: 'CharacterClassRange',\n min,\n max,\n };\n}\n\ntype NamedCharacterSetNode = {\n type: 'CharacterSet';\n kind: 'posix' | 'property';\n value: string;\n negate: boolean;\n variableLength?: never;\n};\ntype UnnamedCharacterSetNode = {\n type: 'CharacterSet';\n kind: Exclude<NodeCharacterSetKind, NamedCharacterSetNode['kind']>;\n value?: never;\n negate?: boolean;\n variableLength?: boolean;\n};\ntype CharacterSetNode = NamedCharacterSetNode | UnnamedCharacterSetNode;\n/**\nUse `createUnicodeProperty` and `createPosixClass` for `kind` values `'property'` and `'posix'`.\n*/\nfunction createCharacterSet(kind: UnnamedCharacterSetNode['kind'], options?: {\n negate?: boolean;\n}): UnnamedCharacterSetNode {\n const negate = !!options?.negate;\n const node: UnnamedCharacterSetNode = {\n type: 'CharacterSet',\n kind,\n };\n if (\n kind === 'digit' ||\n kind === 'hex' ||\n kind === 'newline' ||\n kind === 'space' ||\n kind === 'word'\n ) {\n node.negate = negate;\n }\n if (\n kind === 'text_segment' ||\n (kind === 'newline' && !negate)\n ) {\n node.variableLength = true;\n }\n return node;\n}\n\ntype DirectiveNode = {\n type: 'Directive';\n} & ({\n kind: 'keep';\n flags?: never;\n} | {\n kind: 'flags';\n flags: FlagGroupModifiers;\n});\nfunction createDirective(kind: NodeDirectiveKind, options: {flags?: FlagGroupModifiers} = {}): DirectiveNode {\n if (kind === 'keep') {\n return {\n type: 'Directive',\n kind,\n };\n }\n if (kind === 'flags') {\n // Note: Flag effects might extend across alternation; ex: `a(?i)b|c` is equivalent to\n // `a(?i:b)|(?i:c)`, not `a(?i:b|c)`\n return {\n type: 'Directive',\n kind,\n flags: throwIfNullish(options.flags),\n };\n }\n throw new Error(`Unexpected directive kind \"${kind}\"`);\n}\n\ntype FlagsNode = {\n type: 'Flags';\n} & FlagProperties;\nfunction createFlags(flags: FlagProperties): FlagsNode {\n return {\n type: 'Flags',\n ...flags,\n };\n}\n\ntype GroupNode = {\n type: 'Group';\n kind?: never;\n atomic?: boolean;\n flags?: FlagGroupModifiers;\n body: Array<AlternativeNode>;\n};\nfunction createGroup(options?: {\n atomic?: boolean;\n flags?: FlagGroupModifiers;\n body?: Array<AlternativeNode>;\n}): GroupNode {\n const atomic = options?.atomic;\n const flags = options?.flags;\n if (atomic && flags) {\n throw new Error('Atomic group cannot have flags');\n }\n return {\n type: 'Group',\n ...(atomic && {atomic}),\n ...(flags && {flags}),\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype LookaroundAssertionNode = {\n type: 'LookaroundAssertion';\n kind: NodeLookaroundAssertionKind;\n negate: boolean;\n body: Array<AlternativeNode>;\n};\nfunction createLookaroundAssertion(options?: {\n behind?: boolean;\n negate?: boolean;\n body?: Array<AlternativeNode>;\n}): LookaroundAssertionNode {\n const opts = {\n behind: false,\n negate: false,\n ...options,\n };\n return {\n type: 'LookaroundAssertion',\n kind: opts.behind ? 'lookbehind' : 'lookahead',\n negate: opts.negate,\n body: getBodyForAlternativeContainer(options?.body),\n };\n}\n\ntype NamedCalloutNode = {\n type: 'NamedCallout';\n kind: NodeNamedCalloutKind;\n tag: string | null;\n arguments: Array<string | number> | null;\n};\nfunction createNamedCallout(\n kind: NodeNamedCalloutKind,\n tag: string | null,\n args: Array<string | number> | null\n): NamedCalloutNode {\n return {\n type: 'NamedCallout',\n kind,\n tag,\n arguments: args,\n };\n}\n\nfunction createPosixClass(name: string, options?: {\n negate?: boolean;\n}): NamedCharacterSetNode & {kind: 'posix'} {\n const negate = !!options?.negate;\n if (!PosixClassNames.has(name)) {\n throw new Error(`Invalid POSIX class \"${name}\"`);\n }\n return {\n type: 'CharacterSet',\n kind: 'posix',\n value: name,\n negate,\n };\n}\n\ntype QuantifierNode = {\n type: 'Quantifier';\n kind: NodeQuantifierKind;\n min: number;\n max: number;\n body: QuantifiableNode;\n};\nfunction createQuantifier(kind: NodeQuantifierKind, min: number, max: number, body: QuantifiableNode): QuantifierNode {\n if (min > max) {\n throw new Error('Invalid reversed quantifier range');\n }\n return {\n type: 'Quantifier',\n kind,\n min,\n max,\n body,\n };\n}\n\ntype RegexNode = {\n type: 'Regex';\n body: Array<AlternativeNode>;\n flags: FlagsNode;\n};\nfunction createRegex(flags: FlagsNode, options?: {\n body?: Array<AlternativeNode>;\n}): RegexNode {\n return {\n type: 'Regex',\n body: getBodyForAlternativeContainer(options?.body),\n flags,\n };\n}\n\ntype SubroutineNode = {\n type: 'Subroutine';\n ref: string | number;\n};\nfunction createSubroutine(ref: string | number): SubroutineNode {\n return {\n type: 'Subroutine',\n ref,\n };\n}\n\ntype CreateUnicodePropertyOptions = {\n negate?: boolean;\n normalizeUnknownPropertyNames?: boolean;\n skipPropertyNameValidation?: boolean;\n unicodePropertyMap?: UnicodePropertyMap | null;\n};\nfunction createUnicodeProperty(name: string, options?: CreateUnicodePropertyOptions): NamedCharacterSetNode & {kind: 'property'} {\n const opts: Required<CreateUnicodePropertyOptions> = {\n negate: false,\n normalizeUnknownPropertyNames: false,\n skipPropertyNameValidation: false,\n unicodePropertyMap: null,\n ...options,\n };\n let normalized = opts.unicodePropertyMap?.get(slug(name));\n if (!normalized) {\n if (opts.normalizeUnknownPropertyNames) {\n normalized = normalizeUnicodePropertyName(name);\n // Let the name through as-is if no map provided and normalization not requested\n } else if (opts.unicodePropertyMap && !opts.skipPropertyNameValidation) {\n throw new Error(r`Invalid Unicode property \"\\p{${name}}\"`);\n }\n }\n return {\n type: 'CharacterSet',\n kind: 'property',\n value: normalized ?? name,\n negate: opts.negate,\n };\n}\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\nfunction createByGroupKind({flags, kind, name, negate, number}: GroupOpenToken): AbsenceFunctionNode | CapturingGroupNode | GroupNode | LookaroundAssertionNode {\n switch (kind) {\n case 'absence_repeater':\n return createAbsenceFunction('repeater');\n case 'atomic':\n return createGroup({atomic: true});\n case 'capturing':\n return createCapturingGroup(number!, {name});\n case 'group':\n return createGroup({flags});\n case 'lookahead':\n case 'lookbehind':\n return createLookaroundAssertion({\n behind: kind === 'lookbehind',\n negate,\n });\n default:\n throw new Error(`Unexpected group kind \"${kind}\"`);\n }\n}\n\nfunction getBodyForAlternativeContainer(body: unknown): Array<AlternativeNode> {\n if (body === undefined) {\n body = [createAlternative()];\n } else if (!Array.isArray(body) || !body.length || !body.every(node => (node as Node).type === 'Alternative')) {\n throw new Error('Invalid body; expected array of one or more Alternative nodes');\n }\n return body as Array<AlternativeNode>;\n}\n\nfunction getBodyForElementContainer(body: unknown): Array<Node> {\n if (body === undefined) {\n body = [];\n } else if (!Array.isArray(body) || !body.every(node => !!(node as Node).type)) {\n throw new Error('Invalid body; expected array of nodes');\n }\n return body as Array<Node>;\n}\n\nfunction isLookahead(node: Node): node is (LookaroundAssertionNode & {kind: 'lookahead'}) {\n return node.type === 'LookaroundAssertion' && node.kind === 'lookahead';\n}\n\nfunction isLookbehind(node: Node): node is (LookaroundAssertionNode & {kind: 'lookbehind'}) {\n return node.type === 'LookaroundAssertion' && node.kind === 'lookbehind';\n}\n\nfunction isValidGroupName(name: string): boolean {\n // Note that backrefs and subroutines might contextually use `-` and `+` to indicate relative\n // index or recursion level\n return /^[\\p{Alpha}\\p{Pc}][^)]*$/u.test(name);\n}\n\nfunction normalizeUnicodePropertyName(name: string): string {\n // In Onig, Unicode property names ignore case, spaces, hyphens, and underscores. Use best effort\n // to reformat the name to follow official values (covers a lot, but isn't able to map for all\n // possible formatting differences)\n return name.\n trim().\n replace(/[- _]+/g, '_').\n replace(/[A-Z][a-z]+(?=[A-Z])/g, '$&_'). // `PropertyName` to `Property_Name`\n replace(/[A-Za-z]+/g, m => m[0].toUpperCase() + m.slice(1).toLowerCase());\n}\n\n/**\nGenerates a Unicode property lookup name: lowercase, without spaces, hyphens, or underscores.\n*/\nfunction slug(name: string): string {\n return name.replace(/[- _]+/g, '').toLowerCase();\n}\n\nfunction throwIfUnclosedCharacterClass<T>(token: T, ccFirstToken?: Token): NonNullable<T> {\n const first = ccFirstToken;\n return throwIfNullish(token, `Unclosed character class${\n // Help avoid confusion since e.g. `[]abc` is unclosed but looks like it has an empty class\n first?.type === 'Character' && first.value === 93 && first.raw === ']' ? ' (started with \"]\")' : ''\n }`);\n}\n\nfunction throwIfUnclosedGroup<T>(token: T): NonNullable<T> {\n return throwIfNullish(token, 'Unclosed group');\n}\n\nexport {\n type AbsenceFunctionNode,\n type AlternativeNode,\n type AlternativeContainerNode,\n type AlternativeElementNode,\n type AssertionNode,\n type BackreferenceNode,\n type CapturingGroupNode,\n type CharacterClassElementNode,\n type CharacterClassNode,\n type CharacterClassRangeNode,\n type CharacterNode,\n type CharacterSetNode,\n type DirectiveNode,\n type FlagsNode,\n type GroupNode,\n type LookaroundAssertionNode,\n type NamedCalloutNode,\n type Node,\n type NodeAbsenceFunctionKind,\n type NodeAssertionKind,\n type NodeCharacterClassKind,\n type NodeCharacterSetKind,\n type NodeDirectiveKind,\n type NodeLookaroundAssertionKind,\n type NodeQuantifierKind,\n type OnigurumaAst,\n type ParentNode,\n type ParseOptions,\n type QuantifiableNode,\n type QuantifierNode,\n type RegexNode,\n type SubroutineNode,\n type UnicodePropertyMap,\n createAbsenceFunction,\n createAlternative,\n createAssertion,\n createBackreference,\n createCapturingGroup,\n createCharacter,\n createCharacterClass,\n createCharacterClassRange,\n createCharacterSet,\n createDirective,\n createFlags,\n createGroup,\n createLookaroundAssertion,\n createNamedCallout,\n createPosixClass,\n createQuantifier,\n createRegex,\n createSubroutine,\n createUnicodeProperty,\n hasOnlyChild,\n isAlternativeContainer,\n isQuantifiable,\n parse,\n slug,\n};\n", "import type {AlternativeElementNode, AlternativeNode, CharacterClassElementNode, Node, ParentNode, RegexNode} from '../parser/parse.js';\nimport {throwIfNullish} from '../utils.js';\n\ntype ContainerElementNode =\n // Used within the `body` container of any `AlternativeContainerNode`\n AlternativeNode |\n // Any node type used within the `body` container of an `AlternativeNode`\n AlternativeElementNode |\n // Any node type used within the `body` container of a `CharacterClassNode`\n CharacterClassElementNode;\n\ntype Path<N = Node, Root = RegexNode> = {\n // The current node being traversed\n node: N;\n // Parent node of the current node\n parent: N extends RegexNode ? null : ParentNode;\n // String property where the current node in held by the parent node, or numeric index in the\n // parent's `container` array\n key: N extends RegexNode ? null : number | string;\n // Container array holding the current node in the parent node; `null` if the parent isn't a type\n // that contains a list of nodes\n container: N extends RegexNode ? null : Array<ContainerElementNode> | null;\n // Starting node of the AST being traversed; usually a `RegexNode` but can be any node type if\n // traversing from a midpoint\n root: Root;\n // Removes the current node; its kids won't be traversed\n remove: () => void;\n // Removes all siblings to the right of the current node, without traversing them; returns the\n // removed nodes\n removeAllNextSiblings: () => Array<Node>;\n // Removes all siblings to the left of the current node, which have already been traversed;\n // returns the removed nodes\n removeAllPrevSiblings: () => Array<Node>;\n // Replaces the current node with a new node; kids of the replaced node won't be traversed;\n // optionally traverses the new node\n replaceWith: (newNode: Node, options?: {traverse?: boolean}) => void;\n // Replaces the current node with multiple new nodes; kids of the replaced node won't be\n // traversed; optionally traverses the new nodes\n replaceWithMultiple: (newNodes: Array<Node>, options?: {traverse?: boolean}) => void;\n // Skips traversing kids of the current node\n skip: () => void;\n};\n\n// `VisitorNodeFn() {\u2026}` is shorthand for `VisitorNodeFn: {enter() {\u2026}}`.\ntype Visitor<State extends object | null = null, Root extends Node = RegexNode> = {\n [N in Node as N['type']]?: VisitorNodeFn<Path<N, Root>, State> | {\n enter?: VisitorNodeFn<Path<N, Root>, State>;\n exit?: VisitorNodeFn<Path<N, Root>, State>;\n };\n} & {\n '*'?: VisitorNodeFn<Path<Node, Root>, State> | {\n enter?: VisitorNodeFn<Path<Node, Root>, State>;\n exit?: VisitorNodeFn<Path<Node, Root>, State>;\n };\n};\n\ntype VisitorNodeFn<P, State> = (path: P, state: State) => void;\n\n/**\nTraverses an AST and calls the provided `visitor`'s node function for each node. Returns the same\nobject, possibly modified.\n\nVisitor node functions can modify the AST in place and use methods on the `path` (provided as their\nfirst argument) to help modify the AST. Provided `state` is passed through to all visitor node\nfunctions as their second argument.\n\nVisitor node functions are called in the following order:\n1. `enter` function of the `'*'` node type (if any)\n2. `enter` function of the given node's type (if any)\n3. [The node's kids (if any) are traversed recursively, unless `skip` is called]\n4. `exit` function of the given node's type (if any)\n5. `exit` function of the `'*'` node type (if any)\n*/\nfunction traverse<State extends object | null = null, Root extends Node = RegexNode>(\n root: Root,\n visitor: Visitor<State, Root>,\n state: State | null = null\n): Root {\n function traverseArray(array: NonNullable<Path['container']>, parent: Path['parent']) {\n for (let i = 0; i < array.length; i++) {\n const keyShift = traverseNode(array[i], parent, i, array);\n i = Math.max(-1, i + keyShift);\n }\n }\n function traverseNode(\n node: Path['node'],\n parent: Path['parent'] = null,\n key: Path['key'] = null,\n container: Path['container'] = null\n ): number {\n let keyShift = 0;\n let skipTraversingKidsOfPath = false;\n const path: Path = {\n node,\n parent,\n key,\n container,\n root: root as RegexNode,\n remove() {\n arrayContainer(container).splice(Math.max(0, numericKey(key) + keyShift), 1);\n keyShift--;\n skipTraversingKidsOfPath = true;\n },\n removeAllNextSiblings() {\n return arrayContainer(container).splice(numericKey(key) + 1);\n },\n removeAllPrevSiblings() {\n const shifted = numericKey(key) + keyShift;\n keyShift -= shifted;\n return arrayContainer(container).splice(0, Math.max(0, shifted));\n },\n replaceWith(newNode, options = {}) {\n const traverseNew = !!options.traverse;\n if (container) {\n container[Math.max(0, numericKey(key) + keyShift)] = newNode as ContainerElementNode;\n } else {\n // `key` will be one of:\n // - For `CharacterClassRangeNode`: 'min', 'max'\n // - For `QuantifierNode`: 'body'\n // - For `RegexNode`: 'flags'\n // @ts-expect-error\n throwIfNullish(parent, `Can't replace root node`)[key as string] = newNode;\n }\n if (traverseNew) {\n traverseNode(newNode, parent, key, container);\n }\n skipTraversingKidsOfPath = true;\n },\n replaceWithMultiple(newNodes, options = {}) {\n const traverseNew = !!options.traverse;\n arrayContainer(container).splice(Math.max(0, numericKey(key) + keyShift), 1, ...newNodes);\n keyShift += newNodes.length - 1;\n if (traverseNew) {\n let keyShiftInLoop = 0;\n for (let i = 0; i < newNodes.length; i++) {\n keyShiftInLoop += traverseNode(newNodes[i], parent, numericKey(key) + i + keyShiftInLoop, container);\n }\n }\n skipTraversingKidsOfPath = true;\n },\n skip() {\n skipTraversingKidsOfPath = true;\n },\n };\n\n const {type} = node;\n const anyTypeVisitor = visitor['*'];\n const thisTypeVisitor = visitor[type];\n const enterAllFn = typeof anyTypeVisitor === 'function' ? anyTypeVisitor : anyTypeVisitor?.enter;\n const enterThisFn = typeof thisTypeVisitor === 'function' ? thisTypeVisitor : thisTypeVisitor?.enter;\n // Type args are too complex to avoid TS errors here, but `VisitorNodeFn`s get correct types\n // @ts-expect-error\n enterAllFn?.(path, state);\n // @ts-expect-error\n enterThisFn?.(path, state);\n\n if (!skipTraversingKidsOfPath) {\n switch (type) {\n case 'AbsenceFunction':\n case 'Alternative':\n case 'CapturingGroup':\n case 'CharacterClass':\n case 'Group':\n case 'LookaroundAssertion':\n traverseArray(node.body, node);\n break;\n case 'Assertion':\n case 'Backreference':\n case 'Character':\n case 'CharacterSet':\n case 'Directive':\n case 'Flags':\n case 'NamedCallout':\n case 'Subroutine':\n break;\n case 'CharacterClassRange':\n traverseNode(node.min, node, 'min');\n traverseNode(node.max, node, 'max');\n break;\n case 'Quantifier':\n traverseNode(node.body, node, 'body');\n break;\n case 'Regex':\n traverseArray(node.body, node);\n traverseNode(node.flags, node, 'flags');\n break;\n default:\n throw new Error(`Unexpected node type \"${type}\"`);\n }\n }\n\n // @ts-expect-error\n (thisTypeVisitor as Exclude<typeof thisTypeVisitor, Function>)?.exit?.(path, state);\n // @ts-expect-error\n (anyTypeVisitor as Exclude<typeof anyTypeVisitor, Function>)?.exit?.(path, state);\n return keyShift;\n }\n traverseNode(root);\n return root;\n}\n\nfunction arrayContainer(value: unknown): Array<Node> {\n if (!Array.isArray(value)) {\n throw new Error('Container expected');\n }\n return value;\n}\n\nfunction numericKey(value: unknown): number {\n if (typeof value !== 'number') {\n throw new Error('Numeric key expected');\n }\n return value;\n}\n\nexport {\n type Path,\n type Visitor,\n traverse,\n};\n", "// Separating some utils for improved tree shaking of the `./internals` export\n\nconst noncapturingDelim = String.raw`\\(\\?(?:[:=!>A-Za-z\\-]|<[=!]|\\(DEFINE\\))`;\n\n/**\nUpdates the array in place by incrementing each value greater than or equal to the threshold.\n@param {Array<number>} arr\n@param {number} threshold\n*/\nfunction incrementIfAtLeast(arr, threshold) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] >= threshold) {\n arr[i]++;\n }\n }\n}\n\n/**\n@param {string} str\n@param {number} pos\n@param {string} oldValue\n@param {string} newValue\n@returns {string}\n*/\nfunction spliceStr(str, pos, oldValue, newValue) {\n return str.slice(0, pos) + newValue + str.slice(pos + oldValue.length);\n}\n\nexport {\n incrementIfAtLeast,\n noncapturingDelim,\n spliceStr,\n};\n", "// Constant properties for tracking regex syntax context\nexport const Context = Object.freeze({\n DEFAULT: 'DEFAULT',\n CHAR_CLASS: 'CHAR_CLASS',\n});\n\n/**\nReplaces all unescaped instances of a regex pattern in the given context, using a replacement\nstring or callback.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {string | (match: RegExpExecArray, details: {\n context: 'DEFAULT' | 'CHAR_CLASS';\n negated: boolean;\n}) => string} replacement\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {string} Updated expression\n@example\nconst str = '.\\\\.\\\\\\\\.[[\\\\.].].';\nreplaceUnescaped(str, '\\\\.', '@');\n// \u2192 '@\\\\.\\\\\\\\@[[\\\\.]@]@'\nreplaceUnescaped(str, '\\\\.', '@', Context.DEFAULT);\n// \u2192 '@\\\\.\\\\\\\\@[[\\\\.].]@'\nreplaceUnescaped(str, '\\\\.', '@', Context.CHAR_CLASS);\n// \u2192 '.\\\\.\\\\\\\\.[[\\\\.]@].'\n*/\nexport function replaceUnescaped(expression, needle, replacement, context) {\n const re = new RegExp(String.raw`${needle}|(?<$skip>\\[\\^?|\\\\?.)`, 'gsu');\n const negated = [false];\n let numCharClassesOpen = 0;\n let result = '';\n for (const match of expression.matchAll(re)) {\n const {0: m, groups: {$skip}} = match;\n if (!$skip && (!context || (context === Context.DEFAULT) === !numCharClassesOpen)) {\n if (replacement instanceof Function) {\n result += replacement(match, {\n context: numCharClassesOpen ? Context.CHAR_CLASS : Context.DEFAULT,\n negated: negated[negated.length - 1],\n });\n } else {\n result += replacement;\n }\n continue;\n }\n if (m[0] === '[') {\n numCharClassesOpen++;\n negated.push(m[1] === '^');\n } else if (m === ']' && numCharClassesOpen) {\n numCharClassesOpen--;\n negated.pop();\n }\n result += m;\n }\n return result;\n}\n\n/**\nRuns a callback for each unescaped instance of a regex pattern in the given context.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {(match: RegExpExecArray, details: {\n context: 'DEFAULT' | 'CHAR_CLASS';\n negated: boolean;\n}) => void} callback\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n*/\nexport function forEachUnescaped(expression, needle, callback, context) {\n // Do this the easy way\n replaceUnescaped(expression, needle, callback, context);\n}\n\n/**\nReturns a match object for the first unescaped instance of a regex pattern in the given context, or\n`null`.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {number} [pos] Offset to start the search\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {RegExpExecArray | null}\n*/\nexport function execUnescaped(expression, needle, pos = 0, context) {\n // Quick partial test; avoid the loop if not needed\n if (!(new RegExp(needle, 'su').test(expression))) {\n return null;\n }\n const re = new RegExp(`${needle}|(?<$skip>\\\\\\\\?.)`, 'gsu');\n re.lastIndex = pos;\n let numCharClassesOpen = 0;\n let match;\n while (match = re.exec(expression)) {\n const {0: m, groups: {$skip}} = match;\n if (!$skip && (!context || (context === Context.DEFAULT) === !numCharClassesOpen)) {\n return match;\n }\n if (m === '[') {\n numCharClassesOpen++;\n } else if (m === ']' && numCharClassesOpen) {\n numCharClassesOpen--;\n }\n // Avoid an infinite loop on zero-length matches\n if (re.lastIndex == match.index) {\n re.lastIndex++;\n }\n }\n return null;\n}\n\n/**\nChecks whether an unescaped instance of a regex pattern appears in the given context.\n\nDoesn't skip over complete multicharacter tokens (only `\\` plus its folowing char) so must be used\nwith knowledge of what's safe to do given regex syntax. Assumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {string} needle Search as a regex pattern, with flags `su` applied\n@param {'DEFAULT' | 'CHAR_CLASS'} [context] All contexts if not specified\n@returns {boolean} Whether the pattern was found\n*/\nexport function hasUnescaped(expression, needle, context) {\n // Do this the easy way\n return !!execUnescaped(expression, needle, 0, context);\n}\n\n/**\nExtracts the full contents of a group (subpattern) from the given expression, accounting for\nescaped characters, nested groups, and character classes. The group is identified by the position\nwhere its contents start (the string index just after the group's opening delimiter). Returns the\nrest of the string if the group is unclosed.\n\nAssumes UnicodeSets-mode syntax.\n@param {string} expression Search target\n@param {number} contentsStartPos\n@returns {string}\n*/\nexport function getGroupContents(expression, contentsStartPos) {\n const token = /\\\\?./gsu;\n token.lastIndex = contentsStartPos;\n let contentsEndPos = expression.length;\n let numCharClassesOpen = 0;\n // Starting search within an open group, after the group's opening\n let numGroupsOpen = 1;\n let match;\n while (match = token.exec(expression)) {\n const [m] = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n if (m === '(') {\n numGroupsOpen++;\n } else if (m === ')') {\n numGroupsOpen--;\n if (!numGroupsOpen) {\n contentsEndPos = match.index;\n break;\n }\n }\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n return expression.slice(contentsStartPos, contentsEndPos);\n}\n", "import {incrementIfAtLeast, noncapturingDelim, spliceStr} from './utils-internals.js';\nimport {Context, replaceUnescaped} from 'regex-utilities';\n/**\n@import {PluginData, PluginResult} from './regex.js';\n*/\n\nconst atomicPluginToken = new RegExp(String.raw`(?<noncapturingStart>${noncapturingDelim})|(?<capturingStart>\\((?:\\?<[^>]+>)?)|\\\\?.`, 'gsu');\n\n/**\nApply transformations for atomic groups: `(?>\u2026)`.\n@param {string} expression\n@param {PluginData} [data]\n@returns {Required<PluginResult>}\n*/\nfunction atomic(expression, data) {\n const hiddenCaptures = data?.hiddenCaptures ?? [];\n // Capture transfer is used by <github.com/slevithan/oniguruma-to-es>\n let captureTransfers = data?.captureTransfers ?? new Map();\n if (!/\\(\\?>/.test(expression)) {\n return {\n pattern: expression,\n captureTransfers,\n hiddenCaptures,\n };\n }\n\n const aGDelim = '(?>';\n const emulatedAGDelim = '(?:(?=(';\n const captureNumMap = [0];\n const addedHiddenCaptures = [];\n let numCapturesBeforeAG = 0;\n let numAGs = 0;\n let aGPos = NaN;\n let hasProcessedAG;\n do {\n hasProcessedAG = false;\n let numCharClassesOpen = 0;\n let numGroupsOpenInAG = 0;\n let inAG = false;\n let match;\n atomicPluginToken.lastIndex = Number.isNaN(aGPos) ? 0 : aGPos + emulatedAGDelim.length;\n while (match = atomicPluginToken.exec(expression)) {\n const {0: m, index, groups: {capturingStart, noncapturingStart}} = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n\n if (m === aGDelim && !inAG) {\n aGPos = index;\n inAG = true;\n } else if (inAG && noncapturingStart) {\n numGroupsOpenInAG++;\n } else if (capturingStart) {\n if (inAG) {\n numGroupsOpenInAG++;\n } else {\n numCapturesBeforeAG++;\n captureNumMap.push(numCapturesBeforeAG + numAGs);\n }\n } else if (m === ')' && inAG) {\n if (!numGroupsOpenInAG) {\n numAGs++;\n const addedCaptureNum = numCapturesBeforeAG + numAGs;\n // Replace `expression` and use `<$$N>` as a temporary wrapper for the backref so it\n // can avoid backref renumbering afterward. Wrap the whole substitution (including the\n // lookahead and following backref) in a noncapturing group to handle following\n // quantifiers and literal digits\n expression = `${expression.slice(0, aGPos)}${emulatedAGDelim}${\n expression.slice(aGPos + aGDelim.length, index)\n }))<$$${addedCaptureNum}>)${expression.slice(index + 1)}`;\n hasProcessedAG = true;\n addedHiddenCaptures.push(addedCaptureNum);\n incrementIfAtLeast(hiddenCaptures, addedCaptureNum);\n if (captureTransfers.size) {\n const newCaptureTransfers = new Map();\n captureTransfers.forEach((from, to) => {\n newCaptureTransfers.set(\n to >= addedCaptureNum ? to + 1 : to,\n from.map(f => f >= addedCaptureNum ? f + 1 : f)\n );\n });\n captureTransfers = newCaptureTransfers;\n }\n break;\n }\n numGroupsOpenInAG--;\n }\n\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n // Start over from the beginning of the atomic group's contents, in case the processed group\n // contains additional atomic groups\n } while (hasProcessedAG);\n\n hiddenCaptures.push(...addedHiddenCaptures);\n\n // Second pass to adjust numbered backrefs\n expression = replaceUnescaped(\n expression,\n String.raw`\\\\(?<backrefNum>[1-9]\\d*)|<\\$\\$(?<wrappedBackrefNum>\\d+)>`,\n ({0: m, groups: {backrefNum, wrappedBackrefNum}}) => {\n if (backrefNum) {\n const bNum = +backrefNum;\n if (bNum > captureNumMap.length - 1) {\n throw new Error(`Backref \"${m}\" greater than number of captures`);\n }\n return `\\\\${captureNumMap[bNum]}`;\n }\n return `\\\\${wrappedBackrefNum}`;\n },\n Context.DEFAULT\n );\n\n return {\n pattern: expression,\n captureTransfers,\n hiddenCaptures,\n };\n}\n\nconst baseQuantifier = String.raw`(?:[?*+]|\\{\\d+(?:,\\d*)?\\})`;\n// Complete tokenizer for base syntax; doesn't (need to) know about character-class-only syntax\nconst possessivePluginToken = new RegExp(String.raw`\n\\\\(?: \\d+\n | c[A-Za-z]\n | [gk]<[^>]+>\n | [pPu]\\{[^\\}]+\\}\n | u[A-Fa-f\\d]{4}\n | x[A-Fa-f\\d]{2}\n )\n| \\((?: \\? (?: [:=!>]\n | <(?:[=!]|[^>]+>)\n | [A-Za-z\\-]+:\n | \\(DEFINE\\)\n ))?\n| (?<qBase>${baseQuantifier})(?<qMod>[?+]?)(?<invalidQ>[?*+\\{]?)\n| \\\\?.\n`.replace(/\\s+/g, ''), 'gsu');\n\n/**\nTransform posessive quantifiers into atomic groups. The posessessive quantifiers are:\n`?+`, `*+`, `++`, `{N}+`, `{N,}+`, `{N,N}+`.\nThis follows Java, PCRE, Perl, and Python.\nPossessive quantifiers in Oniguruma and Onigmo are only: `?+`, `*+`, `++`.\n@param {string} expression\n@returns {PluginResult}\n*/\nfunction possessive(expression) {\n if (!(new RegExp(`${baseQuantifier}\\\\+`).test(expression))) {\n return {\n pattern: expression,\n };\n }\n\n const openGroupIndices = [];\n let lastGroupIndex = null;\n let lastCharClassIndex = null;\n let lastToken = '';\n let numCharClassesOpen = 0;\n let match;\n possessivePluginToken.lastIndex = 0;\n while (match = possessivePluginToken.exec(expression)) {\n const {0: m, index, groups: {qBase, qMod, invalidQ}} = match;\n if (m === '[') {\n if (!numCharClassesOpen) {\n lastCharClassIndex = index;\n }\n numCharClassesOpen++;\n } else if (m === ']') {\n if (numCharClassesOpen) {\n numCharClassesOpen--;\n // Unmatched `]`\n } else {\n lastCharClassIndex = null;\n }\n } else if (!numCharClassesOpen) {\n\n if (qMod === '+' && lastToken && !lastToken.startsWith('(')) {\n // Invalid following quantifier would become valid via the wrapping group\n if (invalidQ) {\n throw new Error(`Invalid quantifier \"${m}\"`);\n }\n let charsAdded = -1; // -1 for removed trailing `+`\n // Possessivizing fixed repetition quantifiers like `{2}` does't change their behavior, so\n // avoid doing so (convert them to greedy)\n if (/^\\{\\d+\\}$/.test(qBase)) {\n expression = spliceStr(expression, index + qBase.length, qMod, '');\n } else {\n if (lastToken === ')' || lastToken === ']') {\n const nodeIndex = lastToken === ')' ? lastGroupIndex : lastCharClassIndex;\n // Unmatched `)` would break out of the wrapping group and mess with handling.\n // Unmatched `]` wouldn't be a problem, but it's unnecessary to have dedicated support\n // for unescaped `]++` since this won't work with flag u or v anyway\n if (nodeIndex === null) {\n throw new Error(`Invalid unmatched \"${lastToken}\"`);\n }\n expression = `${expression.slice(0, nodeIndex)}(?>${expression.slice(nodeIndex, index)}${qBase})${expression.slice(index + m.length)}`;\n } else {\n expression = `${expression.slice(0, index - lastToken.length)}(?>${lastToken}${qBase})${expression.slice(index + m.length)}`;\n }\n charsAdded += 4; // `(?>)`\n }\n possessivePluginToken.lastIndex += charsAdded;\n } else if (m[0] === '(') {\n openGroupIndices.push(index);\n } else if (m === ')') {\n lastGroupIndex = openGroupIndices.length ? openGroupIndices.pop() : null;\n }\n\n }\n lastToken = m;\n }\n\n return {\n pattern: expression,\n };\n}\n\nexport {\n atomic,\n possessive,\n};\n", "import {Context, forEachUnescaped, getGroupContents, hasUnescaped, replaceUnescaped} from 'regex-utilities';\n\nconst r = String.raw;\nconst gRToken = r`\\\\g<(?<gRNameOrNum>[^>&]+)&R=(?<gRDepth>[^>]+)>`;\nconst recursiveToken = r`\\(\\?R=(?<rDepth>[^\\)]+)\\)|${gRToken}`;\nconst namedCaptureDelim = r`\\(\\?<(?![=!])(?<captureName>[^>]+)>`;\nconst captureDelim = r`${namedCaptureDelim}|(?<unnamed>\\()(?!\\?)`;\nconst token = new RegExp(r`${namedCaptureDelim}|${recursiveToken}|\\(\\?|\\\\?.`, 'gsu');\nconst overlappingRecursionMsg = 'Cannot use multiple overlapping recursions';\n\n/**\n@param {string} pattern\n@param {{\n flags?: string;\n captureTransfers?: Map<number, Array<number>>;\n hiddenCaptures?: Array<number>;\n mode?: 'plugin' | 'external';\n}} [data]\n@returns {{\n pattern: string;\n captureTransfers: Map<number, Array<number>>;\n hiddenCaptures: Array<number>;\n}}\n*/\nfunction recursion(pattern, data) {\n const {hiddenCaptures, mode} = {\n hiddenCaptures: [],\n mode: 'plugin',\n ...data,\n };\n // Capture transfer is used by <github.com/slevithan/oniguruma-to-es>\n let captureTransfers = data?.captureTransfers ?? new Map();\n // Keep the initial fail-check (which avoids unneeded processing) as fast as possible by testing\n // without the accuracy improvement of using `hasUnescaped` with `Context.DEFAULT`\n if (!(new RegExp(recursiveToken, 'su').test(pattern))) {\n return {\n pattern,\n captureTransfers,\n hiddenCaptures,\n };\n }\n if (mode === 'plugin' && hasUnescaped(pattern, r`\\(\\?\\(DEFINE\\)`, Context.DEFAULT)) {\n throw new Error('DEFINE groups cannot be used with recursion');\n }\n\n const addedHiddenCaptures = [];\n const hasNumberedBackref = hasUnescaped(pattern, r`\\\\[1-9]`, Context.DEFAULT);\n const groupContentsStartPos = new Map();\n const openGroups = [];\n let hasRecursed = false;\n let numCharClassesOpen = 0;\n let numCapturesPassed = 0;\n let match;\n token.lastIndex = 0;\n while ((match = token.exec(pattern))) {\n const {0: m, groups: {captureName, rDepth, gRNameOrNum, gRDepth}} = match;\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n\n // `(?R=N)`\n if (rDepth) {\n assertMaxInBounds(rDepth);\n if (hasRecursed) {\n throw new Error(overlappingRecursionMsg);\n }\n if (hasNumberedBackref) {\n // Could add support for numbered backrefs with extra effort, but it's probably not worth\n // it. To trigger this error, the regex must include recursion and one of the following:\n // - An interpolated regex that contains a numbered backref (since other numbered\n // backrefs are prevented by implicit flag n).\n // - A numbered backref, when flag n is explicitly disabled.\n // Note that Regex+'s extended syntax (atomic groups and sometimes subroutines) can also\n // add numbered backrefs, but those work fine because external plugins like this one run\n // *before* the transformation of built-in syntax extensions\n throw new Error(\n // When used in `external` mode by transpilers other than Regex+, backrefs might have\n // gone through conversion from named to numbered, so avoid a misleading error\n `${mode === 'external' ? 'Backrefs' : 'Numbered backrefs'} cannot be used with global recursion`\n );\n }\n const left = pattern.slice(0, match.index);\n const right = pattern.slice(token.lastIndex);\n if (hasUnescaped(right, recursiveToken, Context.DEFAULT)) {\n throw new Error(overlappingRecursionMsg);\n }\n const reps = +rDepth - 1;\n pattern = makeRecursive(\n left,\n right,\n reps,\n false,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n );\n captureTransfers = mapCaptureTransfers(\n captureTransfers,\n left,\n reps,\n addedHiddenCaptures.length,\n 0,\n numCapturesPassed\n );\n // No need to parse further\n break;\n // `\\g<name&R=N>`, `\\g<number&R=N>`\n } else if (gRNameOrNum) {\n assertMaxInBounds(gRDepth);\n let isWithinReffedGroup = false;\n for (const g of openGroups) {\n if (g.name === gRNameOrNum || g.num === +gRNameOrNum) {\n isWithinReffedGroup = true;\n if (g.hasRecursedWithin) {\n throw new Error(overlappingRecursionMsg);\n }\n break;\n }\n }\n if (!isWithinReffedGroup) {\n throw new Error(r`Recursive \\g cannot be used outside the referenced group \"${\n mode === 'external' ? gRNameOrNum : r`\\g<${gRNameOrNum}&R=${gRDepth}>`\n }\"`);\n }\n const startPos = groupContentsStartPos.get(gRNameOrNum);\n const groupContents = getGroupContents(pattern, startPos);\n if (\n hasNumberedBackref &&\n hasUnescaped(groupContents, r`${namedCaptureDelim}|\\((?!\\?)`, Context.DEFAULT)\n ) {\n throw new Error(\n // When used in `external` mode by transpilers other than Regex+, backrefs might have\n // gone through conversion from named to numbered, so avoid a misleading error\n `${mode === 'external' ? 'Backrefs' : 'Numbered backrefs'} cannot be used with recursion of capturing groups`\n );\n }\n const groupContentsLeft = pattern.slice(startPos, match.index);\n const groupContentsRight = groupContents.slice(groupContentsLeft.length + m.length);\n const numAddedHiddenCapturesPreExpansion = addedHiddenCaptures.length;\n const reps = +gRDepth - 1;\n const expansion = makeRecursive(\n groupContentsLeft,\n groupContentsRight,\n reps,\n true,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n );\n captureTransfers = mapCaptureTransfers(\n captureTransfers,\n groupContentsLeft,\n reps,\n addedHiddenCaptures.length - numAddedHiddenCapturesPreExpansion,\n numAddedHiddenCapturesPreExpansion,\n numCapturesPassed\n );\n const pre = pattern.slice(0, startPos);\n const post = pattern.slice(startPos + groupContents.length);\n // Modify the string we're looping over\n pattern = `${pre}${expansion}${post}`;\n // Step forward for the next loop iteration\n token.lastIndex += expansion.length - m.length - groupContentsLeft.length - groupContentsRight.length;\n openGroups.forEach(g => g.hasRecursedWithin = true);\n hasRecursed = true;\n } else if (captureName) {\n numCapturesPassed++;\n groupContentsStartPos.set(String(numCapturesPassed), token.lastIndex);\n groupContentsStartPos.set(captureName, token.lastIndex);\n openGroups.push({\n num: numCapturesPassed,\n name: captureName,\n });\n } else if (m[0] === '(') {\n const isUnnamedCapture = m === '(';\n if (isUnnamedCapture) {\n numCapturesPassed++;\n groupContentsStartPos.set(String(numCapturesPassed), token.lastIndex);\n }\n openGroups.push(isUnnamedCapture ? {num: numCapturesPassed} : {});\n } else if (m === ')') {\n openGroups.pop();\n }\n\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n\n hiddenCaptures.push(...addedHiddenCaptures);\n\n return {\n pattern,\n captureTransfers,\n hiddenCaptures,\n };\n}\n\n/**\n@param {string} max\n*/\nfunction assertMaxInBounds(max) {\n const errMsg = `Max depth must be integer between 2 and 100; used ${max}`;\n if (!/^[1-9]\\d*$/.test(max)) {\n throw new Error(errMsg);\n }\n max = +max;\n if (max < 2 || max > 100) {\n throw new Error(errMsg);\n }\n}\n\n/**\n@param {string} left\n@param {string} right\n@param {number} reps\n@param {boolean} isSubpattern\n@param {Array<number>} hiddenCaptures\n@param {Array<number>} addedHiddenCaptures\n@param {number} numCapturesPassed\n@returns {string}\n*/\nfunction makeRecursive(\n left,\n right,\n reps,\n isSubpattern,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n) {\n const namesInRecursed = new Set();\n // Can skip this work if not needed\n if (isSubpattern) {\n forEachUnescaped(left + right, namedCaptureDelim, ({groups: {captureName}}) => {\n namesInRecursed.add(captureName);\n }, Context.DEFAULT);\n }\n const rest = [\n reps,\n isSubpattern ? namesInRecursed : null,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed,\n ];\n // Depth 2: 'left(?:left(?:)right)right'\n // Depth 3: 'left(?:left(?:left(?:)right)right)right'\n // Empty group in the middle separates tokens and absorbs a following quantifier if present\n return `${left}${\n repeatWithDepth(`(?:${left}`, 'forward', ...rest)\n }(?:)${\n repeatWithDepth(`${right})`, 'backward', ...rest)\n }${right}`;\n}\n\n/**\n@param {string} pattern\n@param {'forward' | 'backward'} direction\n@param {number} reps\n@param {Set<string> | null} namesInRecursed\n@param {Array<number>} hiddenCaptures\n@param {Array<number>} addedHiddenCaptures\n@param {number} numCapturesPassed\n@returns {string}\n*/\nfunction repeatWithDepth(\n pattern,\n direction,\n reps,\n namesInRecursed,\n hiddenCaptures,\n addedHiddenCaptures,\n numCapturesPassed\n) {\n const startNum = 2;\n const getDepthNum = i => direction === 'forward' ? (i + startNum) : (reps - i + startNum - 1);\n let result = '';\n for (let i = 0; i < reps; i++) {\n const depthNum = getDepthNum(i);\n result += replaceUnescaped(\n pattern,\n r`${captureDelim}|\\\\k<(?<backref>[^>]+)>`,\n ({0: m, groups: {captureName, unnamed, backref}}) => {\n if (backref && namesInRecursed && !namesInRecursed.has(backref)) {\n // Don't alter backrefs to groups outside the recursed subpattern\n return m;\n }\n const suffix = `_$${depthNum}`;\n if (unnamed || captureName) {\n const addedCaptureNum = numCapturesPassed + addedHiddenCaptures.length + 1;\n addedHiddenCaptures.push(addedCaptureNum);\n incrementIfAtLeast(hiddenCaptures, addedCaptureNum);\n return unnamed ? m : `(?<${captureName}${suffix}>`;\n }\n return r`\\k<${backref}${suffix}>`;\n },\n Context.DEFAULT\n );\n }\n return result;\n}\n\n/**\nUpdates the array in place by incrementing each value greater than or equal to the threshold.\n@param {Array<number>} arr\n@param {number} threshold\n*/\nfunction incrementIfAtLeast(arr, threshold) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] >= threshold) {\n arr[i]++;\n }\n }\n}\n\n/**\n@param {Map<number, Array<number>>} captureTransfers\n@param {string} left\n@param {number} reps\n@param {number} numCapturesAddedInExpansion\n@param {number} numAddedHiddenCapturesPreExpansion\n@param {number} numCapturesPassed\n@returns {Map<number, Array<number>>}\n*/\nfunction mapCaptureTransfers(captureTransfers, left, reps, numCapturesAddedInExpansion, numAddedHiddenCapturesPreExpansion, numCapturesPassed) {\n if (captureTransfers.size && numCapturesAddedInExpansion) {\n let numCapturesInLeft = 0;\n forEachUnescaped(left, captureDelim, () => numCapturesInLeft++, Context.DEFAULT);\n // Is 0 for global recursion\n const recursionDelimCaptureNum = numCapturesPassed - numCapturesInLeft + numAddedHiddenCapturesPreExpansion;\n const newCaptureTransfers = new Map();\n captureTransfers.forEach((from, to) => {\n const numCapturesInRight = (numCapturesAddedInExpansion - (numCapturesInLeft * reps)) / reps;\n const numCapturesAddedInLeft = numCapturesInLeft * reps;\n const newTo = to > (recursionDelimCaptureNum + numCapturesInLeft) ? to + numCapturesAddedInExpansion : to;\n const newFrom = [];\n for (const f of from) {\n // Before the recursed subpattern\n if (f <= recursionDelimCaptureNum) {\n newFrom.push(f);\n // After the recursed subpattern\n } else if (f > (recursionDelimCaptureNum + numCapturesInLeft + numCapturesInRight)) {\n newFrom.push(f + numCapturesAddedInExpansion);\n // Within the recursed subpattern, on the left of the recursion token\n } else if (f <= (recursionDelimCaptureNum + numCapturesInLeft)) {\n for (let i = 0; i <= reps; i++) {\n newFrom.push(f + (numCapturesInLeft * i));\n }\n // Within the recursed subpattern, on the right of the recursion token\n } else {\n for (let i = 0; i <= reps; i++) {\n newFrom.push(f + numCapturesAddedInLeft + (numCapturesInRight * i));\n }\n }\n }\n newCaptureTransfers.set(newTo, newFrom);\n });\n return newCaptureTransfers;\n }\n return captureTransfers;\n}\n\nexport {\n recursion,\n};\n", "import {EsVersion, Target} from './options.js';\n\nconst cp = String.fromCodePoint;\nconst r = String.raw;\n\nconst envFlags = {};\n// Use `globalThis` to prevent env-testing fns from being replaced with constants during bundling\n// with Rolldown; see <github.com/slevithan/oniguruma-to-es/issues/42>\nconst globalRegExp = globalThis.RegExp;\nenvFlags.flagGroups = (() => {\n try {\n new globalRegExp('(?i:)');\n } catch {\n return false;\n }\n return true;\n})();\nenvFlags.unicodeSets = (() => {\n try {\n // Check for flag v support and also that nested classes can be parsed\n // See <github.com/slevithan/oniguruma-to-es/pull/41>\n new globalRegExp('[[]]', 'v');\n } catch {\n return false;\n }\n return true;\n})();\n// Detect WebKit bug: <github.com/slevithan/oniguruma-to-es/issues/30>\nenvFlags.bugFlagVLiteralHyphenIsRange = envFlags.unicodeSets ? (() => {\n try {\n new globalRegExp(r`[\\d\\-a]`, 'v');\n } catch {\n return true;\n }\n return false;\n})() : false;\n// Detect WebKit bug: <github.com/slevithan/oniguruma-to-es/issues/38>\nenvFlags.bugNestedClassIgnoresNegation = envFlags.unicodeSets && new globalRegExp('[[^a]]', 'v').test('a');\n\nfunction getNewCurrentFlags(current, {enable, disable}) {\n return {\n dotAll: !disable?.dotAll && !!(enable?.dotAll || current.dotAll),\n ignoreCase: !disable?.ignoreCase && !!(enable?.ignoreCase || current.ignoreCase),\n };\n}\n\nfunction getOrInsert(map, key, defaultValue) {\n if (!map.has(key)) {\n map.set(key, defaultValue);\n }\n return map.get(key);\n}\n\n/**\n@param {keyof Target} target\n@param {keyof Target} min\n@returns {boolean}\n*/\nfunction isMinTarget(target, min) {\n return EsVersion[target] >= EsVersion[min];\n}\n\nfunction throwIfNullish(value, msg) {\n if (value == null) {\n throw new Error(msg ?? 'Value expected');\n }\n return value;\n}\n\nexport {\n cp,\n envFlags,\n getNewCurrentFlags,\n getOrInsert,\n isMinTarget,\n r,\n throwIfNullish,\n};\n", "import {envFlags} from './utils.js';\n/**\n@import {ToRegExpOptions} from './index.js';\n*/\n\nconst Accuracy = /** @type {const} */ ({\n default: 'default',\n strict: 'strict',\n});\n\nconst EsVersion = {\n ES2025: 2025,\n ES2024: 2024,\n ES2018: 2018,\n};\n\nconst Target = /** @type {const} */ ({\n auto: 'auto',\n ES2025: 'ES2025',\n ES2024: 'ES2024',\n ES2018: 'ES2018',\n});\n\n/**\nReturns a complete set of options, with default values set for options that weren't provided.\n@param {ToRegExpOptions} [options]\n@returns {Required<ToRegExpOptions>}\n*/\nfunction getOptions(options = {}) {\n if ({}.toString.call(options) !== '[object Object]') {\n throw new Error('Unexpected options');\n }\n if (options.target !== undefined && !Target[options.target]) {\n throw new Error(`Unexpected target \"${options.target}\"`)\n }\n // Set default values\n const opts = {\n // Sets the level of emulation rigor/strictness.\n accuracy: 'default',\n // Disables advanced emulation that relies on returning a `RegExp` subclass, resulting in\n // certain patterns not being emulatable.\n avoidSubclass: false,\n // Oniguruma flags; a string with `i`, `m`, `x`, `D`, `S`, `W`, `y{g}` in any order (all\n // optional). Oniguruma's `m` is equivalent to JavaScript's `s` (`dotAll`).\n flags: '',\n // Include JavaScript flag `g` (`global`) in the result.\n global: false,\n // Include JavaScript flag `d` (`hasIndices`) in the result.\n hasIndices: false,\n // Delay regex construction until first use if the transpiled pattern is at least this length.\n lazyCompileLength: Infinity,\n // JavaScript version used for generated regexes. Using `auto` detects the best value based on\n // your environment. Later targets allow faster processing, simpler generated source, and\n // support for additional features.\n target: 'auto',\n // Disables minifications that simplify the pattern without changing the meaning.\n verbose: false,\n ...options,\n // Advanced options that override standard behavior, error checking, and flags when enabled.\n rules: {\n // Useful with TextMate grammars that merge backreferences across patterns.\n allowOrphanBackrefs: false,\n // Use ASCII `\\b` and `\\B`, which increases search performance of generated regexes.\n asciiWordBoundaries: false,\n // Allow unnamed captures and numbered calls (backreferences and subroutines) when using\n // named capture. This is Oniguruma option `ONIG_OPTION_CAPTURE_GROUP`; on by default in\n // `vscode-oniguruma`.\n captureGroup: false,\n // Change the recursion depth limit from Oniguruma's `20` to an integer `2`\u2013`20`.\n recursionLimit: 20,\n // `^` as `\\A`; `$` as`\\Z`. Improves search performance of generated regexes without changing\n // the meaning if searching line by line. This is Oniguruma option `ONIG_OPTION_SINGLELINE`.\n singleline: false,\n ...options.rules,\n },\n };\n if (opts.target === 'auto') {\n opts.target = envFlags.flagGroups ? 'ES2025' : (envFlags.unicodeSets ? 'ES2024' : 'ES2018');\n }\n return opts;\n}\n\nexport {\n Accuracy,\n EsVersion,\n getOptions,\n Target,\n};\n", "import {cp, r} from './utils.js';\nimport {slug} from 'oniguruma-parser/parser';\n\n// `\\t\\n\\v\\f\\r\\x20`\nconst asciiSpaceChar = '[\\t-\\r ]';\n\nconst CharsWithoutIgnoreCaseExpansion = new Set([\n cp(0x130), // \u0130\n cp(0x131), // \u0131\n]);\n\n// Different than `PosixClassMap`'s `word`\nconst defaultWordChar = r`[\\p{L}\\p{M}\\p{N}\\p{Pc}]`;\n\nfunction getIgnoreCaseMatchChars(char) {\n // Some chars should not match the chars they case swap to\n if (CharsWithoutIgnoreCaseExpansion.has(char)) {\n return [char];\n }\n const set = new Set();\n const lower = char.toLowerCase();\n // Everything else is based on `lower`\n const upper = lower.toUpperCase();\n const title = LowerToTitleCaseMap.get(lower);\n const altLower = LowerToAlternativeLowerCaseMap.get(lower);\n const altUpper = LowerToAlternativeUpperCaseMap.get(lower);\n // Exclude ucase if multiple chars; count code point length. Excludes ucase versions of German\n // es-zed '\u00DF', ligatures like '\uFB00', and chars with no precomposed ucase like '\u0149'. See\n // <unicode.org/Public/UNIDATA/SpecialCasing.txt>\n if ([...upper].length === 1) {\n set.add(upper);\n }\n altUpper && set.add(altUpper);\n title && set.add(title);\n // Lcase of '\u0130' is multiple chars, but it's excluded by `CharsWithoutIgnoreCaseExpansion`\n set.add(lower);\n altLower && set.add(altLower);\n return [...set];\n}\n\n// The following set includes:\n// - All ES2024 general categories and their aliases (all are supported by Oniguruma). See\n// <github.com/mathiasbynens/unicode-match-property-value-ecmascript/blob/main/data/mappings.js>\n// - All ES2024 binary properties and their aliases (all are supported by Oniguruma). See\n// <tc39.es/ecma262/multipage/text-processing.html#table-binary-unicode-properties>\n// Unicode properties must be mapped to property names supported by JS, and must also apply JS's\n// stricter rules for casing, whitespace, hyphens, and underscores in Unicode property names. In\n// order to remain lightweight, this library assumes properties not in this list are Unicode script\n// names (which require a `Script=` or `sc=` prefix in JS). Unlike JS, Oniguruma doesn't support\n// script extensions, and it supports some properties that aren't supported in JS (including blocks\n// with an `In_` prefix). See also:\n// - Properties supported in Oniguruma: <github.com/kkos/oniguruma/blob/master/doc/UNICODE_PROPERTIES>\n// - Properties supported in JS by spec version: <github.com/eslint-community/regexpp/blob/main/src/unicode/properties.ts>\nconst JsUnicodePropertyMap = /* @__PURE__ */ new Map(\n`C Other\nCc Control cntrl\nCf Format\nCn Unassigned\nCo Private_Use\nCs Surrogate\nL Letter\nLC Cased_Letter\nLl Lowercase_Letter\nLm Modifier_Letter\nLo Other_Letter\nLt Titlecase_Letter\nLu Uppercase_Letter\nM Mark Combining_Mark\nMc Spacing_Mark\nMe Enclosing_Mark\nMn Nonspacing_Mark\nN Number\nNd Decimal_Number digit\nNl Letter_Number\nNo Other_Number\nP Punctuation punct\nPc Connector_Punctuation\nPd Dash_Punctuation\nPe Close_Punctuation\nPf Final_Punctuation\nPi Initial_Punctuation\nPo Other_Punctuation\nPs Open_Punctuation\nS Symbol\nSc Currency_Symbol\nSk Modifier_Symbol\nSm Math_Symbol\nSo Other_Symbol\nZ Separator\nZl Line_Separator\nZp Paragraph_Separator\nZs Space_Separator\nASCII\nASCII_Hex_Digit AHex\nAlphabetic Alpha\nAny\nAssigned\nBidi_Control Bidi_C\nBidi_Mirrored Bidi_M\nCase_Ignorable CI\nCased\nChanges_When_Casefolded CWCF\nChanges_When_Casemapped CWCM\nChanges_When_Lowercased CWL\nChanges_When_NFKC_Casefolded CWKCF\nChanges_When_Titlecased CWT\nChanges_When_Uppercased CWU\nDash\nDefault_Ignorable_Code_Point DI\nDeprecated Dep\nDiacritic Dia\nEmoji\nEmoji_Component EComp\nEmoji_Modifier EMod\nEmoji_Modifier_Base EBase\nEmoji_Presentation EPres\nExtended_Pictographic ExtPict\nExtender Ext\nGrapheme_Base Gr_Base\nGrapheme_Extend Gr_Ext\nHex_Digit Hex\nIDS_Binary_Operator IDSB\nIDS_Trinary_Operator IDST\nID_Continue IDC\nID_Start IDS\nIdeographic Ideo\nJoin_Control Join_C\nLogical_Order_Exception LOE\nLowercase Lower\nMath\nNoncharacter_Code_Point NChar\nPattern_Syntax Pat_Syn\nPattern_White_Space Pat_WS\nQuotation_Mark QMark\nRadical\nRegional_Indicator RI\nSentence_Terminal STerm\nSoft_Dotted SD\nTerminal_Punctuation Term\nUnified_Ideograph UIdeo\nUppercase Upper\nVariation_Selector VS\nWhite_Space space\nXID_Continue XIDC\nXID_Start XIDS`.\n split(/\\s/).\n map(p => [slug(p), p])\n);\n\nconst LowerToAlternativeLowerCaseMap = new Map([\n ['s', cp(0x17F)], // s, \u017F\n [cp(0x17F), 's'], // \u017F, s\n]);\n\nconst LowerToAlternativeUpperCaseMap = new Map([\n [cp(0xDF), cp(0x1E9E)], // \u00DF, \u1E9E\n [cp(0x6B), cp(0x212A)], // k, \u212A (Kelvin)\n [cp(0xE5), cp(0x212B)], // \u00E5, \u212B (Angstrom)\n [cp(0x3C9), cp(0x2126)], // \u03C9, \u2126 (Ohm)\n]);\n\n// See <github.com/node-unicode/unicode-16.0.0/tree/main/General_Category/Titlecase_Letter>\nconst LowerToTitleCaseMap = new Map([\n titleEntry(0x1C5),\n titleEntry(0x1C8),\n titleEntry(0x1CB),\n titleEntry(0x1F2),\n ...titleRange(0x1F88, 0x1F8F),\n ...titleRange(0x1F98, 0x1F9F),\n ...titleRange(0x1FA8, 0x1FAF),\n titleEntry(0x1FBC),\n titleEntry(0x1FCC),\n titleEntry(0x1FFC),\n]);\n\n// Unlike Onig's Unicode properties via `\\p` and `\\P`, these names are case sensitive and don't\n// allow inserting whitespace and underscores. Definitions at\n// <github.com/kkos/oniguruma/blob/master/doc/RE> (see: POSIX bracket: Unicode Case)\n// Note: Handling in the transformer assumes all values here are a single, negateable node that's\n// not pre-negated at the top level. It also uses ASCII versions of `graph` and `print` for target\n// `ES2018` (which doesn't allow intersection) if `accuracy` isn't `strict`\nconst PosixClassMap = new Map([\n ['alnum', r`[\\p{Alpha}\\p{Nd}]`],\n ['alpha', r`\\p{Alpha}`],\n ['ascii', r`\\p{ASCII}`],\n ['blank', r`[\\p{Zs}\\t]`],\n ['cntrl', r`\\p{Cc}`],\n ['digit', r`\\p{Nd}`],\n ['graph', r`[\\P{space}&&\\P{Cc}&&\\P{Cn}&&\\P{Cs}]`],\n ['lower', r`\\p{Lower}`],\n ['print', r`[[\\P{space}&&\\P{Cc}&&\\P{Cn}&&\\P{Cs}]\\p{Zs}]`],\n ['punct', r`[\\p{P}\\p{S}]`], // Updated value from Onig 6.9.9; changed from Unicode `\\p{punct}`\n ['space', r`\\p{space}`],\n ['upper', r`\\p{Upper}`],\n ['word', r`[\\p{Alpha}\\p{M}\\p{Nd}\\p{Pc}]`],\n ['xdigit', r`\\p{AHex}`],\n]);\n\nfunction range(start, end) {\n // const range = Array.from(Array(end + 1 - start), (_, i) => i + start);\n // const range = Array(end + 1 - start).fill(start).map((x, i) => x + i);\n const range = [];\n for (let i = start; i <= end; i++) {\n range.push(i);\n }\n return range;\n}\n\nfunction titleEntry(codePoint) {\n const char = cp(codePoint);\n return [char.toLowerCase(), char];\n}\n\nfunction titleRange(start, end) {\n return range(start, end).map(codePoint => titleEntry(codePoint));\n}\n\nconst UnicodePropertiesWithSpecificCase = new Set([\n 'Lower', 'Lowercase',\n 'Upper', 'Uppercase',\n 'Ll', 'Lowercase_Letter',\n 'Lt', 'Titlecase_Letter',\n 'Lu', 'Uppercase_Letter',\n // The `Changes_When_*` properties (and their aliases) could be included, but they're very rare.\n // Some other properties include a handful of chars with specific cases only, but these chars are\n // generally extreme edge cases and using such properties case insensitively generally produces\n // undesired behavior anyway\n]);\n\nexport {\n asciiSpaceChar,\n defaultWordChar,\n getIgnoreCaseMatchChars,\n JsUnicodePropertyMap,\n PosixClassMap,\n UnicodePropertiesWithSpecificCase,\n};\n", "import {Accuracy, Target} from './options.js';\nimport {asciiSpaceChar, defaultWordChar, JsUnicodePropertyMap, PosixClassMap} from './unicode.js';\nimport {cp, getNewCurrentFlags, getOrInsert, isMinTarget, r} from './utils.js';\nimport {createAlternative, createAssertion, createBackreference, createCapturingGroup, createCharacter, createCharacterClass, createCharacterSet, createGroup, createLookaroundAssertion, createQuantifier, createSubroutine, createUnicodeProperty, hasOnlyChild, parse, slug} from 'oniguruma-parser/parser';\nimport {traverse} from 'oniguruma-parser/traverser';\n/**\n@import {CapturingGroupNode, OnigurumaAst, Node} from 'oniguruma-parser/parser';\n@import {Visitor} from 'oniguruma-parser/traverser';\n*/\n\n/**\n@typedef {\n OnigurumaAst & {\n options: {\n disable: {[key: string]: boolean};\n force: {[key: string]: boolean};\n };\n _originMap: Map<CapturingGroupNode, CapturingGroupNode>;\n _strategy: string | null;\n }\n} RegexPlusAst\n*/\n/**\nTransforms an Oniguruma AST in-place to a [Regex+](https://github.com/slevithan/regex) AST.\nAssumes target ES2025, expecting the generator to down-convert to the desired JS target version.\n\nRegex+'s syntax and behavior is a strict superset of native JavaScript, so the AST is very close\nto representing native ES2025 `RegExp` but with some added features (atomic groups, possessive\nquantifiers, recursion). The AST doesn't use some of Regex+'s extended features like flag x or\nsubroutines because they follow PCRE behavior and work somewhat differently than in Oniguruma. The\nAST represents what's needed to precisely reproduce Oniguruma behavior using Regex+.\n@param {OnigurumaAst} ast\n@param {{\n accuracy?: keyof Accuracy;\n asciiWordBoundaries?: boolean;\n avoidSubclass?: boolean;\n bestEffortTarget?: keyof Target;\n}} [options]\n@returns {RegexPlusAst}\n*/\nfunction transform(ast, options) {\n const opts = {\n // A couple edge cases exist where options `accuracy` and `bestEffortTarget` are used:\n // - `CharacterSet` kind `text_segment` (`\\X`): An exact representation would require heavy\n // Unicode data; a best-effort approximation requires knowing the target.\n // - `CharacterSet` kind `posix` with values `graph` and `print`: Their complex Unicode\n // representations would be hard to change to ASCII versions after the fact in the generator\n // based on `target`/`accuracy`, so produce the appropriate structure here.\n accuracy: 'default',\n asciiWordBoundaries: false,\n avoidSubclass: false,\n bestEffortTarget: 'ES2025',\n ...options,\n };\n // Add `parent` properties to all nodes to help during traversal; also expected by the generator\n addParentProperties(ast);\n const firstPassState = {\n accuracy: opts.accuracy,\n asciiWordBoundaries: opts.asciiWordBoundaries,\n avoidSubclass: opts.avoidSubclass,\n flagDirectivesByAlt: new Map(),\n jsGroupNameMap: new Map(),\n minTargetEs2024: isMinTarget(opts.bestEffortTarget, 'ES2024'),\n passedLookbehind: false,\n strategy: null,\n // Subroutines can appear before the groups they ref, so collect reffed nodes for a second pass \n subroutineRefMap: new Map(),\n supportedGNodes: new Set(),\n digitIsAscii: ast.flags.digitIsAscii,\n spaceIsAscii: ast.flags.spaceIsAscii,\n wordIsAscii: ast.flags.wordIsAscii,\n };\n traverse(ast, FirstPassVisitor, firstPassState);\n // Global flags modified by the first pass\n const globalFlags = {\n dotAll: ast.flags.dotAll,\n ignoreCase: ast.flags.ignoreCase,\n };\n // The interplay of subroutines (with Onig's unique rules/behavior for them; see comments in the\n // parser for details) with backref multiplexing (a unique Onig feature), flag modifiers, and\n // duplicate group names (which might be indirectly referenced by subroutines even though\n // subroutines can't directly reference duplicate names) is extremely complicated to emulate in\n // JS in a way that handles all edge cases, so we need multiple passes to do it\n const secondPassState = {\n currentFlags: globalFlags,\n prevFlags: null,\n globalFlags,\n groupOriginByCopy: new Map(),\n groupsByName: new Map(),\n multiplexCapturesToLeftByRef: new Map(),\n openRefs: new Map(),\n reffedNodesByReferencer: new Map(),\n subroutineRefMap: firstPassState.subroutineRefMap,\n };\n traverse(ast, SecondPassVisitor, secondPassState);\n const thirdPassState = {\n groupsByName: secondPassState.groupsByName,\n highestOrphanBackref: 0,\n numCapturesToLeft: 0,\n reffedNodesByReferencer: secondPassState.reffedNodesByReferencer,\n };\n traverse(ast, ThirdPassVisitor, thirdPassState);\n ast._originMap = secondPassState.groupOriginByCopy;\n ast._strategy = firstPassState.strategy;\n return ast;\n}\n\nconst /** @type {Visitor} */ FirstPassVisitor = {\n AbsenceFunction({node, parent, replaceWith}) {\n const {body, kind} = node;\n if (kind === 'repeater') {\n // Convert `(?~\u2026)` to `(?:(?:(?!\u2026)\\p{Any})*)`\n const innerGroup = createGroup();\n innerGroup.body[0].body.push(\n // Insert own alts as `body`\n createLookaroundAssertion({negate: true, body}),\n createUnicodeProperty('Any')\n );\n const outerGroup = createGroup();\n outerGroup.body[0].body.push(\n createQuantifier('greedy', 0, Infinity, innerGroup)\n );\n replaceWith(setParentDeep(outerGroup, parent), {traverse: true});\n } else {\n throw new Error(`Unsupported absence function \"(?~|\"`);\n }\n },\n\n Alternative: {\n enter({node, parent, key}, {flagDirectivesByAlt}) {\n // Look for own-level flag directives when entering an alternative because after traversing\n // the directive itself, any subsequent flag directives will no longer be at the same level\n const flagDirectives = node.body.filter(el => el.kind === 'flags');\n for (let i = key + 1; i < parent.body.length; i++) {\n const forwardSiblingAlt = parent.body[i];\n getOrInsert(flagDirectivesByAlt, forwardSiblingAlt, []).push(...flagDirectives);\n }\n },\n exit({node}, {flagDirectivesByAlt}) {\n // Wait until exiting to wrap an alternative's nodes with flag groups that extend flag\n // directives from prior sibling alternatives, because doing this at the end allows inner\n // nodes to accurately check their level in the tree\n if (flagDirectivesByAlt.get(node)?.length) {\n const flags = getCombinedFlagModsFromFlagNodes(flagDirectivesByAlt.get(node));\n if (flags) {\n const flagGroup = createGroup({flags});\n flagGroup.body[0].body = node.body;\n node.body = [setParentDeep(flagGroup, node)];\n }\n }\n },\n },\n\n Assertion({node, parent, key, container, root, remove, replaceWith}, state) {\n const {kind, negate} = node;\n const {asciiWordBoundaries, avoidSubclass, supportedGNodes, wordIsAscii} = state;\n if (kind === 'text_segment_boundary') {\n // Supported by the parser but not yet for transpilation\n throw new Error(`Unsupported text segment boundary \"\\\\${negate ? 'Y' : 'y'}\"`);\n } else if (kind === 'line_end') {\n replaceWith(setParentDeep(createLookaroundAssertion({body: [\n createAlternative({body: [createAssertion('string_end')]}),\n createAlternative({body: [createCharacter(10)]}), // `\\n`\n ]}), parent));\n } else if (kind === 'line_start') {\n // Onig's `^` doesn't match after a string-terminating line feed\n replaceWith(setParentDeep(parseFragment(r`(?<=\\A|\\n(?!\\z))`, {skipLookbehindValidation: true}), parent));\n } else if (kind === 'search_start') {\n if (supportedGNodes.has(node)) {\n root.flags.sticky = true;\n remove();\n } else {\n const prev = container[key - 1]; // parent.body[key - 1]\n // Not all ways of blocking the `\\G` from matching are covered here (ex: a node prior to\n // the `prev` node could block), but blocked `\\G` is an edge case and it's okay if some\n // blocked cases result in the standard error for being unsupported without a subclass\n if (prev && isAlwaysNonZeroLength(prev)) {\n replaceWith(setParentDeep(createLookaroundAssertion({negate: true}), parent));\n } else if (avoidSubclass) {\n throw new Error(r`Uses \"\\G\" in a way that requires a subclass`);\n } else {\n replaceWith(setParent(createAssertion('string_start'), parent));\n state.strategy = 'clip_search';\n }\n }\n } else if (kind === 'string_end' || kind === 'string_start') {\n // Don't need transformation since JS flag m isn't used\n } else if (kind === 'string_end_newline') {\n replaceWith(setParentDeep(parseFragment(r`(?=\\n?\\z)`), parent));\n } else if (kind === 'word_boundary') {\n if (!wordIsAscii && !asciiWordBoundaries) {\n const b = `(?:(?<=${defaultWordChar})(?!${defaultWordChar})|(?<!${defaultWordChar})(?=${defaultWordChar}))`;\n const B = `(?:(?<=${defaultWordChar})(?=${defaultWordChar})|(?<!${defaultWordChar})(?!${defaultWordChar}))`;\n replaceWith(setParentDeep(parseFragment(negate ? B : b), parent));\n }\n } else {\n throw new Error(`Unexpected assertion kind \"${kind}\"`);\n }\n },\n\n Backreference({node}, {jsGroupNameMap}) {\n let {ref} = node;\n if (typeof ref === 'string' && !isValidJsGroupName(ref)) {\n ref = getAndStoreJsGroupName(ref, jsGroupNameMap);\n node.ref = ref;\n }\n },\n\n CapturingGroup({node}, {jsGroupNameMap, subroutineRefMap}) {\n let {name} = node;\n if (name && !isValidJsGroupName(name)) {\n name = getAndStoreJsGroupName(name, jsGroupNameMap);\n node.name = name;\n }\n subroutineRefMap.set(node.number, node);\n if (name) {\n subroutineRefMap.set(name, node);\n }\n },\n\n CharacterClassRange({node, parent, replaceWith}) {\n if (parent.kind === 'intersection') {\n // JS doesn't allow intersection with ranges without a wrapper class\n const cc = createCharacterClass({body: [node]});\n replaceWith(setParentDeep(cc, parent), {traverse: true});\n }\n },\n\n CharacterSet({node, parent, replaceWith}, {accuracy, minTargetEs2024, digitIsAscii, spaceIsAscii, wordIsAscii}) {\n const {kind, negate, value} = node;\n // Flag D with `\\d`, `\\p{Digit}`, `[[:digit:]]`\n if (digitIsAscii && (kind === 'digit' || value === 'digit')) {\n replaceWith(setParent(createCharacterSet('digit', {negate}), parent));\n return;\n }\n // Flag S with `\\s`, `\\p{Space}`, `[[:space:]]`\n if (spaceIsAscii && (kind === 'space' || value === 'space')) {\n replaceWith(setParentDeep(setNegate(parseFragment(asciiSpaceChar), negate), parent));\n return;\n }\n // Flag W with `\\w`, `\\p{Word}`, `[[:word:]]`\n if (wordIsAscii && (kind === 'word' || value === 'word')) {\n replaceWith(setParent(createCharacterSet('word', {negate}), parent));\n return;\n }\n if (kind === 'any') {\n replaceWith(setParent(createUnicodeProperty('Any'), parent));\n } else if (kind === 'digit') {\n replaceWith(setParent(createUnicodeProperty('Nd', {negate}), parent));\n } else if (kind === 'dot') {\n // No-op; doesn't need transformation\n } else if (kind === 'text_segment') {\n if (accuracy === 'strict') {\n throw new Error(r`Use of \"\\X\" requires non-strict accuracy`);\n }\n // Emoji pattern based on <github.com/slevithan/emoji-regex-xs> but adapted for our use case\n // Note: Not using raw strings to work around Bun \u2264 1.1.34 issue <github.com/oven-sh/bun/issues/7540>\n const eBase = '\\\\p{Emoji}(?:\\\\p{EMod}|\\\\uFE0F\\\\u20E3?|[\\\\x{E0020}-\\\\x{E007E}]+\\\\x{E007F})?';\n const emoji = r`\\p{RI}{2}|${eBase}(?:\\u200D${eBase})*`;\n replaceWith(setParentDeep(parseFragment(\n // Close approximation of an extended grapheme cluster; see <unicode.org/reports/tr29/>\n r`(?>\\r\\n|${minTargetEs2024 ? r`\\p{RGI_Emoji}` : emoji}|\\P{M}\\p{M}*)`,\n // Allow JS property `RGI_Emoji` through\n {skipPropertyNameValidation: true}\n ), parent));\n } else if (kind === 'hex') {\n replaceWith(setParent(createUnicodeProperty('AHex', {negate}), parent));\n } else if (kind === 'newline') {\n replaceWith(setParentDeep(parseFragment(negate ? '[^\\n]' : '(?>\\r\\n?|[\\n\\v\\f\\x85\\u2028\\u2029])'), parent));\n } else if (kind === 'posix') {\n if (!minTargetEs2024 && (value === 'graph' || value === 'print')) {\n if (accuracy === 'strict') {\n throw new Error(`POSIX class \"${value}\" requires min target ES2024 or non-strict accuracy`);\n }\n let ascii = {\n graph: '!-~',\n print: ' -~',\n }[value];\n if (negate) {\n // POSIX classes are always nested in a char class; manually invert the range rather than\n // using `[^\u2026]` so it can be unwrapped since ES2018 doesn't support nested classes\n ascii = `\\0-${cp(ascii.codePointAt(0) - 1)}${cp(ascii.codePointAt(2) + 1)}-\\u{10FFFF}`;\n }\n replaceWith(setParentDeep(parseFragment(`[${ascii}]`), parent));\n } else {\n replaceWith(setParentDeep(setNegate(parseFragment(PosixClassMap.get(value)), negate), parent));\n }\n } else if (kind === 'property') {\n if (!JsUnicodePropertyMap.has(slug(value))) {\n // Assume it's a script; no error checking is the price for avoiding heavyweight Unicode\n // data for all script names\n node.key = 'sc';\n }\n } else if (kind === 'space') {\n // Can't use JS's Unicode `\\s` since unlike Onig it includes `\\uFEFF` and excludes `\\x85`\n replaceWith(setParent(createUnicodeProperty('space', {negate}), parent));\n } else if (kind === 'word') {\n replaceWith(setParentDeep(setNegate(parseFragment(defaultWordChar), negate), parent));\n } else {\n throw new Error(`Unexpected character set kind \"${kind}\"`);\n }\n },\n\n Directive({node, parent, root, remove, replaceWith, removeAllPrevSiblings, removeAllNextSiblings}) {\n const {kind, flags} = node;\n if (kind === 'flags') {\n if (!flags.enable && !flags.disable) {\n // Flag directive without flags; ex: `(?-)`, `(?--)`\n remove();\n } else {\n const flagGroup = createGroup({flags});\n flagGroup.body[0].body = removeAllNextSiblings();\n replaceWith(setParentDeep(flagGroup, parent), {traverse: true});\n }\n } else if (kind === 'keep') {\n const firstAlt = root.body[0];\n // Supporting a full-pattern wrapper around `\\K` enables use with flag modifiers\n const hasWrapperGroup =\n root.body.length === 1 &&\n // Not emulatable if within a `CapturingGroup`\n hasOnlyChild(firstAlt, {type: 'Group'}) &&\n firstAlt.body[0].body.length === 1;\n const topLevel = hasWrapperGroup ? firstAlt.body[0] : root;\n if (parent.parent !== topLevel || topLevel.body.length > 1) {\n throw new Error(r`Uses \"\\K\" in a way that's unsupported`);\n }\n const lookbehind = createLookaroundAssertion({behind: true});\n lookbehind.body[0].body = removeAllPrevSiblings();\n replaceWith(setParentDeep(lookbehind, parent));\n } else {\n throw new Error(`Unexpected directive kind \"${kind}\"`);\n }\n },\n\n Flags({node, parent}) {\n // Throw for flags supported by the parser but not yet for transpilation\n if (node.posixIsAscii) {\n throw new Error('Unsupported flag \"P\"');\n }\n if (node.textSegmentMode === 'word') {\n throw new Error('Unsupported flag \"y{w}\"');\n }\n // Remove Onig flags that aren't available in JS\n [ 'digitIsAscii', // Flag D\n 'extended', // Flag x\n 'posixIsAscii', // Flag P\n 'spaceIsAscii', // Flag S\n 'wordIsAscii', // Flag W\n 'textSegmentMode', // Flag y{g} or y{w}\n ].forEach(f => delete node[f]);\n Object.assign(node, {\n // JS flag g; no Onig equiv\n global: false,\n // JS flag d; no Onig equiv\n hasIndices: false,\n // JS flag m; no Onig equiv but its behavior is always on in Onig. Onig's only line break\n // char is line feed, unlike JS, so this flag isn't used since it would produce inaccurate\n // results (also allows `^` and `$` to be used in the generator for string start and end)\n multiline: false,\n // JS flag y; no Onig equiv, but used for `\\G` emulation\n sticky: node.sticky ?? false,\n // Note: Regex+ doesn't allow explicitly adding flags it handles implicitly, so leave out\n // properties `unicode` (JS flag u) and `unicodeSets` (JS flag v). Keep the existing values\n // for `ignoreCase` (flag i) and `dotAll` (JS flag s, but Onig flag m)\n });\n // Options accepted by Regex+; see <github.com/slevithan/regex#-options>\n parent.options = {\n disable: {\n // Onig uses different rules for flag x than Regex+, so disable the implicit flag\n x: true,\n // Onig has no flag to control \"named capture only\" mode but contextually applies its\n // behavior when named capturing is used, so disable Regex+'s implicit flag for it\n n: true,\n },\n force: {\n // Always add flag v because we're generating an AST that relies on it (it enables JS\n // support for Onig features nested classes, intersection, Unicode properties, etc.).\n // However, the generator might disable flag v based on its `target` option\n v: true,\n },\n };\n },\n\n Group({node}) {\n if (!node.flags) {\n return;\n }\n const {enable, disable} = node.flags;\n // Onig's flag x (`extended`) isn't available in JS\n enable?.extended && delete enable.extended;\n disable?.extended && delete disable.extended;\n // JS doesn't support flag groups that enable and disable the same flag; ex: `(?i-i:)`\n enable?.dotAll && disable?.dotAll && delete enable.dotAll;\n enable?.ignoreCase && disable?.ignoreCase && delete enable.ignoreCase;\n // Cleanup\n enable && !Object.keys(enable).length && delete node.flags.enable;\n disable && !Object.keys(disable).length && delete node.flags.disable;\n !node.flags.enable && !node.flags.disable && delete node.flags;\n },\n\n LookaroundAssertion({node}, state) {\n const {kind} = node;\n if (kind === 'lookbehind') {\n state.passedLookbehind = true;\n }\n },\n\n NamedCallout({node, parent, replaceWith}) {\n const {kind} = node;\n if (kind === 'fail') {\n replaceWith(setParentDeep(createLookaroundAssertion({negate: true}), parent));\n } else {\n throw new Error(`Unsupported named callout \"(*${kind.toUpperCase()}\"`);\n }\n },\n\n Quantifier({node}) {\n if (node.body.type === 'Quantifier') {\n // Change e.g. `a**` to `(?:a*)*`\n const group = createGroup();\n group.body[0].body.push(node.body);\n node.body = setParentDeep(group, node);\n }\n },\n\n Regex: {\n enter({node}, {supportedGNodes}) {\n // For `\\G` to be accurately emulatable using JS flag y, it must be at (and only at) the start\n // of every top-level alternative (with complex rules for what determines being at the start).\n // Additional `\\G` error checking in `Assertion` visitor\n const leadingGs = [];\n let hasAltWithLeadG = false;\n let hasAltWithoutLeadG = false;\n for (const alt of node.body) {\n if (alt.body.length === 1 && alt.body[0].kind === 'search_start') {\n // Remove the `\\G` (leaving behind an empty alternative, and without adding JS flag y)\n // since a top-level alternative that includes only `\\G` always matches at the start of the\n // match attempt. Note that this is based on Oniguruma's rules, and is different than other\n // regex flavors where `\\G` matches at the end of the previous match (a subtle distinction\n // that's relevant after zero-length matches)\n alt.body.pop();\n } else {\n const leadingG = getLeadingG(alt.body);\n if (leadingG) {\n hasAltWithLeadG = true;\n Array.isArray(leadingG) ?\n leadingGs.push(...leadingG) :\n leadingGs.push(leadingG);\n } else {\n hasAltWithoutLeadG = true;\n }\n }\n }\n if (hasAltWithLeadG && !hasAltWithoutLeadG) {\n // Supported `\\G` nodes will be removed (and add flag y) when traversed\n leadingGs.forEach(g => supportedGNodes.add(g));\n }\n },\n exit(_, {accuracy, passedLookbehind, strategy}) {\n if (accuracy === 'strict' && passedLookbehind && strategy) {\n throw new Error(r`Uses \"\\G\" in a way that requires non-strict accuracy`);\n }\n },\n },\n\n Subroutine({node}, {jsGroupNameMap}) {\n let {ref} = node;\n if (typeof ref === 'string' && !isValidJsGroupName(ref)) {\n ref = getAndStoreJsGroupName(ref, jsGroupNameMap);\n node.ref = ref;\n }\n },\n};\n\nconst /** @type {Visitor} */ SecondPassVisitor = {\n Backreference({node}, {multiplexCapturesToLeftByRef, reffedNodesByReferencer}) {\n const {orphan, ref} = node;\n if (!orphan) {\n // Copy the current state for later multiplexing expansion. That's done in a subsequent pass\n // because backref numbers need to be recalculated after subroutine expansion\n reffedNodesByReferencer.set(node, [...multiplexCapturesToLeftByRef.get(ref).map(({node}) => node)]);\n }\n },\n\n CapturingGroup: {\n enter(\n { node,\n parent,\n replaceWith,\n skip,\n },\n { groupOriginByCopy,\n groupsByName,\n multiplexCapturesToLeftByRef,\n openRefs,\n reffedNodesByReferencer,\n }\n ) {\n // Has value if we're within a subroutine expansion\n const origin = groupOriginByCopy.get(node);\n\n // ## Handle recursion; runs after subroutine expansion\n if (origin && openRefs.has(node.number)) {\n // Recursive subroutines don't affect any following backrefs to their `ref` (unlike other\n // subroutines), so don't wrap with a capture. The reffed group might have its name removed\n // due to later subroutine expansion\n const recursion = setParent(createRecursion(node.number), parent);\n reffedNodesByReferencer.set(recursion, openRefs.get(node.number));\n replaceWith(recursion);\n return;\n }\n openRefs.set(node.number, node);\n\n // ## Track data for backref multiplexing\n multiplexCapturesToLeftByRef.set(node.number, []);\n if (node.name) {\n getOrInsert(multiplexCapturesToLeftByRef, node.name, []);\n }\n const multiplexNodes = multiplexCapturesToLeftByRef.get(node.name ?? node.number);\n for (let i = 0; i < multiplexNodes.length; i++) {\n // Captures added via subroutine expansion (maybe indirectly because they were descendant\n // captures of the reffed group or in a nested subroutine expansion) form a set with their\n // origin group and any other copies of it added via subroutines. Only the most recently\n // matched within this set is added to backref multiplexing. So search the list of already-\n // tracked multiplexed nodes for this group name or number to see if there's a node being\n // replaced by this capture\n const multiplex = multiplexNodes[i];\n if (\n // This group is from subroutine expansion, and there's a multiplex value from either the\n // origin node or a prior subroutine expansion group with the same origin\n (origin === multiplex.node || (origin && origin === multiplex.origin)) ||\n // This group is not from subroutine expansion, and it comes after a subroutine expansion\n // group that refers to this group\n node === multiplex.origin\n ) {\n multiplexNodes.splice(i, 1);\n break;\n }\n }\n multiplexCapturesToLeftByRef.get(node.number).push({node, origin});\n if (node.name) {\n multiplexCapturesToLeftByRef.get(node.name).push({node, origin});\n }\n\n // ## Track data for duplicate names\n // Pre-ES2025 doesn't allow duplicate names, but ES2025 allows duplicate names that are\n // unique per mutually exclusive alternation path. However, Oniguruma's handling for named\n // subpatterns on match results means we can't use this ES2025 feature even when in an ES2025\n // env. So, if using a duplicate name, remove the name from all but the first instance that\n // wasn't created by subroutine expansion\n if (node.name) {\n const groupsWithSameName = getOrInsert(groupsByName, node.name, new Map());\n let hasDuplicateNameToRemove = false;\n if (origin) {\n // Subroutines and their child captures shouldn't hold duplicate names in the final state\n hasDuplicateNameToRemove = true;\n } else {\n for (const groupInfo of groupsWithSameName.values()) {\n if (!groupInfo.hasDuplicateNameToRemove) {\n // Will change to an unnamed capture in a later pass\n hasDuplicateNameToRemove = true;\n break;\n }\n }\n }\n groupsByName.get(node.name).set(node, {node, hasDuplicateNameToRemove});\n }\n },\n exit({node}, {openRefs}) {\n // During `enter`, ownership of `openRefs` isn't claimed when recursive clones are replaced,\n // so only the node that inserted the current entry should clear it on exit\n if (openRefs.get(node.number) === node) {\n openRefs.delete(node.number);\n }\n },\n },\n\n Group: {\n enter({node}, state) {\n // Flag directives have already been converted to flag groups by the previous pass\n state.prevFlags = state.currentFlags;\n if (node.flags) {\n state.currentFlags = getNewCurrentFlags(state.currentFlags, node.flags);\n }\n },\n exit(_, state) {\n state.currentFlags = state.prevFlags;\n },\n },\n\n Subroutine({node, parent, replaceWith}, state) {\n const {isRecursive, ref} = node;\n\n // Subroutine nodes with `isRecursive` are created during the current traversal; they're only\n // traversed here if a recursive subroutine created during traversal is then copied by a\n // subroutine expansion, e.g. with `(?<a>\\g<a>)\\g<a>`\n if (isRecursive) {\n // Immediate parent is an alternative or quantifier; can skip\n let reffed = parent;\n while ((reffed = reffed.parent)) {\n if (reffed.type === 'CapturingGroup' && (reffed.name === ref || reffed.number === ref)) {\n break;\n }\n }\n // Track the referenced node because `ref`s are rewritten in a subsequent pass; capturing\n // group names and numbers might change due to subroutine expansion and duplicate group names\n state.reffedNodesByReferencer.set(node, reffed);\n return;\n }\n\n const reffedGroupNode = state.subroutineRefMap.get(ref);\n // Other forms of recursion are handled by the `CapturingGroup` visitor\n const isGlobalRecursion = ref === 0;\n const expandedSubroutine = isGlobalRecursion ?\n createRecursion(0) :\n // The reffed group might itself contain subroutines, which are expanded during sub-traversal\n cloneCapturingGroup(reffedGroupNode, state.groupOriginByCopy, null);\n let replacement = expandedSubroutine;\n if (!isGlobalRecursion) {\n // Subroutines take their flags from the reffed group, not the flags surrounding themselves\n const reffedGroupFlagMods = getCombinedFlagModsFromFlagNodes(getAllParents(\n reffedGroupNode,\n p => p.type === 'Group' && !!p.flags\n ));\n const reffedGroupFlags = reffedGroupFlagMods ?\n getNewCurrentFlags(state.globalFlags, reffedGroupFlagMods) :\n state.globalFlags;\n if (!areFlagsEqual(reffedGroupFlags, state.currentFlags)) {\n replacement = createGroup({\n flags: getFlagModsFromFlags(reffedGroupFlags),\n });\n replacement.body[0].body.push(expandedSubroutine);\n }\n }\n replaceWith(setParentDeep(replacement, parent), {traverse: !isGlobalRecursion});\n },\n};\n\nconst /** @type {Visitor} */ ThirdPassVisitor = {\n Backreference({node, parent, replaceWith}, state) {\n if (node.orphan) {\n state.highestOrphanBackref = Math.max(state.highestOrphanBackref, node.ref);\n // Don't renumber; used with `allowOrphanBackrefs`\n return;\n }\n const reffedNodes = state.reffedNodesByReferencer.get(node);\n const participants = reffedNodes.filter(reffed => canParticipateWithNode(reffed, node));\n // For the backref's `ref`, use `number` rather than `name` because group names might have been\n // removed if they're duplicates within their alternation path, or they might be removed later\n // by the generator (depending on target) if they're duplicates within the overall pattern.\n // Backrefs must come after groups they ref, so reffed node `number`s are already recalculated\n if (!participants.length) {\n // If no participating capture, convert backref to to `(?!)`; backrefs to nonparticipating\n // groups can't match in Onig but match the empty string in JS\n replaceWith(setParentDeep(createLookaroundAssertion({negate: true}), parent));\n } else if (participants.length > 1) {\n // Multiplex for backrefs to duplicate capture names; try them in reverse order\n const group = createGroup({\n atomic: true,\n body: participants.reverse().map(reffed => createAlternative({\n body: [createBackreference(reffed.number)],\n })),\n });\n replaceWith(setParentDeep(group, parent));\n } else {\n node.ref = participants[0].number;\n }\n },\n\n CapturingGroup({node}, state) {\n // Recalculate the number since the current value might be wrong due to subroutine expansion\n node.number = ++state.numCapturesToLeft;\n if (node.name) {\n // Removing duplicate names here rather than in an earlier pass avoids extra complexity when\n // handling subroutine expansion and backref multiplexing\n if (state.groupsByName.get(node.name).get(node).hasDuplicateNameToRemove) {\n delete node.name;\n }\n }\n },\n\n Regex: {\n exit({node}, state) {\n // HACK: Add unnamed captures to the end of the regex if needed to allow orphaned backrefs\n // to be valid in JS with flag u/v. This is needed to support TextMate grammars, which\n // replace numbered backrefs in their `end` pattern with values matched by captures in their\n // `begin` pattern! See <github.com/microsoft/vscode-textmate/blob/7e0ea282f4f25fef12a6c84fa4fa7266f67b58dc/src/rule.ts#L661-L663>\n // An `end` pattern, prior to this substitution, might have backrefs to a group that doesn't\n // exist within `end`. This presents a dilemma since both Oniguruma and JS (with flag u/v)\n // error for backrefs to undefined captures. So adding captures to the end is a solution that\n // doesn't change what the regex matches, and lets invalid numbered backrefs through. Note:\n // Orphan backrefs are only allowed if `allowOrphanBackrefs` is enabled\n const numCapsNeeded = Math.max(state.highestOrphanBackref - state.numCapturesToLeft, 0);\n for (let i = 0; i < numCapsNeeded; i++) {\n const emptyCapture = createCapturingGroup();\n node.body.at(-1).body.push(emptyCapture);\n }\n },\n },\n\n Subroutine({node}, state) {\n if (!node.isRecursive || node.ref === 0) {\n return;\n }\n // For the recursion's `ref`, use `number` rather than `name` because group names might have\n // been removed if they're duplicates within their alternation path, or they might be removed\n // later by the generator (depending on target) if they're duplicates within the overall\n // pattern. Since recursion appears within the group it refs, the reffed node's `number` has\n // already been recalculated\n node.ref = state.reffedNodesByReferencer.get(node).number;\n },\n};\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\nfunction addParentProperties(root) {\n traverse(root, {\n '*'({node, parent}) {\n node.parent = parent;\n },\n });\n}\n\nfunction areFlagsEqual(a, b) {\n return a.dotAll === b.dotAll && a.ignoreCase === b.ignoreCase;\n}\n\nfunction canParticipateWithNode(capture, node) {\n // Walks to the left (prev siblings), down (sibling descendants), up (parent), then back down\n // (parent's prev sibling descendants) the tree in a loop\n let rightmostPoint = node;\n do {\n if (rightmostPoint.type === 'Regex') {\n // End of the line; capture is not in node's alternation path\n return false;\n }\n if (rightmostPoint.type === 'Alternative') {\n // Skip past alts to their parent because we don't want to look at the kids of preceding alts\n continue;\n }\n if (rightmostPoint === capture) {\n // Capture is ancestor of node\n return false;\n }\n const kidsOfParent = getKids(rightmostPoint.parent);\n for (const kid of kidsOfParent) {\n if (kid === rightmostPoint) {\n // Reached rightmost node in sibling list that we want to consider; break to parent loop\n break;\n }\n if (kid === capture || isAncestorOf(kid, capture)) {\n return true;\n }\n }\n } while ((rightmostPoint = rightmostPoint.parent));\n throw new Error('Unexpected path');\n}\n\n// Creates a deep copy of the provided node, with special handling:\n// - Make `parent` props point to their parent in the copy\n// - Update the provided `originMap` for each cloned capturing group (outer and nested)\nfunction cloneCapturingGroup(obj, originMap, up, up2) {\n const store = Array.isArray(obj) ? [] : {};\n for (const [key, value] of Object.entries(obj)) {\n if (key === 'parent') {\n // If the last cloned item was a container array (for holding kids), use the object above it\n store.parent = Array.isArray(up) ? up2 : up;\n } else if (value && typeof value === 'object') {\n store[key] = cloneCapturingGroup(value, originMap, store, up);\n } else {\n if (key === 'type' && value === 'CapturingGroup') {\n // Key is the copied node, value is the origin node\n originMap.set(store, originMap.get(obj) ?? obj);\n }\n store[key] = value;\n }\n }\n return store;\n}\n\nfunction createRecursion(ref) {\n const node = createSubroutine(ref);\n // In the future, the parser will set a `recursive` property on subroutines:\n // <github.com/slevithan/oniguruma-parser/issues/3>. When that's available, this function won't\n // be needed and the related logic in this transformer should change (simplify) to use it\n node.isRecursive = true;\n return node;\n}\n\nfunction getAllParents(node, filterFn) {\n const results = [];\n while ((node = node.parent)) {\n if (!filterFn || filterFn(node)) {\n results.push(node);\n }\n }\n return results;\n}\n\n// See also `isValidJsGroupName`\nfunction getAndStoreJsGroupName(name, map) {\n if (map.has(name)) {\n return map.get(name);\n }\n // Onig group names can't start with `$`, but JS names can\n const jsName = `$${map.size}_${name.replace(/^[^$_\\p{IDS}]|[^$\\u200C\\u200D\\p{IDC}]/ug, '_')}`;\n map.set(name, jsName);\n return jsName;\n}\n\nfunction getCombinedFlagModsFromFlagNodes(flagNodes) {\n const flagProps = ['dotAll', 'ignoreCase'];\n const combinedFlags = {enable: {}, disable: {}};\n flagNodes.forEach(({flags}) => {\n flagProps.forEach(prop => {\n if (flags.enable?.[prop]) {\n // Need to remove `disable` since disabled flags take precedence\n delete combinedFlags.disable[prop];\n combinedFlags.enable[prop] = true;\n }\n if (flags.disable?.[prop]) {\n combinedFlags.disable[prop] = true;\n }\n });\n });\n if (!Object.keys(combinedFlags.enable).length) {\n delete combinedFlags.enable;\n }\n if (!Object.keys(combinedFlags.disable).length) {\n delete combinedFlags.disable;\n }\n if (combinedFlags.enable || combinedFlags.disable) {\n return combinedFlags;\n }\n return null;\n}\n\nfunction getFlagModsFromFlags({dotAll, ignoreCase}) {\n const mods = {};\n if (dotAll || ignoreCase) {\n mods.enable = {};\n dotAll && (mods.enable.dotAll = true);\n ignoreCase && (mods.enable.ignoreCase = true);\n }\n if (!dotAll || !ignoreCase) {\n mods.disable = {};\n !dotAll && (mods.disable.dotAll = true);\n !ignoreCase && (mods.disable.ignoreCase = true);\n }\n return mods;\n}\n\nfunction getKids(node) {\n if (!node) {\n throw new Error('Node expected');\n }\n // NOTE: Not handling `CharacterClassRange`'s `min`/`max` and `Regex`'s `flags`, only because\n // they haven't been needed by current callers\n const {body} = node;\n return Array.isArray(body) ? body : (body ? [body] : null);\n}\n\nfunction getLeadingG(els) {\n const firstToConsider = els.find(el => (\n el.kind === 'search_start' ||\n isLoneGLookaround(el, {negate: false}) ||\n !isAlwaysZeroLength(el)\n ));\n if (!firstToConsider) {\n return null;\n }\n if (firstToConsider.kind === 'search_start') {\n return firstToConsider;\n }\n if (firstToConsider.type === 'LookaroundAssertion') {\n return firstToConsider.body[0].body[0];\n }\n if (firstToConsider.type === 'CapturingGroup' || firstToConsider.type === 'Group') {\n const gNodesForGroup = [];\n // Recursively find `\\G` nodes for all alternatives in the group\n for (const alt of firstToConsider.body) {\n const leadingG = getLeadingG(alt.body);\n if (!leadingG) {\n // Don't return `gNodesForGroup` collected so far since this alt didn't qualify\n return null;\n }\n Array.isArray(leadingG) ?\n gNodesForGroup.push(...leadingG) :\n gNodesForGroup.push(leadingG);\n }\n return gNodesForGroup;\n }\n return null;\n}\n\nfunction isAncestorOf(node, descendant) {\n const kids = getKids(node) ?? [];\n for (const kid of kids) {\n if (kid === descendant || isAncestorOf(kid, descendant)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isAlwaysZeroLength({type}) {\n return (\n type === 'Assertion' ||\n type === 'Directive' ||\n type === 'LookaroundAssertion'\n );\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isAlwaysNonZeroLength(node) {\n const types = [\n 'Character',\n 'CharacterClass',\n 'CharacterSet',\n ];\n return types.includes(node.type) || (\n node.type === 'Quantifier' &&\n node.min &&\n types.includes(node.body.type)\n );\n}\n\nfunction isLoneGLookaround(node, options) {\n const opts = {\n negate: null,\n ...options,\n };\n return (\n node.type === 'LookaroundAssertion' &&\n (opts.negate === null || node.negate === opts.negate) &&\n node.body.length === 1 &&\n hasOnlyChild(node.body[0], {\n type: 'Assertion',\n kind: 'search_start',\n })\n );\n}\n\n// See also `getAndStoreJsGroupName`\nfunction isValidJsGroupName(name) {\n // JS group names are more restrictive than Onig; see\n // <developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers>\n return /^[$_\\p{IDS}][$\\u200C\\u200D\\p{IDC}]*$/u.test(name);\n}\n\n// Returns a single node, either the given node or all nodes wrapped in a noncapturing group\nfunction parseFragment(pattern, options) {\n const ast = parse(pattern, {\n ...options,\n // Providing a custom set of Unicode property names avoids converting some JS Unicode\n // properties (ex: `\\p{Alpha}`) to Onig POSIX classes\n unicodePropertyMap: JsUnicodePropertyMap,\n });\n const alts = ast.body;\n if (alts.length > 1 || alts[0].body.length > 1) {\n return createGroup({body: alts});\n }\n return alts[0].body[0];\n}\n\nfunction setNegate(node, negate) {\n node.negate = negate;\n return node;\n}\n\nfunction setParent(node, parent) {\n node.parent = parent;\n return node;\n}\n\nfunction setParentDeep(node, parent) {\n addParentProperties(node);\n node.parent = parent;\n return node;\n}\n\nexport {\n transform,\n};\n", "import {getOptions} from './options.js';\nimport {getIgnoreCaseMatchChars, UnicodePropertiesWithSpecificCase} from './unicode.js';\nimport {cp, envFlags, getNewCurrentFlags, getOrInsert, isMinTarget, r, throwIfNullish} from './utils.js';\nimport {createAlternative, createCharacter, createGroup} from 'oniguruma-parser/parser';\nimport {traverse} from 'oniguruma-parser/traverser';\n/**\n@import {ToRegExpOptions} from './index.js';\n@import {RegexPlusAst} from './transform.js';\n@import {AlternativeNode, AssertionNode, BackreferenceNode, CapturingGroupNode, CharacterClassNode, CharacterClassRangeNode, CharacterNode, CharacterSetNode, FlagsNode, GroupNode, LookaroundAssertionNode, Node, QuantifierNode, SubroutineNode} from 'oniguruma-parser/parser';\n@import {Visitor} from 'oniguruma-parser/traverser';\n*/\n\n/**\nGenerates a Regex+ compatible `pattern`, `flags`, and `options` from a Regex+ AST.\n@param {RegexPlusAst} ast\n@param {ToRegExpOptions} [options]\n@returns {{\n pattern: string;\n flags: string;\n options: Object;\n _captureTransfers: Map<number, Array<number>>;\n _hiddenCaptures: Array<number>;\n}}\n*/\nfunction generate(ast, options) {\n const opts = getOptions(options);\n const minTargetEs2024 = isMinTarget(opts.target, 'ES2024');\n const minTargetEs2025 = isMinTarget(opts.target, 'ES2025');\n const recursionLimit = opts.rules.recursionLimit;\n if (!Number.isInteger(recursionLimit) || recursionLimit < 2 || recursionLimit > 20) {\n throw new Error('Invalid recursionLimit; use 2-20');\n }\n\n // If the output can't use flag groups, we need a pre-pass to check for the use of chars with\n // case in case sensitive/insensitive states. This minimizes the need for case expansions (though\n // expansions are lossless, even given Unicode case complexities) and allows supporting case\n // insensitive backrefs in more cases\n // TODO: Consider gathering this data in the transformer's final traversal to avoid work here\n let hasCaseInsensitiveNode = null;\n let hasCaseSensitiveNode = null;\n if (!minTargetEs2025) {\n const iStack = [ast.flags.ignoreCase];\n traverse(ast, FlagModifierVisitor, {\n getCurrentModI: () => iStack.at(-1),\n popModI() {iStack.pop()},\n pushModI(isIOn) {iStack.push(isIOn)},\n setHasCasedChar() {\n if (iStack.at(-1)) {\n hasCaseInsensitiveNode = true;\n } else {\n hasCaseSensitiveNode = true;\n }\n },\n });\n }\n\n const appliedGlobalFlags = {\n dotAll: ast.flags.dotAll,\n // - Turn global flag i on if a case insensitive node was used and no case sensitive nodes were\n // used (to avoid unnecessary node expansion).\n // - Turn global flag i off if a case sensitive node was used (since case sensitivity can't be\n // forced without the use of ES2025 flag groups)\n ignoreCase: !!((ast.flags.ignoreCase || hasCaseInsensitiveNode) && !hasCaseSensitiveNode),\n };\n let /** @type {Node} */ lastNode = ast;\n const state = {\n accuracy: opts.accuracy,\n appliedGlobalFlags,\n captureMap: new Map(),\n currentFlags: {\n dotAll: ast.flags.dotAll,\n ignoreCase: ast.flags.ignoreCase,\n },\n inCharClass: false,\n lastNode,\n originMap: ast._originMap,\n recursionLimit,\n useAppliedIgnoreCase: !!(!minTargetEs2025 && hasCaseInsensitiveNode && hasCaseSensitiveNode),\n useFlagMods: minTargetEs2025,\n useFlagV: minTargetEs2024,\n verbose: opts.verbose,\n };\n function gen(/** @type {Node} */ node) {\n state.lastNode = lastNode;\n lastNode = node; // For the next iteration\n const fn = throwIfNullish(generator[node.type], `Unexpected node type \"${node.type}\"`);\n return fn(node, state, gen);\n }\n\n const result = {\n pattern: ast.body.map(gen).join('|'),\n // Could reset `lastNode` at this point via `lastNode = ast`, but it isn't needed by flags\n flags: gen(ast.flags),\n options: {...ast.options},\n };\n if (!minTargetEs2024) {\n // Switch from flag v to u; Regex+ implicitly chooses by default\n delete result.options.force.v;\n result.options.disable.v = true;\n result.options.unicodeSetsPlugin = null;\n }\n result._captureTransfers = new Map();\n result._hiddenCaptures = [];\n state.captureMap.forEach((value, key) => {\n if (value.hidden) {\n result._hiddenCaptures.push(key);\n }\n if (value.transferTo) {\n getOrInsert(result._captureTransfers, value.transferTo, []).push(key);\n }\n });\n\n return result;\n}\n\nconst /** @type {Visitor} */ FlagModifierVisitor = {\n '*': {\n enter({node}, state) {\n if (isAnyGroup(node)) {\n const currentModI = state.getCurrentModI();\n state.pushModI(\n node.flags ?\n getNewCurrentFlags({ignoreCase: currentModI}, node.flags).ignoreCase :\n currentModI\n );\n }\n },\n exit({node}, state) {\n if (isAnyGroup(node)) {\n state.popModI();\n }\n },\n },\n Backreference(_, state) {\n // Can't know for sure, so assume the backref will include chars with case (best that could be\n // done is not calling `setHasCasedChar` if the reffed group doesn't contain a char with case\n // or most kinds of char sets)\n state.setHasCasedChar();\n },\n Character({node}, state) {\n if (charHasCase(cp(node.value))) {\n state.setHasCasedChar();\n }\n },\n CharacterClassRange({node, skip}, state) {\n skip();\n if (getCasesOutsideCharClassRange(node, {firstOnly: true}).length) {\n state.setHasCasedChar();\n }\n },\n CharacterSet({node}, state) {\n if (\n node.kind === 'property' &&\n UnicodePropertiesWithSpecificCase.has(node.value)\n ) {\n state.setHasCasedChar();\n }\n },\n};\n\n// `AbsenceFunction`, `Directive`, and `NamedCallout` nodes aren't included in transformer output\nconst generator = {\n /**\n @param {AlternativeNode} node\n */\n Alternative({body}, _, gen) {\n return body.map(gen).join('');\n },\n\n /**\n @param {AssertionNode} node\n */\n Assertion({kind, negate}) {\n // Can always use `^` and `$` for string boundaries since JS flag m is never used (Onig uses\n // different line break chars)\n if (kind === 'string_end') {\n return '$';\n }\n if (kind === 'string_start') {\n return '^';\n }\n // If a word boundary came through the transformer unaltered, that means `wordIsAscii` or\n // `asciiWordBoundaries` is enabled\n if (kind === 'word_boundary') {\n return negate ? r`\\B` : r`\\b`;\n }\n // Kinds `line_end`, `line_start`, `search_start`, `string_end_newline`, and\n // `text_segment_boundary` are never included in transformer output\n throw new Error(`Unexpected assertion kind \"${kind}\"`);\n },\n\n /**\n @param {BackreferenceNode} node\n */\n Backreference({ref}, state) {\n if (typeof ref !== 'number') {\n throw new Error('Unexpected named backref in transformed AST');\n }\n if (\n !state.useFlagMods &&\n state.accuracy === 'strict' &&\n state.currentFlags.ignoreCase &&\n !state.captureMap.get(ref).ignoreCase\n ) {\n throw new Error('Use of case-insensitive backref to case-sensitive group requires target ES2025 or non-strict accuracy');\n }\n return '\\\\' + ref;\n },\n\n /**\n @param {CapturingGroupNode} node\n */\n CapturingGroup(node, state, gen) {\n const {body, name, number} = node;\n const data = {ignoreCase: state.currentFlags.ignoreCase};\n // Has origin if the capture is from an expanded subroutine\n const origin = state.originMap.get(node);\n if (origin) {\n // All captures from/within expanded subroutines are marked as hidden\n data.hidden = true;\n // If a subroutine (or descendant capture) occurs after its origin group, it's marked to have\n // its captured value transferred to the origin's capture slot. `number` and `origin.number`\n // are the capture numbers *after* subroutine expansion\n if (number > origin.number) {\n data.transferTo = origin.number;\n }\n }\n state.captureMap.set(number, data);\n return `(${name ? `?<${name}>` : ''}${body.map(gen).join('|')})`;\n },\n\n /**\n @param {CharacterNode} node\n */\n Character({value}, state) {\n const char = cp(value);\n const escaped = getCharEscape(value, {\n escDigit: state.lastNode.type === 'Backreference',\n inCharClass: state.inCharClass,\n useFlagV: state.useFlagV,\n });\n if (escaped !== char) {\n return escaped;\n }\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase && charHasCase(char)) {\n const cases = getIgnoreCaseMatchChars(char);\n return state.inCharClass ?\n cases.join('') :\n (cases.length > 1 ? `[${cases.join('')}]` : cases[0]);\n }\n return char;\n },\n\n /**\n @param {CharacterClassNode} node\n */\n CharacterClass(node, state, gen) {\n const {kind, negate, parent} = node;\n let {body} = node;\n if (kind === 'intersection' && !state.useFlagV) {\n throw new Error('Use of character class intersection requires min target ES2024');\n }\n // Work around a WebKit parser bug by moving literal hyphens to the beginning of the class; see\n // <github.com/slevithan/oniguruma-to-es/issues/30>\n if (envFlags.bugFlagVLiteralHyphenIsRange && state.useFlagV && body.some(isLiteralHyphen)) {\n body = [createCharacter(45), ...body.filter(kid => !isLiteralHyphen(kid))];\n }\n const genClass = () => `[${negate ? '^' : ''}${\n body.map(gen).join(kind === 'intersection' ? '&&' : '')\n }]`;\n if (!state.inCharClass) {\n // HACK: Transform the AST to support top-level-nested, negated classes in non-negated\n // classes (ex: `[\u2026[^\u2026]]`) with pre-ES2024 `target`, via `(?:[\u2026]|[^\u2026])` or `(?:[^\u2026])`,\n // possibly with multiple alts that contain negated classes. Would be better to do this in\n // the transformer, but it doesn't have true `target` since that's supposed to be a concern\n // of the generator\n if (\n // Already established `kind !== 'intersection'` if `!state.useFlagV`; don't check again\n (!state.useFlagV || envFlags.bugNestedClassIgnoresNegation) &&\n !negate\n ) {\n const negatedChildClasses = body.filter(\n kid => kid.type === 'CharacterClass' && kid.kind === 'union' && kid.negate\n );\n if (negatedChildClasses.length) {\n const group = createGroup();\n const groupFirstAlt = group.body[0];\n group.parent = parent;\n groupFirstAlt.parent = group;\n body = body.filter(kid => !negatedChildClasses.includes(kid));\n node.body = body;\n if (body.length) {\n node.parent = groupFirstAlt;\n groupFirstAlt.body.push(node);\n } else {\n // Remove the group's only alt thus far, but since the class's `body` is empty, that\n // implies there's at least one negated class we removed from it, so we'll add at least\n // one alt back to the group, next\n group.body.pop();\n }\n negatedChildClasses.forEach(cc => {\n const newAlt = createAlternative({body: [cc]});\n cc.parent = newAlt;\n newAlt.parent = group;\n group.body.push(newAlt);\n });\n return gen(group);\n }\n }\n // For the outermost char class, set state\n state.inCharClass = true;\n const result = genClass();\n state.inCharClass = false;\n return result;\n }\n // No first element for implicit class in empty intersection like `[&&]`\n const firstEl = body[0];\n if (\n // Already established that the parent is a char class via `inCharClass`; don't check again\n kind === 'union' &&\n !negate &&\n firstEl &&\n (\n ( // Allows many nested classes to work with `target` ES2018 which doesn't support nesting\n (!state.useFlagV || !state.verbose) &&\n parent.kind === 'union' &&\n !(envFlags.bugFlagVLiteralHyphenIsRange && state.useFlagV)\n ) ||\n ( !state.verbose &&\n parent.kind === 'intersection' &&\n // JS doesn't allow intersection with union or ranges\n body.length === 1 &&\n firstEl.type !== 'CharacterClassRange'\n )\n )\n ) {\n // Remove unnecessary nesting; unwrap kids into the parent char class\n return body.map(gen).join('');\n }\n if (!state.useFlagV && parent.type === 'CharacterClass') {\n throw new Error('Uses nested character class in a way that requires min target ES2024');\n }\n return genClass();\n },\n\n /**\n @param {CharacterClassRangeNode} node\n */\n CharacterClassRange(node, state) {\n const min = node.min.value;\n const max = node.max.value;\n const escOpts = {\n escDigit: false,\n inCharClass: true,\n useFlagV: state.useFlagV,\n };\n const minStr = getCharEscape(min, escOpts);\n const maxStr = getCharEscape(max, escOpts);\n const extraChars = new Set();\n if (state.useAppliedIgnoreCase && state.currentFlags.ignoreCase) {\n // TODO: Avoid duplication by considering other chars in the parent char class when expanding\n const charsOutsideRange = getCasesOutsideCharClassRange(node);\n const ranges = getCodePointRangesFromChars(charsOutsideRange);\n ranges.forEach(value => {\n extraChars.add(\n Array.isArray(value) ?\n `${getCharEscape(value[0], escOpts)}-${getCharEscape(value[1], escOpts)}` :\n getCharEscape(value, escOpts)\n );\n });\n }\n // Create the range without calling `gen` on the `min`/`max` kids\n return `${minStr}-${maxStr}${[...extraChars].join('')}`;\n },\n\n /**\n @param {CharacterSetNode} node\n */\n CharacterSet({kind, negate, value, key}, state) {\n if (kind === 'dot') {\n return state.currentFlags.dotAll ?\n ((state.appliedGlobalFlags.dotAll || state.useFlagMods) ? '.' : '[^]') :\n // Onig's only line break char is line feed, unlike JS\n r`[^\\n]`;\n }\n if (kind === 'digit') {\n return negate ? r`\\D` : r`\\d`;\n }\n if (kind === 'property') {\n if (\n state.useAppliedIgnoreCase &&\n state.currentFlags.ignoreCase &&\n UnicodePropertiesWithSpecificCase.has(value)\n ) {\n // Support for this would require heavy Unicode data. Could change e.g. `\\p{Lu}` to\n // `\\p{LC}` if not using strict `accuracy` (since it's close but not 100%), but this\n // wouldn't work for e.g. `\\p{Lt}`, and in any case, it's probably user error if using\n // these case-specific props case-insensitively\n throw new Error(`Unicode property \"${value}\" can't be case-insensitive when other chars have specific case`);\n }\n return `${negate ? r`\\P` : r`\\p`}{${key ? `${key}=` : ''}${value}}`;\n }\n if (kind === 'word') {\n return negate ? r`\\W` : r`\\w`;\n }\n // Kinds `any`, `hex`, `newline`, `posix`, `space`, and `text_segment` are never included in\n // transformer output\n throw new Error(`Unexpected character set kind \"${kind}\"`);\n },\n\n /**\n @param {FlagsNode} node\n */\n Flags(node, state) {\n return (\n // The transformer should never turn on the properties for flags d, g, m since Onig doesn't\n // have equivs. Flag m is never used since Onig uses different line break chars than JS\n // (node.hasIndices ? 'd' : '') +\n // (node.global ? 'g' : '') +\n // (node.multiline ? 'm' : '') +\n (state.appliedGlobalFlags.ignoreCase ? 'i' : '') +\n (node.dotAll ? 's' : '') +\n (node.sticky ? 'y' : '')\n // Regex+ doesn't allow explicitly adding flags it handles implicitly, so there are no\n // `unicode` (flag u) or `unicodeSets` (flag v) props; those flags are added separately\n );\n },\n\n /**\n @param {GroupNode} node\n */\n Group({atomic, body, flags, parent}, state, gen) {\n const currentFlags = state.currentFlags;\n if (flags) {\n state.currentFlags = getNewCurrentFlags(currentFlags, flags);\n }\n const contents = body.map(gen).join('|');\n const result = (\n !state.verbose &&\n body.length === 1 && // Single alt\n parent.type !== 'Quantifier' &&\n !atomic &&\n (!state.useFlagMods || !flags)\n ) ? contents : `(?${getGroupPrefix(atomic, flags, state.useFlagMods)}${contents})`;\n state.currentFlags = currentFlags;\n return result;\n },\n\n /**\n @param {LookaroundAssertionNode} node\n */\n LookaroundAssertion({body, kind, negate}, _, gen) {\n const prefix = `${kind === 'lookahead' ? '' : '<'}${negate ? '!' : '='}`;\n return `(?${prefix}${body.map(gen).join('|')})`;\n },\n\n /**\n @param {QuantifierNode} node\n */\n Quantifier(node, _, gen) {\n return gen(node.body) + getQuantifierStr(node);\n },\n\n /**\n @param {SubroutineNode & {isRecursive: true}} node\n */\n Subroutine({isRecursive, ref}, state) {\n if (!isRecursive) {\n throw new Error('Unexpected non-recursive subroutine in transformed AST');\n }\n const limit = state.recursionLimit;\n // Using the syntax supported by `regex-recursion`\n return ref === 0 ? `(?R=${limit})` : r`\\g<${ref}&R=${limit}>`;\n },\n};\n\n// ---------------\n// --- Helpers ---\n// ---------------\n\nconst BaseEscapeChars = new Set([\n '$', '(', ')', '*', '+', '.', '?', '[', '\\\\', ']', '^', '{', '|', '}',\n]);\n\nconst CharClassEscapeChars = new Set([\n '-', '\\\\', ']', '^',\n // Literal `[` doesn't require escaping with flag u, but this can help work around regex source\n // linters and regex syntax processors that expect unescaped `[` to create a nested class\n '[',\n]);\n\nconst CharClassEscapeCharsFlagV = new Set([\n '(', ')', '-', '/', '[', '\\\\', ']', '^', '{', '|', '}',\n // Double punctuators; also includes already-listed `-` and `^`\n '!', '#', '$', '%', '&', '*', '+', ',', '.', ':', ';', '<', '=', '>', '?', '@', '`', '~',\n]);\n\nconst CharCodeEscapeMap = new Map([\n [ 9, r`\\t`], // horizontal tab\n [10, r`\\n`], // line feed\n [11, r`\\v`], // vertical tab\n [12, r`\\f`], // form feed\n [13, r`\\r`], // carriage return\n [0x2028, r`\\u2028`], // line separator\n [0x2029, r`\\u2029`], // paragraph separator\n [0xFEFF, r`\\uFEFF`], // ZWNBSP/BOM\n]);\n\nconst casedRe = /^\\p{Cased}$/u;\nfunction charHasCase(char) {\n return casedRe.test(char);\n}\n\n/**\nGiven a `CharacterClassRange` node, returns an array of chars that are a case variant of a char in\nthe range, and aren't already in the range.\n*/\nfunction getCasesOutsideCharClassRange(node, options) {\n const firstOnly = !!options?.firstOnly;\n const min = node.min.value;\n const max = node.max.value;\n const found = [];\n // Avoid unneeded work. Assumptions (per Unicode 16):\n // - No case variants cross the Basic Multilingual Plane boundary\n // - No cased chars appear beyond the Supplementary Multilingual Plane\n if ((min < 65 && (max === 0xFFFF || max >= 0x1FFFF)) || (min === 0x10000 && max >= 0x1FFFF)) {\n return found;\n }\n for (let i = min; i <= max; i++) {\n const char = cp(i);\n if (!charHasCase(char)) {\n continue;\n }\n const charsOutsideRange = getIgnoreCaseMatchChars(char).filter(caseOfChar => {\n const num = caseOfChar.codePointAt(0);\n return num < min || num > max;\n });\n if (charsOutsideRange.length) {\n found.push(...charsOutsideRange);\n if (firstOnly) {\n break;\n }\n }\n }\n return found;\n}\n\n// This shouldn't modifiy any char that has case\nfunction getCharEscape(codePoint, {escDigit, inCharClass, useFlagV}) {\n if (CharCodeEscapeMap.has(codePoint)) {\n return CharCodeEscapeMap.get(codePoint);\n }\n if (\n // Control chars, etc.; condition modeled on the Chrome developer console's display for strings\n codePoint < 32 || (codePoint > 126 && codePoint < 160) ||\n // Unicode planes 4-16; unassigned, special purpose, and private use area\n codePoint > 0x3FFFF ||\n // Avoid corrupting a preceding backref by immediately following it with a literal digit\n (escDigit && isDigitCharCode(codePoint))\n ) {\n // Don't convert codePoint `0` to `\\0` since that's corruptible by following literal digits\n // Note: Not using raw strings to work around Bun \u2264 1.1.34 issue <github.com/oven-sh/bun/issues/7540>\n return codePoint > 0xFF ?\n `\\\\u{${codePoint.toString(16).toUpperCase()}}` :\n `\\\\x${codePoint.toString(16).toUpperCase().padStart(2, '0')}`;\n }\n const escapeChars = inCharClass ?\n (useFlagV ? CharClassEscapeCharsFlagV : CharClassEscapeChars) :\n BaseEscapeChars;\n const char = cp(codePoint);\n return (escapeChars.has(char) ? '\\\\' : '') + char;\n}\n\nfunction getCodePointRangesFromChars(chars) {\n const codePoints = chars.map(char => char.codePointAt(0)).sort((a, b) => a - b);\n const values = [];\n let start = null;\n for (let i = 0; i < codePoints.length; i++) {\n if (codePoints[i + 1] === codePoints[i] + 1) {\n start ??= codePoints[i];\n } else if (start === null) {\n values.push(codePoints[i]);\n } else {\n values.push([start, codePoints[i]]);\n start = null;\n }\n }\n return values;\n}\n\nfunction getGroupPrefix(atomic, flagMods, useFlagMods) {\n if (atomic) {\n return '>';\n }\n let mods = '';\n if (flagMods && useFlagMods) {\n const {enable, disable} = flagMods;\n mods =\n (enable?.ignoreCase ? 'i' : '') +\n (enable?.dotAll ? 's' : '') +\n (disable ? '-' : '') +\n (disable?.ignoreCase ? 'i' : '') +\n (disable?.dotAll ? 's' : '');\n }\n return `${mods}:`;\n}\n\n/**\n@param {QuantifierNode} node\n@returns {string}\n*/\nfunction getQuantifierStr({kind, max, min}) {\n let base;\n if (!min && max === 1) {\n base = '?';\n } else if (!min && max === Infinity) {\n base = '*';\n } else if (min === 1 && max === Infinity) {\n base = '+';\n } else if (min === max) {\n base = `{${min}}`;\n } else {\n base = `{${min},${max === Infinity ? '' : max}}`;\n }\n return base + {\n greedy: '',\n lazy: '?',\n possessive: '+',\n }[kind];\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isAnyGroup({type}) {\n return type === 'CapturingGroup' ||\n type === 'Group' ||\n type === 'LookaroundAssertion';\n}\n\nfunction isDigitCharCode(value) {\n return value > 47 && value < 58;\n}\n\n/**\n@param {Node} node\n@returns {boolean}\n*/\nfunction isLiteralHyphen({type, value}) {\n return type === 'Character' && value === 45;\n}\n\nexport {\n generate,\n};\n", "import {getOrInsert} from './utils.js';\n\n/**\n@typedef {{\n hiddenCaptures?: Array<number>;\n lazyCompile?: boolean;\n strategy?: string | null;\n transfers?: Array<[number, Array<number>]>;\n}} EmulatedRegExpOptions\n*/\n\n/**\nWorks the same as JavaScript's native `RegExp` constructor in all contexts, but can be given\nresults from `toRegExpDetails` to produce the same result as `toRegExp`.\n*/\nclass EmulatedRegExp extends RegExp {\n /**\n @type {Map<number, {\n hidden?: true;\n transferTo?: number;\n }>}\n */\n #captureMap = new Map();\n\n /**\n @type {RegExp | EmulatedRegExp | null}\n */\n #compiled = null;\n\n /**\n @type {string}\n */\n #pattern;\n\n /**\n @type {Map<number, string>?}\n */\n #nameMap = null;\n\n /**\n @type {string?}\n */\n #strategy = null;\n\n /**\n Can be used to serialize the instance.\n @type {EmulatedRegExpOptions}\n */\n rawOptions = {};\n\n // Override the getter with one that works with lazy-compiled regexes\n get source() {\n return this.#pattern || '(?:)';\n }\n\n /**\n @overload\n @param {string} pattern\n @param {string} [flags]\n @param {EmulatedRegExpOptions} [options]\n */\n /**\n @overload\n @param {EmulatedRegExp} pattern\n @param {string} [flags]\n */\n constructor(pattern, flags, options) {\n const lazyCompile = !!options?.lazyCompile;\n if (pattern instanceof RegExp) {\n // Argument `options` isn't provided when regexes are copied, including as part of the\n // internal handling of string methods `matchAll` and `split`\n if (options) {\n throw new Error('Cannot provide options when copying a regexp');\n }\n const re = pattern; // Alias for readability\n super(re, flags);\n this.#pattern = re.source;\n if (re instanceof EmulatedRegExp) {\n this.#captureMap = re.#captureMap;\n this.#nameMap = re.#nameMap;\n this.#strategy = re.#strategy;\n this.rawOptions = re.rawOptions;\n }\n } else {\n const opts = {\n hiddenCaptures: [],\n strategy: null,\n transfers: [],\n ...options,\n };\n super(lazyCompile ? '' : pattern, flags);\n this.#pattern = pattern;\n this.#captureMap = createCaptureMap(opts.hiddenCaptures, opts.transfers);\n this.#strategy = opts.strategy;\n // Don't add default values from `opts` since this gets serialized\n this.rawOptions = options ?? {};\n }\n if (!lazyCompile) {\n this.#compiled = this;\n }\n }\n\n /**\n Called internally by all String/RegExp methods that use regexes.\n @override\n @param {string} str\n @returns {RegExpExecArray?}\n */\n exec(str) {\n // Lazy compilation\n if (!this.#compiled) {\n const {lazyCompile, ...rest} = this.rawOptions;\n this.#compiled = new EmulatedRegExp(this.#pattern, this.flags, rest);\n }\n\n const useLastIndex = this.global || this.sticky;\n const pos = this.lastIndex;\n\n if (this.#strategy === 'clip_search' && useLastIndex && pos) {\n // Reset since this tests on a sliced string that we want to match at the start of\n this.lastIndex = 0;\n // Slicing the string can lead to mismatches when three edge cases are stacked on each other:\n // 1. An uncommon use of `\\G` that relies on `clip_search`, combined with...\n // 2. Lookbehind that searches behind the search start (not match start) position...\n // 3. During a search when the regex's `lastIndex` isn't `0`.\n // The `clip_search` strategy is therefore only allowed when lookbehind isn't present, if\n // using strict `accuracy`\n const match = this.#execCore(str.slice(pos));\n if (match) {\n adjustMatchDetailsForOffset(match, pos, str, this.hasIndices);\n this.lastIndex += pos;\n }\n return match;\n }\n\n return this.#execCore(str);\n }\n\n /**\n Adds support for hidden and transfer captures.\n @param {string} str\n @returns\n */\n #execCore(str) {\n // Support lazy compilation\n this.#compiled.lastIndex = this.lastIndex;\n const match = super.exec.call(this.#compiled, str);\n this.lastIndex = this.#compiled.lastIndex;\n\n if (!match || !this.#captureMap.size) {\n return match;\n }\n\n const matchCopy = [...match];\n // Empty all but the first value of the array while preserving its other properties\n match.length = 1;\n let indicesCopy;\n if (this.hasIndices) {\n indicesCopy = [...match.indices];\n match.indices.length = 1;\n }\n const mappedNums = [0];\n for (let i = 1; i < matchCopy.length; i++) {\n const {hidden, transferTo} = this.#captureMap.get(i) ?? {};\n if (hidden) {\n mappedNums.push(null);\n } else {\n mappedNums.push(match.length);\n match.push(matchCopy[i]);\n if (this.hasIndices) {\n match.indices.push(indicesCopy[i]);\n }\n }\n\n // Only transfer if the capture participated in the match\n if (transferTo && matchCopy[i] !== undefined) {\n const to = mappedNums[transferTo];\n if (!to) {\n throw new Error(`Invalid capture transfer to \"${to}\"`);\n }\n match[to] = matchCopy[i];\n if (this.hasIndices) {\n match.indices[to] = indicesCopy[i];\n }\n if (match.groups) {\n if (!this.#nameMap) {\n // Generate and cache the first time it's needed\n this.#nameMap = createNameMap(this.source);\n }\n const name = this.#nameMap.get(transferTo);\n if (name) {\n match.groups[name] = matchCopy[i];\n if (this.hasIndices) {\n match.indices.groups[name] = indicesCopy[i];\n }\n }\n }\n }\n }\n\n return match;\n }\n}\n\nfunction adjustMatchDetailsForOffset(match, offset, input, hasIndices) {\n match.index += offset;\n match.input = input;\n if (hasIndices) {\n const indices = match.indices;\n for (let i = 0; i < indices.length; i++) {\n const arr = indices[i];\n if (arr) {\n // Replace the array rather than updating values since the keys of `match.indices` and\n // `match.indices.groups` share their value arrays by reference. Need to be precise in case\n // they were previously altered separately\n indices[i] = [arr[0] + offset, arr[1] + offset];\n }\n }\n const groupIndices = indices.groups;\n if (groupIndices) {\n Object.keys(groupIndices).forEach(key => {\n const arr = groupIndices[key];\n if (arr) {\n groupIndices[key] = [arr[0] + offset, arr[1] + offset];\n }\n });\n }\n }\n}\n\n/**\nBuild the capturing group map, with hidden/transfer groups marked to indicate their submatches\nshould get special handling in match results.\n@param {Array<number>} hiddenCaptures\n@param {Array<[number, Array<number>]>} transfers\n@returns {Map<number, {\n hidden?: true;\n transferTo?: number;\n}>}\n*/\nfunction createCaptureMap(hiddenCaptures, transfers) {\n const captureMap = new Map();\n for (const num of hiddenCaptures) {\n captureMap.set(num, {\n hidden: true,\n });\n }\n for (const [to, from] of transfers) {\n for (const num of from) {\n getOrInsert(captureMap, num, {}).transferTo = to;\n }\n }\n return captureMap;\n}\n\n/**\n@param {string} pattern\n@returns {Map<number, string>}\n*/\nfunction createNameMap(pattern) {\n const re = /(?<capture>\\((?:\\?<(?![=!])(?<name>[^>]+)>|(?!\\?)))|\\\\?./gsu;\n const map = new Map();\n let numCharClassesOpen = 0;\n let numCaptures = 0;\n let match;\n while ((match = re.exec(pattern))) {\n const {0: m, groups: {capture, name}} = match;\n // Relies on no unescaped literal `[` in char classes (valid in JS if not using flag v), but\n // this library's generator never produces unescaped literal `[` even with `target` ES2018 (see\n // `CharClassEscapeChars`)\n if (m === '[') {\n numCharClassesOpen++;\n } else if (!numCharClassesOpen) {\n if (capture) {\n numCaptures++;\n if (name) {\n map.set(numCaptures, name);\n }\n }\n } else if (m === ']') {\n numCharClassesOpen--;\n }\n }\n return map;\n}\n\nexport {\n EmulatedRegExp,\n};\n", "import {transform} from './transform.js';\nimport {generate} from './generate.js';\nimport {Accuracy, getOptions, Target} from './options.js';\nimport {EmulatedRegExp} from './subclass.js';\nimport {JsUnicodePropertyMap} from './unicode.js';\nimport {parse} from 'oniguruma-parser/parser';\nimport {atomic, possessive} from 'regex/internals';\nimport {recursion} from 'regex-recursion';\n/**\n@import {EmulatedRegExpOptions} from './subclass.js';\n*/\n\n// The validation and transformation for Oniguruma's unique syntax and behavior differences\n// compared to native JS RegExp is layered into all steps of the compilation process:\n// 1. Parser: Uses `oniguruma-parser` to build an Oniguruma AST, which accounts for many\n// differences between Oniguruma and JS.\n// 2. Transformer: Converts the Oniguruma AST to a Regex+ AST that preserves all Oniguruma\n// behavior. This is true even in cases of non-native-JS features that are supported by both\n// Regex+ and Oniguruma but with subtly different behavior in each (subroutines, flag x).\n// 3. Generator: Converts the Regex+ AST to a Regex+ pattern, flags, and options.\n// 4. Postprocessing: Regex+ internals and plugins are used to transpile several remaining features\n// (atomic groups, possessive quantifiers, recursion). Regex+ uses a strict superset of JS\n// RegExp syntax, so using it allows this library to benefit from not reinventing the wheel for\n// complex features that Regex+ already knows how to transpile to JS.\n\n/**\n@typedef {{\n accuracy?: keyof Accuracy;\n avoidSubclass?: boolean;\n flags?: string;\n global?: boolean;\n hasIndices?: boolean;\n lazyCompileLength?: number;\n rules?: {\n allowOrphanBackrefs?: boolean;\n asciiWordBoundaries?: boolean;\n captureGroup?: boolean;\n recursionLimit?: number;\n singleline?: boolean;\n };\n target?: keyof Target;\n verbose?: boolean;\n}} ToRegExpOptions\n*/\n\n/**\nAccepts an Oniguruma pattern and returns an equivalent JavaScript `RegExp`.\n@param {string} pattern Oniguruma regex pattern.\n@param {ToRegExpOptions} [options]\n@returns {RegExp | EmulatedRegExp}\n*/\nfunction toRegExp(pattern, options) {\n const d = toRegExpDetails(pattern, options);\n if (d.options) {\n return new EmulatedRegExp(d.pattern, d.flags, d.options);\n }\n return new RegExp(d.pattern, d.flags);\n}\n\n/**\nAccepts an Oniguruma pattern and returns the details for an equivalent JavaScript `RegExp`.\n@param {string} pattern Oniguruma regex pattern.\n@param {ToRegExpOptions} [options]\n@returns {{\n pattern: string;\n flags: string;\n options?: EmulatedRegExpOptions;\n}}\n*/\nfunction toRegExpDetails(pattern, options) {\n const opts = getOptions(options);\n const onigurumaAst = parse(pattern, {\n flags: opts.flags,\n normalizeUnknownPropertyNames: true,\n rules: {\n captureGroup: opts.rules.captureGroup,\n singleline: opts.rules.singleline,\n },\n skipBackrefValidation: opts.rules.allowOrphanBackrefs,\n unicodePropertyMap: JsUnicodePropertyMap,\n });\n const regexPlusAst = transform(onigurumaAst, {\n accuracy: opts.accuracy,\n asciiWordBoundaries: opts.rules.asciiWordBoundaries,\n avoidSubclass: opts.avoidSubclass,\n bestEffortTarget: opts.target,\n });\n const generated = generate(regexPlusAst, opts);\n const recursionResult = recursion(generated.pattern, {\n captureTransfers: generated._captureTransfers,\n hiddenCaptures: generated._hiddenCaptures,\n mode: 'external',\n });\n const possessiveResult = possessive(recursionResult.pattern);\n const atomicResult = atomic(possessiveResult.pattern, {\n captureTransfers: recursionResult.captureTransfers,\n hiddenCaptures: recursionResult.hiddenCaptures,\n });\n const details = {\n pattern: atomicResult.pattern,\n flags: `${opts.hasIndices ? 'd' : ''}${opts.global ? 'g' : ''}${generated.flags}${generated.options.disable.v ? 'u' : 'v'}`,\n };\n if (opts.avoidSubclass) {\n if (opts.lazyCompileLength !== Infinity) {\n throw new Error('Lazy compilation requires subclass');\n }\n } else {\n // Sort isn't required; only for readability when serialized\n const hiddenCaptures = atomicResult.hiddenCaptures.sort((a, b) => a - b);\n // Change the map to the `EmulatedRegExp` format, serializable as JSON\n const transfers = Array.from(atomicResult.captureTransfers);\n const strategy = regexPlusAst._strategy;\n const lazyCompile = details.pattern.length >= opts.lazyCompileLength;\n if (hiddenCaptures.length || transfers.length || strategy || lazyCompile) {\n details.options = {\n ...(hiddenCaptures.length && {hiddenCaptures}),\n ...(transfers.length && {transfers}),\n ...(strategy && {strategy}),\n ...(lazyCompile && {lazyCompile}),\n };\n }\n }\n return details;\n}\n\n// function toOnigurumaAst(pattern, options) {\n// return parse(pattern, {\n// flags: options?.flags ?? '',\n// normalizeUnknownPropertyNames: true,\n// rules: options?.rules ?? {},\n// unicodePropertyMap: JsUnicodePropertyMap,\n// });\n// }\n\n// function toRegexPlusAst(pattern, options) {\n// return transform(toOnigurumaAst(pattern, options));\n// }\n\nexport {\n EmulatedRegExp,\n toRegExp,\n toRegExpDetails,\n // toOnigurumaAst,\n // toRegexPlusAst,\n};\n", "import { t as JavaScriptScanner } from \"./scanner-BFcBmQR1.mjs\";\nimport { toRegExp } from \"oniguruma-to-es\";\n\n//#region src/engine-compile.ts\n/**\n* The default regex constructor for the JavaScript RegExp engine.\n*/\nfunction defaultJavaScriptRegexConstructor(pattern, options) {\n\treturn toRegExp(pattern, {\n\t\tglobal: true,\n\t\thasIndices: true,\n\t\tlazyCompileLength: 3e3,\n\t\trules: {\n\t\t\tallowOrphanBackrefs: true,\n\t\t\tasciiWordBoundaries: true,\n\t\t\tcaptureGroup: true,\n\t\t\trecursionLimit: 5,\n\t\t\tsingleline: true\n\t\t},\n\t\t...options\n\t});\n}\n/**\n* Use the modern JavaScript RegExp engine to implement the OnigScanner.\n*\n* As Oniguruma supports some features that can't be emulated using native JavaScript regexes, some\n* patterns are not supported. Errors will be thrown when parsing TextMate grammars with\n* unsupported patterns, and when the grammar includes patterns that use invalid Oniguruma syntax.\n* Set `forgiving` to `true` to ignore these errors and skip any unsupported or invalid patterns.\n*/\nfunction createJavaScriptRegexEngine(options = {}) {\n\tconst _options = Object.assign({\n\t\ttarget: \"auto\",\n\t\tcache: /* @__PURE__ */ new Map()\n\t}, options);\n\t_options.regexConstructor ||= (pattern) => defaultJavaScriptRegexConstructor(pattern, { target: _options.target });\n\treturn {\n\t\tcreateScanner(patterns) {\n\t\t\treturn new JavaScriptScanner(patterns, _options);\n\t\t},\n\t\tcreateString(s) {\n\t\t\treturn { content: s };\n\t\t}\n\t};\n}\n\n//#endregion\nexport { createJavaScriptRegexEngine, defaultJavaScriptRegexConstructor };", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"CSS\\\",\\\"name\\\":\\\"css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#combinators\\\"},{\\\"include\\\":\\\"#selector\\\"},{\\\"include\\\":\\\"#at-rules\\\"},{\\\"include\\\":\\\"#rule-list\\\"}],\\\"repository\\\":{\\\"at-rules\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\A\\\\\\\\uFEFF?(?i:(?=\\\\\\\\s*@charset\\\\\\\\b))\\\",\\\"end\\\":\\\";|(?=$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.charset.css\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.not-lowercase.charset.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.leading-whitespace.charset.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.no-whitespace.charset.css\\\"},\\\"4\\\":{\\\"name\\\":\\\"invalid.illegal.whitespace.charset.css\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.not-double-quoted.charset.css\\\"},\\\"6\\\":{\\\"name\\\":\\\"invalid.illegal.unclosed-string.charset.css\\\"},\\\"7\\\":{\\\"name\\\":\\\"invalid.illegal.unexpected-characters.charset.css\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?!@charset)@\\\\\\\\w+)|\\\\\\\\G(\\\\\\\\s+)|(@charset\\\\\\\\S[^;]*)|(?<=@charset)( {2,}|\\\\\\\\t+)|(?<=@charset )([^\\\\\\\";]+)|(\\\\\\\"[^\\\\\\\"]+)$|(?<=\\\\\\\")([^;]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.charset.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"match\\\":\\\"((@)charset)(?=\\\\\\\\s)\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\"|$\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.double.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?:\\\\\\\\G|^)(?=[^\\\\\\\"]+$)\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"invalid.illegal.unclosed.string.css\\\"}]}]},{\\\"begin\\\":\\\"(?i)((@)import)(?:\\\\\\\\s+|$|(?=[\\\\\\\"']|/\\\\\\\\*))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.import.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\";\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.import.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\\\\\\s*(?=/\\\\\\\\*)\\\",\\\"end\\\":\\\"(?<=\\\\\\\\*/)\\\\\\\\s*\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"}]},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#url\\\"},{\\\"include\\\":\\\"#media-query-list\\\"}]},{\\\"begin\\\":\\\"(?i)((@)font-face)(?=\\\\\\\\s*|\\\\\\\\{|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.font-face.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.at-rule.font-face.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#rule-list\\\"}]},{\\\"begin\\\":\\\"(?i)(@)page(?=[:{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.page.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*($|[:;{]))\\\",\\\"name\\\":\\\"meta.at-rule.page.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#rule-list\\\"}]},{\\\"begin\\\":\\\"(?i)(?=@media([(\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)media\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.media.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.media.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#media-query-list\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.media.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.media.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.media.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@counter-style([\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)counter-style\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.counter-style.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"name\\\":\\\"meta.at-rule.counter-style.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.parameter.style-name.css\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.counter-style.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#rule-list-innards\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@document([\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)document\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.document.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.document.header.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(url-prefix|domain|regexp)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.document-rule.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.document-rule.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"[^\\\\\\\"')\\\\\\\\s]+\\\",\\\"name\\\":\\\"variable.parameter.document-rule.css\\\"}]},{\\\"include\\\":\\\"#url\\\"},{\\\"include\\\":\\\"#commas\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.document.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.document.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.document.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.keyframes.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"name\\\":\\\"meta.at-rule.keyframes.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.parameter.keyframe-list.css\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.keyframes.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.keyframes.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.keyframes.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.keyframe-offset.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.other.keyframe-offset.percentage.css\\\"}},\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(from|to)(?![-\\\\\\\\w])|([-+]?(?:\\\\\\\\d+(?:\\\\\\\\.\\\\\\\\d+)?|\\\\\\\\.\\\\\\\\d+)%)\\\"},{\\\"include\\\":\\\"#rule-list\\\"}]}]},{\\\"begin\\\":\\\"(?i)(?=@supports([(\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)|(?=;)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)supports\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.supports.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.supports.header.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#feature-query-operators\\\"},{\\\"include\\\":\\\"#feature-query\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.supports.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.supports.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.supports.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},{\\\"begin\\\":\\\"(?i)((@)(-(ms|o)-)?viewport)(?=[\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.viewport.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;@{])\\\",\\\"name\\\":\\\"meta.at-rule.viewport.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"(?i)((@)font-feature-values)(?=[\\\\\\\"';{\\\\\\\\s]|/\\\\\\\\*|$)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.font-feature-values.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"contentName\\\":\\\"variable.parameter.font-name.css\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[;@{])\\\",\\\"name\\\":\\\"meta.at-rule.font-features.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"include\\\":\\\"#font-features\\\"},{\\\"begin\\\":\\\"(?i)((@)namespace)(?=[\\\\\\\"';\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.namespace.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\";|(?=[@{])\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.namespace.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#url\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.namespace-prefix.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(?i)(?:\\\\\\\\G|^|(?<=\\\\\\\\s))(?=(?<=\\\\\\\\s|^)[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\s*/\\\\\\\\*(?:[^*]|\\\\\\\\*[^/])*\\\\\\\\*/)(.*?)([-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*)\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?i)(?=@[-\\\\\\\\w]+[^;]+;s*$)\\\",\\\"end\\\":\\\"(?<=;)(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)[-\\\\\\\\w]+\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\";\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"name\\\":\\\"meta.at-rule.header.css\\\"}]},{\\\"begin\\\":\\\"(?i)(?=@[-\\\\\\\\w]+([({\\\\\\\\s]|/\\\\\\\\*|$))\\\",\\\"end\\\":\\\"(?<=})(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)\\\\\\\\G(@)[-\\\\\\\\w]+\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.at-rule.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"name\\\":\\\"meta.at-rule.header.css\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.at-rule.body.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]}]},\\\"color-keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.color.w3c-standard-color-name.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.color.w3c-extended-color-name.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])currentColor(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.color.current.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"invalid.deprecated.color.system.css\\\"}]},\\\"combinators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"/deep/|>>>\\\",\\\"name\\\":\\\"invalid.deprecated.combinator.css\\\"},{\\\"match\\\":\\\">>|[+>~]\\\",\\\"name\\\":\\\"keyword.operator.combinator.css\\\"}]},\\\"commas\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.list.comma.css\\\"},\\\"comment-block\\\":{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.css\\\"}},\\\"name\\\":\\\"comment.block.css\\\"},\\\"escapes\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\h{1,6}\\\",\\\"name\\\":\\\"constant.character.escape.codepoint.css\\\"},{\\\"begin\\\":\\\"\\\\\\\\\\\\\\\\$\\\\\\\\s*\\\",\\\"end\\\":\\\"^(?<!\\\\\\\\G)\\\",\\\"name\\\":\\\"constant.character.escape.newline.css\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.css\\\"}]},\\\"feature-query\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.condition.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.condition.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.feature-query.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#feature-query-operators\\\"},{\\\"include\\\":\\\"#feature-query\\\"}]},\\\"feature-query-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<=[()\\\\\\\\s]|^|\\\\\\\\*/)(and|not|or)(?=[()\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.logical.feature.$1.css\\\"},{\\\"include\\\":\\\"#rule-list-innards\\\"}]},\\\"font-features\\\":{\\\"begin\\\":\\\"(?i)((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))(?=[\\\\\\\"';@{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.at-rule.${3:/downcase}.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.keyword.css\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.at-rule.${3:/downcase}.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.property-list.font-feature.css\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.font-feature.css\\\"},{\\\"include\\\":\\\"#rule-list-innards\\\"}]}]},\\\"functional-pseudo-classes\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)((:)dir)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(ltr|rtl)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.text-direction.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)((:)lang)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=[(,\\\\\\\\s])[A-Za-z]+(-[0-9A-Za-z]*|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*(?=[),\\\\\\\\s])\\\",\\\"name\\\":\\\"support.constant.language-range.css\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.double.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"(?<=[\\\\\\\"\\\\\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=[\\\\\\\"\\\\\\\\s])\\\",\\\"name\\\":\\\"support.constant.language-range.css\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.single.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"(?<=['\\\\\\\\s])[*A-Za-z]+(-[*0-9A-Za-z]*)*(?=['\\\\\\\\s])\\\",\\\"name\\\":\\\"support.constant.language-range.css\\\"}]},{\\\"include\\\":\\\"#commas\\\"}]},{\\\"begin\\\":\\\"(?i)((:)(?:not|has|matches|where|is))(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#selector-innards\\\"}]},{\\\"begin\\\":\\\"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)[-+]?(\\\\\\\\d+n?|n)(\\\\\\\\s*[-+]\\\\\\\\s*\\\\\\\\d+)?\\\",\\\"name\\\":\\\"constant.numeric.css\\\"},{\\\"match\\\":\\\"(?i)even|odd\\\",\\\"name\\\":\\\"support.constant.parity.css\\\"}]}]},\\\"functions\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(calc)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.calc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.calc.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"[*/]|(?<=\\\\\\\\s|^)[-+](?=\\\\\\\\s|$)\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(rgba?|hsla?|hwb|lab|oklab|lch|oklch|color)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.misc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.color.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])((?:-(?:webkit-|moz-|o-))?(?:repeating-)?(?:linear|radial|conic)-gradient)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.gradient.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.gradient.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(from|to|at|in|hue)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"keyword.operator.gradient.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(-webkit-gradient)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.deprecated.gradient.function.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.gradient.invalid.deprecated.gradient.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(from|to|color-stop)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.deprecated.function.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate|color-mix|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia|styleset|stylistic|swash|symbols|cos|sin|tan|acos|asin|atan2??|hypot|sqrt|pow|log|exp|abs|sign)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.misc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.misc.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<=[\\\\\\\",\\\\\\\\s]|\\\\\\\\*/|^)\\\\\\\\d+x(?=[\\\\\\\"'),\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"constant.numeric.other.density.css\\\"},{\\\"include\\\":\\\"#property-values\\\"},{\\\"match\\\":\\\"[^\\\\\\\"'),\\\\\\\\s]+\\\",\\\"name\\\":\\\"variable.parameter.misc.css\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(circle|ellipse|inset|polygon|rect)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.shape.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.shape.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<=\\\\\\\\s|^|\\\\\\\\*/)(at|round)(?=\\\\\\\\s|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.shape.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(cubic-bezier|steps)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.timing-function.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.timing-function.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(start|end)(?=\\\\\\\\s*\\\\\\\\)|$)\\\",\\\"name\\\":\\\"support.constant.step-direction.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])((?:translate|scale|rotate)(?:[XYZ]|3D)?|matrix(?:3D)?|skew[XY]?|perspective)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.transform.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"include\\\":\\\"#url\\\"},{\\\"begin\\\":\\\"(?i)(?<![-\\\\\\\\w])(var)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.misc.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.variable.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"--[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.argument.css\\\"},{\\\"include\\\":\\\"#property-values\\\"}]}]},\\\"media-feature-keywords\\\":{\\\"match\\\":\\\"(?i)(?<=^|[:\\\\\\\\s]|\\\\\\\\*/)(?:portrait|landscape|progressive|interlace|fullscreen|standalone|minimal-ui|browser|hover)(?=[)\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"support.constant.property-value.css\\\"},\\\"media-features\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.property-name.media.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.property-name.media.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.type.vendored.property-name.media.css\\\"}},\\\"match\\\":\\\"(?i)(?<=^|[(\\\\\\\\s]|\\\\\\\\*/)(?:((?:m(?:in-|ax-))?(?:height|width|aspect-ratio|color|color-index|monochrome|resolution)|grid|scan|orientation|display-mode|hover)|((?:m(?:in-|ax-))?device-(?:height|width|aspect-ratio))|((?:[-_](?:webkit|apple|khtml|epub|moz|ms|o|xv|ah|rim|atsc|hp|tc|wap|ro)|(?:mso|prince))-[-\\\\\\\\w]+(?=\\\\\\\\s*(?:/\\\\\\\\*(?:[^*]|\\\\\\\\*[^/])*\\\\\\\\*/)?\\\\\\\\s*[):])))(?=\\\\\\\\s|$|[):<=>]|/\\\\\\\\*)\\\"},\\\"media-query\\\":{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#media-types\\\"},{\\\"match\\\":\\\"(?i)(?<=\\\\\\\\s|^|,|\\\\\\\\*/)(only|not)(?=[{\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.logical.$1.media.css\\\"},{\\\"match\\\":\\\"(?i)(?<=\\\\\\\\s|^|\\\\\\\\*/|\\\\\\\\))and(?=\\\\\\\\s|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"keyword.operator.logical.and.media.css\\\"},{\\\"match\\\":\\\",(?:(?:\\\\\\\\s*,)+|(?=\\\\\\\\s*[);{]))\\\",\\\"name\\\":\\\"invalid.illegal.comma.css\\\"},{\\\"include\\\":\\\"#commas\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.bracket.round.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#media-features\\\"},{\\\"include\\\":\\\"#media-feature-keywords\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.css\\\"},{\\\"match\\\":\\\">=|<=|[<=>]\\\",\\\"name\\\":\\\"keyword.operator.comparison.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.css\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.css\\\"}},\\\"match\\\":\\\"(\\\\\\\\d+)\\\\\\\\s*(/)\\\\\\\\s*(\\\\\\\\d+)\\\",\\\"name\\\":\\\"meta.ratio.css\\\"},{\\\"include\\\":\\\"#numeric-values\\\"},{\\\"include\\\":\\\"#comment-block\\\"}]}]},\\\"media-query-list\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\s*[^;{])\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[;{])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#media-query\\\"}]},\\\"media-types\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.constant.media.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.constant.media.css\\\"}},\\\"match\\\":\\\"(?i)(?<=^|[,\\\\\\\\s]|\\\\\\\\*/)(?:(all|print|screen|speech)|(aural|braille|embossed|handheld|projection|tty|tv))(?=$|[,;{\\\\\\\\s]|/\\\\\\\\*)\\\"},\\\"numeric-values\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.css\\\"}},\\\"match\\\":\\\"(#)(?:\\\\\\\\h{3,4}|\\\\\\\\h{6}|\\\\\\\\h{8})\\\\\\\\b\\\",\\\"name\\\":\\\"constant.other.color.rgb-value.hex.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.unit.percentage.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.unit.${2:/downcase}.css\\\"}},\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])[-+]?(?:[0-9]+(?:\\\\\\\\.[0-9]+)?|\\\\\\\\.[0-9]+)(?:(?<=[0-9])E[-+]?[0-9]+)?(?:(%)|(deg|grad|rad|turn|Hz|kHz|ch|cm|em|ex|fr|in|mm|mozmm|pc|pt|px|q|rem|rch|rex|rlh|ic|ric|rcap|vh|vw|vb|vi|svh|svw|svb|svi|dvh|dvw|dvb|dvi|lvh|lvw|lvb|lvi|vmax|vmin|cqw|cqi|cqh|cqb|cqmin|cqmax|dpi|dpcm|dppx|s|ms)\\\\\\\\b)?\\\",\\\"name\\\":\\\"constant.numeric.css\\\"}]},\\\"property-keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse|always|antialiased|auto|auto-fill|auto-fit|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow|flow-root|forwards|freeze|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83|jis90|justify|justify-all|kannada|keep-all|landscape|larger??|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]|reset-size|reverse|revert|revert-layer|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.property-value.css\\\"},{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian|upper-latin|upper-roman|urdu)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.property-value.list-style-type.css\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+\\\",\\\"name\\\":\\\"support.constant.vendored.property-value.css\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.constant.font-name.css\\\"}]},\\\"property-names\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?i)(?<![-\\\\\\\\w])(?:accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|aspect-ratio|backdrop-filter|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border|border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color|border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end|border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius|border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|container|container-name|container-type|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align|inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation|justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset|mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position|offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline|overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]|pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin|place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align|ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start|scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right|scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom|scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right|scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type|scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size|speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright|text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style|text-decoration-thickness|text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation|text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform|transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom|alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile|color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity|glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid|marker-start|rx??|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|[xy]|adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break|balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length|bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction|box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column|column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break|delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position|flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust|initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count|justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group|orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range|play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim|radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness|right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color|rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral|speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch|string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height|text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style|top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range|voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap)(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"support.type.property-name.css\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-A-Za-z]+\\\",\\\"name\\\":\\\"support.type.vendored.property-name.css\\\"}]},\\\"property-values\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#commas\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#property-keywords\\\"},{\\\"include\\\":\\\"#unicode-range\\\"},{\\\"include\\\":\\\"#numeric-values\\\"},{\\\"include\\\":\\\"#color-keywords\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"!\\\\\\\\s*important(?![-\\\\\\\\w])\\\",\\\"name\\\":\\\"keyword.other.important.css\\\"}]},\\\"pseudo-classes\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.colon.css\\\"}},\\\"match\\\":\\\"(?i)(:)(:*)(?:active|any-link|checked|default|disabled|empty|enabled|first|(?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover|in-range|indeterminate|invalid|left|link|optional|out-of-range|read-only|read-write|required|right|root|scope|target|unresolved|valid|visited)(?![-\\\\\\\\w]|\\\\\\\\s*[;}])\\\",\\\"name\\\":\\\"entity.other.attribute-name.pseudo-class.css\\\"},\\\"pseudo-elements\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"}},\\\"match\\\":\\\"(?i)(?:(::?)(?:after|before|first-letter|first-line|(?:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[-a-z]+)|(::)(?:backdrop|content|grammar-error|marker|placeholder|selection|shadow|spelling-error))(?![-\\\\\\\\w]|\\\\\\\\s*[;}])\\\",\\\"name\\\":\\\"entity.other.attribute-name.pseudo-element.css\\\"},\\\"rule-list\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.begin.bracket.curly.css\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.property-list.end.bracket.curly.css\\\"}},\\\"name\\\":\\\"meta.property-list.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#rule-list-innards\\\"}]},\\\"rule-list-innards\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#font-features\\\"},{\\\"match\\\":\\\"(?<![-\\\\\\\\w])--[-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*\\\",\\\"name\\\":\\\"variable.css\\\"},{\\\"begin\\\":\\\"(?<![-A-Za-z])(?=[-A-Za-z])\\\",\\\"end\\\":\\\"$|(?![-A-Za-z])\\\",\\\"name\\\":\\\"meta.property-name.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#property-names\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.css\\\"}},\\\"contentName\\\":\\\"meta.property-value.css\\\",\\\"end\\\":\\\"\\\\\\\\s*(;)|\\\\\\\\s*(?=[)}])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#property-values\\\"}]},{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.rule.css\\\"}]},\\\"selector\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\|?(?:[-#*.:A-\\\\\\\\[_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.)))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*[)/@{])\\\",\\\"name\\\":\\\"meta.selector.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#selector-innards\\\"}]},\\\"selector-innards\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#commas\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"include\\\":\\\"#combinators\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.namespace-prefix.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.css\\\"}},\\\"match\\\":\\\"(?:^|(?<=[(,;}\\\\\\\\s]))(?![-*\\\\\\\\w]+\\\\\\\\|(?![-#*.:A-\\\\\\\\[_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]))([-A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]](?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*|\\\\\\\\*)?(\\\\\\\\|)\\\"},{\\\"include\\\":\\\"#tag-names\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"entity.name.tag.wildcard.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(?<![-@\\\\\\\\w])([#.])((?:-?[0-9]|-(?=$|[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*)|(?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*(?:[]!\\\\\\\"%-(*;<?@^`|}]|/(?!\\\\\\\\*))+)(?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))*)\\\",\\\"name\\\":\\\"invalid.illegal.bad-identifier.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(\\\\\\\\.)((?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*)\\\",\\\"name\\\":\\\"entity.other.attribute-name.class.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.css\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(#)(-?(?![0-9])(?:[-0-9A-Z_a-z[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+)(?=$|[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*)\\\",\\\"name\\\":\\\"entity.other.attribute-name.id.css\\\"},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.entity.begin.bracket.square.css\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.entity.end.bracket.square.css\\\"}},\\\"name\\\":\\\"meta.attribute-selector.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ignore-case.css\\\"}},\\\"match\\\":\\\"(?<=[\\\\\\\"'\\\\\\\\s]|^|\\\\\\\\*/)\\\\\\\\s*([Ii])\\\\\\\\s*(?=[]\\\\\\\\s]|/\\\\\\\\*|$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.attribute-value.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(?<==)\\\\\\\\s*((?!/\\\\\\\\*)(?:[^]\\\\\\\"'\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\.)+)\\\"},{\\\"include\\\":\\\"#escapes\\\"},{\\\"match\\\":\\\"[$*^|~]?=\\\",\\\"name\\\":\\\"keyword.operator.pattern.css\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"punctuation.separator.css\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.namespace-prefix.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(-?(?!\\\\\\\\d)(?:[-\\\\\\\\w[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+|\\\\\\\\*)(?=\\\\\\\\|(?![=\\\\\\\\s]|$|])(?:-?(?!\\\\\\\\d)|[-\\\\\\\\\\\\\\\\\\\\\\\\w[^\\\\\\\\x00-\\\\\\\\x7F]]))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"match\\\":\\\"(-?(?!\\\\\\\\d)(?>[-\\\\\\\\w[^\\\\\\\\x00-\\\\\\\\x7F]]|\\\\\\\\\\\\\\\\(?:\\\\\\\\h{1,6}|.))+)\\\\\\\\s*(?=[]$*=^|~]|/\\\\\\\\*)\\\"}]},{\\\"include\\\":\\\"#pseudo-classes\\\"},{\\\"include\\\":\\\"#pseudo-elements\\\"},{\\\"include\\\":\\\"#functional-pseudo-classes\\\"},{\\\"match\\\":\\\"(?<![-@\\\\\\\\w])(?=[a-z]\\\\\\\\w*-)(?:(?![A-Z])[-\\\\\\\\w])+(?![-(\\\\\\\\w])\\\",\\\"name\\\":\\\"entity.name.tag.custom.css\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"\\\\\\\"|(?<!\\\\\\\\\\\\\\\\)(?=$|\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.double.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?:\\\\\\\\G|^)(?=(?:[^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+$)\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"invalid.illegal.unclosed.string.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.css\\\"}},\\\"end\\\":\\\"'|(?<!\\\\\\\\\\\\\\\\)(?=$|\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.css\\\"}},\\\"name\\\":\\\"string.quoted.single.css\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?:\\\\\\\\G|^)(?=(?:[^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+$)\\\",\\\"end\\\":\\\"$\\\",\\\"name\\\":\\\"invalid.illegal.unclosed.string.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escapes\\\"}]},{\\\"include\\\":\\\"#escapes\\\"}]}]},\\\"tag-names\\\":{\\\"match\\\":\\\"(?i)(?<![-:\\\\\\\\w])(?:a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound|big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i|iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark|marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rtc??|ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong|style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|ul??|var|video|wbr|xmp|altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform|circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix|feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting|feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern|line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata|missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor|stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern|annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced|mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot|mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup|msup|mtable|mtd|mtext|mtr|munder|munderover|semantics)(?=[#)+,.:>\\\\\\\\[{|~\\\\\\\\s]|/\\\\\\\\*|$)\\\",\\\"name\\\":\\\"entity.name.tag.css\\\"},\\\"unicode-range\\\":{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.other.unicode-range.css\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.dash.unicode-range.css\\\"}},\\\"match\\\":\\\"(?<![-\\\\\\\\w])[Uu]\\\\\\\\+[?\\\\\\\\h]{1,6}(?:(-)\\\\\\\\h{1,6})?(?![-\\\\\\\\w])\\\"},\\\"url\\\":{\\\"begin\\\":\\\"(?i)(?<![-@\\\\\\\\w])(url)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.url.css\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.bracket.round.css\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.function.end.bracket.round.css\\\"}},\\\"name\\\":\\\"meta.function.url.css\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"[^\\\\\\\"')\\\\\\\\s]+\\\",\\\"name\\\":\\\"variable.parameter.url.css\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment-block\\\"},{\\\"include\\\":\\\"#escapes\\\"}]}},\\\"scopeName\\\":\\\"source.css\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Go\\\",\\\"name\\\":\\\"go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}],\\\"repository\\\":{\\\"after_control_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\brange\\\\\\\\b|;|\\\\\\\\bif\\\\\\\\b|\\\\\\\\bfor\\\\\\\\b|[<>]|<=|>=|==|!=|\\\\\\\\w[-%*+/]|\\\\\\\\w[-%*+/]=|\\\\\\\\|\\\\\\\\||&&)\\\\\\\\s*((?![]\\\\\\\\[]+)[-\\\\\\\\]!%*+./:<=>\\\\\\\\[_[:alnum:]]+)\\\\\\\\s*(?=\\\\\\\\{)\\\"},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},\\\"built_in_functions\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(append|cap|close|complex|copy|delete|imag|len|panic|print|println|real|recover|min|max|clear)\\\\\\\\b(?=\\\\\\\\()\\\",\\\"name\\\":\\\"entity.name.function.support.builtin.go\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(new)\\\\\\\\b(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.support.builtin.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(make)\\\\\\\\b(\\\\\\\\()((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?[]*\\\\\\\\[]+{0,1}(?:(?!\\\\\\\\bmap\\\\\\\\b)[.\\\\\\\\w]+)?(\\\\\\\\[(?:\\\\\\\\S+(?:,\\\\\\\\s*\\\\\\\\S+)*)?])?,?)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.support.builtin.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"$self\\\"}]}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(/\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.go\\\"}},\\\"end\\\":\\\"(\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.go\\\"}},\\\"name\\\":\\\"comment.block.go\\\"},{\\\"begin\\\":\\\"(//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.go\\\"}},\\\"end\\\":\\\"\\\\\\\\n|$\\\",\\\"name\\\":\\\"comment.line.double-slash.go\\\"}]},\\\"const_assignment\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.constant.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\bconst\\\\\\\\b)\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\bconst\\\\\\\\b)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.constant.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"delimiters\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.other.comma.go\\\"},{\\\"match\\\":\\\"\\\\\\\\.(?!\\\\\\\\.\\\\\\\\.)\\\",\\\"name\\\":\\\"punctuation.other.period.go\\\"},{\\\"match\\\":\\\":(?!=)\\\",\\\"name\\\":\\\"punctuation.other.colon.go\\\"}]},\\\"double_parentheses_types\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<!\\\\\\\\w)(\\\\\\\\([]*\\\\\\\\[]+{0,1}[.\\\\\\\\w]+(?:\\\\\\\\[(?:[]*.\\\\\\\\[{}\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[{}\\\\\\\\w]+)*)?])?\\\\\\\\))(?=\\\\\\\\()\\\"},\\\"function_declaration\\\":{\\\"begin\\\":\\\"^\\\\\\\\b(func)\\\\\\\\b\\\\\\\\s*(\\\\\\\\([^)]+\\\\\\\\)\\\\\\\\s*)?(?:(\\\\\\\\w+)(?=[(\\\\\\\\[]))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.function.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(\\\\\\\\w+\\\\\\\\s+)?([*.\\\\\\\\w]+(?:\\\\\\\\[(?:[*.\\\\\\\\w]+(?:,\\\\\\\\s+)?)+{0,1}])?)\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.function.go\\\"}]}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*((?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b)[-\\\\\\\\]*.\\\\\\\\[\\\\\\\\w]+)?\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[-\\\\\\\\]*.<>\\\\\\\\[\\\\\\\\w]+\\\\\\\\s*(?:/[*/].*)?)$\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"function_param_types\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+(?=(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b\\\\\\\\s*\\\\\\\\{)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"(?:(?<=\\\\\\\\()|^\\\\\\\\s*)((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+(?:/[*/].*)?)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?:[]*.\\\\\\\\[\\\\\\\\w]+{0,1}(?:\\\\\\\\bfunc\\\\\\\\b\\\\\\\\([^)]+{0,1}\\\\\\\\)(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*)+(?:[]*.\\\\\\\\[\\\\\\\\w]+|\\\\\\\\([^)]+{0,1}\\\\\\\\))?|(?:[]*\\\\\\\\[]+{0,1}[*.\\\\\\\\w]+(?:\\\\\\\\[[^]]+])?[*.\\\\\\\\w]+{0,1})+))\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"([.\\\\\\\\w]+)\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"functions\\\":{\\\"begin\\\":\\\"\\\\\\\\b(func)\\\\\\\\b(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.function.go\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))(\\\\\\\\s*(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+)?(\\\\\\\\s*(?:[]*\\\\\\\\[]+{0,1}[*.\\\\\\\\w]+)?(?:\\\\\\\\[(?:[*.\\\\\\\\w]+{0,1}(?:\\\\\\\\[[^]]+{0,1}])?(?:,\\\\\\\\s+)?)+]|\\\\\\\\([^)]+{0,1}\\\\\\\\))?[*.\\\\\\\\w]+{0,1}\\\\\\\\s*(?=\\\\\\\\{)|\\\\\\\\s*(?:[]*\\\\\\\\[]+{0,1}(?!\\\\\\\\bfunc\\\\\\\\b)[*.\\\\\\\\w]+(?:\\\\\\\\[(?:[*.\\\\\\\\w]+{0,1}(?:\\\\\\\\[[^]]+{0,1}])?(?:,\\\\\\\\s+)?)+])?[*.\\\\\\\\w]+{0,1}|\\\\\\\\([^)]+{0,1}\\\\\\\\)))?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-variable-types\\\"}]},\\\"functions_inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.function.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b(func)\\\\\\\\b(\\\\\\\\([^/]*?\\\\\\\\)\\\\\\\\s+\\\\\\\\([^/]*?\\\\\\\\))\\\\\\\\s+(?=\\\\\\\\{)\\\"},\\\"generic_param_types\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+(?=(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b\\\\\\\\s*\\\\\\\\{)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]}},\\\"match\\\":\\\"(?:(?<=\\\\\\\\()|^\\\\\\\\s*)((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+(?:/[*/].*)?)$\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.parameter.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\b\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\b\\\\\\\\w+)\\\\\\\\s+((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?:[]*.\\\\\\\\[\\\\\\\\w]+{0,1}(?:\\\\\\\\bfunc\\\\\\\\b\\\\\\\\([^)]+{0,1}\\\\\\\\)(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*)+(?:[*.\\\\\\\\w]+|\\\\\\\\([^)]+{0,1}\\\\\\\\))?|(?:(?:[*.~\\\\\\\\w]+|\\\\\\\\[(?:[*.\\\\\\\\w]+{0,1}(?:\\\\\\\\[[^]]+{0,1}])?(?:,\\\\\\\\s+)?)+])[*.\\\\\\\\w]+{0,1})+))\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b([.\\\\\\\\w]+)\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"generic_types\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-variable-types\\\"}]}},\\\"match\\\":\\\"([*.\\\\\\\\w]+)(\\\\\\\\[[^]]+{0,1}])\\\"},\\\"group-functions\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#function_declaration\\\"},{\\\"include\\\":\\\"#functions_inline\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"include\\\":\\\"#built_in_functions\\\"},{\\\"include\\\":\\\"#support_functions\\\"}]},\\\"group-types\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#other_struct_interface_expressions\\\"},{\\\"include\\\":\\\"#type_assertion_inline\\\"},{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#single_type\\\"},{\\\"include\\\":\\\"#multi_types\\\"},{\\\"include\\\":\\\"#struct_interface_declaration\\\"},{\\\"include\\\":\\\"#double_parentheses_types\\\"},{\\\"include\\\":\\\"#switch_types\\\"},{\\\"include\\\":\\\"#type-declarations\\\"}]},\\\"group-variables\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#const_assignment\\\"},{\\\"include\\\":\\\"#var_assignment\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"include\\\":\\\"#label_loop_variables\\\"},{\\\"include\\\":\\\"#slice_index_variables\\\"},{\\\"include\\\":\\\"#property_variables\\\"},{\\\"include\\\":\\\"#switch_variables\\\"},{\\\"include\\\":\\\"#other_variables\\\"}]},\\\"hover\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\binvalid\\\\\\\\b\\\\\\\\s+\\\\\\\\btype\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.field.go\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=^\\\\\\\\bfield\\\\\\\\b)\\\\\\\\s+([*.\\\\\\\\w]+)\\\\\\\\s+([\\\\\\\\s\\\\\\\\S]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=^\\\\\\\\breturns\\\\\\\\b)\\\\\\\\s+([\\\\\\\\s\\\\\\\\S]+)\\\"}]},\\\"import\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(import)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.go\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#imports\\\"}]}]},\\\"imports\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.import.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"string.quoted.double.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.import.go\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"match\\\":\\\"(\\\\\\\\s*[.\\\\\\\\w]+)?\\\\\\\\s*((\\\\\\\")([^\\\\\\\"]*)(\\\\\\\"))\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.imports.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.imports.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#imports\\\"}]},{\\\"include\\\":\\\"$self\\\"}]},\\\"interface_variables_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(interface)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.interface.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#interface_variables_types_field\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"interface_variables_types_field\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"([.\\\\\\\\w]+)\\\"}]},\\\"keywords\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bchan\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.channel.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bconst\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.const.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bvar\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.var.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bfunc\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.function.go\\\"},{\\\"match\\\":\\\"\\\\\\\\binterface\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.interface.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bmap\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.map.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bstruct\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.struct.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bimport\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.import.go\\\"},{\\\"match\\\":\\\"\\\\\\\\btype\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.type.go\\\"}]},\\\"label_loop_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.label.go\\\"}]}},\\\"match\\\":\\\"^(\\\\\\\\s*\\\\\\\\w+:\\\\\\\\s*|\\\\\\\\s*\\\\\\\\b(?:break|goto|continue)\\\\\\\\b\\\\\\\\s+\\\\\\\\w+(?:\\\\\\\\s*/[*/]\\\\\\\\s*.*)?)$\\\"},\\\"language_constants\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.boolean.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.language.null.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.iota.go\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?:(true|false)|(nil)|(iota))\\\\\\\\b\\\"},\\\"map_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(map)\\\\\\\\b(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.map.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"(])((?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:func|struct|map)\\\\\\\\b)[]*\\\\\\\\[]+{0,1}[.\\\\\\\\w]+(?:\\\\\\\\[(?:[]*.\\\\\\\\[{}\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[{}\\\\\\\\w]+)*)?])?)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"include\\\":\\\"#functions\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"multi_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#interface_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"numeric_literals\\\":{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=.)\\\",\\\"end\\\":\\\"\\\\\\\\n|$\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.decimal.point.go\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.decimal.go\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.decimal.go\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.decimal.go\\\"},\\\"9\\\":{\\\"name\\\":\\\"constant.numeric.exponent.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"10\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"11\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"12\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.decimal.go\\\"},\\\"14\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.decimal.go\\\"},\\\"15\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.decimal.go\\\"},\\\"16\\\":{\\\"name\\\":\\\"constant.numeric.exponent.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"17\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"18\\\":{\\\"name\\\":\\\"constant.numeric.decimal.point.go\\\"},\\\"19\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"20\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"21\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.decimal.go\\\"},\\\"22\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.decimal.go\\\"},\\\"23\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.decimal.go\\\"},\\\"24\\\":{\\\"name\\\":\\\"constant.numeric.exponent.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"25\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"26\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"27\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"28\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"29\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\"},\\\"30\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"31\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"32\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.hexadecimal.go\\\"},\\\"33\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.hexadecimal.go\\\"},\\\"34\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.hexadecimal.go\\\"},\\\"35\\\":{\\\"name\\\":\\\"constant.numeric.exponent.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"36\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"37\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"38\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"39\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"40\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.hexadecimal.go\\\"},\\\"41\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.hexadecimal.go\\\"},\\\"42\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.hexadecimal.go\\\"},\\\"43\\\":{\\\"name\\\":\\\"constant.numeric.exponent.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"44\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"45\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"46\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\"},\\\"47\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"48\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"49\\\":{\\\"name\\\":\\\"keyword.other.unit.exponent.hexadecimal.go\\\"},\\\"50\\\":{\\\"name\\\":\\\"keyword.operator.plus.exponent.hexadecimal.go\\\"},\\\"51\\\":{\\\"name\\\":\\\"keyword.operator.minus.exponent.hexadecimal.go\\\"},\\\"52\\\":{\\\"name\\\":\\\"constant.numeric.exponent.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"53\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"}},\\\"match\\\":\\\"\\\\\\\\G(?:(?:(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)((?<=[0-9])\\\\\\\\.|\\\\\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)?(?:(?<!_)([Ee])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*))?(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$)|(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?<!_)([Ee])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|((?<=[0-9])\\\\\\\\.|\\\\\\\\.(?=[0-9]))([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?:(?<!_)([Ee])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*))?(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])_?(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)((?<=\\\\\\\\h)\\\\\\\\.|\\\\\\\\.(?=\\\\\\\\h))(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)?(?<!_)([Pp])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])_?(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?<!_)([Pp])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])((?<=\\\\\\\\h)\\\\\\\\.|\\\\\\\\.(?=\\\\\\\\h))(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(?<!_)([Pp])(\\\\\\\\+?)(-?)([0-9](?:[0-9]|(?<=\\\\\\\\h)_(?=\\\\\\\\h))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.other.unit.binary.go\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.numeric.binary.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.other.unit.octal.go\\\"},\\\"9\\\":{\\\"name\\\":\\\"constant.numeric.octal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"10\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"11\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.other.unit.hexadecimal.go\\\"},\\\"13\\\":{\\\"name\\\":\\\"constant.numeric.hexadecimal.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=\\\\\\\\h)_(?=\\\\\\\\h)\\\",\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"}]},\\\"14\\\":{\\\"name\\\":\\\"punctuation.separator.constant.numeric.go\\\"},\\\"15\\\":{\\\"name\\\":\\\"keyword.other.unit.imaginary.go\\\"}},\\\"match\\\":\\\"\\\\\\\\G(?:(?:(?:(?=[.0-9])(?!0[BOXbox])([0-9](?:[0-9]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$)|(0[Bb])_?([01](?:[01]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Oo]?)_?((?:[0-7]|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))+)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))|(0[Xx])_?(\\\\\\\\h(?:\\\\\\\\h|((?<=\\\\\\\\h)_(?=\\\\\\\\h)))*)(i(?!\\\\\\\\w))?(?:\\\\\\\\n|$))\\\"},{\\\"match\\\":\\\"(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])+\\\",\\\"name\\\":\\\"invalid.illegal.constant.numeric.go\\\"}]}]}},\\\"match\\\":\\\"(?<!\\\\\\\\w)\\\\\\\\.?\\\\\\\\d(?:[.0-9A-Z_a-z]|(?<=[EPep])[-+])*\\\"},\\\"operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)[\\\\\\\\&*]+(?!\\\\\\\\d)(?=[]\\\\\\\\[\\\\\\\\w]|<-)\\\",\\\"name\\\":\\\"keyword.operator.address.go\\\"},{\\\"match\\\":\\\"<-\\\",\\\"name\\\":\\\"keyword.operator.channel.go\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.go\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.go\\\"},{\\\"match\\\":\\\"(==|!=|<=|>=|<(?!<)|>(?!>))\\\",\\\"name\\\":\\\"keyword.operator.comparison.go\\\"},{\\\"match\\\":\\\"(&&|\\\\\\\\|\\\\\\\\||!)\\\",\\\"name\\\":\\\"keyword.operator.logical.go\\\"},{\\\"match\\\":\\\"((?:|[-%*+/:^|]|<<|>>|&\\\\\\\\^?)=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.go\\\"},{\\\"match\\\":\\\"([-%*+/])\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.go\\\"},{\\\"match\\\":\\\"(&(?!\\\\\\\\^)|[\\\\\\\\^|]|&\\\\\\\\^|<<|>>|~)\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.bitwise.go\\\"},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.ellipsis.go\\\"}]},\\\"other_struct_interface_expressions\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#after_control_variables\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b(?!(?:struct|interface)\\\\\\\\b)([.\\\\\\\\w]+)(?<brackets>\\\\\\\\[(?:[^]\\\\\\\\[]|\\\\\\\\g<brackets>)*])?(?=\\\\\\\\{)\\\"}]},\\\"other_variables\\\":{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"},\\\"package_name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(package)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.package.go\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.package.go\\\"}]}]},\\\"parameter-variable-types\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"begin\\\":\\\"([*.\\\\\\\\w]+)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#generic_param_types\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"}]}]},\\\"property_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b([.\\\\\\\\w]+:(?!=))\\\"},\\\"raw_string_literals\\\":{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"}},\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"name\\\":\\\"string.quoted.raw.go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_placeholder\\\"}]},\\\"runes\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"name\\\":\\\"string.quoted.rune.go\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G(\\\\\\\\\\\\\\\\([0-7]{3}|[\\\\\\\"'\\\\\\\\\\\\\\\\abfnrtv]|x\\\\\\\\h{2}|u\\\\\\\\h{4}|U\\\\\\\\h{8})|.)(?=')\\\",\\\"name\\\":\\\"constant.other.rune.go\\\"},{\\\"match\\\":\\\"[^']+\\\",\\\"name\\\":\\\"invalid.illegal.unknown-rune.go\\\"}]}]},\\\"single_type\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*([*.\\\\\\\\w]+)\\\\\\\\s+(?!(?:=\\\\\\\\s*)?[]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface)\\\\\\\\b)([\\\\\\\\s\\\\\\\\S]+)\\\"},{\\\"begin\\\":\\\"(?:^|\\\\\\\\s+)\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*([*.\\\\\\\\w]+)(?=\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"end\\\":\\\"(?<=])(\\\\\\\\s+(?:=\\\\\\\\s*)?(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|interface|func)\\\\\\\\b)[-\\\\\\\\]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types\\\"},{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}]},\\\"slice_index_variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\w\\\\\\\\[)((?:\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+:|:\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+)(?:\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+)?(?::\\\\\\\\b[-%\\\\\\\\&*+./<>|\\\\\\\\w]+)?)(?=])\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#package_name\\\"},{\\\"include\\\":\\\"#import\\\"},{\\\"include\\\":\\\"#syntax_errors\\\"},{\\\"include\\\":\\\"#group-functions\\\"},{\\\"include\\\":\\\"#group-types\\\"},{\\\"include\\\":\\\"#group-variables\\\"},{\\\"include\\\":\\\"#hover\\\"}]},\\\"storage_types\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\bbool\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.boolean.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bbyte\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.byte.go\\\"},{\\\"match\\\":\\\"\\\\\\\\berror\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.error.go\\\"},{\\\"match\\\":\\\"\\\\\\\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.numeric.go\\\"},{\\\"match\\\":\\\"\\\\\\\\brune\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.rune.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bstring\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.string.go\\\"},{\\\"match\\\":\\\"\\\\\\\\buintptr\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.uintptr.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bany\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.any.go\\\"},{\\\"match\\\":\\\"\\\\\\\\bcomparable\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.comparable.go\\\"}]},\\\"string_escaped_char\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|[\\\\\\\"'\\\\\\\\\\\\\\\\abfnrtv]|x\\\\\\\\h{2}|u\\\\\\\\h{4}|U\\\\\\\\h{8})\\\",\\\"name\\\":\\\"constant.character.escape.go\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[^\\\\\\\"'0-7Uabfnrtuvx]\\\",\\\"name\\\":\\\"invalid.illegal.unknown-escape.go\\\"}]},\\\"string_literals\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.go\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.go\\\"}},\\\"name\\\":\\\"string.quoted.double.go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_escaped_char\\\"},{\\\"include\\\":\\\"#string_placeholder\\\"}]}]},\\\"string_placeholder\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"%(\\\\\\\\[\\\\\\\\d+])?([- #+0]{0,2}((\\\\\\\\d+|\\\\\\\\*)?(\\\\\\\\.?(\\\\\\\\d+|\\\\\\\\*|(\\\\\\\\[\\\\\\\\d+])\\\\\\\\*?)?(\\\\\\\\[\\\\\\\\d+])?)?))?[%EFGTUXb-gopqstvwx]\\\",\\\"name\\\":\\\"constant.other.placeholder.go\\\"}]},\\\"struct_interface_declaration\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s*([.\\\\\\\\w]+)\\\"},\\\"struct_variable_types_fields_multi\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*[]*\\\\\\\\[]+{0,1})\\\\\\\\b(struct)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"keyword.struct.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types_fields\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*[]*\\\\\\\\[]+{0,1})\\\\\\\\b(interface)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"keyword.interface.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#interface_variables_types_field\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}\\\\\\\\s*[]*\\\\\\\\[]+{0,1})\\\\\\\\b(func)\\\\\\\\b\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"keyword.function.go\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function_param_types\\\"},{\\\"include\\\":\\\"$self\\\"}]},{\\\"include\\\":\\\"#parameter-variable-types\\\"}]},\\\"struct_variables_types\\\":{\\\"begin\\\":\\\"\\\\\\\\b(struct)\\\\\\\\b\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.struct.go\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variables_types_fields\\\"},{\\\"include\\\":\\\"$self\\\"}]},\\\"struct_variables_types_fields\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#struct_variable_types_fields_multi\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\{)\\\\\\\\s*((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*.\\\\\\\\[\\\\\\\\w]+)\\\\\\\\s*(?=})\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\{)\\\\\\\\s*((?:\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\w+\\\\\\\\s+)((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*.\\\\\\\\[\\\\\\\\w]+)\\\\\\\\s*(?=})\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\w+\\\\\\\\s+)?((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[^\\\\\\\"/`\\\\\\\\s]+;?)\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\{)((?:\\\\\\\\s*(?:(?:\\\\\\\\w+,\\\\\\\\s*)+{0,1}\\\\\\\\w+\\\\\\\\s+)?(?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[^\\\\\\\"/`\\\\\\\\s]+;?)+)\\\\\\\\s*(?=})\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[*.\\\\\\\\w]+\\\\\\\\s*)(?:(?=[\\\\\\\"/`])|$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.property.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#parameter-variable-types\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b(\\\\\\\\w+(?:\\\\\\\\s*,\\\\\\\\s*\\\\\\\\b\\\\\\\\w+)*)\\\\\\\\s*([^\\\\\\\"/`]+)\\\"}]},\\\"support_functions\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.support.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.function.support.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?:((?<=\\\\\\\\.)\\\\\\\\b\\\\\\\\w+)|\\\\\\\\b(\\\\\\\\w+))(?<brackets>\\\\\\\\[(?:[^]\\\\\\\\[]|\\\\\\\\g<brackets>)*])?(?=\\\\\\\\()\\\"},\\\"switch_types\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\bswitch\\\\\\\\b)\\\\\\\\s*(\\\\\\\\w+\\\\\\\\s*:=)?\\\\\\\\s*([-\\\\\\\\]%\\\\\\\\&(-+./<>\\\\\\\\[|\\\\\\\\w]+)(\\\\\\\\.\\\\\\\\(\\\\\\\\btype\\\\\\\\b\\\\\\\\)\\\\\\\\s*)(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#operators\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\btype\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.type.go\\\"}]},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.other.colon.go\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(case)\\\\\\\\b\\\\\\\\s+([!*,.<=>\\\\\\\\w\\\\\\\\s]+)(:)(\\\\\\\\s*/[*/]\\\\\\\\s*.*)?$\\\"},{\\\"begin\\\":\\\"\\\\\\\\bcase\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.go\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.other.colon.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]},{\\\"include\\\":\\\"$self\\\"}]},\\\"switch_variables\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b(case)\\\\\\\\b\\\\\\\\s+([\\\\\\\\s\\\\\\\\S]+:\\\\\\\\s*(?:/[*/].*)?)$\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\bswitch\\\\\\\\b)\\\\\\\\s*((?:[.\\\\\\\\w]+(?:\\\\\\\\s*[-!%\\\\\\\\&+,/:<=>|]+\\\\\\\\s*[.\\\\\\\\w]+)*\\\\\\\\s*[-!%\\\\\\\\&+,/:<=>|]+)?\\\\\\\\s*[-\\\\\\\\]%\\\\\\\\&(-+./<>\\\\\\\\[|\\\\\\\\w]+{0,1}\\\\\\\\s*(?:;\\\\\\\\s*[-\\\\\\\\]%\\\\\\\\&(-+./<>\\\\\\\\[|\\\\\\\\w]+\\\\\\\\s*)?)(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\bcase\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.go\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.other.colon.go\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#support_functions\\\"},{\\\"include\\\":\\\"#type-declarations\\\"},{\\\"include\\\":\\\"#variable_assignment\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.go\\\"}]},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"syntax_errors\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.slice.go\\\"}},\\\"match\\\":\\\"\\\\\\\\[](\\\\\\\\s+)\\\"},{\\\"match\\\":\\\"\\\\\\\\b0[0-7]*[89]\\\\\\\\d*\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.illegal.numeric.go\\\"}]},\\\"terminators\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.go\\\"},\\\"type-declarations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#language_constants\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#map_types\\\"},{\\\"include\\\":\\\"#brackets\\\"},{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"include\\\":\\\"#runes\\\"},{\\\"include\\\":\\\"#storage_types\\\"},{\\\"include\\\":\\\"#raw_string_literals\\\"},{\\\"include\\\":\\\"#string_literals\\\"},{\\\"include\\\":\\\"#numeric_literals\\\"},{\\\"include\\\":\\\"#terminators\\\"}]},\\\"type-declarations-without-brackets\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#language_constants\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#map_types\\\"},{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#keywords\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"include\\\":\\\"#runes\\\"},{\\\"include\\\":\\\"#storage_types\\\"},{\\\"include\\\":\\\"#raw_string_literals\\\"},{\\\"include\\\":\\\"#string_literals\\\"},{\\\"include\\\":\\\"#numeric_literals\\\"},{\\\"include\\\":\\\"#terminators\\\"}]},\\\"type_assertion_inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.type.go\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\{\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.curly.go\\\"},{\\\"match\\\":\\\"}\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.curly.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\.\\\\\\\\()(?:\\\\\\\\b(type)\\\\\\\\b|((?:\\\\\\\\s*[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+{0,1}[]*\\\\\\\\[]+{0,1}[.\\\\\\\\w]+(?:\\\\\\\\[(?:[]*.\\\\\\\\[{}\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[{}\\\\\\\\w]+)*)?])?))(?=\\\\\\\\))\\\"},\\\"var_assignment\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\bvar\\\\\\\\b)\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\bvar\\\\\\\\b)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"}},\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-declarations-without-brackets\\\"},{\\\"include\\\":\\\"#generic_types\\\"},{\\\"match\\\":\\\"\\\\\\\\(\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\)\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.round.go\\\"},{\\\"match\\\":\\\"\\\\\\\\[\\\",\\\"name\\\":\\\"punctuation.definition.begin.bracket.square.go\\\"},{\\\"match\\\":\\\"]\\\",\\\"name\\\":\\\"punctuation.definition.end.bracket.square.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"entity.name.type.go\\\"}]}},\\\"match\\\":\\\"^\\\\\\\\s*\\\\\\\\b([.\\\\\\\\w]+(?:,\\\\\\\\s*[.\\\\\\\\w]+)*)\\\\\\\\s*((?:(?:[]*\\\\\\\\[]+{0,1}(?:<-\\\\\\\\s*)?\\\\\\\\bchan\\\\\\\\b(?:\\\\\\\\s*<-)?\\\\\\\\s*)+(?:\\\\\\\\([^)]+\\\\\\\\))?)?(?![]*\\\\\\\\[]+{0,1}\\\\\\\\b(?:struct|func|map)\\\\\\\\b)(?:[]*.\\\\\\\\[\\\\\\\\w]+(?:,\\\\\\\\s*[]*.\\\\\\\\[\\\\\\\\w]+)*)?\\\\\\\\s*=?)?\\\"},{\\\"include\\\":\\\"$self\\\"}]}]},\\\"variable_assignment\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\w+(?:,\\\\\\\\s*\\\\\\\\w+)*(?=\\\\\\\\s*:=)\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#delimiters\\\"},{\\\"include\\\":\\\"#operators\\\"},{\\\"match\\\":\\\"\\\\\\\\d\\\\\\\\w*\\\",\\\"name\\\":\\\"invalid.illegal.identifier.go\\\"},{\\\"match\\\":\\\"\\\\\\\\w+\\\",\\\"name\\\":\\\"variable.other.assignment.go\\\"}]}},\\\"match\\\":\\\"\\\\\\\\b[*.\\\\\\\\w]+(?:,\\\\\\\\s*[*.\\\\\\\\w]+)*(?=\\\\\\\\s*=(?!=))\\\"}]}},\\\"scopeName\\\":\\\"source.go\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JavaScript\\\",\\\"name\\\":\\\"javascript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.objectliteral.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"name\\\":\\\"meta.array.literal.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.js\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.js\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.js\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"name\\\":\\\"comment.block.documentation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"name\\\":\\\"comment.block.js\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.js\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.js\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.js\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.js\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.block.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.readwrite.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.js\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js\\\"}},\\\"name\\\":\\\"meta.tag.js\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.js\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.js\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.js\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.js\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.js\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.js\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.js\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.js\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.js\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.js\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.js\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.js\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.js\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.js\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.js entity.name.function.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.js variable.object.property.js\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.js\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.js punctuation.accessor.optional.js\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.js keyword.operator.definiteassignment.js\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.js\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.js entity.name.function.js\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.js entity.name.function.js\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.js entity.name.function.js\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.js\\\"}},\\\"name\\\":\\\"meta.parameters.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.js\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.js\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js\\\"}},\\\"name\\\":\\\"string.regexp.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.js\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"name\\\":\\\"meta.import-equals.external.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.js\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.js\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.js\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.block.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.js\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.js\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.js\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.js\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.js\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.js\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.js\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.js\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"jsx\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes-in-expression\\\"},{\\\"include\\\":\\\"#jsx-tag-in-expression\\\"}]},\\\"jsx-children\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"},{\\\"include\\\":\\\"#jsx-tag\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js\\\"}},\\\"match\\\":\\\"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+)(;)\\\",\\\"name\\\":\\\"constant.character.entity.js\\\"}]},\\\"jsx-evaluated-code\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.js\\\"}},\\\"contentName\\\":\\\"meta.embedded.expression.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"jsx-string-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"}},\\\"name\\\":\\\"string.quoted.double.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-string-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"}},\\\"name\\\":\\\"string.quoted.single.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-tag\\\":{\\\"begin\\\":\\\"(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(/>)|(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.component.js\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"name\\\":\\\"meta.tag.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js\\\"}},\\\"end\\\":\\\"(?=/?>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes\\\"}]},{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js\\\",\\\"end\\\":\\\"(?=</)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]}]},\\\"jsx-tag-attribute-assignment\\\":{\\\"match\\\":\\\"=(?=\\\\\\\\s*(?:[\\\\\\\"'{]|/\\\\\\\\*|//|\\\\\\\\n))\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"jsx-tag-attribute-name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.namespace.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.attribute-name.js\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\\\\\s]|/?>|/\\\\\\\\*|//)\\\"},\\\"jsx-tag-attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s+\\\",\\\"end\\\":\\\"(?=/?>)\\\",\\\"name\\\":\\\"meta.tag.attributes.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-name\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-assignment\\\"},{\\\"include\\\":\\\"#jsx-string-double-quoted\\\"},{\\\"include\\\":\\\"#jsx-string-single-quoted\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes-illegal\\\"}]},\\\"jsx-tag-attributes-illegal\\\":{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.attribute.js\\\"},\\\"jsx-tag-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?!<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\\\\\s+extends\\\\\\\\s+[^=>])|,))(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag\\\"}]},\\\"jsx-tag-without-attributes\\\":{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js\\\",\\\"end\\\":\\\"(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js\\\"}},\\\"name\\\":\\\"meta.tag.without-attributes.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]},\\\"jsx-tag-without-attributes-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.js entity.name.function.js\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.js\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.js\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.js\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.js\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.js\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.objectliteral.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.js meta.object-literal.key.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.js meta.object-literal.key.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js meta.object-literal.key.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.js\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js punctuation.separator.key-value.js\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js\\\"}},\\\"contentName\\\":\\\"meta.arrow.js meta.return.type.arrow.js\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.js\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.js\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.js\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js\\\"}},\\\"name\\\":\\\"string.quoted.double.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js\\\"}},\\\"name\\\":\\\"string.quoted.single.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js\\\"}},\\\"name\\\":\\\"string.regexp.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js\\\"}},\\\"name\\\":\\\"string.regexp.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.js\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.js\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.js\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.js\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"switch-statement.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"name\\\":\\\"switch-expression.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.js punctuation.definition.section.case-statement.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.js punctuation.definition.block.js\\\"}},\\\"contentName\\\":\\\"meta.block.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.js punctuation.definition.block.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.js punctuation.definition.section.case-statement.js\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.begin.js\\\"}},\\\"contentName\\\":\\\"string.template.js\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js\\\"}},\\\"name\\\":\\\"meta.template.expression.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.begin.js\\\"}},\\\"contentName\\\":\\\"string.template.js\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js punctuation.definition.string.template.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js\\\"}},\\\"name\\\":\\\"meta.template.expression.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.js\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.js\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.js\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js\\\"}},\\\"name\\\":\\\"meta.type.parameters.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.js\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.js storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.js keyword.control.new.js\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.js\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.js\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.begin.js\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.begin.js\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js punctuation.definition.typeparameters.end.js\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.js\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js\\\"}},\\\"name\\\":\\\"meta.object.type.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.js\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js\\\"}},\\\"name\\\":\\\"meta.type.parameters.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.js\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js variable.language.this.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.js\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.js\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.js\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js\\\"}},\\\"name\\\":\\\"meta.type.tuple.js\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.js\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.js\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.js\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.js\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js entity.name.function.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js entity.name.function.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.constant.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js variable.other.readwrite.js\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.js\\\",\\\"aliases\\\":[\\\"js\\\",\\\"cjs\\\",\\\"mjs\\\"]}\"))\n\nexport default [\nlang\n]\n", "import javascript from './javascript.mjs'\nimport css from './css.mjs'\n\nconst lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"HTML\\\",\\\"injections\\\":{\\\"R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"<\\\",\\\"name\\\":\\\"invalid.illegal.bad-angle-bracket.html\\\"}]}},\\\"name\\\":\\\"html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#xml-processing\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#doctype\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"include\\\":\\\"#tags-valid\\\"},{\\\"include\\\":\\\"#tags-invalid\\\"},{\\\"include\\\":\\\"#entities\\\"}],\\\"repository\\\":{\\\"attribute\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"style(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.style.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.html\\\"}},\\\"end\\\":\\\"(?<=[^=\\\\\\\\s])(?!\\\\\\\\s*=)|(?=/?>)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=[^/<=>`\\\\\\\\s]|/(?!>))\\\",\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.embedded.line.css\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.css\\\"}},\\\"match\\\":\\\"([^\\\\\\\"'/<=>`\\\\\\\\s]|/(?!>))+\\\",\\\"name\\\":\\\"string.unquoted.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.css\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.css\\\"}},\\\"name\\\":\\\"string.quoted.double.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.css\\\",\\\"end\\\":\\\"(')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.css\\\"}},\\\"name\\\":\\\"string.quoted.single.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]}]},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"invalid.illegal.unexpected-equals-sign.html\\\"}]}]},{\\\"begin\\\":\\\"on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o((?:n|ff)line)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d((?:|meta)data)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.event-handler.$1.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.html\\\"}},\\\"end\\\":\\\"(?<=[^=\\\\\\\\s])(?!\\\\\\\\s*=)|(?=/?>)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=[^/<=>`\\\\\\\\s]|/(?!>))\\\",\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.embedded.line.js\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.js\\\"},\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}]}},\\\"match\\\":\\\"(([^\\\\\\\"'/<=>`\\\\\\\\s]|/(?!>))+)\\\",\\\"name\\\":\\\"string.unquoted.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.js\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.js\\\"}},\\\"name\\\":\\\"string.quoted.double.html\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}]}},\\\"match\\\":\\\"([^\\\\\\\\n\\\\\\\"/]|/(?![*/]))+\\\"},{\\\"begin\\\":\\\"//\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\")|\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.js\\\"}},\\\"end\\\":\\\"(?=\\\\\\\")|\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.js\\\"}},\\\"name\\\":\\\"comment.block.js\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"contentName\\\":\\\"source.js\\\",\\\"end\\\":\\\"(')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"source.js\\\"}},\\\"name\\\":\\\"string.quoted.single.html\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}]}},\\\"match\\\":\\\"([^\\\\\\\\n'/]|/(?![*/]))+\\\"},{\\\"begin\\\":\\\"//\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=')|\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.js\\\"}},\\\"end\\\":\\\"(?=')|\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.js\\\"}},\\\"name\\\":\\\"comment.block.js\\\"}]}]},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"invalid.illegal.unexpected-equals-sign.html\\\"}]}]},{\\\"begin\\\":\\\"(data-[-a-z]+)(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.data-x.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"(align|bgcolor|border)(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"invalid.deprecated.entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"([^\\\\\\\\x00- \\\\\\\"'/<=>\\\\\\\\x7F-\\\\\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\uD83F\uDFFE\uD83F\uDFFF\uD87F\uDFFE\uD87F\uDFFF\uD8BF\uDFFE\uD8BF\uDFFF\\\\\\\\x{4FFFE}\\\\\\\\x{4FFFF}\\\\\\\\x{5FFFE}\\\\\\\\x{5FFFF}\\\\\\\\x{6FFFE}\\\\\\\\x{6FFFF}\\\\\\\\x{7FFFE}\\\\\\\\x{7FFFF}\\\\\\\\x{8FFFE}\\\\\\\\x{8FFFF}\\\\\\\\x{9FFFE}\\\\\\\\x{9FFFF}\\\\\\\\x{AFFFE}\\\\\\\\x{AFFFF}\\\\\\\\x{BFFFE}\\\\\\\\x{BFFFF}\\\\\\\\x{CFFFE}\\\\\\\\x{CFFFF}\\\\\\\\x{DFFFE}\\\\\\\\x{DFFFF}\\\\\\\\x{EFFFE}\\\\\\\\x{EFFFF}\\\\\\\\x{FFFFE}\\\\\\\\x{FFFFF}\\\\\\\\x{10FFFE}\\\\\\\\x{10FFFF}]+)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.unrecognized.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"invalid.illegal.character-not-allowed-here.html\\\"}]},\\\"attribute-interior\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.html\\\"}},\\\"end\\\":\\\"(?<=[^=\\\\\\\\s])(?!\\\\\\\\s*=)|(?=/?>)\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"([^\\\\\\\"'/<=>`\\\\\\\\s]|/(?!>))+\\\",\\\"name\\\":\\\"string.unquoted.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"}},\\\"name\\\":\\\"string.quoted.double.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.html\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.html\\\"}},\\\"name\\\":\\\"string.quoted.single.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#entities\\\"}]},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"invalid.illegal.unexpected-equals-sign.html\\\"}]}]},\\\"cdata\\\":{\\\"begin\\\":\\\"<!\\\\\\\\[CDATA\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"}},\\\"contentName\\\":\\\"string.other.inline-data.html\\\",\\\"end\\\":\\\"]]>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.cdata.html\\\"},\\\"comment\\\":{\\\"begin\\\":\\\"<!--\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.html\\\"}},\\\"end\\\":\\\"-->\\\",\\\"name\\\":\\\"comment.block.html\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G-?>\\\",\\\"name\\\":\\\"invalid.illegal.characters-not-allowed-here.html\\\"},{\\\"match\\\":\\\"<!-(?:-(?!>)|(?=-->))\\\",\\\"name\\\":\\\"invalid.illegal.characters-not-allowed-here.html\\\"},{\\\"match\\\":\\\"--!>\\\",\\\"name\\\":\\\"invalid.illegal.characters-not-allowed-here.html\\\"}]},\\\"core-minus-invalid\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#xml-processing\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#doctype\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"include\\\":\\\"#tags-valid\\\"},{\\\"include\\\":\\\"#entities\\\"}]},\\\"doctype\\\":{\\\"begin\\\":\\\"<!(?=(?i:DOCTYPE\\\\\\\\s))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.doctype.html\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G(?i:DOCTYPE)\\\",\\\"name\\\":\\\"entity.name.tag.html\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"name\\\":\\\"string.quoted.double.html\\\"},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}]},\\\"entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"},\\\"912\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"}},\\\"match\\\":\\\"(&)(?=[A-Za-z])((a(s(ymp(eq)?|cr|t)|n(d(slope|[dv]|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a([a-h]))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|[Ee]|acir)?|elig|f(r)?|w((?:con|)int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))|(B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h([DUdu])?|times|H([DUdu])?|d([LRlr])|u([LRlr])|plus|D([LRlr])|v([HLRhlr])?|U([LRlr])|V([HLRhlr])?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1([24])|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))|(c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr([lr])|p(s|c([au]p)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w((?:con|)int)|lubs(uit)?|a(cute|p(s|c([au]p)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly((?:Double|)Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))|(d(s(c([ry])|trok|ol)|har([lr])|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up((?:Down|)Arrow)|VerticalBar|L(ong(RightArrow|Left((?:Right|)Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))|(e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t([ah])|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(D??ot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1([34]))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty((?:|Very)SmallSquare)|acr)))|(f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(l??ig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1([2-68])|78|2([35])|3([458])|45|5([68])))))|F(scr|cy|illed((?:|Very)SmallSquare)|o(uriertrf|pf|rAll)|fr))|(G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im([el])?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(q?less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l([Eaj])?|a(cute|p|mma(d)?)|rave|g(g)?|breve))|(h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok((?:lef|righ)tarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks([ew]arow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))|(i(s(cr|in(s(v)?|dot|[Ev])?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(i??nt)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f([fr])|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))|(j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))|(k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))|(l(s(h|cr|trok|im([eg])?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(d??il)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i([ef])?|Par))?|Har|o(ng(left((?:|right)arrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r((?:d|us)har))|ur((?:ds|u)har)|jcy|par(lt)?|e(s(s(sim|dot|eq(q?gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left((?:|right)arrow)|rightarrow|Left((?:Right|)Arrow))|pf|wer((?:Righ|Lef)tArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))|(M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u((?:lti|)map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))|(n(s(hort(parallel|mid)|c(cue|[er])?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|[Ee])?|b(set(eq(q)?)?|[Ee])?)|par|qsu([bp]e)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v([abc]))?|in(dot|v([abc])|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g([et]))|fr|w(near|ar(hk|r(ow)?)|Arr)|V([Dd]ash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft((?:|right)arrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr([cw])?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft((?:|right)arrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes((?:Slant|)Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi((?:n|ck)Space)|VeryThinSpace))|Jcy|fr|acute))|(o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|[fm])?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly((?:Double|)Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))|(p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d([ou])|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))|(q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))|(R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(d??il)|aron)|Barr|t(hree|imes|ri([ef]|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng([de]|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl([du])|e)|ac([ek]))|brk)|A(tail|arr|rr)))|(s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma([fv])?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot([be])?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n([Ee])|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u([bp])|et(neq(q)?|eq(q)?)?)|n([Ee])|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar([ef]))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort((?:Right|Down|Up|Left)Arrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))|(t(s(hcy|c([ry])|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead((?:lef|righ)tarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i((?:n|ck)Space)|e(ta|refore))|c(y|edil|aron)|S(H??cy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a([bu])|ripleDot))|(u(scr|h(ar([lr])|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per((?:Righ|Lef)tArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))|(v(s(cr|u(pn([Ee])|bn([Ee])))|nsu([bp])|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))|(w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))|(X(scr|i|opf|fr)|x(s(cr|qcup)|h([Aa]rr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l([Aa]rr)|r([Aa]rr)|map))|(y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))|(z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(n?j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute)))(;)\\\",\\\"name\\\":\\\"constant.character.entity.named.$2.html\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"}},\\\"match\\\":\\\"(&)#[0-9]+(;)\\\",\\\"name\\\":\\\"constant.character.entity.numeric.decimal.html\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.html\\\"}},\\\"match\\\":\\\"(&)#[Xx]\\\\\\\\h+(;)\\\",\\\"name\\\":\\\"constant.character.entity.numeric.hexadecimal.html\\\"},{\\\"match\\\":\\\"&(?=[0-9A-Za-z]+;)\\\",\\\"name\\\":\\\"invalid.illegal.ambiguous-ampersand.html\\\"}]},\\\"math\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(<)(math)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]}],\\\"repository\\\":{\\\"attribute\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u([bp]scriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"([^\\\\\\\\x00- \\\\\\\"'/<=>\\\\\\\\x7F-\\\\\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\uD83F\uDFFE\uD83F\uDFFF\uD87F\uDFFE\uD87F\uDFFF\uD8BF\uDFFE\uD8BF\uDFFF\\\\\\\\x{4FFFE}\\\\\\\\x{4FFFF}\\\\\\\\x{5FFFE}\\\\\\\\x{5FFFF}\\\\\\\\x{6FFFE}\\\\\\\\x{6FFFF}\\\\\\\\x{7FFFE}\\\\\\\\x{7FFFF}\\\\\\\\x{8FFFE}\\\\\\\\x{8FFFF}\\\\\\\\x{9FFFE}\\\\\\\\x{9FFFF}\\\\\\\\x{AFFFE}\\\\\\\\x{AFFFF}\\\\\\\\x{BFFFE}\\\\\\\\x{BFFFF}\\\\\\\\x{CFFFE}\\\\\\\\x{CFFFF}\\\\\\\\x{DFFFE}\\\\\\\\x{DFFFF}\\\\\\\\x{EFFFE}\\\\\\\\x{EFFFF}\\\\\\\\x{FFFFE}\\\\\\\\x{FFFFF}\\\\\\\\x{10FFFE}\\\\\\\\x{10FFFF}]+)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.unrecognized.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"invalid.illegal.character-not-allowed-here.html\\\"}]},\\\"tags\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.math.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.structure.math.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.math.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.math.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.math.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.math.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.inline.math.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(m(?:[inos]|space|text|aligngroup|alignmark))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.math.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.math.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.inline.math.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.math.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(mglyph)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.object.math.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(mglyph)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.math.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.math.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.object.math.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(([:\\\\\\\\w]+))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.other.invalid.html\\\"},{\\\"begin\\\":\\\"(?i)(<)((\\\\\\\\w[^>\\\\\\\\s]*))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)((\\\\\\\\2))\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.other.invalid.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"include\\\":\\\"#tags-invalid\\\"}]}}},\\\"svg\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(<)(svg)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]}],\\\"repository\\\":{\\\"attribute\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em([hv])|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y([12]|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS((?:cript|tyle)Type)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget([XY])?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At([XYZ]))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-([xy])|adv-y)))|alues)|k([123]|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f([XY]|errerPolicy)|l)|adius|x)?|g([12]|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x([12]|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk((?:Content|)Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![-:\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"begin\\\":\\\"([^\\\\\\\\x00- \\\\\\\"'/<=>\\\\\\\\x7F-\\\\\\\\x{9F}\uFDD0-\uFDEF\uFFFE\uFFFF\uD83F\uDFFE\uD83F\uDFFF\uD87F\uDFFE\uD87F\uDFFF\uD8BF\uDFFE\uD8BF\uDFFF\\\\\\\\x{4FFFE}\\\\\\\\x{4FFFF}\\\\\\\\x{5FFFE}\\\\\\\\x{5FFFF}\\\\\\\\x{6FFFE}\\\\\\\\x{6FFFF}\\\\\\\\x{7FFFE}\\\\\\\\x{7FFFF}\\\\\\\\x{8FFFE}\\\\\\\\x{8FFFF}\\\\\\\\x{9FFFE}\\\\\\\\x{9FFFF}\\\\\\\\x{AFFFE}\\\\\\\\x{AFFFF}\\\\\\\\x{BFFFE}\\\\\\\\x{BFFFF}\\\\\\\\x{CFFFE}\\\\\\\\x{CFFFF}\\\\\\\\x{DFFFE}\\\\\\\\x{DFFFF}\\\\\\\\x{EFFFE}\\\\\\\\x{EFFFF}\\\\\\\\x{FFFFE}\\\\\\\\x{FFFFF}\\\\\\\\x{10FFFE}\\\\\\\\x{10FFFF}]+)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.other.attribute-name.html\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s*+[^=\\\\\\\\s])\\\",\\\"name\\\":\\\"meta.attribute.unrecognized.$1.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute-interior\\\"}]},{\\\"match\\\":\\\"[^>\\\\\\\\s]+\\\",\\\"name\\\":\\\"invalid.illegal.character-not-allowed-here.html\\\"}]},\\\"tags\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#cdata\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.metadata.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.metadata.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.structure.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.structure.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.structure.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.inline.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.inline.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.inline.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.object.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)(\\\\\\\\2)\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.object.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.object.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.svg.$2.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.other.svg.$2.html\\\"},{\\\"begin\\\":\\\"(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.svg.$2.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)((\\\\\\\\2))\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.svg.$2.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.other.svg.$2.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.void.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"match\\\":\\\"(?i)(<)(([:\\\\\\\\w]+))(?=\\\\\\\\s|/?>)(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(/>)\\\",\\\"name\\\":\\\"meta.element.other.invalid.html\\\"},{\\\"begin\\\":\\\"(?i)(<)((\\\\\\\\w[^>\\\\\\\\s]*))(?=\\\\\\\\s|/?>)(?:(([^\\\\\\\"'>]|\\\\\\\"[^\\\\\\\"]*\\\\\\\"|'[^']*')*)(>))?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(?i)(</)((\\\\\\\\2))\\\\\\\\s*(>)|(/>)|(?=</\\\\\\\\w+)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.other.invalid.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.element.other.invalid.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!>)\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/>)|>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.invalid.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#tags\\\"}]},{\\\"include\\\":\\\"#tags-invalid\\\"}]}}},\\\"tags-invalid\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(</?)((\\\\\\\\w[^>\\\\\\\\s]*))(?<!/)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.unrecognized-tag.html\\\"}},\\\"end\\\":\\\"((?: ?/)?>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.$2.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]}]},\\\"tags-valid\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=<(?i:style)\\\\\\\\b(?!-))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.leading.html\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)([\\\\\\\\t ]*$\\\\\\\\n?)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.trailing.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"(?i)(<)(style)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.style.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"(?i)((<)/)(style)\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.style.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"source.css-ignored-vscode\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.embedded.block.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"name\\\":\\\"meta.tag.metadata.style.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?!\\\\\\\\G)\\\",\\\"end\\\":\\\"(?=</(?i:style))\\\",\\\"name\\\":\\\"source.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css\\\"}]}]}]},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=<(?i:script)\\\\\\\\b(?!-))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.leading.html\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)([\\\\\\\\t ]*$\\\\\\\\n?)?\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.embedded.trailing.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)((?i:script))\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"(/)((?i:script))(>)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.embedded.block.html\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?=/)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"end\\\":\\\"((<))(?=/(?i:script))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"source.js-ignored-vscode\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?=</(?i:script))\\\",\\\"name\\\":\\\"source.js\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"//\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"(?=</script)|\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"}]},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js\\\"}},\\\"end\\\":\\\"\\\\\\\\*/|(?=</script)\\\",\\\"name\\\":\\\"comment.block.js\\\"},{\\\"include\\\":\\\"source.js\\\"}]}]},{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(?i:(?=>|type(?=[=\\\\\\\\s])(?!\\\\\\\\s*=\\\\\\\\s*(''|\\\\\\\"\\\\\\\"|([\\\\\\\"']?)(text/(javascript(1\\\\\\\\.[0-5])?|x-javascript|jscript|livescript|(x-)?ecmascript|babel)|application/((?:(x-)?jav|(x-)?ecm)ascript)|module)[\\\\\\\"'>\\\\\\\\s]))))\\\",\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i:(?=type\\\\\\\\s*=\\\\\\\\s*([\\\\\\\"']?)text/(x-handlebars|(x-(handlebars-)?|ng-)?template|html)[\\\\\\\"'>\\\\\\\\s]))\\\",\\\"end\\\":\\\"((<))(?=/(?i:script))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"text.html.basic\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?!\\\\\\\\G)\\\",\\\"end\\\":\\\"(?=</(?i:script))\\\",\\\"name\\\":\\\"text.html.basic\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.basic\\\"}]}]},{\\\"begin\\\":\\\"(?=(?i:type))\\\",\\\"end\\\":\\\"(<)(?=/(?i:script))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.tag.metadata.script.end.html\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.script.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?!\\\\\\\\G)\\\",\\\"end\\\":\\\"(?=</(?i:script))\\\",\\\"name\\\":\\\"source.unknown\\\"}]}]}]}]},{\\\"begin\\\":\\\"(?i)(<)(base|link|meta)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(noscript|title)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(noscript|title)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(col|hr|input)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(area|br|wbr)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(embed|img|param|source|track)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((basefont|isindex))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.metadata.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((center|frameset|noembed|noframes))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((center|frameset|noembed|noframes))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.structure.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.inline.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((frame))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.void.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((applet))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((applet))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.deprecated.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.object.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.no-longer-supported.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.$2.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"invalid.illegal.no-longer-supported.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.other.$2.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"include\\\":\\\"#math\\\"},{\\\"include\\\":\\\"#svg\\\"},{\\\"begin\\\":\\\"(<)([A-Za-z][.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"/?>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.custom.start.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]},{\\\"begin\\\":\\\"(</)([A-Za-z][.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*-[-.0-9A-Z_a-z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C\u200D\u203F\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\uD800\uDC00-\\\\\\\\x{EFFFF}]*)(?=\\\\\\\\s|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"name\\\":\\\"meta.tag.custom.end.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]}]},\\\"xml-processing\\\":{\\\"begin\\\":\\\"(<\\\\\\\\?)(xml)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"}},\\\"end\\\":\\\"(\\\\\\\\?>)\\\",\\\"name\\\":\\\"meta.tag.metadata.processing.xml.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#attribute\\\"}]}},\\\"scopeName\\\":\\\"text.html.basic\\\",\\\"embeddedLangs\\\":[\\\"javascript\\\",\\\"css\\\"]}\"))\n\nexport default [\n...javascript,\n...css,\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JSON\\\",\\\"name\\\":\\\"json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"}],\\\"repository\\\":{\\\"array\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.begin.json\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.end.json\\\"}},\\\"name\\\":\\\"meta.structure.array.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.array.json\\\"},{\\\"match\\\":\\\"[^]\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-array-separator.json\\\"}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.documentation.json\\\"},{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.json\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.json\\\"}},\\\"match\\\":\\\"(//).*$\\\\\\\\n?\\\",\\\"name\\\":\\\"comment.line.double-slash.js\\\"}]},\\\"constant\\\":{\\\"match\\\":\\\"\\\\\\\\b(?:true|false|null)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.json\\\"},\\\"number\\\":{\\\"match\\\":\\\"-?(?:0|[1-9]\\\\\\\\d*)(?:(?:\\\\\\\\.\\\\\\\\d+)?(?:[Ee][-+]?\\\\\\\\d+)?)?\\\",\\\"name\\\":\\\"constant.numeric.json\\\"},\\\"object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dictionary.begin.json\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dictionary.end.json\\\"}},\\\"name\\\":\\\"meta.structure.dictionary.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#objectkey\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.dictionary.key-value.json\\\"}},\\\"end\\\":\\\"(,)|(?=})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.dictionary.pair.json\\\"}},\\\"name\\\":\\\"meta.structure.dictionary.value.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#value\\\"},{\\\"match\\\":\\\"[^,\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-dictionary-separator.json\\\"}]},{\\\"match\\\":\\\"[^}\\\\\\\\s]\\\",\\\"name\\\":\\\"invalid.illegal.expected-dictionary-separator.json\\\"}]},\\\"objectkey\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.support.type.property-name.begin.json\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.support.type.property-name.end.json\\\"}},\\\"name\\\":\\\"string.json support.type.property-name.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#stringcontent\\\"}]},\\\"string\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.json\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.json\\\"}},\\\"name\\\":\\\"string.quoted.double.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#stringcontent\\\"}]},\\\"stringcontent\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[\\\\\\\"/\\\\\\\\\\\\\\\\bfnrt]|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.escape.json\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"invalid.illegal.unrecognized-string-escape.json\\\"}]},\\\"value\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#constant\\\"},{\\\"include\\\":\\\"#number\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array\\\"},{\\\"include\\\":\\\"#object\\\"},{\\\"include\\\":\\\"#comments\\\"}]}},\\\"scopeName\\\":\\\"source.json\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"JSX\\\",\\\"name\\\":\\\"jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"name\\\":\\\"meta.array.literal.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.js.jsx\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js.jsx\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.js.jsx\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.js.jsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"name\\\":\\\"comment.block.documentation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"name\\\":\\\"comment.block.js.jsx\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js.jsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js.jsx\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.js.jsx\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.js.jsx\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.block.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.js.jsx\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.js.jsx\\\"}},\\\"name\\\":\\\"meta.tag.js.jsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.js.jsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.js.jsx\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js.jsx\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js.jsx\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.js.jsx\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.js.jsx\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.js.jsx\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.js.jsx\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.js.jsx\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.js.jsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.js.jsx\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.js.jsx\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.js.jsx entity.name.function.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.js.jsx variable.object.property.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.js.jsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.js.jsx punctuation.accessor.optional.js.jsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.js.jsx\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.js.jsx entity.name.function.js.jsx\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.js.jsx entity.name.function.js.jsx\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.js.jsx entity.name.function.js.jsx\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.parameters.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js.jsx\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.js.jsx\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js.jsx\\\"}},\\\"name\\\":\\\"string.regexp.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.js.jsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"name\\\":\\\"meta.import-equals.external.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.js.jsx\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.block.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.js.jsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.js.jsx\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.js.jsx\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.js.jsx\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.js.jsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"jsx\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes-in-expression\\\"},{\\\"include\\\":\\\"#jsx-tag-in-expression\\\"}]},\\\"jsx-children\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"},{\\\"include\\\":\\\"#jsx-tag\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.js.jsx\\\"}},\\\"match\\\":\\\"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+)(;)\\\",\\\"name\\\":\\\"constant.character.entity.js.jsx\\\"}]},\\\"jsx-evaluated-code\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.expression.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"jsx-string-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.double.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-string-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.single.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-tag\\\":{\\\"begin\\\":\\\"(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(/>)|(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.tag.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"}},\\\"end\\\":\\\"(?=/?>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes\\\"}]},{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js.jsx\\\",\\\"end\\\":\\\"(?=</)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]}]},\\\"jsx-tag-attribute-assignment\\\":{\\\"match\\\":\\\"=(?=\\\\\\\\s*(?:[\\\\\\\"'{]|/\\\\\\\\*|//|\\\\\\\\n))\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"jsx-tag-attribute-name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.namespace.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.attribute-name.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\\\\\s]|/?>|/\\\\\\\\*|//)\\\"},\\\"jsx-tag-attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s+\\\",\\\"end\\\":\\\"(?=/?>)\\\",\\\"name\\\":\\\"meta.tag.attributes.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-name\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-assignment\\\"},{\\\"include\\\":\\\"#jsx-string-double-quoted\\\"},{\\\"include\\\":\\\"#jsx-string-single-quoted\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes-illegal\\\"}]},\\\"jsx-tag-attributes-illegal\\\":{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.attribute.js.jsx\\\"},\\\"jsx-tag-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?!<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\\\\\s+extends\\\\\\\\s+[^=>])|,))(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag\\\"}]},\\\"jsx-tag-without-attributes\\\":{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.js.jsx\\\",\\\"end\\\":\\\"(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.tag.without-attributes.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]},\\\"jsx-tag-without-attributes-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.js.jsx entity.name.function.js.jsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.js.jsx\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.js.jsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js.jsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.js.jsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.js.jsx\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.js.jsx\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.js.jsx\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.js.jsx\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx meta.object-literal.key.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx meta.object-literal.key.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx meta.object-literal.key.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.js.jsx\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.js.jsx\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.arrow.js.jsx meta.return.type.arrow.js.jsx\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.js.jsx\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.js.jsx\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.double.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.js.jsx\\\"}},\\\"name\\\":\\\"string.quoted.single.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js.jsx\\\"}},\\\"name\\\":\\\"string.regexp.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.js.jsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.js.jsx\\\"}},\\\"name\\\":\\\"string.regexp.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.js.jsx\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.js.jsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.js.jsx\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.js.jsx\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.js.jsx\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js.jsx\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.js.jsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"switch-statement.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"name\\\":\\\"switch-expression.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.js.jsx\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.js.jsx punctuation.definition.block.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.block.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.js.jsx punctuation.definition.block.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"string.template.js.jsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.template.expression.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"string.template.js.jsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.js.jsx punctuation.definition.string.template.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.js.jsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.template.expression.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.js.jsx\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.js.jsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.js.jsx\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.js.jsx storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.js.jsx keyword.control.new.js.jsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.js.jsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js.jsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.js.jsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.js.jsx\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.js.jsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.js.jsx\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.js.jsx\\\"}},\\\"name\\\":\\\"meta.object.type.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.js.jsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js.jsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.js.jsx\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.js.jsx\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.js.jsx\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.js.jsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.js.jsx\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx variable.language.this.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.js.jsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.js.jsx\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.js.jsx\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.js.jsx\\\"}},\\\"name\\\":\\\"meta.type.tuple.js.jsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.js.jsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.js.jsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.js.jsx\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.js.jsx\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.js.jsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.js.jsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.js.jsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx entity.name.function.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.constant.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.js.jsx variable.other.readwrite.js.jsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.js.jsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.js.jsx\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.js.jsx\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Markdown\\\",\\\"name\\\":\\\"markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#frontMatter\\\"},{\\\"include\\\":\\\"#block\\\"}],\\\"repository\\\":{\\\"ampersand\\\":{\\\"match\\\":\\\"&(?!([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+);)\\\",\\\"name\\\":\\\"meta.other.valid-ampersand.markdown\\\"},\\\"block\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#separator\\\"},{\\\"include\\\":\\\"#heading\\\"},{\\\"include\\\":\\\"#blockquote\\\"},{\\\"include\\\":\\\"#lists\\\"},{\\\"include\\\":\\\"#fenced_code_block\\\"},{\\\"include\\\":\\\"#raw_block\\\"},{\\\"include\\\":\\\"#link-def\\\"},{\\\"include\\\":\\\"#html\\\"},{\\\"include\\\":\\\"#table\\\"},{\\\"include\\\":\\\"#paragraph\\\"}]},\\\"blockquote\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G) {0,3}(>) ?\\\",\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.quote.begin.markdown\\\"}},\\\"name\\\":\\\"markup.quote.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)\\\\\\\\s*(>) ?\\\"},\\\"bold\\\":{\\\"begin\\\":\\\"(?<open>(\\\\\\\\*\\\\\\\\*(?=\\\\\\\\w)|(?<!\\\\\\\\w)\\\\\\\\*\\\\\\\\*|(?<!\\\\\\\\w)\\\\\\\\b__))(?=\\\\\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\\\\\k<raw>(?!`))`)*+\\\\\\\\k<raw>|\\\\\\\\\\\\\\\\[-\\\\\\\\]!#(-+.>\\\\\\\\[\\\\\\\\\\\\\\\\_`{}]?+|\\\\\\\\[((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+](( ?\\\\\\\\[[^]]*+])|(\\\\\\\\([\\\\\\\\t ]*+<?(.*?)>?[\\\\\\\\t ]*+((?<title>[\\\\\\\"'])(.*?)\\\\\\\\k<title>)?\\\\\\\\))))|(?!(?<=\\\\\\\\S)\\\\\\\\k<open>).)++(?<=\\\\\\\\S)(?=__\\\\\\\\b|\\\\\\\\*\\\\\\\\*)\\\\\\\\k<open>)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bold.markdown\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(\\\\\\\\1)\\\",\\\"name\\\":\\\"markup.bold.markdown\\\",\\\"patterns\\\":[{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"(?=<[^>]*?>)\\\",\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"},{\\\"include\\\":\\\"#strikethrough\\\"}]},\\\"bracket\\\":{\\\"match\\\":\\\"<(?![!$/?A-Za-z])\\\",\\\"name\\\":\\\"meta.other.valid-bracket.markdown\\\"},\\\"escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[-\\\\\\\\]!#(-+.>\\\\\\\\[\\\\\\\\\\\\\\\\_`{}]\\\",\\\"name\\\":\\\"constant.character.escape.markdown\\\"},\\\"fenced_code_block\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#fenced_code_block_css\\\"},{\\\"include\\\":\\\"#fenced_code_block_basic\\\"},{\\\"include\\\":\\\"#fenced_code_block_ini\\\"},{\\\"include\\\":\\\"#fenced_code_block_java\\\"},{\\\"include\\\":\\\"#fenced_code_block_lua\\\"},{\\\"include\\\":\\\"#fenced_code_block_makefile\\\"},{\\\"include\\\":\\\"#fenced_code_block_perl\\\"},{\\\"include\\\":\\\"#fenced_code_block_r\\\"},{\\\"include\\\":\\\"#fenced_code_block_ruby\\\"},{\\\"include\\\":\\\"#fenced_code_block_php\\\"},{\\\"include\\\":\\\"#fenced_code_block_sql\\\"},{\\\"include\\\":\\\"#fenced_code_block_vs_net\\\"},{\\\"include\\\":\\\"#fenced_code_block_xml\\\"},{\\\"include\\\":\\\"#fenced_code_block_xsl\\\"},{\\\"include\\\":\\\"#fenced_code_block_yaml\\\"},{\\\"include\\\":\\\"#fenced_code_block_dosbatch\\\"},{\\\"include\\\":\\\"#fenced_code_block_clojure\\\"},{\\\"include\\\":\\\"#fenced_code_block_coffee\\\"},{\\\"include\\\":\\\"#fenced_code_block_c\\\"},{\\\"include\\\":\\\"#fenced_code_block_cpp\\\"},{\\\"include\\\":\\\"#fenced_code_block_diff\\\"},{\\\"include\\\":\\\"#fenced_code_block_dockerfile\\\"},{\\\"include\\\":\\\"#fenced_code_block_git_commit\\\"},{\\\"include\\\":\\\"#fenced_code_block_git_rebase\\\"},{\\\"include\\\":\\\"#fenced_code_block_go\\\"},{\\\"include\\\":\\\"#fenced_code_block_groovy\\\"},{\\\"include\\\":\\\"#fenced_code_block_pug\\\"},{\\\"include\\\":\\\"#fenced_code_block_ignore\\\"},{\\\"include\\\":\\\"#fenced_code_block_js\\\"},{\\\"include\\\":\\\"#fenced_code_block_js_regexp\\\"},{\\\"include\\\":\\\"#fenced_code_block_json\\\"},{\\\"include\\\":\\\"#fenced_code_block_jsonc\\\"},{\\\"include\\\":\\\"#fenced_code_block_jsonl\\\"},{\\\"include\\\":\\\"#fenced_code_block_less\\\"},{\\\"include\\\":\\\"#fenced_code_block_objc\\\"},{\\\"include\\\":\\\"#fenced_code_block_swift\\\"},{\\\"include\\\":\\\"#fenced_code_block_scss\\\"},{\\\"include\\\":\\\"#fenced_code_block_perl6\\\"},{\\\"include\\\":\\\"#fenced_code_block_powershell\\\"},{\\\"include\\\":\\\"#fenced_code_block_python\\\"},{\\\"include\\\":\\\"#fenced_code_block_julia\\\"},{\\\"include\\\":\\\"#fenced_code_block_regexp_python\\\"},{\\\"include\\\":\\\"#fenced_code_block_rust\\\"},{\\\"include\\\":\\\"#fenced_code_block_scala\\\"},{\\\"include\\\":\\\"#fenced_code_block_shell\\\"},{\\\"include\\\":\\\"#fenced_code_block_ts\\\"},{\\\"include\\\":\\\"#fenced_code_block_tsx\\\"},{\\\"include\\\":\\\"#fenced_code_block_csharp\\\"},{\\\"include\\\":\\\"#fenced_code_block_fsharp\\\"},{\\\"include\\\":\\\"#fenced_code_block_dart\\\"},{\\\"include\\\":\\\"#fenced_code_block_handlebars\\\"},{\\\"include\\\":\\\"#fenced_code_block_markdown\\\"},{\\\"include\\\":\\\"#fenced_code_block_log\\\"},{\\\"include\\\":\\\"#fenced_code_block_erlang\\\"},{\\\"include\\\":\\\"#fenced_code_block_elixir\\\"},{\\\"include\\\":\\\"#fenced_code_block_latex\\\"},{\\\"include\\\":\\\"#fenced_code_block_bibtex\\\"},{\\\"include\\\":\\\"#fenced_code_block_twig\\\"},{\\\"include\\\":\\\"#fenced_code_block_yang\\\"},{\\\"include\\\":\\\"#fenced_code_block_abap\\\"},{\\\"include\\\":\\\"#fenced_code_block_restructuredtext\\\"},{\\\"include\\\":\\\"#fenced_code_block_unknown\\\"}]},\\\"fenced_code_block_abap\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(abap)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.abap\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.abap\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_basic\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(html?|shtml|xhtml|inc|tmpl|tpl)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.html\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.basic\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_bibtex\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(bibtex)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.bibtex\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.bibtex\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_c\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:([ch])((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.c\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.c\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_clojure\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(cl(?:js??|ojure))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.clojure\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.clojure\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_coffee\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(coffee|Cakefile|coffee.erb)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.coffee\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.coffee\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_cpp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(c(?:pp|\\\\\\\\+\\\\\\\\+|xx))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.cpp source.cpp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.cpp\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_csharp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(c(?:s|sharp|#))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.csharp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.cs\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_css\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(css(?:|.erb))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.css\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_dart\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(dart)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.dart\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.dart\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_diff\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(patch|diff|rej)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.diff\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.diff\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_dockerfile\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:([Dd]ockerfile)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.dockerfile\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.dockerfile\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_dosbatch\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(bat(?:|ch))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.dosbatch\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.batchfile\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_elixir\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(elixir)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.elixir\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.elixir\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_erlang\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(erlang)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.erlang\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.erlang\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_fsharp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(f(?:s|sharp|#))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.fsharp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.fsharp\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_git_commit\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:COMMIT_EDIT|MERGE_)MSG)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.git_commit\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.git-commit\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_git_rebase\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(git-rebase-todo)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.git_rebase\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.git-rebase\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_go\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(go(?:|lang))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.go\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.go\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_groovy\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(g(?:roovy|vy))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.groovy\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.groovy\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_handlebars\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(h(?:andlebars|bs))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.handlebars\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.handlebars\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ignore\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:git|)ignore)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.ignore\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ignore\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ini\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(ini|conf)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.ini\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ini\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_java\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(java|bsh)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.java\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.java\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_js\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jsx??|javascript|es6|mjs|cjs|dataviewjs|\\\\\\\\{\\\\\\\\.js.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.javascript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.js\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_js_regexp\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(regexp)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.js_regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.js.regexp\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_json\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(json5??|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.json\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.json\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_jsonc\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jsonc)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.jsonc\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.json.comments\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_jsonl\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jsonl(?:|ines))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.jsonl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.json.lines\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_julia\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(julia|\\\\\\\\{\\\\\\\\.julia.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.julia\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.julia\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_latex\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:la|)tex)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.latex\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.tex.latex\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_less\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(less)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.less\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css.less\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_log\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(log)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.log\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.log\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_lua\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(lua)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.lua\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.lua\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_makefile\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:((?:[Mm]|GNUm|OCamlM)akefile)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.makefile\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.makefile\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_markdown\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(m(?:arkdown|d))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.markdown\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_objc\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|[hm])((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.objc\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.objc\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_perl\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.perl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.perl\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_perl6\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.perl6\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.perl.6\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_php\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(php3??|php4|php5|phpt|phtml|aw|ctp)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.php\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.basic\\\"},{\\\"include\\\":\\\"source.php\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_powershell\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(p(?:owershell|s1|sm1|sd1|wsh))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.powershell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.powershell\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_pug\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(jade|pug)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.pug\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.pug\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_python\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(python|py3??|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gypi??|\\\\\\\\{\\\\\\\\.python.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.python\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_r\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:([RSrs]|Rprofile|\\\\\\\\{\\\\\\\\.r.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.r\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.r\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_regexp_python\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(re)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.regexp_python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.regexp.python\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_restructuredtext\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(r(?:estructuredtext|st))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.restructuredtext\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.rst\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ruby\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(ruby|rbx??|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.ruby\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ruby\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_rust\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(rust|rs|\\\\\\\\{\\\\\\\\.rust.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.rust\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.rust\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_scala\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(s(?:cala|bt))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.scala\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.scala\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_scss\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(scss)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.scss\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.css.scss\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_shell\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\\\\\\\{\\\\\\\\.bash.+?})((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.shellscript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.shell\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_sql\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(sql|ddl|dml)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.sql\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_swift\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(swift)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.swift\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.swift\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_ts\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(t(?:ypescript|s))((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.typescript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.ts\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_tsx\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(tsx)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.typescriptreact\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.tsx\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_twig\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(twig)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.twig\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.twig\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_unknown\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?=([^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\"},\\\"fenced_code_block_vs_net\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(vb)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.vs_net\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.asp.vb.net\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_xml\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.xml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.xml\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_xsl\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(xslt??)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.xsl\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.xml.xsl\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_yaml\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(ya?ml)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.yaml\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"fenced_code_block_yang\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(`{3,}|~{3,})\\\\\\\\s*(?i:(yang)((\\\\\\\\s+|[,:?{])[^`]*)?$)\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"fenced_code.block.language.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"fenced_code.block.language.attributes.markdown\\\"}},\\\"end\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\2|\\\\\\\\s{0,3})(\\\\\\\\3)\\\\\\\\s*$\\\",\\\"endCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.markdown\\\"}},\\\"name\\\":\\\"markup.fenced_code.block.markdown\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\s*)(.*)\\\",\\\"contentName\\\":\\\"meta.embedded.block.yang\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.yang\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*([`~]{3,})\\\\\\\\s*$)\\\"}]},\\\"frontMatter\\\":{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"\\\\\\\\A(?=(-{3,}))\\\",\\\"end\\\":\\\"^(?: {0,3}\\\\\\\\1-*[\\\\\\\\t ]*|[\\\\\\\\t ]*\\\\\\\\.{3})$\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.end.frontmatter\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\A(-{3,})(.*)$\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.begin.frontmatter\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.frontmatter\\\"}},\\\"contentName\\\":\\\"meta.embedded.block.frontmatter\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"source.yaml\\\"}],\\\"while\\\":\\\"^(?!(?: {0,3}\\\\\\\\1-*[\\\\\\\\t ]*|[\\\\\\\\t ]*\\\\\\\\.{3})$)\\\"}]},\\\"heading\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{6})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.6.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{5})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.5.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{4})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.4.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{3})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.3.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{2})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.2.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.section.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.heading.markdown\\\"}},\\\"match\\\":\\\"(#{1})\\\\\\\\s+(.*?)(?:\\\\\\\\s+(#+))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"heading.1.markdown\\\"}]}},\\\"match\\\":\\\"(?:^|\\\\\\\\G) {0,3}(#{1,6}\\\\\\\\s+(.*?)(\\\\\\\\s+#{1,6})?\\\\\\\\s*)$\\\",\\\"name\\\":\\\"markup.heading.markdown\\\"},\\\"heading-setext\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"^(={3,})(?=[\\\\\\\\t ]*$\\\\\\\\n?)\\\",\\\"name\\\":\\\"markup.heading.setext.1.markdown\\\"},{\\\"match\\\":\\\"^(-{3,})(?=[\\\\\\\\t ]*$\\\\\\\\n?)\\\",\\\"name\\\":\\\"markup.heading.setext.2.markdown\\\"}]},\\\"html\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)\\\\\\\\s*(<!--)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.html\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.comment.html\\\"}},\\\"end\\\":\\\"(-->)\\\",\\\"name\\\":\\\"comment.block.html\\\"},{\\\"begin\\\":\\\"(?i)(^|\\\\\\\\G)\\\\\\\\s*(?=<(script|style|pre)(\\\\\\\\s|$|>)(?!.*?</(script|style|pre)>))\\\",\\\"end\\\":\\\"(?i)(.*)((</)(script|style|pre)(>))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},\\\"2\\\":{\\\"name\\\":\\\"meta.tag.structure.$4.end.html\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.html\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.html\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.html\\\"}},\\\"patterns\\\":[{\\\"begin\\\":\\\"(\\\\\\\\s*|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}],\\\"while\\\":\\\"(?i)^(?!.*</(script|style|pre)>)\\\"}]},{\\\"begin\\\":\\\"(?i)(^|\\\\\\\\G)\\\\\\\\s*(?=</?[A-Za-z]+[^\\\\\\\\&/;gt\\\\\\\\s]*(\\\\\\\\s|$|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}],\\\"while\\\":\\\"^(?!\\\\\\\\s*$)\\\"},{\\\"begin\\\":\\\"(^|\\\\\\\\G)\\\\\\\\s*(?=(<(?:[-0-9A-Za-z](/?>|\\\\\\\\s.*?>)|/[-0-9A-Za-z]>))\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}],\\\"while\\\":\\\"^(?!\\\\\\\\s*$)\\\"}]},\\\"image-inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.description.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"8\\\":{\\\"name\\\":\\\"markup.underline.link.image.markdown\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"10\\\":{\\\"name\\\":\\\"markup.underline.link.image.markdown\\\"},\\\"12\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"13\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"14\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"16\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"17\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"18\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"19\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"20\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"21\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"}},\\\"match\\\":\\\"(!\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(])(\\\\\\\\()[\\\\\\\\t ]*((<)((?:\\\\\\\\\\\\\\\\[<>]|[^\\\\\\\\n<>])*)(>)|((?<url>(?>[^()\\\\\\\\s]+)|\\\\\\\\(\\\\\\\\g<url>*\\\\\\\\))*))[\\\\\\\\t ]*(?:((\\\\\\\\().+?(\\\\\\\\)))|((\\\\\\\").+?(\\\\\\\"))|((').+?(')))?\\\\\\\\s*(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.image.inline.markdown\\\"},\\\"image-ref\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.description.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.description.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.other.reference.link.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"}},\\\"match\\\":\\\"(!\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(]) ?(\\\\\\\\[)(.*?)(])\\\",\\\"name\\\":\\\"meta.image.reference.markdown\\\"},\\\"inline\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#strikethrough\\\"},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"}]},\\\"italic\\\":{\\\"begin\\\":\\\"(?<open>(\\\\\\\\*(?=\\\\\\\\w)|(?<!\\\\\\\\w)\\\\\\\\*|(?<!\\\\\\\\w)\\\\\\\\b_))(?=\\\\\\\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\\\\\\\k<raw>(?!`))`)*+\\\\\\\\k<raw>|\\\\\\\\\\\\\\\\[-\\\\\\\\]!#(-+.>\\\\\\\\[\\\\\\\\\\\\\\\\_`{}]?+|\\\\\\\\[((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+](( ?\\\\\\\\[[^]]*+])|(\\\\\\\\([\\\\\\\\t ]*+<?(.*?)>?[\\\\\\\\t ]*+((?<title>[\\\\\\\"'])(.*?)\\\\\\\\k<title>)?\\\\\\\\))))|\\\\\\\\k<open>\\\\\\\\k<open>|(?!(?<=\\\\\\\\S)\\\\\\\\k<open>).)++(?<=\\\\\\\\S)(?=_\\\\\\\\b|\\\\\\\\*)\\\\\\\\k<open>)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.italic.markdown\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(\\\\\\\\1)((?!\\\\\\\\1)|(?=\\\\\\\\1\\\\\\\\1))\\\",\\\"name\\\":\\\"markup.italic.markdown\\\",\\\"patterns\\\":[{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"(?=<[^>]*?>)\\\",\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"},{\\\"include\\\":\\\"#strikethrough\\\"}]},\\\"link-def\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.other.reference.link.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.constant.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"8\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"9\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"10\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"11\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"12\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"13\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"14\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"16\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"17\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(\\\\\\\\[)([^]]+?)(])(:)[\\\\\\\\t ]*(?:(<)((?:\\\\\\\\\\\\\\\\[<>]|[^\\\\\\\\n<>])*)(>)|(\\\\\\\\S+?))[\\\\\\\\t ]*(?:((\\\\\\\\().+?(\\\\\\\\)))|((\\\\\\\").+?(\\\\\\\"))|((').+?(')))?\\\\\\\\s*$\\\",\\\"name\\\":\\\"meta.link.reference.def.markdown\\\"},\\\"link-email\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"}},\\\"match\\\":\\\"(<)((?:mailto:)?[!#-'*+\\\\\\\\--9=?A-Z^-~]+@[-0-9A-Za-z]+(?:\\\\\\\\.[-0-9A-Za-z]+)*)(>)\\\",\\\"name\\\":\\\"meta.link.email.lt-gt.markdown\\\"},\\\"link-inet\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"}},\\\"match\\\":\\\"(<)((?:https?|ftp)://.*?)(>)\\\",\\\"name\\\":\\\"meta.link.inet.markdown\\\"},\\\"link-inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#strikethrough\\\"},{\\\"include\\\":\\\"#image-inline\\\"}]},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"8\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.definition.link.markdown\\\"},\\\"10\\\":{\\\"name\\\":\\\"markup.underline.link.markdown\\\"},\\\"12\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"13\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"14\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"16\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"17\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"18\\\":{\\\"name\\\":\\\"string.other.link.description.title.markdown\\\"},\\\"19\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.markdown\\\"},\\\"20\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.markdown\\\"},\\\"21\\\":{\\\"name\\\":\\\"punctuation.definition.metadata.markdown\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(])(\\\\\\\\()[\\\\\\\\t ]*((<)((?:\\\\\\\\\\\\\\\\[<>]|[^\\\\\\\\n<>])*)(>)|((?<url>(?>[^()\\\\\\\\s]+)|\\\\\\\\(\\\\\\\\g<url>*\\\\\\\\))*))[\\\\\\\\t ]*(?:((\\\\\\\\()[^()]*(\\\\\\\\)))|((\\\\\\\")[^\\\\\\\"]*(\\\\\\\"))|((')[^']*(')))?\\\\\\\\s*(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.link.inline.markdown\\\"},\\\"link-ref\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#strikethrough\\\"},{\\\"include\\\":\\\"#image-inline\\\"}]},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.constant.begin.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.other.reference.link.markdown\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.constant.end.markdown\\\"}},\\\"match\\\":\\\"(?<![]\\\\\\\\\\\\\\\\])(\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(])(\\\\\\\\[)([^]]*+)(])\\\",\\\"name\\\":\\\"meta.link.reference.markdown\\\"},\\\"link-ref-literal\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.constant.begin.markdown\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.constant.end.markdown\\\"}},\\\"match\\\":\\\"(?<![]\\\\\\\\\\\\\\\\])(\\\\\\\\[)((?<square>[^]\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[\\\\\\\\g<square>*+])*+)(]) ?(\\\\\\\\[)(])\\\",\\\"name\\\":\\\"meta.link.reference.literal.markdown\\\"},\\\"link-ref-shortcut\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.begin.markdown\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.other.link.title.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.link.title.end.markdown\\\"}},\\\"match\\\":\\\"(?<![]\\\\\\\\\\\\\\\\])(\\\\\\\\[)((?:[^]\\\\\\\\[\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\[]\\\\\\\\[])+?)((?<!\\\\\\\\\\\\\\\\)])\\\",\\\"name\\\":\\\"meta.link.reference.markdown\\\"},\\\"list_paragraph\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(?=\\\\\\\\S)(?![*->]\\\\\\\\s|[0-9]+\\\\\\\\.\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.paragraph.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"},{\\\"include\\\":\\\"#heading-setext\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?!\\\\\\\\s*$|#| {0,3}([-*>_] {2,}){3,}[\\\\\\\\t ]*$\\\\\\\\n?| {0,3}[*->]| {0,3}[0-9]+\\\\\\\\.)\\\"},\\\"lists\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^|\\\\\\\\G)( {0,3})([-*+])([\\\\\\\\t ])\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.list.begin.markdown\\\"}},\\\"name\\\":\\\"markup.list.unnumbered.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block\\\"},{\\\"include\\\":\\\"#list_paragraph\\\"}],\\\"while\\\":\\\"((^|\\\\\\\\G)( {2,4}|\\\\\\\\t))|^([\\\\\\\\t ]*)$\\\"},{\\\"begin\\\":\\\"(^|\\\\\\\\G)( {0,3})([0-9]+[).])([\\\\\\\\t ])\\\",\\\"beginCaptures\\\":{\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.list.begin.markdown\\\"}},\\\"name\\\":\\\"markup.list.numbered.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block\\\"},{\\\"include\\\":\\\"#list_paragraph\\\"}],\\\"while\\\":\\\"((^|\\\\\\\\G)( {2,4}|\\\\\\\\t))|^([\\\\\\\\t ]*)$\\\"}]},\\\"paragraph\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G) {0,3}(?=[^\\\\\\\\t\\\\\\\\n ])\\\",\\\"name\\\":\\\"meta.paragraph.markdown\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"},{\\\"include\\\":\\\"text.html.derivative\\\"},{\\\"include\\\":\\\"#heading-setext\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)((?=\\\\\\\\s*[-=]{3,}\\\\\\\\s*$)| {4,}(?=[^\\\\\\\\t\\\\\\\\n ]))\\\"},\\\"raw\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.raw.markdown\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.raw.markdown\\\"}},\\\"match\\\":\\\"(`+)((?:[^`]|(?!(?<!`)\\\\\\\\1(?!`))`)*+)(\\\\\\\\1)\\\",\\\"name\\\":\\\"markup.inline.raw.string.markdown\\\"},\\\"raw_block\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)( {4}|\\\\\\\\t)\\\",\\\"name\\\":\\\"markup.raw.block.markdown\\\",\\\"while\\\":\\\"(^|\\\\\\\\G)( {4}|\\\\\\\\t)\\\"},\\\"separator\\\":{\\\"match\\\":\\\"(^|\\\\\\\\G) {0,3}([-*_])( {0,2}\\\\\\\\2){2,}[\\\\\\\\t ]*$\\\\\\\\n?\\\",\\\"name\\\":\\\"meta.separator.markdown\\\"},\\\"strikethrough\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.strikethrough.markdown\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"(?=<[^>]*?>)\\\",\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"text.html.derivative\\\"}]},{\\\"include\\\":\\\"#escape\\\"},{\\\"include\\\":\\\"#ampersand\\\"},{\\\"include\\\":\\\"#bracket\\\"},{\\\"include\\\":\\\"#raw\\\"},{\\\"include\\\":\\\"#bold\\\"},{\\\"include\\\":\\\"#italic\\\"},{\\\"include\\\":\\\"#image-inline\\\"},{\\\"include\\\":\\\"#link-inline\\\"},{\\\"include\\\":\\\"#link-inet\\\"},{\\\"include\\\":\\\"#link-email\\\"},{\\\"include\\\":\\\"#image-ref\\\"},{\\\"include\\\":\\\"#link-ref-literal\\\"},{\\\"include\\\":\\\"#link-ref\\\"},{\\\"include\\\":\\\"#link-ref-shortcut\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.strikethrough.markdown\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\\\\\\\\\)(~{2,})(?!(?<=\\\\\\\\w~~)_)((?:[^~]|(?!(?<![\\\\\\\\\\\\\\\\~])\\\\\\\\1(?!~))~)*+)(\\\\\\\\1)(?!(?<=_\\\\\\\\1)\\\\\\\\w)\\\",\\\"name\\\":\\\"markup.strikethrough.markdown\\\"},\\\"table\\\":{\\\"begin\\\":\\\"(^|\\\\\\\\G)(\\\\\\\\|)(?=[^|].+\\\\\\\\|\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.table.markdown\\\"}},\\\"name\\\":\\\"markup.table.markdown\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"punctuation.definition.table.markdown\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.table.markdown\\\"}},\\\"match\\\":\\\"(?<=\\\\\\\\|)\\\\\\\\s*(:?-+:?)\\\\\\\\s*(?=\\\\\\\\|)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#inline\\\"}]}},\\\"match\\\":\\\"(?<=\\\\\\\\|)\\\\\\\\s*(?=\\\\\\\\S)((\\\\\\\\\\\\\\\\\\\\\\\\||[^|])+)(?<=\\\\\\\\S)\\\\\\\\s*(?=\\\\\\\\|)\\\"}],\\\"while\\\":\\\"(^|\\\\\\\\G)(?=\\\\\\\\|)\\\"}},\\\"scopeName\\\":\\\"text.html.markdown\\\",\\\"embeddedLangs\\\":[],\\\"aliases\\\":[\\\"md\\\"],\\\"embeddedLangsLazy\\\":[\\\"css\\\",\\\"html\\\",\\\"ini\\\",\\\"java\\\",\\\"lua\\\",\\\"make\\\",\\\"perl\\\",\\\"r\\\",\\\"ruby\\\",\\\"php\\\",\\\"sql\\\",\\\"vb\\\",\\\"xml\\\",\\\"xsl\\\",\\\"yaml\\\",\\\"bat\\\",\\\"clojure\\\",\\\"coffee\\\",\\\"c\\\",\\\"cpp\\\",\\\"diff\\\",\\\"docker\\\",\\\"git-commit\\\",\\\"git-rebase\\\",\\\"go\\\",\\\"groovy\\\",\\\"pug\\\",\\\"javascript\\\",\\\"json\\\",\\\"jsonc\\\",\\\"jsonl\\\",\\\"less\\\",\\\"objective-c\\\",\\\"swift\\\",\\\"scss\\\",\\\"raku\\\",\\\"powershell\\\",\\\"python\\\",\\\"julia\\\",\\\"regexp\\\",\\\"rust\\\",\\\"scala\\\",\\\"shellscript\\\",\\\"typescript\\\",\\\"tsx\\\",\\\"csharp\\\",\\\"fsharp\\\",\\\"dart\\\",\\\"handlebars\\\",\\\"log\\\",\\\"erlang\\\",\\\"elixir\\\",\\\"latex\\\",\\\"bibtex\\\",\\\"abap\\\",\\\"rst\\\",\\\"html-derivative\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Python\\\",\\\"name\\\":\\\"python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statement\\\"},{\\\"include\\\":\\\"#expression\\\"}],\\\"repository\\\":{\\\"annotated-parameter\\\":{\\\"begin\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.annotation.python\\\"}},\\\"end\\\":\\\"(,)|(?=\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"match\\\":\\\"=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}]},\\\"assignment-operator\\\":{\\\"match\\\":\\\"<<=|>>=|//=|\\\\\\\\*\\\\\\\\*=|\\\\\\\\+=|-=|/=|@=|\\\\\\\\*=|%=|~=|\\\\\\\\^=|&=|\\\\\\\\|=|=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"},\\\"backticks\\\":{\\\"begin\\\":\\\"`\\\",\\\"end\\\":\\\"`|(?<!\\\\\\\\\\\\\\\\)(\\\\\\\\n)\\\",\\\"name\\\":\\\"invalid.deprecated.backtick.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"builtin-callables\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#builtin-exceptions\\\"},{\\\"include\\\":\\\"#builtin-functions\\\"},{\\\"include\\\":\\\"#builtin-types\\\"}]},\\\"builtin-exceptions\\\":{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b((Arithmetic|Assertion|Attribute|Buffer|BlockingIO|BrokenPipe|ChildProcess|(Connection(Aborted|Refused|Reset)?)|EOF|Environment|FileExists|FileNotFound|FloatingPoint|IO|Import|Indentation|Index|Interrupted|IsADirectory|NotADirectory|Permission|ProcessLookup|Timeout|Key|Lookup|Memory|Name|NotImplemented|OS|Overflow|Reference|Runtime|Recursion|Syntax|System|Tab|Type|UnboundLocal|Unicode(Encode|Decode|Translate)?|Value|Windows|ZeroDivision|ModuleNotFound)Error|((Pending)?Deprecation|Runtime|Syntax|User|Future|Import|Unicode|Bytes|Resource)?Warning|SystemExit|Stop(Async)?Iteration|KeyboardInterrupt|GeneratorExit|(Base)?Exception)\\\\\\\\b\\\",\\\"name\\\":\\\"support.type.exception.python\\\"},\\\"builtin-functions\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(__import__|abs|aiter|all|any|anext|ascii|bin|breakpoint|callable|chr|compile|copyright|credits|delattr|dir|divmod|enumerate|eval|exec|exit|filter|format|getattr|globals|hasattr|hash|help|hex|id|input|isinstance|issubclass|iter|len|license|locals|map|max|memoryview|min|next|oct|open|ord|pow|print|quit|range|reload|repr|reversed|round|setattr|sorted|sum|vars|zip)\\\\\\\\b\\\",\\\"name\\\":\\\"support.function.builtin.python\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(file|reduce|intern|raw_input|unicode|cmp|basestring|execfile|long|xrange)\\\\\\\\b\\\",\\\"name\\\":\\\"variable.legacy.builtin.python\\\"}]},\\\"builtin-possible-callables\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#builtin-callables\\\"},{\\\"include\\\":\\\"#magic-names\\\"}]},\\\"builtin-types\\\":{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(bool|bytearray|bytes|classmethod|complex|dict|float|frozenset|int|list|object|property|set|slice|staticmethod|str|tuple|type|super)\\\\\\\\b\\\",\\\"name\\\":\\\"support.type.python\\\"},\\\"call-wrapper-inheritance\\\":{\\\"begin\\\":\\\"\\\\\\\\b(?=([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(\\\\\\\\())\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"name\\\":\\\"meta.function-call.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#inheritance-name\\\"},{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"class-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\s*(class)\\\\\\\\s+(?=[_[:alpha:]]\\\\\\\\w*\\\\\\\\s*([(:]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.python\\\"}},\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.class.begin.python\\\"}},\\\"name\\\":\\\"meta.class.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-name\\\"},{\\\"include\\\":\\\"#class-inheritance\\\"}]}]},\\\"class-inheritance\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.inheritance.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.inheritance.end.python\\\"}},\\\"name\\\":\\\"meta.class.inheritance.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(\\\\\\\\*\\\\\\\\*?)\\\",\\\"name\\\":\\\"keyword.operator.unpacking.arguments.python\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.inheritance.python\\\"},{\\\"match\\\":\\\"=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"},{\\\"match\\\":\\\"\\\\\\\\bmetaclass\\\\\\\\b\\\",\\\"name\\\":\\\"support.type.metaclass.python\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#class-kwarg\\\"},{\\\"include\\\":\\\"#call-wrapper-inheritance\\\"},{\\\"include\\\":\\\"#expression-base\\\"},{\\\"include\\\":\\\"#member-access-class\\\"},{\\\"include\\\":\\\"#inheritance-identifier\\\"}]},\\\"class-kwarg\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.python variable.parameter.class.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(=)(?!=)\\\"},\\\"class-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.type.class.python\\\"}]},\\\"codetags\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.codetag.notation.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\\\\\\\b\\\"},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\\\\\\s*(type:)\\\\\\\\s*+(?!$|#)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.typehint.comment.python\\\"},\\\"1\\\":{\\\"name\\\":\\\"comment.typehint.directive.notation.python\\\"}},\\\"contentName\\\":\\\"meta.typehint.comment.python\\\",\\\"end\\\":\\\"$|(?=#)\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\Gignore(?=\\\\\\\\s*(?:$|#))\\\",\\\"name\\\":\\\"comment.typehint.ignore.notation.python\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\.)\\\\\\\\b(bool|bytes|float|int|object|str|List|Dict|Iterable|Sequence|Set|FrozenSet|Callable|Union|Tuple|Any|None)\\\\\\\\b\\\",\\\"name\\\":\\\"comment.typehint.type.notation.python\\\"},{\\\"match\\\":\\\"([]()*,.=\\\\\\\\[]|(->))\\\",\\\"name\\\":\\\"comment.typehint.punctuation.notation.python\\\"},{\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)\\\",\\\"name\\\":\\\"comment.typehint.variable.notation.python\\\"}]},{\\\"include\\\":\\\"#comments-base\\\"}]},\\\"comments-base\\\":{\\\"begin\\\":\\\"(#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.python\\\"}},\\\"end\\\":\\\"$()\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"comments-string-double-three\\\":{\\\"begin\\\":\\\"(#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.python\\\"}},\\\"end\\\":\\\"($|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"comments-string-single-three\\\":{\\\"begin\\\":\\\"(#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.python\\\"}},\\\"end\\\":\\\"($|(?='''))\\\",\\\"name\\\":\\\"comment.line.number-sign.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"curly-braces\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dict.begin.python\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.dict.end.python\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.dict.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"^\\\\\\\\s*((@))\\\\\\\\s*(?=[_[:alpha:]]\\\\\\\\w*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.decorator.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.decorator.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\))(.*?)(?=\\\\\\\\s*(?:#|$))|(?=[\\\\\\\\n#])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.decorator.python\\\"}},\\\"name\\\":\\\"meta.function.decorator.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator-name\\\"},{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"decorator-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#builtin-callables\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.period.python\\\"}},\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)|(\\\\\\\\.)\\\",\\\"name\\\":\\\"entity.name.function.decorator.python\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.decorator.python\\\"}},\\\"match\\\":\\\"\\\\\\\\s*([^#(.\\\\\\\\\\\\\\\\_[:alpha:]\\\\\\\\s].*?)(?=#|$)\\\",\\\"name\\\":\\\"invalid.illegal.decorator.python\\\"}]},\\\"docstring\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\1)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docstring-prompt\\\"},{\\\"include\\\":\\\"#codetags\\\"},{\\\"include\\\":\\\"#docstring-guts-unicode\\\"}]},{\\\"begin\\\":\\\"([Rr])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.raw.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#docstring-prompt\\\"},{\\\"include\\\":\\\"#codetags\\\"}]},{\\\"begin\\\":\\\"([\\\\\\\"'])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\1)|(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"},{\\\"include\\\":\\\"#docstring-guts-unicode\\\"}]},{\\\"begin\\\":\\\"([Rr])([\\\\\\\"'])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.docstring.raw.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#codetags\\\"}]}]},\\\"docstring-guts-unicode\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"}]},\\\"docstring-prompt\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"match\\\":\\\"(?:^|\\\\\\\\G)\\\\\\\\s*((?:>>>|\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s)(?=\\\\\\\\s*\\\\\\\\S)\\\"},\\\"docstring-statement\\\":{\\\"begin\\\":\\\"^(?=\\\\\\\\s*[Rr]?('''|\\\\\\\"\\\\\\\"\\\\\\\"|[\\\\\\\"']))\\\",\\\"end\\\":\\\"((?<=\\\\\\\\1)|^)(?!\\\\\\\\s*[Rr]?('''|\\\\\\\"\\\\\\\"\\\\\\\"|[\\\\\\\"']))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docstring\\\"}]},\\\"double-one-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"double-one-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"double-one-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#double-one-regexp-character-set\\\"},{\\\"include\\\":\\\"#double-one-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#double-one-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookahead\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#double-one-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#double-one-regexp-conditional\\\"},{\\\"include\\\":\\\"#double-one-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#double-one-regexp-parentheses\\\"}]},\\\"double-one-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-one-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"double-three-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"double-three-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"double-three-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#double-three-regexp-character-set\\\"},{\\\"include\\\":\\\"#double-three-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#double-three-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookahead\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#double-three-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#double-three-regexp-conditional\\\"},{\\\"include\\\":\\\"#double-three-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#double-three-regexp-parentheses\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"double-three-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?=\\\\\\\"\\\\\\\"\\\\\\\"))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-double-three\\\"}]},\\\"ellipsis\\\":{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.ellipsis.python\\\"},\\\"escape-sequence\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|[0-7]{1,3}|[\\\\\\\"'\\\\\\\\\\\\\\\\abfnrtv])\\\",\\\"name\\\":\\\"constant.character.escape.python\\\"},\\\"escape-sequence-unicode\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(u\\\\\\\\h{4}|U\\\\\\\\h{8}|N\\\\\\\\{[\\\\\\\\w\\\\\\\\s]+?})\\\",\\\"name\\\":\\\"constant.character.escape.python\\\"}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-base\\\"},{\\\"include\\\":\\\"#member-access\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\"}]},\\\"expression-bare\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#backticks\\\"},{\\\"include\\\":\\\"#illegal-anno\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#regexp\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#lambda\\\"},{\\\"include\\\":\\\"#generator\\\"},{\\\"include\\\":\\\"#illegal-operator\\\"},{\\\"include\\\":\\\"#operator\\\"},{\\\"include\\\":\\\"#curly-braces\\\"},{\\\"include\\\":\\\"#item-access\\\"},{\\\"include\\\":\\\"#list\\\"},{\\\"include\\\":\\\"#odd-function-call\\\"},{\\\"include\\\":\\\"#round-braces\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#builtin-functions\\\"},{\\\"include\\\":\\\"#builtin-types\\\"},{\\\"include\\\":\\\"#builtin-exceptions\\\"},{\\\"include\\\":\\\"#magic-names\\\"},{\\\"include\\\":\\\"#special-names\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#special-variables\\\"},{\\\"include\\\":\\\"#ellipsis\\\"},{\\\"include\\\":\\\"#punctuation\\\"},{\\\"include\\\":\\\"#line-continuation\\\"}]},\\\"expression-base\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#expression-bare\\\"},{\\\"include\\\":\\\"#line-continuation\\\"}]},\\\"f-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-bare\\\"},{\\\"include\\\":\\\"#member-access\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\"}]},\\\"fregexp-base-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#fregexp-quantifier\\\"},{\\\"include\\\":\\\"#fstring-formatting-braces\\\"},{\\\"match\\\":\\\"\\\\\\\\{.*?}\\\"},{\\\"include\\\":\\\"#regexp-base-common\\\"}]},\\\"fregexp-quantifier\\\":{\\\"match\\\":\\\"\\\\\\\\{\\\\\\\\{(\\\\\\\\d+|\\\\\\\\d+,(\\\\\\\\d+)?|,\\\\\\\\d+)}}\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},\\\"fstring-fnorm-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Ff])([BUbu])?('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.multi.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-core\\\"}]},\\\"fstring-fnorm-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Ff])([BUbu])?(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.single.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-core\\\"}]},\\\"fstring-formatting\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-formatting-braces\\\"},{\\\"include\\\":\\\"#fstring-formatting-singe-brace\\\"}]},\\\"fstring-formatting-braces\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.brace.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\{)(\\\\\\\\s*?)(})\\\"},{\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\{|}})\\\",\\\"name\\\":\\\"constant.character.escape.python\\\"}]},\\\"fstring-formatting-singe-brace\\\":{\\\"match\\\":\\\"(}(?!}))\\\",\\\"name\\\":\\\"invalid.illegal.brace.python\\\"},\\\"fstring-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"},{\\\"include\\\":\\\"#fstring-formatting\\\"}]},\\\"fstring-illegal-multi-brace\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#impossible\\\"}]},\\\"fstring-illegal-single-brace\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)(?=[^\\\\\\\\n}]*$\\\\\\\\n?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"end\\\":\\\"(})|(?=\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-terminator-single\\\"},{\\\"include\\\":\\\"#f-expression\\\"}]},\\\"fstring-multi-brace\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"end\\\":\\\"(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-terminator-multi\\\"},{\\\"include\\\":\\\"#f-expression\\\"}]},\\\"fstring-multi-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|'''|\\\\\\\"\\\\\\\"\\\\\\\"))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.multi.python\\\"},\\\"fstring-normf-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([BUbu])([Ff])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.multi.python storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.multi.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-core\\\"}]},\\\"fstring-normf-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([BUbu])([Ff])(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.single.python storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.single.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-core\\\"}]},\\\"fstring-raw-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#fstring-formatting\\\"}]},\\\"fstring-raw-multi-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|'''|\\\\\\\"\\\\\\\"\\\\\\\"))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.multi.python\\\"},\\\"fstring-raw-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Rr][Ff]|[Ff][Rr])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.multi.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.raw.multi.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-raw-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-raw-multi-core\\\"}]},\\\"fstring-raw-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Rr][Ff]|[Ff][Rr])(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.single.python storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python string.quoted.raw.single.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.fstring.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-raw-guts\\\"},{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"include\\\":\\\"#fstring-raw-single-core\\\"}]},\\\"fstring-raw-single-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.raw.single.python\\\"},\\\"fstring-single-brace\\\":{\\\"begin\\\":\\\"(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"end\\\":\\\"(})|(?=\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-terminator-single\\\"},{\\\"include\\\":\\\"#f-expression\\\"}]},\\\"fstring-single-core\\\":{\\\"match\\\":\\\"(.+?)($(\\\\\\\\n?)|(?=[\\\\\\\\\\\\\\\\{}]|([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))|\\\\\\\\n\\\",\\\"name\\\":\\\"string.interpolated.python string.quoted.single.python\\\"},\\\"fstring-terminator-multi\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(=(![ars])?)(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(=?![ars])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(=?(?:![ars])?)(:\\\\\\\\w?[<=>^]?[- +]?#?\\\\\\\\d*,?(\\\\\\\\.\\\\\\\\d+)?[%EFGXb-gnosx]?)(?=})\\\"},{\\\"include\\\":\\\"#fstring-terminator-multi-tail\\\"}]},\\\"fstring-terminator-multi-tail\\\":{\\\"begin\\\":\\\"(=?(?:![ars])?)(:)(?=.*?\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-illegal-multi-brace\\\"},{\\\"include\\\":\\\"#fstring-multi-brace\\\"},{\\\"match\\\":\\\"([%EFGXb-gnosx])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\.\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(,)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(#)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([- +])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([<=>^])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\w)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"}]},\\\"fstring-terminator-single\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(=(![ars])?)(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(=?![ars])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(=?(?:![ars])?)(:\\\\\\\\w?[<=>^]?[- +]?#?\\\\\\\\d*,?(\\\\\\\\.\\\\\\\\d+)?[%EFGXb-gnosx]?)(?=})\\\"},{\\\"include\\\":\\\"#fstring-terminator-single-tail\\\"}]},\\\"fstring-terminator-single-tail\\\":{\\\"begin\\\":\\\"(=?(?:![ars])?)(:)(?=.*?\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"end\\\":\\\"(?=})|(?=\\\\\\\\n)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#fstring-illegal-single-brace\\\"},{\\\"include\\\":\\\"#fstring-single-brace\\\"},{\\\"match\\\":\\\"([%EFGXb-gnosx])(?=})\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\.\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(,)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\d+)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(#)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([- +])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"([<=>^])\\\",\\\"name\\\":\\\"storage.type.format.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\w)\\\",\\\"name\\\":\\\"storage.type.format.python\\\"}]},\\\"function-arguments\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.begin.python\\\"}},\\\"contentName\\\":\\\"meta.function-call.arguments.python\\\",\\\"end\\\":\\\"(?=\\\\\\\\))(?!\\\\\\\\)\\\\\\\\s*\\\\\\\\()\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(,)\\\",\\\"name\\\":\\\"punctuation.separator.arguments.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.unpacking.arguments.python\\\"}},\\\"match\\\":\\\"(?:(?<=[(,])|^)\\\\\\\\s*(\\\\\\\\*{1,2})\\\"},{\\\"include\\\":\\\"#lambda-incomplete\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function-call.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(=)(?!=)\\\"},{\\\"match\\\":\\\"=(?!=)\\\",\\\"name\\\":\\\"keyword.operator.assignment.python\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.begin.python\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(\\\\\\\\))\\\\\\\\s*(\\\\\\\\()\\\"}]},\\\"function-call\\\":{\\\"begin\\\":\\\"\\\\\\\\b(?=([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(\\\\\\\\())\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"name\\\":\\\"meta.function-call.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#special-variables\\\"},{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\b(def)\\\\\\\\s+(?=[_[:alpha:]]\\\\\\\\p{word}*\\\\\\\\s*\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.async.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.python\\\"}},\\\"end\\\":\\\"(:|(?=[\\\\\\\\n\\\\\\\"#']))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.function.begin.python\\\"}},\\\"name\\\":\\\"meta.function.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-def-name\\\"},{\\\"include\\\":\\\"#parameters\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"include\\\":\\\"#return-annotation\\\"}]},\\\"function-def-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"entity.name.function.python\\\"}]},\\\"function-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"meta.function-call.generic.python\\\"}]},\\\"generator\\\":{\\\"begin\\\":\\\"\\\\\\\\bfor\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"end\\\":\\\"\\\\\\\\bin\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"illegal-anno\\\":{\\\"match\\\":\\\"->\\\",\\\"name\\\":\\\"invalid.illegal.annotation.python\\\"},\\\"illegal-names\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.import.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?:(and|assert|async|await|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|in|is|(?<=\\\\\\\\.)lambda|lambda(?=\\\\\\\\s*[.=])|nonlocal|not|or|pass|raise|return|try|while|with|yield)|(as|import))\\\\\\\\b\\\"},\\\"illegal-object-name\\\":{\\\"match\\\":\\\"\\\\\\\\b(True|False|None)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.illegal.name.python\\\"},\\\"illegal-operator\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"&&|\\\\\\\\|\\\\\\\\||--|\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"invalid.illegal.operator.python\\\"},{\\\"match\\\":\\\"[$?]\\\",\\\"name\\\":\\\"invalid.illegal.operator.python\\\"},{\\\"match\\\":\\\"!\\\\\\\\b\\\",\\\"name\\\":\\\"invalid.illegal.operator.python\\\"}]},\\\"import\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(from)\\\\\\\\b(?=.+import)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.python\\\"}},\\\"end\\\":\\\"$|(?=import)\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.+\\\",\\\"name\\\":\\\"punctuation.separator.period.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(import)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.python\\\"}},\\\"end\\\":\\\"$\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)as\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.import.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"impossible\\\":{\\\"match\\\":\\\"$.^\\\"},\\\"inheritance-identifier\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\"},\\\"inheritance-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#lambda-incomplete\\\"},{\\\"include\\\":\\\"#builtin-possible-callables\\\"},{\\\"include\\\":\\\"#inheritance-identifier\\\"}]},\\\"item-access\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(?=[_[:alpha:]]\\\\\\\\w*\\\\\\\\s*\\\\\\\\[)\\\",\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"name\\\":\\\"meta.item-access.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#item-name\\\"},{\\\"include\\\":\\\"#item-index\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"item-index\\\":{\\\"begin\\\":\\\"(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.begin.python\\\"}},\\\"contentName\\\":\\\"meta.item-access.arguments.python\\\",\\\"end\\\":\\\"(?=])\\\",\\\"patterns\\\":[{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.slice.python\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"item-name\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#special-variables\\\"},{\\\"include\\\":\\\"#builtin-functions\\\"},{\\\"include\\\":\\\"#special-names\\\"},{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"meta.indexed-name.python\\\"}]},\\\"lambda\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"match\\\":\\\"((?<=\\\\\\\\.)lambda|lambda(?=\\\\\\\\s*[.=]))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.lambda.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(lambda)\\\\\\\\s*?(?=[\\\\\\\\n,]|$)\\\"},{\\\"begin\\\":\\\"\\\\\\\\b(lambda)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.lambda.python\\\"}},\\\"contentName\\\":\\\"meta.function.lambda.parameters.python\\\",\\\"end\\\":\\\"(:)|(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.function.lambda.begin.python\\\"}},\\\"name\\\":\\\"meta.lambda-function.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"/\\\",\\\"name\\\":\\\"keyword.operator.positional.parameter.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\*\\\\\\\\*?)\\\",\\\"name\\\":\\\"keyword.operator.unpacking.parameter.python\\\"},{\\\"include\\\":\\\"#lambda-nested-incomplete\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(?:(,)|(?=:|$))\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#backticks\\\"},{\\\"include\\\":\\\"#illegal-anno\\\"},{\\\"include\\\":\\\"#lambda-parameter-with-default\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"include\\\":\\\"#illegal-operator\\\"}]}]},\\\"lambda-incomplete\\\":{\\\"match\\\":\\\"\\\\\\\\blambda(?=\\\\\\\\s*[),])\\\",\\\"name\\\":\\\"storage.type.function.lambda.python\\\"},\\\"lambda-nested-incomplete\\\":{\\\"match\\\":\\\"\\\\\\\\blambda(?=\\\\\\\\s*[),:])\\\",\\\"name\\\":\\\"storage.type.function.lambda.python\\\"},\\\"lambda-parameter-with-default\\\":{\\\"begin\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.python\\\"}},\\\"end\\\":\\\"(,)|(?=:|$)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"line-continuation\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.continuation.line.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.line.continuation.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\)\\\\\\\\s*(\\\\\\\\S.*$\\\\\\\\n?)\\\"},{\\\"begin\\\":\\\"(\\\\\\\\\\\\\\\\)\\\\\\\\s*$\\\\\\\\n?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.continuation.line.python\\\"}},\\\"end\\\":\\\"(?=^\\\\\\\\s*$)|(?!(\\\\\\\\s*[Rr]?('''|\\\\\\\"\\\\\\\"\\\\\\\"|[\\\\\\\"']))|\\\\\\\\G()$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"list\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.list.begin.python\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.list.end.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b(True|False|None|NotImplemented|Ellipsis)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.python\\\"},{\\\"include\\\":\\\"#number\\\"}]},\\\"loose-default\\\":{\\\"begin\\\":\\\"(=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.python\\\"}},\\\"end\\\":\\\"(,)|(?=\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"magic-function-names\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.magic.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(__(?:abs|add|aenter|aexit|aiter|and|anext|await|bool|call|ceil|class_getitem|cmp|coerce|complex|contains|copy|deepcopy|del|delattr|delete|delitem|delslice|dir|div|divmod|enter|eq|exit|float|floor|floordiv|format|get??|getattr|getattribute|getinitargs|getitem|getnewargs|getslice|getstate|gt|hash|hex|iadd|iand|idiv|ifloordiv||ilshift|imod|imul|index|init|instancecheck|int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|len??|long|lshift|lt|missing|mod|mul|neg??|new|next|nonzero|oct|or|pos|pow|radd|rand|rdiv|rdivmod|reduce|reduce_ex|repr|reversed|rfloordiv||rlshift|rmod|rmul|ror|round|rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|set_name|setslice|setstate|sizeof|str|sub|subclasscheck|truediv|trunc|unicode|xor|matmul|rmatmul|imatmul|init_subclass|set_name|fspath|bytes|prepare|length_hint)__)\\\\\\\\b\\\"},\\\"magic-names\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#magic-function-names\\\"},{\\\"include\\\":\\\"#magic-variable-names\\\"}]},\\\"magic-variable-names\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.variable.magic.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(__(?:all|annotations|bases|builtins|class|closure|code|debug|defaults|dict|doc|file|func|globals|kwdefaults|match_args|members|metaclass|methods|module|mro|mro_entries|name|qualname|post_init|self|signature|slots|subclasses|version|weakref|wrapped|classcell|spec|path|package|future|traceback)__)\\\\\\\\b\\\"},\\\"member-access\\\":{\\\"begin\\\":\\\"(\\\\\\\\.)\\\\\\\\s*(?!\\\\\\\\.)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.period.python\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(?=\\\\\\\\W)|(^|(?<=\\\\\\\\s))(?=[^\\\\\\\\\\\\\\\\\\\\\\\\w\\\\\\\\s])|$\\\",\\\"name\\\":\\\"meta.member.access.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#member-access-base\\\"},{\\\"include\\\":\\\"#member-access-attribute\\\"}]},\\\"member-access-attribute\\\":{\\\"match\\\":\\\"\\\\\\\\b([_[:alpha:]]\\\\\\\\w*)\\\\\\\\b\\\",\\\"name\\\":\\\"meta.attribute.python\\\"},\\\"member-access-base\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#magic-names\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#special-names\\\"},{\\\"include\\\":\\\"#line-continuation\\\"},{\\\"include\\\":\\\"#item-access\\\"}]},\\\"member-access-class\\\":{\\\"begin\\\":\\\"(\\\\\\\\.)\\\\\\\\s*(?!\\\\\\\\.)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.period.python\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\S)(?=\\\\\\\\W)|$\\\",\\\"name\\\":\\\"meta.member.access.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#call-wrapper-inheritance\\\"},{\\\"include\\\":\\\"#member-access-base\\\"},{\\\"include\\\":\\\"#inheritance-identifier\\\"}]},\\\"number\\\":{\\\"name\\\":\\\"constant.numeric.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#number-float\\\"},{\\\"include\\\":\\\"#number-dec\\\"},{\\\"include\\\":\\\"#number-hex\\\"},{\\\"include\\\":\\\"#number-oct\\\"},{\\\"include\\\":\\\"#number-bin\\\"},{\\\"include\\\":\\\"#number-long\\\"},{\\\"match\\\":\\\"\\\\\\\\b[0-9]+\\\\\\\\w+\\\",\\\"name\\\":\\\"invalid.illegal.name.python\\\"}]},\\\"number-bin\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(0[Bb])(_?[01])+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.bin.python\\\"},\\\"number-dec\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.imaginary.number.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.dec.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(?:[1-9](?:_?[0-9])*|0+|[0-9](?:_?[0-9])*([Jj])|0([0-9]+)(?![.Ee]))\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.dec.python\\\"},\\\"number-float\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.imaginary.number.python\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:(?:\\\\\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\\\\\.[0-9](?:_?[0-9])*|[0-9](?:_?[0-9])*\\\\\\\\.)(?:[Ee][-+]?[0-9](?:_?[0-9])*)?|[0-9](?:_?[0-9])*[Ee][-+]?[0-9](?:_?[0-9])*)([Jj])?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.float.python\\\"},\\\"number-hex\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(0[Xx])(_?\\\\\\\\h)+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.hex.python\\\"},\\\"number-long\\\":{\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])([1-9][0-9]*|0)([Ll])\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.bin.python\\\"},\\\"number-oct\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.number.python\\\"}},\\\"match\\\":\\\"(?<![.\\\\\\\\w])(0[Oo])(_?[0-7])+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.oct.python\\\"},\\\"odd-function-call\\\":{\\\"begin\\\":\\\"(?<=[])])\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.end.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#function-arguments\\\"}]},\\\"operator\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.bitwise.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.comparison.python\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(?:(and|or|not|in|is)|(for|if|else|await|yield(?:\\\\\\\\s+from)?))(?!\\\\\\\\s*:)\\\\\\\\b|(<<|>>|[\\\\\\\\&^|~])|(\\\\\\\\*\\\\\\\\*|[-%*+]|//|[/@])|(!=|==|>=|<=|[<>])|(:=)\\\"},\\\"parameter-special\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.function.language.special.self.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.function.language.special.cls.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b((self)|(cls))\\\\\\\\b\\\\\\\\s*(?:(,)|(?=\\\\\\\\)))\\\"},\\\"parameters\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.python\\\"}},\\\"name\\\":\\\"meta.function.parameters.python\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"/\\\",\\\"name\\\":\\\"keyword.operator.positional.parameter.python\\\"},{\\\"match\\\":\\\"(\\\\\\\\*\\\\\\\\*?)\\\",\\\"name\\\":\\\"keyword.operator.unpacking.parameter.python\\\"},{\\\"include\\\":\\\"#lambda-incomplete\\\"},{\\\"include\\\":\\\"#illegal-names\\\"},{\\\"include\\\":\\\"#illegal-object-name\\\"},{\\\"include\\\":\\\"#parameter-special\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.parameter.function.language.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.parameters.python\\\"}},\\\"match\\\":\\\"([_[:alpha:]]\\\\\\\\w*)\\\\\\\\s*(?:(,)|(?=[\\\\\\\\n#)=]))\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"include\\\":\\\"#loose-default\\\"},{\\\"include\\\":\\\"#annotated-parameter\\\"}]},\\\"punctuation\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.colon.python\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.element.python\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-single-three-line\\\"},{\\\"include\\\":\\\"#regexp-double-three-line\\\"},{\\\"include\\\":\\\"#regexp-single-one-line\\\"},{\\\"include\\\":\\\"#regexp-double-one-line\\\"}]},\\\"regexp-backreference\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.backreference.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp\\\"}},\\\"match\\\":\\\"(\\\\\\\\()(\\\\\\\\?P=\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?)(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.backreference.named.regexp\\\"},\\\"regexp-backreference-number\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.tag.backreference.regexp\\\"}},\\\"match\\\":\\\"(\\\\\\\\\\\\\\\\[1-9]\\\\\\\\d?)\\\",\\\"name\\\":\\\"meta.backreference.regexp\\\"},\\\"regexp-base-common\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\",\\\"name\\\":\\\"support.other.match.any.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\^\\\",\\\"name\\\":\\\"support.other.match.begin.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\$\\\",\\\"name\\\":\\\"support.other.match.end.regexp\\\"},{\\\"match\\\":\\\"[*+?]\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.disjunction.regexp\\\"},{\\\"include\\\":\\\"#regexp-escape-sequence\\\"}]},\\\"regexp-base-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-quantifier\\\"},{\\\"include\\\":\\\"#regexp-base-common\\\"}]},\\\"regexp-charecter-set-escapes\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\\\\\\\\\abfnrtv]\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},{\\\"include\\\":\\\"#regexp-escape-special\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{1,3})\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},{\\\"include\\\":\\\"#regexp-escape-character\\\"},{\\\"include\\\":\\\"#regexp-escape-unicode\\\"},{\\\"include\\\":\\\"#regexp-escape-catchall\\\"}]},\\\"regexp-double-one-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\")|(?<!\\\\\\\\\\\\\\\\)(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-one-regexp-expression\\\"}]},\\\"regexp-double-three-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double-three-regexp-expression\\\"}]},\\\"regexp-escape-catchall\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(.|\\\\\\\\n)\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},\\\"regexp-escape-character\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|0[0-7]{1,2}|[0-7]{3})\\\",\\\"name\\\":\\\"constant.character.escape.regexp\\\"},\\\"regexp-escape-sequence\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-escape-special\\\"},{\\\"include\\\":\\\"#regexp-escape-character\\\"},{\\\"include\\\":\\\"#regexp-escape-unicode\\\"},{\\\"include\\\":\\\"#regexp-backreference-number\\\"},{\\\"include\\\":\\\"#regexp-escape-catchall\\\"}]},\\\"regexp-escape-special\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([ABDSWZbdsw])\\\",\\\"name\\\":\\\"support.other.escape.special.regexp\\\"},\\\"regexp-escape-unicode\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(u\\\\\\\\h{4}|U\\\\\\\\h{8})\\\",\\\"name\\\":\\\"constant.character.unicode.regexp\\\"},\\\"regexp-flags\\\":{\\\"match\\\":\\\"\\\\\\\\(\\\\\\\\?[Laimsux]+\\\\\\\\)\\\",\\\"name\\\":\\\"storage.modifier.flag.regexp\\\"},\\\"regexp-quantifier\\\":{\\\"match\\\":\\\"\\\\\\\\{(\\\\\\\\d+|\\\\\\\\d+,(\\\\\\\\d+)?|,\\\\\\\\d+)}\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},\\\"regexp-single-one-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(')\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(')|(?<!\\\\\\\\\\\\\\\\)(\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"regexp-single-three-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]r)|([Bb]r)|(r[Bb]?))(''')\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(''')\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.regexp.quoted.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"}]},\\\"return-annotation\\\":{\\\"begin\\\":\\\"(->)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.annotation.result.python\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"round-braces\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.parenthesis.begin.python\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.parenthesis.end.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"semicolon\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\";$\\\",\\\"name\\\":\\\"invalid.deprecated.semicolon.python\\\"}]},\\\"single-one-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"single-one-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"single-one-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#single-one-regexp-character-set\\\"},{\\\"include\\\":\\\"#single-one-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#single-one-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookahead\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#single-one-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#single-one-regexp-conditional\\\"},{\\\"include\\\":\\\"#single-one-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#single-one-regexp-parentheses\\\"}]},\\\"single-one-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-one-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='))|((?=(?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-one-regexp-expression\\\"}]},\\\"single-three-regexp-character-set\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\[\\\\\\\\^?](?!.*?])\\\"},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?(])?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.begin.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.set.regexp\\\"}},\\\"end\\\":\\\"(]|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.character.set.end.regexp constant.other.set.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.character.set.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-charecter-set-escapes\\\"},{\\\"match\\\":\\\"\\\\\\\\N\\\",\\\"name\\\":\\\"constant.character.set.regexp\\\"}]}]},\\\"single-three-regexp-comments\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.comment.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.comment.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"comment.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#codetags\\\"}]},\\\"single-three-regexp-conditional\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?\\\\\\\\((\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?|\\\\\\\\d+)\\\\\\\\)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.conditional.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.conditional.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp-base-expression\\\"},{\\\"include\\\":\\\"#single-three-regexp-character-set\\\"},{\\\"include\\\":\\\"#single-three-regexp-comments\\\"},{\\\"include\\\":\\\"#regexp-flags\\\"},{\\\"include\\\":\\\"#single-three-regexp-named-group\\\"},{\\\"include\\\":\\\"#regexp-backreference\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookahead\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookahead-negative\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookbehind\\\"},{\\\"include\\\":\\\"#single-three-regexp-lookbehind-negative\\\"},{\\\"include\\\":\\\"#single-three-regexp-conditional\\\"},{\\\"include\\\":\\\"#single-three-regexp-parentheses-non-capturing\\\"},{\\\"include\\\":\\\"#single-three-regexp-parentheses\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookahead\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookahead-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookahead.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookbehind\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<=\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-lookbehind-negative\\\":{\\\"begin\\\":\\\"(\\\\\\\\()\\\\\\\\?<!\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.parenthesis.lookbehind.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-named-group\\\":{\\\"begin\\\":\\\"(\\\\\\\\()(\\\\\\\\?P<\\\\\\\\w+(?:\\\\\\\\s+\\\\\\\\p{alnum}+)?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.named.group.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"meta.named.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-parentheses\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"single-three-regexp-parentheses-non-capturing\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\?:\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\)|(?='''))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#single-three-regexp-expression\\\"},{\\\"include\\\":\\\"#comments-string-single-three\\\"}]},\\\"special-names\\\":{\\\"match\\\":\\\"\\\\\\\\b(_*\\\\\\\\p{upper}[_\\\\\\\\d]*\\\\\\\\p{upper})[[:upper:]\\\\\\\\d]*(_\\\\\\\\w*)?\\\\\\\\b\\\",\\\"name\\\":\\\"constant.other.caps.python\\\"},\\\"special-variables\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.language.special.self.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.language.special.cls.python\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(?:(self)|(cls))\\\\\\\\b\\\"},\\\"statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#import\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#generator\\\"},{\\\"include\\\":\\\"#statement-keyword\\\"},{\\\"include\\\":\\\"#assignment-operator\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#docstring-statement\\\"},{\\\"include\\\":\\\"#semicolon\\\"}]},\\\"statement-keyword\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\b((async\\\\\\\\s+)?\\\\\\\\s*def)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.function.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)as\\\\\\\\b(?=.*[:\\\\\\\\\\\\\\\\])\\\",\\\"name\\\":\\\"keyword.control.flow.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)as\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.import.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(async|continue|del|assert|break|finally|for|from|elif|else|if|except|pass|raise|return|try|while|with)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.flow.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(global|nonlocal)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.modifier.declaration.python\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\.)(class)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.python\\\"}},\\\"match\\\":\\\"^\\\\\\\\s*(case|match)(?=\\\\\\\\s*([-\\\\\\\"#'(+:\\\\\\\\[{\\\\\\\\w\\\\\\\\d]|$))\\\\\\\\b\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-quoted-single-line\\\"},{\\\"include\\\":\\\"#string-bin-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-bin-quoted-single-line\\\"},{\\\"include\\\":\\\"#string-raw-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-raw-quoted-single-line\\\"},{\\\"include\\\":\\\"#string-raw-bin-quoted-multi-line\\\"},{\\\"include\\\":\\\"#string-raw-bin-quoted-single-line\\\"},{\\\"include\\\":\\\"#fstring-fnorm-quoted-multi-line\\\"},{\\\"include\\\":\\\"#fstring-fnorm-quoted-single-line\\\"},{\\\"include\\\":\\\"#fstring-normf-quoted-multi-line\\\"},{\\\"include\\\":\\\"#fstring-normf-quoted-single-line\\\"},{\\\"include\\\":\\\"#fstring-raw-quoted-multi-line\\\"},{\\\"include\\\":\\\"#fstring-raw-quoted-single-line\\\"}]},\\\"string-bin-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Bb])('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.binary.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-bin-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b([Bb])(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.binary.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-brace-formatting\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\{|}}|\\\\\\\\{\\\\\\\\w*(\\\\\\\\.[_[:alpha:]]\\\\\\\\w*|\\\\\\\\[[^]\\\\\\\"']+])*(![ars])?(:\\\\\\\\w?[<=>^]?[- +]?#?\\\\\\\\d*,?(\\\\\\\\.\\\\\\\\d+)?[%EFGXb-gnosx]?)?})\\\",\\\"name\\\":\\\"meta.format.brace.python\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.format.python\\\"}},\\\"match\\\":\\\"(\\\\\\\\{\\\\\\\\w*(\\\\\\\\.[_[:alpha:]]\\\\\\\\w*|\\\\\\\\[[^]\\\\\\\"']+])*(![ars])?(:)[^\\\\\\\\n\\\\\\\"'{}]*(?:\\\\\\\\{[^\\\\\\\\n\\\\\\\"'}]*?}[^\\\\\\\\n\\\\\\\"'{}]*)*})\\\",\\\"name\\\":\\\"meta.format.brace.python\\\"}]},\\\"string-consume-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"'\\\\\\\\\\\\\\\\]\\\"},\\\"string-entity\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-formatting\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.format.placeholder.other.python\\\"}},\\\"match\\\":\\\"(%(\\\\\\\\([\\\\\\\\w\\\\\\\\s]*\\\\\\\\))?[- #+0]*(\\\\\\\\d+|\\\\\\\\*)?(\\\\\\\\.(\\\\\\\\d+|\\\\\\\\*))?([Lhl])?[%EFGXa-giorsux])\\\",\\\"name\\\":\\\"meta.format.percent.python\\\"},\\\"string-line-continuation\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\$\\\",\\\"name\\\":\\\"constant.language.python\\\"},\\\"string-multi-bad-brace1-formatting-raw\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\"))%})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"}]},\\\"string-multi-bad-brace1-formatting-unicode\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\"))%})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"}]},\\\"string-multi-bad-brace2-formatting-raw\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-multi-bad-brace2-formatting-unicode\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!'''|\\\\\\\"\\\\\\\"\\\\\\\")})\\\",\\\"end\\\":\\\"(?='''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-quoted-multi-line\\\":{\\\"begin\\\":\\\"(?:\\\\\\\\b([Rr])(?=[Uu]))?([Uu])?('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-multi-bad-brace1-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-multi-bad-brace2-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-unicode-guts\\\"}]},\\\"string-quoted-single-line\\\":{\\\"begin\\\":\\\"(?:\\\\\\\\b([Rr])(?=[Uu]))?([Uu])?(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"invalid.illegal.prefix.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\3)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-single-bad-brace1-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-single-bad-brace2-formatting-unicode\\\"},{\\\"include\\\":\\\"#string-unicode-guts\\\"}]},\\\"string-raw-bin-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-raw-bin-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(R[Bb]|[Bb]R)('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.binary.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-raw-bin-guts\\\"}]},\\\"string-raw-bin-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(R[Bb]|[Bb]R)(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\2)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.binary.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-raw-bin-guts\\\"}]},\\\"string-raw-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"},{\\\"include\\\":\\\"#string-brace-formatting\\\"}]},\\\"string-raw-quoted-multi-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]R)|(R))('''|\\\\\\\"\\\\\\\"\\\\\\\")\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\4)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.multi.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-multi-bad-brace1-formatting-raw\\\"},{\\\"include\\\":\\\"#string-multi-bad-brace2-formatting-raw\\\"},{\\\"include\\\":\\\"#string-raw-guts\\\"}]},\\\"string-raw-quoted-single-line\\\":{\\\"begin\\\":\\\"\\\\\\\\b(([Uu]R)|(R))(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"2\\\":{\\\"name\\\":\\\"invalid.deprecated.prefix.python\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.string.python\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.python\\\"}},\\\"end\\\":\\\"(\\\\\\\\4)|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.python\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.python\\\"}},\\\"name\\\":\\\"string.quoted.raw.single.python\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-single-bad-brace1-formatting-raw\\\"},{\\\"include\\\":\\\"#string-single-bad-brace2-formatting-raw\\\"},{\\\"include\\\":\\\"#string-raw-guts\\\"}]},\\\"string-single-bad-brace1-formatting-raw\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))%})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"}]},\\\"string-single-bad-brace1-formatting-unicode\\\":{\\\"begin\\\":\\\"(?=\\\\\\\\{%(.*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n)))%})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#escape-sequence\\\"},{\\\"include\\\":\\\"#string-line-continuation\\\"}]},\\\"string-single-bad-brace2-formatting-raw\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-consume-escape\\\"},{\\\"include\\\":\\\"#string-formatting\\\"}]},\\\"string-single-bad-brace2-formatting-unicode\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\{\\\\\\\\{)(?=\\\\\\\\{(\\\\\\\\w*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))[^!.:\\\\\\\\[}\\\\\\\\w]).*?(?!([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))})\\\",\\\"end\\\":\\\"(?=([\\\\\\\"'])|((?<!\\\\\\\\\\\\\\\\)\\\\\\\\n))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#string-entity\\\"}]},\\\"string-unicode-guts\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#escape-sequence-unicode\\\"},{\\\"include\\\":\\\"#string-entity\\\"},{\\\"include\\\":\\\"#string-brace-formatting\\\"}]}},\\\"scopeName\\\":\\\"source.python\\\",\\\"aliases\\\":[\\\"py\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"Shell\\\",\\\"name\\\":\\\"shellscript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}],\\\"repository\\\":{\\\"alias_statement\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+(alias)[\\\\\\\\t ]*+((?:((?<!\\\\\\\\w)-\\\\\\\\w+)\\\\\\\\b[\\\\\\\\t ]*+)*)[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.alias.shell\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)-\\\\\\\\w+\\\\\\\\b\\\",\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"9\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"10\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"11\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\t ]|$)|(?:(?:(?:(;)|(&&))|(\\\\\\\\|\\\\\\\\|))|(&))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.statement.semicolon.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.statement.and.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.statement.or.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.statement.background.shell\\\"}},\\\"name\\\":\\\"meta.expression.assignment.alias.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"argument\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]++(?![\\\\\\\\n#\\\\\\\\&(\\\\\\\\[|]|$|;)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\t \\\\\\\\&;|]|$|[\\\\\\\\n)`])\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.argument.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#argument_context\\\"},{\\\"include\\\":\\\"#line_continuation\\\"}]},\\\"argument_context\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"variable.language.special.wildcard.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#numeric_literal\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.$1.shell\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\w)\\\\\\\\b(true|false)\\\\\\\\b(?!\\\\\\\\w)\\\"}]}},\\\"match\\\":\\\"[\\\\\\\\t ]*+([^\\\\\\\\t\\\\\\\\n \\\\\\\"$\\\\\\\\&-);<>\\\\\\\\\\\\\\\\`|]+(?!>))\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"arithmetic_double\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.double.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\\\\\\s*\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.double.shell\\\"}},\\\"name\\\":\\\"meta.arithmetic.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#math\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"arithmetic_no_dollar\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.single.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.arithmetic.single.shell\\\"}},\\\"name\\\":\\\"meta.arithmetic.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#math\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"array_access_inline\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.array.shell\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#special_expansion\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"punctuation.section.array.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)([^]\\\\\\\\[]+)(])\\\"},\\\"array_value\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))[\\\\\\\\t ]*+(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"9\\\":{\\\"name\\\":\\\"punctuation.definition.array.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.array.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.array.shell entity.other.attribute-name.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell punctuation.definition.assignment.shell\\\"}},\\\"match\\\":\\\"((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(=)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.named-array.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.shell entity.other.attribute-name.bracket.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.named-array.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.assignment.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)(.+?)(])(=)\\\"},{\\\"include\\\":\\\"#normal_context\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"}]},\\\"assignment_statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#array_value\\\"},{\\\"include\\\":\\\"#modified_assignment_statement\\\"},{\\\"include\\\":\\\"#normal_assignment_statement\\\"}]},\\\"basic_command_name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.$1.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:continue|return|break)(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"keyword.control.$0.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\\\\\w)(?!-)\\\",\\\"name\\\":\\\"support.function.builtin.shell\\\"},{\\\"include\\\":\\\"#variable\\\"}]}},\\\"match\\\":\\\"(?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;])(?!nocorrect |nocorrect\\\\\\\\t|nocorrect$|readonly |readonly\\\\\\\\t|readonly$|function |function\\\\\\\\t|function$|foreach |foreach\\\\\\\\t|foreach$|coproc |coproc\\\\\\\\t|coproc$|logout |logout\\\\\\\\t|logout$|export |export\\\\\\\\t|export$|select |select\\\\\\\\t|select$|repeat |repeat\\\\\\\\t|repeat$|pushd |pushd\\\\\\\\t|pushd$|until |until\\\\\\\\t|until$|while |while\\\\\\\\t|while$|local |local\\\\\\\\t|local$|case |case\\\\\\\\t|case$|done |done\\\\\\\\t|done$|elif |elif\\\\\\\\t|elif$|else |else\\\\\\\\t|else$|esac |esac\\\\\\\\t|esac$|popd |popd\\\\\\\\t|popd$|then |then\\\\\\\\t|then$|time |time\\\\\\\\t|time$|for |for\\\\\\\\t|for$|end |end\\\\\\\\t|end$|fi |fi\\\\\\\\t|fi$|do |do\\\\\\\\t|do$|in |in\\\\\\\\t|in$|if |if\\\\\\\\t|if$)(?:((?<=^|[\\\\\\\\t \\\\\\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\\\\\t \\\\\\\\&;]|$))|((?![\\\\\\\"']|\\\\\\\\\\\\\\\\\\\\\\\\n?$)[^\\\\\\\\t\\\\\\\\n\\\\\\\\r !\\\\\\\"'<>]+?))(?:(?=[\\\\\\\\t ])|(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\))\\\",\\\"name\\\":\\\"meta.statement.command.name.basic.shell\\\"},\\\"block_comment\\\":{\\\"begin\\\":\\\"\\\\\\\\s*+(/\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.begin.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.end.shell\\\"}},\\\"name\\\":\\\"comment.block.shell\\\"},\\\"boolean\\\":{\\\"match\\\":\\\"\\\\\\\\b(?:true|false)\\\\\\\\b\\\",\\\"name\\\":\\\"constant.language.$0.shell\\\"},\\\"case_statement\\\":{\\\"begin\\\":\\\"\\\\\\\\b(case)\\\\\\\\b[\\\\\\\\t ]*+(.+?)[\\\\\\\\t ]*+\\\\\\\\b(in)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.case.shell\\\"},\\\"2\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.in.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\besac\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.esac.shell\\\"}},\\\"name\\\":\\\"meta.case.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.pattern.case.default.shell\\\"}},\\\"match\\\":\\\"[\\\\\\\\t ]*+(\\\\\\\\* *\\\\\\\\))\\\"},{\\\"begin\\\":\\\"(?<!\\\\\\\\))(?![\\\\\\\\t ]*+(?:esac\\\\\\\\b|$))\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=\\\\\\\\besac\\\\\\\\b)|(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.pattern.case.shell\\\"}},\\\"name\\\":\\\"meta.case.entry.pattern.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#case_statement_context\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(;;)|(?=\\\\\\\\besac\\\\\\\\b)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.statement.case.shell\\\"}},\\\"name\\\":\\\"meta.case.entry.body.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#typical_statements\\\"},{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"case_statement_context\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"variable.language.special.quantifier.star.shell keyword.operator.quantifier.star.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\",\\\"name\\\":\\\"variable.language.special.quantifier.plus.shell keyword.operator.quantifier.plus.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"variable.language.special.quantifier.question.shell keyword.operator.quantifier.question.shell punctuation.definition.arbitrary-repetition.shell punctuation.definition.regex.arbitrary-repetition.shell\\\"},{\\\"match\\\":\\\"@\\\",\\\"name\\\":\\\"variable.language.special.at.shell keyword.operator.at.shell punctuation.definition.regex.at.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.orvariable.language.special.or.shell keyword.operator.alternation.ruby.shell punctuation.definition.regex.alternation.shell punctuation.separator.regex.alternation.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"match\\\":\\\"(?<=\\\\\\\\tin| in|[\\\\\\\\t ]|;;)\\\\\\\\(\\\",\\\"name\\\":\\\"keyword.operator.pattern.case.shell\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\S)(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.definition.regex.group.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.definition.regex.group.shell\\\"}},\\\"name\\\":\\\"meta.parenthese.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#case_statement_context\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.shell\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.shell\\\"}},\\\"name\\\":\\\"string.regexp.character-class.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"}]},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[^\\\\\\\\t\\\\\\\\n )*?@\\\\\\\\[|]\\\",\\\"name\\\":\\\"string.unquoted.pattern.shell string.regexp.unquoted.shell\\\"}]},\\\"command_name_range\\\":{\\\"begin\\\":\\\"\\\\\\\\G\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\t \\\\\\\\&;|]|$|[\\\\\\\\n)`])|(?=<)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.command.name.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:continue|return|break)(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell keyword.control.$0.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)(?:unfunction|continue|autoload|unsetopt|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|suspend|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|[.:])(?!/)(?!\\\\\\\\w)(?!-)\\\",\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell support.function.builtin.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.call.shell entity.name.command.shell\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\w)(?<=\\\\\\\\G|[\\\\\\\"')}])([^\\\\\\\\t\\\\\\\\n\\\\\\\\r \\\\\\\"\\\\\\\\&');->`{|]+)\\\"},{\\\"begin\\\":\\\"(?:\\\\\\\\G|(?<![\\\\\\\\t\\\\\\\\n #\\\\\\\\&;{|]))(\\\\\\\\$?)((\\\\\\\")|('))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.statement.command.name.quoted.shell punctuation.definition.string.shell entity.name.function.call.shell entity.name.command.shell\\\"},\\\"2\\\":{},\\\"3\\\":{\\\"name\\\":\\\"meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell\\\"}},\\\"end\\\":\\\"(?<!\\\\\\\\G)(?<=\\\\\\\\2)\\\",\\\"endCaptures\\\":{},\\\"patterns\\\":[{\\\"include\\\":\\\"#continuation_of_single_quoted_command_name\\\"},{\\\"include\\\":\\\"#continuation_of_double_quoted_command_name\\\"}]},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"}]},\\\"command_statement\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+(?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;])(?!nocorrect |nocorrect\\\\\\\\t|nocorrect$|readonly |readonly\\\\\\\\t|readonly$|function |function\\\\\\\\t|function$|foreach |foreach\\\\\\\\t|foreach$|coproc |coproc\\\\\\\\t|coproc$|logout |logout\\\\\\\\t|logout$|export |export\\\\\\\\t|export$|select |select\\\\\\\\t|select$|repeat |repeat\\\\\\\\t|repeat$|pushd |pushd\\\\\\\\t|pushd$|until |until\\\\\\\\t|until$|while |while\\\\\\\\t|while$|local |local\\\\\\\\t|local$|case |case\\\\\\\\t|case$|done |done\\\\\\\\t|done$|elif |elif\\\\\\\\t|elif$|else |else\\\\\\\\t|else$|esac |esac\\\\\\\\t|esac$|popd |popd\\\\\\\\t|popd$|then |then\\\\\\\\t|then$|time |time\\\\\\\\t|time$|for |for\\\\\\\\t|for$|end |end\\\\\\\\t|end$|fi |fi\\\\\\\\t|fi$|do |do\\\\\\\\t|do$|in |in\\\\\\\\t|in$|if |if\\\\\\\\t|if$)(?!\\\\\\\\\\\\\\\\\\\\\\\\n?$)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.command.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#command_name_range\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#option\\\"},{\\\"include\\\":\\\"#argument\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#heredoc\\\"}]},\\\"comment\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.line.number-sign.shell meta.shebang.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shebang.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"comment.line.number-sign.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shell\\\"}},\\\"match\\\":\\\"(?:^|[\\\\\\\\t ]++)(?:((#!).*)|((#).*))\\\"},\\\"comments\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block_comment\\\"},{\\\"include\\\":\\\"#line_comment\\\"}]},\\\"compound-command\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"name\\\":\\\"meta.scope.logical-expression.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#logical-expression\\\"},{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\s|^)\\\\\\\\{(?=\\\\\\\\s|$)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"end\\\":\\\"(?<=^|;)\\\\\\\\s*(})\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"name\\\":\\\"meta.scope.group.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"continuation_of_double_quoted_command_name\\\":{\\\"begin\\\":\\\"\\\\\\\\G(?<=\\\\\\\")\\\",\\\"beginCaptures\\\":{},\\\"contentName\\\":\\\"meta.statement.command.name.continuation string.quoted.double entity.name.function.call entity.name.command\\\",\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.double.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell\\\"}},\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},\\\"continuation_of_single_quoted_command_name\\\":{\\\"begin\\\":\\\"\\\\\\\\G(?<=')\\\",\\\"beginCaptures\\\":{},\\\"contentName\\\":\\\"meta.statement.command.name.continuation string.quoted.single entity.name.function.call entity.name.command\\\",\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.single.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell\\\"}}},\\\"custom_command_names\\\":{\\\"patterns\\\":[]},\\\"custom_commands\\\":{\\\"patterns\\\":[]},\\\"double_quote_context\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},\\\"double_quote_escape_char\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},\\\"floating_keyword\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\t \\\\\\\\&;])(?:then|elif|else|done|end|do|if|fi)(?=[\\\\\\\\t \\\\\\\\&;]|$)\\\",\\\"name\\\":\\\"keyword.control.$0.shell\\\"}]},\\\"for_statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(for)\\\\\\\\b[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))[\\\\\\\\t ]*+\\\\\\\\b(in)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.for.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.for.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.in.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.for.in.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\b(for)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.for.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.for.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arithmetic_double\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]}]},\\\"function_definition\\\":{\\\"applyEndPatternLast\\\":1,\\\"begin\\\":\\\"[\\\\\\\\t ]*+(?:\\\\\\\\b(function)\\\\\\\\b[\\\\\\\\t ]*+([^\\\\\\\\t\\\\\\\\n\\\\\\\\r \\\\\\\"'()=]+)(?:(\\\\\\\\()[\\\\\\\\t ]*+(\\\\\\\\)))?|([^\\\\\\\\t\\\\\\\\n\\\\\\\\r \\\\\\\"'()=]+)[\\\\\\\\t ]*+(\\\\\\\\()[\\\\\\\\t ]*+(\\\\\\\\)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.function.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.function.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.arguments.shell\\\"}},\\\"end\\\":\\\"(?<=[)}])\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.function.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\G[\\\\\\\\t\\\\\\\\n ]\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"name\\\":\\\"meta.function.body.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell punctuation.section.function.definition.shell\\\"}},\\\"name\\\":\\\"meta.function.body.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"include\\\":\\\"#initial_context\\\"}]},\\\"heredoc\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"((?<!<)<<-)[\\\\\\\\t ]*+([\\\\\\\"'])[\\\\\\\\t ]*+([^\\\\\\\"']+?)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(\\\\\\\\2)(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"5\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.quoted.heredoc.indent.$3\\\",\\\"end\\\":\\\"^\\\\\\\\t*\\\\\\\\3(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.$0.shell\\\"}},\\\"patterns\\\":[]},{\\\"begin\\\":\\\"((?<!<)<<(?!<))[\\\\\\\\t ]*+([\\\\\\\"'])[\\\\\\\\t ]*+([^\\\\\\\"']+?)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(\\\\\\\\2)(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.quote.shell\\\"},\\\"5\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.quoted.heredoc.no-indent.$3\\\",\\\"end\\\":\\\"^\\\\\\\\3(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"}},\\\"patterns\\\":[]},{\\\"begin\\\":\\\"((?<!<)<<-)[\\\\\\\\t ]*+([^\\\\\\\\t \\\\\\\"']+)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.unquoted.heredoc.indent.$2\\\",\\\"end\\\":\\\"^\\\\\\\\t*\\\\\\\\2(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double_quote_escape_char\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},{\\\"begin\\\":\\\"((?<!<)<<(?!<))[\\\\\\\\t ]*+([^\\\\\\\\t \\\\\\\"']+)(?=[\\\\\\\"\\\\\\\\&';<\\\\\\\\s])(.*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.heredoc.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#redirect_fix\\\"},{\\\"include\\\":\\\"#typical_statements\\\"}]}},\\\"contentName\\\":\\\"string.unquoted.heredoc.no-indent.$2\\\",\\\"end\\\":\\\"^\\\\\\\\2(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.heredoc.delimiter.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#double_quote_escape_char\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]}]},\\\"herestring\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(<<<)\\\\\\\\s*(('))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.herestring.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.quoted.single.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"contentName\\\":\\\"string.quoted.single.shell\\\",\\\"end\\\":\\\"(')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.single.shell\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"meta.herestring.shell\\\"},{\\\"begin\\\":\\\"(<<<)\\\\\\\\s*((\\\\\\\"))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.herestring.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.quoted.double.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"contentName\\\":\\\"string.quoted.double.shell\\\",\\\"end\\\":\\\"(\\\\\\\")\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.quoted.double.shell\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"meta.herestring.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#double_quote_context\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.herestring.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.herestring.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}},\\\"match\\\":\\\"(<<<)\\\\\\\\s*(([^)\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\.)+)\\\",\\\"name\\\":\\\"meta.herestring.shell\\\"}]},\\\"initial_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#pipeline\\\"},{\\\"include\\\":\\\"#normal_statement_seperator\\\"},{\\\"include\\\":\\\"#logical_expression_double\\\"},{\\\"include\\\":\\\"#logical_expression_single\\\"},{\\\"include\\\":\\\"#assignment_statement\\\"},{\\\"include\\\":\\\"#case_statement\\\"},{\\\"include\\\":\\\"#for_statement\\\"},{\\\"include\\\":\\\"#loop\\\"},{\\\"include\\\":\\\"#function_definition\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#arithmetic_double\\\"},{\\\"include\\\":\\\"#misc_ranges\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#redirection\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#alias_statement\\\"},{\\\"include\\\":\\\"#normal_statement\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#support\\\"}]},\\\"inline_comment\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"comment.block.shell punctuation.definition.comment.begin.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.block.shell\\\"},\\\"3\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block.shell punctuation.definition.comment.end.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"comment.block.shell\\\"}]}},\\\"match\\\":\\\"(/\\\\\\\\*)((?:[^*]|\\\\\\\\*++[^/])*+(\\\\\\\\*++/))\\\"},\\\"interpolation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#arithmetic_dollar\\\"},{\\\"include\\\":\\\"#subshell_dollar\\\"},{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.evaluation.backticks.shell\\\"}},\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.evaluation.backticks.shell\\\"}},\\\"name\\\":\\\"string.interpolated.backtick.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"begin\\\":\\\"(?<=\\\\\\\\W)(?=#)(?!#\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.shell\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shell\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"name\\\":\\\"comment.line.number-sign.shell\\\"}]},{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"keyword\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(then|else|elif|fi|for|in|do|done|select|continue|esac|while|until|return)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"keyword.control.shell\\\"},{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(?:export|declare|typeset|local|readonly)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"storage.modifier.shell\\\"}]},\\\"line_comment\\\":{\\\"begin\\\":\\\"\\\\\\\\s*+(//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.shell\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\n)(?<!\\\\\\\\\\\\\\\\\\\\\\\\n)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"comment.line.double-slash.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#line_continuation_character\\\"}]},\\\"line_continuation\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?=\\\\\\\\n)\\\",\\\"name\\\":\\\"constant.character.escape.line-continuation.shell\\\"},\\\"logical-expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#arithmetic_no_dollar\\\"},{\\\"match\\\":\\\"=[=~]?|!=?|[<>]|&&|\\\\\\\\|\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.logical.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\S)-(nt|ot|ef|eq|ne|l[et]|g[et]|[GLNOSa-hknopr-uwxz])\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.operator.logical.shell\\\"}]},\\\"logical_expression_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#regex_comparison\\\"},{\\\"include\\\":\\\"#arithmetic_no_dollar\\\"},{\\\"include\\\":\\\"#logical-expression\\\"},{\\\"include\\\":\\\"#logical_expression_single\\\"},{\\\"include\\\":\\\"#logical_expression_double\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#boolean\\\"},{\\\"include\\\":\\\"#redirect_number\\\"},{\\\"include\\\":\\\"#numeric_literal\\\"},{\\\"include\\\":\\\"#pipeline\\\"},{\\\"include\\\":\\\"#normal_statement_seperator\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#support\\\"}]},\\\"logical_expression_double\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"end\\\":\\\"]]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"name\\\":\\\"meta.scope.logical-expression.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#logical_expression_context\\\"}]},\\\"logical_expression_single\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.logical-expression.shell\\\"}},\\\"name\\\":\\\"meta.scope.logical-expression.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#logical_expression_context\\\"}]},\\\"loop\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(for)\\\\\\\\s+(.+?)\\\\\\\\s+(in)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.loop.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"}]},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])done(?=[\\\\\\\\&;\\\\\\\\s]|$|\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"name\\\":\\\"meta.scope.for-in-loop.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(while|until)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])done(?=[\\\\\\\\&;\\\\\\\\s]|$|\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"name\\\":\\\"meta.scope.while-loop.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(select)\\\\\\\\s+((?:[^\\\\\\\\\\\\\\\\\\\\\\\\s]|\\\\\\\\\\\\\\\\.)+)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.loop.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(done)(?=[\\\\\\\\&;\\\\\\\\s]|$|\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.shell\\\"}},\\\"name\\\":\\\"meta.scope.select-block.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])if(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.if.shell\\\"}},\\\"end\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])fi(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.fi.shell\\\"}},\\\"name\\\":\\\"meta.scope.if-block.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"math\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#variable\\\"},{\\\"match\\\":\\\"\\\\\\\\+{1,2}|-{1,2}|[!~]|\\\\\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\\\\\&*+/^|]=|<<=|>>=\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.shell\\\"},{\\\"match\\\":\\\"0[Xx]\\\\\\\\h+\\\",\\\"name\\\":\\\"constant.numeric.hex.shell\\\"},{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.separator.semicolon.range\\\"},{\\\"match\\\":\\\"0\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.octal.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d{1,2}#[0-9@-Z_a-z]+\\\",\\\"name\\\":\\\"constant.numeric.other.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.integer.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)[0-9A-Z_a-z]+(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"variable.other.normal.shell\\\"}]},\\\"math_operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\+{1,2}|-{1,2}|[!~]|\\\\\\\\*{1,2}|[%/]|<[<=]?|>[=>]?|==|!=|^|\\\\\\\\|{1,2}|&{1,2}|[,:=?]|[-%\\\\\\\\&*+/^|]=|<<=|>>=\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.shell\\\"},{\\\"match\\\":\\\"0[Xx]\\\\\\\\h+\\\",\\\"name\\\":\\\"constant.numeric.hex.shell\\\"},{\\\"match\\\":\\\"0\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.octal.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d{1,2}#[0-9@-Z_a-z]+\\\",\\\"name\\\":\\\"constant.numeric.other.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\d+\\\",\\\"name\\\":\\\"constant.numeric.integer.shell\\\"}]},\\\"misc_ranges\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#logical_expression_single\\\"},{\\\"include\\\":\\\"#logical_expression_double\\\"},{\\\"include\\\":\\\"#subshell_dollar\\\"},{\\\"begin\\\":\\\"(?<![^\\\\\\\\t ])(\\\\\\\\{)(?![$\\\\\\\\w])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.shell\\\"}},\\\"name\\\":\\\"meta.scope.group.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"modified_assignment_statement\\\":{\\\"begin\\\":\\\"(?<=^|[\\\\\\\\t \\\\\\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\\\\\t \\\\\\\\&;]|$)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.modifier.$0.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.shell meta.expression.assignment.modified.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"(?<!\\\\\\\\w)-\\\\\\\\w+\\\\\\\\b\\\",\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"},{\\\"include\\\":\\\"#array_value\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"9\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.hex.shell\\\"},\\\"10\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.octal.shell\\\"},\\\"11\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.other.shell\\\"},\\\"12\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.decimal.shell\\\"},\\\"13\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.version.shell\\\"},\\\"14\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"}},\\\"match\\\":\\\"((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))?(?:(?<=[\\\\\\\\t =]|^|[(\\\\\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\\\\\h+)|(0\\\\\\\\d+))|(\\\\\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\\\\\d+\\\\\\\\.\\\\\\\\d+))|(-?\\\\\\\\d+(?:\\\\\\\\.\\\\\\\\d+)+))|(-?\\\\\\\\d+))(?=[\\\\\\\\t ]|$|[);}]))?\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"modifiers\\\":{\\\"match\\\":\\\"(?<=^|[\\\\\\\\t \\\\\\\\&;])(?:readonly|declare|typeset|export|local)(?=[\\\\\\\\t \\\\\\\\&;]|$)\\\",\\\"name\\\":\\\"storage.modifier.$0.shell\\\"},\\\"normal_assignment_statement\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]*+((?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w))(?:(\\\\\\\\[)((?:(?:\\\\\\\\$?(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)|@)|\\\\\\\\*)|(-?\\\\\\\\d+))(]))?(?:(?:(=)|(\\\\\\\\+=))|(-=))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.assignment.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.definition.array.access.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.shell\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"},\\\"8\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.expression.assignment.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#normal_assignment_statement\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\t ])(?![\\\\\\\\t ]|\\\\\\\\w+=)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.command.env.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#command_name_range\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#option\\\"},{\\\"include\\\":\\\"#argument\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"include\\\":\\\"#simple_unquoted\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"normal_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#pipeline\\\"},{\\\"include\\\":\\\"#normal_statement_seperator\\\"},{\\\"include\\\":\\\"#misc_ranges\\\"},{\\\"include\\\":\\\"#boolean\\\"},{\\\"include\\\":\\\"#redirect_number\\\"},{\\\"include\\\":\\\"#numeric_literal\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#redirection\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#support\\\"},{\\\"include\\\":\\\"#parenthese\\\"}]},\\\"normal_statement\\\":{\\\"begin\\\":\\\"(?!^[\\\\\\\\t ]*+$)(?:(?<=(?:^until| until|\\\\\\\\tuntil|^while| while|\\\\\\\\twhile|^elif| elif|\\\\\\\\telif|^else| else|\\\\\\\\telse|^then| then|\\\\\\\\tthen|^do| do|\\\\\\\\tdo|^if| if|\\\\\\\\tif) )|(?<=^|[!\\\\\\\\&(;`{|]))[\\\\\\\\t ]*+(?!nocorrect\\\\\\\\W|nocorrect\\\\\\\\$|function\\\\\\\\W|function\\\\\\\\$|foreach\\\\\\\\W|foreach\\\\\\\\$|repeat\\\\\\\\W|repeat\\\\\\\\$|logout\\\\\\\\W|logout\\\\\\\\$|coproc\\\\\\\\W|coproc\\\\\\\\$|select\\\\\\\\W|select\\\\\\\\$|while\\\\\\\\W|while\\\\\\\\$|pushd\\\\\\\\W|pushd\\\\\\\\$|until\\\\\\\\W|until\\\\\\\\$|case\\\\\\\\W|case\\\\\\\\$|done\\\\\\\\W|done\\\\\\\\$|elif\\\\\\\\W|elif\\\\\\\\$|else\\\\\\\\W|else\\\\\\\\$|esac\\\\\\\\W|esac\\\\\\\\$|popd\\\\\\\\W|popd\\\\\\\\$|then\\\\\\\\W|then\\\\\\\\$|time\\\\\\\\W|time\\\\\\\\$|for\\\\\\\\W|for\\\\\\\\$|end\\\\\\\\W|end\\\\\\\\$|fi\\\\\\\\W|fi\\\\\\\\$|do\\\\\\\\W|do\\\\\\\\$|in\\\\\\\\W|in\\\\\\\\$|if\\\\\\\\W|if\\\\\\\\$)\\\",\\\"beginCaptures\\\":{},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.statement.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#typical_statements\\\"}]},\\\"normal_statement_seperator\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.terminator.statement.semicolon.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.statement.and.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.statement.or.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.statement.background.shell\\\"}},\\\"match\\\":\\\"(?:(?:(;)|(&&))|(\\\\\\\\|\\\\\\\\|))|(&)\\\"},\\\"numeric_literal\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.hex.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.octal.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.other.shell\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.decimal.shell\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.version.shell\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.numeric.shell constant.numeric.integer.shell\\\"}},\\\"match\\\":\\\"(?<=[\\\\\\\\t =]|^|[(\\\\\\\\[{])(?:(?:(?:(?:(?:(0[Xx]\\\\\\\\h+)|(0\\\\\\\\d+))|(\\\\\\\\d{1,2}#[0-9@-Z_a-z]+))|(-?\\\\\\\\d+\\\\\\\\.\\\\\\\\d+))|(-?\\\\\\\\d+(?:\\\\\\\\.\\\\\\\\d+)+))|(-?\\\\\\\\d+))(?=[\\\\\\\\t ]|$|[);}])\\\"},\\\"option\\\":{\\\"begin\\\":\\\"[\\\\\\\\t ]++(-)((?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.dash.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"}},\\\"contentName\\\":\\\"string.unquoted.argument constant.other.option\\\",\\\"end\\\":\\\"(?=[\\\\\\\\t ])|(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"patterns\\\":[{\\\"include\\\":\\\"#option_context\\\"}]},\\\"option_context\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#misc_ranges\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"},{\\\"include\\\":\\\"#heredoc\\\"},{\\\"include\\\":\\\"#herestring\\\"},{\\\"include\\\":\\\"#redirection\\\"},{\\\"include\\\":\\\"#pathname\\\"},{\\\"include\\\":\\\"#floating_keyword\\\"},{\\\"include\\\":\\\"#support\\\"}]},\\\"parenthese\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.parenthese.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.parenthese.shell\\\"}},\\\"name\\\":\\\"meta.parenthese.group.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"pathname\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=[:=\\\\\\\\s]|^)~\\\",\\\"name\\\":\\\"keyword.operator.tilde.shell\\\"},{\\\"match\\\":\\\"[*?]\\\",\\\"name\\\":\\\"keyword.operator.glob.shell\\\"},{\\\"begin\\\":\\\"([!*+?@])(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.extglob.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.extglob.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.extglob.shell\\\"}},\\\"name\\\":\\\"meta.structure.extglob.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"pipeline\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])(time)(?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"keyword.other.shell\\\"},{\\\"match\\\":\\\"[!|]\\\",\\\"name\\\":\\\"keyword.operator.pipe.shell\\\"}]},\\\"redirect_fix\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.redirect.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell\\\"}},\\\"match\\\":\\\"(>>?)[\\\\\\\\t ]*+([^\\\\\\\\t\\\\\\\\n \\\\\\\"$\\\\\\\\&-);<>\\\\\\\\\\\\\\\\`|]+)\\\"},\\\"redirect_number\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.redirect.stdout.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.redirect.stderr.shell\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.redirect.$3.shell\\\"}},\\\"match\\\":\\\"(?<=[\\\\\\\\t ])(?:(1)|(2)|(\\\\\\\\d+))(?=>)\\\"},\\\"redirection\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"[<>]\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.interpolated.process-substitution.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#initial_context\\\"}]},{\\\"match\\\":\\\"(?<![<>])(&>|\\\\\\\\d*>&\\\\\\\\d*|\\\\\\\\d*(>>|[<>])|\\\\\\\\d*<&|\\\\\\\\d*<>)(?![<>])\\\",\\\"name\\\":\\\"keyword.operator.redirect.shell\\\"}]},\\\"regex_comparison\\\":{\\\"match\\\":\\\"=~\\\",\\\"name\\\":\\\"keyword.operator.logical.regex.shell\\\"},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\".+\\\"}]},\\\"simple_options\\\":{\\\"captures\\\":{\\\"0\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.dash.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.argument.shell constant.other.option.shell\\\"}},\\\"match\\\":\\\"[\\\\\\\\t ]++(-)(\\\\\\\\w+)\\\"}]}},\\\"match\\\":\\\"(?:[\\\\\\\\t ]++-\\\\\\\\w+)*\\\"},\\\"simple_unquoted\\\":{\\\"match\\\":\\\"[^\\\\\\\\t\\\\\\\\n \\\\\\\"$\\\\\\\\&-);<>\\\\\\\\\\\\\\\\`|]\\\",\\\"name\\\":\\\"string.unquoted.shell\\\"},\\\"special_expansion\\\":{\\\"match\\\":\\\"!|:[-=?]?|[*@]|##?|%%|[%/]\\\",\\\"name\\\":\\\"keyword.operator.expansion.shell\\\"},\\\"start_of_command\\\":{\\\"match\\\":\\\"[\\\\\\\\t ]*+(?![\\\\\\\\n!#\\\\\\\\&()<>\\\\\\\\[{|]|$|[\\\\\\\\t ;])(?!nocorrect |nocorrect\\\\\\\\t|nocorrect$|readonly |readonly\\\\\\\\t|readonly$|function |function\\\\\\\\t|function$|foreach |foreach\\\\\\\\t|foreach$|coproc |coproc\\\\\\\\t|coproc$|logout |logout\\\\\\\\t|logout$|export |export\\\\\\\\t|export$|select |select\\\\\\\\t|select$|repeat |repeat\\\\\\\\t|repeat$|pushd |pushd\\\\\\\\t|pushd$|until |until\\\\\\\\t|until$|while |while\\\\\\\\t|while$|local |local\\\\\\\\t|local$|case |case\\\\\\\\t|case$|done |done\\\\\\\\t|done$|elif |elif\\\\\\\\t|elif$|else |else\\\\\\\\t|else$|esac |esac\\\\\\\\t|esac$|popd |popd\\\\\\\\t|popd$|then |then\\\\\\\\t|then$|time |time\\\\\\\\t|time$|for |for\\\\\\\\t|for$|end |end\\\\\\\\t|end$|fi |fi\\\\\\\\t|fi$|do |do\\\\\\\\t|do$|in |in\\\\\\\\t|in$|if |if\\\\\\\\t|if$)(?!\\\\\\\\\\\\\\\\\\\\\\\\n?$)\\\"},\\\"string\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.quoted.single.shell\\\"},{\\\"begin\\\":\\\"\\\\\\\\$?\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.quoted.double.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[\\\\\\\\n\\\\\\\"$\\\\\\\\\\\\\\\\`]\\\",\\\"name\\\":\\\"constant.character.escape.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#interpolation\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\$'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.shell\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.shell\\\"}},\\\"name\\\":\\\"string.quoted.single.dollar.shell\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\['\\\\\\\\\\\\\\\\abefnrtv]\\\",\\\"name\\\":\\\"constant.character.escape.ansi-c.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[0-9]{3}\\\\\\\"\\\",\\\"name\\\":\\\"constant.character.escape.octal.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\x\\\\\\\\h{2}\\\\\\\"\\\",\\\"name\\\":\\\"constant.character.escape.hex.shell\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c.\\\\\\\"\\\",\\\"name\\\":\\\"constant.character.escape.control-char.shell\\\"}]}]},\\\"subshell_dollar\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.subshell.single.shell\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.subshell.single.shell\\\"}},\\\"name\\\":\\\"meta.scope.subshell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parenthese\\\"},{\\\"include\\\":\\\"#initial_context\\\"}]}]},\\\"support\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<=^|[\\\\\\\\&;\\\\\\\\s])[.:](?=[\\\\\\\\&;\\\\\\\\s]|$)\\\",\\\"name\\\":\\\"support.function.builtin.shell\\\"}]},\\\"typical_statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#assignment_statement\\\"},{\\\"include\\\":\\\"#case_statement\\\"},{\\\"include\\\":\\\"#for_statement\\\"},{\\\"include\\\":\\\"#while_statement\\\"},{\\\"include\\\":\\\"#function_definition\\\"},{\\\"include\\\":\\\"#command_statement\\\"},{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#arithmetic_double\\\"},{\\\"include\\\":\\\"#normal_context\\\"}]},\\\"variable\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.parameter.positional.all.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.positional.all.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)(@(?!\\\\\\\\w))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.parameter.positional.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.positional.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)([0-9](?!\\\\\\\\w))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.language.special.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.language.special.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)([-!#$*0?_](?!\\\\\\\\w))\\\"},{\\\"begin\\\":\\\"(\\\\\\\\$)(\\\\\\\\{)[\\\\\\\\t ]*+(?=\\\\\\\\d)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.parameter.positional.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell variable.parameter.positional.shell\\\"}},\\\"contentName\\\":\\\"meta.parameter-expansion\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell variable.parameter.positional.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#special_expansion\\\"},{\\\"include\\\":\\\"#array_access_inline\\\"},{\\\"match\\\":\\\"[0-9]+\\\",\\\"name\\\":\\\"variable.parameter.positional.shell\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"variable.other.normal.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\$)(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell\\\"}},\\\"contentName\\\":\\\"meta.parameter-expansion\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#special_expansion\\\"},{\\\"include\\\":\\\"#array_access_inline\\\"},{\\\"match\\\":\\\"(?<!\\\\\\\\w)[-0-9A-Z_a-z]+(?!\\\\\\\\w)\\\",\\\"name\\\":\\\"variable.other.normal.shell\\\"},{\\\"include\\\":\\\"#variable\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.variable.shell variable.other.normal.shell\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.normal.shell\\\"}},\\\"match\\\":\\\"(\\\\\\\\$)(\\\\\\\\w+(?!\\\\\\\\w))\\\"}]},\\\"while_statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\b(while)\\\\\\\\b\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.while.shell\\\"}},\\\"end\\\":\\\"(?=[\\\\\\\\n\\\\\\\\&);`{|}]|[\\\\\\\\t ]*#|])(?<!\\\\\\\\\\\\\\\\)\\\",\\\"endCaptures\\\":{},\\\"name\\\":\\\"meta.while.shell\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#line_continuation\\\"},{\\\"include\\\":\\\"#math_operators\\\"},{\\\"include\\\":\\\"#option\\\"},{\\\"include\\\":\\\"#simple_unquoted\\\"},{\\\"include\\\":\\\"#normal_context\\\"},{\\\"include\\\":\\\"#string\\\"}]}]}},\\\"scopeName\\\":\\\"source.shell\\\",\\\"aliases\\\":[\\\"bash\\\",\\\"sh\\\",\\\"shell\\\",\\\"zsh\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"SQL\\\",\\\"name\\\":\\\"sql\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"((?<!@)@)\\\\\\\\b(\\\\\\\\w+)\\\\\\\\b\\\",\\\"name\\\":\\\"text.variable\\\"},{\\\"match\\\":\\\"(\\\\\\\\[)[^]]*(])\\\",\\\"name\\\":\\\"text.bracketed\\\"},{\\\"include\\\":\\\"#comments\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.sql\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.function.sql\\\"}},\\\"match\\\":\\\"(?i:^\\\\\\\\s*(create(?:\\\\\\\\s+or\\\\\\\\s+replace)?)\\\\\\\\s+(aggregate|conversion|database|domain|function|group|(unique\\\\\\\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\\\\\s+)([\\\\\\\"'`]?)(\\\\\\\\w+)\\\\\\\\4\\\",\\\"name\\\":\\\"meta.create.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.sql\\\"}},\\\"match\\\":\\\"(?i:^\\\\\\\\s*(drop)\\\\\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))\\\",\\\"name\\\":\\\"meta.drop.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.table.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.sql\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.other.cascade.sql\\\"}},\\\"match\\\":\\\"(?i:\\\\\\\\s*(drop)\\\\\\\\s+(table)\\\\\\\\s+(\\\\\\\\w+)(\\\\\\\\s+cascade)?\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.drop.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.create.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.table.sql\\\"}},\\\"match\\\":\\\"(?i:^\\\\\\\\s*(alter)\\\\\\\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\\\\\\\s+)\\\",\\\"name\\\":\\\"meta.alter.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"8\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"10\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"12\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.sql\\\"},\\\"14\\\":{\\\"name\\\":\\\"constant.numeric.sql\\\"},\\\"15\\\":{\\\"name\\\":\\\"storage.type.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\\\\\\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\\\\\\\b|\\\\\\\\b(bit\\\\\\\\svarying|character\\\\\\\\s(?:varying)?|tinyint|var\\\\\\\\schar|float|interval)\\\\\\\\((\\\\\\\\d+)\\\\\\\\)|\\\\\\\\b(char|number|varchar\\\\\\\\d?)\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+)\\\\\\\\))?|\\\\\\\\b(numeric|decimal)\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+),(\\\\\\\\d+)\\\\\\\\))?|\\\\\\\\b(times?)\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+)\\\\\\\\))?(\\\\\\\\swith(?:out)?\\\\\\\\stime\\\\\\\\szone\\\\\\\\b)?|\\\\\\\\b(timestamp)(s|tz)?\\\\\\\\b(?:\\\\\\\\((\\\\\\\\d+)\\\\\\\\))?(\\\\\\\\s(with(?:|out))\\\\\\\\stime\\\\\\\\szone\\\\\\\\b)?\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b((?:primary|foreign)\\\\\\\\s+key|references|on\\\\\\\\s+(delete|update)(\\\\\\\\s+cascade)?|nocheck|check|constraint|collate|default)\\\\\\\\b)\\\",\\\"name\\\":\\\"storage.modifier.sql\\\"},{\\\"match\\\":\\\"\\\\\\\\b\\\\\\\\d+\\\\\\\\b\\\",\\\"name\\\":\\\"constant.numeric.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(select(\\\\\\\\s+(all|distinct))?|insert\\\\\\\\s+(ignore\\\\\\\\s+)?into|update|delete|from|set|where|group\\\\\\\\s+by|or|like|and|union(\\\\\\\\s+all)?|having|order\\\\\\\\s+by|limit|cross\\\\\\\\s+join|join|straight_join|(inner|(left|right|full)(\\\\\\\\s+outer)?)\\\\\\\\s+join|natural(\\\\\\\\s+(inner|(left|right|full)(\\\\\\\\s+outer)?))?\\\\\\\\s+join)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.DML.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(on|off|((is\\\\\\\\s+)?not\\\\\\\\s+)?null)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.DDL.create.II.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\bvalues\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.DML.II.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(begin(\\\\\\\\s+work)?|start\\\\\\\\s+transaction|commit(\\\\\\\\s+work)?|rollback(\\\\\\\\s+work)?)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.LUW.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\b(grant(\\\\\\\\swith\\\\\\\\sgrant\\\\\\\\soption)?|revoke)\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.authorization.sql\\\"},{\\\"match\\\":\\\"(?i:\\\\\\\\bin\\\\\\\\b)\\\",\\\"name\\\":\\\"keyword.other.data-integrity.sql\\\"},{\\\"match\\\":\\\"(?i:^\\\\\\\\s*(comment\\\\\\\\s+on\\\\\\\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\\\\\\\s+)\\\",\\\"name\\\":\\\"keyword.other.object-comments.sql\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\bAS\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.alias.sql\\\"},{\\\"match\\\":\\\"(?i)\\\\\\\\b(DESC|ASC)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.order.sql\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.operator.star.sql\\\"},{\\\"match\\\":\\\"[!<>]?=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.comparison.sql\\\"},{\\\"match\\\":\\\"[-+/]\\\",\\\"name\\\":\\\"keyword.operator.math.sql\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.concatenator.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.aggregate.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(approx_count_distinct|approx_percentile_cont|approx_percentile_disc|avg|checksum_agg|count|count_big|group|grouping|grouping_id|max|min|sum|stdevp??|varp??)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.analytic.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.bitmanipulation.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b((?:bit_coun|get_bi|left_shif|right_shif|set_bi)t)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.conversion.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.collation.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(collationproperty|tertiary_weights)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.cryptographic.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.cursor.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(cursor_status)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.datetime.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|datetrunc|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.datatype.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.expression.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(coalesce|nullif)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.globalvar.sql\\\"}},\\\"match\\\":\\\"(?<!@)@@(?i)\\\\\\\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.json.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.logical.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(choose|iif|greatest|least)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.mathematical.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.metadata.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.ranking.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(rank|dense_rank|ntile|row_number)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.rowset.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.security.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.string.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.system.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.textimage.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(patindex|textptr|textvalid)\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.function.vector.sql\\\"}},\\\"match\\\":\\\"(?i)\\\\\\\\b(vector_(?:distance|norm|normalize))\\\\\\\\b\\\\\\\\s*\\\\\\\\(\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.other.database-name.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.other.table-name.sql\\\"}},\\\"match\\\":\\\"(\\\\\\\\w+?)\\\\\\\\.(\\\\\\\\w+)\\\"},{\\\"include\\\":\\\"#strings\\\"},{\\\"include\\\":\\\"#regexps\\\"},{\\\"match\\\":\\\"\\\\\\\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_drop|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blockers|blocksize|bmk|both|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|checksum|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|connection|containment|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\\\\\\\\\\\\\s+or\\\\\\\\\\\\\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime2??|datetimeoffset|day(s)?|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_fulltext_language|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filegrowth|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|for|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hour(s)?|http|identity|identity_value|if|ifnull|ignore|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|incremental|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|leading|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|log|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|match|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minute(s)?|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|month|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|nested_triggers|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|nulls|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|quarter|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replace|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|respect|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|scalar|schema|schemabinding|scoped|scroll|scroll_locks|sddl|second|secexpr|seconds|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|sessions??|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|shortest_path|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablockx??|take|tape|target|target_index|target_partition|target_recovery_time|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|top??|torn_page_detection|track_columns_updated|trailing|tran|transaction|transfer|transform_noise_words|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|two_digit_year_cutoff|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|values??|varbinary|varchar|vector|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|wait_at_low_priority|waitfor|webmethod|week|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|windows??|with|within|within group|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|year|zone)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.other.sql\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.section.scope.begin.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.section.scope.end.sql\\\"}},\\\"match\\\":\\\"(\\\\\\\\()(\\\\\\\\))\\\",\\\"name\\\":\\\"meta.block.sql\\\"}],\\\"repository\\\":{\\\"comment-block\\\":{\\\"begin\\\":\\\"/\\\\\\\\*\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.sql\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"name\\\":\\\"comment.block\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment-block\\\"}]},\\\"comments\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=--)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.sql\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"--\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.sql\\\"}},\\\"end\\\":\\\"\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.double-dash.sql\\\"}]},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?(?=#)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.sql\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[]},{\\\"include\\\":\\\"#comment-block\\\"}]},\\\"regexps\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/(?=\\\\\\\\S.*/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.regexp.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\/\\\",\\\"name\\\":\\\"constant.character.escape.slash.sql\\\"}]},{\\\"begin\\\":\\\"%r\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.regexp.modr.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"}]}]},\\\"string_escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.sql\\\"},\\\"string_interpolation\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(#\\\\\\\\{)([^}]*)(})\\\",\\\"name\\\":\\\"string.interpolated.sql\\\"},\\\"strings\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(N)?(')[^']*(')\\\",\\\"name\\\":\\\"string.quoted.single.sql\\\"},{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.quoted.single.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_escape\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(`)[^\\\\\\\\\\\\\\\\`]*(`)\\\",\\\"name\\\":\\\"string.quoted.other.backtick.sql\\\"},{\\\"begin\\\":\\\"`\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.quoted.other.backtick.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_escape\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"match\\\":\\\"(\\\\\\\")[^\\\\\\\"#]*(\\\\\\\")\\\",\\\"name\\\":\\\"string.quoted.double.sql\\\"},{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.quoted.double.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"}]},{\\\"begin\\\":\\\"%\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.sql\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.sql\\\"}},\\\"name\\\":\\\"string.other.quoted.brackets.sql\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string_interpolation\\\"}]}]}},\\\"scopeName\\\":\\\"source.sql\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"TSX\\\",\\\"name\\\":\\\"tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"name\\\":\\\"meta.array.literal.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.tsx\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.tsx\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.tsx\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.tsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"name\\\":\\\"comment.block.documentation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"name\\\":\\\"comment.block.tsx\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.tsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.tsx\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.tsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.tsx\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.tsx\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.block.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.tsx\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.readwrite.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.tsx\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.tsx\\\"}},\\\"name\\\":\\\"meta.tag.tsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.tsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.tsx\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.tsx\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.tsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.tsx\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.tsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.tsx\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.tsx\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.tsx\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.tsx\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.tsx\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.tsx\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.tsx\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.tsx\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.tsx\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.tsx\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.tsx entity.name.function.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.tsx variable.object.property.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.tsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.tsx punctuation.accessor.optional.tsx\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.tsx keyword.operator.definiteassignment.tsx\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tsx\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.tsx entity.name.function.tsx\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.tsx entity.name.function.tsx\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.tsx entity.name.function.tsx\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.tsx\\\"}},\\\"name\\\":\\\"meta.parameters.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.tsx\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.tsx\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.tsx\\\"}},\\\"name\\\":\\\"string.regexp.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.tsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"name\\\":\\\"meta.import-equals.external.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.tsx\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.block.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.tsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.tsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.tsx\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.tsx\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.tsx\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.tsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.tsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"jsx\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes-in-expression\\\"},{\\\"include\\\":\\\"#jsx-tag-in-expression\\\"}]},\\\"jsx-children\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"},{\\\"include\\\":\\\"#jsx-tag\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-entities\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.entity.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.entity.tsx\\\"}},\\\"match\\\":\\\"(&)([0-9A-Za-z]+|#[0-9]+|#x\\\\\\\\h+)(;)\\\",\\\"name\\\":\\\"constant.character.entity.tsx\\\"}]},\\\"jsx-evaluated-code\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.expression.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.section.embedded.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"jsx-string-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"}},\\\"name\\\":\\\"string.quoted.double.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-string-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"'\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"}},\\\"name\\\":\\\"string.quoted.single.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-entities\\\"}]},\\\"jsx-tag\\\":{\\\"begin\\\":\\\"(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(/>)|(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"name\\\":\\\"meta.tag.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"}},\\\"end\\\":\\\"(?=/?>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes\\\"}]},{\\\"begin\\\":\\\"(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.tsx\\\",\\\"end\\\":\\\"(?=</)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]}]},\\\"jsx-tag-attribute-assignment\\\":{\\\"match\\\":\\\"=(?=\\\\\\\\s*(?:[\\\\\\\"'{]|/\\\\\\\\*|//|\\\\\\\\n))\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"jsx-tag-attribute-name\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.attribute-name.namespace.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.other.attribute-name.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(:))?([$_[:alpha:]][-$_[:alnum:]]*)(?=[=\\\\\\\\s]|/?>|/\\\\\\\\*|//)\\\"},\\\"jsx-tag-attributes\\\":{\\\"begin\\\":\\\"\\\\\\\\s+\\\",\\\"end\\\":\\\"(?=/?>)\\\",\\\"name\\\":\\\"meta.tag.attributes.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-name\\\"},{\\\"include\\\":\\\"#jsx-tag-attribute-assignment\\\"},{\\\"include\\\":\\\"#jsx-string-double-quoted\\\"},{\\\"include\\\":\\\"#jsx-string-single-quoted\\\"},{\\\"include\\\":\\\"#jsx-evaluated-code\\\"},{\\\"include\\\":\\\"#jsx-tag-attributes-illegal\\\"}]},\\\"jsx-tag-attributes-illegal\\\":{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.attribute.tsx\\\"},\\\"jsx-tag-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?!<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*((\\\\\\\\s+extends\\\\\\\\s+[^=>])|,))(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))(?=((<\\\\\\\\s*)|(\\\\\\\\s+))(?!\\\\\\\\?)|/?>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag\\\"}]},\\\"jsx-tag-without-attributes\\\":{\\\"begin\\\":\\\"(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"contentName\\\":\\\"meta.jsx.children.tsx\\\",\\\"end\\\":\\\"(</)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.begin.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.namespace.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.namespace.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.tag.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.class.component.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.tag.end.tsx\\\"}},\\\"name\\\":\\\"meta.tag.without-attributes.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-children\\\"}]},\\\"jsx-tag-without-attributes-in-expression\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[(*,:=>?\\\\\\\\[{]|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?|\\\\\\\\*/|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^default|[^$._[:alnum:]]default|^yield|[^$._[:alnum:]]yield|^)\\\\\\\\s*(?=(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"end\\\":\\\"(?!(<)\\\\\\\\s*(?:([$_[:alpha:]][-$._[:alnum:]]*)(?<![-.])(:))?((?:[a-z][0-9a-z]*|([$_[:alpha:]][-$._[:alnum:]]*))(?<![-.]))?\\\\\\\\s*(>))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsx-tag-without-attributes\\\"}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.tsx entity.name.function.tsx\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.tsx\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.tsx\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.tsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.tsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.tsx\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.tsx\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.tsx\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.tsx\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.objectliteral.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.tsx\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.tsx meta.object-literal.key.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.tsx meta.object-literal.key.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.tsx meta.object-literal.key.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.tsx\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.tsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.tsx\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.tsx punctuation.separator.key-value.tsx\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx\\\"}},\\\"contentName\\\":\\\"meta.arrow.tsx meta.return.type.arrow.tsx\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.tsx\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.tsx\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.tsx\\\"}},\\\"name\\\":\\\"string.quoted.double.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.tsx\\\"}},\\\"name\\\":\\\"string.quoted.single.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.tsx\\\"}},\\\"name\\\":\\\"string.regexp.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.tsx\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.tsx\\\"}},\\\"name\\\":\\\"string.regexp.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.tsx\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.tsx\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.tsx\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.tsx\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.tsx\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.tsx\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.tsx\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"switch-statement.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"name\\\":\\\"switch-expression.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.tsx\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.tsx punctuation.definition.block.tsx\\\"}},\\\"contentName\\\":\\\"meta.block.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.tsx punctuation.definition.block.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.begin.tsx\\\"}},\\\"contentName\\\":\\\"string.template.tsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.tsx\\\"}},\\\"name\\\":\\\"meta.template.expression.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.begin.tsx\\\"}},\\\"contentName\\\":\\\"string.template.tsx\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.tsx punctuation.definition.string.template.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.tsx\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.tsx\\\"}},\\\"name\\\":\\\"meta.template.expression.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.tsx\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.tsx\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.tsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.tsx\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.tsx storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.tsx keyword.control.new.tsx\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.tsx\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.tsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.tsx\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.tsx\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.tsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.tsx\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.tsx\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.tsx\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.tsx\\\"}},\\\"name\\\":\\\"meta.object.type.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.tsx\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.tsx\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.tsx\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.tsx\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.tsx\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.tsx\\\"}},\\\"name\\\":\\\"meta.type.parameters.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.tsx\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.tsx\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.tsx\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.tsx\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.tsx variable.language.this.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.tsx\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.tsx\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.tsx\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.tsx\\\"}},\\\"name\\\":\\\"meta.type.tuple.tsx\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.tsx\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.tsx\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.tsx\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.tsx\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.tsx\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.tsx\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.tsx\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.tsx\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|(\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|(<\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+extends\\\\\\\\s*[^=>])|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx entity.name.function.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.constant.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.tsx variable.other.readwrite.tsx\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.tsx\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.tsx\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.tsx\\\"}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"TypeScript\\\",\\\"name\\\":\\\"typescript\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#directives\\\"},{\\\"include\\\":\\\"#statements\\\"},{\\\"include\\\":\\\"#shebang\\\"}],\\\"repository\\\":{\\\"access-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"after-operator-block-as-object-literal\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=[!(+,:=>?\\\\\\\\[]|^await|[^$._[:alnum:]]await|^return|[^$._[:alnum:]]return|^yield|[^$._[:alnum:]]yield|^throw|[^$._[:alnum:]]throw|^in|[^$._[:alnum:]]in|^of|[^$._[:alnum:]]of|^typeof|[^$._[:alnum:]]typeof|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.objectliteral.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#binding-element-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"array-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\s*(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"name\\\":\\\"meta.array.literal.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"arrow-function\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async)\\\\\\\\s+)?([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?==>)\\\",\\\"name\\\":\\\"meta.arrow.ts\\\"},{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(async))?((?<![]!)}])\\\\\\\\s*(?=((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.arrow.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#arrow-return-type\\\"},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.ts\\\"}},\\\"end\\\":\\\"((?<=[}\\\\\\\\S])(?<!=>)|((?!\\\\\\\\{)(?=\\\\\\\\S)))(?!/[*/])\\\",\\\"name\\\":\\\"meta.arrow.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"}]}]},\\\"arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.return.type.arrow.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"arrow-return-type-body\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"async-modifier\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(async)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"boolean-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))true(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.true.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))false(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.boolean.false.ts\\\"}]},\\\"brackets\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"end\\\":\\\"]|(?=\\\\\\\\*/)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"cast\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\s*(<)\\\\\\\\s*(const)\\\\\\\\s*(>)\\\",\\\"name\\\":\\\"cast.expr.ts\\\"},{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--)(?<=^return|[^$._[:alnum:]]return|^throw|[^$._[:alnum:]]throw|^yield|[^$._[:alnum:]]yield|^await|[^$._[:alnum:]]await|^default|[^$._[:alnum:]]default|[\\\\\\\\&(*,:=>?^|]|[^$_[:alnum:]](?:\\\\\\\\+\\\\\\\\+|--)|[^+]\\\\\\\\+|[^-]-)\\\\\\\\s*(<)(?!<?=)(?!\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"name\\\":\\\"cast.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?<=^)\\\\\\\\s*(<)(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.angle.ts\\\"}},\\\"name\\\":\\\"cast.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"class-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(class)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.class.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-declaration-or-expression-patterns\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.class.ts\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"class-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(class)\\\\\\\\b(?=\\\\\\\\s+|[<{]|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.class.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#class-declaration-or-expression-patterns\\\"}]},\\\"class-or-interface-body\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*\\\",\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;}\\\\\\\\s]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#access-modifier\\\"},{\\\"include\\\":\\\"#property-accessor\\\"},{\\\"include\\\":\\\"#async-modifier\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]},\\\"class-or-interface-heritage\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))\\\\\\\\b(extends|implements)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\{)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*)*\\\\\\\\s*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.other.inherited-class.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"comment\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"/\\\\\\\\*\\\\\\\\*(?!/)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"name\\\":\\\"comment.block.documentation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#docblock\\\"}]},{\\\"begin\\\":\\\"(/\\\\\\\\*)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|(\\\\\\\\*/)))?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\*/\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"name\\\":\\\"comment.block.ts\\\"},{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.ts\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.ts\\\",\\\"end\\\":\\\"(?=$)\\\"}]},\\\"control-statement\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#switch-statement\\\"},{\\\"include\\\":\\\"#for-loop\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(catch|finally|throw|try)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.trycatch.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.loop.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|goto)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(break|continue|do|goto|while)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.loop.ts\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(return)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.flow.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default|switch)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.switch.ts\\\"},{\\\"include\\\":\\\"#if-statement\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(else|if)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.conditional.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(with)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.with.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(package)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(debugger)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.other.debugger.ts\\\"}]},\\\"decl-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.block.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},\\\"declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#function-declaration\\\"},{\\\"include\\\":\\\"#class-declaration\\\"},{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#enum-declaration\\\"},{\\\"include\\\":\\\"#namespace-declaration\\\"},{\\\"include\\\":\\\"#type-alias-declaration\\\"},{\\\"include\\\":\\\"#import-equals-declaration\\\"},{\\\"include\\\":\\\"#import-declaration\\\"},{\\\"include\\\":\\\"#export-declaration\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(declare|export)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.ts\\\"}]},\\\"decorator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))@\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.decorator.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s)\\\",\\\"name\\\":\\\"meta.decorator.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"destructuring-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern-const\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-parameter\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"name\\\":\\\"meta.parameter.object-binding-pattern.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},{\\\"begin\\\":\\\"(?<![:=])\\\\\\\\s*(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"name\\\":\\\"meta.paramter.array-binding-pattern.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"destructuring-parameter-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\{)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]},{\\\"begin\\\":\\\"(?<![:=]|^of|[^$._[:alnum:]]of|^in|[^$._[:alnum:]]in)\\\\\\\\s*(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.array-binding-pattern-variable.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#array-binding-pattern\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#comment\\\"}]}]},\\\"destructuring-variable-rest\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.readwrite.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"destructuring-variable-rest-const\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)\\\"},\\\"directives\\\":{\\\"begin\\\":\\\"^(///)\\\\\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\\\\\s*=\\\\\\\\s*(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))+\\\\\\\\s*/>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"end\\\":\\\"(?=$)\\\",\\\"name\\\":\\\"comment.line.triple-slash.directive.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(<)(reference|amd-dependency|amd-module)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.tag.directive.ts\\\"}},\\\"end\\\":\\\"/>\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.tag.directive.ts\\\"}},\\\"name\\\":\\\"meta.tag.ts\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"path|types|no-default-lib|lib|name|resolution-mode\\\",\\\"name\\\":\\\"entity.other.attribute-name.directive.ts\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},{\\\"include\\\":\\\"#string\\\"}]}]},\\\"docblock\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.access-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)a(?:ccess|pi))\\\\\\\\s+(p(?:rivate|rotected|ublic))\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.email.link.underline.jsdoc\\\"},\\\"6\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"match\\\":\\\"((@)author)\\\\\\\\s+([^*/<>@\\\\\\\\s](?:[^*/<>@]|\\\\\\\\*[^/])*)(?:\\\\\\\\s*(<)([^>\\\\\\\\s]+)(>))?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.control.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)borrows)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\\\\\\s+(as)\\\\\\\\s+((?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)example)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=@|\\\\\\\\*/)\\\",\\\"name\\\":\\\"meta.example.jsdoc\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"^\\\\\\\\s\\\\\\\\*\\\\\\\\s+\\\"},{\\\"begin\\\":\\\"\\\\\\\\G(<)caption(>)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}},\\\"contentName\\\":\\\"constant.other.description.jsdoc\\\",\\\"end\\\":\\\"(</)caption(>)|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.inline.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.angle.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"source.embedded.ts\\\"}},\\\"match\\\":\\\"[^*@\\\\\\\\s](?:[^*]|\\\\\\\\*[^/])*\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.symbol-type.jsdoc\\\"}},\\\"match\\\":\\\"((@)kind)\\\\\\\\s+(class|constant|event|external|file|function|member|mixin|module|namespace|typedef)\\\\\\\\b\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)see)\\\\\\\\s+(?:((?=https?://)(?:[^*\\\\\\\\s]|\\\\\\\\*[^/])+)|((?!https?://|(?:\\\\\\\\[[^]\\\\\\\\[]*])?\\\\\\\\{@(?:link|linkcode|linkplain|tutorial)\\\\\\\\b)(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)template)\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*(?:\\\\\\\\s*,\\\\\\\\s*[$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)*)\\\"},{\\\"begin\\\":\\\"((@)template)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|var))\\\\\\\\s+([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\"},{\\\"begin\\\":\\\"((@)typedef)\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"(?:[^*/@\\\\\\\\s]|\\\\\\\\*[^/])+\\\",\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"},{\\\"match\\\":\\\"([$A-Z_a-z][]$.\\\\\\\\[\\\\\\\\w]*)\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.begin.bracket.square.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"source.embedded.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.optional-value.end.bracket.square.jsdoc\\\"},\\\"5\\\":{\\\"name\\\":\\\"invalid.illegal.syntax.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)\\\\\\\\s*[$\\\\\\\\w]+(?:(?:\\\\\\\\[])?\\\\\\\\.[$\\\\\\\\w]+)*(?:\\\\\\\\s*(=)\\\\\\\\s*((?>\\\\\\\"(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!\\\\\\\")|[^*\\\\\\\\\\\\\\\\])*?\\\\\\\"|'(?:\\\\\\\\*(?!/)|\\\\\\\\\\\\\\\\(?!')|[^*\\\\\\\\\\\\\\\\])*?'|\\\\\\\\[(?:\\\\\\\\*(?!/)|[^*])*?]|(?:\\\\\\\\*(?!/)|\\\\\\\\s(?!\\\\\\\\s*])|\\\\\\\\[.*?(?:]|(?=\\\\\\\\*/))|[^]*\\\\\\\\[\\\\\\\\s])*)*))?\\\\\\\\s*(?:(])((?:[^*\\\\\\\\s]|\\\\\\\\*[^/\\\\\\\\s])+)?|(?=\\\\\\\\*/))\\\",\\\"name\\\":\\\"variable.other.jsdoc\\\"}]},{\\\"begin\\\":\\\"((@)(?:define|enum|exception|export|extends|lends|implements|modifies|namespace|private|protected|returns?|satisfies|suppress|this|throws|type|yields?))\\\\\\\\s+(?=\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\s|\\\\\\\\*/|[^]$A-\\\\\\\\[_a-{}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#jsdoctype\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:alias|augments|callback|constructs|emits|event|fires|exports?|extends|external|function|func|host|lends|listens|interface|memberof!?|method|module|mixes|mixin|name|requires|see|this|typedef|uses))\\\\\\\\s+((?:[^*@{}\\\\\\\\s]|\\\\\\\\*[^/])+)\\\"},{\\\"begin\\\":\\\"((@)(?:default(?:value)?|license|version))\\\\\\\\s+(([\\\\\\\"']))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"variable.other.jsdoc\\\",\\\"end\\\":\\\"(\\\\\\\\3)|(?=$|\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.jsdoc\\\"}}},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.jsdoc\\\"}},\\\"match\\\":\\\"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\\\\\s+([^*\\\\\\\\s]+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"(@)(?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles|callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright|default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception|exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func|function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc|inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method|mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects|override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected|public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary|suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation|version|virtual|writeOnce|yields?)\\\\\\\\b\\\",\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},{\\\"include\\\":\\\"#inline-tags\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.block.tag.jsdoc\\\"}},\\\"match\\\":\\\"((@)[$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s+)\\\"}]},\\\"enum-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:\\\\\\\\b(const)\\\\\\\\s+)?\\\\\\\\b(enum)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.enum.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"entity.name.type.enum.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.enum.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"variable.other.enummember.ts\\\"}},\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"begin\\\":\\\"(?=(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+])))\\\",\\\"end\\\":\\\"(?=[,}]|$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"export-declaration\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)\\\\\\\\s+(as)\\\\\\\\s+(namespace)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?(?:\\\\\\\\s*(=)|\\\\\\\\s+(default)(?=\\\\\\\\s+))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.default.ts\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.default.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#interface-declaration\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(export)(?:\\\\\\\\s+(type))?\\\\\\\\b(?!(\\\\\\\\$)|(\\\\\\\\s*:))((?=\\\\\\\\s*[*{])|((?=\\\\\\\\s*[$_[:alpha:]][$_[:alnum:]]*([,\\\\\\\\s]))(?!\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"}},\\\"end\\\":\\\"(?=$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.export.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]}]},\\\"expression\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-inside-possibly-arrow-parens\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#expressionWithoutIdentifiers\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*[,:]|$)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.ts\\\"},{\\\"include\\\":\\\"#identifiers\\\"},{\\\"include\\\":\\\"#expressionPunctuations\\\"}]},\\\"expression-operators\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(await)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.control.flow.ts\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?=\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*\\\\\\\\*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\*\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(yield)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s*(\\\\\\\\*))?\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))delete(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.delete.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))in(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.in.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))of(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?!\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.of.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.instanceof.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.new.ts\\\"},{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))void(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.void.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*($|[]),:;}]))\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.ts\\\"}},\\\"end\\\":\\\"(?=^|[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisfies)\\\\\\\\s+)|(\\\\\\\\s+<))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.spread.ts\\\"},{\\\"match\\\":\\\"(?:\\\\\\\\*|(?<!\\\\\\\\()/|[-%+])=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},{\\\"match\\\":\\\"(?:[\\\\\\\\&^]|<<|>>>??|\\\\\\\\|)=\\\",\\\"name\\\":\\\"keyword.operator.assignment.compound.bitwise.ts\\\"},{\\\"match\\\":\\\"<<|>>>?\\\",\\\"name\\\":\\\"keyword.operator.bitwise.shift.ts\\\"},{\\\"match\\\":\\\"[!=]==?\\\",\\\"name\\\":\\\"keyword.operator.comparison.ts\\\"},{\\\"match\\\":\\\"<=|>=|<>|[<>]\\\",\\\"name\\\":\\\"keyword.operator.relational.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.logical.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"}},\\\"match\\\":\\\"(?<=[$_[:alnum:]])(!)\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"},{\\\"match\\\":\\\"!|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\?\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.logical.ts\\\"},{\\\"match\\\":\\\"[\\\\\\\\&^|~]\\\",\\\"name\\\":\\\"keyword.operator.bitwise.ts\\\"},{\\\"match\\\":\\\"=\\\",\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},{\\\"match\\\":\\\"--\\\",\\\"name\\\":\\\"keyword.operator.decrement.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\+\\\\\\\\+\\\",\\\"name\\\":\\\"keyword.operator.increment.ts\\\"},{\\\"match\\\":\\\"[-%*+/]\\\",\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"},{\\\"begin\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)+(?:(/=)|(/)(?![*/])))\\\",\\\"end\\\":\\\"(/=)|(/)(?!\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.compound.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.arithmetic.ts\\\"}},\\\"match\\\":\\\"(?<=[]$)_[:alnum:]])\\\\\\\\s*(?:(/=)|(/)(?![*/]))\\\"}]},\\\"expressionPunctuations\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"}]},\\\"expressionWithoutIdentifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-expression\\\"},{\\\"include\\\":\\\"#class-expression\\\"},{\\\"include\\\":\\\"#arrow-function\\\"},{\\\"include\\\":\\\"#paren-expression-possibly-arrow\\\"},{\\\"include\\\":\\\"#cast\\\"},{\\\"include\\\":\\\"#ternary-expression\\\"},{\\\"include\\\":\\\"#new-expr\\\"},{\\\"include\\\":\\\"#instanceof-expr\\\"},{\\\"include\\\":\\\"#object-literal\\\"},{\\\"include\\\":\\\"#expression-operators\\\"},{\\\"include\\\":\\\"#function-call\\\"},{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},\\\"field-declaration\\\":{\\\"begin\\\":\\\"(?<!\\\\\\\\()(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s+)?(?=\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=}]|$))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$|^((?!\\\\\\\\s*(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|(#?[$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(?:(?:(\\\\\\\\?)|(!))\\\\\\\\s*)?([,:;=]|$))))|(?<=})\\\",\\\"name\\\":\\\"meta.field.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.property.ts entity.name.function.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)(?:(\\\\\\\\?)|(!))?(?=\\\\\\\\s*\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"match\\\":\\\"#?[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.property.ts variable.object.property.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.ts\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}]},\\\"for-loop\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))for(?=((\\\\\\\\s+|(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*))await)?\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)?(\\\\\\\\())\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.loop.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"await\\\",\\\"name\\\":\\\"keyword.control.loop.ts\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#var-expr\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"}]}]},\\\"function-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#function-parameters\\\"},{\\\"include\\\":\\\"#return-type\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}]},\\\"function-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*(?:(\\\\\\\\?\\\\\\\\.\\\\\\\\s*)|(!))?((<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?\\\\\\\\())\\\",\\\"name\\\":\\\"meta.function-call.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"begin\\\":\\\"(?=(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"end\\\":\\\"(?<=>)(?!(((([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))|(?<=\\\\\\\\)))(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*)(\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*))*)|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*[(\\\\\\\\[{]\\\\\\\\s*)$)\\\",\\\"name\\\":\\\"meta.function-call.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-call-target\\\"}]},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#function-call-optionals\\\"},{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"function-call-optionals\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\?\\\\\\\\.\\\",\\\"name\\\":\\\"meta.function-call.ts punctuation.accessor.optional.ts\\\"},{\\\"match\\\":\\\"!\\\",\\\"name\\\":\\\"meta.function-call.ts keyword.operator.definiteassignment.ts\\\"}]},\\\"function-call-target\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"(#?[$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.ts\\\"}]},\\\"function-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.definition.function.ts entity.name.function.ts\\\"}},\\\"end\\\":\\\"(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|(?<=})\\\",\\\"name\\\":\\\"meta.function.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-expression\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(async)\\\\\\\\s+)?(function)\\\\\\\\b(?:\\\\\\\\s*(\\\\\\\\*))?(?:(?:\\\\\\\\s+|(?<=\\\\\\\\*))([$_[:alpha:]][$_[:alnum:]]*))?\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.function.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.definition.function.ts entity.name.function.ts\\\"}},\\\"end\\\":\\\"(?=;)|(?<=})\\\",\\\"name\\\":\\\"meta.function.expression.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-name\\\"},{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},\\\"function-name\\\":{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.function.ts entity.name.function.ts\\\"},\\\"function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.begin.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.parameters.end.ts\\\"}},\\\"name\\\":\\\"meta.parameters.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters-body\\\"}]},\\\"function-parameters-body\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#decorator\\\"},{\\\"include\\\":\\\"#destructuring-parameter\\\"},{\\\"include\\\":\\\"#parameter-name\\\"},{\\\"include\\\":\\\"#parameter-type-annotation\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.ts\\\"}]},\\\"identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"}},\\\"match\\\":\\\"(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*)?([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.property.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.property.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"match\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])\\\",\\\"name\\\":\\\"variable.other.constant.ts\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"variable.other.readwrite.ts\\\"}]},\\\"if-statement\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bif\\\\\\\\s*(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))\\\\\\\\s*(?!\\\\\\\\{))\\\",\\\"end\\\":\\\"(?=;|$|})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(if)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.conditional.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.ts\\\"}},\\\"name\\\":\\\"string.regexp.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"import-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type)(?!\\\\\\\\s+from))?(?!\\\\\\\\s*[(:])(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"}},\\\"end\\\":\\\"(?<!(?:^|[^$._[:alnum:]])import)(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"begin\\\":\\\"(?<=(?:^|[^$._[:alnum:]])import)(?!\\\\\\\\s*[\\\\\\\"'])\\\",\\\"end\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.control.from.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-declaration\\\"}]},{\\\"include\\\":\\\"#import-export-declaration\\\"}]},\\\"import-equals-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(require)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},\\\"7\\\":{\\\"name\\\":\\\"keyword.control.require.ts\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"name\\\":\\\"meta.import-equals.external.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(import)(?:\\\\\\\\s+(type))?\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(=)\\\\\\\\s*(?!require\\\\\\\\b)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=;|$|^)\\\",\\\"name\\\":\\\"meta.import-equals.internal.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.other.readwrite.ts\\\"}]}]},\\\"import-export-assert-clause\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(with)|(assert))\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.with.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.assert.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object-literal.key.ts\\\"},{\\\"match\\\":\\\":\\\",\\\"name\\\":\\\"punctuation.separator.key-value.ts\\\"}]},\\\"import-export-block\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.block.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"import-export-clause\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.default.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.language.import-export-all.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.readwrite.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"string.quoted.alias.ts\\\"},\\\"12\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"13\\\":{\\\"name\\\":\\\"keyword.control.default.ts\\\"},\\\"14\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"15\\\":{\\\"name\\\":\\\"string.quoted.alias.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:\\\\\\\\b(default)|(\\\\\\\\*)|\\\\\\\\b([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\\\\\\s+(as)\\\\\\\\s+(?:(default(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"\\\\\\\\*\\\",\\\"name\\\":\\\"constant.language.import-export-all.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\b(default)\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.default.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.type.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.readwrite.alias.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.quoted.alias.ts\\\"}},\\\"match\\\":\\\"(?:\\\\\\\\b(type)\\\\\\\\s+)?(?:([$_[:alpha:]][$_[:alnum:]]*)|(('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)))\\\"}]},\\\"import-export-declaration\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#import-export-block\\\"},{\\\"match\\\":\\\"\\\\\\\\bfrom\\\\\\\\b\\\",\\\"name\\\":\\\"keyword.control.from.ts\\\"},{\\\"include\\\":\\\"#import-export-assert-clause\\\"},{\\\"include\\\":\\\"#import-export-clause\\\"}]},\\\"indexer-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"end\\\":\\\"(])\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"name\\\":\\\"meta.indexer.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"}]},\\\"indexer-mapped-type-declaration\\\":{\\\"begin\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([-+])?(readonly)\\\\\\\\s*)?\\\\\\\\s*(\\\\\\\\[)\\\\\\\\s*([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s+(in)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.expression.in.ts\\\"}},\\\"end\\\":\\\"(])([-+])?\\\\\\\\s*(\\\\\\\\?\\\\\\\\s*)?|$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.type.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"name\\\":\\\"meta.indexer.mappedtype.declaration.ts\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"inline-tags\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.square.end.jsdoc\\\"}},\\\"match\\\":\\\"(\\\\\\\\[)[^]]+(])(?=\\\\\\\\{@(?:link|linkcode|linkplain|tutorial))\\\",\\\"name\\\":\\\"constant.other.description.jsdoc\\\"},{\\\"begin\\\":\\\"(\\\\\\\\{)((@)(?:link(?:code|plain)?|tutorial))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.class.jsdoc\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.inline.tag.jsdoc\\\"}},\\\"end\\\":\\\"}|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.link.underline.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?=https?://)(?:[^*|}\\\\\\\\s]|\\\\\\\\*/)+)(\\\\\\\\|)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.description.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.pipe.jsdoc\\\"}},\\\"match\\\":\\\"\\\\\\\\G((?:[^*@{|}\\\\\\\\s]|\\\\\\\\*[^/])+)(\\\\\\\\|)?\\\"}]}]},\\\"instanceof-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(instanceof)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.instanceof.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|([!=]==?)|(([\\\\\\\\&^|~]\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s+instanceof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"interface-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(?:(abstract)\\\\\\\\s+)?\\\\\\\\b(interface)\\\\\\\\b(?=\\\\\\\\s+|/[*/])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.interface.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"name\\\":\\\"meta.interface.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#class-or-interface-heritage\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.interface.ts\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#class-or-interface-body\\\"}]},\\\"jsdoctype\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.begin.jsdoc\\\"}},\\\"contentName\\\":\\\"entity.name.type.instance.jsdoc\\\",\\\"end\\\":\\\"((}))\\\\\\\\s*|(?=\\\\\\\\*/)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.instance.jsdoc\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.bracket.curly.end.jsdoc\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#brackets\\\"}]}]},\\\"label\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#decl-block\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.separator.label.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(:)\\\"}]},\\\"literal\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#boolean-literal\\\"},{\\\"include\\\":\\\"#null-literal\\\"},{\\\"include\\\":\\\"#undefined-literal\\\"},{\\\"include\\\":\\\"#numericConstant-literal\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#this-literal\\\"},{\\\"include\\\":\\\"#super-literal\\\"}]},\\\"method-declaration\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?\\\\\\\\s*\\\\\\\\b(constructor)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\s*\\\\\\\\b(new)\\\\\\\\b(?!:)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))|(?:(\\\\\\\\*)\\\\\\\\s*)?)(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.new.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(override)\\\\\\\\s+)?(?:\\\\\\\\b(p(?:ublic|rivate|rotected))\\\\\\\\s+)?(?:\\\\\\\\b(abstract)\\\\\\\\s+)?(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"}]}]},\\\"method-declaration-name\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??)\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"meta.definition.method.ts entity.name.function.ts\\\"},{\\\"match\\\":\\\"\\\\\\\\?\\\",\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}]},\\\"namespace-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(namespace|module)\\\\\\\\s+(?=[\\\\\\\"$'_`[:alpha:]])\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.namespace.ts\\\"}},\\\"end\\\":\\\"(?<=})|(?=;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.namespace.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.type.module.ts\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"new-expr\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))|(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))new(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))function((\\\\\\\\s+[$_[:alpha:]][$_[:alnum:]]*)|(\\\\\\\\s*\\\\\\\\())))\\\",\\\"name\\\":\\\"new.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"null-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))null(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.null.ts\\\"},\\\"numeric-literal\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.hex.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.binary.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\b(?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"constant.numeric.octal.ts\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"constant.numeric.decimal.ts\\\"},\\\"1\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"6\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"7\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"8\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"9\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"10\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"11\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"12\\\":{\\\"name\\\":\\\"meta.delimiter.decimal.period.ts\\\"},\\\"13\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"},\\\"14\\\":{\\\"name\\\":\\\"storage.type.numeric.bigint.ts\\\"}},\\\"match\\\":\\\"(?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)\\\"}]},\\\"numericConstant-literal\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))NaN(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.nan.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Infinity(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.infinity.ts\\\"}]},\\\"object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-const\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#binding-element-const\\\"}]},{\\\"include\\\":\\\"#object-binding-pattern-const\\\"},{\\\"include\\\":\\\"#destructuring-variable-rest-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"object-binding-element-propertyName\\\":{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(:)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.destructuring.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#array-literal\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"variable.object.property.ts\\\"}]},\\\"object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element\\\"}]},\\\"object-binding-pattern-const\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-const\\\"}]},\\\"object-identifiers\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*prototype\\\\\\\\b(?!\\\\\\\\$))\\\",\\\"name\\\":\\\"support.class.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.constant.object.property.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.other.object.property.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(#?\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|(#?[$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.constant.object.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.object.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)|([$_[:alpha:]][$_[:alnum:]]*))(?=\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*#?[$_[:alpha:]][$_[:alnum:]]*)\\\"}]},\\\"object-literal\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.objectliteral.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-member\\\"}]},\\\"object-literal-method-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"},{\\\"include\\\":\\\"#function-body\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(async)\\\\\\\\s+)?(?:\\\\\\\\b([gs]et)\\\\\\\\s+)?(?:(\\\\\\\\*)\\\\\\\\s*)?(?=\\\\\\\\s*((\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(\\\\\\\\??))\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.generator.asterisk.ts\\\"}},\\\"end\\\":\\\"(?=[(<])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#method-declaration-name\\\"}]}]},\\\"object-member\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#object-literal-method-declaration\\\"},{\\\"begin\\\":\\\"(?=\\\\\\\\[)\\\",\\\"end\\\":\\\"(?=:)|((?<=])(?=\\\\\\\\s*[(<]))\\\",\\\"name\\\":\\\"meta.object.member.ts meta.object-literal.key.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#array-literal\\\"}]},{\\\"begin\\\":\\\"(?=[\\\\\\\"'`])\\\",\\\"end\\\":\\\"(?=:)|((?<=[\\\\\\\"'`])(?=((\\\\\\\\s*[(,<}])|(\\\\\\\\s+(as|satisifies)\\\\\\\\s+))))\\\",\\\"name\\\":\\\"meta.object.member.ts meta.object-literal.key.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"}]},{\\\"begin\\\":\\\"(?=\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$)))\\\",\\\"end\\\":\\\"(?=:)|(?=\\\\\\\\s*([(,<}])|(\\\\\\\\s+as|satisifies\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.ts meta.object-literal.key.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"}]},{\\\"begin\\\":\\\"(?<=[]\\\\\\\"'`])(?=\\\\\\\\s*[(<])\\\",\\\"end\\\":\\\"(?=[,;}])|(?<=})\\\",\\\"name\\\":\\\"meta.method.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-body\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts\\\"},\\\"1\\\":{\\\"name\\\":\\\"constant.numeric.decimal.ts\\\"}},\\\"match\\\":\\\"(?![$_[:alpha:]])(\\\\\\\\d+)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts\\\"},\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:(\\\\\\\\s*/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/)*\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts\\\"}},\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*(?=(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*:)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.ts\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"variable.other.readwrite.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as)\\\\\\\\s+(const)(?=\\\\\\\\s*([,}]|$))\\\",\\\"name\\\":\\\"meta.object.member.ts\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(as)|(satisfies))\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.as.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.satisfies.ts\\\"}},\\\"end\\\":\\\"(?=[-\\\\\\\\])+,:;>?}]|\\\\\\\\|\\\\\\\\||&&|!==|$|^|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(as|satisifies)\\\\\\\\s+))\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(?=[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=)\\\",\\\"end\\\":\\\"(?=[,}]|$|//|/\\\\\\\\*)\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\":\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.object-literal.key.ts punctuation.separator.key-value.ts\\\"}},\\\"end\\\":\\\"(?=[,}])\\\",\\\"name\\\":\\\"meta.object.member.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?(?=\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"begin\\\":\\\"(?<=:)\\\\\\\\s*(async)?\\\\\\\\s*(?=<\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<=>)\\\\\\\\s*(\\\\\\\\()(?=\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"},{\\\"include\\\":\\\"#expression\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#decl-block\\\"}]},\\\"parameter-array-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\[)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.array.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#regex\\\"},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#parameter-array-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"}]},\\\"parameter-name\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|protected|private|readonly)\\\\\\\\s+(?=(override|public|protected|private|readonly)\\\\\\\\s+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(override|public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*(\\\\\\\\??)\\\"}]},\\\"parameter-object-binding-element\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?=(\\\\\\\\b((?<!\\\\\\\\$)0[Xx]\\\\\\\\h[_\\\\\\\\h]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Bb][01][01_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|\\\\\\\\b((?<!\\\\\\\\$)0[Oo]?[0-7][0-7_]*(n)?\\\\\\\\b(?!\\\\\\\\$))|((?<!\\\\\\\\$)(?:\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*[Ee][-+]?[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(\\\\\\\\.)(n)?\\\\\\\\B|\\\\\\\\B(\\\\\\\\.)[0-9][0-9_]*(n)?\\\\\\\\b|\\\\\\\\b[0-9][0-9_]*(n)?\\\\\\\\b(?!\\\\\\\\.))(?!\\\\\\\\$))|([$_[:alpha:]][$_[:alnum:]]*)|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`)|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])+]))\\\\\\\\s*(:))\\\",\\\"end\\\":\\\"(?=[,}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#object-binding-element-propertyName\\\"},{\\\"include\\\":\\\"#parameter-binding-element\\\"},{\\\"include\\\":\\\"#paren-expression\\\"}]},{\\\"include\\\":\\\"#parameter-object-binding-pattern\\\"},{\\\"include\\\":\\\"#destructuring-parameter-rest\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"parameter-object-binding-pattern\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.binding-pattern.object.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#parameter-object-binding-element\\\"}]},\\\"parameter-type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?=[),])|(?==[^>])\\\",\\\"name\\\":\\\"meta.type.annotation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"paren-expression\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"paren-expression-possibly-arrow\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=[(,=])\\\\\\\\s*(async)?(?=\\\\\\\\s*((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"begin\\\":\\\"(?<=[(,=]|=>|^return|[^$._[:alnum:]]return)\\\\\\\\s*(async)?(?=\\\\\\\\s*((((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*))?\\\\\\\\()|(<)|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)))\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.async.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#paren-expression-possibly-arrow-with-typeparameters\\\"}]},{\\\"include\\\":\\\"#possibly-arrow-return-type\\\"}]},\\\"paren-expression-possibly-arrow-with-typeparameters\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression-inside-possibly-arrow-parens\\\"}]}]},\\\"possibly-arrow-return-type\\\":{\\\"begin\\\":\\\"(?<=\\\\\\\\)|^)\\\\\\\\s*(:)(?=\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*=>)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts\\\"}},\\\"contentName\\\":\\\"meta.arrow.ts meta.return.type.arrow.ts\\\",\\\"end\\\":\\\"(?==>|\\\\\\\\{|^(\\\\\\\\s*(export|function|class|interface|let|var|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|const|import|enum|namespace|module|type|abstract|declare)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#arrow-return-type-body\\\"}]},\\\"property-accessor\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(accessor|get|set)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.type.property.ts\\\"},\\\"punctuation-accessor\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d))\\\"},\\\"punctuation-comma\\\":{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"},\\\"punctuation-semicolon\\\":{\\\"match\\\":\\\";\\\",\\\"name\\\":\\\"punctuation.terminator.statement.ts\\\"},\\\"qstring-double\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(\\\\\\\")|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.ts\\\"}},\\\"name\\\":\\\"string.quoted.double.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"qstring-single\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(')|([^\\\\\\\\n\\\\\\\\\\\\\\\\])$\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.newline.ts\\\"}},\\\"name\\\":\\\"string.quoted.single.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#string-character-escape\\\"}]},\\\"regex\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<!\\\\\\\\+\\\\\\\\+|--|})(?<=[!(+,:=?\\\\\\\\[]|^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case|=>|&&|\\\\\\\\|\\\\\\\\||\\\\\\\\*/)\\\\\\\\s*(/)(?![*/])(?=(?:[^()/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+]|\\\\\\\\(([^)\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)+\\\\\\\\))+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.ts\\\"}},\\\"name\\\":\\\"string.regexp.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"((?<![]$)_[:alnum:]]|\\\\\\\\+\\\\\\\\+|--|}|\\\\\\\\*/)|((?<=^return|[^$._[:alnum:]]return|^case|[^$._[:alnum:]]case))\\\\\\\\s*)/(?![*/])(?=(?:[^/\\\\\\\\[\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.|\\\\\\\\[([^]\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*])+/([dgimsuvy]+|(?![*/])|(?=/\\\\\\\\*))(?!\\\\\\\\s*[$0-9A-Z_a-z]))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.ts\\\"}},\\\"end\\\":\\\"(/)([dgimsuvy]*)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.other.ts\\\"}},\\\"name\\\":\\\"string.regexp.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]}]},\\\"regex-character-class\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[DSWdfnrstvw]|\\\\\\\\.\\\",\\\"name\\\":\\\"constant.other.character-class.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4})\\\",\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\c[A-Z]\\\",\\\"name\\\":\\\"constant.character.control.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\.\\\",\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}]},\\\"regexp\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\[Bb]|[$^]\\\",\\\"name\\\":\\\"keyword.control.anchor.regexp\\\"},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.other.back-reference.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(?:[1-9]\\\\\\\\d*|k<([$A-Z_a-z][$\\\\\\\\w]*)>)\\\"},{\\\"match\\\":\\\"[*+?]|\\\\\\\\{(\\\\\\\\d+,\\\\\\\\d+|\\\\\\\\d+,|,\\\\\\\\d+|\\\\\\\\d+)}\\\\\\\\??\\\",\\\"name\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"match\\\":\\\"\\\\\\\\|\\\",\\\"name\\\":\\\"keyword.operator.or.regexp\\\"},{\\\"begin\\\":\\\"(\\\\\\\\()((\\\\\\\\?=)|(\\\\\\\\?!)|(\\\\\\\\?<=)|(\\\\\\\\?<!))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.group.assertion.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"meta.assertion.look-ahead.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-ahead.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"meta.assertion.look-behind.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"meta.assertion.negative-look-behind.regexp\\\"}},\\\"end\\\":\\\"(\\\\\\\\))\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.assertion.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\((?:(\\\\\\\\?:)|\\\\\\\\?<([$A-Z_a-z][$\\\\\\\\w]*)>)?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"},\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.group.no-capture.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.other.regexp\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.group.regexp\\\"}},\\\"name\\\":\\\"meta.group.regexp\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#regexp\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\[)(\\\\\\\\^)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.negation.regexp\\\"}},\\\"end\\\":\\\"(])\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.character-class.regexp\\\"}},\\\"name\\\":\\\"constant.other.character-class.set.regexp\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.character.numeric.regexp\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.character.control.regexp\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.character.escape.backslash.regexp\\\"}},\\\"match\\\":\\\"(?:.|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))-(?:[^]\\\\\\\\\\\\\\\\]|(\\\\\\\\\\\\\\\\(?:[0-7]{3}|x\\\\\\\\h{2}|u\\\\\\\\h{4}))|(\\\\\\\\\\\\\\\\c[A-Z])|(\\\\\\\\\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.other.character-class.range.regexp\\\"},{\\\"include\\\":\\\"#regex-character-class\\\"}]},{\\\"include\\\":\\\"#regex-character-class\\\"}]},\\\"return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?=$|^|[,;{}]|//)\\\",\\\"name\\\":\\\"meta.return.type.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]},{\\\"begin\\\":\\\"(?<=\\\\\\\\))\\\\\\\\s*(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[,;{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.return.type.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#return-type-core\\\"}]}]},\\\"return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<=[\\\\\\\\&:|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"shebang\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"}},\\\"match\\\":\\\"\\\\\\\\A(#!).*(?=$)\\\",\\\"name\\\":\\\"comment.line.shebang.ts\\\"},\\\"single-line-comment-consuming-line-ending\\\":{\\\"begin\\\":\\\"(^[\\\\\\\\t ]+)?((//)(?:\\\\\\\\s*((@)internal)(?=\\\\\\\\s|$))?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"comment.line.double-slash.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.definition.comment.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.type.internaldeclaration.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"punctuation.decorator.internaldeclaration.ts\\\"}},\\\"contentName\\\":\\\"comment.line.double-slash.ts\\\",\\\"end\\\":\\\"(?=^)\\\"},\\\"statements\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#declaration\\\"},{\\\"include\\\":\\\"#control-statement\\\"},{\\\"include\\\":\\\"#after-operator-block-as-object-literal\\\"},{\\\"include\\\":\\\"#decl-block\\\"},{\\\"include\\\":\\\"#label\\\"},{\\\"include\\\":\\\"#expression\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template\\\"}]},\\\"string-character-escape\\\":{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\(x\\\\\\\\h{2}|u\\\\\\\\h{4}|u\\\\\\\\{\\\\\\\\h+}|[012][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\\\",\\\"name\\\":\\\"constant.character.escape.ts\\\"},\\\"super-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))super\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.super.ts\\\"},\\\"support-function-call-identifiers\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#literal\\\"},{\\\"include\\\":\\\"#support-objects\\\"},{\\\"include\\\":\\\"#object-identifiers\\\"},{\\\"include\\\":\\\"#punctuation-accessor\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\(\\\\\\\\s*[\\\\\\\"'`])\\\",\\\"name\\\":\\\"keyword.operator.expression.import.ts\\\"}]},\\\"support-objects\\\":{\\\"patterns\\\":[{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(arguments)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.arguments.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(Promise)\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"support.class.promise.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.import.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.importmeta.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(import)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(meta)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.new.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.variable.property.target.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(new)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(target)\\\\\\\\b(?!\\\\\\\\$)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.variable.property.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"support.constant.ts\\\"}},\\\"match\\\":\\\"(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(?:(constructor|length|prototype|__proto__)\\\\\\\\b(?!\\\\\\\\$|\\\\\\\\s*(<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\()|(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\\\\\b(?!\\\\\\\\$))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.type.object.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"support.type.object.module.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"support.type.object.module.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(exports)|(module)(?:(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))(exports|id|filename|loaded|parent|children))?)\\\\\\\\b(?!\\\\\\\\$)\\\"}]},\\\"switch-statement\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?=\\\\\\\\bswitch\\\\\\\\s*\\\\\\\\()\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"switch-statement.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(switch)\\\\\\\\s*(\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"name\\\":\\\"switch-expression.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"(?=})\\\",\\\"name\\\":\\\"switch-block.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(case|default(?=:))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.switch.ts\\\"}},\\\"end\\\":\\\"(?=:)\\\",\\\"name\\\":\\\"case-clause.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(:)\\\\\\\\s*(\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"case-clause.expr.ts punctuation.definition.section.case-statement.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.block.ts punctuation.definition.block.ts\\\"}},\\\"contentName\\\":\\\"meta.block.ts\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.block.ts punctuation.definition.block.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#statements\\\"}]},{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"case-clause.expr.ts punctuation.definition.section.case-statement.ts\\\"}},\\\"match\\\":\\\"(:)\\\"},{\\\"include\\\":\\\"#statements\\\"}]}]},\\\"template\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.begin.ts\\\"}},\\\"contentName\\\":\\\"string.template.ts\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-call\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*)(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*\\\\\\\\??\\\\\\\\.\\\\\\\\s*)*|(\\\\\\\\??\\\\\\\\.\\\\\\\\s*)?)([$_[:alpha:]][$_[:alnum:]]*))\\\",\\\"end\\\":\\\"(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)?`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#support-function-call-identifiers\\\"},{\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"}]},{\\\"include\\\":\\\"#type-arguments\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?\\\\\\\\s*(?=(<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))(([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>|<\\\\\\\\s*(((keyof|infer|typeof|readonly)\\\\\\\\s+)|(([$_[:alpha:]][$_[:alnum:]]*|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))(?=\\\\\\\\s*([,.<>\\\\\\\\[]|=>|&(?!&)|\\\\\\\\|(?!\\\\\\\\|)))))([^(<>]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(?<==)>)*(?<!=)>))*(?<!=)>)*(?<!=)>\\\\\\\\s*)`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"}},\\\"end\\\":\\\"(?=`)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"}]}]},\\\"template-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.ts\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.ts\\\"}},\\\"name\\\":\\\"meta.template.expression.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"template-type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#template-call\\\"},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)?(`)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.function.tagged-template.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.begin.ts\\\"}},\\\"contentName\\\":\\\"string.template.ts\\\",\\\"end\\\":\\\"`\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"string.template.ts punctuation.definition.string.template.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#template-type-substitution-element\\\"},{\\\"include\\\":\\\"#string-character-escape\\\"}]}]},\\\"template-type-substitution-element\\\":{\\\"begin\\\":\\\"\\\\\\\\$\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.embedded.line.ts\\\",\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.template-expression.end.ts\\\"}},\\\"name\\\":\\\"meta.template.expression.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},\\\"ternary-expression\\\":{\\\"begin\\\":\\\"(?!\\\\\\\\?\\\\\\\\.\\\\\\\\s*\\\\\\\\D)(\\\\\\\\?)(?!\\\\\\\\?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\s*(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},\\\"this-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))this\\\\\\\\b(?!\\\\\\\\$)\\\",\\\"name\\\":\\\"variable.language.this.ts\\\"},\\\"type\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-string\\\"},{\\\"include\\\":\\\"#numeric-literal\\\"},{\\\"include\\\":\\\"#type-primitive\\\"},{\\\"include\\\":\\\"#type-builtin-literals\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"include\\\":\\\"#type-tuple\\\"},{\\\"include\\\":\\\"#type-object\\\"},{\\\"include\\\":\\\"#type-operators\\\"},{\\\"include\\\":\\\"#type-conditional\\\"},{\\\"include\\\":\\\"#type-fn-type-parameters\\\"},{\\\"include\\\":\\\"#type-paren-or-function-parameters\\\"},{\\\"include\\\":\\\"#type-function-return-type\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(readonly)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\"},{\\\"include\\\":\\\"#type-name\\\"}]},\\\"type-alias-declaration\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(type)\\\\\\\\b\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.type.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.type.alias.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"name\\\":\\\"meta.type.declaration.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"},{\\\"begin\\\":\\\"(=)\\\\\\\\s*(intrinsic)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.intrinsic.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(=)\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=[;}]|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-annotation\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(:)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])(?!\\\\\\\\s*[\\\\\\\\&|]\\\\\\\\s+)((?=^|[]),;}]|//)|(?==[^>])|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"begin\\\":\\\"(:)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.annotation.ts\\\"}},\\\"end\\\":\\\"(?<![\\\\\\\\&:|])((?=[]),;}]|//)|(?==[^>])|(?=^\\\\\\\\s*$)|((?<=[]$)>_}[:alpha:]])\\\\\\\\s*(?=\\\\\\\\{)))\\\",\\\"name\\\":\\\"meta.type.annotation.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-arguments\\\":{\\\"begin\\\":\\\"<\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.ts\\\"}},\\\"end\\\":\\\">\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.ts\\\"}},\\\"name\\\":\\\"meta.type.parameters.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},\\\"type-arguments-body\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(_)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"type-builtin-literals\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(this|true|false|undefined|null|object)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.builtin.ts\\\"},\\\"type-conditional\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends)\\\\\\\\s+\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"}},\\\"end\\\":\\\"(?<=:)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"end\\\":\\\":\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#type\\\"}]}]},\\\"type-fn-type-parameters\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b(?=\\\\\\\\s*<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.constructor.ts storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.constructor.ts keyword.control.new.ts\\\"}},\\\"end\\\":\\\"(?<=>)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#type-parameters\\\"}]},{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(abstract)\\\\\\\\s+)?(new)\\\\\\\\b\\\\\\\\s*(?=\\\\\\\\()\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.new.ts\\\"}},\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.constructor.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]},{\\\"begin\\\":\\\"((?=\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>))))))\\\",\\\"end\\\":\\\"(?<=\\\\\\\\))\\\",\\\"name\\\":\\\"meta.type.function.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#function-parameters\\\"}]}]},\\\"type-function-return-type\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(=>)(?=\\\\\\\\s*\\\\\\\\S)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.type.function.arrow.ts\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])(?=[]),:;=>?{}]|//|$)\\\",\\\"name\\\":\\\"meta.type.function.return.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]},{\\\"begin\\\":\\\"=>\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"storage.type.function.arrow.ts\\\"}},\\\"end\\\":\\\"(?<!=>)(?<![\\\\\\\\&|])((?=[]),:;=>?{}]|//|^\\\\\\\\s*$)|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.type.function.return.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-function-return-type-core\\\"}]}]},\\\"type-function-return-type-core\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(?<==>)(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"include\\\":\\\"#type-predicate-operator\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-infer\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.expression.infer.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"entity.name.type.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"keyword.operator.expression.extends.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(infer)\\\\\\\\s+([$_[:alpha:]][$_[:alnum:]]*)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))(?:\\\\\\\\s+(extends)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))?\\\",\\\"name\\\":\\\"meta.type.infer.ts\\\"}]},\\\"type-name\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\\\\\\s*(<)\\\",\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.ts\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts\\\"}},\\\"contentName\\\":\\\"meta.type.parameters.ts\\\",\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.type.parameters.ts punctuation.definition.typeparameters.end.ts\\\"}},\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments-body\\\"}]},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.type.module.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.accessor.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.accessor.optional.ts\\\"}},\\\"match\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(?:(\\\\\\\\.)|(\\\\\\\\?\\\\\\\\.(?!\\\\\\\\s*\\\\\\\\d)))\\\"},{\\\"match\\\":\\\"[$_[:alpha:]][$_[:alnum:]]*\\\",\\\"name\\\":\\\"entity.name.type.ts\\\"}]},\\\"type-object\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.block.ts\\\"}},\\\"name\\\":\\\"meta.object.type.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#method-declaration\\\"},{\\\"include\\\":\\\"#indexer-declaration\\\"},{\\\"include\\\":\\\"#indexer-mapped-type-declaration\\\"},{\\\"include\\\":\\\"#field-declaration\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"begin\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.spread.ts\\\"}},\\\"end\\\":\\\"(?=[,;}]|$)|(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"include\\\":\\\"#punctuation-semicolon\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-operators\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#typeof-operator\\\"},{\\\"include\\\":\\\"#type-infer\\\"},{\\\"begin\\\":\\\"([\\\\\\\\&|])(?=\\\\\\\\s*\\\\\\\\{)\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.ts\\\"}},\\\"end\\\":\\\"(?<=})\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-object\\\"}]},{\\\"begin\\\":\\\"[\\\\\\\\&|]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))keyof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.keyof.ts\\\"},{\\\"match\\\":\\\"([:?])\\\",\\\"name\\\":\\\"keyword.operator.ternary.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))import(?=\\\\\\\\s*\\\\\\\\()\\\",\\\"name\\\":\\\"keyword.operator.expression.import.ts\\\"}]},\\\"type-parameters\\\":{\\\"begin\\\":\\\"(<)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.begin.ts\\\"}},\\\"end\\\":\\\"(>)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.typeparameters.end.ts\\\"}},\\\"name\\\":\\\"meta.type.parameters.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(extends|in|out|const)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"storage.modifier.ts\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"},{\\\"match\\\":\\\"(=)(?!>)\\\",\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}]},\\\"type-paren-or-function-parameters\\\":{\\\"begin\\\":\\\"\\\\\\\\(\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"end\\\":\\\"\\\\\\\\)\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.round.ts\\\"}},\\\"name\\\":\\\"meta.type.paren.cover.ts\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.function.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"entity.name.function.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=\\\\\\\\s*(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"5\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"}},\\\"match\\\":\\\"(?:(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(public|private|protected|readonly)\\\\\\\\s+)?(?:(\\\\\\\\.\\\\\\\\.\\\\\\\\.)\\\\\\\\s*)?(?<![:=])(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s*(\\\\\\\\??)(?=:)\\\"},{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.parameter.ts\\\"},{\\\"include\\\":\\\"#type\\\"}]},\\\"type-predicate-operator\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"},\\\"4\\\":{\\\"name\\\":\\\"keyword.operator.expression.is.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:(asserts)\\\\\\\\s+)?(?!asserts)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))\\\\\\\\s(is)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.type.asserts.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"variable.parameter.ts variable.language.this.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.parameter.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(asserts)\\\\\\\\s+(?!is)(?:(this)|([$_[:alpha:]][$_[:alnum:]]*))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))asserts(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.type.asserts.ts\\\"},{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))is(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"keyword.operator.expression.is.ts\\\"}]},\\\"type-primitive\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"support.type.primitive.ts\\\"},\\\"type-string\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#qstring-single\\\"},{\\\"include\\\":\\\"#qstring-double\\\"},{\\\"include\\\":\\\"#template-type\\\"}]},\\\"type-tuple\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"meta.brace.square.ts\\\"}},\\\"name\\\":\\\"meta.type.tuple.ts\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\",\\\"name\\\":\\\"keyword.operator.rest.ts\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"entity.name.label.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.optional.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"punctuation.separator.label.ts\\\"}},\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))([$_[:alpha:]][$_[:alnum:]]*)\\\\\\\\s*(\\\\\\\\?)?\\\\\\\\s*(:)\\\"},{\\\"include\\\":\\\"#type\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},\\\"typeof-operator\\\":{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))typeof(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"keyword.operator.expression.typeof.ts\\\"}},\\\"end\\\":\\\"(?=[]\\\\\\\\&),:;=>?{|}]|(extends\\\\\\\\s+)|$|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#type-arguments\\\"},{\\\"include\\\":\\\"#expression\\\"}]},\\\"undefined-literal\\\":{\\\"match\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))undefined(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\",\\\"name\\\":\\\"constant.language.undefined.ts\\\"},\\\"var-expr\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!^let|[^$._[:alnum:]]let|^var|[^$._[:alnum:]]var)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(var|let)(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-variable\\\"},{\\\"include\\\":\\\"#var-single-variable\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=^|[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]])const)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b(const(?!\\\\\\\\s+enum\\\\\\\\b))(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*(?=$|//)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#destructuring-const\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"begin\\\":\\\"(?=(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?!(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))((?=[;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b)|((?<!(?:^|[^$._[:alnum:]]|^await\\\\\\\\s+|[^$._[:alnum:]]await\\\\\\\\s+)using)(?=\\\\\\\\s*$)))\\\",\\\"name\\\":\\\"meta.var.expr.ts\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(?:\\\\\\\\b(export)\\\\\\\\s+)?(?:\\\\\\\\b(declare)\\\\\\\\s+)?\\\\\\\\b\\\\\\\\b(using(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])|await\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b)\\\\\\\\b(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.))\\\\\\\\s*\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.export.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.modifier.ts\\\"},\\\"3\\\":{\\\"name\\\":\\\"storage.type.ts\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\S)\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#variable-initializer\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"begin\\\":\\\"(,)\\\\\\\\s*((?!\\\\\\\\S)|(?=//))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.comma.ts\\\"}},\\\"end\\\":\\\"(?<!,)(((?=[;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|^\\\\\\\\s*$))|((?<=\\\\\\\\S)(?=\\\\\\\\s*$)))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#single-line-comment-consuming-line-ending\\\"},{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#var-single-const\\\"},{\\\"include\\\":\\\"#punctuation-comma\\\"}]},{\\\"include\\\":\\\"#punctuation-comma\\\"}]}]},\\\"var-single-const\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?(?=\\\\\\\\s*(=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>)))))|(:\\\\\\\\s*((<)|(\\\\\\\\(\\\\\\\\s*((\\\\\\\\))|(\\\\\\\\.\\\\\\\\.\\\\\\\\.)|([$_[:alnum:]]+\\\\\\\\s*(([,:=?])|(\\\\\\\\)\\\\\\\\s*=>)))))))|(:\\\\\\\\s*(?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))Function(?![$_[:alnum:]])(?:(?=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?!\\\\\\\\.)))|(:\\\\\\\\s*((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))))))|(:\\\\\\\\s*(=>|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(<[^<>]*>)|[^(),<=>])+=\\\\\\\\s*(((async\\\\\\\\s+)?((function\\\\\\\\s*[(*<])|(function\\\\\\\\s+)|([$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*=>)))|((async\\\\\\\\s*)?(((<\\\\\\\\s*)$|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*((([\\\\\\\\[{]\\\\\\\\s*)?)$|((\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\{?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*)))|((\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])\\\\\\\\s*((:\\\\\\\\s*\\\\\\\\[?)$|((\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+\\\\\\\\s*)?=\\\\\\\\s*))))))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*((\\\\\\\\)\\\\\\\\s*:)|((\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*)?[$_[:alpha:]][$_[:alnum:]]*\\\\\\\\s*:)))|((<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<]|<\\\\\\\\s*(((const\\\\\\\\s+)?[$_[:alpha:]])|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*]))([^<=>]|=[^<])*>)*>)*>\\\\\\\\s*)?\\\\\\\\(\\\\\\\\s*(/\\\\\\\\*([^*]|(\\\\\\\\*[^/]))*\\\\\\\\*/\\\\\\\\s*)*(([$_[:alpha:]]|(\\\\\\\\{([^{}]|(\\\\\\\\{([^{}]|\\\\\\\\{[^{}]*})*}))*})|(\\\\\\\\[([^]\\\\\\\\[]|(\\\\\\\\[([^]\\\\\\\\[]|\\\\\\\\[[^]\\\\\\\\[]*])*]))*])|(\\\\\\\\.\\\\\\\\.\\\\\\\\.\\\\\\\\s*[$_[:alpha:]]))([^\\\\\\\"'()`]|(\\\\\\\\(([^()]|(\\\\\\\\(([^()]|\\\\\\\\([^()]*\\\\\\\\))*\\\\\\\\)))*\\\\\\\\))|('([^'\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*')|(\\\\\\\"([^\\\\\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\.)*\\\\\\\")|(`([^\\\\\\\\\\\\\\\\`]|\\\\\\\\\\\\\\\\.)*`))*)?\\\\\\\\)(\\\\\\\\s*:\\\\\\\\s*([^()<>{}]|<([^<>]|<([^<>]|<[^<>]+>)+>)+>|\\\\\\\\([^()]+\\\\\\\\)|\\\\\\\\{[^{}]+})+)?\\\\\\\\s*=>))))))\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts entity.name.function.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"(\\\\\\\\p{upper}[$_\\\\\\\\d[:upper:]]*)(?![$_[:alnum:]])(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.constant.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]},{\\\"begin\\\":\\\"([$_[:alpha:]][$_[:alnum:]]*)(!)?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"meta.definition.variable.ts variable.other.readwrite.ts\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.operator.definiteassignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[,;=}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+)|(;|^\\\\\\\\s*$|^\\\\\\\\s*(?:abstract|async|\\\\\\\\bawait\\\\\\\\s+\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b\\\\\\\\b|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|\\\\\\\\busing(?=\\\\\\\\s+(?!in\\\\\\\\b|of\\\\\\\\b(?!\\\\\\\\s*(?:of\\\\\\\\b|=)))[$_[:alpha:]])\\\\\\\\b|var|while)\\\\\\\\b))\\\",\\\"name\\\":\\\"meta.var-single-variable.expr.ts\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#var-single-variable-type-annotation\\\"}]}]},\\\"var-single-variable-type-annotation\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#type-annotation\\\"},{\\\"include\\\":\\\"#string\\\"},{\\\"include\\\":\\\"#comment\\\"}]},\\\"variable-initializer\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)(?=\\\\\\\\s*\\\\\\\\S)(?!\\\\\\\\s*.*=>\\\\\\\\s*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=$|^|[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]},{\\\"begin\\\":\\\"(?<![!=])(=)(?!=)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.operator.assignment.ts\\\"}},\\\"end\\\":\\\"(?=[]),;}]|((?<![$_[:alnum:]])(?:(?<=\\\\\\\\.\\\\\\\\.\\\\\\\\.)|(?<!\\\\\\\\.))(of|in)\\\\\\\\s+))|(?=^\\\\\\\\s*$)|(?<![-\\\\\\\\&*+/|])(?<=\\\\\\\\S)(?<!=)(?=\\\\\\\\s*$)\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#expression\\\"}]}]}},\\\"scopeName\\\":\\\"source.ts\\\",\\\"aliases\\\":[\\\"ts\\\",\\\"cts\\\",\\\"mts\\\"]}\"))\n\nexport default [\nlang\n]\n", "const lang = Object.freeze(JSON.parse(\"{\\\"displayName\\\":\\\"YAML\\\",\\\"fileTypes\\\":[\\\"yaml\\\",\\\"yml\\\",\\\"rviz\\\",\\\"reek\\\",\\\"clang-format\\\",\\\"yaml-tmlanguage\\\",\\\"syntax\\\",\\\"sublime-syntax\\\"],\\\"firstLineMatch\\\":\\\"^%YAML( ?1.\\\\\\\\d+)?\\\",\\\"name\\\":\\\"yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#property\\\"},{\\\"include\\\":\\\"#directive\\\"},{\\\"match\\\":\\\"^---\\\",\\\"name\\\":\\\"entity.other.document.begin.yaml\\\"},{\\\"match\\\":\\\"^\\\\\\\\.{3}\\\",\\\"name\\\":\\\"entity.other.document.end.yaml\\\"},{\\\"include\\\":\\\"#node\\\"}],\\\"repository\\\":{\\\"block-collection\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block-sequence\\\"},{\\\"include\\\":\\\"#block-mapping\\\"}]},\\\"block-mapping\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block-pair\\\"}]},\\\"block-node\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"include\\\":\\\"#block-scalar\\\"},{\\\"include\\\":\\\"#block-collection\\\"},{\\\"include\\\":\\\"#flow-scalar-plain-out\\\"},{\\\"include\\\":\\\"#flow-node\\\"}]},\\\"block-pair\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.definition.key-value.begin.yaml\\\"}},\\\"end\\\":\\\"(?=\\\\\\\\?)|^ *(:)|(:)\\\",\\\"endCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"invalid.illegal.expected-newline.yaml\\\"}},\\\"name\\\":\\\"meta.block-mapping.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#block-node\\\"}]},{\\\"begin\\\":\\\"(?=(?:[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?]\\\\\\\\S)([^:\\\\\\\\s]|:\\\\\\\\S|\\\\\\\\s+(?![#\\\\\\\\s]))*\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-out-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?]\\\\\\\\S\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.yaml\\\"}},\\\"contentName\\\":\\\"entity.name.tag.yaml\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"name\\\":\\\"string.unquoted.plain.out.yaml\\\"}]},{\\\"match\\\":\\\":(?=\\\\\\\\s|$)\\\",\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"}]},\\\"block-scalar\\\":{\\\"begin\\\":\\\"(?:(\\\\\\\\|)|(>))([1-9])?([-+])?(.*\\\\\\\\n?)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.block-scalar.literal.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"keyword.control.flow.block-scalar.folded.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.indentation-indicator.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"storage.modifier.chomping-indicator.yaml\\\"},\\\"5\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"match\\\":\\\".+\\\",\\\"name\\\":\\\"invalid.illegal.expected-comment-or-newline.yaml\\\"}]}},\\\"end\\\":\\\"^(?=\\\\\\\\S)|(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"^( +)(?! )\\\",\\\"end\\\":\\\"^(?!\\\\\\\\1|\\\\\\\\s*$)\\\",\\\"name\\\":\\\"string.unquoted.block.yaml\\\"}]},\\\"block-sequence\\\":{\\\"match\\\":\\\"(-)(?!\\\\\\\\S)\\\",\\\"name\\\":\\\"punctuation.definition.block.sequence.item.yaml\\\"},\\\"comment\\\":{\\\"begin\\\":\\\"(?:^([\\\\\\\\t ]*)|[\\\\\\\\t ]+)(?=#\\\\\\\\p{print}*$)\\\",\\\"beginCaptures\\\":{\\\"1\\\":{\\\"name\\\":\\\"punctuation.whitespace.comment.leading.yaml\\\"}},\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"patterns\\\":[{\\\"begin\\\":\\\"#\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.comment.yaml\\\"}},\\\"end\\\":\\\"\\\\\\\\n\\\",\\\"name\\\":\\\"comment.line.number-sign.yaml\\\"}]},\\\"directive\\\":{\\\"begin\\\":\\\"^%\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.directive.begin.yaml\\\"}},\\\"end\\\":\\\"(?=$|[\\\\\\\\t ]+($|#))\\\",\\\"name\\\":\\\"meta.directive.yaml\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.directive.yaml.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.numeric.yaml-version.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G(YAML)[\\\\\\\\t ]+(\\\\\\\\d+\\\\\\\\.\\\\\\\\d+)\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.other.directive.tag.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"storage.type.tag-handle.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"support.type.tag-prefix.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G(TAG)(?:[\\\\\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\\\\\t ]+(!(?:%\\\\\\\\h{2}|[]!#$\\\\\\\\&-;=?-\\\\\\\\[_a-z~])*|(?![]!,\\\\\\\\[{}])(?:%\\\\\\\\h{2}|[]!#$\\\\\\\\&-;=?-\\\\\\\\[_a-z~])+))?)?\\\"},{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"support.other.directive.reserved.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"string.unquoted.directive-name.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"string.unquoted.directive-parameter.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G(\\\\\\\\w+)(?:[\\\\\\\\t ]+(\\\\\\\\w+)(?:[\\\\\\\\t ]+(\\\\\\\\w+))?)?\\\"},{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.unrecognized.yaml\\\"}]},\\\"flow-alias\\\":{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.flow.alias.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.alias.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"variable.other.alias.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"invalid.illegal.character.anchor.yaml\\\"}},\\\"match\\\":\\\"((\\\\\\\\*))([^],/\\\\\\\\[{}\\\\\\\\s]+)([^],}\\\\\\\\s]\\\\\\\\S*)?\\\"},\\\"flow-collection\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-sequence\\\"},{\\\"include\\\":\\\"#flow-mapping\\\"}]},\\\"flow-mapping\\\":{\\\"begin\\\":\\\"\\\\\\\\{\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.mapping.begin.yaml\\\"}},\\\"end\\\":\\\"}\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.mapping.end.yaml\\\"}},\\\"name\\\":\\\"meta.flow-mapping.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.mapping.yaml\\\"},{\\\"include\\\":\\\"#flow-pair\\\"}]},\\\"flow-node\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"include\\\":\\\"#flow-alias\\\"},{\\\"include\\\":\\\"#flow-collection\\\"},{\\\"include\\\":\\\"#flow-scalar\\\"}]},\\\"flow-pair\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\?\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.key-value.begin.yaml\\\"}},\\\"end\\\":\\\"(?=[],}])\\\",\\\"name\\\":\\\"meta.flow-pair.explicit.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"include\\\":\\\"#flow-pair\\\"},{\\\"include\\\":\\\"#flow-node\\\"},{\\\"begin\\\":\\\":(?=\\\\\\\\s|$|[],\\\\\\\\[{}])\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"}},\\\"end\\\":\\\"(?=[],}])\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-value\\\"}]}]},{\\\"begin\\\":\\\"(?=(?:[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?][^],\\\\\\\\[{}\\\\\\\\s])([^],:\\\\\\\\[{}\\\\\\\\s]|:[^],\\\\\\\\[{}\\\\\\\\s]|\\\\\\\\s+(?![#\\\\\\\\s]))*\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\",\\\"name\\\":\\\"meta.flow-pair.key.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-in-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?][^],\\\\\\\\[{}\\\\\\\\s]\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"entity.name.tag.yaml\\\"}},\\\"contentName\\\":\\\"entity.name.tag.yaml\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\",\\\"name\\\":\\\"string.unquoted.plain.in.yaml\\\"}]},{\\\"include\\\":\\\"#flow-node\\\"},{\\\"begin\\\":\\\":(?=\\\\\\\\s|$|[],\\\\\\\\[{}])\\\",\\\"captures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.separator.key-value.mapping.yaml\\\"}},\\\"end\\\":\\\"(?=[],}])\\\",\\\"name\\\":\\\"meta.flow-pair.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-value\\\"}]}]},\\\"flow-scalar\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-double-quoted\\\"},{\\\"include\\\":\\\"#flow-scalar-single-quoted\\\"},{\\\"include\\\":\\\"#flow-scalar-plain-in\\\"}]},\\\"flow-scalar-double-quoted\\\":{\\\"begin\\\":\\\"\\\\\\\"\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.yaml\\\"}},\\\"end\\\":\\\"\\\\\\\"\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.yaml\\\"}},\\\"name\\\":\\\"string.quoted.double.yaml\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\([ \\\\\\\"/0LN\\\\\\\\\\\\\\\\_abefnprtv]|x\\\\\\\\d\\\\\\\\d|u\\\\\\\\d{4}|U\\\\\\\\d{8})\\\",\\\"name\\\":\\\"constant.character.escape.yaml\\\"},{\\\"match\\\":\\\"\\\\\\\\\\\\\\\\\\\\\\\\n\\\",\\\"name\\\":\\\"constant.character.escape.double-quoted.newline.yaml\\\"}]},\\\"flow-scalar-plain-in\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-in-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?][^],\\\\\\\\[{}\\\\\\\\s]\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\",\\\"name\\\":\\\"string.unquoted.plain.in.yaml\\\"}]},\\\"flow-scalar-plain-in-implicit-type\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.null.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.language.boolean.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.integer.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.float.yaml\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.timestamp.yaml\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.language.value.yaml\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.language.merge.yaml\\\"}},\\\"match\\\":\\\"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\\\\\.[0-9_]*|[-+]?\\\\\\\\.(?:inf|Inf|INF)|\\\\\\\\.(?:nan|NaN|NAN))|(\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2}|\\\\\\\\d{4}-\\\\\\\\d{1,2}-\\\\\\\\d{1,2}(?:[Tt]|[\\\\\\\\t ]+)\\\\\\\\d{1,2}:\\\\\\\\d{2}:\\\\\\\\d{2}(?:\\\\\\\\.\\\\\\\\d*)?(?:[\\\\\\\\t ]*Z|[-+]\\\\\\\\d{1,2}(?::\\\\\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$)|\\\\\\\\s*:[],\\\\\\\\[{}]|\\\\\\\\s*[],\\\\\\\\[{}])\\\"}]},\\\"flow-scalar-plain-out\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-scalar-plain-out-implicit-type\\\"},{\\\"begin\\\":\\\"[^-\\\\\\\\]!\\\\\\\"#%\\\\\\\\&'*,:>?@\\\\\\\\[`{|}\\\\\\\\s]|[-:?]\\\\\\\\S\\\",\\\"end\\\":\\\"(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\",\\\"name\\\":\\\"string.unquoted.plain.out.yaml\\\"}]},\\\"flow-scalar-plain-out-implicit-type\\\":{\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"constant.language.null.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"constant.language.boolean.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"constant.numeric.integer.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"constant.numeric.float.yaml\\\"},\\\"5\\\":{\\\"name\\\":\\\"constant.other.timestamp.yaml\\\"},\\\"6\\\":{\\\"name\\\":\\\"constant.language.value.yaml\\\"},\\\"7\\\":{\\\"name\\\":\\\"constant.language.merge.yaml\\\"}},\\\"match\\\":\\\"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\\\\\.[0-9_]*|[-+]?\\\\\\\\.(?:inf|Inf|INF)|\\\\\\\\.(?:nan|NaN|NAN))|(\\\\\\\\d{4}-\\\\\\\\d{2}-\\\\\\\\d{2}|\\\\\\\\d{4}-\\\\\\\\d{1,2}-\\\\\\\\d{1,2}(?:[Tt]|[\\\\\\\\t ]+)\\\\\\\\d{1,2}:\\\\\\\\d{2}:\\\\\\\\d{2}(?:\\\\\\\\.\\\\\\\\d*)?(?:[\\\\\\\\t ]*Z|[-+]\\\\\\\\d{1,2}(?::\\\\\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\\\\\s*$|\\\\\\\\s+#|\\\\\\\\s*:(\\\\\\\\s|$))\\\"}]},\\\"flow-scalar-single-quoted\\\":{\\\"begin\\\":\\\"'\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.begin.yaml\\\"}},\\\"end\\\":\\\"'(?!')\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.string.end.yaml\\\"}},\\\"name\\\":\\\"string.quoted.single.yaml\\\",\\\"patterns\\\":[{\\\"match\\\":\\\"''\\\",\\\"name\\\":\\\"constant.character.escape.single-quoted.yaml\\\"}]},\\\"flow-sequence\\\":{\\\"begin\\\":\\\"\\\\\\\\[\\\",\\\"beginCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.sequence.begin.yaml\\\"}},\\\"end\\\":\\\"]\\\",\\\"endCaptures\\\":{\\\"0\\\":{\\\"name\\\":\\\"punctuation.definition.sequence.end.yaml\\\"}},\\\"name\\\":\\\"meta.flow-sequence.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#prototype\\\"},{\\\"match\\\":\\\",\\\",\\\"name\\\":\\\"punctuation.separator.sequence.yaml\\\"},{\\\"include\\\":\\\"#flow-pair\\\"},{\\\"include\\\":\\\"#flow-node\\\"}]},\\\"flow-value\\\":{\\\"patterns\\\":[{\\\"begin\\\":\\\"\\\\\\\\G(?![],}])\\\",\\\"end\\\":\\\"(?=[],}])\\\",\\\"name\\\":\\\"meta.flow-pair.value.yaml\\\",\\\"patterns\\\":[{\\\"include\\\":\\\"#flow-node\\\"}]}]},\\\"node\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#block-node\\\"}]},\\\"property\\\":{\\\"begin\\\":\\\"(?=[!\\\\\\\\&])\\\",\\\"end\\\":\\\"(?!\\\\\\\\G)\\\",\\\"name\\\":\\\"meta.property.yaml\\\",\\\"patterns\\\":[{\\\"captures\\\":{\\\"1\\\":{\\\"name\\\":\\\"keyword.control.property.anchor.yaml\\\"},\\\"2\\\":{\\\"name\\\":\\\"punctuation.definition.anchor.yaml\\\"},\\\"3\\\":{\\\"name\\\":\\\"entity.name.type.anchor.yaml\\\"},\\\"4\\\":{\\\"name\\\":\\\"invalid.illegal.character.anchor.yaml\\\"}},\\\"match\\\":\\\"\\\\\\\\G((&))([^],/\\\\\\\\[{}\\\\\\\\s]+)(\\\\\\\\S+)?\\\"},{\\\"match\\\":\\\"\\\\\\\\G!(?:<(?:%\\\\\\\\h{2}|[]!#$\\\\\\\\&-;=?-\\\\\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\\\\\h{2}|[#$\\\\\\\\&-+\\\\\\\\--;=?-Z_a-z~])+|)(?=[\\\\\\\\t ]|$)\\\",\\\"name\\\":\\\"storage.type.tag-handle.yaml\\\"},{\\\"match\\\":\\\"\\\\\\\\S+\\\",\\\"name\\\":\\\"invalid.illegal.tag-handle.yaml\\\"}]},\\\"prototype\\\":{\\\"patterns\\\":[{\\\"include\\\":\\\"#comment\\\"},{\\\"include\\\":\\\"#property\\\"}]}},\\\"scopeName\\\":\\\"source.yaml\\\",\\\"aliases\\\":[\\\"yml\\\"]}\"))\n\nexport default [\nlang\n]\n", "/* Theme: dark-plus */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"actionBar.toggledBackground\\\":\\\"#383a49\\\",\\\"activityBarBadge.background\\\":\\\"#007ACC\\\",\\\"checkbox.border\\\":\\\"#6B6B6B\\\",\\\"editor.background\\\":\\\"#1E1E1E\\\",\\\"editor.foreground\\\":\\\"#D4D4D4\\\",\\\"editor.inactiveSelectionBackground\\\":\\\"#3A3D41\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#ADD6FF26\\\",\\\"editorIndentGuide.activeBackground1\\\":\\\"#707070\\\",\\\"editorIndentGuide.background1\\\":\\\"#404040\\\",\\\"input.placeholderForeground\\\":\\\"#A6A6A6\\\",\\\"list.activeSelectionIconForeground\\\":\\\"#FFF\\\",\\\"list.dropBackground\\\":\\\"#383B3D\\\",\\\"menu.background\\\":\\\"#252526\\\",\\\"menu.border\\\":\\\"#454545\\\",\\\"menu.foreground\\\":\\\"#CCCCCC\\\",\\\"menu.selectionBackground\\\":\\\"#0078d4\\\",\\\"menu.separatorBackground\\\":\\\"#454545\\\",\\\"ports.iconRunningProcessForeground\\\":\\\"#369432\\\",\\\"sideBarSectionHeader.background\\\":\\\"#0000\\\",\\\"sideBarSectionHeader.border\\\":\\\"#ccc3\\\",\\\"sideBarTitle.foreground\\\":\\\"#BBBBBB\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#16825D\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#FFF\\\",\\\"tab.lastPinnedBorder\\\":\\\"#ccc3\\\",\\\"tab.selectedBackground\\\":\\\"#222222\\\",\\\"tab.selectedForeground\\\":\\\"#ffffffa0\\\",\\\"terminal.inactiveSelectionBackground\\\":\\\"#3A3D41\\\",\\\"widget.border\\\":\\\"#303031\\\"},\\\"displayName\\\":\\\"Dark Plus\\\",\\\"name\\\":\\\"dark-plus\\\",\\\"semanticHighlighting\\\":true,\\\"semanticTokenColors\\\":{\\\"customLiteral\\\":\\\"#DCDCAA\\\",\\\"newOperator\\\":\\\"#C586C0\\\",\\\"numberLiteral\\\":\\\"#b5cea8\\\",\\\"stringLiteral\\\":\\\"#ce9178\\\"},\\\"tokenColors\\\":[{\\\"scope\\\":[\\\"meta.embedded\\\",\\\"source.groovy.embedded\\\",\\\"string meta.image.inline.markdown\\\",\\\"variable.legacy.builtin.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#D4D4D4\\\"}},{\\\"scope\\\":\\\"emphasis\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"strong\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\"}},{\\\"scope\\\":\\\"header\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000080\\\"}},{\\\"scope\\\":\\\"comment\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"}},{\\\"scope\\\":\\\"constant.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"constant.numeric\\\",\\\"variable.other.enummember\\\",\\\"keyword.operator.plus.exponent\\\",\\\"keyword.operator.minus.exponent\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":\\\"constant.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#646695\\\"}},{\\\"scope\\\":\\\"entity.name.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"entity.name.tag.css\\\",\\\"entity.name.tag.less\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":\\\"entity.other.attribute-name\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name.class.css\\\",\\\"source.css entity.other.attribute-name.class\\\",\\\"entity.other.attribute-name.id.css\\\",\\\"entity.other.attribute-name.parent-selector.css\\\",\\\"entity.other.attribute-name.parent.less\\\",\\\"source.css entity.other.attribute-name.pseudo-class\\\",\\\"entity.other.attribute-name.pseudo-element.css\\\",\\\"source.css.less entity.other.attribute-name.id\\\",\\\"entity.other.attribute-name.scss\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":\\\"invalid\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#f44747\\\"}},{\\\"scope\\\":\\\"markup.underline\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"}},{\\\"scope\\\":\\\"markup.bold\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"markup.heading\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"markup.italic\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"markup.strikethrough\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"strikethrough\\\"}},{\\\"scope\\\":\\\"markup.inserted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":\\\"markup.deleted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"markup.changed\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"punctuation.definition.quote.begin.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"}},{\\\"scope\\\":\\\"punctuation.definition.list.begin.markdown\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#6796e6\\\"}},{\\\"scope\\\":\\\"markup.inline.raw\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"punctuation.definition.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#808080\\\"}},{\\\"scope\\\":[\\\"meta.preprocessor\\\",\\\"entity.name.function.preprocessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.string\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.numeric\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":\\\"meta.structure.dictionary.key.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":\\\"meta.diff.header\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"storage\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"storage.type\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"storage.modifier\\\",\\\"keyword.operator.noexcept\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"string\\\",\\\"meta.embedded.assembly\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"string.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"string.value\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"}},{\\\"scope\\\":\\\"string.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.template-expression.begin\\\",\\\"punctuation.definition.template-expression.end\\\",\\\"punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"meta.template.expression\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"}},{\\\"scope\\\":[\\\"support.type.vendored.property-name\\\",\\\"support.type.property-name\\\",\\\"source.css variable\\\",\\\"source.coffee.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":\\\"keyword\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"keyword.control\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"keyword.operator\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"}},{\\\"scope\\\":[\\\"keyword.operator.new\\\",\\\"keyword.operator.expression\\\",\\\"keyword.operator.cast\\\",\\\"keyword.operator.sizeof\\\",\\\"keyword.operator.alignof\\\",\\\"keyword.operator.typeid\\\",\\\"keyword.operator.alignas\\\",\\\"keyword.operator.instanceof\\\",\\\"keyword.operator.logical.python\\\",\\\"keyword.operator.wordlike\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"keyword.other.unit\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":[\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.end.php\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"support.function.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"}},{\\\"scope\\\":\\\"constant.sha.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"}},{\\\"scope\\\":[\\\"storage.modifier.import.java\\\",\\\"variable.language.wildcard.java\\\",\\\"storage.modifier.package.java\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"}},{\\\"scope\\\":\\\"variable.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":[\\\"entity.name.function\\\",\\\"support.function\\\",\\\"support.constant.handlebars\\\",\\\"source.powershell variable.other.member\\\",\\\"entity.name.operator.custom-literal\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"}},{\\\"scope\\\":[\\\"support.class\\\",\\\"support.type\\\",\\\"entity.name.type\\\",\\\"entity.name.namespace\\\",\\\"entity.other.attribute\\\",\\\"entity.name.scope-resolution\\\",\\\"entity.name.class\\\",\\\"storage.type.numeric.go\\\",\\\"storage.type.byte.go\\\",\\\"storage.type.boolean.go\\\",\\\"storage.type.string.go\\\",\\\"storage.type.uintptr.go\\\",\\\"storage.type.error.go\\\",\\\"storage.type.rune.go\\\",\\\"storage.type.cs\\\",\\\"storage.type.generic.cs\\\",\\\"storage.type.modifier.cs\\\",\\\"storage.type.variable.cs\\\",\\\"storage.type.annotation.java\\\",\\\"storage.type.generic.java\\\",\\\"storage.type.java\\\",\\\"storage.type.object.array.java\\\",\\\"storage.type.primitive.array.java\\\",\\\"storage.type.primitive.java\\\",\\\"storage.type.token.java\\\",\\\"storage.type.groovy\\\",\\\"storage.type.annotation.groovy\\\",\\\"storage.type.parameters.groovy\\\",\\\"storage.type.generic.groovy\\\",\\\"storage.type.object.array.groovy\\\",\\\"storage.type.primitive.array.groovy\\\",\\\"storage.type.primitive.groovy\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"}},{\\\"scope\\\":[\\\"meta.type.cast.expr\\\",\\\"meta.type.new.expr\\\",\\\"support.constant.math\\\",\\\"support.constant.dom\\\",\\\"support.constant.json\\\",\\\"entity.other.inherited-class\\\",\\\"punctuation.separator.namespace.ruby\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"}},{\\\"scope\\\":[\\\"keyword.control\\\",\\\"source.cpp keyword.operator.new\\\",\\\"keyword.operator.delete\\\",\\\"keyword.other.using\\\",\\\"keyword.other.directive.using\\\",\\\"keyword.other.operator\\\",\\\"entity.name.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#C586C0\\\"}},{\\\"scope\\\":[\\\"variable\\\",\\\"meta.definition.variable.name\\\",\\\"support.variable\\\",\\\"entity.name.variable\\\",\\\"constant.other.placeholder\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"}},{\\\"scope\\\":[\\\"variable.other.constant\\\",\\\"variable.other.enummember\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#4FC1FF\\\"}},{\\\"scope\\\":[\\\"meta.object-literal.key\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"}},{\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.group.regexp\\\",\\\"punctuation.definition.group.assertion.regexp\\\",\\\"punctuation.definition.character-class.regexp\\\",\\\"punctuation.character.set.begin.regexp\\\",\\\"punctuation.character.set.end.regexp\\\",\\\"keyword.operator.negation.regexp\\\",\\\"support.other.parenthesis.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"}},{\\\"scope\\\":[\\\"constant.character.character-class.regexp\\\",\\\"constant.other.character-class.set.regexp\\\",\\\"constant.other.character-class.regexp\\\",\\\"constant.character.set.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"}},{\\\"scope\\\":[\\\"keyword.operator.or.regexp\\\",\\\"keyword.control.anchor.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"}},{\\\"scope\\\":\\\"keyword.operator.quantifier.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":[\\\"constant.character\\\",\\\"constant.other.option\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"}},{\\\"scope\\\":\\\"constant.character.escape\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"}},{\\\"scope\\\":\\\"entity.name.label\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#C8C8C8\\\"}}],\\\"type\\\":\\\"dark\\\"}\"))\n", "/* Theme: light-plus */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"actionBar.toggledBackground\\\":\\\"#dddddd\\\",\\\"activityBarBadge.background\\\":\\\"#007ACC\\\",\\\"checkbox.border\\\":\\\"#919191\\\",\\\"diffEditor.unchangedRegionBackground\\\":\\\"#f8f8f8\\\",\\\"editor.background\\\":\\\"#FFFFFF\\\",\\\"editor.foreground\\\":\\\"#000000\\\",\\\"editor.inactiveSelectionBackground\\\":\\\"#E5EBF1\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#ADD6FF80\\\",\\\"editorIndentGuide.activeBackground1\\\":\\\"#939393\\\",\\\"editorIndentGuide.background1\\\":\\\"#D3D3D3\\\",\\\"editorSuggestWidget.background\\\":\\\"#F3F3F3\\\",\\\"input.placeholderForeground\\\":\\\"#767676\\\",\\\"list.activeSelectionIconForeground\\\":\\\"#FFF\\\",\\\"list.focusAndSelectionOutline\\\":\\\"#90C2F9\\\",\\\"list.hoverBackground\\\":\\\"#E8E8E8\\\",\\\"menu.border\\\":\\\"#D4D4D4\\\",\\\"notebook.cellBorderColor\\\":\\\"#E8E8E8\\\",\\\"notebook.selectedCellBackground\\\":\\\"#c8ddf150\\\",\\\"ports.iconRunningProcessForeground\\\":\\\"#369432\\\",\\\"searchEditor.textInputBorder\\\":\\\"#CECECE\\\",\\\"settings.numberInputBorder\\\":\\\"#CECECE\\\",\\\"settings.textInputBorder\\\":\\\"#CECECE\\\",\\\"sideBarSectionHeader.background\\\":\\\"#0000\\\",\\\"sideBarSectionHeader.border\\\":\\\"#61616130\\\",\\\"sideBarTitle.foreground\\\":\\\"#6F6F6F\\\",\\\"statusBarItem.errorBackground\\\":\\\"#c72e0f\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#16825D\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#FFF\\\",\\\"tab.lastPinnedBorder\\\":\\\"#61616130\\\",\\\"tab.selectedBackground\\\":\\\"#ffffffa5\\\",\\\"tab.selectedForeground\\\":\\\"#333333b3\\\",\\\"terminal.inactiveSelectionBackground\\\":\\\"#E5EBF1\\\",\\\"widget.border\\\":\\\"#d4d4d4\\\"},\\\"displayName\\\":\\\"Light Plus\\\",\\\"name\\\":\\\"light-plus\\\",\\\"semanticHighlighting\\\":true,\\\"semanticTokenColors\\\":{\\\"customLiteral\\\":\\\"#795E26\\\",\\\"newOperator\\\":\\\"#AF00DB\\\",\\\"numberLiteral\\\":\\\"#098658\\\",\\\"stringLiteral\\\":\\\"#a31515\\\"},\\\"tokenColors\\\":[{\\\"scope\\\":[\\\"meta.embedded\\\",\\\"source.groovy.embedded\\\",\\\"string meta.image.inline.markdown\\\",\\\"variable.legacy.builtin.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#000000ff\\\"}},{\\\"scope\\\":\\\"emphasis\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"strong\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\"}},{\\\"scope\\\":\\\"meta.diff.header\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000080\\\"}},{\\\"scope\\\":\\\"comment\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#008000\\\"}},{\\\"scope\\\":\\\"constant.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"constant.numeric\\\",\\\"variable.other.enummember\\\",\\\"keyword.operator.plus.exponent\\\",\\\"keyword.operator.minus.exponent\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":\\\"constant.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#811f3f\\\"}},{\\\"scope\\\":\\\"entity.name.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"entity.name.selector\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"entity.other.attribute-name\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#e50000\\\"}},{\\\"scope\\\":[\\\"entity.other.attribute-name.class.css\\\",\\\"source.css entity.other.attribute-name.class\\\",\\\"entity.other.attribute-name.id.css\\\",\\\"entity.other.attribute-name.parent-selector.css\\\",\\\"entity.other.attribute-name.parent.less\\\",\\\"source.css entity.other.attribute-name.pseudo-class\\\",\\\"entity.other.attribute-name.pseudo-element.css\\\",\\\"source.css.less entity.other.attribute-name.id\\\",\\\"entity.other.attribute-name.scss\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"invalid\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#cd3131\\\"}},{\\\"scope\\\":\\\"markup.underline\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"}},{\\\"scope\\\":\\\"markup.bold\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#000080\\\"}},{\\\"scope\\\":\\\"markup.heading\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"markup.italic\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"}},{\\\"scope\\\":\\\"markup.strikethrough\\\",\\\"settings\\\":{\\\"fontStyle\\\":\\\"strikethrough\\\"}},{\\\"scope\\\":\\\"markup.inserted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":\\\"markup.deleted\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#a31515\\\"}},{\\\"scope\\\":\\\"markup.changed\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.quote.begin.markdown\\\",\\\"punctuation.definition.list.begin.markdown\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"markup.inline.raw\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"punctuation.definition.tag\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":[\\\"meta.preprocessor\\\",\\\"entity.name.function.preprocessor\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.string\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#a31515\\\"}},{\\\"scope\\\":\\\"meta.preprocessor.numeric\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":\\\"meta.structure.dictionary.key.python\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"storage\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"storage.type\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"storage.modifier\\\",\\\"keyword.operator.noexcept\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"string\\\",\\\"meta.embedded.assembly\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#a31515\\\"}},{\\\"scope\\\":[\\\"string.comment.buffered.block.pug\\\",\\\"string.quoted.pug\\\",\\\"string.interpolated.pug\\\",\\\"string.unquoted.plain.in.yaml\\\",\\\"string.unquoted.plain.out.yaml\\\",\\\"string.unquoted.block.yaml\\\",\\\"string.quoted.single.yaml\\\",\\\"string.quoted.double.xml\\\",\\\"string.quoted.single.xml\\\",\\\"string.unquoted.cdata.xml\\\",\\\"string.quoted.double.html\\\",\\\"string.quoted.single.html\\\",\\\"string.unquoted.html\\\",\\\"string.quoted.single.handlebars\\\",\\\"string.quoted.double.handlebars\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"string.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#811f3f\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.template-expression.begin\\\",\\\"punctuation.definition.template-expression.end\\\",\\\"punctuation.section.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"meta.template.expression\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":[\\\"support.type.vendored.property-name\\\",\\\"support.type.property-name\\\",\\\"source.css variable\\\",\\\"source.coffee.embedded\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#e50000\\\"}},{\\\"scope\\\":[\\\"support.type.property-name.json\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"keyword\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"keyword.control\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"keyword.operator\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"keyword.operator.new\\\",\\\"keyword.operator.expression\\\",\\\"keyword.operator.cast\\\",\\\"keyword.operator.sizeof\\\",\\\"keyword.operator.alignof\\\",\\\"keyword.operator.typeid\\\",\\\"keyword.operator.alignas\\\",\\\"keyword.operator.instanceof\\\",\\\"keyword.operator.logical.python\\\",\\\"keyword.operator.wordlike\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"keyword.other.unit\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":[\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.end.php\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#800000\\\"}},{\\\"scope\\\":\\\"support.function.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":\\\"constant.sha.git-rebase\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#098658\\\"}},{\\\"scope\\\":[\\\"storage.modifier.import.java\\\",\\\"variable.language.wildcard.java\\\",\\\"storage.modifier.package.java\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":\\\"variable.language\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":[\\\"entity.name.function\\\",\\\"support.function\\\",\\\"support.constant.handlebars\\\",\\\"source.powershell variable.other.member\\\",\\\"entity.name.operator.custom-literal\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#795E26\\\"}},{\\\"scope\\\":[\\\"support.class\\\",\\\"support.type\\\",\\\"entity.name.type\\\",\\\"entity.name.namespace\\\",\\\"entity.other.attribute\\\",\\\"entity.name.scope-resolution\\\",\\\"entity.name.class\\\",\\\"storage.type.numeric.go\\\",\\\"storage.type.byte.go\\\",\\\"storage.type.boolean.go\\\",\\\"storage.type.string.go\\\",\\\"storage.type.uintptr.go\\\",\\\"storage.type.error.go\\\",\\\"storage.type.rune.go\\\",\\\"storage.type.cs\\\",\\\"storage.type.generic.cs\\\",\\\"storage.type.modifier.cs\\\",\\\"storage.type.variable.cs\\\",\\\"storage.type.annotation.java\\\",\\\"storage.type.generic.java\\\",\\\"storage.type.java\\\",\\\"storage.type.object.array.java\\\",\\\"storage.type.primitive.array.java\\\",\\\"storage.type.primitive.java\\\",\\\"storage.type.token.java\\\",\\\"storage.type.groovy\\\",\\\"storage.type.annotation.groovy\\\",\\\"storage.type.parameters.groovy\\\",\\\"storage.type.generic.groovy\\\",\\\"storage.type.object.array.groovy\\\",\\\"storage.type.primitive.array.groovy\\\",\\\"storage.type.primitive.groovy\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#267f99\\\"}},{\\\"scope\\\":[\\\"meta.type.cast.expr\\\",\\\"meta.type.new.expr\\\",\\\"support.constant.math\\\",\\\"support.constant.dom\\\",\\\"support.constant.json\\\",\\\"entity.other.inherited-class\\\",\\\"punctuation.separator.namespace.ruby\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#267f99\\\"}},{\\\"scope\\\":[\\\"keyword.control\\\",\\\"source.cpp keyword.operator.new\\\",\\\"source.cpp keyword.operator.delete\\\",\\\"keyword.other.using\\\",\\\"keyword.other.directive.using\\\",\\\"keyword.other.operator\\\",\\\"entity.name.operator\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#AF00DB\\\"}},{\\\"scope\\\":[\\\"variable\\\",\\\"meta.definition.variable.name\\\",\\\"support.variable\\\",\\\"entity.name.variable\\\",\\\"constant.other.placeholder\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#001080\\\"}},{\\\"scope\\\":[\\\"variable.other.constant\\\",\\\"variable.other.enummember\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0070C1\\\"}},{\\\"scope\\\":[\\\"meta.object-literal.key\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#001080\\\"}},{\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0451a5\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.group.regexp\\\",\\\"punctuation.definition.group.assertion.regexp\\\",\\\"punctuation.definition.character-class.regexp\\\",\\\"punctuation.character.set.begin.regexp\\\",\\\"punctuation.character.set.end.regexp\\\",\\\"keyword.operator.negation.regexp\\\",\\\"support.other.parenthesis.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"}},{\\\"scope\\\":[\\\"constant.character.character-class.regexp\\\",\\\"constant.other.character-class.set.regexp\\\",\\\"constant.other.character-class.regexp\\\",\\\"constant.character.set.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#811f3f\\\"}},{\\\"scope\\\":\\\"keyword.operator.quantifier.regexp\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}},{\\\"scope\\\":[\\\"keyword.operator.or.regexp\\\",\\\"keyword.control.anchor.regexp\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#EE0000\\\"}},{\\\"scope\\\":[\\\"constant.character\\\",\\\"constant.other.option\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#0000ff\\\"}},{\\\"scope\\\":\\\"constant.character.escape\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#EE0000\\\"}},{\\\"scope\\\":\\\"entity.name.label\\\",\\\"settings\\\":{\\\"foreground\\\":\\\"#000000\\\"}}],\\\"type\\\":\\\"light\\\"}\"))\n", "export const SHIKI_LIGHT_THEME = \"light-plus\";\nexport const SHIKI_DARK_THEME = \"dark-plus\";\n\nconst LANGUAGE_ALIASES: Record<string, string> = {\n bash: \"sh\",\n golang: \"go\",\n javascript: \"js\",\n markdown: \"md\",\n plaintext: \"text\",\n py: \"python\",\n shell: \"sh\",\n text: \"text\",\n ts: \"ts\",\n typescript: \"ts\",\n xml: \"html\",\n yml: \"yaml\",\n zsh: \"sh\"\n};\n\nconst SUPPORTED_LANGUAGES = new Set([\n \"css\",\n \"go\",\n \"html\",\n \"js\",\n \"jsx\",\n \"json\",\n \"md\",\n \"python\",\n \"sh\",\n \"sql\",\n \"text\",\n \"tsx\",\n \"ts\",\n \"yaml\"\n]);\n\nexport function normalizeCodeLanguage(language: string | undefined): string {\n const raw = (language || \"text\").trim().toLowerCase().split(/\\s+/)[0] || \"text\";\n const normalized = LANGUAGE_ALIASES[raw] || raw;\n return SUPPORTED_LANGUAGES.has(normalized) ? normalized : \"text\";\n}\n", "import { createHighlighterCore, type HighlighterCore } from \"shiki/core\";\nimport { createJavaScriptRegexEngine } from \"shiki/engine/javascript\";\nimport css from \"@shikijs/langs/css\";\nimport go from \"@shikijs/langs/go\";\nimport html from \"@shikijs/langs/html\";\nimport javascript from \"@shikijs/langs/javascript\";\nimport json from \"@shikijs/langs/json\";\nimport jsx from \"@shikijs/langs/jsx\";\nimport markdown from \"@shikijs/langs/md\";\nimport python from \"@shikijs/langs/python\";\nimport shell from \"@shikijs/langs/sh\";\nimport sql from \"@shikijs/langs/sql\";\nimport tsx from \"@shikijs/langs/tsx\";\nimport typescript from \"@shikijs/langs/typescript\";\nimport yaml from \"@shikijs/langs/yaml\";\nimport darkPlus from \"@shikijs/themes/dark-plus\";\nimport lightPlus from \"@shikijs/themes/light-plus\";\nimport { normalizeCodeLanguage, SHIKI_DARK_THEME, SHIKI_LIGHT_THEME } from \"../../src/markdown/highlightLanguage\";\nimport { escapeHtml } from \"../../src/utils/html\";\n\nlet highlighterPromise: Promise<HighlighterCore> | undefined;\n\nexport { normalizeCodeLanguage, SHIKI_DARK_THEME, SHIKI_LIGHT_THEME };\n\nexport async function highlightCodeBlockHtml(code: string, language: string | undefined): Promise<string> {\n const normalizedLanguage = normalizeCodeLanguage(language);\n try {\n const highlighter = await getHighlighter();\n const html = highlighter.codeToHtml(code, {\n lang: normalizedLanguage,\n themes: {\n light: SHIKI_LIGHT_THEME,\n dark: SHIKI_DARK_THEME\n },\n defaultColor: false\n });\n return extractCodeHtml(html, code);\n } catch {\n return renderPlainCodeLinesHtml(code);\n }\n}\n\nfunction renderPlainCodeLinesHtml(code: string): string {\n const normalized = code.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n return normalized\n .split(\"\\n\")\n .map((line) => `<span class=\"line\">${escapeHtml(line)}</span>`)\n .join(\"\\n\");\n}\n\nfunction getHighlighter(): Promise<HighlighterCore> {\n if (!highlighterPromise) {\n highlighterPromise = createHighlighterCore({\n themes: [lightPlus, darkPlus],\n langs: [\n css,\n go,\n html,\n javascript,\n json,\n jsx,\n markdown,\n python,\n shell,\n sql,\n tsx,\n typescript,\n yaml\n ],\n engine: createJavaScriptRegexEngine()\n });\n }\n return highlighterPromise;\n}\n\nfunction extractCodeHtml(html: string, fallbackCode: string): string {\n const match = html.match(/<code>([\\s\\S]*)<\\/code>\\s*<\\/pre>$/);\n return match ? match[1] : renderPlainCodeLinesHtml(fallbackCode);\n}\n", "export interface ToolbarGroup {\n name: string;\n actions: string[];\n}\n\nexport const TOOLBAR_GROUPS: ToolbarGroup[] = [\n { name: \"text\", actions: [\"bold\", \"italic\", \"underline\", \"strike\", \"highlight\"] },\n { name: \"structure\", actions: [\"heading\", \"hr\", \"quote\", \"list\", \"ordered-list\", \"task\", \"task-checked\"] },\n { name: \"insert\", actions: [\"link\", \"image\", \"inline-code\", \"code\", \"table\"] },\n { name: \"advanced\", actions: [\"math\", \"mermaid\", \"toc\", \"organizeMarkdown\", \"more\"] },\n { name: \"help\", actions: [\"switchBackgroundTheme\", \"switchDisplayLanguage\", \"help\"] }\n];\n\nexport const HEADING_MENU_ACTIONS = [\"heading-1\", \"heading-2\", \"heading-3\", \"heading-4\", \"heading-5\", \"heading-6\"];\n\nexport const MORE_MENU_ACTIONS = [\"export-html\", \"export-pdf\", \"export-all\"];\n\nexport const HOST_TOOLBAR_ACTIONS = new Set([\n \"toc\",\n \"organizeMarkdown\",\n \"switchBackgroundTheme\",\n \"switchDisplayLanguage\",\n \"help\",\n \"export-html\",\n \"export-pdf\",\n \"export-all\"\n]);\n\nexport const SUPER_MARKDOWN_ISSUES_URL = \"https://github.com/SivanCola/super-markdown/issues\";\n\nconst TOOLBAR_CODICON_ACTIONS: Record<string, string> = {\n bold: \"bold\",\n italic: \"italic\",\n strike: \"strikethrough\",\n heading: \"text-size\",\n \"heading-1\": \"text-size\",\n \"heading-2\": \"text-size\",\n \"heading-3\": \"text-size\",\n \"heading-4\": \"text-size\",\n \"heading-5\": \"text-size\",\n \"heading-6\": \"text-size\",\n hr: \"horizontal-rule\",\n quote: \"quote\",\n list: \"list-unordered\",\n \"ordered-list\": \"list-ordered\",\n task: \"tasklist\",\n \"task-checked\": \"check-all\",\n link: \"link\",\n image: \"file-media\",\n \"inline-code\": \"code\",\n code: \"file-code\",\n table: \"table\",\n toc: \"list-tree\",\n organizeMarkdown: \"tools\",\n switchBackgroundTheme: \"color-mode\",\n switchDisplayLanguage: \"globe\",\n help: \"question\",\n more: \"more\",\n \"export-html\": \"export\",\n \"export-pdf\": \"export\",\n \"export-all\": \"export\"\n};\n\nconst TOOLBAR_CUSTOM_ICONS: Record<string, string> = {\n underline: customSvg('<path d=\"M7 4v5a5 5 0 0 0 10 0V4\"/><path d=\"M5 20h14\"/>'),\n highlight: customSvg('<path d=\"m5 15 8.8-8.8 2 2L7 17H5v-2Z\"/><path d=\"m12.5 7.5 2 2\"/><path d=\"M4 20h16\"/>'),\n math: customSvg('<path d=\"M17 5H7l5 7-5 7h10\"/>'),\n mermaid: customSvg('<path d=\"M12 4v5\"/><path d=\"M6 15v2a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-2\"/><rect x=\"9\" y=\"3\" width=\"6\" height=\"4\" rx=\"1\"/><rect x=\"3\" y=\"11\" width=\"6\" height=\"4\" rx=\"1\"/><rect x=\"15\" y=\"11\" width=\"6\" height=\"4\" rx=\"1\"/><path d=\"M12 9H6v2\"/><path d=\"M12 9h6v2\"/>')\n};\n\nexport function renderToolbarIcon(action: string): string {\n const customIcon = TOOLBAR_CUSTOM_ICONS[action];\n if (customIcon) {\n return customIcon;\n }\n const codicon = TOOLBAR_CODICON_ACTIONS[action] || \"question\";\n return `<span class=\"codicon codicon-${codicon}\"></span>`;\n}\n\nfunction customSvg(content: string): string {\n return `<svg class=\"toolbar-custom-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">${content}</svg>`;\n}\n", "import { Editor, defaultValueCtx, editorViewCtx, nodeViewCtx, rootCtx } from \"@milkdown/kit/core\";\nimport type { Node as ProseNode } from \"@milkdown/kit/prose/model\";\nimport type { NodeView } from \"@milkdown/kit/prose/view\";\nimport remarkMath from \"remark-math\";\nimport {\n commonmark,\n createCodeBlockCommand,\n insertHrCommand,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleLinkCommand,\n toggleStrongCommand,\n wrapInBlockquoteCommand,\n wrapInBulletListCommand,\n wrapInHeadingCommand,\n wrapInOrderedListCommand\n} from \"@milkdown/kit/preset/commonmark\";\nimport { gfm, insertTableCommand, toggleStrikethroughCommand } from \"@milkdown/kit/preset/gfm\";\nimport { listener, listenerCtx } from \"@milkdown/kit/plugin/listener\";\nimport { clipboard } from \"@milkdown/kit/plugin/clipboard\";\nimport { history } from \"@milkdown/kit/plugin/history\";\nimport { trailing } from \"@milkdown/kit/plugin/trailing\";\nimport { upload, uploadConfig } from \"@milkdown/kit/plugin/upload\";\nimport { $nodeSchema, $remark, callCommand, getMarkdown, insert, replaceAll, replaceRange } from \"@milkdown/kit/utils\";\nimport {\n CODE_BLOCK_CLASSES,\n codeBlockToneLabel,\n nextCodeBlockTone,\n normalizeCodeBlockTone,\n type BlockToneLabels,\n type CodeCopyLabels\n} from \"../../src/markdown/codeBlockActions\";\nimport {\n detectBlockquoteAdmonition,\n isSafeInlineHtmlTag,\n renderInertInlineHtml,\n renderKatexHtml,\n resolveFootnoteReference,\n type SafeInlineHtmlTag\n} from \"../../src/markdown/features\";\nimport { highlightCodeBlockHtml, normalizeCodeLanguage } from \"./highlight-runtime\";\nimport { HEADING_MENU_ACTIONS, MORE_MENU_ACTIONS, renderToolbarIcon, SUPER_MARKDOWN_ISSUES_URL, TOOLBAR_GROUPS } from \"../../src/wysiwyg/toolbar\";\nimport type { ImageResource } from \"../../src/wysiwyg/protocol\";\n\ndeclare const acquireVsCodeApi: () => {\n postMessage(message: unknown): void;\n getState(): unknown;\n setState(state: unknown): void;\n};\n\ntype PreviewState = {\n markdown: string;\n html: string;\n headings: Array<{ level: number; text: string; slug?: string; line: number }>;\n};\n\ntype Payload = {\n text?: string;\n mode?: string;\n layout?: string;\n mermaidScript?: string;\n preview?: PreviewState;\n imageResources?: ImageResource[];\n katexEnabled?: boolean;\n translations?: {\n toolbar?: Record<string, string>;\n noHeadings?: string;\n outlineRevealCurrent?: string;\n outlineCollapse?: string;\n copiedCode?: string;\n copyCode?: string;\n codeTheme?: string;\n codeThemeAuto?: string;\n codeThemeLight?: string;\n codeThemeDark?: string;\n editLanguage?: string;\n mathEdit?: string;\n mathDone?: string;\n rawHtmlEscaped?: string;\n footnote?: string;\n };\n};\n\nconst vscode = acquireVsCodeApi();\nconst payloadElement = document.getElementById(\"payload\") as HTMLElement | null;\nconst templatePayload = payloadElement instanceof HTMLTemplateElement ? payloadElement.content.textContent : undefined;\nconst payloadText = payloadElement ? templatePayload || payloadElement.textContent || \"{}\" : \"{}\";\nconst payload = JSON.parse(payloadText) as Payload;\nconst translations = payload.translations || {};\nconst toolbarText = translations.toolbar || {};\nconst codeCopyLabels: CodeCopyLabels = {\n copyLabel: translations.copyCode || \"Copy code\",\n copiedLabel: translations.copiedCode || \"Copied\"\n};\n\ntype MermaidRuntime = {\n initialize(options: { startOnLoad: boolean; securityLevel: string }): void;\n run(options: { nodes: NodeListOf<HTMLElement> }): Promise<void> | void;\n};\n\ndeclare global {\n interface Window {\n mermaid?: MermaidRuntime;\n }\n}\nconst codeToneLabels: BlockToneLabels = {\n toneLabel: translations.codeTheme || \"Block colors\",\n autoLabel: translations.codeThemeAuto || \"Auto\",\n lightLabel: translations.codeThemeLight || \"Light\",\n darkLabel: translations.codeThemeDark || \"Dark\"\n};\nconst visualLabels = {\n editLanguage: translations.editLanguage || \"Edit language\",\n mathEdit: translations.mathEdit || \"Edit\",\n mathDone: translations.mathDone || \"Done\",\n rawHtmlEscaped: translations.rawHtmlEscaped || \"Raw HTML escaped\",\n footnote: translations.footnote || \"Footnote\"\n};\nconst mathRenderOptions = { katexEnabled: payload.katexEnabled !== false };\nconst sourceEditor = mustElement<HTMLTextAreaElement>(\"source-editor\");\nconst visualEditor = mustElement<HTMLElement>(\"visual-editor\");\nconst previewElement = mustElement<HTMLElement>(\"preview\");\nconst toolbarElement = mustElement<HTMLElement>(\"editor-toolbar-slot\");\nconst sidePanelElement = mustElement<HTMLElement>(\"side-panel\");\nconst sidePanelToggleElement = mustElement<HTMLButtonElement>(\"side-panel-toggle\");\nconst sidePanelCollapseElement = document.getElementById(\"side-panel-collapse\") as HTMLButtonElement | null;\nconst outlineCurrentElement = document.getElementById(\"outline-current\") as HTMLButtonElement | null;\nconst outlineElement = mustElement<HTMLElement>(\"outline\");\nconst searchElement = mustElement<HTMLInputElement>(\"outline-search\");\nconst editorPanelElement = document.querySelector(\".editor-panel\") as HTMLElement | null;\nconst previewPanelElement = document.querySelector(\".preview-panel\") as HTMLElement | null;\nconst splitResizerElement = document.getElementById(\"split-resizer\") as HTMLElement | null;\nconst initialRuntimeState = readRuntimeState();\nconst DEFAULT_SPLIT_RATIO = 0.5;\nconst SPLIT_KEYBOARD_STEP = 0.03;\nconst SPLIT_MIN_PANE_WIDTH = 240;\n\nlet currentMarkdown = payload.text || \"\";\nlet currentMode = normalizeMode(payload.mode || \"source\");\nlet currentLayout = normalizeLayout(payload.layout || \"workbench\");\nlet splitRatio = normalizeSplitRatio(initialRuntimeState.splitRatio);\nlet previewState = normalizePreviewState(payload.preview);\nlet imageResources = normalizeImageResources(payload.imageResources);\nlet milkdownEditor: Editor | null = null;\nlet milkdownReady = false;\nlet milkdownReadyPromise: Promise<void> | null = null;\nlet visualImageObserver: MutationObserver | null = null;\nlet mermaidRuntimePromise: Promise<MermaidRuntime> | null = null;\nlet mermaidRenderQueue: Promise<void> = Promise.resolve();\nlet applyingHostUpdate = false;\nlet applyingMilkdownUpdate = false;\nlet scrollSyncSuppressTarget = \"\";\nlet editorScrollFrame = 0;\nlet scrollSyncReleaseTimer = 0;\nlet activeSourceSelection = { start: 0, end: 0 };\nlet sidePanelOpen = false;\nlet currentOutlineHeadings: PreviewState[\"headings\"] = [];\nlet activeOutlineId = \"\";\nlet hoverTooltipTimer: number | undefined;\nlet hoverTooltipElement: HTMLElement | null = null;\nlet hoverTooltipTarget: HTMLElement | null = null;\nlet splitResizePointerId: number | null = null;\nconst HOVER_TOOLTIP_TARGET_SELECTOR = [\n \"[data-hover-tooltip]\",\n \".toolbar-button\",\n \".toolbar-menu-button\",\n \".side-panel-toggle\",\n \".outline-tool\",\n \".outline-item\",\n \".visual-math-inline\",\n \".visual-footnote-reference\",\n \".visual-html-source\",\n \".mermaid-render-error\",\n `.${CODE_BLOCK_CLASSES.language}`,\n `.${CODE_BLOCK_CLASSES.toneButton}`,\n `.${CODE_BLOCK_CLASSES.copyButton}`\n].join(\",\");\n\ntype UploadedMarkdownImage = { id?: string; name?: string; markdown: string };\nconst pendingImageUploads = new Map<string, {\n resolve: (images: UploadedMarkdownImage[]) => void;\n reject: (error: unknown) => void;\n}>();\n\nasync function boot(): Promise<void> {\n try {\n renderToolbar();\n sourceEditor.value = currentMarkdown;\n renderPreview();\n renderSidePanels(currentMarkdown);\n bindEvents();\n applySplitRatio(false);\n applyLayout();\n setScriptState(\"runtime-ready\", \"ready\");\n post(\"ready\");\n } catch (error) {\n setScriptError(error);\n post(\"error\", { message: getErrorMessage(error) });\n }\n}\n\nfunction mustElement<T extends HTMLElement>(id: string): T {\n const element = document.getElementById(id);\n if (!element) {\n throw new Error(`Missing webview element: ${id}`);\n }\n return element as T;\n}\n\nfunction post(type: string, body?: Record<string, unknown>): void {\n vscode.postMessage(Object.assign({ type }, body || {}));\n}\n\nfunction debounce<T extends (...args: never[]) => void>(fn: T, delay: number): T {\n let timer: number | undefined;\n return function (this: unknown, ...args: never[]) {\n window.clearTimeout(timer);\n timer = window.setTimeout(() => fn.apply(this, args), delay);\n } as T;\n}\n\nconst syncToHost = debounce(function () {\n if (applyingHostUpdate) {\n return;\n }\n previewState = null;\n post(\"edit\", { text: currentMarkdown });\n}, 180);\n\nfunction normalizeMode(mode: string): string {\n if (mode === \"wysiwyg\" || mode === \"ir\") {\n return \"wysiwyg\";\n }\n if (mode === \"preview\") {\n return \"preview\";\n }\n if (mode === \"split\") {\n return \"split\";\n }\n return \"source\";\n}\n\nfunction normalizeLayout(layout: string): string {\n return [\"workbench\", \"editorOnly\", \"splitEdit\", \"previewOnly\"].includes(layout) ? layout : \"workbench\";\n}\n\nfunction readRuntimeState(): Record<string, unknown> {\n const state = vscode.getState();\n return state && typeof state === \"object\" ? state as Record<string, unknown> : {};\n}\n\nfunction saveRuntimeState(update: Record<string, unknown>): void {\n vscode.setState({ ...readRuntimeState(), ...update });\n}\n\nfunction normalizeSplitRatio(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value)\n ? clamp(value, 0.2, 0.8)\n : DEFAULT_SPLIT_RATIO;\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction normalizePreviewState(value: unknown): PreviewState | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n const candidate = value as Partial<PreviewState>;\n return {\n markdown: typeof candidate.markdown === \"string\" ? candidate.markdown : currentMarkdown,\n html: typeof candidate.html === \"string\" ? candidate.html : \"\",\n headings: Array.isArray(candidate.headings) ? candidate.headings : []\n };\n}\n\nfunction normalizeImageResources(value: unknown): ImageResource[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value\n .filter((item): item is ImageResource => {\n const candidate = item as Partial<ImageResource>;\n return typeof candidate.source === \"string\" && typeof candidate.resolved === \"string\";\n })\n .map((item) => ({ source: item.source, resolved: item.resolved }));\n}\n\nfunction setScriptState(state: string, diag: string): void {\n document.body.dataset.scriptState = state;\n document.body.dataset.scriptDiag = diag;\n toolbarElement.dataset.scriptDiag = diag;\n}\n\nfunction setScriptError(error: unknown): void {\n const message = getErrorMessage(error);\n document.body.dataset.scriptState = \"error\";\n document.body.dataset.scriptError = message;\n toolbarElement.dataset.scriptError = message;\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.name && error.name !== \"Error\" ? `${error.name}: ${error.message}` : error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error && typeof error === \"object\") {\n const candidate = error as { message?: unknown; name?: unknown; error?: unknown; stack?: unknown };\n const parts = [\n typeof candidate.name === \"string\" ? candidate.name : \"\",\n typeof candidate.message === \"string\" ? candidate.message : \"\",\n typeof candidate.error === \"string\" ? candidate.error : \"\",\n typeof candidate.stack === \"string\" ? candidate.stack.split(/\\r?\\n/)[0] : \"\"\n ].filter(Boolean);\n if (parts.length > 0) {\n return Array.from(new Set(parts)).join(\": \");\n }\n try {\n return JSON.stringify(error);\n } catch {\n return Object.prototype.toString.call(error);\n }\n }\n return String(error || \"Unknown error\");\n}\n\nfunction label(name: string, fallback: string): string {\n return typeof toolbarText[name] === \"string\" ? toolbarText[name] : fallback;\n}\n\nfunction escapeHtml(value: unknown): string {\n return String(value)\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nfunction escapeAttribute(value: unknown): string {\n return escapeHtml(value).replace(/'/g, \"'\");\n}\n\nfunction closestElement(target: EventTarget | null, selector: string): HTMLElement | null {\n const element = target && target instanceof Element ? target : (target as Node | null)?.parentElement;\n return element?.closest?.(selector) as HTMLElement | null;\n}\n\nfunction renderToolbar(): void {\n toolbarElement.innerHTML = TOOLBAR_GROUPS\n .map((group) => `<div class=\"toolbar-group toolbar-group-${group.name}\">${group.actions.map(renderToolbarItem).join(\"\")}</div>`)\n .join(\"\");\n}\n\nfunction renderToolbarItem(action: string): string {\n if (action === \"heading\") {\n return toolbarMenu(action, toolbarTitle(action), toolbarIcon(action), HEADING_MENU_ACTIONS, \"toolbar-heading-menu\");\n }\n if (action === \"more\") {\n return toolbarMenu(action, toolbarTitle(action), toolbarIcon(action), MORE_MENU_ACTIONS, \"toolbar-more-menu\");\n }\n return toolbarButton(action, toolbarTitle(action), toolbarIcon(action));\n}\n\nfunction toolbarButton(action: string, title: string, icon: string): string {\n return `<button type=\"button\" class=\"toolbar-button\" data-action=\"${action}\" data-hover-tooltip=\"${escapeAttribute(title)}\" aria-label=\"${escapeAttribute(title)}\"><span class=\"toolbar-icon\" aria-hidden=\"true\">${icon}</span></button>`;\n}\n\nfunction toolbarMenu(action: string, title: string, icon: string, menuActions: string[], className: string): string {\n return `<div class=\"toolbar-menu-wrapper ${className}\">\n <button type=\"button\" class=\"toolbar-button toolbar-menu-toggle\" data-menu-toggle=\"${action}\" data-hover-tooltip=\"${escapeAttribute(title)}\" aria-label=\"${escapeAttribute(title)}\" aria-expanded=\"false\">\n <span class=\"toolbar-icon\" aria-hidden=\"true\">${icon}</span>\n <span class=\"toolbar-caret codicon codicon-arrow-small-down\" aria-hidden=\"true\"></span>\n </button>\n <div class=\"toolbar-menu\" data-menu=\"${action}\" hidden>\n ${menuActions.map(toolbarMenuButton).join(\"\")}\n </div>\n </div>`;\n}\n\nfunction toolbarMenuButton(action: string): string {\n const title = toolbarTitle(action);\n return `<button type=\"button\" class=\"toolbar-menu-button\" data-action=\"${action}\" data-hover-tooltip=\"${escapeAttribute(title)}\" aria-label=\"${escapeAttribute(title)}\">\n <span class=\"toolbar-menu-icon\" aria-hidden=\"true\">${toolbarIcon(action)}</span>\n <span class=\"toolbar-menu-label\">${escapeHtml(title)}</span>\n </button>`;\n}\n\nfunction toolbarIcon(action: string): string {\n return renderToolbarIcon(action);\n}\n\nfunction toolbarTitle(action: string): string {\n const heading = action.match(/^heading-([1-6])$/);\n if (heading) {\n return `${label(\"heading\", \"Heading\")} ${heading[1]}`;\n }\n const titles: Record<string, string> = {\n bold: label(\"bold\", \"Bold\"),\n italic: label(\"italic\", \"Italic\"),\n underline: label(\"underline\", \"Underline\"),\n highlight: label(\"highlight\", \"Highlight\"),\n strike: label(\"strike\", \"Strike\"),\n heading: label(\"heading\", \"Heading\"),\n hr: label(\"hr\", \"Rule\"),\n quote: label(\"quote\", \"Quote\"),\n list: label(\"list\", \"List\"),\n \"ordered-list\": label(\"orderedList\", \"Ordered list\"),\n task: label(\"task\", \"Task\"),\n \"task-checked\": label(\"taskChecked\", \"Checked task\"),\n link: label(\"link\", \"Link\"),\n image: label(\"image\", \"Image\"),\n \"inline-code\": label(\"inlineCode\", \"Inline code\"),\n code: label(\"code\", \"Code block\"),\n table: label(\"table\", \"Table\"),\n math: label(\"math\", \"Math\"),\n mermaid: label(\"mermaid\", \"Mermaid\"),\n toc: label(\"toc\", \"Table of contents\"),\n more: label(\"more\", \"More\"),\n organizeMarkdown: label(\"organizeMarkdown\", \"Organize Markdown\"),\n switchBackgroundTheme: label(\"switchBackgroundTheme\", \"Switch Reading Theme\"),\n switchDisplayLanguage: label(\"switchDisplayLanguage\", \"Switch display language\"),\n help: label(\"help\", \"Help\"),\n \"export-html\": `${label(\"export\", \"Export\")} HTML`,\n \"export-pdf\": `${label(\"export\", \"Export\")} PDF`,\n \"export-all\": `${label(\"export\", \"Export\")} ${label(\"all\", \"All\")}`\n };\n return titles[action] || action;\n}\n\nfunction bindEvents(): void {\n sourceEditor.addEventListener(\"input\", () => {\n rememberSourceSelection();\n currentMarkdown = sourceEditor.value;\n renderSidePanels(currentMarkdown);\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n });\n sourceEditor.addEventListener(\"paste\", (event) => {\n void handleSourceImagePaste(event);\n });\n sourceEditor.addEventListener(\"dragover\", handleSourceImageDragOver);\n sourceEditor.addEventListener(\"drop\", (event) => {\n void handleSourceImageDrop(event);\n });\n for (const eventName of [\"focus\", \"select\", \"click\", \"keyup\", \"mouseup\"]) {\n sourceEditor.addEventListener(eventName, rememberSourceSelection);\n }\n toolbarElement.addEventListener(\"mousedown\", (event) => {\n if (closestElement(event.target, \".toolbar-button, .toolbar-menu-button\")) {\n event.preventDefault();\n }\n });\n toolbarElement.addEventListener(\"click\", (event) => {\n const menuToggle = closestElement(event.target, \"[data-menu-toggle]\");\n if (menuToggle) {\n event.preventDefault();\n toggleToolbarMenu(menuToggle.dataset.menuToggle || \"\");\n return;\n }\n const buttonElement = closestElement(event.target, \"[data-action]\");\n if (buttonElement) {\n event.preventDefault();\n closeToolbarMenus();\n void handleToolbarAction(buttonElement.dataset.action || \"\");\n }\n });\n previewElement.addEventListener(\"click\", handleCodeBlockActionClick);\n visualEditor.addEventListener(\"click\", handleCodeBlockActionClick);\n visualEditor.addEventListener(\"paste\", (event) => {\n void handleVisualImagePaste(event);\n });\n visualEditor.addEventListener(\"dragover\", handleVisualImageDragOver);\n visualEditor.addEventListener(\"drop\", (event) => {\n void handleVisualImageDrop(event);\n });\n sidePanelToggleElement.addEventListener(\"click\", toggleSidePanelFromEvent);\n sidePanelCollapseElement?.addEventListener(\"click\", () => setSidePanelOpen(false));\n outlineCurrentElement?.addEventListener(\"click\", revealActiveOutlineItem);\n searchElement.addEventListener(\"input\", () => renderSidePanels(currentMarkdown));\n outlineElement.addEventListener(\"click\", handleOutlineClick);\n bindHoverTooltips();\n bindSplitResizer();\n document.addEventListener(\"click\", (event) => {\n if (!toolbarElement.contains(event.target as Node)) {\n closeToolbarMenus();\n }\n });\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n closeToolbarMenus();\n }\n });\n window.addEventListener(\"message\", handleHostMessage);\n}\n\nfunction bindHoverTooltips(): void {\n document.addEventListener(\"mouseover\", (event) => {\n const target = getHoverTooltipTarget(event.target);\n if (!target || target.contains(event.relatedTarget as Node | null)) {\n return;\n }\n scheduleHoverTooltip(target);\n });\n document.addEventListener(\"mouseout\", (event) => {\n const target = getHoverTooltipTarget(event.target);\n if (!target || target.contains(event.relatedTarget as Node | null)) {\n return;\n }\n hideHoverTooltip();\n });\n document.addEventListener(\"focusin\", (event) => {\n const target = getHoverTooltipTarget(event.target);\n if (target) {\n scheduleHoverTooltip(target);\n }\n });\n document.addEventListener(\"focusout\", hideHoverTooltip);\n document.addEventListener(\"click\", (event) => {\n if (getHoverTooltipTarget(event.target)) {\n hideHoverTooltip();\n }\n });\n window.addEventListener(\"scroll\", hideHoverTooltip, true);\n window.addEventListener(\"resize\", hideHoverTooltip);\n}\n\nfunction getHoverTooltipTarget(target: EventTarget | null): HTMLElement | null {\n return closestElement(target, HOVER_TOOLTIP_TARGET_SELECTOR);\n}\n\nfunction scheduleHoverTooltip(target: HTMLElement): void {\n const title = target.getAttribute(\"title\") || \"\";\n const text = target.dataset.hoverTooltip || title || target.getAttribute(\"aria-label\") || \"\";\n if (!text.trim()) {\n return;\n }\n if (!target.dataset.hoverTooltip) {\n target.dataset.hoverTooltip = text;\n }\n if (title) {\n target.removeAttribute(\"title\");\n }\n hideHoverTooltip();\n hoverTooltipTarget = target;\n hoverTooltipTimer = window.setTimeout(() => showHoverTooltip(target, text), 500);\n}\n\nfunction showHoverTooltip(target: HTMLElement, text: string): void {\n const tooltip = ensureHoverTooltip();\n tooltip.textContent = text;\n tooltip.style.visibility = \"hidden\";\n tooltip.classList.add(\"is-visible\");\n target.setAttribute(\"aria-describedby\", tooltip.id);\n\n const targetRect = target.getBoundingClientRect();\n const tooltipRect = tooltip.getBoundingClientRect();\n const gap = 8;\n const viewportPadding = 8;\n const maxLeft = Math.max(viewportPadding, window.innerWidth - tooltipRect.width - viewportPadding);\n const left = Math.min(\n Math.max(viewportPadding, targetRect.left + targetRect.width / 2 - tooltipRect.width / 2),\n maxLeft\n );\n const bottomTop = targetRect.bottom + gap;\n const top = bottomTop + tooltipRect.height <= window.innerHeight - viewportPadding\n ? bottomTop\n : Math.max(viewportPadding, targetRect.top - tooltipRect.height - gap);\n\n tooltip.style.left = `${Math.round(left)}px`;\n tooltip.style.top = `${Math.round(top)}px`;\n tooltip.style.visibility = \"\";\n}\n\nfunction ensureHoverTooltip(): HTMLElement {\n if (hoverTooltipElement) {\n return hoverTooltipElement;\n }\n hoverTooltipElement = document.createElement(\"div\");\n hoverTooltipElement.id = \"hover-tooltip\";\n hoverTooltipElement.className = \"hover-tooltip\";\n hoverTooltipElement.setAttribute(\"role\", \"tooltip\");\n document.body.appendChild(hoverTooltipElement);\n return hoverTooltipElement;\n}\n\nfunction hideHoverTooltip(): void {\n window.clearTimeout(hoverTooltipTimer);\n hoverTooltipTimer = undefined;\n hoverTooltipTarget?.removeAttribute(\"aria-describedby\");\n hoverTooltipTarget = null;\n if (hoverTooltipElement) {\n hoverTooltipElement.classList.remove(\"is-visible\");\n hoverTooltipElement.removeAttribute(\"style\");\n }\n}\n\nfunction bindSplitResizer(): void {\n if (!splitResizerElement) {\n return;\n }\n splitResizerElement.addEventListener(\"pointerdown\", beginSplitResize);\n splitResizerElement.addEventListener(\"pointermove\", handleSplitResizePointerMove);\n splitResizerElement.addEventListener(\"pointerup\", endSplitResize);\n splitResizerElement.addEventListener(\"pointercancel\", endSplitResize);\n splitResizerElement.addEventListener(\"lostpointercapture\", endSplitResize);\n splitResizerElement.addEventListener(\"dblclick\", () => setSplitRatio(DEFAULT_SPLIT_RATIO, true));\n splitResizerElement.addEventListener(\"keydown\", handleSplitResizeKeydown);\n window.addEventListener(\"resize\", () => applySplitRatio(false));\n}\n\nfunction beginSplitResize(event: PointerEvent): void {\n if (!isSplitResizeAvailable() || event.button !== 0 || !splitResizerElement) {\n return;\n }\n event.preventDefault();\n hideHoverTooltip();\n splitResizePointerId = event.pointerId;\n splitResizerElement.setPointerCapture(event.pointerId);\n document.body.classList.add(\"is-resizing-split\");\n updateSplitRatioFromClientX(event.clientX);\n}\n\nfunction handleSplitResizePointerMove(event: PointerEvent): void {\n if (splitResizePointerId !== event.pointerId) {\n return;\n }\n event.preventDefault();\n updateSplitRatioFromClientX(event.clientX);\n}\n\nfunction endSplitResize(event?: PointerEvent): void {\n if (splitResizePointerId === null) {\n return;\n }\n if (event && event.pointerId !== splitResizePointerId) {\n return;\n }\n if (event && splitResizerElement?.hasPointerCapture(event.pointerId)) {\n splitResizerElement.releasePointerCapture(event.pointerId);\n }\n splitResizePointerId = null;\n document.body.classList.remove(\"is-resizing-split\");\n}\n\nfunction handleSplitResizeKeydown(event: KeyboardEvent): void {\n if (!isSplitResizeAvailable()) {\n return;\n }\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n setSplitRatio(splitRatio - SPLIT_KEYBOARD_STEP, true);\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n setSplitRatio(splitRatio + SPLIT_KEYBOARD_STEP, true);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setSplitRatio(0.2, true);\n } else if (event.key === \"End\") {\n event.preventDefault();\n setSplitRatio(0.8, true);\n } else if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setSplitRatio(DEFAULT_SPLIT_RATIO, true);\n }\n}\n\nfunction updateSplitRatioFromClientX(clientX: number): void {\n const bounds = getSplitResizeBounds();\n if (!bounds) {\n return;\n }\n setSplitRatio((clientX - bounds.left) / bounds.width, true, bounds.width);\n}\n\nfunction getSplitResizeBounds(): { left: number; width: number } | null {\n if (!editorPanelElement || !previewPanelElement) {\n return null;\n }\n const editorRect = editorPanelElement.getBoundingClientRect();\n const previewRect = previewPanelElement.getBoundingClientRect();\n const left = editorRect.left;\n const right = previewRect.right;\n const width = right - left;\n return width > 0 ? { left, width } : null;\n}\n\nfunction setSplitRatio(nextRatio: number, persist: boolean, availableWidth?: number): void {\n const bounds = availableWidth === undefined ? getSplitResizeBounds() : { width: availableWidth };\n splitRatio = clampSplitRatio(nextRatio, bounds?.width);\n applySplitRatio(persist);\n}\n\nfunction applySplitRatio(persist: boolean): void {\n const editorSize = Math.round(splitRatio * 1000) / 1000;\n const previewSize = Math.round((1 - splitRatio) * 1000) / 1000;\n document.body.style.setProperty(\"--sm-split-editor-size\", `${editorSize}fr`);\n document.body.style.setProperty(\"--sm-split-preview-size\", `${previewSize}fr`);\n if (splitResizerElement) {\n const percentage = Math.round(splitRatio * 100);\n splitResizerElement.setAttribute(\"aria-valuenow\", String(percentage));\n splitResizerElement.setAttribute(\"aria-valuetext\", `${percentage}%`);\n splitResizerElement.setAttribute(\"aria-hidden\", isSplitResizeAvailable() ? \"false\" : \"true\");\n }\n if (persist) {\n saveRuntimeState({ splitRatio });\n }\n}\n\nfunction clampSplitRatio(nextRatio: number, availableWidth?: number): number {\n if (!Number.isFinite(nextRatio)) {\n return splitRatio;\n }\n if (!availableWidth || availableWidth <= 0) {\n return clamp(nextRatio, 0.2, 0.8);\n }\n const minimumRatio = Math.min(0.45, SPLIT_MIN_PANE_WIDTH / availableWidth);\n return clamp(nextRatio, minimumRatio, 1 - minimumRatio);\n}\n\nfunction isSplitResizeAvailable(): boolean {\n return Boolean(splitResizerElement && (currentMode === \"split\" || currentLayout === \"splitEdit\") && window.innerWidth > 820);\n}\n\nfunction handleHostMessage(event: MessageEvent): void {\n const message = event.data || {};\n if (message.type === \"setMarkdown\" && typeof message.text === \"string\") {\n applyingHostUpdate = true;\n setMarkdown(message.text, message.preview, message.imageResources);\n applyingHostUpdate = false;\n } else if (message.type === \"setEditorState\") {\n if (typeof message.layout === \"string\") {\n currentLayout = normalizeLayout(message.layout);\n }\n if (typeof message.mode === \"string\") {\n currentMode = normalizeMode(message.mode);\n }\n applyLayout();\n } else if (message.type === \"uploadImagesResult\") {\n handleUploadImagesResult(message);\n }\n}\n\nfunction handleUploadImagesResult(message: { requestId?: unknown; images?: unknown; error?: unknown }): void {\n const requestId = typeof message.requestId === \"string\" ? message.requestId : \"\";\n const pending = requestId ? pendingImageUploads.get(requestId) : undefined;\n if (pending) {\n pendingImageUploads.delete(requestId);\n if (Array.isArray(message.images)) {\n pending.resolve(normalizeUploadedMarkdownImages(message.images));\n } else {\n pending.reject(message.error === undefined ? new Error(\"Image upload failed\") : message.error);\n }\n return;\n }\n\n if (Array.isArray(message.images)) {\n insertMarkdown(markdownFromUploadedImages(normalizeUploadedMarkdownImages(message.images)));\n } else if (message.error !== undefined) {\n post(\"error\", { message: getErrorMessage(message.error) });\n }\n}\n\nfunction normalizeUploadedMarkdownImages(images: unknown[]): UploadedMarkdownImage[] {\n return images\n .map((image) => {\n const candidate = image as Partial<UploadedMarkdownImage>;\n if (typeof candidate.markdown !== \"string\" || !candidate.markdown.trim()) {\n return null;\n }\n return {\n id: typeof candidate.id === \"string\" ? candidate.id : undefined,\n name: typeof candidate.name === \"string\" ? candidate.name : undefined,\n markdown: candidate.markdown\n };\n })\n .filter((image): image is UploadedMarkdownImage => Boolean(image));\n}\n\nfunction markdownFromUploadedImages(images: UploadedMarkdownImage[]): string {\n return images.map((image) => image.markdown).filter(Boolean).join(\"\\n\");\n}\n\nfunction createImageNodeFromMarkdown(markdown: string, imageNode: { createAndFill(attrs: Record<string, string>): ProseNode | null }): ProseNode | null {\n const parsed = parseUploadedImageMarkdown(markdown);\n if (!parsed) {\n return null;\n }\n return imageNode.createAndFill({ src: parsed.src, alt: parsed.alt });\n}\n\nfunction parseUploadedImageMarkdown(markdown: string): { alt: string; src: string } | null {\n const match = markdown.match(/^!\\[((?:\\\\.|[^\\]])*)\\]\\(([^)]+)\\)$/);\n if (!match) {\n return null;\n }\n return {\n alt: match[1].replace(/\\\\([[\\\\\\]])/g, \"$1\"),\n src: match[2].trim()\n };\n}\n\nasync function uploadImageFiles(files: File[]): Promise<UploadedMarkdownImage[]> {\n const images = files.filter(isImageFile);\n if (!images.length) {\n return [];\n }\n const requestId = createUploadRequestId();\n const payloadImages = await Promise.all(images.map(readImageFileData));\n const result = new Promise<UploadedMarkdownImage[]>((resolve, reject) => {\n pendingImageUploads.set(requestId, { resolve, reject });\n });\n post(\"uploadImages\", { requestId, images: payloadImages });\n return result;\n}\n\nfunction createUploadRequestId(): string {\n return `${Date.now()}-${Math.random().toString(16).slice(2)}`;\n}\n\nfunction isImageFile(file: File): boolean {\n return file.type.startsWith(\"image/\");\n}\n\nfunction getImageFilesFromTransfer(dataTransfer: DataTransfer | null | undefined): File[] {\n if (!dataTransfer) {\n return [];\n }\n const files: File[] = [];\n const seen = new Set<string>();\n const addFile = (file: File | null) => {\n if (!file || !isImageFile(file)) {\n return;\n }\n const key = `${file.name}:${file.size}:${file.lastModified}`;\n if (!seen.has(key)) {\n seen.add(key);\n files.push(file);\n }\n };\n\n Array.from(dataTransfer.files || []).forEach(addFile);\n Array.from(dataTransfer.items || []).forEach((item) => {\n if (item.kind === \"file\" && item.type.startsWith(\"image/\")) {\n addFile(item.getAsFile());\n }\n });\n return files;\n}\n\nasync function handleSourceImagePaste(event: ClipboardEvent): Promise<void> {\n const files = getImageFilesFromTransfer(event.clipboardData);\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await uploadAndInsertSourceImages(files);\n}\n\nfunction handleSourceImageDragOver(event: DragEvent): void {\n const files = getImageFilesFromTransfer(event.dataTransfer);\n if (!files.length) {\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n}\n\nasync function handleSourceImageDrop(event: DragEvent): Promise<void> {\n const files = getImageFilesFromTransfer(event.dataTransfer);\n if (!files.length) {\n return;\n }\n event.preventDefault();\n sourceEditor.focus();\n await uploadAndInsertSourceImages(files);\n}\n\nasync function uploadAndInsertSourceImages(files: File[]): Promise<void> {\n try {\n const uploaded = await uploadImageFiles(files);\n const markdown = markdownFromUploadedImages(uploaded);\n if (markdown) {\n insertSourceBlockSnippet(markdown);\n }\n } catch (error) {\n post(\"error\", { message: getErrorMessage(error) });\n }\n}\n\nasync function handleVisualImagePaste(event: ClipboardEvent): Promise<void> {\n if (event.defaultPrevented) {\n return;\n }\n const files = getImageFilesFromTransfer(event.clipboardData);\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await uploadAndInsertVisualImages(files);\n}\n\nfunction handleVisualImageDragOver(event: DragEvent): void {\n const files = getImageFilesFromTransfer(event.dataTransfer);\n if (!files.length) {\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = \"copy\";\n }\n}\n\nasync function handleVisualImageDrop(event: DragEvent): Promise<void> {\n if (event.defaultPrevented) {\n return;\n }\n const files = getImageFilesFromTransfer(event.dataTransfer);\n if (!files.length) {\n return;\n }\n event.preventDefault();\n await uploadAndInsertVisualImages(files);\n}\n\nasync function uploadAndInsertVisualImages(files: File[]): Promise<void> {\n try {\n const uploaded = await uploadImageFiles(files);\n insertMarkdown(markdownFromUploadedImages(uploaded));\n } catch (error) {\n post(\"error\", { message: getErrorMessage(error) });\n }\n}\n\nfunction setMarkdown(markdown: string, preview: unknown, nextImageResources?: unknown): void {\n currentMarkdown = markdown;\n previewState = normalizePreviewState(preview);\n imageResources = normalizeImageResources(nextImageResources);\n if (sourceEditor.value !== markdown) {\n sourceEditor.value = markdown;\n }\n renderPreview();\n renderSidePanels(markdown);\n syncMilkdownFromMarkdown(markdown);\n resolveVisualImagesSoon();\n}\n\nfunction renderPreview(): void {\n if (previewState && previewState.markdown === currentMarkdown && previewState.html) {\n previewElement.innerHTML = `<article class=\"markdown-body\">${previewState.html}</article>`;\n } else {\n previewElement.innerHTML = `<article class=\"markdown-body\"><pre class=\"static-preview-source\">${escapeHtml(currentMarkdown)}</pre></article>`;\n }\n void runMermaid();\n bindEditorScrollSync();\n}\n\nfunction resolveVisualImagesSoon(): void {\n if (!imageResources.length) {\n return;\n }\n window.requestAnimationFrame(resolveVisualImages);\n window.setTimeout(resolveVisualImages, 50);\n window.setTimeout(resolveVisualImages, 250);\n}\n\nfunction resolveVisualImages(): void {\n if (!imageResources.length) {\n return;\n }\n const resources = new Map<string, string>();\n for (const resource of imageResources) {\n for (const key of imageSourceKeys(resource.source)) {\n resources.set(key, resource.resolved);\n }\n }\n visualEditor.querySelectorAll<HTMLImageElement>(\"img\").forEach((image) => {\n const rawSource = image.getAttribute(\"src\") || \"\";\n const resolved = resolveImageResource(rawSource, resources);\n if (resolved && image.src !== resolved) {\n image.dataset.superMarkdownSource = rawSource;\n image.setAttribute(\"src\", resolved);\n image.src = resolved;\n }\n });\n}\n\nfunction resolveImageResource(source: string, resources: Map<string, string>): string | undefined {\n const candidates = imageSourceKeys(source);\n for (const candidate of candidates) {\n const resolved = resources.get(candidate);\n if (resolved) {\n return resolved;\n }\n }\n return undefined;\n}\n\nfunction imageSourceKeys(source: string): string[] {\n const normalized = stripHashAndQuery(String(source || \"\").trim());\n const decoded = decodeUriSafe(normalized);\n const componentDecoded = decodeUriComponentSafe(normalized);\n const encoded = encodeURI(decoded);\n const withoutDot = decoded.replace(/^\\.\\//, \"\");\n return Array.from(new Set([\n source,\n normalized,\n decoded,\n componentDecoded,\n encoded,\n `./${decoded}`,\n `./${componentDecoded}`,\n `./${encoded}`,\n withoutDot,\n componentDecoded.replace(/^\\.\\//, \"\"),\n encodeURI(withoutDot)\n ].filter(Boolean)));\n}\n\nfunction decodeUriSafe(value: string): string {\n try {\n return decodeURI(value);\n } catch {\n return value;\n }\n}\n\nfunction decodeUriComponentSafe(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n}\n\nfunction stripHashAndQuery(value: string): string {\n return value.split(\"#\")[0].split(\"?\")[0];\n}\n\nfunction startVisualImageObserver(): void {\n if (visualImageObserver) {\n return;\n }\n visualImageObserver = new MutationObserver((mutations) => {\n if (!imageResources.length) {\n return;\n }\n const changedImages = mutations.some((mutation) => {\n if (mutation.type === \"attributes\") {\n return mutation.target instanceof HTMLImageElement && mutation.attributeName === \"src\";\n }\n return Array.from(mutation.addedNodes).some((node) => {\n if (node instanceof HTMLImageElement) {\n return true;\n }\n return node instanceof Element && Boolean(node.querySelector(\"img\"));\n });\n });\n if (changedImages) {\n resolveVisualImagesSoon();\n }\n });\n visualImageObserver.observe(visualEditor, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: [\"src\"]\n });\n}\n\nfunction createCodeBlockCopyButton(): HTMLButtonElement {\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = CODE_BLOCK_CLASSES.copyButton;\n button.dataset.copyLabel = codeCopyLabels.copyLabel;\n button.dataset.copiedLabel = codeCopyLabels.copiedLabel;\n button.dataset.hoverTooltip = codeCopyLabels.copyLabel;\n button.setAttribute(\"aria-label\", codeCopyLabels.copyLabel);\n button.textContent = codeCopyLabels.copyLabel;\n return button;\n}\n\nfunction createCodeBlockToneButton(tone: string | undefined): HTMLButtonElement {\n const normalizedTone = normalizeCodeBlockTone(tone);\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = CODE_BLOCK_CLASSES.toneButton;\n button.dataset.blockTone = normalizedTone;\n button.dataset.toneLabel = codeToneLabels.toneLabel;\n button.dataset.toneAutoLabel = codeToneLabels.autoLabel;\n button.dataset.toneLightLabel = codeToneLabels.lightLabel;\n button.dataset.toneDarkLabel = codeToneLabels.darkLabel;\n button.textContent = codeBlockToneLabel(normalizedTone, codeToneLabels);\n updateToneButtonTitle(button, normalizedTone);\n return button;\n}\n\nfunction createCodeBlockNodeView(node: ProseNode, view: unknown, getPos: (() => number) | boolean): NodeView {\n let currentNode = node;\n let highlightVersion = 0;\n let mermaidVersion = 0;\n const dom = document.createElement(\"figure\");\n dom.className = `${CODE_BLOCK_CLASSES.block} visual-code-node-view`;\n dom.dataset.renderBlockTone = \"auto\";\n\n const caption = document.createElement(\"figcaption\");\n caption.contentEditable = \"false\";\n\n const languageField = document.createElement(\"span\");\n languageField.className = \"visual-code-language-field\";\n languageField.contentEditable = \"false\";\n\n const language = document.createElement(\"button\");\n language.type = \"button\";\n language.className = `${CODE_BLOCK_CLASSES.language} visual-code-language-button`;\n language.dataset.hoverTooltip = visualLabels.editLanguage;\n language.setAttribute(\"aria-label\", visualLabels.editLanguage);\n\n const languageInput = document.createElement(\"input\");\n languageInput.className = \"visual-code-language-input\";\n languageInput.hidden = true;\n languageInput.spellcheck = false;\n languageInput.setAttribute(\"aria-label\", visualLabels.editLanguage);\n languageField.append(language, languageInput);\n\n const actions = document.createElement(\"span\");\n actions.className = CODE_BLOCK_CLASSES.actionGroup;\n actions.contentEditable = \"false\";\n const copyButton = createCodeBlockCopyButton();\n const toneButton = createCodeBlockToneButton(dom.dataset.renderBlockTone);\n bindCodeBlockActionButton(copyButton, copyCodeFromButton);\n bindCodeBlockActionButton(toneButton, cycleCodeBlockTone);\n actions.append(copyButton, toneButton);\n\n const pre = document.createElement(\"pre\");\n pre.className = \"visual-code-editor\";\n const code = document.createElement(\"code\");\n code.spellcheck = false;\n pre.append(code);\n const highlightPre = document.createElement(\"pre\");\n highlightPre.className = \"visual-code-highlight\";\n highlightPre.setAttribute(\"aria-hidden\", \"true\");\n highlightPre.contentEditable = \"false\";\n const highlightCode = document.createElement(\"code\");\n highlightPre.append(highlightCode);\n const codeFrame = document.createElement(\"div\");\n codeFrame.className = \"visual-code-frame\";\n codeFrame.append(highlightPre, pre);\n const mermaidPreview = document.createElement(\"div\");\n mermaidPreview.className = \"visual-mermaid-preview\";\n mermaidPreview.contentEditable = \"false\";\n mermaidPreview.tabIndex = 0;\n const mermaidSource = document.createElement(\"pre\");\n mermaidSource.className = \"mermaid\";\n mermaidSource.contentEditable = \"false\";\n mermaidPreview.append(mermaidSource);\n caption.append(languageField, actions);\n dom.append(caption, mermaidPreview, codeFrame);\n\n const updateLanguage = (nextNode: ProseNode) => {\n const rawLanguage = getCodeBlockLanguage(nextNode);\n const isMermaid = isMermaidCodeBlock(nextNode);\n const nextLanguage = isMermaid ? \"mermaid\" : normalizeCodeLanguage(rawLanguage);\n const displayLanguage = rawLanguage || nextLanguage;\n language.textContent = displayLanguage;\n languageInput.value = rawLanguage || nextLanguage;\n pre.dataset.language = nextLanguage;\n dom.classList.toggle(\"visual-mermaid-node-view\", isMermaid);\n dom.classList.toggle(CODE_BLOCK_CLASSES.diagramBlock, isMermaid);\n code.className = `language-${toLanguageClassName(nextLanguage)}`;\n highlightCode.className = `shiki shiki-themes light-plus dark-plus language-${toLanguageClassName(nextLanguage)}`;\n };\n\n const updateHighlight = () => {\n if (isMermaidCodeBlock(currentNode)) {\n highlightVersion += 1;\n highlightCode.textContent = \"\";\n dom.classList.remove(\"is-highlight-ready\");\n return;\n }\n const version = ++highlightVersion;\n const codeText = currentNode.textContent;\n const codeLanguage = normalizeCodeLanguage(getCodeBlockLanguage(currentNode));\n void highlightCodeBlockHtml(codeText, codeLanguage).then((html) => {\n if (version !== highlightVersion) {\n return;\n }\n highlightCode.innerHTML = html || \"<span class=\\\"line\\\"></span>\";\n dom.classList.add(\"is-highlight-ready\");\n });\n };\n\n const updateMermaidPreview = () => {\n const version = ++mermaidVersion;\n if (!isMermaidCodeBlock(currentNode)) {\n mermaidSource.textContent = \"\";\n return;\n }\n resetMermaidElement(mermaidSource, currentNode.textContent);\n void queueMermaidElementRender(mermaidSource).then(() => {\n if (version !== mermaidVersion) {\n resetMermaidElement(mermaidSource, currentNode.textContent);\n void queueMermaidElementRender(mermaidSource);\n }\n });\n };\n\n const openMermaidSource = () => {\n if (!isMermaidCodeBlock(currentNode)) {\n return;\n }\n dom.classList.add(\"is-editing\");\n };\n\n const closeLanguageEditor = (commit: boolean) => {\n languageInput.hidden = true;\n language.hidden = false;\n if (commit) {\n updateNodeAttrs(view, getPos, { language: languageInput.value.trim() || \"text\" });\n syncCurrentMarkdownFromMilkdownSoon();\n } else {\n languageInput.value = getCodeBlockLanguage(currentNode);\n }\n language.focus();\n };\n\n language.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n language.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n language.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n language.hidden = true;\n languageInput.hidden = false;\n languageInput.value = getCodeBlockLanguage(currentNode);\n languageInput.focus();\n languageInput.select();\n });\n languageInput.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n languageInput.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n languageInput.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n closeLanguageEditor(true);\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n closeLanguageEditor(false);\n }\n });\n languageInput.addEventListener(\"blur\", () => {\n if (!languageInput.hidden) {\n closeLanguageEditor(true);\n }\n });\n mermaidPreview.addEventListener(\"dblclick\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n openMermaidSource();\n });\n mermaidPreview.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n openMermaidSource();\n }\n });\n codeFrame.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\" && isMermaidCodeBlock(currentNode)) {\n dom.classList.remove(\"is-editing\");\n mermaidPreview.focus();\n }\n });\n updateLanguage(currentNode);\n updateHighlight();\n updateMermaidPreview();\n\n return {\n dom,\n contentDOM: code,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n currentNode = nextNode;\n updateLanguage(nextNode);\n updateHighlight();\n updateMermaidPreview();\n return true;\n },\n stopEvent(event) {\n return Boolean(\n closestElement(event.target, `.${CODE_BLOCK_CLASSES.actionGroup}`) ||\n languageField.contains(event.target as Node) ||\n mermaidPreview.contains(event.target as Node)\n );\n },\n ignoreMutation(mutation) {\n return mutation.target instanceof Node && (\n mutation.target === dom ||\n caption.contains(mutation.target) ||\n mermaidPreview.contains(mutation.target) ||\n highlightPre.contains(mutation.target)\n );\n }\n };\n}\n\nfunction isMermaidCodeBlock(node: ProseNode): boolean {\n return getCodeBlockLanguage(node).toLowerCase() === \"mermaid\";\n}\n\nfunction getCodeBlockLanguage(node: ProseNode): string {\n const rawLanguage = String(node.attrs.language || node.attrs.lang || \"\");\n return rawLanguage.trim().split(/\\s+/)[0] || \"\";\n}\n\nfunction toLanguageClassName(language: string): string {\n return language.replace(/[^\\w+-]/g, \"-\");\n}\n\nfunction bindCodeBlockActionButton(buttonElement: HTMLElement, handler: (buttonElement: HTMLElement) => void): void {\n buttonElement.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n buttonElement.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n buttonElement.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n handler(buttonElement);\n });\n}\n\nfunction stopCodeBlockActionEvent(event: Event): void {\n event.stopPropagation();\n}\n\ntype MarkdownAstNode = {\n type?: string;\n value?: string;\n tag?: string;\n label?: string;\n children?: MarkdownAstNode[];\n [key: string]: unknown;\n};\n\nconst remarkMathPlugin = $remark(\"superMarkdownMath\", () => remarkMath);\n\nconst remarkSafeInlineHtmlPlugin = $remark(\"superMarkdownSafeInlineHtml\", () => () => (tree: MarkdownAstNode) => {\n transformSafeInlineHtmlTree(tree);\n});\n\nconst mathInlineSchema = $nodeSchema(\"math_inline\", () => ({\n group: \"inline\",\n inline: true,\n atom: true,\n attrs: {\n value: {\n default: \"\",\n validate: \"string\"\n }\n },\n parseDOM: [{\n tag: 'span[data-type=\"math_inline\"]',\n getAttrs: (dom: HTMLElement) => ({ value: dom.dataset.value || dom.textContent || \"\" })\n }],\n toDOM: (node: ProseNode) => [\n \"span\",\n {\n \"data-type\": \"math_inline\",\n \"data-value\": node.attrs.value\n },\n node.attrs.value\n ],\n parseMarkdown: {\n match: (node: MarkdownAstNode) => node.type === \"inlineMath\",\n runner: (state, node: MarkdownAstNode, type) => {\n state.addNode(type, { value: String(node.value || \"\") });\n }\n },\n toMarkdown: {\n match: (node: ProseNode) => node.type.name === \"math_inline\",\n runner: (state, node: ProseNode) => {\n state.addNode(\"inlineMath\", undefined, String(node.attrs.value || \"\"));\n }\n }\n}));\n\nconst mathBlockSchema = $nodeSchema(\"math_block\", () => ({\n group: \"block\",\n atom: true,\n attrs: {\n value: {\n default: \"\",\n validate: \"string\"\n }\n },\n parseDOM: [{\n tag: 'figure[data-type=\"math_block\"]',\n getAttrs: (dom: HTMLElement) => ({ value: dom.dataset.value || dom.textContent || \"\" })\n }],\n toDOM: (node: ProseNode) => [\n \"figure\",\n {\n \"data-type\": \"math_block\",\n \"data-value\": node.attrs.value\n },\n node.attrs.value\n ],\n parseMarkdown: {\n match: (node: MarkdownAstNode) => node.type === \"math\",\n runner: (state, node: MarkdownAstNode, type) => {\n state.addNode(type, { value: String(node.value || \"\") });\n }\n },\n toMarkdown: {\n match: (node: ProseNode) => node.type.name === \"math_block\",\n runner: (state, node: ProseNode) => {\n state.addNode(\"math\", undefined, String(node.attrs.value || \"\"));\n }\n }\n}));\n\nconst safeHtmlInlineSchema = $nodeSchema(\"safe_html_inline\", () => ({\n group: \"inline\",\n inline: true,\n content: \"inline*\",\n attrs: {\n tag: {\n default: \"kbd\",\n validate: \"string\"\n }\n },\n parseDOM: [\n \"u\",\n \"mark\",\n \"kbd\"\n ].map((tag) => ({\n tag,\n getAttrs: () => ({ tag })\n })),\n toDOM: (node: ProseNode) => {\n const tag = normalizeSafeHtmlTag(node.attrs.tag);\n return [tag, { \"data-type\": \"safe_html_inline\", \"data-tag\": tag }, 0];\n },\n parseMarkdown: {\n match: (node: MarkdownAstNode) => node.type === \"safeHtmlInline\",\n runner: (state, node: MarkdownAstNode, type) => {\n state.openNode(type, { tag: normalizeSafeHtmlTag(node.tag) }).next(node.children).closeNode();\n }\n },\n toMarkdown: {\n match: (node: ProseNode) => node.type.name === \"safe_html_inline\",\n runner: (state, node: ProseNode) => {\n const tag = normalizeSafeHtmlTag(node.attrs.tag);\n state.addNode(\"html\", undefined, `<${tag}>`);\n state.next(node.content);\n state.addNode(\"html\", undefined, `</${tag}>`);\n }\n }\n}));\n\nfunction transformSafeInlineHtmlTree(node: MarkdownAstNode): void {\n if (!Array.isArray(node.children)) {\n return;\n }\n node.children = transformSafeInlineHtmlChildren(node.children);\n node.children.forEach(transformSafeInlineHtmlTree);\n}\n\nfunction transformSafeInlineHtmlChildren(children: MarkdownAstNode[]): MarkdownAstNode[] {\n const next: MarkdownAstNode[] = [];\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n const tag = getOpeningSafeHtmlTag(child);\n if (!tag) {\n next.push(child);\n continue;\n }\n const closeIndex = findClosingSafeHtmlTag(children, index + 1, tag);\n if (closeIndex < 0) {\n next.push(child);\n continue;\n }\n next.push({\n type: \"safeHtmlInline\",\n tag,\n children: children.slice(index + 1, closeIndex)\n });\n index = closeIndex;\n }\n return next;\n}\n\nfunction getOpeningSafeHtmlTag(node: MarkdownAstNode): SafeInlineHtmlTag | null {\n if (node.type !== \"html\" || typeof node.value !== \"string\") {\n return null;\n }\n const match = node.value.trim().match(/^<([a-z][a-z0-9-]*)>$/i);\n if (!match) {\n return null;\n }\n const tag = match[1].toLowerCase();\n return isSafeInlineHtmlTag(tag) ? tag : null;\n}\n\nfunction findClosingSafeHtmlTag(children: MarkdownAstNode[], startIndex: number, tag: SafeInlineHtmlTag): number {\n let depth = 0;\n const openPattern = new RegExp(`^<${tag}>$`, \"i\");\n const closePattern = new RegExp(`^</${tag}>$`, \"i\");\n for (let index = startIndex; index < children.length; index += 1) {\n const child = children[index];\n if (child.type !== \"html\" || typeof child.value !== \"string\") {\n continue;\n }\n const value = child.value.trim();\n if (openPattern.test(value)) {\n depth += 1;\n } else if (closePattern.test(value)) {\n if (depth === 0) {\n return index;\n }\n depth -= 1;\n }\n }\n return -1;\n}\n\nfunction normalizeSafeHtmlTag(value: unknown): SafeInlineHtmlTag {\n const tag = String(value || \"\").toLowerCase();\n return isSafeInlineHtmlTag(tag) ? tag : \"kbd\";\n}\n\nfunction createMathInlineNodeView(node: ProseNode, view: unknown, getPos: (() => number) | boolean): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"span\");\n dom.className = \"visual-math-inline-node\";\n dom.contentEditable = \"false\";\n dom.tabIndex = 0;\n const preview = document.createElement(\"span\");\n preview.className = \"visual-math-inline-preview\";\n const input = document.createElement(\"input\");\n input.className = \"visual-math-inline-input\";\n input.hidden = true;\n input.spellcheck = false;\n input.setAttribute(\"aria-label\", visualLabels.mathEdit);\n dom.append(preview, input);\n\n const setEditing = (editing: boolean) => {\n dom.classList.toggle(\"is-editing\", editing);\n preview.hidden = editing;\n input.hidden = !editing;\n if (editing) {\n input.value = getNodeTextAttribute(currentNode, \"value\");\n window.setTimeout(() => {\n input.focus();\n input.select();\n }, 0);\n }\n };\n\n const commitInlineMath = () => {\n const value = input.value;\n setEditing(false);\n updateNodeAttrs(view, getPos, { value });\n syncCurrentMarkdownFromMilkdownSoon();\n dom.focus();\n };\n\n dom.addEventListener(\"dblclick\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n setEditing(true);\n });\n dom.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n setEditing(true);\n }\n });\n const handleInlineMathKey = (event: KeyboardEvent) => {\n if (input.hidden) {\n return;\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n event.stopPropagation();\n commitInlineMath();\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n setEditing(false);\n dom.focus();\n }\n };\n input.addEventListener(\"keydown\", handleInlineMathKey);\n input.addEventListener(\"keyup\", handleInlineMathKey);\n input.addEventListener(\"blur\", () => {\n if (!input.hidden) {\n commitInlineMath();\n }\n });\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const value = getNodeTextAttribute(nextNode, \"value\");\n dom.dataset.value = value;\n dom.dataset.hoverTooltip = value;\n preview.innerHTML = renderKatexHtml(value, false, mathRenderOptions);\n if (!dom.classList.contains(\"is-editing\")) {\n input.value = value;\n }\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent() {\n return true;\n },\n ignoreMutation() {\n return true;\n }\n };\n}\n\nfunction createMathBlockNodeView(node: ProseNode, view: unknown, getPos: (() => number) | boolean): NodeView {\n let currentNode = node;\n let updateTimer: number | undefined;\n const dom = document.createElement(\"figure\");\n dom.className = \"visual-math-node-view\";\n dom.contentEditable = \"false\";\n dom.tabIndex = 0;\n\n const preview = document.createElement(\"div\");\n preview.className = \"visual-math-preview\";\n\n const controls = document.createElement(\"div\");\n controls.className = \"visual-math-controls\";\n controls.contentEditable = \"false\";\n const editButton = document.createElement(\"button\");\n editButton.type = \"button\";\n editButton.className = \"visual-math-edit\";\n editButton.textContent = visualLabels.mathEdit;\n editButton.setAttribute(\"aria-label\", visualLabels.mathEdit);\n const doneButton = document.createElement(\"button\");\n doneButton.type = \"button\";\n doneButton.className = \"visual-math-done\";\n doneButton.textContent = visualLabels.mathDone;\n doneButton.setAttribute(\"aria-label\", visualLabels.mathDone);\n controls.append(editButton, doneButton);\n\n const source = document.createElement(\"textarea\");\n source.className = \"visual-math-source\";\n source.spellcheck = false;\n source.rows = 3;\n source.addEventListener(\"input\", () => {\n window.clearTimeout(updateTimer);\n updateTimer = window.setTimeout(() => {\n updateNodeAttrs(view, getPos, { value: source.value });\n }, 160);\n preview.innerHTML = renderKatexHtml(source.value, true, mathRenderOptions);\n });\n\n const setEditing = (editing: boolean) => {\n dom.classList.toggle(\"is-editing\", editing);\n source.hidden = !editing;\n editButton.hidden = editing;\n doneButton.hidden = !editing;\n if (editing) {\n window.setTimeout(() => source.focus(), 0);\n }\n };\n\n const showEditor = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n setEditing(true);\n };\n\n const hideEditor = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n setEditing(false);\n dom.focus();\n };\n\n preview.addEventListener(\"dblclick\", showEditor);\n dom.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\" && !dom.classList.contains(\"is-editing\")) {\n event.preventDefault();\n setEditing(true);\n } else if (event.key === \"Escape\" && dom.classList.contains(\"is-editing\")) {\n event.preventDefault();\n setEditing(false);\n dom.focus();\n }\n });\n source.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n setEditing(false);\n dom.focus();\n }\n });\n editButton.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n editButton.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n editButton.addEventListener(\"click\", showEditor);\n doneButton.addEventListener(\"pointerdown\", stopCodeBlockActionEvent);\n doneButton.addEventListener(\"mousedown\", stopCodeBlockActionEvent);\n doneButton.addEventListener(\"click\", hideEditor);\n\n dom.append(controls, preview, source);\n setEditing(false);\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const value = getNodeTextAttribute(nextNode, \"value\");\n dom.dataset.value = value;\n if (source.value !== value) {\n source.value = value;\n }\n preview.innerHTML = renderKatexHtml(value, true, mathRenderOptions);\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent(event) {\n return source.contains(event.target as Node) || controls.contains(event.target as Node);\n },\n ignoreMutation() {\n return true;\n },\n destroy() {\n window.clearTimeout(updateTimer);\n }\n };\n}\n\nfunction createFootnoteReferenceNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"sup\");\n dom.className = \"visual-footnote-reference\";\n dom.contentEditable = \"false\";\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const model = resolveFootnoteReference(getNodeTextAttribute(nextNode, \"label\"));\n dom.id = model.referenceId;\n dom.dataset.label = model.label;\n dom.textContent = model.label;\n dom.dataset.hoverTooltip = `${visualLabels.footnote} ${model.label}`;\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent() {\n return true;\n },\n ignoreMutation() {\n return true;\n }\n };\n}\n\nfunction createFootnoteDefinitionNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"dl\");\n dom.className = \"visual-footnote-definition\";\n const label = document.createElement(\"dt\");\n label.contentEditable = \"false\";\n const content = document.createElement(\"dd\");\n dom.append(label, content);\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const model = resolveFootnoteReference(getNodeTextAttribute(nextNode, \"label\"));\n dom.id = model.definitionId;\n dom.dataset.label = model.label;\n label.textContent = model.label;\n };\n update(currentNode);\n\n return {\n dom,\n contentDOM: content,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n ignoreMutation(mutation) {\n return mutation.target instanceof Node && label.contains(mutation.target);\n }\n };\n}\n\nfunction createHtmlNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"span\");\n dom.className = \"visual-html-source\";\n dom.contentEditable = \"false\";\n const label = document.createElement(\"span\");\n label.className = \"visual-html-label\";\n label.textContent = visualLabels.rawHtmlEscaped;\n const source = document.createElement(\"span\");\n source.className = \"visual-html-code\";\n dom.append(label, source);\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const value = getNodeTextAttribute(nextNode, \"value\");\n dom.dataset.value = value;\n dom.dataset.hoverTooltip = `${visualLabels.rawHtmlEscaped}: ${value}`;\n source.innerHTML = renderInertInlineHtml(value);\n };\n update(currentNode);\n\n return {\n dom,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n },\n stopEvent() {\n return true;\n },\n ignoreMutation() {\n return true;\n }\n };\n}\n\nfunction createSafeHtmlInlineNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n let tag = normalizeSafeHtmlTag(node.attrs.tag);\n let dom = document.createElement(tag);\n dom.className = `visual-safe-html-inline visual-safe-html-${tag}`;\n dom.dataset.tag = tag;\n\n return {\n dom,\n contentDOM: dom,\n update(nextNode) {\n const nextTag = normalizeSafeHtmlTag(nextNode.attrs.tag);\n if (nextNode.type !== currentNode.type || nextTag !== tag) {\n return false;\n }\n currentNode = nextNode;\n tag = nextTag;\n dom.dataset.tag = tag;\n return true;\n }\n };\n}\n\nfunction createBlockquoteNodeView(node: ProseNode): NodeView {\n let currentNode = node;\n const dom = document.createElement(\"blockquote\");\n dom.className = \"visual-blockquote-node-view\";\n const title = document.createElement(\"p\");\n title.className = \"visual-admonition-title\";\n title.contentEditable = \"false\";\n title.hidden = true;\n const renderedBody = document.createElement(\"div\");\n renderedBody.className = \"visual-admonition-body\";\n renderedBody.contentEditable = \"false\";\n renderedBody.hidden = true;\n const content = document.createElement(\"div\");\n content.className = \"visual-blockquote-content\";\n dom.append(title, renderedBody, content);\n\n const renderAdmonitionBody = (body: string) => {\n renderedBody.replaceChildren();\n const paragraph = document.createElement(\"p\");\n paragraph.textContent = body || \"\";\n renderedBody.append(paragraph);\n };\n\n const update = (nextNode: ProseNode) => {\n currentNode = nextNode;\n const admonition = detectBlockquoteAdmonition(nextNode.textContent || \"\");\n dom.className = \"visual-blockquote-node-view\";\n title.hidden = true;\n title.textContent = \"\";\n renderedBody.hidden = true;\n renderedBody.replaceChildren();\n content.classList.remove(\"visual-admonition-source\");\n delete dom.dataset.admonition;\n if (admonition) {\n dom.classList.add(\"admonition\", `admonition-${admonition.type}`);\n dom.dataset.admonition = admonition.type;\n title.hidden = false;\n title.textContent = admonition.label;\n renderedBody.hidden = false;\n renderAdmonitionBody(admonition.body);\n content.classList.add(\"visual-admonition-source\");\n }\n };\n update(currentNode);\n\n return {\n dom,\n contentDOM: content,\n update(nextNode) {\n if (nextNode.type !== currentNode.type) {\n return false;\n }\n update(nextNode);\n return true;\n }\n };\n}\n\nfunction getNodeTextAttribute(node: ProseNode, name: string): string {\n return String(node.attrs[name] || \"\");\n}\n\nfunction updateNodeAttrs(view: unknown, getPos: (() => number) | boolean, attrs: Record<string, unknown>): void {\n if (typeof getPos !== \"function\") {\n return;\n }\n const candidate = view as {\n state?: {\n doc?: {\n nodeAt(pos: number): ProseNode | null;\n };\n tr?: {\n setNodeMarkup(pos: number, type: unknown, attrs: Record<string, unknown>): unknown;\n };\n };\n dispatch?: (transaction: unknown) => void;\n };\n let pos = 0;\n try {\n pos = getPos();\n } catch {\n return;\n }\n const node = candidate.state?.doc?.nodeAt(pos);\n const transaction = node && candidate.state?.tr?.setNodeMarkup(pos, undefined, { ...node.attrs, ...attrs });\n if (transaction) {\n candidate.dispatch?.(transaction);\n }\n}\n\nfunction registerVisualNodeViews(\n views: Array<[string, (node: ProseNode, view: unknown, getPos: (() => number) | boolean) => NodeView]>\n): Array<[string, (node: ProseNode, view: unknown, getPos: (() => number) | boolean) => NodeView]> {\n const visualNodeViews: Array<[string, (node: ProseNode, view: unknown, getPos: (() => number) | boolean) => NodeView]> = [\n [\"code_block\", createCodeBlockNodeView],\n [\"math_inline\", createMathInlineNodeView],\n [\"math_block\", createMathBlockNodeView],\n [\"footnote_reference\", createFootnoteReferenceNodeView],\n [\"footnote_definition\", createFootnoteDefinitionNodeView],\n [\"html\", createHtmlNodeView],\n [\"safe_html_inline\", createSafeHtmlInlineNodeView],\n [\"blockquote\", createBlockquoteNodeView]\n ];\n const ids = new Set(visualNodeViews.map(([id]) => id));\n return [\n ...views.filter(([nodeId]) => !ids.has(nodeId)),\n ...visualNodeViews\n ];\n}\n\nsetScriptState(\"runtime-loading\", \"bundle-started\");\nvoid boot();\n\nasync function runMermaid(): Promise<void> {\n const nodes = Array.from(previewElement.querySelectorAll<HTMLElement>(\".mermaid\"));\n if (!nodes.length) {\n return;\n }\n for (const node of nodes) {\n resetMermaidElement(node, node.textContent || \"\");\n await queueMermaidElementRender(node);\n }\n}\n\nfunction queueMermaidElementRender(node: HTMLElement): Promise<void> {\n const render = mermaidRenderQueue.catch(() => undefined).then(async () => {\n let mermaid: MermaidRuntime;\n try {\n mermaid = await loadMermaid();\n mermaid.initialize({ startOnLoad: false, securityLevel: \"strict\" });\n } catch (error) {\n markMermaidRenderError(node, error);\n return;\n }\n await renderMermaidNode(mermaid, node);\n });\n mermaidRenderQueue = render;\n return render;\n}\n\nasync function renderMermaidNode(mermaid: MermaidRuntime, node: HTMLElement): Promise<void> {\n if (node.dataset.superMarkdownMermaidError) {\n return;\n }\n const source = node.dataset.superMarkdownMermaidSource || node.textContent || \"\";\n node.dataset.superMarkdownMermaidSource = source;\n try {\n await mermaid.run({ nodes: [node] as unknown as NodeListOf<HTMLElement> });\n } catch (error) {\n markMermaidRenderError(node, error, source);\n }\n}\n\nfunction markMermaidRenderError(node: HTMLElement, error: unknown, source = node.dataset.superMarkdownMermaidSource || node.textContent || \"\"): void {\n const message = getErrorMessage(error);\n node.dataset.superMarkdownMermaidError = message;\n node.dataset.hoverTooltip = message;\n node.classList.add(\"mermaid-render-error\");\n node.textContent = source ? `${message}\\n\\n${source}` : message;\n}\n\nfunction resetMermaidElement(node: HTMLElement, source: string): void {\n node.classList.remove(\"mermaid-render-error\");\n node.removeAttribute(\"data-processed\");\n delete node.dataset.superMarkdownMermaidError;\n delete node.dataset.superMarkdownMermaidSource;\n delete node.dataset.hoverTooltip;\n node.textContent = source;\n}\n\nasync function loadMermaid(): Promise<MermaidRuntime> {\n if (window.mermaid) {\n return window.mermaid;\n }\n if (mermaidRuntimePromise) {\n return mermaidRuntimePromise;\n }\n const src = payload.mermaidScript;\n if (!src) {\n throw new Error(\"Missing Mermaid runtime URI\");\n }\n mermaidRuntimePromise = new Promise<MermaidRuntime>((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.async = true;\n script.dataset.superMarkdownMermaid = \"true\";\n script.addEventListener(\"load\", () => {\n if (window.mermaid) {\n resolve(window.mermaid);\n } else {\n reject(new Error(\"Mermaid runtime did not initialize\"));\n }\n }, { once: true });\n script.addEventListener(\"error\", () => {\n reject(new Error(\"Failed to load Mermaid runtime\"));\n }, { once: true });\n document.head.append(script);\n }).catch((error) => {\n mermaidRuntimePromise = null;\n throw error;\n });\n return mermaidRuntimePromise;\n}\n\nfunction applyLayout(): void {\n document.body.classList.remove(\"layout-workbench\", \"layout-editorOnly\", \"layout-splitEdit\", \"layout-previewOnly\");\n document.body.classList.add(`layout-${currentLayout}`);\n if (currentLayout === \"previewOnly\") {\n setMode(\"preview\", false);\n } else if (currentLayout === \"splitEdit\") {\n setMode(\"split\", false);\n } else if (currentMode === \"preview\" || currentMode === \"split\") {\n setMode(\"source\", false);\n } else {\n applyMode();\n }\n}\n\nfunction setMode(mode: string, notify: boolean): void {\n currentMode = normalizeMode(mode);\n if (currentMode === \"split\") {\n currentLayout = \"splitEdit\";\n }\n if (currentMode === \"preview\") {\n currentLayout = \"previewOnly\";\n }\n applyMode();\n if (notify) {\n post(\"setMode\", { mode: currentMode });\n }\n}\n\nfunction applyMode(): void {\n document.body.classList.remove(\"mode-source\", \"mode-wysiwyg\", \"mode-preview\", \"mode-split\");\n document.body.classList.add(`mode-${currentMode}`);\n applySplitRatio(false);\n if (currentMode === \"wysiwyg\") {\n void ensureMilkdown().catch(() => undefined);\n }\n bindEditorScrollSync();\n}\n\nasync function ensureMilkdown(): Promise<void> {\n if (milkdownReady) {\n return;\n }\n if (milkdownReadyPromise) {\n return milkdownReadyPromise;\n }\n visualEditor.innerHTML = \"\";\n milkdownReadyPromise = (async () => {\n milkdownEditor = Editor.make()\n .config((ctx) => {\n ctx.set(rootCtx, visualEditor);\n ctx.set(defaultValueCtx, currentMarkdown);\n ctx.get(listenerCtx).markdownUpdated((_ctx, markdown) => {\n if (applyingMilkdownUpdate) {\n return;\n }\n currentMarkdown = markdown;\n sourceEditor.value = markdown;\n renderSidePanels(markdown);\n syncToHost();\n });\n ctx.update(nodeViewCtx, registerVisualNodeViews);\n ctx.update(uploadConfig.key, (config) => ({\n ...config,\n enableHtmlFileUploader: false,\n uploader: async (files, schema) => {\n let uploaded: UploadedMarkdownImage[];\n try {\n uploaded = await uploadImageFiles(Array.from(files || []));\n } catch (error) {\n post(\"error\", { message: getErrorMessage(error) });\n throw error;\n }\n const imageNode = schema.nodes.image;\n if (!imageNode) {\n throw new Error(\"Missing image node schema\");\n }\n return uploaded\n .map((image) => createImageNodeFromMarkdown(image.markdown, imageNode))\n .filter((node): node is ProseNode => Boolean(node));\n }\n }));\n })\n .use(commonmark)\n .use(gfm)\n .use(remarkMathPlugin)\n .use(remarkSafeInlineHtmlPlugin)\n .use(mathInlineSchema)\n .use(mathBlockSchema)\n .use(safeHtmlInlineSchema)\n .use(listener)\n .use(clipboard)\n .use(upload)\n .use(history)\n .use(trailing);\n await milkdownEditor.create();\n milkdownReady = true;\n startVisualImageObserver();\n resolveVisualImagesSoon();\n })().catch((error) => {\n milkdownEditor = null;\n milkdownReady = false;\n milkdownReadyPromise = null;\n setScriptError(error);\n post(\"error\", { message: getErrorMessage(error) });\n throw error;\n });\n return milkdownReadyPromise;\n}\n\nfunction syncMilkdownFromMarkdown(markdown: string): void {\n if (!milkdownEditor || !milkdownReady) {\n return;\n }\n applyingMilkdownUpdate = true;\n try {\n milkdownEditor.action(replaceAll(markdown, true));\n } finally {\n window.setTimeout(() => {\n applyingMilkdownUpdate = false;\n resolveVisualImagesSoon();\n }, 0);\n }\n}\n\nasync function handleToolbarAction(action: string): Promise<void> {\n if (action === \"organizeMarkdown\") {\n post(\"runHostCommand\", { command: \"organizeMarkdown\" });\n return;\n }\n if (action === \"help\") {\n post(\"openLink\", { href: SUPER_MARKDOWN_ISSUES_URL });\n return;\n }\n if (action === \"toc\") {\n post(\"toolbarCommand\", { action });\n return;\n }\n if (action === \"switchBackgroundTheme\") {\n post(\"toolbarCommand\", { action });\n return;\n }\n if (action === \"switchDisplayLanguage\") {\n post(\"toolbarCommand\", { action });\n return;\n }\n if (action.startsWith(\"export-\")) {\n post(\"export\", { format: action.replace(\"export-\", \"\") });\n return;\n }\n if (action === \"image\") {\n await chooseImagesForInsert();\n return;\n }\n if (currentMode !== \"wysiwyg\") {\n applySourceToolbarAction(action);\n return;\n }\n await ensureMilkdown();\n applyMilkdownToolbarAction(action);\n}\n\nfunction applyMilkdownToolbarAction(action: string): void {\n if (!milkdownEditor) {\n return;\n }\n const heading = action.match(/^heading-([1-6])$/);\n if (heading) {\n milkdownEditor.action(callCommand(wrapInHeadingCommand.key, Number(heading[1])));\n return;\n }\n const commands: Record<string, () => void> = {\n bold: () => milkdownEditor?.action(callCommand(toggleStrongCommand.key)),\n italic: () => milkdownEditor?.action(callCommand(toggleEmphasisCommand.key)),\n strike: () => milkdownEditor?.action(callCommand(toggleStrikethroughCommand.key)),\n \"inline-code\": () => milkdownEditor?.action(callCommand(toggleInlineCodeCommand.key)),\n link: () => milkdownEditor?.action(callCommand(toggleLinkCommand.key, { href: \"https://example.com\" })),\n hr: () => milkdownEditor?.action(callCommand(insertHrCommand.key)),\n quote: () => milkdownEditor?.action(callCommand(wrapInBlockquoteCommand.key)),\n list: () => milkdownEditor?.action(callCommand(wrapInBulletListCommand.key)),\n \"ordered-list\": () => milkdownEditor?.action(callCommand(wrapInOrderedListCommand.key)),\n code: () => milkdownEditor?.action(callCommand(createCodeBlockCommand.key)),\n table: () => milkdownEditor?.action(callCommand(insertTableCommand.key, { row: 3, col: 3 }))\n };\n if (commands[action]) {\n commands[action]();\n return;\n }\n if (action === \"underline\") {\n surroundMilkdownSelection(\"<u>\", \"</u>\", \"text\");\n } else if (action === \"highlight\") {\n surroundMilkdownSelection(\"==\", \"==\", \"text\");\n } else if (action === \"task\") {\n insertMarkdown(\"* [ ] Task\");\n } else if (action === \"task-checked\") {\n insertMarkdown(\"* [x] Task\");\n } else if (action === \"math\") {\n insertMarkdown(\"$$\\nx = y\\n$$\");\n } else if (action === \"mermaid\") {\n insertMarkdown(\"```mermaid\\ngraph TD\\n A --> B\\n```\");\n }\n}\n\nfunction surroundMilkdownSelection(prefix: string, suffix: string, fallback: string): void {\n if (!milkdownEditor) {\n return;\n }\n const domSelection = window.getSelection()?.toString().trim() || \"\";\n if (domSelection && replaceMarkdownTextSelection(domSelection, prefix, suffix)) {\n return;\n }\n try {\n milkdownEditor.action((ctx) => {\n const view = ctx.get(editorViewCtx);\n const { from, to, empty } = view.state.selection;\n const selected = empty ? fallback : milkdownEditor!.action(getMarkdown({ from, to })).trim() || fallback;\n milkdownEditor!.action(replaceRange(`${prefix}${selected}${suffix}`, { from, to }));\n syncCurrentMarkdownFromMilkdownSoon();\n });\n } catch {\n insertMarkdown(`${prefix}${fallback}${suffix}`);\n }\n}\n\nfunction insertMarkdown(markdown: string): void {\n if (!markdown) {\n return;\n }\n if (currentMode === \"wysiwyg\" && milkdownEditor) {\n insertMarkdownSnippetFromVisualSelection(markdown);\n } else {\n insertSourceSnippet(markdown);\n }\n}\n\nfunction replaceMarkdownTextSelection(selected: string, prefix: string, suffix: string): boolean {\n const index = currentMarkdown.indexOf(selected);\n if (index < 0) {\n return false;\n }\n currentMarkdown = `${currentMarkdown.slice(0, index)}${prefix}${selected}${suffix}${currentMarkdown.slice(index + selected.length)}`;\n sourceEditor.value = currentMarkdown;\n syncMilkdownFromMarkdown(currentMarkdown);\n renderSidePanels(currentMarkdown);\n syncToHost();\n return true;\n}\n\nfunction insertMarkdownSnippetFromVisualSelection(snippet: string): void {\n const selected = window.getSelection()?.toString().trim() || \"\";\n const selectedIndex = selected ? currentMarkdown.indexOf(selected) : -1;\n if (selectedIndex >= 0) {\n currentMarkdown = `${currentMarkdown.slice(0, selectedIndex)}${snippet}${currentMarkdown.slice(selectedIndex + selected.length)}`;\n } else {\n const trimmed = currentMarkdown.replace(/\\s+$/u, \"\");\n const prefix = trimmed ? \"\\n\\n\" : \"\";\n currentMarkdown = `${trimmed}${prefix}${snippet}`;\n }\n sourceEditor.value = currentMarkdown;\n syncMilkdownFromMarkdown(currentMarkdown);\n renderSidePanels(currentMarkdown);\n syncToHost();\n}\n\nfunction syncCurrentMarkdownFromMilkdownSoon(): void {\n window.setTimeout(() => {\n if (!milkdownEditor || applyingMilkdownUpdate) {\n return;\n }\n try {\n const markdown = milkdownEditor.action(getMarkdown());\n currentMarkdown = markdown;\n sourceEditor.value = markdown;\n renderSidePanels(markdown);\n syncToHost();\n } catch {\n // The listener path is still the primary sync mechanism.\n }\n }, 0);\n}\n\nfunction applySourceToolbarAction(action: string): void {\n const heading = action.match(/^heading-([1-6])$/);\n if (heading) {\n replaceSourceSelection(`${\"#\".repeat(Number(heading[1]))} `, \"\", \"Heading\");\n return;\n }\n const wrappers: Record<string, [string, string, string]> = {\n bold: [\"**\", \"**\", \"text\"],\n italic: [\"*\", \"*\", \"text\"],\n underline: [\"<u>\", \"</u>\", \"text\"],\n strike: [\"~~\", \"~~\", \"text\"],\n highlight: [\"==\", \"==\", \"text\"],\n \"inline-code\": [\"`\", \"`\", \"code\"],\n link: [\"[\", \"](https://example.com)\", \"link text\"]\n };\n if (wrappers[action]) {\n replaceSourceSelection(...wrappers[action]);\n return;\n }\n const snippets: Record<string, string> = {\n hr: \"---\",\n quote: \"> Quote\",\n list: \"- List item\",\n \"ordered-list\": \"1. List item\",\n task: \"- [ ] Task\",\n \"task-checked\": \"- [x] Task\",\n code: \"```text\\ncode\\n```\",\n table: \"| Column | Value |\\n| --- | --- |\\n| Item | Value |\",\n math: \"$$\\nx = y\\n$$\",\n mermaid: \"```mermaid\\ngraph TD\\n A --> B\\n```\"\n };\n if (snippets[action]) {\n insertSourceSnippet(snippets[action]);\n }\n}\n\nfunction replaceSourceSelection(prefix: string, suffix: string, fallback: string): void {\n const selection = getSourceSelection();\n const selected = sourceEditor.value.slice(selection.start, selection.end) || fallback;\n const insertion = `${prefix}${selected}${suffix}`;\n sourceEditor.setRangeText(insertion, selection.start, selection.end, \"end\");\n currentMarkdown = sourceEditor.value;\n rememberSourceSelection();\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n}\n\nfunction insertSourceSnippet(snippet: string): void {\n const selection = getSourceSelection();\n const selected = sourceEditor.value.slice(selection.start, selection.end);\n const insertion = selected ? snippet.replace(/text|code|Task|Quote|List item/, selected) : snippet;\n const prefix = needsBlockPadding(selection.start) ? \"\\n\\n\" : \"\";\n sourceEditor.setRangeText(`${prefix}${insertion}`, selection.start, selection.end, \"end\");\n currentMarkdown = sourceEditor.value;\n rememberSourceSelection();\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n}\n\nfunction insertSourceBlockSnippet(snippet: string): void {\n if (!snippet) {\n return;\n }\n const selection = getSourceSelection();\n const prefix = getBlockInsertionPrefix(selection.start);\n const suffix = selection.end < sourceEditor.value.length && !sourceEditor.value.slice(selection.end).startsWith(\"\\n\")\n ? \"\\n\\n\"\n : \"\";\n sourceEditor.setRangeText(`${prefix}${snippet}${suffix}`, selection.start, selection.end, \"end\");\n currentMarkdown = sourceEditor.value;\n rememberSourceSelection();\n syncMilkdownFromMarkdown(currentMarkdown);\n syncToHost();\n}\n\nfunction getBlockInsertionPrefix(position: number): string {\n const before = sourceEditor.value.slice(0, position);\n if (!before || before.endsWith(\"\\n\\n\")) {\n return \"\";\n }\n return before.endsWith(\"\\n\") ? \"\\n\" : \"\\n\\n\";\n}\n\nfunction needsBlockPadding(position: number): boolean {\n return position > 0 && !sourceEditor.value.slice(0, position).endsWith(\"\\n\\n\");\n}\n\nfunction rememberSourceSelection(): void {\n activeSourceSelection = {\n start: sourceEditor.selectionStart || 0,\n end: sourceEditor.selectionEnd || sourceEditor.selectionStart || 0\n };\n}\n\nfunction getSourceSelection(): { start: number; end: number } {\n if (document.activeElement === sourceEditor) {\n rememberSourceSelection();\n }\n const max = sourceEditor.value.length;\n return {\n start: Math.max(0, Math.min(activeSourceSelection.start, max)),\n end: Math.max(0, Math.min(activeSourceSelection.end, max))\n };\n}\n\nasync function chooseImagesForInsert(): Promise<void> {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = \"image/*\";\n input.multiple = true;\n input.style.position = \"fixed\";\n input.style.left = \"-9999px\";\n input.style.top = \"0\";\n input.onchange = async () => {\n try {\n const files = Array.from(input.files || []);\n if (!files.length) {\n return;\n }\n const uploaded = await uploadImageFiles(files);\n const markdown = markdownFromUploadedImages(uploaded);\n if (currentMode === \"wysiwyg\" && milkdownEditor) {\n insertMarkdown(markdown);\n } else {\n insertSourceBlockSnippet(markdown);\n }\n } catch (error) {\n post(\"error\", { message: getErrorMessage(error) });\n } finally {\n input.remove();\n }\n };\n document.body.append(input);\n input.click();\n}\n\nfunction readImageFileData(file: File): Promise<{ id: string; name: string; dataUrl: string }> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = () => reject(reader.error || new Error(\"Failed to read image\"));\n reader.onload = () => resolve({\n id: `${Date.now()}-${Math.random().toString(16).slice(2)}`,\n name: file.name,\n dataUrl: String(reader.result || \"\")\n });\n reader.readAsDataURL(file);\n });\n}\n\nfunction toggleToolbarMenu(name: string): void {\n const wrapper = toolbarElement.querySelector(`[data-menu-toggle=\"${name}\"]`)?.closest(\".toolbar-menu-wrapper\") as HTMLElement | null;\n if (!wrapper) {\n return;\n }\n const open = !wrapper.classList.contains(\"is-open\");\n closeToolbarMenus();\n wrapper.classList.toggle(\"is-open\", open);\n const menu = wrapper.querySelector(\".toolbar-menu\") as HTMLElement | null;\n const toggle = wrapper.querySelector(\".toolbar-menu-toggle\") as HTMLElement | null;\n if (menu) {\n menu.hidden = !open;\n }\n toggle?.setAttribute(\"aria-expanded\", String(open));\n if (open) {\n positionToolbarMenu(wrapper);\n }\n}\n\nfunction positionToolbarMenu(wrapper: HTMLElement): void {\n const toggle = wrapper.querySelector(\".toolbar-menu-toggle\");\n const menu = wrapper.querySelector(\".toolbar-menu\") as HTMLElement | null;\n if (!toggle || !menu) {\n return;\n }\n const rect = toggle.getBoundingClientRect();\n const menuWidth = menu.offsetWidth || 170;\n const alignedLeft = wrapper.classList.contains(\"toolbar-more-menu\") ? rect.right - menuWidth : rect.left;\n const left = Math.min(Math.max(8, alignedLeft), Math.max(8, window.innerWidth - menuWidth - 8));\n menu.style.top = `${Math.round(rect.bottom + 6)}px`;\n menu.style.left = `${Math.round(left)}px`;\n}\n\nfunction closeToolbarMenus(): void {\n toolbarElement.querySelectorAll(\".toolbar-menu-wrapper.is-open\").forEach((wrapper) => {\n const menu = wrapper.querySelector(\".toolbar-menu\") as HTMLElement | null;\n wrapper.classList.remove(\"is-open\");\n if (menu) {\n menu.hidden = true;\n menu.removeAttribute(\"style\");\n }\n wrapper.querySelector(\".toolbar-menu-toggle\")?.setAttribute(\"aria-expanded\", \"false\");\n });\n}\n\nfunction renderSidePanels(markdown: string): void {\n const headings = previewState && previewState.markdown === markdown ? previewState.headings : extractHeadings(markdown);\n currentOutlineHeadings = headings;\n renderOutline(headings);\n}\n\nfunction extractHeadings(markdown: string): PreviewState[\"headings\"] {\n const headings: PreviewState[\"headings\"] = [];\n let inFence = false;\n markdown.split(/\\r?\\n/).forEach((line, index) => {\n if (/^```/.test(line.trim())) {\n inFence = !inFence;\n return;\n }\n if (inFence) {\n return;\n }\n const match = line.match(/^(#{1,6})\\s+(.+?)\\s*#*$/);\n if (!match) {\n return;\n }\n const text = match[2].replace(/[`*_~[\\]()]/g, \"\").trim();\n headings.push({ level: match[1].length, text, slug: baseSlug(text), line: index });\n });\n return headings;\n}\n\nfunction baseSlug(text: string): string {\n return text.toLowerCase().trim()\n .replace(/[^\\p{L}\\p{N}\\s-]/gu, \"\")\n .replace(/\\s+/g, \"-\") || \"heading\";\n}\n\nfunction renderOutline(headings: PreviewState[\"headings\"]): void {\n const query = (searchElement.value || \"\").trim().toLowerCase();\n const filtered = headings.filter((heading) => !query || heading.text.toLowerCase().includes(query));\n outlineElement.innerHTML = filtered.length\n ? filtered.map((heading) => {\n const id = getOutlineId(heading);\n return `<div class=\"outline-node level-${heading.level}\">\n <div class=\"outline-row\">\n <span class=\"outline-disclosure-placeholder\" aria-hidden=\"true\"></span>\n <button type=\"button\" class=\"outline-item${id === activeOutlineId ? \" is-active\" : \"\"}\" data-outline-id=\"${escapeAttribute(id)}\" data-line=\"${heading.line}\" data-slug=\"${escapeAttribute(heading.slug || \"\")}\" data-hover-tooltip=\"${escapeAttribute(heading.text)}\" aria-label=\"${escapeAttribute(heading.text)}\">${escapeHtml(heading.text)}</button>\n </div>\n </div>`;\n }).join(\"\")\n : `<div class=\"outline-empty\">${escapeHtml(translations.noHeadings || \"No headings\")}</div>`;\n updateActiveOutlineFromScroll();\n}\n\nfunction getOutlineId(heading: { slug?: string; line: number }): string {\n return `${heading.slug || \"heading\"}:${heading.line}`;\n}\n\nfunction handleOutlineClick(event: MouseEvent): void {\n const target = closestElement(event.target, \"[data-line]\");\n if (!target) {\n return;\n }\n const line = Number(target.dataset.line || 0);\n if (currentMode === \"wysiwyg\") {\n scrollVisualEditorToHeading(line);\n } else if (currentMode === \"preview\" || currentLayout === \"previewOnly\") {\n const previewTarget = findPreviewElementForLine(line);\n if (previewTarget) {\n scrollElementIntoContainer(previewElement, previewTarget);\n }\n } else {\n scrollToLine(line);\n }\n setActiveOutlineId(target.dataset.outlineId || \"\");\n}\n\nfunction updateActiveOutlineFromScroll(origin?: string | Event): void {\n if (!currentOutlineHeadings.length) {\n setActiveOutlineId(\"\");\n return;\n }\n const source = typeof origin === \"string\"\n ? origin\n : origin?.currentTarget === previewElement\n ? \"preview\"\n : origin?.currentTarget === visualEditor\n ? \"visual\"\n : \"source\";\n const line = source === \"preview\"\n ? getFirstVisiblePreviewSourceLine()\n : source === \"visual\"\n ? getFirstVisibleVisualHeadingLine()\n : getFirstVisibleSourceLine();\n if (line === null) {\n return;\n }\n let active = currentOutlineHeadings[0];\n for (const heading of currentOutlineHeadings) {\n if (heading.line <= line) {\n active = heading;\n } else {\n break;\n }\n }\n setActiveOutlineId(getOutlineId(active));\n}\n\nfunction setActiveOutlineId(id: string): void {\n activeOutlineId = id;\n outlineElement.querySelectorAll(\".outline-item\").forEach((item) => {\n item.classList.toggle(\"is-active\", (item as HTMLElement).dataset.outlineId === id);\n });\n}\n\nfunction revealActiveOutlineItem(): void {\n updateActiveOutlineFromScroll(currentMode === \"wysiwyg\" ? \"visual\" : currentMode === \"preview\" ? \"preview\" : \"source\");\n const active = activeOutlineId ? outlineElement.querySelector(`.outline-item[data-outline-id=\"${cssEscape(activeOutlineId)}\"]`) : null;\n active?.scrollIntoView({ block: \"nearest\" });\n}\n\nfunction cssEscape(value: string): string {\n return typeof CSS !== \"undefined\" && CSS.escape ? CSS.escape(value) : value.replace(/[\"\\\\]/g, \"\\\\$&\");\n}\n\nfunction toggleSidePanelFromEvent(event: Event): void {\n event.preventDefault();\n setSidePanelOpen(!sidePanelOpen);\n}\n\nfunction setSidePanelOpen(open: boolean): void {\n sidePanelOpen = open;\n document.body.classList.toggle(\"side-panel-open\", open);\n sidePanelToggleElement.setAttribute(\"aria-expanded\", String(open));\n sidePanelElement.setAttribute(\"aria-hidden\", String(!open));\n}\n\nfunction scrollToLine(line: number): void {\n const safeLine = clampSourceLine(line);\n const lines = sourceEditor.value.split(/\\r?\\n/);\n const position = lines.slice(0, safeLine).join(\"\\n\").length + (safeLine > 0 ? 1 : 0);\n sourceEditor.focus();\n sourceEditor.setSelectionRange(position, position);\n scrollSourceEditorToLine(safeLine);\n}\n\nfunction isSplitSyncMode(): boolean {\n return currentMode === \"split\" || currentLayout === \"splitEdit\" || (currentMode === \"source\" && currentLayout === \"workbench\");\n}\n\nfunction bindEditorScrollSync(): void {\n sourceEditor.onscroll = null;\n previewElement.onscroll = null;\n visualEditor.onscroll = null;\n cancelAnimationFrame(editorScrollFrame);\n if (currentMode === \"wysiwyg\") {\n visualEditor.onscroll = () => updateActiveOutlineFromScroll(\"visual\");\n return;\n }\n if (!isSplitSyncMode()) {\n return;\n }\n sourceEditor.onscroll = () => {\n if (scrollSyncSuppressTarget === \"source\") {\n return;\n }\n updateActiveOutlineFromScroll(\"source\");\n scheduleScrollSync(() => syncPreviewToSourceLine(getFirstVisibleSourceLine()));\n };\n previewElement.onscroll = () => {\n if (scrollSyncSuppressTarget === \"preview\") {\n return;\n }\n updateActiveOutlineFromScroll(\"preview\");\n scheduleScrollSync(() => {\n const line = getFirstVisiblePreviewSourceLine();\n if (line !== null) {\n syncSourceToPreviewLine(line);\n }\n });\n };\n}\n\nfunction scheduleScrollSync(callback: () => void): void {\n cancelAnimationFrame(editorScrollFrame);\n editorScrollFrame = requestAnimationFrame(callback);\n}\n\nfunction runSyncedScroll(target: string, callback: () => void): void {\n scrollSyncSuppressTarget = target;\n callback();\n clearTimeout(scrollSyncReleaseTimer);\n scrollSyncReleaseTimer = window.setTimeout(() => {\n if (scrollSyncSuppressTarget === target) {\n scrollSyncSuppressTarget = \"\";\n }\n }, 80);\n}\n\nfunction syncPreviewToSourceLine(line: number): void {\n const target = findPreviewElementForLine(line);\n if (!target) {\n return;\n }\n const previewRect = previewElement.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const nextTop = previewElement.scrollTop + targetRect.top - previewRect.top;\n runSyncedScroll(\"preview\", () => {\n previewElement.scrollTop = Math.max(0, Math.round(nextTop));\n });\n}\n\nfunction syncSourceToPreviewLine(line: number): void {\n runSyncedScroll(\"source\", () => scrollSourceEditorToLine(line));\n}\n\nfunction scrollVisualEditorToHeading(line: number): void {\n if (!milkdownReady) {\n void ensureMilkdown().then(() => scrollVisualEditorToHeading(line));\n return;\n }\n const target = findVisualHeadingForLine(line);\n if (target) {\n scrollElementIntoContainer(visualEditor, target);\n }\n}\n\nfunction findVisualHeadingForLine(line: number): HTMLElement | null {\n const headingIndex = currentOutlineHeadings.findIndex((heading) => heading.line === line);\n const headings = Array.from(visualEditor.querySelectorAll<HTMLElement>(\".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6\"));\n if (headingIndex >= 0 && headingIndex < headings.length) {\n return headings[headingIndex];\n }\n const outlineHeading = currentOutlineHeadings.find((heading) => heading.line === line);\n if (!outlineHeading) {\n return null;\n }\n const tagName = `H${outlineHeading.level}`;\n return headings.find((heading) => heading.tagName === tagName && heading.textContent?.trim() === outlineHeading.text) || null;\n}\n\nfunction scrollElementIntoContainer(container: HTMLElement, target: HTMLElement): void {\n const containerRect = container.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n container.scrollTop = Math.max(0, Math.round(container.scrollTop + targetRect.top - containerRect.top));\n}\n\nfunction findPreviewElementForLine(line: number): HTMLElement | null {\n const safeLine = clampSourceLine(line);\n const elements = Array.from(previewElement.querySelectorAll<HTMLElement>(\"[data-source-line]\"));\n let fallback: HTMLElement | null = null;\n for (const element of elements) {\n const elementLine = getPreviewSourceLine(element);\n if (elementLine === null) {\n continue;\n }\n fallback = element;\n if (elementLine >= safeLine) {\n return element;\n }\n }\n return fallback;\n}\n\nfunction getFirstVisiblePreviewSourceLine(): number | null {\n const previewRect = previewElement.getBoundingClientRect();\n const elements = Array.from(previewElement.querySelectorAll<HTMLElement>(\"[data-source-line]\"));\n let bestLine: number | null = null;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const element of elements) {\n const line = getPreviewSourceLine(element);\n if (line === null) {\n continue;\n }\n const rect = element.getBoundingClientRect();\n if (rect.bottom < previewRect.top || rect.top > previewRect.bottom) {\n continue;\n }\n const distance = Math.abs(Math.max(rect.top, previewRect.top) - previewRect.top);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestLine = line;\n }\n }\n return bestLine;\n}\n\nfunction getFirstVisibleVisualHeadingLine(): number | null {\n const visualRect = visualEditor.getBoundingClientRect();\n const headings = Array.from(visualEditor.querySelectorAll<HTMLElement>(\".ProseMirror h1, .ProseMirror h2, .ProseMirror h3, .ProseMirror h4, .ProseMirror h5, .ProseMirror h6\"));\n let bestIndex = -1;\n let bestDistance = Number.POSITIVE_INFINITY;\n headings.forEach((heading, index) => {\n const rect = heading.getBoundingClientRect();\n if (rect.bottom < visualRect.top || rect.top > visualRect.bottom) {\n return;\n }\n const distance = Math.abs(Math.max(rect.top, visualRect.top) - visualRect.top);\n if (distance < bestDistance) {\n bestDistance = distance;\n bestIndex = index;\n }\n });\n return bestIndex >= 0 ? currentOutlineHeadings[bestIndex]?.line ?? null : null;\n}\n\nfunction getPreviewSourceLine(element: HTMLElement): number | null {\n const line = Number(element.dataset.sourceLine);\n return Number.isFinite(line) ? line : null;\n}\n\nfunction getFirstVisibleSourceLine(): number {\n const lineHeight = getSourceLineHeight();\n return clampSourceLine(Math.floor(sourceEditor.scrollTop / Math.max(1, lineHeight)));\n}\n\nfunction scrollSourceEditorToLine(line: number): void {\n const maxScrollTop = Math.max(0, sourceEditor.scrollHeight - sourceEditor.clientHeight);\n sourceEditor.scrollTop = Math.min(maxScrollTop, Math.max(0, Math.round(clampSourceLine(line) * getSourceLineHeight())));\n}\n\nfunction getSourceLineHeight(): number {\n const style = getComputedStyle(sourceEditor);\n const fontSize = Number.parseFloat(style.fontSize) || 14;\n const lineHeight = Number.parseFloat(style.lineHeight);\n return Number.isFinite(lineHeight) ? lineHeight : fontSize * 1.65;\n}\n\nfunction clampSourceLine(line: number): number {\n const lines = sourceEditor.value.split(/\\r?\\n/);\n return Math.max(0, Math.min(Math.floor(Number(line) || 0), Math.max(0, lines.length - 1)));\n}\n\nfunction handleCodeBlockActionClick(event: MouseEvent): void {\n const toneButton = closestElement(event.target, `.${CODE_BLOCK_CLASSES.toneButton}`);\n if (toneButton) {\n event.preventDefault();\n cycleCodeBlockTone(toneButton);\n return;\n }\n const copyButton = closestElement(event.target, `.${CODE_BLOCK_CLASSES.copyButton}`);\n if (copyButton) {\n event.preventDefault();\n copyCodeFromButton(copyButton);\n }\n}\n\nfunction cycleCodeBlockTone(buttonElement: HTMLElement): void {\n const block = buttonElement.closest(`.${CODE_BLOCK_CLASSES.block}, .${CODE_BLOCK_CLASSES.diagramBlock}, .${CODE_BLOCK_CLASSES.mathBlock}`) as HTMLElement | null;\n if (!block) {\n return;\n }\n const nextTone = nextCodeBlockTone(buttonElement.dataset.blockTone || block.dataset.renderBlockTone);\n block.classList.toggle(\"render-block-tone-light\", nextTone === \"light\");\n block.classList.toggle(\"render-block-tone-dark\", nextTone === \"dark\");\n block.dataset.renderBlockTone = nextTone;\n buttonElement.dataset.blockTone = nextTone;\n buttonElement.textContent = codeBlockToneLabel(nextTone, codeToneLabels);\n updateToneButtonTitle(buttonElement, nextTone);\n}\n\nfunction updateToneButtonTitle(buttonElement: HTMLElement, tone: string): void {\n const title = `${codeToneLabels.toneLabel}: ${codeBlockToneLabel(normalizeCodeBlockTone(tone), codeToneLabels)}`;\n buttonElement.dataset.hoverTooltip = title;\n buttonElement.setAttribute(\"aria-label\", title);\n}\n\nfunction copyCodeFromButton(buttonElement: HTMLElement): void {\n const renderedBlock = buttonElement.closest(`.${CODE_BLOCK_CLASSES.block}, .${CODE_BLOCK_CLASSES.diagramBlock}`) as HTMLElement | null;\n const text = getCodeBlockText(renderedBlock, buttonElement);\n post(\"copyCode\", { text });\n buttonElement.textContent = buttonElement.dataset.copiedLabel || codeCopyLabels.copiedLabel;\n window.setTimeout(() => {\n buttonElement.textContent = buttonElement.dataset.copyLabel || codeCopyLabels.copyLabel;\n }, 1200);\n}\n\nfunction getCodeBlockText(block: HTMLElement | null, buttonElement: HTMLElement): string {\n if (!block) {\n return buttonElement.dataset.copyText || \"\";\n }\n const copySource = block.querySelector(`.${CODE_BLOCK_CLASSES.copySource}`) as HTMLTemplateElement | HTMLElement | null;\n if (copySource) {\n return \"content\" in copySource\n ? copySource.content.textContent || \"\"\n : copySource.textContent || \"\";\n }\n const code = block.querySelector(\"pre.visual-code-editor code, pre code, code\");\n if (code) {\n return code.textContent || \"\";\n }\n const clone = block.cloneNode(true) as HTMLElement;\n clone.querySelector(\"figcaption\")?.remove();\n clone.querySelector(`.${CODE_BLOCK_CLASSES.actionGroup}`)?.remove();\n return clone.textContent || \"\";\n}\n"], + "mappings": "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ACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,CAC3C,EACA,sBAAuB,CACrB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,OAAS,OAAS,MAAQ,OAAS,MAAO,EACjD,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EAClD,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,MAAM,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,KAAO,OAAS,MAAO,EAC1C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,KAAM,EAC3C,GAAM,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EAClD,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,CAC1B,EACA,kBAAmB,CACjB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACvC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAC/B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,KAAM,EACtC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAClC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,CACrC,EACA,YAAa,CACX,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,IAAK,EACjC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,IAAM,EAAG,EAAG,IAAK,EAC3B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACvC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAC/B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,IAAK,EACvC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,IAAK,EAC3C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,IAAM,OAAS,EAAG,EAAG,IAAK,EAClC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACtC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACtC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACtC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACtC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,IAAK,EACnC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC9C,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,IAAK,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,OAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACvC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,OAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,IAAM,EAAG,EAAG,MAAO,EAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,MAAS,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC/B,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,CAAC,CACrC,EACA,kBAAmB,CACjB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,OAAS,IAAM,OAAS,EAAG,MAAO,EACzC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,IAAM,OAAS,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,QAAU,OAAS,OAAS,EAAG,MAAO,EAC7C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,KAAO,EAAG,MAAO,EACpC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,MAAO,EACzC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,KAAO,EAAG,MAAO,EACrC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,EAAG,EACzC,IAAO,CAAC,OAAS,OAAS,KAAO,EAAG,MAAO,EAC3C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,MAAQ,EAAG,MAAO,EAC5C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,KAAO,EAAG,MAAO,EAC3C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,KAAO,EAAG,MAAO,EAC3C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,IAAM,OAAS,OAAS,EAAG,MAAO,EAC1C,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,IAAK,EAC3C,IAAO,CAAC,EAAG,OAAS,KAAO,EAAG,MAAO,EACrC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACvC,IAAO,CAAC,EAAG,OAAS,KAAO,EAAG,MAAO,EACrC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,IAAK,EAC3C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACtC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,CAC1C,EACA,cAAe,CACb,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,OAAS,IAAM,OAAS,EAAG,MAAO,EACzC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,IAAM,OAAS,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,OAAS,OAAS,MAAQ,EAAG,MAAO,EAC3C,GAAM,CAAC,QAAU,OAAS,OAAS,EAAG,MAAO,EAC7C,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,MAAO,EACzC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACnC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACpC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,GAAI,EAC1C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACtC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACpC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,GAAI,EAC1C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACpC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,IAAM,OAAS,OAAS,EAAG,MAAO,EAC1C,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACvC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,CACpC,EACA,eAAgB,CACd,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,EAAG,EAC/B,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,IAAM,EAAG,EAAG,EAAG,EACzB,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACpC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACvC,GAAM,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACnC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,KAAO,EAAG,GAAI,EACjC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,EAAG,EACrC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,EAAG,EACzC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,IAAM,OAAS,EAAG,EAAG,EAAG,EAChC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,OAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,CAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,KAAO,EAAG,EAAG,KAAK,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC9C,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EACpC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EACpC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,CAAG,EAChC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EAClC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,CAAG,EAChC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,OAAS,OAAS,KAAM,EAC7C,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,EAAG,EACjC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,GAAK,GAAK,EAAG,EAAG,MAAO,EAChC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,CAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC9C,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,IAAK,EACnC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,MAAQ,KAAO,EAAG,EAAG,IAAK,EACnC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,CAAG,EAClC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,CAAG,EAClC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,MAAQ,MAAQ,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,KAAO,IAAM,EAAG,EAAG,IAAK,EACjC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACzC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,EAAG,EAChC,KAAQ,CAAC,IAAM,KAAO,EAAG,EAAG,IAAK,EACjC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EAClC,KAAQ,CAAC,IAAM,KAAO,EAAG,EAAG,KAAK,EACjC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,CAAG,EACrC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,IAAK,EAClC,KAAQ,CAAC,KAAO,KAAO,EAAG,EAAG,IAAK,EAClC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,QAAU,OAAS,EAAG,EAAG,EAAG,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,CAAG,EACpC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,IAAM,EAAG,EAAG,MAAO,EAC/B,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACxC,MAAS,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,IAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,IAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,KAAO,KAAO,EAAG,EAAG,KAAK,EACnC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAChC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,CAAC,CACrC,EACA,kBAAmB,CACjB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,KAAM,EAC5C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAChC,IAAO,CAAC,OAAS,OAAS,MAAQ,EAAG,MAAO,EAC5C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACtC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAM,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,EAAG,EACzC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,KAAM,EACtC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACrC,KAAQ,CAAC,OAAS,OAAS,EAAG,EAAG,KAAM,EACvC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,MAAS,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACnC,MAAS,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,CAC3C,EACA,cAAe,CACb,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EAClC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EAClC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,GAAI,EACnC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,KAAM,EAC3C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,KAAM,EAC3C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC5C,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACtC,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,IAAM,OAAS,MAAO,EAC1C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,KAAM,EAC5C,IAAO,CAAC,EAAG,OAAS,MAAQ,OAAS,KAAM,EAC3C,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,KAAM,EAClD,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,KAAM,EAClD,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,MAAQ,OAAS,MAAO,EAC5C,IAAO,CAAC,EAAG,OAAS,OAAS,OAAS,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC7C,IAAO,CAAC,OAAS,OAAS,OAAS,OAAS,MAAO,EACnD,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,KAAQ,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,EAC9C,KAAQ,CAAC,EAAG,OAAS,EAAG,OAAS,KAAM,EACvC,MAAS,CAAC,EAAG,OAAS,EAAG,OAAS,MAAO,EACzC,MAAS,CAAC,OAAS,OAAS,EAAG,OAAS,MAAO,CACjD,EACA,iBAAkB,CAChB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,GAAI,EAChC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,OAAO,EACnC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,IAAM,EAAG,EAAG,GAAI,EAC1B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,MAAO,EACvC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC7B,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,GAAI,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,GAAI,EAC1C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,EAAG,EACzC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,IAAM,OAAS,EAAG,EAAG,GAAI,EACjC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,GAAI,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,GAAI,EACrC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,OAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,CACpC,EACA,mBAAoB,CAClB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,OAAS,IAAM,OAAS,EAAG,EAAG,EACrC,GAAM,CAAC,OAAS,IAAM,OAAS,EAAG,MAAO,EACzC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,IAAM,OAAS,EAAG,EAAG,EAC/B,GAAM,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC5C,GAAM,CAAC,KAAO,OAAS,EAAG,EAAG,MAAO,EACpC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EAClC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,KAAO,OAAS,OAAS,EAAG,MAAO,EAC1C,GAAM,CAAC,KAAO,IAAM,OAAS,EAAG,MAAO,EACvC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,KAAO,OAAS,OAAS,EAAG,MAAO,EAC1C,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,KAAM,EACrC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,IAAM,IAAM,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,MAAQ,EAAG,EAAG,EACjC,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,EAAG,EACrC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,EAAG,EACzC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,OAAS,OAAS,MAAQ,EAAG,MAAO,EAC5C,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,MAAQ,EAAG,MAAO,EACtC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,IAAM,OAAS,OAAS,EAAG,EAAG,EACtC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,MAAQ,EAAG,EAAG,EAClC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACnC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,CAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACxC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,CACtC,EACA,oBAAqB,CACnB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,EAAG,EAC/B,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,IAAM,EAAG,EAAG,EAAG,EACzB,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACtC,GAAM,CAAC,KAAO,OAAS,EAAG,EAAG,MAAO,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,KAAO,OAAS,EAAG,EAAG,MAAO,EACpC,GAAM,CAAC,KAAO,IAAM,EAAG,EAAG,MAAO,EACjC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,KAAO,OAAS,EAAG,EAAG,MAAO,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,KAAM,EAC/B,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACtC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,KAAO,EAAG,MAAO,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,IAAM,IAAM,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC5B,GAAM,CAAC,IAAM,OAAS,OAAS,EAAG,EAAG,EACrC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAChC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,EAAG,EACzC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,OAAS,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,OAAS,EAAG,MAAO,EAC7C,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,IAAM,OAAS,EAAG,EAAG,EAAG,EAChC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,MAAO,EACvC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC7B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,EAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,OAAS,EAAG,CAAG,EACpC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,EAC9B,KAAQ,CAAC,EAAG,OAAS,EAAG,EAAG,EAAG,CAChC,EACA,iBAAkB,CAChB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,MAAQ,EAAG,MAAO,EACjC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,OAAS,GAAK,OAAS,EAAG,OAAO,EACxC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,OAAO,EAClC,GAAM,CAAC,EAAG,GAAK,MAAQ,EAAG,KAAM,EAChC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,OAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,GAAI,EAC/B,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,MAAO,EAClC,GAAM,CAAC,EAAG,GAAK,MAAQ,EAAG,MAAO,EACjC,GAAM,CAAC,EAAG,GAAK,OAAS,EAAG,KAAM,EACjC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,CAC1B,EACA,gBAAiB,CACf,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACnC,IAAO,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACpC,IAAO,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACpC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,MAAO,EACjC,KAAQ,CAAC,OAAU,KAAO,EAAG,EAAG,MAAO,EACvC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,QAAU,KAAO,EAAG,EAAG,MAAO,EACvC,KAAQ,CAAC,QAAU,KAAO,EAAG,EAAG,MAAO,EACvC,KAAQ,CAAC,OAAS,KAAO,OAAS,EAAG,MAAO,EAC5C,KAAQ,CAAC,KAAO,KAAO,OAAS,EAAG,MAAO,EAC1C,KAAQ,CAAC,KAAO,KAAO,OAAS,EAAG,MAAO,EAC1C,KAAQ,CAAC,OAAS,KAAO,OAAS,EAAG,MAAO,EAC5C,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAU,KAAO,EAAG,EAAG,MAAO,EACvC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,OAAS,IAAM,EAAG,EAAG,MAAO,CACxC,EACA,gBAAiB,CACf,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,IAAO,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACpC,IAAO,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACpC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,CAAG,EAC1B,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,CAAG,EAC1B,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,CAAG,EAC1B,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,CAAG,EAC1B,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,OAAS,KAAM,OAAS,EAAG,MAAO,EAC3C,KAAQ,CAAC,KAAO,KAAM,OAAS,EAAG,MAAO,EACzC,KAAQ,CAAC,KAAO,KAAM,OAAS,EAAG,MAAO,EACzC,KAAQ,CAAC,OAAS,KAAM,OAAS,EAAG,MAAO,EAC3C,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,CACxC,EACA,gBAAiB,CACf,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,OAAO,EACnC,GAAM,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACnC,IAAO,CAAC,OAAS,KAAM,EAAG,EAAG,GAAI,EACjC,IAAO,CAAC,OAAS,KAAM,EAAG,EAAG,GAAI,EACjC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,OAAO,EAC9B,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,OAAO,EAC9B,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,OAAO,EAC9B,IAAO,CAAC,EAAG,IAAM,EAAG,EAAG,OAAO,EAC9B,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,GAAI,EACnC,MAAS,CAAC,OAAS,KAAM,EAAG,EAAG,GAAI,CACrC,EACA,gBAAiB,CACf,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACvB,GAAM,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,QAAS,KAAM,EAAG,EAAG,OAAO,EACnC,GAAM,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACnC,GAAM,CAAC,QAAS,KAAM,EAAG,EAAG,OAAO,EACnC,GAAM,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACnC,IAAO,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACpC,IAAO,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACpC,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,EACxB,IAAO,CAAC,EAAG,KAAO,EAAG,EAAG,MAAM,EAC9B,IAAO,CAAC,EAAG,KAAO,EAAG,EAAG,MAAM,EAC9B,IAAO,CAAC,EAAG,KAAO,EAAG,EAAG,MAAM,EAC9B,IAAO,CAAC,EAAG,KAAO,EAAG,EAAG,MAAM,EAC9B,KAAQ,CAAC,QAAS,KAAM,EAAG,EAAG,CAAG,EACjC,KAAQ,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,IAAK,EACpC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,IAAK,EACpC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,IAAK,EACpC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,IAAK,EAChC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,IAAK,EACpC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,OAAU,KAAO,EAAG,EAAG,MAAO,EACvC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,OAAU,KAAO,EAAG,EAAG,MAAO,EACvC,KAAQ,CAAC,OAAS,MAAO,EAAG,EAAG,MAAO,EACtC,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,EAAG,GAAK,EAAG,EAAG,MAAO,EAC9B,KAAQ,CAAC,KAAO,GAAK,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,KAAM,EAAG,EAAG,MAAO,EACrC,KAAQ,CAAC,OAAS,EAAG,EAAG,EAAG,MAAO,EAClC,KAAQ,CAAC,OAAS,KAAO,EAAG,EAAG,OAAO,EACtC,MAAS,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,QAAS,KAAM,EAAG,EAAG,MAAO,EACtC,MAAS,CAAC,QAAU,KAAO,EAAG,EAAG,OAAO,EACxC,MAAS,CAAC,QAAU,KAAO,EAAG,EAAG,OAAO,EACxC,MAAS,CAAC,EAAG,IAAM,EAAG,EAAG,GAAI,EAC7B,MAAS,CAAC,EAAG,IAAM,EAAG,EAAG,GAAI,EAC7B,MAAS,CAAC,EAAG,IAAM,EAAG,EAAG,GAAI,EAC7B,MAAS,CAAC,EAAG,IAAM,EAAG,EAAG,GAAI,CAC/B,EACA,qBAAsB,CACpB,GAAM,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EACxB,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,OAAS,KAAO,EAAG,EAAG,IAAK,EAClC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,EAAG,KAAO,EAAG,EAAG,IAAK,EAC5B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,QAAU,OAAS,EAAG,EAAG,IAAK,EACrC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACpC,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,OAAS,EAAG,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,GAAM,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC9B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,EACzB,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,EAAG,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,OAAS,OAAS,EAAG,EAAG,IAAK,EACrC,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OAAS,EAAG,EAAG,IAAK,EAC/B,IAAO,CAAC,EAAG,OA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SAAK,CACH,KAAQ,MACR,KAAQ,OACV,EACA,SAAK,CACH,KAAQ,MACR,KAAQ,OACV,EACA,SAAK,CACH,KAAQ,MACR,KAAQ,YACV,EACA,SAAK,CACH,KAAQ,KACV,EACA,SAAK,CACH,KAAQ,KACV,CACF,EACIC,GAAiB,CACnB,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,gBACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,UACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,qBACL,OAAK,qBACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,eACL,OAAK,qBACL,OAAK,qBACL,OAAK,eACL,OAAK,eACL,OAA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", + "names": ["require_extend", "__commonJSMin", "exports", "module", "hasOwn", "toStr", "defineProperty", "gOPD", "isArray", "arr", "isPlainObject", "obj", "hasOwnConstructor", "hasIsPrototypeOf", "key", "setProperty", "target", "options", "getProperty", "name", "extend", "src", "copy", "copyIsArray", "clone", "i", "length", "deep", "ErrorCode", "MilkdownError", "code", "message", "functionReplacer", "_", "value", "stringify", "x", "docTypeError", "type", "contextNotFound", "name", "timerNotFound", "ctxCallOutOfScope", "createNodeInParserFail", "nodeType", "attrs", "content", "heading", "serialize", "messages", "node", "acc", "title", "stackOverFlow", "parserMatchError", "serializerMatchError", "getAtomFromSchemaFail", "expectDomTypeError", "callCommandBeforeEditorView", "missingNodeInSchema", "name", "MilkdownError", "ErrorCode", "missingMarkInSchema", "Container", "slice", "context", "x", "contextNotFound", "Slice", "#watchers", "#value", "#emit", "watcher", "container", "value", "type", "updater", "w", "off", "SliceType", "name", "ctxCallOutOfScope", "createSlice", "Inspector", "#meta", "#container", "#clock", "#injectedSlices", "#consumedSlices", "#recordedTimers", "#waitTimers", "clock", "meta", "#getSlice", "timer", "duration", "#getTimer", "timerType", "promise", "start", "sliceType", "Ctx", "#inspector", "Clock", "timerNotFound", "Timer", "#promise", "#listener", "#eventUniqId", "#status", "resolve", "reject", "e", "#removeListener", "#waitTimeout", "event", "ifTimeout", "TimerType", "timeout", "createTimer", "emptyOptions", "toString", "value", "options", "settings", "includeImageAlt", "includeHtml", "one", "node", "all", "values", "result", "index", "element", "decodeNamedCharacterReference", "value", "characterReference", "character", "splice", "list", "start", "remove", "items", "end", "chunkStart", "parameters", "push", "hasOwnProperty", "combineExtensions", "extensions", "all", "index", "syntaxExtension", "extension", "hook", "left", "right", "code", "value", "constructs", "existing", "list", "before", "splice", "decodeNumericCharacterReference", "value", "base", "code", "normalizeIdentifier", "value", "asciiAlpha", "regexCheck", "asciiAlphanumeric", "asciiAtext", "asciiControl", "code", "asciiDigit", "asciiHexDigit", "asciiPunctuation", "markdownLineEnding", "markdownLineEndingOrSpace", "markdownSpace", "unicodePunctuation", "unicodeWhitespace", "regex", "check", "factorySpace", "effects", "ok", "type", "max", "limit", "size", "start", "code", "markdownSpace", "prefix", "content", "initializeContent", "effects", "contentStart", "afterContentStartConstruct", "paragraphInitial", "previous", "code", "factorySpace", "lineStart", "token", "data", "markdownLineEnding", "document", "initializeDocument", "containerConstruct", "tokenizeContainer", "effects", "self", "stack", "continued", "childFlow", "childToken", "lineStartOffset", "start", "code", "item", "documentContinue", "checkNewContainers", "closeFlow", "indexBeforeExits", "indexBeforeFlow", "point", "exitContainers", "index", "splice", "documentContinued", "flowStart", "thereIsANewContainer", "thereIsNoNewContainer", "containerContinue", "flowContinue", "writeToChild", "markdownLineEnding", "token", "endOfFile", "stream", "seen", "size", "entry", "ok", "nok", "factorySpace", "classifyCharacter", "code", "markdownLineEndingOrSpace", "unicodeWhitespace", "unicodePunctuation", "resolveAll", "constructs", "events", "context", "called", "index", "resolve", "attention", "resolveAllAttention", "tokenizeAttention", "events", "context", "index", "open", "group", "text", "openingSequence", "closingSequence", "use", "nextEvents", "offset", "start", "end", "movePoint", "push", "resolveAll", "splice", "effects", "ok", "attentionMarkers", "previous", "before", "classifyCharacter", "marker", "code", "inside", "token", "after", "close", "point", "autolink", "tokenizeAutolink", "effects", "ok", "nok", "size", "start", "code", "open", "asciiAlpha", "schemeOrEmailAtext", "emailAtext", "asciiAlphanumeric", "schemeInsideOrEmailAtext", "urlInside", "asciiControl", "emailAtSignOrDot", "asciiAtext", "emailLabel", "emailValue", "next", "blankLine", "tokenizeBlankLine", "effects", "ok", "nok", "start", "code", "markdownSpace", "factorySpace", "after", "markdownLineEnding", "blockQuote", "tokenizeBlockQuoteContinuation", "exit", "tokenizeBlockQuoteStart", "effects", "ok", "nok", "self", "start", "code", "state", "after", "markdownSpace", "contStart", "factorySpace", "contBefore", "characterEscape", "tokenizeCharacterEscape", "effects", "ok", "nok", "start", "code", "inside", "asciiPunctuation", "characterReference", "tokenizeCharacterReference", "effects", "ok", "nok", "self", "size", "max", "test", "start", "code", "open", "numeric", "asciiAlphanumeric", "value", "asciiHexDigit", "asciiDigit", "token", "decodeNamedCharacterReference", "nonLazyContinuation", "tokenizeNonLazyContinuation", "codeFenced", "tokenizeCodeFenced", "effects", "ok", "nok", "self", "closeStart", "tokenizeCloseStart", "initialPrefix", "sizeOpen", "marker", "start", "code", "beforeSequenceOpen", "tail", "sequenceOpen", "markdownSpace", "factorySpace", "infoBefore", "markdownLineEnding", "atNonLazyBreak", "after", "info", "metaBefore", "meta", "contentBefore", "contentStart", "beforeContentChunk", "contentChunk", "size", "startBefore", "beforeSequenceClose", "sequenceClose", "sequenceCloseAfter", "lineStart", "codeIndented", "tokenizeCodeIndented", "furtherStart", "tokenizeFurtherStart", "effects", "ok", "nok", "self", "start", "code", "factorySpace", "afterPrefix", "tail", "atBreak", "after", "markdownLineEnding", "inside", "codeText", "previous", "resolveCodeText", "tokenizeCodeText", "events", "tailExitIndex", "headEnterIndex", "index", "enter", "code", "effects", "ok", "nok", "self", "sizeOpen", "size", "token", "start", "sequenceOpen", "between", "sequenceClose", "markdownLineEnding", "data", "SpliceBuffer", "initial", "index", "start", "end", "stop", "deleteCount", "items", "count", "removed", "chunkedPush", "item", "n", "list", "right", "chunkStart", "subtokenize", "eventsArray", "jumps", "index", "event", "lineIndex", "otherIndex", "otherEvent", "parameters", "subevents", "more", "events", "SpliceBuffer", "subcontent", "splice", "eventIndex", "token", "context", "startPosition", "startPositions", "tokenizer", "childEvents", "gaps", "stream", "previous", "current", "adjust", "start", "breaks", "slice", "content", "resolveContent", "tokenizeContent", "continuationConstruct", "tokenizeContinuation", "events", "subtokenize", "effects", "ok", "previous", "chunkStart", "code", "chunkInside", "contentEnd", "markdownLineEnding", "contentContinue", "nok", "self", "startLookahead", "factorySpace", "prefixed", "tail", "factoryDestination", "effects", "ok", "nok", "type", "literalType", "literalMarkerType", "rawType", "stringType", "max", "limit", "balance", "start", "code", "enclosedBefore", "asciiControl", "raw", "enclosed", "markdownLineEnding", "enclosedEscape", "markdownLineEndingOrSpace", "rawEscape", "factoryLabel", "effects", "ok", "nok", "type", "markerType", "stringType", "self", "size", "seen", "start", "code", "atBreak", "markdownLineEnding", "labelInside", "markdownSpace", "labelEscape", "factoryTitle", "effects", "ok", "nok", "type", "markerType", "stringType", "marker", "start", "code", "begin", "atBreak", "markdownLineEnding", "factorySpace", "inside", "escape", "factoryWhitespace", "effects", "ok", "seen", "start", "code", "markdownLineEnding", "markdownSpace", "factorySpace", "definition", "tokenizeDefinition", "titleBefore", "tokenizeTitleBefore", "effects", "ok", "nok", "self", "identifier", "start", "code", "before", "factoryLabel", "labelAfter", "normalizeIdentifier", "markerAfter", "markdownLineEndingOrSpace", "factoryWhitespace", "destinationBefore", "factoryDestination", "destinationAfter", "after", "markdownSpace", "factorySpace", "afterWhitespace", "markdownLineEnding", "beforeMarker", "factoryTitle", "titleAfter", "titleAfterOptionalWhitespace", "hardBreakEscape", "tokenizeHardBreakEscape", "effects", "ok", "nok", "start", "code", "after", "markdownLineEnding", "headingAtx", "resolveHeadingAtx", "tokenizeHeadingAtx", "events", "context", "contentEnd", "contentStart", "content", "text", "splice", "effects", "ok", "nok", "size", "start", "code", "before", "sequenceOpen", "markdownLineEndingOrSpace", "atBreak", "sequenceFurther", "markdownLineEnding", "markdownSpace", "factorySpace", "data", "htmlBlockNames", "htmlRawNames", "htmlFlow", "resolveToHtmlFlow", "tokenizeHtmlFlow", "blankLineBefore", "tokenizeBlankLineBefore", "nonLazyContinuationStart", "tokenizeNonLazyContinuationStart", "events", "index", "effects", "ok", "nok", "self", "marker", "closingTag", "buffer", "markerB", "start", "code", "before", "open", "declarationOpen", "tagCloseStart", "continuationDeclarationInside", "asciiAlpha", "tagName", "commentOpenInside", "cdataOpenInside", "value", "continuation", "markdownLineEndingOrSpace", "slash", "name", "htmlRawNames", "htmlBlockNames", "basicSelfClosing", "completeClosingTagAfter", "completeAttributeNameBefore", "asciiAlphanumeric", "markdownSpace", "completeEnd", "completeAttributeName", "completeAttributeNameAfter", "completeAttributeValueBefore", "completeAttributeValueQuoted", "completeAttributeValueUnquoted", "completeAttributeValueQuotedAfter", "markdownLineEnding", "completeAfter", "continuationCommentInside", "continuationRawTagOpen", "continuationClose", "continuationCdataInside", "continuationAfter", "continuationStart", "continuationStartNonLazy", "continuationBefore", "continuationRawEndTag", "after", "blankLine", "htmlText", "tokenizeHtmlText", "effects", "ok", "nok", "self", "marker", "index", "returnState", "start", "code", "open", "declarationOpen", "tagCloseStart", "instruction", "asciiAlpha", "tagOpen", "commentOpenInside", "cdataOpenInside", "declaration", "commentEnd", "comment", "commentClose", "markdownLineEnding", "lineEndingBefore", "end", "value", "cdata", "cdataClose", "cdataEnd", "instructionClose", "tagClose", "asciiAlphanumeric", "tagCloseBetween", "markdownSpace", "markdownLineEndingOrSpace", "tagOpenBetween", "tagOpenAttributeName", "tagOpenAttributeNameAfter", "tagOpenAttributeValueBefore", "tagOpenAttributeValueQuoted", "tagOpenAttributeValueUnquoted", "tagOpenAttributeValueQuotedAfter", "lineEndingAfter", "factorySpace", "lineEndingAfterPrefix", "labelEnd", "resolveAllLabelEnd", "resolveToLabelEnd", "tokenizeLabelEnd", "resourceConstruct", "tokenizeResource", "referenceFullConstruct", "tokenizeReferenceFull", "referenceCollapsedConstruct", "tokenizeReferenceCollapsed", "events", "index", "newEvents", "token", "offset", "splice", "context", "open", "close", "media", "group", "label", "text", "push", "resolveAll", "effects", "ok", "nok", "self", "labelStart", "defined", "start", "code", "labelEndNok", "normalizeIdentifier", "after", "labelEndOk", "referenceNotFull", "resourceStart", "resourceBefore", "markdownLineEndingOrSpace", "factoryWhitespace", "resourceOpen", "resourceEnd", "factoryDestination", "resourceDestinationAfter", "resourceDestinationMissing", "resourceBetween", "factoryTitle", "resourceTitleAfter", "referenceFull", "factoryLabel", "referenceFullAfter", "referenceFullMissing", "referenceCollapsedStart", "referenceCollapsedOpen", "labelStartImage", "labelEnd", "tokenizeLabelStartImage", "effects", "ok", "nok", "self", "start", "code", "open", "after", "labelStartLink", "labelEnd", "tokenizeLabelStartLink", "effects", "ok", "nok", "self", "start", "code", "after", "lineEnding", "tokenizeLineEnding", "effects", "ok", "start", "code", "factorySpace", "thematicBreak", "tokenizeThematicBreak", "effects", "ok", "nok", "size", "marker", "start", "code", "before", "atBreak", "sequence", "markdownLineEnding", "markdownSpace", "factorySpace", "list", "tokenizeListContinuation", "tokenizeListEnd", "tokenizeListStart", "listItemPrefixWhitespaceConstruct", "tokenizeListItemPrefixWhitespace", "indentConstruct", "tokenizeIndent", "effects", "ok", "nok", "self", "tail", "initialSize", "size", "start", "code", "kind", "asciiDigit", "thematicBreak", "atMarker", "inside", "blankLine", "onBlank", "endOfPrefix", "otherPrefix", "markdownSpace", "notBlank", "factorySpace", "notInCurrentItem", "afterPrefix", "setextUnderline", "resolveToSetextUnderline", "tokenizeSetextUnderline", "events", "context", "index", "content", "text", "definition", "heading", "effects", "ok", "nok", "self", "marker", "start", "code", "paragraph", "before", "inside", "markdownSpace", "factorySpace", "after", "markdownLineEnding", "flow", "initializeFlow", "effects", "self", "initial", "blankLine", "atBlankEnding", "afterConstruct", "factorySpace", "content", "code", "resolver", "createResolver", "string", "initializeFactory", "text", "field", "resolveAllLineSuffixes", "initializeText", "effects", "self", "constructs", "start", "notText", "code", "atBreak", "data", "list", "index", "item", "extraResolver", "resolveAllText", "events", "context", "enter", "eventIndex", "chunks", "bufferIndex", "size", "tabs", "chunk", "token", "constructs_exports", "__export", "attentionMarkers", "contentInitial", "disable", "document", "flow", "flowInitial", "insideSpan", "string", "text", "document", "list", "blockQuote", "contentInitial", "definition", "flowInitial", "codeIndented", "flow", "headingAtx", "thematicBreak", "setextUnderline", "htmlFlow", "codeFenced", "string", "characterReference", "characterEscape", "text", "lineEnding", "labelStartImage", "attention", "autolink", "htmlText", "labelStartLink", "hardBreakEscape", "labelEnd", "codeText", "insideSpan", "resolver", "attentionMarkers", "disable", "createTokenizer", "parser", "initialize", "from", "point", "columnStart", "resolveAllConstructs", "chunks", "stack", "consumed", "effects", "constructFactory", "onsuccessfulconstruct", "onsuccessfulcheck", "consume", "enter", "exit", "context", "defineSkip", "now", "sliceSerialize", "sliceStream", "write", "state", "expectedCode", "slice", "push", "main", "addResult", "resolveAll", "token", "expandTabs", "serializeChunks", "sliceChunks", "_bufferIndex", "_index", "line", "column", "offset", "value", "accountForPotentialSkip", "chunkIndex", "chunk", "go", "code", "markdownLineEnding", "type", "fields", "construct", "info", "_", "onreturn", "hook", "constructs", "returnState", "bogusState", "listOfConstructs", "constructIndex", "currentConstruct", "handleListOfConstructs", "handleMapOfConstructs", "map", "start", "left", "all", "list", "handleConstruct", "store", "nok", "ok", "splice", "startPoint", "startPrevious", "startCurrentConstruct", "startEventsIndex", "startStack", "restore", "startIndex", "startBufferIndex", "endIndex", "endBufferIndex", "view", "head", "index", "result", "atTab", "parse", "options", "parser", "combineExtensions", "constructs_exports", "create", "content", "document", "flow", "string", "text", "initial", "creator", "from", "createTokenizer", "postprocess", "events", "subtokenize", "search", "preprocess", "column", "buffer", "start", "atCarriageReturn", "preprocessor", "value", "encoding", "end", "chunks", "match", "next", "startPosition", "endPosition", "code", "characterEscapeOrReference", "decodeString", "value", "decode", "$0", "$1", "$2", "head", "hex", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "stringifyPosition", "value", "position", "point", "index", "pos", "own", "fromMarkdown", "value", "encoding", "options", "compiler", "postprocess", "parse", "preprocess", "config", "opener", "link", "onenterdata", "heading", "blockQuote", "codeFlow", "buffer", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "onenterlistitemvalue", "list", "onenterlistordered", "paragraph", "onenterreference", "strong", "thematicBreak", "closer", "onexitatxheadingsequence", "onexitautolinkemail", "onexitautolinkprotocol", "onexitdata", "onexitcharacterreferencemarker", "onexitcharacterreferencevalue", "onexitcharacterreference", "onexitcodefenced", "onexitcodefencedfence", "onexitcodefencedfenceinfo", "onexitcodefencedfencemeta", "onexitcodeindented", "onexitcodetext", "onexitdefinitiondestinationstring", "onexitdefinitionlabelstring", "onexitdefinitiontitlestring", "onexithardbreak", "onexithtmlflow", "onexithtmltext", "onexitimage", "onexitlabel", "onexitlabeltext", "onexitlineending", "onexitlink", "onexitreferencestring", "onexitresourcedestinationstring", "onexitresourcetitlestring", "onexitresource", "onexitsetextheading", "onexitsetextheadinglinesequence", "onexitsetextheadingtext", "configure", "data", "compile", "events", "tree", "context", "enter", "exit", "resume", "listStack", "index", "tail", "prepareList", "handler", "defaultOnError", "point", "start", "length", "containerBalance", "listSpread", "lineIndex", "firstBlankLineIndex", "atMarker", "event", "tailIndex", "tailEvent", "item", "create", "and", "open", "token", "node", "errorHandler", "close", "onExitError", "stringifyPosition", "toString", "ancestor", "label", "normalizeIdentifier", "depth", "siblings", "text", "referenceType", "string", "decodeString", "fragment", "children", "type", "decodeNumericCharacterReference", "decodeNamedCharacterReference", "d", "combined", "extensions", "extension", "key", "right", "left", "remarkParse", "options", "self", "parser", "doc", "fromMarkdown", "own", "zwitch", "key", "options", "settings", "one", "value", "parameters", "fn", "handlers", "id", "own", "configure", "base", "extension", "index", "key", "list", "map", "left", "right", "blockquote", "node", "_", "state", "info", "exit", "tracker", "value", "map", "line", "blank", "patternInScope", "stack", "pattern", "listInScope", "list", "none", "index", "hardBreak", "_", "_1", "state", "info", "index", "patternInScope", "longestStreak", "value", "substring", "source", "index", "expected", "count", "max", "formatCodeAsIndented", "node", "state", "checkFence", "state", "marker", "code", "node", "_", "state", "info", "marker", "checkFence", "raw", "suffix", "formatCodeAsIndented", "exit", "value", "map", "tracker", "sequence", "longestStreak", "subexit", "line", "blank", "checkQuote", "state", "marker", "definition", "node", "_", "state", "info", "quote", "checkQuote", "suffix", "exit", "subexit", "tracker", "value", "checkEmphasis", "state", "marker", "encodeCharacterReference", "code", "encodeInfo", "outside", "inside", "marker", "outsideKind", "classifyCharacter", "insideKind", "emphasis", "emphasisPeek", "node", "_", "state", "info", "marker", "checkEmphasis", "exit", "tracker", "before", "between", "betweenHead", "open", "encodeInfo", "encodeCharacterReference", "betweenTail", "close", "after", "_1", "convert", "test", "ok", "castFactory", "anyFactory", "propertiesFactory", "typeFactory", "tests", "checks", "index", "any", "parameters", "check", "checkAsRecord", "all", "node", "nodeAsRecord", "key", "type", "testFunction", "value", "parent", "looksLikeANode", "empty", "CONTINUE", "EXIT", "SKIP", "visitParents", "tree", "test", "visitor", "reverse", "check", "is", "convert", "step", "factory", "node", "index", "parents", "value", "name", "visit", "result", "subresult", "offset", "grandparents", "toResult", "nodeAsParent", "child", "visit", "tree", "testOrVisitor", "visitorOrReverse", "maybeReverse", "reverse", "test", "visitor", "visitParents", "overload", "node", "parents", "parent", "index", "formatHeadingAsSetext", "node", "state", "literalWithBreak", "visit", "EXIT", "toString", "heading", "node", "_", "state", "info", "rank", "tracker", "formatHeadingAsSetext", "exit", "subexit", "value", "sequence", "encodeCharacterReference", "html", "htmlPeek", "node", "image", "imagePeek", "node", "_", "state", "info", "quote", "checkQuote", "suffix", "exit", "subexit", "tracker", "value", "imageReference", "imageReferencePeek", "node", "_", "state", "info", "type", "exit", "subexit", "tracker", "value", "alt", "stack", "reference", "inlineCode", "inlineCodePeek", "node", "_", "state", "value", "sequence", "index", "pattern", "expression", "match", "position", "formatLinkAsAutolink", "node", "state", "raw", "toString", "link", "linkPeek", "node", "_", "state", "info", "quote", "checkQuote", "suffix", "tracker", "exit", "subexit", "formatLinkAsAutolink", "stack", "value", "linkReference", "linkReferencePeek", "node", "_", "state", "info", "type", "exit", "subexit", "tracker", "value", "text", "stack", "reference", "checkBullet", "state", "marker", "checkBulletOther", "state", "bullet", "checkBullet", "bulletOther", "checkBulletOrdered", "state", "marker", "checkRule", "state", "marker", "list", "node", "parent", "state", "info", "exit", "bulletCurrent", "bullet", "checkBulletOrdered", "checkBullet", "bulletOther", "checkBulletOther", "useDifferentMarker", "firstListItem", "checkRule", "index", "item", "value", "checkListItemIndent", "state", "style", "listItem", "node", "parent", "state", "info", "listItemIndent", "checkListItemIndent", "bullet", "checkBullet", "size", "tracker", "exit", "value", "map", "line", "index", "blank", "paragraph", "node", "_", "state", "info", "exit", "subexit", "value", "phrasing", "convert", "root", "node", "_", "state", "info", "d", "phrasing", "checkStrong", "state", "marker", "strong", "strongPeek", "node", "_", "state", "info", "marker", "checkStrong", "exit", "tracker", "before", "between", "betweenHead", "open", "encodeInfo", "encodeCharacterReference", "betweenTail", "close", "after", "_1", "text", "node", "_", "state", "info", "checkRuleRepetition", "state", "repetition", "thematicBreak", "_", "_1", "state", "value", "checkRule", "checkRuleRepetition", "handle", "blockquote", "hardBreak", "code", "definition", "emphasis", "heading", "html", "image", "imageReference", "inlineCode", "link", "linkReference", "list", "listItem", "paragraph", "root", "strong", "text", "thematicBreak", "join", "joinDefaults", "left", "right", "parent", "state", "formatCodeAsIndented", "formatHeadingAsSetext", "fullPhrasingSpans", "unsafe", "association", "node", "decodeString", "compilePattern", "pattern", "before", "containerPhrasing", "parent", "state", "info", "indexStack", "children", "results", "index", "before", "encodeAfter", "tracker", "child", "after", "handle", "value", "encodeCharacterReference", "encodingInfo", "containerFlow", "parent", "state", "info", "indexStack", "children", "tracker", "results", "index", "child", "between", "left", "right", "result", "eol", "indentLines", "value", "map", "result", "start", "line", "match", "one", "safe", "state", "input", "config", "value", "positions", "result", "infos", "index", "pattern", "patternInScope", "expression", "match", "before", "after", "position", "numerical", "start", "end", "escapeBackslashes", "encodeCharacterReference", "a", "b", "results", "whole", "track", "config", "options", "now", "lineShift", "line", "column", "move", "current", "shift", "value", "input", "chunks", "tail", "toMarkdown", "tree", "options", "settings", "state", "association", "containerPhrasingBound", "containerFlowBound", "track", "compilePattern", "enter", "handle", "indentLines", "join", "safeBound", "unsafe", "configure", "joinDefinition", "zwitch", "invalid", "unknown", "result", "name", "exit", "value", "node", "left", "right", "parent", "info", "containerPhrasing", "containerFlow", "config", "safe", "remarkStringify", "options", "self", "compiler", "tree", "toMarkdown", "bail", "error", "import_extend", "isPlainObject", "value", "prototype", "trough", "fns", "pipeline", "run", "use", "values", "middlewareIndex", "callback", "next", "error", "output", "fn", "index", "wrap", "middelware", "middleware", "called", "wrapped", "parameters", "fnExpectsCallback", "result", "done", "exception", "then", "value", "VFileMessage", "causeOrReason", "optionsOrParentOrPlace", "origin", "reason", "options", "legacyCause", "index", "parent", "start", "stringifyPosition", "minpath", "basename", "dirname", "extname", "join", "path", "assertPath", "start", "end", "index", "seenNonSlash", "firstNonSlashEnd", "extnameIndex", "unmatchedSlash", "startPart", "startDot", "preDotState", "code", "segments", "joined", "normalize", "absolute", "value", "normalizeString", "allowAboveRoot", "result", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "minproc", "cwd", "isUrl", "fileUrlOrPath", "urlToPath", "path", "isUrl", "error", "getPathFromURLPosix", "url", "pathname", "index", "third", "order", "VFile", "value", "options", "isUrl", "isUint8Array", "minproc", "index", "field", "minpath", "basename", "assertNonEmpty", "assertPart", "dirname", "assertPath", "extname", "path", "urlToPath", "stem", "causeOrReason", "optionsOrParentOrPlace", "origin", "message", "VFileMessage", "encoding", "part", "name", "CallableInstance", "property", "proto", "value", "apply", "own", "Processor", "_Processor", "CallableInstance", "trough", "destination", "index", "attacher", "extend", "key", "value", "assertUnfrozen", "self", "options", "transformer", "file", "realFile", "vfile", "parser", "assertParser", "done", "assertCompiler", "executor", "resolve", "reject", "parseTree", "error", "tree", "realDone", "compileTree", "compileResult", "looksLikeAValue", "complete", "result", "assertDone", "bail", "assertNode", "transformers", "outputTree", "resultingTree", "compiler", "parameters", "attachers", "namespace", "addPlugin", "addList", "addPreset", "add", "plugin", "plugins", "thing", "entryIndex", "primary", "rest", "currentPrimary", "isPlainObject", "unified", "name", "frozen", "node", "asyncName", "looksLikeAVFile", "VFile", "isUint8Array", "OrderedMap", "content", "key", "i", "found", "value", "newKey", "self", "place", "without", "f", "map", "result", "prop", "dist_default", "findDiffStart", "a", "b", "pos", "i", "childA", "childB", "j", "inner", "findDiffEnd", "posA", "posB", "iA", "iB", "size", "same", "minSize", "Fragment", "_Fragment", "content", "from", "to", "f", "nodeStart", "parent", "child", "end", "start", "blockSeparator", "leafText", "text", "first", "node", "nodeText", "other", "last", "result", "index", "current", "copy", "found", "p", "otherPos", "retIndex", "curPos", "cur", "n", "schema", "value", "array", "joined", "nodes", "offset", "compareDeep", "Mark", "_Mark", "type", "attrs", "set", "placed", "obj", "_", "json", "mark", "marks", "ReplaceError", "Slice", "_Slice", "openStart", "openEnd", "fragment", "insertInto", "removeRange", "openIsolating", "indexTo", "offsetTo", "dist", "insert", "replace", "$from", "$to", "slice", "replaceOuter", "depth", "close", "prepareSliceForReplace", "replaceThreeWay", "replaceTwoWay", "checkJoin", "main", "sub", "joinable", "$before", "$after", "addNode", "target", "addRange", "$start", "$end", "startIndex", "endIndex", "$along", "extra", "ResolvedPos", "_ResolvedPos", "path", "parentOffset", "val", "dOff", "tmp", "after", "next", "pred", "d", "NodeRange", "str", "doc", "rem", "cache", "resolveCache", "elt", "ResolveCache", "resolveCacheSize", "emptyAttrs", "Node", "_Node", "startPos", "includeParents", "name", "wrapMarks", "match", "replacement", "one", "two", "m", "TextNode", "_TextNode", "base", "ContentMatch", "_ContentMatch", "validEnd", "string", "nodeTypes", "stream", "TokenStream", "expr", "parseExpr", "dfa", "nfa", "checkForDeadEnds", "frag", "toEnd", "seen", "search", "types", "finished", "tp", "computed", "active", "scan", "out", "tok", "exprs", "parseExprSeq", "parseExprSubscript", "parseExprAtom", "parseExprRange", "parseNum", "min", "max", "resolveName", "typeName", "connect", "compile", "edge", "term", "edges", "loop", "cmp", "nullFrom", "labeled", "explore", "states", "state", "work", "dead", "defaultAttrs", "defaults", "attrName", "attr", "computeAttrs", "built", "given", "checkAttrs", "values", "initAttrs", "Attribute", "NodeType", "_NodeType", "spec", "group", "before", "matched", "markType", "topType", "validateType", "options", "MarkType", "_MarkType", "rank", "Schema", "instanceSpec", "prop", "dist_default", "contentExprCache", "contentExpr", "markExpr", "gatherMarks", "excl", "ok", "isTagRule", "rule", "isStyleRule", "DOMParser", "_DOMParser", "rules", "matchedStyles", "dom", "context", "ParseContext", "matches", "style", "priority", "blockTags", "ignoreTags", "listTags", "OPT_PRESERVE_WS", "OPT_PRESERVE_WS_FULL", "OPT_OPEN_LEFT", "wsOptionsFor", "preserveWhitespace", "NodeContext", "solid", "fill", "wrap", "parser", "isOpen", "topNode", "topContext", "topOptions", "top", "preserveWS", "lines", "nodeBefore", "domNodeBefore", "matchAfter", "outerWS", "ruleID", "normalizeList", "sync", "oldNeedsBlock", "innerMarks", "styles", "continueAfter", "nodeType", "startIn", "contentDOM", "cautious", "route", "penalty", "cx", "block", "nodeMarks", "markMayApply", "applyMarks", "textNode", "parts", "option", "useRoot", "minDepth", "part", "$context", "deflt", "prevItem", "selector", "DOMSerializer", "_DOMSerializer", "keep", "rendered", "add", "markDOM", "renderSpec", "inline", "toDOM", "structure", "xmlNS", "blockArraysIn", "gatherToDOM", "suspiciousAttributeCache", "suspiciousAttributes", "suspiciousAttributesInner", "tagName", "suspicious", "space", "innerContent", "lower16", "factor16", "makeRecover", "index", "offset", "recoverIndex", "value", "recoverOffset", "DEL_BEFORE", "DEL_AFTER", "DEL_ACROSS", "DEL_SIDE", "MapResult", "pos", "delInfo", "recover", "StepMap", "_StepMap", "ranges", "inverted", "diff", "i", "assoc", "simple", "oldIndex", "newIndex", "start", "oldSize", "newSize", "end", "side", "result", "del", "f", "oldStart", "newStart", "n", "Mapping", "_Mapping", "maps", "mirror", "from", "to", "map", "mirrors", "mapping", "startSize", "mirr", "m", "totalSize", "inverse", "corr", "stepsByID", "Step", "other", "schema", "json", "type", "id", "stepClass", "StepResult", "_StepResult", "doc", "failed", "message", "slice", "e", "ReplaceError", "mapFragment", "fragment", "parent", "mapped", "child", "Fragment", "AddMarkStep", "_AddMarkStep", "mark", "oldSlice", "$from", "Slice", "node", "RemoveMarkStep", "_RemoveMarkStep", "AddNodeMarkStep", "_AddNodeMarkStep", "updated", "newSet", "RemoveNodeMarkStep", "_RemoveNodeMarkStep", "ReplaceStep", "_ReplaceStep", "structure", "contentBetween", "ReplaceAroundStep", "_ReplaceAroundStep", "gapFrom", "gapTo", "insert", "gap", "inserted", "dist", "depth", "next", "addMark", "tr", "removed", "added", "removing", "adding", "marks", "s", "removeMark", "matched", "step", "toRemove", "MarkType", "set", "found", "style", "j", "clearIncompatible", "parentType", "match", "clearNewlines", "replSteps", "cur", "allowed", "newline", "fill", "canCut", "liftTarget", "range", "content", "contentBefore", "contentAfter", "endIndex", "lift", "target", "$to", "gapStart", "gapEnd", "before", "openStart", "d", "splitting", "after", "openEnd", "findWrapping", "nodeType", "attrs", "innerRange", "around", "findWrappingOutside", "inner", "findWrappingInside", "withAttrs", "startIndex", "outer", "inside", "innerMatch", "wrap", "wrappers", "setBlockType", "mapFrom", "attrsHere", "canChangeType", "convertNewlines", "pre", "supportLinebreak", "replaceLinebreaks", "startM", "endM", "replaceNewlines", "$pos", "setNodeMarkup", "newNode", "canSplit", "typesAfter", "base", "innerType", "rest", "overrideChild", "baseType", "split", "typeAfter", "canJoin", "joinable", "canAppendWithSubstitutedLinebreaks", "a", "b", "linebreakReplacement", "join", "tr", "pos", "depth", "convertNewlines", "linebreakReplacement", "$before", "beforeType", "pre", "supportLinebreak", "mapFrom", "$after", "replaceLinebreaks", "clearIncompatible", "mapping", "start", "ReplaceStep", "Slice", "$full", "replaceNewlines", "insertPoint", "doc", "nodeType", "$pos", "d", "index", "dropPoint", "slice", "content", "pass", "bias", "insertPos", "parent", "fits", "wrapping", "replaceStep", "from", "to", "$from", "$to", "fitsTrivially", "Fitter", "unplaced", "Fragment", "i", "node", "fit", "moveInline", "placedSize", "openStart", "openEnd", "ReplaceAroundStep", "startDepth", "cur", "sliceDepth", "fragment", "contentAt", "first", "frontierDepth", "type", "match", "wrap", "inject", "inner", "openAtEnd", "dropFromFragment", "taken", "add", "openEndCount", "next", "matches", "closeNodeStart", "toEnd", "addToFragment", "top", "level", "contentAfterFits", "after", "scan", "dropInner", "close", "attrs", "count", "frag", "open", "invalidMarks", "definesContent", "replaceRange", "targetDepths", "coveredDepths", "preferredTarget", "spec", "preferredTargetIndex", "leftNodes", "preferredDepth", "leftNode", "def", "j", "openDepth", "insert", "targetDepth", "expand", "closeFragment", "startSteps", "oldOpen", "newOpen", "replaceRangeWith", "point", "deleteRange", "shared", "isolated", "covered", "last", "result", "minDepth", "AttrStep", "_AttrStep", "Step", "attr", "value", "StepResult", "name", "updated", "StepMap", "schema", "json", "DocAttrStep", "_DocAttrStep", "TransformError", "message", "err", "Transform", "Mapping", "step", "map", "_f", "_t", "fromB", "toB", "range", "target", "lift", "wrappers", "setBlockType", "marks", "setNodeMarkup", "mark", "AddNodeMarkStep", "Mark", "RemoveNodeMarkStep", "set", "found", "steps", "typesAfter", "split", "addMark", "removeMark", "parentType", "classesById", "Selection", "$anchor", "$head", "ranges", "SelectionRange", "i", "tr", "content", "Slice", "lastNode", "lastParent", "mapFrom", "$from", "$to", "mapping", "selectionToInsertionEnd", "node", "from", "to", "$pos", "dir", "textOnly", "inner", "TextSelection", "findSelectionIn", "depth", "found", "bias", "AllSelection", "doc", "json", "cls", "id", "selectionClass", "warnedAboutTextSelection", "checkTextSelection", "_TextSelection", "marks", "other", "TextBookmark", "anchor", "head", "dPos", "_TextBookmark", "NodeSelection", "_NodeSelection", "$end", "deleted", "pos", "Fragment", "NodeBookmark", "_NodeBookmark", "_AllSelection", "sel", "AllBookmark", "index", "text", "child", "startLen", "last", "step", "ReplaceStep", "ReplaceAroundStep", "map", "end", "_from", "_to", "_newFrom", "newTo", "UPDATED_SEL", "UPDATED_MARKS", "UPDATED_SCROLL", "Transaction", "Transform", "state", "selection", "Mark", "mark", "time", "slice", "inheritMarks", "schema", "key", "value", "_", "bind", "f", "self", "FieldDesc", "name", "desc", "baseFields", "config", "instance", "_marks", "_old", "prev", "Configuration", "plugins", "plugin", "EditorState", "_EditorState", "ignore", "rootTr", "trs", "newState", "seen", "haveNew", "n", "oldState", "j", "newInstance", "fields", "field", "$config", "pluginFields", "result", "m", "prop", "Node", "bindProps", "obj", "target", "val", "Plugin", "spec", "createKey", "keys", "PluginKey", "deleteSelection", "state", "dispatch", "atBlockStart", "view", "$cursor", "joinBackward", "$cut", "findCutBefore", "range", "target", "liftTarget", "before", "deleteBarrier", "textblockAt", "NodeSelection", "depth", "delStep", "replaceStep", "Slice", "tr", "Selection", "joinTextblockBackward", "joinTextblocksAround", "joinTextblocksAround", "state", "$cut", "dispatch", "before", "beforeText", "beforePos", "child", "after", "afterText", "afterPos", "step", "replaceStep", "Slice", "ReplaceStep", "tr", "TextSelection", "textblockAt", "node", "side", "only", "scan", "selectNodeBackward", "view", "$head", "empty", "findCutBefore", "NodeSelection", "$pos", "i", "atBlockEnd", "$cursor", "joinForward", "findCutAfter", "deleteBarrier", "delStep", "Selection", "selectNodeForward", "parent", "newlineInCode", "state", "dispatch", "$head", "$anchor", "defaultBlockAt", "match", "i", "type", "exitCode", "above", "after", "pos", "tr", "Selection", "createParagraphNear", "sel", "$from", "$to", "AllSelection", "side", "TextSelection", "liftEmptyBlock", "$cursor", "before", "canSplit", "range", "target", "liftTarget", "splitBlockAs", "splitNode", "NodeSelection", "types", "splitDepth", "deflt", "atEnd", "atStart", "d", "splitType", "splitPos", "can", "first", "$first", "splitBlock", "selectAll", "state", "dispatch", "AllSelection", "joinMaybeClear", "$pos", "before", "after", "index", "canJoin", "deleteBarrier", "$cut", "dir", "conn", "match", "isolated", "canDelAfter", "end", "wrap", "Fragment", "i", "tr", "ReplaceAroundStep", "Slice", "$joinAt", "selAfter", "Selection", "range", "target", "liftTarget", "textblockAt", "at", "afterText", "afterDepth", "selectTextblockSide", "side", "sel", "depth", "TextSelection", "selectTextblockStart", "selectTextblockEnd", "wrapIn", "nodeType", "attrs", "$from", "$to", "wrapping", "findWrapping", "setBlockType", "applicable", "from", "to", "node", "pos", "markApplies", "doc", "ranges", "type", "enterAtoms", "can", "removeInlineAtoms", "result", "SelectionRange", "toggleMark", "markType", "options", "removeWhenPresent", "dropSpace", "empty", "$cursor", "add", "r", "missing", "parent", "start", "spaceStart", "spaceEnd", "chainCommands", "commands", "state", "dispatch", "view", "i", "backspace", "deleteSelection", "joinBackward", "selectNodeBackward", "del", "joinForward", "selectNodeForward", "pcBaseKeymap", "newlineInCode", "createParagraphNear", "liftEmptyBlock", "splitBlock", "exitCode", "selectAll", "macBaseKeymap", "selectTextblockStart", "selectTextblockEnd", "key", "mac", "baseKeymap", "InputRule", "match", "handler", "options", "stringHandler", "string", "state", "start", "end", "insert", "offset", "cutOff", "undoInputRule", "state", "dispatch", "plugins", "i", "plugin", "undoable", "tr", "toUndo", "j", "marks", "emDash", "InputRule", "ellipsis", "openDoubleQuote", "closeDoubleQuote", "openSingleQuote", "closeSingleQuote", "wrappingInputRule", "regexp", "nodeType", "getAttrs", "joinPredicate", "InputRule", "state", "match", "start", "end", "attrs", "tr", "$start", "range", "wrapping", "findWrapping", "before", "canJoin", "textblockTypeInputRule", "nav", "doc", "agent", "ie_edge", "ie_upto10", "ie_11up", "ie", "ie_version", "gecko", "gecko_version", "_chrome", "chrome", "chrome_version", "safari", "ios", "mac", "android", "webkit", "webkit_version", "run", "view", "from", "to", "text", "rules", "plugin", "state", "$from", "textBefore", "_matcher", "matcher", "match", "tr", "customInputRulesKey", "PluginKey", "customInputRules", "Plugin", "prev", "stored", "$cursor", "event", "android", "chrome", "f", "markRule", "regexp", "markType", "options", "InputRule", "start", "end", "_a", "_b", "_c", "_d", "matchLength", "group", "fullMatch", "initialStoredMarks", "markEnd", "captured", "result", "startSpaces", "textStart", "textEnd", "attrs", "cloneTr", "tr", "equalNodeType", "nodeType", "node", "isTextOnlySlice", "slice", "_node", "findParent", "predicate", "$pos", "depth", "node", "from", "to", "findParentNodeType", "nodeType", "getNodeFromSchema", "type", "schema", "target", "getAtomFromSchemaFail", "findParentNodeClosestToPos", "predicate", "$pos", "i", "node", "findSelectedNodeOfType", "selection", "nodeType", "NodeSelection", "node", "$from", "equalNodeType", "findNodeInSelection", "state", "doc", "from", "to", "hasNode", "pos", "target", "n", "p", "base", "shift", "mac", "ie", "i", "code", "keyName", "event", "ignoreKey", "name", "mac", "windows", "normalizeKeyName", "name", "parts", "result", "alt", "ctrl", "shift", "meta", "i", "mod", "normalize", "map", "copy", "prop", "modifiers", "event", "keymap", "bindings", "Plugin", "keydownHandler", "view", "keyName", "baseName", "direct", "noShift", "base", "fromCode", "StackElement", "Stack", "node", "el", "stackOverFlow", "ParserStackElement", "type", "content", "attrs", "rest", "ParserState", "#marks", "Mark", "schema", "remark", "state", "text", "nodeType", "#closeNodeAndPush", "#addNodeAndPush", "e", "markType", "topElement", "prevNode", "currNode", "merged", "#maybeMerge", "doc", "nodes", "#runNode", "markdown", "tree", "#hasText", "a", "b", "#matchTarget", "result", "x", "parserMatchError", "element", "createNodeInParserFail", "SerializerStackElement", "children", "value", "props", "isFragment", "SerializerState", "mark", "#openMark", "#closeMark", "serializerMatchError", "#runProseNode", "#runProseMark", "marks", "getPriority", "#searchType", "child", "searchNode", "firstChild", "target", "tmp", "#maybeMergeChildren", "nextChildren", "index", "last", "currChildren", "currRest", "prevChildren", "prevRest", "next", "#createMarkdownNode", "#moveSpaces", "onPush", "startSpaces", "endSpaces", "first", "findIndex", "lastChild", "trimmed", "trim", "domIndex", "node", "index", "parentNode", "parent", "reusedRange", "textRange", "from", "to", "range", "clearReusedRange", "isEquivalentPosition", "off", "targetNode", "targetOff", "scanFor", "atomElements", "dir", "_a", "nodeSize", "hasBlockDesc", "child", "textNodeBefore$1", "offset", "textNodeAfter$1", "isOnEdge", "atStart", "atEnd", "dom", "desc", "cur", "selectionCollapsed", "domSel", "keyEvent", "keyCode", "key", "event", "deepActiveElement", "doc", "elt", "caretFromPoint", "x", "y", "pos", "nav", "agent", "ie_edge", "ie_upto10", "ie_11up", "ie", "ie_version", "gecko", "_chrome", "chrome", "chrome_version", "safari", "ios", "mac", "windows", "android", "webkit", "webkit_version", "windowRect", "vp", "getSide", "value", "side", "clientRect", "rect", "scaleX", "scaleY", "scrollRectIntoView", "view", "startDOM", "scrollThreshold", "scrollMargin", "atTop", "bounding", "moveX", "moveY", "startX", "startY", "dX", "dY", "storeScrollPos", "refDOM", "refTop", "localRect", "scrollStack", "stack", "resetScrollPos", "newRefTop", "restoreScrollStack", "dTop", "i", "top", "left", "preventScrollSupported", "focusPreventScroll", "stored", "findOffsetInNode", "coords", "closest", "dxClosest", "coordsClosest", "rowBot", "rowTop", "firstBelow", "coordsBelow", "childIndex", "rects", "dx", "findOffsetInText", "len", "result", "singleRect", "inRect", "targetKludge", "posFromElement", "bias", "posFromCaret", "outsideBlock", "sawBlock", "elementFromPoint", "element", "box", "startI", "j", "posAtCoords", "caret", "p", "next", "prev", "nonZero", "target", "first", "BIDI", "coordsAtPos", "atom", "supportEmptyRange", "rectBefore", "rectAfter", "flattenV", "takeSide", "before", "flattenH", "after", "withFlushedState", "state", "f", "viewState", "active", "endOfTextblockVertical", "sel", "$pos", "nearest", "boxes", "maybeRTL", "endOfTextblockHorizontal", "$head", "oldNode", "oldOff", "anchorNode", "anchorOffset", "oldBidiLevel", "parentDOM", "newNode", "newOff", "cachedState", "cachedDir", "cachedResult", "endOfTextblock", "NOT_DIRTY", "CHILD_DIRTY", "CONTENT_DIRTY", "NODE_DIRTY", "ViewDesc", "children", "contentDOM", "widget", "mark", "outerDeco", "innerDeco", "nodeName", "size", "domBefore", "domAfter", "search", "onlyNodes", "nodeDOM", "scan", "end", "inner", "curPos", "TrailingHackViewDesc", "WidgetViewDesc", "enter", "base", "fromOffset", "toOffset", "childBase", "anchor", "head", "force", "anchorDOM", "headDOM", "selRange", "brKludge", "domSelExtended", "tmp", "mutation", "startInside", "endInside", "level", "dirty", "text", "self", "wrap", "stop", "CompositionViewDesc", "textDOM", "mut", "MarkViewDesc", "_MarkViewDesc", "spec", "inline", "custom", "DOMSerializer", "copy", "nodes", "replaceNodes", "NodeViewDesc", "_NodeViewDesc", "descObj", "applyOuterDeco", "CustomNodeViewDesc", "TextViewDesc", "rule", "Fragment", "sameOuterDeco", "composition", "localComposition", "compositionInChild", "updater", "ViewTreeUpdater", "iterDeco", "insideNode", "Mark", "compIndex", "renderDescs", "iosHacks", "TextSelection", "textNode", "textPos", "findTextInFragment", "topNode", "needsWrap", "oldDOM", "patchOuterDeco", "computeOuterDeco", "docViewDesc", "docView", "_TextViewDesc", "skip", "descs", "written", "childDOM", "rm", "OuterDecoLevel", "noDeco", "attrs", "name", "val", "outerDOM", "prevComputed", "curComputed", "curDOM", "deco", "patchAttributes", "prevList", "curList", "prop", "m", "a", "b", "lock", "preMatch", "start", "marks", "parentIndex", "keep", "depth", "maxKeep", "found", "scanTo", "markDesc", "targetDesc", "e", "domNode", "nextDOM", "updated", "locked", "wrapper", "ch", "lastChild", "hack", "frag", "parentDesc", "curDesc", "descI", "fI", "matched", "matches", "outer", "compareSide", "onWidget", "onNode", "locals", "decoIndex", "restNode", "widgets", "cutAt", "d", "oldCSS", "childStart", "str", "replacement", "selectionFromDOM", "origin", "nearestDesc", "inWidget", "selection", "nearestDescNode", "NodeSelection", "min", "max", "$anchor", "selectionBetween", "editorOwnsSelection", "hasSelection", "selectionToDOM", "syncNodeSelection", "curSel", "selectCursorWrapper", "resetEditableFrom", "resetEditableTo", "brokenSelectBetweenUneditable", "temporarilyEditableNear", "resetEditable", "removeClassOnSelectionChange", "setEditable", "img", "clearNodeSelection", "hasFocusAndSelection", "anchorInRightPlace", "moveSelectionBlock", "$side", "$start", "Selection", "apply", "selectHorizontally", "mods", "$newHead", "nodePos", "nodeLen", "isIgnorable", "skipIgnoredNodes", "skipIgnoredNodesBefore", "skipIgnoredNodesAfter", "moveNode", "moveOffset", "isBlockNode", "setSelFocus", "textNodeAfter", "textNodeBefore", "findDirection", "mid", "selectVertically", "$from", "$to", "beyond", "AllSelection", "stopNativeHorizontalDelete", "empty", "nextNode", "tr", "switchEditable", "safariDownArrowBug", "focusNode", "focusOffset", "getMods", "captureKeyDown", "code", "serializeForClipboard", "slice", "context", "content", "openStart", "openEnd", "serializer", "detachedDoc", "firstChild", "wrappers", "wrapMap", "parseFromClipboard", "html", "plainText", "$context", "inCode", "asText", "Slice", "parsed", "schema", "block", "readHTML", "restoreReplacedSpaces", "contextNode", "sliceData", "DOMParser", "inlineParents", "addContext", "closeSlice", "normalizeSiblings", "fragment", "match", "lastWrap", "inLast", "addToSibling", "closeRight", "wrapped", "withWrappers", "sibling", "fill", "closeRange", "_detachedDoc", "_policy", "maybeWrapTrusted", "trustedTypes", "s", "metas", "firstTag", "n", "array", "type", "handlers", "editHandlers", "passiveHandlers", "InputState", "initInput", "handler", "eventBelongsToView", "runCustomHandler", "ensureListeners", "setSelectionOrigin", "destroyInput", "currentHandlers", "dispatchEvent", "_event", "inOrNearComposition", "now", "deflt", "eventCoords", "isNear", "click", "dy", "runHandlerOnContext", "propName", "inside", "updateSelection", "selectClickedLeaf", "selectClickedNode", "selectedNode", "selectAt", "handleSingleClick", "selectNode", "handleDoubleClick", "handleTripleClick", "defaultTripleClick", "forceDOMFlush", "endComposition", "selectNodeModifier", "flushed", "MouseDown", "targetPos", "timeoutComposition", "selectionBeforeUneditable", "scheduleComposeEnd", "delay", "clearComposition", "timestampFromCustomEvent", "findCompositionNode", "textBefore", "textAfter", "descAfter", "lastChanged", "descBefore", "restarting", "captureCopy", "brokenClipboardAPI", "cut", "data", "sliceSingleNode", "capturePaste", "plain", "doPaste", "preferPlain", "singleNode", "getText", "clipboardData", "uris", "Dragging", "move", "dragCopyModifier", "dragMoves", "test", "mouseDown", "draggedSlice", "dragging", "_", "handleDrop", "eventPos", "$mouse", "insertPos", "dropPoint", "isNode", "beforeInsert", "_from", "_to", "_newFrom", "newTo", "domChangeCount", "$cursor", "compareObjs", "WidgetType", "_WidgetType", "toDOM", "noSpec", "mapping", "span", "oldOffset", "deleted", "Decoration", "other", "InlineType", "_InlineType", "NodeType", "_NodeType", "_Decoration", "none", "DecorationSet", "_DecorationSet", "local", "decorations", "buildTree", "predicate", "childOff", "options", "newLocal", "mapped", "mapChildren", "byPos", "childNode", "childOffset", "baseOffset", "takeSpansForNode", "moveSpans", "withoutNulls", "removed", "dec", "localSet", "DecorationGroup", "removeOverlap", "_DecorationGroup", "members", "mappedDecos", "member", "sorted", "r", "oldChildren", "moved", "oldStart", "oldEnd", "newStart", "newEnd", "dSize", "mustRebuild", "fromLocal", "toLocal", "mapAndGatherRemainingDecorations", "built", "spans", "gather", "set", "hasNulls", "localStart", "subtree", "working", "insertAhead", "viewDecorations", "observeOptions", "useCharData", "SelectionState", "DOMObserver", "handleDOMChange", "mutations", "take", "ancestors", "container", "newSel", "typeOver", "added", "brs", "br", "blockParent", "readSel", "checkCSS", "fixUpBadSafariComposition", "previousSibling", "nextSibling", "cssChecked", "cssCheckWarned", "rangeToSelectionRange", "currentAnchor", "safariShadowSelectionRange", "read", "addedNodes", "nextCell", "parseBetween", "from_", "to_", "find", "startDoc", "parser", "ruleFromNode", "isInline", "readDOMChange", "compositionID", "$before", "shared", "parse", "compare", "preferredPos", "preferredSide", "change", "findDiff", "resolveSelection", "$fromA", "inlineChange", "looksLikeBackspace", "chFrom", "chTo", "mkTr", "markChange", "isMarkChange", "parsedSel", "curMarks", "prevMarks", "update", "old", "$newStart", "$newEnd", "skipClosingAndOpening", "$next", "fromEnd", "mayOpen", "endA", "endB", "adjust", "isSurrogatePair", "EditorView", "place", "props", "InputState", "checkStateComponent", "getEditable", "updateCursorWrapper", "buildNodeViews", "docViewDesc", "computeDocDeco", "viewDecorations", "DOMObserver", "from", "to", "typeOver", "added", "readDOMChange", "initInput", "prev", "name", "ensureListeners", "prevProps", "updated", "state", "_a", "redraw", "updateSel", "clearComposition", "pluginsChanged", "nodeViews", "changedNodeViews", "innerDeco", "outerDeco", "scroll", "updateDoc", "oldScrollPos", "storeScrollPos", "forceSelUpdate", "ie", "chrome", "selectionContextChanged", "chromeKludge", "findCompositionNode", "anchorInRightPlace", "selectionToDOM", "syncNodeSelection", "resetScrollPos", "startDOM", "f", "NodeSelection", "target", "scrollRectIntoView", "view", "prevState", "i", "plugin", "pluginView", "dragging", "sel", "found", "movedPos", "Dragging", "propName", "prop", "value", "plugins", "node", "focusPreventScroll", "cached", "search", "coords", "posAtCoords", "pos", "side", "coordsAtPos", "desc", "offset", "bias", "dir", "endOfTextblock", "html", "event", "doPaste", "text", "slice", "serializeForClipboard", "destroyInput", "clearReusedRange", "dispatchEvent", "safari", "deepActiveElement", "safariShadowSelectionRange", "tr", "dispatchTransaction", "attrs", "attr", "Decoration", "dom", "sel1", "sel2", "depth", "result", "add", "obj", "a", "b", "nA", "nB", "_", "withMeta", "plugin", "meta", "remarkHandlers", "node", "_", "state", "info", "value", "marker", "exit", "tracker", "editorViewCtx", "createSlice", "editorStateCtx", "initTimerCtx", "editorCtx", "inputRulesCtx", "prosePluginsCtx", "remarkPluginsCtx", "nodeViewCtx", "markViewCtx", "remarkCtx", "unified", "remarkParse", "remarkStringify", "remarkStringifyOptionsCtx", "ConfigReady", "createTimer", "config", "configure", "ctx", "InitReady", "init", "editor", "options", "SchemaReady", "schemaTimerCtx", "schemaCtx", "nodesCtx", "marksCtx", "extendPriority", "x", "rule", "schema", "remark", "processor", "acc", "plug", "Schema", "key", "CommandManager", "#ctx", "callCommandBeforeEditorView", "commands", "get", "chains", "chained", "chainCommands", "view", "command", "pipe", "slice", "payload", "cmd", "#container", "Container", "createCmdKey", "commandsCtx", "commandsTimerCtx", "CommandsReady", "overrideBaseKeymap", "keymap", "undoInputRule", "deleteSelection", "joinTextblockBackward", "selectNodeBackward", "KeymapManager", "#keymap", "item", "keymaps", "remove", "keymapItem", "fn", "base", "baseKeymap", "items", "sortedItems", "a", "b", "dispatch", "ctxCallOutOfScope", "keymapCtx", "keymapTimerCtx", "KeymapReady", "km", "ParserReady", "outOfScope$1", "parserCtx", "parserTimerCtx", "parser", "ParserState", "SerializerReady", "serializerTimerCtx", "outOfScope", "serializerCtx", "serializer", "SerializerState", "defaultValueCtx", "editorStateOptionsCtx", "editorStateTimerCtx", "EditorStateReady", "getDoc", "defaultValue", "DOMParser", "Node", "docTypeError", "key$1", "PluginKey", "editorState", "rules", "optionsOverride", "prosePlugins", "doc", "disposeBaseKeymap", "plugins", "Plugin", "_tr", "_value", "_oldState", "newState", "customInputRules", "EditorState", "pasteRulesCtx", "pasteRulesTimerCtx", "PasteRulesReady", "pasteRule", "EditorViewReady", "editorViewTimerCtx", "editorViewOptionsCtx", "rootCtx", "rootDOMCtx", "rootAttrsCtx", "createViewContainer", "root", "container", "attrs", "prepareViewDom", "dom", "editorView", "el", "xs", "EditorView", "isPlainText", "runner", "EditorStatus", "Editor", "enable", "#enableInspector", "onChange", "#onStatusChange", "#configureList", "_plugins", "#usrPluginStore", "#status", "#prepare", "resolve", "#cleanup", "#setStatus", "#loadInternal", "#loadPluginInStore", "#sysPluginStore", "clearPlugins", "#cleanupInternal", "action", "#clock", "Clock", "Ctx", "configPlugin", "internalPlugins", "store", "handler", "cleanup", "status", "loader", "mathFromMarkdown", "enterMathFlow", "enterMathFlowMeta", "enterMathText", "exitMathFlow", "exitMathFlowFence", "exitMathFlowMeta", "exitMathData", "exitMathText", "token", "code", "data", "node", "mathToMarkdown", "options", "single", "inlineMath", "inlineMathPeek", "math", "_", "state", "info", "raw", "tracker", "sequence", "longestStreak", "exit", "value", "subexit", "size", "index", "pattern", "expression", "match", "position", "mathFlow", "tokenizeMathFenced", "nonLazyContinuation", "tokenizeNonLazyContinuation", "effects", "ok", "nok", "self", "tail", "initialSize", "sizeOpen", "start", "code", "sequenceOpen", "factorySpace", "metaBefore", "markdownLineEnding", "metaAfter", "meta", "beforeNonLazyContinuation", "after", "tokenizeClosingFence", "contentStart", "beforeContentChunk", "contentChunk", "size", "beforeSequenceClose", "sequenceClose", "afterSequenceClose", "lineStart", "mathText", "options", "single", "tokenizeMathText", "resolveMathText", "previous", "effects", "ok", "nok", "self", "sizeOpen", "size", "token", "start", "code", "sequenceOpen", "between", "sequenceClose", "markdownLineEnding", "data", "events", "tailExitIndex", "headEnterIndex", "index", "enter", "math", "options", "mathFlow", "mathText", "ParseError", "_ParseError", "message", "token", "error", "start", "end", "loc", "input", "underlined", "left", "right", "uppercase", "hyphenate", "str", "ESCAPE_LOOKUP", "ESCAPE_REGEX", "escape", "text", "match", "getBaseElem", "group", "characterNodesTypes", "isCharacterBox", "protocolFromUrl", "url", "protocol", "SETTINGS_SCHEMA", "color", "def", "defs", "s", "n", "getDefaultValue", "schema", "type", "defaultType", "Settings", "options", "prop", "optionValue", "errorCode", "errorMsg", "strict", "context", "trust", "Style", "id", "size", "cramped", "styles", "sup", "sub", "fracNum", "fracDen", "cramp", "text$1", "D", "Dc", "T", "Tc", "S", "Sc", "SS", "SSc", "Style$1", "scriptData", "scriptFromCodepoint", "codepoint", "i", "script", "_i", "block", "allBlocks", "b", "supportedCodepoint", "doubleBrushStroke", "svgPath", "hLinePad", "sqrtMain", "extraVinculum", "sqrtSize1", "sqrtSize2", "sqrtSize3", "sqrtSize4", "phasePath", "y", "x", "sqrtTall", "viewBoxHeight", "vertSegment", "sqrtPath", "path", "innerPath", "name", "height", "tallDelim", "label", "midHeight", "DocumentFragment", "children", "className", "frag", "markup", "toText", "child", "ptPerUnit", "relativeUnit", "validUnit", "unit", "calculateSize", "sizeValue", "scale", "unitOptions", "makeEm", "createClass", "classes", "cls", "initNode", "style", "toNode", "tagName", "node", "key", "attr", "invalidAttributeNameRegex", "toMarkup", "Span", "attribute", "value", "Anchor", "href", "Img", "src", "alt", "iCombinations", "SymbolNode", "depth", "italic", "skew", "width", "span", "needsSpan", "escaped", "SvgNode", "attributes", "svgNS", "PathNode", "pathName", "alternate", "LineNode", "assertSymbolDomNode", "assertSpan", "hasHtmlDomChildren", "fontMetricsData", "sigmasAndXis", "extraCharacterMap", "setFontMetrics", "fontName", "metrics", "getCharacterMetrics", "character", "font", "mode", "ch", "fontMetricsBySizeIndex", "getGlobalMetrics", "sizeIndex", "ATOMS", "NON_ATOMS", "symbols", "defineSymbol", "replace", "acceptUnicodeChar", "math", "main", "ams", "accent", "bin", "close", "inner", "mathord", "op", "open", "punct", "rel", "spacing", "textord", "ligatures", "mathTextSymbols", "textSymbols", "_ch", "letters", "_i2", "_ch2", "wideChar", "_i3", "_ch3", "_i4", "_ch4", "extraLatin", "_i5", "_ch5", "wideLatinLetterData", "wideNumeralData", "wideCharacterFont", "H", "L", "codePoint", "j", "lookupSymbol", "replacement", "makeSymbol", "lookup", "symbolNode", "mathsym", "boldsymbol", "makeOrd", "isFont", "fontOrFamily", "wideFontName", "wideFontClass", "fontClasses", "fontData", "fontMap", "retrieveTextFontName", "parts", "makeFragment", "_fontName", "_fontName2", "_fontName3", "canCombine", "prev", "next", "_key", "tryCombineChars", "chars", "sizeElementFromChildren", "elem", "maxFontSize", "makeSpan", "makeSvgSpan", "makeLineSpan", "thickness", "line", "makeAnchor", "anchor", "fragment", "wrapFragment", "getVListChildrenAndDepth", "params", "oldChildren", "_depth", "currPos", "diff", "bottom", "firstChild", "makeVList", "pstrutSize", "pstrut", "realChildren", "minPos", "maxPos", "_child", "_elem", "childWrap", "vlist", "rows", "emptySpan", "depthStrut", "topStrut", "vtable", "makeGlue", "measurement", "rule", "fontFamily", "fontWeight", "fontShape", "baseFontName", "fontStylesName", "svgData", "staticSvg", "svgNode", "thinspace", "mediumspace", "thickspace", "spacings", "tightSpacings", "_functions", "_htmlGroupBuilders", "_mathmlGroupBuilders", "defineFunction", "_ref", "names", "props", "handler", "htmlBuilder", "mathmlBuilder", "data", "defineFunctionBuilders", "_ref2", "normalizeArgument", "arg", "ordargument", "binLeftCanceller", "binRightCanceller", "styleMap$1", "DomEnum", "buildExpression$1", "expression", "isRealGroup", "surrounding", "groups", "output", "buildGroup$1", "glueOptions", "dummyPrev", "dummyNext", "isRoot", "_traverseNonSpaceNodes", "prevType", "_tightSpacings$prevTy", "_spacings$prevType", "getTypeOfDomTree", "space", "nodes", "callback", "partialGroup", "checkPartialGroup", "nonspace", "result", "index", "_getOutermostNode", "side", "makeNullDelimiter", "moreClasses", "baseOptions", "groupNode", "multiplier", "buildHTMLUnbreakable", "body", "strut", "buildHTML", "tree", "tag", "eqnNum", "nobreak", "tagChild", "htmlNode", "newDocumentFragment", "MathNode", "TextNode", "SpaceNode", "noVariantSymbols", "rowLikeTypes", "makeText", "makeRow", "getVariant", "isNumberPunctuation", "buildExpression", "isOrdgroup", "buildGroup", "lastGroup", "_group", "base", "lastChild", "buildExpressionRow", "buildMathML", "texExpression", "isDisplayMode", "forMathmlOnly", "wrapper", "annotation", "semantics", "wrapperClass", "sizeStyleMap", "sizeMultipliers", "sizeAtStyle", "Options", "_Options", "extension", "wantSize", "oldOptions", "optionsFromSettings", "settings", "displayWrap", "buildTree", "katexNode", "mathMLNode", "_htmlNode", "buildHTMLTree", "stretchyCodePoint", "stretchyMathML", "katexImagesData", "wideAccentLabels", "stretchySvg", "buildSvgSpan_", "viewBoxWidth", "grp", "numChars", "_height", "imgIndex", "spans", "paths", "_minWidth", "_viewBoxHeight", "_height2", "numSvgChildren", "widthClasses", "aligns", "align1", "_path", "_svgNode", "_span", "minWidth", "stretchyEnclose", "topPad", "bottomPad", "img", "totalHeight", "lines", "assertNodeType", "assertSymbolNodeType", "typedNode", "checkSymbolNodeType", "getBaseSymbol", "htmlBuilder$a", "supSubGroup", "mustShift", "_getBaseSymbol$skew", "_getBaseSymbol", "accentBelow", "clearance", "accentBody", "accentFull", "accentWrap", "mathmlBuilder$9", "accentNode", "NON_STRETCHY_ACCENT_REGEX", "args", "isStretchy", "isShifty", "parser", "funcName", "innerGroup", "kern", "paddedNode", "optArgs", "newOptions", "upperGroup", "arrowPrefix", "lowerGroup", "arrowBody", "arrowShift", "upperShift", "lowerShift", "arrowNode", "upperNode", "lowerNode", "_lowerNode", "htmlBuilder$9", "elements", "mathmlBuilder$8", "binrelClass", "atom", "_ref3", "baseArg", "shiftedArg", "mclass", "baseOp", "supsub", "cdArrowFunctionName", "newCell", "isStartOfArrow", "isLabelEnd", "endChar", "cdArrow", "arrowChar", "labels", "leftLabel", "bareArrow", "sizedArrow", "rightLabel", "arrowGroup", "arrow", "parseCD", "parsedRows", "row", "rowNodes", "cell", "labelNum", "inLabel", "k", "wrappedArrow", "cols", "parent", "number", "code", "htmlBuilder$8", "mathmlBuilder$7", "breakOnTokenText", "newLine", "globalMap", "checkControlSequence", "tok", "getRHS", "letCommand", "global", "macro", "numArgs", "insert", "delimiters", "tokens", "_ref4", "middle", "getMetrics", "symbol", "styleWrap", "delim", "toStyle", "delimSizeMultiplier", "centerSpan", "shift", "makeSmallDelim", "center", "mathrmSize", "makeLargeDelim", "makeGlyphSpan", "sizeClass", "corner", "makeInner", "lapInEms", "lap", "verts", "doubleVerts", "makeStackedDelim", "heightTotal", "top", "repeat", "svgLabel", "topMetrics", "topHeightTotal", "repeatMetrics", "repeatHeightTotal", "bottomMetrics", "bottomHeightTotal", "middleHeightTotal", "middleFactor", "middleMetrics", "minHeight", "repeatCount", "realHeightTotal", "axisHeight", "stack", "pathStr", "svg", "innerHeight", "_innerHeight", "vbPad", "emPad", "sqrtSvg", "sqrtName", "pathNode", "makeSqrtImage", "traverseSequence", "stackLargeDelimiterSequence", "sizeMultiplier", "spanHeight", "texHeight", "advanceWidth", "sizeToMaxHeight", "stackLargeDelimiters", "stackAlwaysDelimiters", "stackNeverDelimiters", "makeSizedDelim", "stackNeverDelimiterSequence", "stackAlwaysDelimiterSequence", "delimTypeToFont", "delimKind", "sequence", "delimType", "heightDepth", "makeCustomSizedDelim", "makeLeftRightDelim", "delimiterFactor", "delimiterExtend", "maxDistFromAxis", "delimiterSizes", "checkDelimiter", "symDelim", "assertParsed", "innerDepth", "hadMiddle", "leftDelim", "middleDelim", "isMiddle", "rightDelim", "colorOptions", "leftNode", "rightNode", "textNode", "middleNode", "htmlBuilder$7", "imgShift", "isSingleChar", "lineWeight", "angleHeight", "ruleThickness", "mathmlBuilder$6", "fboxsep", "thk", "borderColor", "backgroundColor", "_ref5", "_ref6", "_environments", "defineEnvironment", "_macros", "defineMacro", "SourceLocation", "_SourceLocation", "lexer", "first", "second", "Token", "_Token", "endToken", "getHLines", "hlineInfo", "nxt", "validateAmsEnvironmentContext", "gatherEnvironments", "getAutoTag", "parseArray", "hskipBeforeAndAfter", "addJot", "arraystretch", "colSeparationType", "autoTag", "singleRow", "emptySingleRow", "maxNumCols", "leqno", "stretch", "rowGaps", "hLinesBeforeRow", "tags", "beginRow", "endRow", "cellBody", "dCellStyle", "envName", "htmlBuilder$6", "r", "c", "nr", "nc", "hlines", "pt", "arraycolsep", "localMultiplier", "baselineskip", "jot", "arrayskip", "arstrutHeight", "arstrutDepth", "setHLinePos", "hlinesInGap", "inrow", "outrow", "elt", "rowGap", "gap", "offset", "colDescriptions", "colSep", "colDescrNum", "tagSpans", "rw", "tagSpan", "_colDescr3", "colDescr", "firstSeparator", "_colDescr", "lineType", "separator", "_shift", "sepwidth", "_colDescr$pregap", "_colDescr2", "colElems", "_shift2", "colVList", "colSpan", "_colDescr$postgap", "_colDescr4", "tableBody", "dashes", "vListElems", "hline", "lineShift", "eqnNumCol", "tagCol", "alignMap", "mathmlBuilder$5", "tbl", "glue", "table", "menclose", "align", "columnLines", "prevTypeWasAlign", "iStart", "iEnd", "col", "_cols", "rowLines", "alignedHandler", "separationType", "isSplit", "res", "numMaths", "numCols", "emptyGroup", "arg0", "isAligned", "styling", "ordgroup", "curMaths", "pregap", "symNode", "colalign", "nde", "ca", "colAlign", "payload", "environments", "nameGroup", "env", "_args", "endNameToken", "htmlBuilder$5", "mathmlBuilder$4", "fontAliases", "func", "htmlBuilder$4", "nstyle", "dstyle", "numerm", "hStrut", "dStrut", "denomm", "ruleWidth", "ruleSpacing", "numShift", "denomShift", "frac", "midShift", "candidateClearance", "delimSize", "mathmlBuilder$3", "withDelims", "leftOp", "rightOp", "wrapWithStyle", "numer", "denom", "hasBarLine", "continued", "replaceWith", "stylArray", "delimFromValue", "delimString", "barNode", "barSize", "styl", "textOrd", "htmlBuilder$3", "braceBody", "vSpan", "mathmlBuilder$2", "trustContext", "item", "firstEquals", "_value", "sizeData", "totalheight", "attributeStr", "keyVal", "mathFunction", "muUnit", "dimension", "fix", "outerMode", "chooseMathStyle", "assembleSupSub", "supGroup", "subGroup", "slant", "baseShift", "subIsSingleCharacter", "finalGroup", "_bottom", "spacer", "noSuccessor", "htmlBuilder$2", "hasLimits", "large", "stash", "oval", "mathmlBuilder$1", "operator", "singleCharBigOps", "fName", "singleCharIntegrals", "htmlBuilder$1", "childText", "isAllString", "word", "identifier", "defaultRuleThickness", "phantom", "amount", "dy", "sizingGroup", "pos", "sizeFuncs", "smashHeight", "smashDepth", "tbArg", "letter", "smashedNode", "theta", "phi", "lineClearance", "minDelimiterHeight", "delimDepth", "rootm", "toShift", "rootVList", "rootVListWrap", "styleMap", "newStyle", "styleAttributes", "htmlBuilderDelegate", "delegate", "_delegate", "isSup", "builderDelegate", "valueBase", "valueSup", "valueSub", "supm", "subm", "supShift", "subShift", "isCharBox", "_newOptions", "minSupShift", "marginRight", "marginLeft", "isOiint", "maxWidth", "psi", "vlistElem", "_vlistElem", "isBrace", "isOver", "nodeType", "_base2", "_base", "variant", "defaultVariant", "cssSpace", "regularSpace", "ord", "pad", "padNode", "textFontFamilies", "textFontWeights", "textFontShapes", "optionsWithFont", "mpadded", "makeVerb", "functions", "spaceRegexString", "controlWordRegexString", "controlSymbolRegexString", "controlWordWhitespaceRegexString", "controlSpaceRegexString", "combiningDiacriticalMarkString", "combiningDiacriticalMarksEndRegex", "tokenRegexString", "Lexer", "char", "nlIndex", "Namespace", "builtins", "globalMacros", "undefs", "undef", "macros", "t", "nextToken", "digitToNumber", "digit", "newcommand", "existsOK", "nonexistsOK", "skipIfExists", "exists", "argText", "dotsByToken", "dotsbGroups", "thedots", "spaceAfterDots", "latexRaiseA", "braketHelper", "one", "middleDouble", "oldMiddle", "oldMiddleDouble", "midMacro", "double", "doubled", "expanded", "implicitCommands", "MacroExpander", "newMode", "isOptional", "delims", "isDelimited", "expandableOnly", "topToken", "expansion", "oldStackLength", "definition", "catcode", "stripped", "bodyLexer", "unicodeSubRegEx", "uSubsAndSups", "unicodeAccents", "unicodeSymbols", "Parser", "_Parser", "consume", "parse", "oldToken", "breakOnInfix", "lex", "overIndex", "numerNode", "denomNode", "numerBody", "denomBody", "_node", "symbolToken", "textordArray", "colorNode", "superscript", "subscript", "limits", "prime", "primes", "isSub", "subsupTokens", "funcData", "totalArgs", "argType", "optional", "_group2", "modeName", "argToken", "regex", "firstToken", "lastToken", "isBlank", "groupEnd", "a", "v", "afterNext", "nucleus", "star", "family", "command", "parseTree", "toParse", "render", "baseNode", "renderToDomTree", "renderToString", "generateParseTree", "renderError", "renderToHTMLTree", "version", "__domTree", "katex", "emptyOptions", "remarkMath", "options", "self", "settings", "data", "micromarkExtensions", "fromMarkdownExtensions", "toMarkdownExtensions", "math", "mathFromMarkdown", "mathToMarkdown", "random", "bytes", "customRandom", "alphabet", "defaultSize", "getRandom", "safeByteCutoff", "mask", "size", "id", "j", "step", "customAlphabet", "nanoid", "customAlphabet", "$command", "key", "cmd", "cmdKey", "createCmdKey", "plugin", "ctx", "CommandsReady", "command", "commandsCtx", "payload", "$inputRule", "inputRule", "plugin", "ctx", "SchemaReady", "ir", "inputRulesCtx", "irs", "x", "$pasteRule", "pasteRule", "plugin", "ctx", "SchemaReady", "pr", "pasteRulesCtx", "prs", "x", "$mark", "id", "schema", "plugin", "ctx", "markSchema", "marksCtx", "ns", "n", "x", "markType", "schemaCtx", "missingMarkInSchema", "$node", "id", "schema", "plugin", "ctx", "nodeSchema", "nodesCtx", "ns", "n", "x", "nodeType", "schemaCtx", "missingNodeInSchema", "$prose", "prose", "prosePlugin", "plugin", "ctx", "SchemaReady", "prosePluginsCtx", "ps", "x", "$shortcut", "shortcut", "plugin", "ctx", "KeymapReady", "km", "keymapCtx", "keymap", "dispose", "$ctx", "value", "name", "slice", "createSlice", "plugin", "ctx", "$nodeSchema", "id", "schema", "schemaCtx", "nodeSchema", "$node", "result", "handler", "$markSchema", "markSchema", "$mark", "$useKeymap", "userKeymap", "keymapDef", "key", "shortcuts", "priority", "$shortcut", "keys", "keymapTuple", "command", "target", "targetKeys", "targetKey", "$nodeAttr", "$markAttr", "$remark", "remark", "initialOptions", "options", "InitReady", "remarkPlugin", "remarkPluginsCtx", "rp", "x", "callCommand", "payload", "commandsCtx", "getMarkdown", "range", "ctx", "view", "editorViewCtx", "schema", "schemaCtx", "serializer", "serializerCtx", "slice", "doc", "replaceAll", "markdown", "flush", "ctx", "view", "editorViewCtx", "doc", "parserCtx", "state", "Slice", "schema", "schemaCtx", "newOptions", "editorStateOptionsCtx", "prosePluginsCtx", "EditorState", "markdownToSlice", "markdown", "ctx", "doc", "parserCtx", "schema", "schemaCtx", "dom", "DOMSerializer", "DOMParser", "replaceRange", "markdown", "range", "ctx", "view", "editorViewCtx", "slice", "markdownToSlice", "splitListItem", "itemType", "itemAttrs", "state", "dispatch", "$from", "$to", "node", "grandParent", "wrap", "Fragment", "depthBefore", "d", "depthAfter", "start", "tr", "Slice", "sel", "pos", "Selection", "nextType", "types", "canSplit", "liftListItem", "itemType", "state", "dispatch", "$from", "$to", "range", "node", "liftToOuterList", "liftOutOfList", "tr", "end", "endOfList", "ReplaceAroundStep", "Slice", "Fragment", "NodeRange", "target", "liftTarget", "$after", "canJoin", "list", "pos", "i", "e", "$start", "item", "atStart", "atEnd", "parent", "indexBefore", "start", "sinkListItem", "startIndex", "nodeBefore", "nestedBefore", "inner", "slice", "before", "after", "definitions", "tree", "cache", "visit", "definition", "id", "clean", "identifier", "value", "remarkInlineLinks", "tree", "definition", "definitions", "visit", "node", "index", "parent", "SKIP", "def", "serializeText", "state", "node", "contentArr", "n", "_", "Fragment", "withMeta", "plugin", "meta", "emphasisAttr", "$markAttr", "emphasisSchema", "$markSchema", "ctx", "remarkStringifyOptionsCtx", "value", "mark", "markType", "toggleEmphasisCommand", "$command", "toggleMark", "emphasisStarInputRule", "$inputRule", "markRule", "fullMatch", "start", "emphasisUnderscoreInputRule", "emphasisKeymap", "$useKeymap", "commands", "commandsCtx", "strongAttr", "strongSchema", "m", "toggleStrongCommand", "strongInputRule", "match", "strongKeymap", "inlineCodeAttr", "inlineCodeSchema", "toggleInlineCodeCommand", "dispatch", "selection", "tr", "from", "to", "x", "name", "t", "inlineCodeInputRule", "inlineCodeKeymap", "linkAttr", "linkSchema", "dom", "expectDomTypeError", "url", "title", "toggleLinkCommand", "payload", "updateLinkCommand", "pos", "p", "type", "end", "linkMark", "TextSelection", "docSchema", "$node", "visitEmptyLine", "ast", "visitParents", "parents", "parent", "index", "remarkPreserveEmptyLinePlugin", "$remark", "paragraphAttr", "$nodeAttr", "paragraphSchema", "$nodeSchema", "lastNode", "editorViewCtx", "shouldPreserveEmptyLine", "turnIntoTextCommand", "setBlockType", "paragraphKeymap", "headingIndex", "i", "defaultHeadingIdGenerator", "headingIdGenerator", "$ctx", "headingAttr", "headingSchema", "getId", "depth", "wrapInHeadingInputRule", "textblockTypeInputRule", "$from", "level", "wrapInHeadingCommand", "downgradeHeadingCommand", "view", "headingKeymap", "blockquoteAttr", "blockquoteSchema", "wrapInBlockquoteInputRule", "wrappingInputRule", "wrapInBlockquoteCommand", "wrapIn", "blockquoteKeymap", "codeBlockAttr", "codeBlockSchema", "attr", "language", "languageAttrs", "createCodeBlockInputRule", "createCodeBlockCommand", "updateCodeBlockLanguageCommand", "codeBlockKeymap", "imageAttr", "imageSchema", "alt", "insertImageCommand", "src", "updateImageCommand", "nodeWithPos", "findSelectedNodeOfType", "newAttrs", "insertImageInputRule", "InputRule", "matched", "hardbreakAttr", "hardbreakSchema", "insertHardbreakCommand", "Selection", "hardbreakKeymap", "hrAttr", "hrSchema", "insertHrInputRule", "insertHrCommand", "paragraph", "_tr", "sel", "bulletListAttr", "bulletListSchema", "ordered", "spread", "wrapInBulletListInputRule", "wrapInBulletListCommand", "bulletListKeymap", "orderedListAttr", "orderedListSchema", "wrapInOrderedListInputRule", "wrapInOrderedListCommand", "orderedListKeymap", "listItemAttr", "listItemSchema", "label", "listType", "sinkListItemCommand", "sinkListItem", "liftListItemCommand", "liftListItem", "splitListItemCommand", "splitListItem", "liftFirstListItem", "empty", "joinBackward", "liftFirstListItemCommand", "listItemKeymap", "textSchema", "htmlAttr", "htmlSchema", "span", "schema", "inputRules", "markInputRules", "isMarkSelectedCommand", "doc", "isNodeSelectedCommand", "nodeType", "findNodeInSelection", "clearTextInCurrentBlockCommand", "$to", "right", "left", "setBlockTypeCommand", "attrs", "wrapInBlockTypeCommand", "blockRange", "wrapping", "findWrapping", "addBlockTypeCommand", "Node", "selectTextNearPosCommand", "clamp", "min", "max", "$pos", "keymap", "remarkAddOrderInListPlugin", "tree", "visit", "child", "remarkLineBreak", "find", "result", "position", "remarkInlineLinkPlugin", "remarkInlineLinks", "isParent", "isHTML", "flatMapWithDepth", "fn", "transform", "out", "nthChild", "xs", "j", "item", "BLOCK_CONTAINER_TYPES", "remarkHtmlTransformer", "_index", "remarkMarker", "file", "getMarker", "inlineNodesCursorPlugin", "$prose", "lock", "Plugin", "PluginKey", "e", "leftDec", "Decoration", "rightDec", "DecorationSet", "hardbreakClearMarkPlugin", "trs", "_oldState", "newState", "step", "ReplaceStep", "AddMarkStep", "hardbreakFilterNodes", "hardbreakFilterPlugin", "notIn", "isInsertHr", "curDepth", "canApply", "syncHeadingIdPlugin", "headingIdPluginKey", "updateId", "found", "idMap", "id", "prevState", "syncListOrderPlugin", "syncOrderLabel", "transactions", "orderedListType", "bulletListType", "listItemType", "handleNodeItem", "order", "changed", "expectedLabel", "needDispatch", "base", "_parent", "plugins", "commonmark", "readFromCache: (key: Node) => TableMap | undefined", "addToCache: (key: Node, value: TableMap) => TableMap", "cache", "readFromCache", "key", "addToCache", "value", "cache: (Node | TableMap)[]", "cachePos", "i", "TableMap", "width: number", "height: number", "map: number[]", "problems: Problem[] | null", "width", "height", "map", "problems", "pos", "curPos", "left", "top", "right", "bottom", "j", "axis", "dir", "a", "b", "leftA", "rightA", "topA", "bottomA", "leftB", "rightB", "topB", "bottomB", "rect", "result: number[]", "seen: Record<number, boolean>", "row", "col", "index", "seen", "result", "table", "rowStart", "rowEnd", "rowEndIndex", "computeMap", "findWidth", "mapPos", "colWidths: ColWidths", "e", "rowNode", "cellNode", "colspan", "rowspan", "colwidth", "h", "start", "w", "colW", "widthIndex", "prev", "colWidths", "expectedPos", "missing", "tableMap", "badWidths", "findBadColWidths", "hasRowSpan", "rowWidth", "prevRow", "cell", "node", "updated", "attrs", "colWidth", "freshColWidth", "result: ColWidths", "getCellAttrs", "dom", "extraAttrs", "widthAttr", "widths", "result: MutableAttrs", "prop", "getter", "setCellAttrs", "attrs: MutableAttrs", "setter", "validateColwidth", "item", "tableNodes", "options", "cellAttrs: Record<string, AttributeSpec>", "cellAttrs", "tableNodeTypes", "schema", "name", "type", "role", "tableEditingKey", "PluginKey", "cellAround", "$pos", "d", "isInTable", "state", "$head", "d", "selectionCell", "sel", "$cell", "cellAround", "cellNear", "$pos", "after", "pos", "role", "before", "pointsAtCell", "moveCellForward", "inSameTable", "$cellA", "$cellB", "nextCell", "$pos", "axis", "dir", "table", "map", "TableMap", "tableStart", "moved", "removeColSpan", "attrs", "pos", "result: CellAttrs", "result", "w", "addColSpan", "i", "columnIsHeader", "col", "headerCell", "tableNodeTypes", "row", "CellSelection", "Selection", "$anchorCell", "$headCell", "rect", "doc", "cells", "p", "ranges", "cell", "from", "SelectionRange", "mapping", "pointsAtCell", "inSameTable", "tableChanged", "TextSelection", "seen: Record<number, boolean>", "rows", "rowContent", "index", "seen", "cellRect", "extraLeft", "extraRight", "Fragment", "fragment", "Slice", "tr", "content", "mapFrom", "$from", "$to", "sel", "node", "f", "anchorTop", "headTop", "anchorBottom", "headBottom", "anchorRect", "headRect", "anchorLeft", "headLeft", "anchorRight", "headRight", "other", "json", "anchorCell", "headCell", "CellBookmark", "anchor: number", "head: number", "anchor", "head", "drawCellSelection", "state", "cells: Decoration[]", "Decoration", "DecorationSet", "isCellBoundarySelection", "afterFrom", "beforeTo", "depth", "d", "isTextSelectionAcrossCells", "fromCellBoundaryNode: Node | undefined", "toCellBoundaryNode: Node | undefined", "fromCellBoundaryNode", "toCellBoundaryNode", "normalizeSelection", "allowTableNodeSelection", "normalize: Selection | undefined", "role: string | undefined", "NodeSelection", "role", "normalize", "$cell", "start", "lastCell", "fixTablesKey", "PluginKey", "changedDescendants", "old", "cur", "offset", "oldSize", "curSize", "outer", "j", "child", "scan", "e", "fixTables", "oldState", "tr: Transaction | undefined", "check", "fixTable", "tablePos", "mustAdd: number[]", "mustAdd", "prob", "first", "last", "end", "add", "role: TableRole", "nodes: Node[]", "nodes", "side", "convertTableNodeToArrayOfRows", "tableNode", "rows: (Node | null)[][]", "rowCount", "colCount", "rowIndex", "row: (Node | null)[]", "colIndex", "cellIndex", "cellPos", "topCellIndex", "leftCellIndex", "convertArrayOfRowsToTableNode", "arrayOfNodes", "newRows: Node[]", "oldRow: Node", "newCells: Node[]", "oldCell", "newCell", "newCells", "newRow", "oldRow", "newRows", "moveRowInArrayOfRows", "indexesOrigin", "indexesTarget", "directionOverride", "direction", "rowsExtracted", "positionOffset", "target: number", "target", "findTable", "$pos", "findParentNode", "node", "findParentNode", "predicate", "$pos", "depth", "node", "getCellsInColumn", "columnIndex", "selection", "table", "findTable", "map", "TableMap", "nodePos", "pos", "getCellsInRow", "rowIndex", "getSelectionRangeInColumn", "tr", "startColIndex", "endColIndex", "startIndex", "endIndex", "i", "cells", "cell", "maybeEndIndex", "indexes", "maybeCells", "firstSelectedColumnCells", "firstRowCells", "$anchor", "headCell", "columnCells", "j", "getSelectionRangeInRow", "startRowIndex", "endRowIndex", "firstSelectedRowCells", "firstColumnCells", "rowCells", "transpose", "array", "_", "column", "moveColumn", "moveColParams", "originIndex", "targetIndex", "select", "indexesOriginColumn", "_getSelectionRangeInC", "indexesTargetColumn", "_getSelectionRangeInC2", "newTable", "moveTableColumn", "start", "index", "lastCell", "$lastCell", "firstCell", "$firstCell", "CellSelection", "indexesOrigin", "indexesTarget", "direction", "rows", "convertTableNodeToArrayOfRows", "moveRowInArrayOfRows", "convertArrayOfRowsToTableNode", "moveRow", "moveRowParams", "indexesOriginRow", "_getSelectionRangeInR", "indexesTargetRow", "_getSelectionRangeInR2", "moveTableRow", "selectedRect", "state", "sel", "selectionCell", "tableStart", "addColumn", "col", "refColumn: number | null", "columnIsHeader", "refColumn", "row", "addColSpan", "type", "tableNodeTypes", "addColumnBefore", "dispatch", "isInTable", "rect", "addColumnAfter", "removeColumn", "mapStart", "attrs", "removeColSpan", "deleteColumn", "removeRow", "tr", "map", "table", "tableStart", "row", "rowPos", "i", "nextRow", "mapFrom", "seen", "col", "index", "pos", "attrs", "cell", "copy", "newPos", "deleteRow", "state", "dispatch", "isInTable", "rect", "selectedRect", "TableMap", "setCellAttr", "name", "value", "state", "dispatch", "isInTable", "$cell", "selectionCell", "tr", "CellSelection", "node", "pos", "deprecated_toggleHeader", "type", "types", "tableNodeTypes", "rect", "selectedRect", "cells", "nodes", "i", "isHeaderEnabledByType", "cellPositions", "cell", "toggleHeader", "options", "isHeaderRowEnabled", "isHeaderColumnEnabled", "selectionStartsAt", "cellsRect", "newType", "relativeCellPos", "cellPos", "toggleHeaderRow: Command", "toggleHeaderColumn: Command", "toggleHeaderCell: Command", "findNextCell", "dir", "before", "row", "rowEnd", "rowNode", "lastChild", "table", "rowStart", "goToNextCell", "direction", "TextSelection", "moveCellForward", "deleteTable", "$pos", "d", "deleteCellSelection", "sel", "baseContent", "Slice", "moveTableRow", "originIndex", "targetIndex", "select", "moveRow", "moveTableColumn", "moveColumn", "pastedCells", "slice", "content", "openStart", "openEnd", "first", "role", "schema", "rows", "left", "right", "fitSlice", "ensureRectangular", "widths: ColWidths", "j", "rowspan", "colspan", "r", "widths", "width", "Fragment", "empty", "nodeType", "Transform", "clipCells", "height", "newWidth", "newHeight", "added: number[]", "newRows: Fragment[]", "frag", "col", "added", "removeColSpan", "newRows", "source", "growTable", "map", "start", "mapFrom", "emptyHead", "cells: Node[]", "add: Node", "add", "header", "emptyRow", "isolateHorizontal", "top", "found", "index", "cellTop", "cellLeft", "isolateVertical", "bottom", "updatePos", "insertCells", "tableStart", "TableMap", "recomp", "from", "to", "handleKeyDown", "keydownHandler", "arrow", "shiftArrow", "maybeSetSelection", "selection", "axis", "view", "Selection", "end", "atEndOfCell", "$next", "nextCell", "newSel", "cellSel: CellSelection", "cellSel", "$head", "handleTripleClick", "doc", "cellAround", "handlePaste", "_", "handleMouseDown", "startEvent", "startDOMCell", "domInCell", "$anchor", "setCellSelection", "_cellUnderMouse", "cellUnderMouse", "$anchor$1", "event", "starting", "tableEditingKey", "inSameTable", "stop", "move", "_event", "anchor", "parent", "dirStr: 'up' | 'down' | 'left' | 'right'", "dirStr", "dom", "mousePos", "inside", "TableView", "node: Node", "defaultCellMinWidth: number", "defaultCellMinWidth", "updateColumnsOnResize", "record", "colgroup", "overrideCol", "overrideValue", "totalWidth", "fixedWidth", "nextDOM", "colwidth", "hasWidth", "cssWidth", "col$1", "after", "_nextDOM$parentNode", "columnResizingPluginKey", "PluginKey", "columnResizing", "handleWidth", "cellMinWidth", "View", "lastColumnResizable", "plugin", "Plugin", "nodeViews", "_plugin$spec", "tableName", "ResizeState", "prev", "pluginState", "handleMouseMove", "handleMouseLeave", "handleDecorations", "activeHandle: number", "dragging: Dragging | false", "activeHandle", "dragging", "action", "handle", "pointsAtCell", "target", "domCellAround", "edgeCell", "updateHandle", "win", "_view$dom$ownerDocume", "currentColWidth", "finish", "event$1", "updateColumnWidth", "draggedWidth", "dragged", "displayColumnWidth", "domWidth", "parts", "side", "offset", "resizeMinWidth", "mapIndex", "attrs", "zeroes", "dom: Node | null", "n", "decorations", "DecorationSet", "_columnResizingPlugin", "Decoration", "tableEditing", "allowTableNodeSelection", "cur", "set", "deleted", "drawCellSelection", "oldState", "normalizeSelection", "fixTables", "nav", "agent", "ie_edge", "ie_upto10", "ie_11up", "ie", "safari", "key", "PluginKey", "isComposing", "spec", "createDecorations", "state", "$from", "$to", "to", "deco", "Decoration", "createSpan", "DecorationSet", "view", "span", "imeSpan", "Plugin", "ccount", "value", "character", "source", "count", "index", "escapeStringRegexp", "string", "findAndReplace", "tree", "list", "options", "ignored", "convert", "pairs", "toPairs", "pairIndex", "visitParents", "visitor", "node", "parents", "index", "grandparent", "parent", "siblings", "handler", "find", "replace", "start", "change", "nodes", "match", "position", "matchObject", "value", "tupleOrList", "result", "tuple", "toExpression", "toFunction", "escapeStringRegexp", "inConstruct", "notInConstruct", "gfmAutolinkLiteralFromMarkdown", "transformGfmAutolinkLiterals", "enterLiteralAutolink", "enterLiteralAutolinkValue", "exitLiteralAutolink", "exitLiteralAutolinkEmail", "exitLiteralAutolinkHttp", "exitLiteralAutolinkWww", "gfmAutolinkLiteralToMarkdown", "token", "node", "tree", "findAndReplace", "findUrl", "findEmail", "_", "protocol", "domain", "path", "match", "prefix", "previous", "isCorrectDomain", "parts", "splitUrl", "result", "atext", "label", "url", "trailExec", "trail", "closingParenIndex", "openingParens", "ccount", "closingParens", "email", "code", "unicodeWhitespace", "unicodePunctuation", "footnoteReference", "footnoteReferencePeek", "enterFootnoteCallString", "enterFootnoteCall", "token", "enterFootnoteDefinitionLabelString", "enterFootnoteDefinition", "exitFootnoteCallString", "label", "node", "normalizeIdentifier", "exitFootnoteCall", "exitFootnoteDefinitionLabelString", "exitFootnoteDefinition", "_", "state", "info", "tracker", "value", "exit", "subexit", "gfmFootnoteFromMarkdown", "gfmFootnoteToMarkdown", "options", "firstLineBlank", "footnoteDefinition", "mapAll", "mapExceptFirst", "line", "index", "blank", "constructsWithoutStrikethrough", "handleDelete", "peekDelete", "gfmStrikethroughFromMarkdown", "enterStrikethrough", "exitStrikethrough", "gfmStrikethroughToMarkdown", "token", "node", "_", "state", "info", "tracker", "exit", "value", "defaultStringLength", "value", "markdownTable", "table", "options", "settings", "align", "stringLength", "alignments", "cellMatrix", "sizeMatrix", "longestCellByColumn", "mostCellsPerRow", "rowIndex", "row", "sizes", "columnIndex", "cell", "serialize", "size", "toAlignment", "code", "before", "after", "lines", "line", "gfmTableFromMarkdown", "enterTable", "enterCell", "enterRow", "exitCodeText", "exitTable", "exit", "token", "align", "d", "value", "replace", "node", "$0", "$1", "gfmTableToMarkdown", "options", "settings", "padding", "alignDelimiters", "stringLength", "around", "inlineCodeWithTable", "handleTable", "handleTableCell", "handleTableRow", "_", "state", "info", "serializeData", "handleTableAsData", "row", "handleTableRowAsData", "subexit", "matrix", "markdownTable", "children", "index", "result", "parent", "handle", "gfmTaskListItemFromMarkdown", "exitCheck", "exitParagraphWithTaskListItem", "gfmTaskListItemToMarkdown", "listItemWithTaskListItem", "token", "node", "parent", "head", "siblings", "index", "firstParaghraph", "sibling", "state", "info", "checkable", "checkbox", "tracker", "value", "handle", "check", "$0", "gfmFromMarkdown", "gfmAutolinkLiteralFromMarkdown", "gfmFootnoteFromMarkdown", "gfmStrikethroughFromMarkdown", "gfmTableFromMarkdown", "gfmTaskListItemFromMarkdown", "gfmToMarkdown", "options", "gfmAutolinkLiteralToMarkdown", "gfmFootnoteToMarkdown", "gfmStrikethroughToMarkdown", "gfmTableToMarkdown", "gfmTaskListItemToMarkdown", "wwwPrefix", "tokenizeWwwPrefix", "domain", "tokenizeDomain", "path", "tokenizePath", "trail", "tokenizeTrail", "emailDomainDotTrail", "tokenizeEmailDomainDotTrail", "wwwAutolink", "tokenizeWwwAutolink", "previousWww", "protocolAutolink", "tokenizeProtocolAutolink", "previousProtocol", "emailAutolink", "tokenizeEmailAutolink", "previousEmail", "text", "gfmAutolinkLiteral", "code", "effects", "ok", "nok", "self", "dot", "data", "start", "gfmAtext", "previousUnbalanced", "atext", "emailDomain", "emailDomainAfter", "emailDomainDot", "asciiAlphanumeric", "asciiAlpha", "wwwStart", "wwwAfter", "buffer", "seen", "protocolStart", "protocolPrefixInside", "protocol", "protocolSlashesInside", "afterProtocol", "asciiControl", "markdownLineEndingOrSpace", "unicodeWhitespace", "unicodePunctuation", "protocolAfter", "size", "wwwPrefixInside", "wwwPrefixAfter", "underscoreInLastSegment", "underscoreInLastLastSegment", "domainInside", "domainAfter", "domainAtPunctuation", "sizeOpen", "sizeClose", "pathInside", "pathAtPunctuation", "trailCharacterReferenceStart", "trailBracketAfter", "trailCharacterReferenceInside", "after", "events", "index", "result", "token", "indent", "tokenizeIndent", "gfmFootnote", "tokenizeDefinitionStart", "tokenizeDefinitionContinuation", "gfmFootnoteDefinitionEnd", "tokenizeGfmFootnoteCall", "tokenizePotentialGfmFootnoteCall", "resolveToPotentialGfmFootnoteCall", "effects", "ok", "nok", "self", "index", "defined", "labelStart", "token", "start", "code", "id", "normalizeIdentifier", "events", "context", "call", "marker", "string", "chunk", "replacement", "size", "data", "callStart", "callData", "markdownLineEndingOrSpace", "callEscape", "identifier", "labelAtMarker", "labelInside", "labelAfter", "labelEscape", "factorySpace", "whitespaceAfter", "blankLine", "afterPrefix", "tail", "gfmStrikethrough", "options", "single", "tokenizer", "tokenizeStrikethrough", "resolveAllStrikethrough", "events", "context", "index", "open", "strikethrough", "text", "nextEvents", "insideSpan", "splice", "resolveAll", "effects", "ok", "nok", "previous", "size", "start", "code", "more", "before", "classifyCharacter", "token", "after", "EditMap", "index", "remove", "add", "addImplementation", "events", "a", "b", "vecs", "slice", "element", "editMap", "at", "gfmTableAlign", "events", "index", "inDelimiterRow", "align", "event", "alignIndex", "gfmTable", "tokenizeTable", "resolveTable", "effects", "ok", "nok", "self", "size", "sizeB", "seen", "start", "code", "index", "type", "tail", "next", "bodyRowStart", "headRowBefore", "headRowStart", "headRowBreak", "markdownLineEnding", "headDelimiterStart", "markdownSpace", "factorySpace", "headRowData", "markdownLineEndingOrSpace", "headRowEscape", "headDelimiterBefore", "headDelimiterValueBefore", "headDelimiterCellBefore", "headDelimiterNok", "headDelimiterLeftAlignmentAfter", "headDelimiterCellAfter", "headDelimiterFiller", "headDelimiterRightAlignmentAfter", "bodyRowBreak", "bodyRowData", "bodyRowEscape", "events", "context", "inFirstCellAwaitingPipe", "rowKind", "lastCell", "cell", "afterHeadAwaitingFirstBodyRow", "lastTableEnd", "currentTable", "currentBody", "currentCell", "map", "EditMap", "event", "token", "flushTableEnd", "flushCell", "gfmTableAlign", "range", "rowEnd", "previousCell", "groupName", "valueName", "getPoint", "now", "relatedStart", "relatedEnd", "valueToken", "end", "a", "table", "tableBody", "exits", "related", "side", "tasklistCheck", "tokenizeTasklistCheck", "gfmTaskListItem", "effects", "ok", "nok", "self", "open", "code", "inside", "markdownLineEndingOrSpace", "close", "after", "markdownLineEnding", "markdownSpace", "spaceThenNonSpace", "factorySpace", "gfm", "options", "combineExtensions", "gfmAutolinkLiteral", "gfmFootnote", "gfmStrikethrough", "gfmTable", "gfmTaskListItem", "emptyOptions", "remarkGfm", "options", "self", "settings", "data", "micromarkExtensions", "fromMarkdownExtensions", "toMarkdownExtensions", "gfm", "gfmFromMarkdown", "gfmToMarkdown", "withMeta", "plugin", "meta", "strikethroughAttr", "$markAttr", "strikethroughSchema", "$markSchema", "ctx", "value", "mark", "node", "state", "markType", "toggleStrikethroughCommand", "$command", "toggleMark", "strikethroughInputRule", "$inputRule", "markRule", "strikethroughKeymap", "$useKeymap", "commands", "commandsCtx", "originalSchema", "tableNodes", "dom", "attrs", "tableSchema", "$nodeSchema", "type", "align", "children", "x", "i", "firstLine", "cell", "tableHeaderRowSchema", "tableRowSchema", "tableCellSchema", "tableHeaderSchema", "createTable", "rowsCount", "colsCount", "cells", "headerCells", "rows", "_", "selectLine", "type", "index", "pos", "tr", "$pos", "$node", "findParentNodeClosestToPos", "node", "table", "isRowSelection", "map", "TableMap", "lastCell", "$lastCell", "createCellSelection", "CellSelection", "firstCell", "$firstCell", "cloneTr", "selectRow", "selectCol", "addRowWithAlignment", "ctx", "tableStart", "row", "rowPos", "acc", "_", "i", "cells", "col", "headerCol", "tableCellSchema", "tableRowSchema", "getAllCellsInTable", "selection", "findTable", "nodePos", "selectTable", "last", "goToPrevTableCellCommand", "$command", "goToNextCell", "withMeta", "goToNextTableCellCommand", "exitTable", "state", "dispatch", "isInTable", "$head", "findParentNodeType", "tableSchema", "to", "paragraphSchema", "Selection", "insertTableCommand", "from", "createTable", "_tr", "sel", "moveRowCommand", "moveTableRow", "moveColCommand", "moveTableColumn", "selectRowCommand", "payload", "selectColCommand", "selectTableCommand", "deleteSelectedCellsCommand", "isRow", "isCol", "deleteTable", "deleteColumn", "deleteRow", "addColBeforeCommand", "addColumnBefore", "addColAfterCommand", "addColumnAfter", "addRowBeforeCommand", "rect", "selectedRect", "addRowAfterCommand", "setAlignCommand", "alignment", "setCellAttr", "insertTableInputRule", "$inputRule", "InputRule", "match", "start", "end", "$start", "tableNode", "TextSelection", "tablePasteRule", "$pasteRule", "slice", "_view", "isPlainText", "fixTable", "rowsCount", "colsCount", "headerRow", "firstDataRow", "headerCells", "cell", "tableHeaderSchema", "newHeaderRow", "remainingRows", "tableCells", "Slice", "Fragment", "wrapOrphanedRows", "fragment", "rowType", "nodes", "pendingRows", "hasOrphans", "flushPendingRows", "emptyHeaderRow", "tableHeaderRowSchema", "fixFragment", "result", "changed", "fixed", "fixedNode", "fixedContent", "cleanEmptyParagraphs", "allNodes", "next", "tableKeymap", "$useKeymap", "commands", "commandsCtx", "id$1", "markdownId", "footnoteDefinitionSchema", "$nodeSchema", "dom", "expectDomTypeError", "label", "id", "footnoteReferenceSchema", "extendListItemSchemaForTask", "listItemSchema", "prev", "baseSchema", "checked", "listType", "spread", "wrapInTaskListInputRule", "depth", "finPos", "keymap", "strikethroughKeymap", "inputRules", "markInputRules", "strikethroughInputRule", "pasteRules", "autoInsertSpanPlugin", "$prose", "imeSpan", "columnResizingPlugin", "columnResizing", "tableEditingPlugin", "tableEditing", "remarkGFMPlugin", "$remark", "remarkGfm", "pluginKey", "PluginKey", "getChildIndex", "parent", "child", "_offset", "keepTableAlignPlugin", "Plugin", "oldState", "check", "tableRow", "tableHeaderRow", "headerCell", "align", "plugins", "schema", "strikethroughAttr", "strikethroughSchema", "toggleStrikethroughCommand", "gfm", "freeGlobal", "freeGlobal_default", "freeSelf", "root", "freeGlobal_default", "root_default", "Symbol", "root_default", "Symbol_default", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "Symbol_default", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "getRawTag_default", "objectProto", "nativeObjectToString", "objectToString", "value", "objectToString_default", "nullTag", "undefinedTag", "symToStringTag", "Symbol_default", "baseGetTag", "value", "getRawTag_default", "objectToString_default", "baseGetTag_default", "isObjectLike", "value", "isObjectLike_default", "symbolTag", "isSymbol", "value", "isObjectLike_default", "baseGetTag_default", "isSymbol_default", "reWhitespace", "trimmedEndIndex", "string", "index", "trimmedEndIndex_default", "reTrimStart", "baseTrim", "string", "trimmedEndIndex_default", "baseTrim_default", "isObject", "value", "type", "isObject_default", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "isSymbol_default", "isObject_default", "other", "baseTrim_default", "isBinary", "toNumber_default", "now", "root_default", "now_default", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "toNumber_default", "isObject_default", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "now_default", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "debounce_default", "ListenerManager", "fn", "listenerCtx", "createSlice", "key", "PluginKey", "listener", "ctx", "InitReady", "listeners", "SerializerReady", "serializer", "serializerCtx", "prevDoc", "prevMarkdown", "prevSelection", "latestTr", "debouncedHandler", "debounce_default", "doc", "markdown", "plugin", "Plugin", "_", "instance", "tr", "currentSelection", "prosePluginsCtx", "x", "EditorViewReady", "isPureText", "content", "child", "withMeta", "plugin", "meta", "dispatchPasteSlice", "view", "slice", "node", "isTextOnlySlice", "clipboard", "$prose", "ctx", "schema", "schemaCtx", "editorViewOptionsCtx", "prev", "html", "prevTransform", "Plugin", "PluginKey", "event", "preProcessedSlice", "parser", "parserCtx", "editable", "clipboardData", "text", "vscodeData", "language", "tr", "codeBlock", "getNodeFromSchema", "TextSelection", "domParser", "DOMParser", "dom", "DOMSerializer", "template", "serializer", "serializerCtx", "doc", "GOOD_LEAF_SIZE", "RopeSequence", "other", "Append", "from", "to", "i", "f", "result", "elt", "values", "Leaf", "prototypeAccessors", "start", "left", "right", "leftLen", "inner", "dist_default", "max_empty_items", "Branch", "_Branch", "items", "eventCount", "state", "preserveItems", "end", "remap", "mapFrom", "transform", "selection", "remaining", "addAfter", "addBefore", "item", "i", "Item", "step", "map", "histOptions", "newItems", "oldItems", "lastItem", "merged", "overflow", "DEPTH_OVERFLOW", "cutOffEvents", "from", "to", "maps", "Mapping", "mirrorPos", "array", "rebasedTransform", "rebasedCount", "rebasedItems", "start", "mapping", "newUntil", "iRebased", "pos", "newMaps", "branch", "count", "upto", "events", "newItem", "last", "dist_default", "n", "cutPoint", "_Item", "mirrorOffset", "other", "HistoryState", "done", "undone", "prevRanges", "prevTime", "prevComposition", "applyTransaction", "history", "tr", "options", "historyTr", "historyKey", "rebased", "closeHistoryKey", "appended", "mustPreserveItems", "rangesFor", "composition", "newGroup", "isAdjacentTo", "mapRanges", "adjacent", "result", "_from", "_to", "ranges", "histTransaction", "redo", "pop", "added", "newHist", "cachedPreserveItems", "cachedPreserveItemsPlugins", "plugins", "historyKey", "PluginKey", "closeHistoryKey", "history", "config", "Plugin", "HistoryState", "Branch", "tr", "hist", "state", "applyTransaction", "view", "e", "inputType", "command", "undo", "redo", "buildCommand", "scroll", "dispatch", "histTransaction", "undoNoScroll", "redoNoScroll", "withMeta", "plugin", "meta", "undoCommand", "$command", "undo", "redoCommand", "redo", "historyProviderConfig", "$ctx", "historyProviderPlugin", "$prose", "ctx", "history", "historyKeymap", "$useKeymap", "commands", "commandsCtx", "trailingConfig", "$ctx", "lastNode", "state", "trailingPlugin", "$prose", "ctx", "trailingPluginKey", "PluginKey", "shouldAppend", "getNode", "plugin", "Plugin", "_", "tr", "value", "__", "doc", "nodeType", "shouldInsertNodeAtEnd", "endPosition", "trailing", "readImageAsBase64", "file", "resolve", "reader", "defaultUploader", "files", "schema", "imgs", "i", "image", "missingNodeInSchema", "img", "alt", "src", "uploadConfig", "$ctx", "pos", "spec", "widgetDOM", "Decoration", "uploadPlugin", "$prose", "ctx", "pluginKey", "PluginKey", "findPlaceholder", "state", "id", "decorations", "found", "handleUpload", "view", "event", "schemaCtx", "uploader", "getInsertPos", "tr", "defaultInsertPos", "insertPos", "fragment", "e", "Plugin", "DecorationSet", "set", "_set", "action", "uploadWidgetFactory", "decoration", "target", "enableHtmlFileUploader", "upload", "CODE_BLOCK_TONES", "CODE_BLOCK_CLASSES", "normalizeCodeBlockTone", "value", "nextCodeBlockTone", "current", "index", "codeBlockToneLabel", "tone", "labels", "escapeHtml", "value", "DEFAULT_SAFE_INLINE_HTML_TAGS", "renderKatexHtml", "expression", "displayMode", "options", "escapeHtml", "katex", "normalizeFootnoteId", "id", "resolveFootnoteReference", "footnotes", "label", "normalizedId", "hasFootnote", "isSafeInlineHtmlTag", "value", "policy", "normalized", "DEFAULT_SAFE_INLINE_HTML_TAGS", "renderInertInlineHtml", "escapeHtml", "detectBlockquoteAdmonition", "text", "lines", "match", "type", "rest", "ShikiError", "message", "clone", "something", "doClone", "cloneArray", "cloneObj", "arr", "r", "i", "len", "obj", "key", "mergeObjects", "target", "sources", "source", "basename", "path", "idx", "CAPTURING_REGEX_SOURCE", "RegexSource", "regexSource", "captureSource", "captureIndices", "match", "index", "commandIndex", "command", "capture", "result", "strcmp", "a", "b", "strArrCmp", "len1", "len2", "res", "isValidHexColor", "hex", "escapeRegExpCharacters", "value", "CachedFn", "fn", "Theme", "_colorMap", "_defaults", "_root", "colorMap", "parseTheme", "resolveParsedThemeRules", "scopeName", "scopePath", "effectiveRule", "v", "_scopePathMatchesParentScopes", "StyleAttributes", "ScopeStack", "_ScopeStack", "parent", "scopeNames", "name", "segments", "item", "other", "base", "parentScopes", "scopePattern", "scopeMustMatch", "_matchesScope", "fontStyle", "foregroundId", "backgroundId", "settings", "resultLen", "entry", "scopes", "_scope", "j", "lenJ", "foreground", "background", "scope", "ParsedThemeRule", "FontStyle", "FontStyle2", "parsedThemeRules", "defaultFontStyle", "defaultForeground", "defaultBackground", "incomingDefaults", "ColorMap", "defaults", "root", "ThemeTrieElement", "ThemeTrieElementRule", "rule", "color", "emptyParentScopes", "_ThemeTrieElementRule", "scopeDepth", "_ThemeTrieElement", "_mainRule", "rulesWithParentScopes", "_children", "aParentIndex", "bParentIndex", "parentScopeLengthDiff", "dotIndex", "head", "tail", "rules", "child", "EncodedTokenMetadata", "_EncodedTokenMetadata", "encodedTokenAttributes", "languageId", "tokenType", "containsBalancedBrackets", "_languageId", "_tokenType", "_containsBalancedBracketsBit", "_fontStyle", "_foreground", "_background", "createMatchers", "selector", "matchesName", "results", "tokenizer", "newTokenizer", "token", "priority", "matcher", "parseConjunction", "parseOperand", "expressionToNegate", "matcherInput", "expressionInParents", "parseInnerExpression", "isIdentifier", "identifiers", "matchers", "matcher2", "input", "regex", "match", "res", "disposeOnigString", "str", "TopLevelRuleReference", "scopeName", "TopLevelRepositoryRuleReference", "ruleName", "ExternalReferenceCollector", "reference", "key", "ScopeDependencyProcessor", "repo", "initialScopeName", "q", "deps", "dep", "collectReferencesOfReference", "baseGrammarScopeName", "result", "selfGrammar", "baseGrammar", "collectExternalReferencesInTopLevelRule", "collectExternalReferencesInTopLevelRepositoryRule", "injections", "injection", "context", "rule", "collectExternalReferencesInRules", "rules", "patternRepository", "mergeObjects", "include", "parseInclude", "newContext", "BaseReference", "SelfReference", "RelativeReference", "TopLevelReference", "TopLevelRepositoryReference", "indexOfSharp", "HAS_BACK_REFERENCES", "BACK_REFERENCING_END", "endRuleId", "whileRuleId", "Rule", "$location", "id", "name", "contentName", "RegexSource", "location", "basename", "lineText", "captureIndices", "CaptureRule", "retokenizeCapturedWithRuleId", "grammar", "out", "endRegexSource", "allowA", "allowG", "MatchRule", "match", "captures", "RegExpSource", "RegExpSourceList", "IncludeOnlyRule", "patterns", "pattern", "BeginEndRule", "begin", "beginCaptures", "end", "endCaptures", "applyEndPatternLast", "BeginWhileRule", "_while", "whileCaptures", "whileRuleId", "RuleFactory", "_RuleFactory", "helper", "desc", "repository", "mergeObjects", "maximumCaptureId", "captureId", "numericCaptureId", "i", "len", "ruleId", "reference", "parseInclude", "localIncludedRule", "externalGrammarName", "externalGrammarInclude", "externalGrammar", "externalIncludedRule", "rule", "skipRule", "_RegExpSource", "regExpSource", "lastPushedPos", "output", "hasAnchor", "pos", "nextCh", "HAS_BACK_REFERENCES", "newSource", "capturedValues", "capture", "BACK_REFERENCING_END", "g1", "escapeRegExpCharacters", "A0_G0_result", "A0_G1_result", "A1_G0_result", "A1_G1_result", "ch", "item", "index", "onigLib", "regExps", "e", "CompiledRule", "rules", "r", "string", "startPosition", "options", "result", "BasicScopeAttributes", "languageId", "tokenType", "BasicScopeAttributesProvider", "_BasicScopeAttributesProvider", "initialLanguageId", "embeddedLanguages", "ScopeMatcher", "scopeName", "CachedFn", "standardTokenType", "scope", "m", "values", "escapedScopes", "value", "DebugFlags", "UseOnigurumaFindOptions", "TokenizeStringResult", "stack", "stoppedEarly", "_tokenizeString", "isFirstLine", "linePos", "lineTokens", "checkWhileConditions", "timeLimit", "lineLength", "STOP", "anchorPosition", "whileCheckResult", "_checkWhileConditions", "startTime", "scanNext", "matchRuleOrInjections", "matchedRuleId", "hasAdvanced", "endRuleId", "poppedRule", "handleCaptures", "popped", "_rule", "beforePush", "nameScopesList", "pushedRule", "contentNameScopesList", "whileRules", "node", "nodeRule", "whileRule", "ruleScanner", "findOptions", "prepareRuleWhileSearch", "matchResult", "matchRule", "injections", "injectionResult", "matchInjections", "matchResultScore", "injectionResultScore", "prepareRuleSearch", "bestMatchRating", "bestMatchCaptureIndices", "bestMatchRuleId", "bestMatchResultPriority", "scopes", "injection", "matchRating", "ruleScanner2", "getFindOptions", "lineTextContent", "localStack", "maxEnd", "captureRule", "captureIndex", "stackClone", "onigSubStr", "disposeOnigString", "captureRuleScopeName", "captureRuleScopesList", "LocalStackElement", "endPos", "createGrammar", "initialLanguage", "tokenTypes", "balancedBracketSelectors", "grammarRepository", "Grammar", "collectInjections", "selector", "ruleFactoryHelper", "matchers", "createMatchers", "nameMatcher", "matcher", "identifers", "lastIndex", "identifier", "scopesAreMatching", "thisScopeName", "_rootScopeName", "_onigLib", "initGrammar", "sources", "scopeName2", "rawInjections", "expression", "injectionScopeNames", "injectionScopeName", "injectionGrammar", "i1", "i2", "factory", "rawIncludedGrammar", "prevState", "emitBinaryTokens", "StateStackImpl", "rawDefaultMetadata", "defaultStyle", "defaultMetadata", "EncodedTokenMetadata", "rootScopeName", "scopeList", "AttributedScopeStack", "onigLineText", "LineTokens", "base", "clone", "_AttributedScopeStack", "parent", "scopePath", "tokenAttributes", "namesScopeList", "current", "scopeNames", "frame", "ScopeStack", "rawRootMetadata", "rootStyle", "resolvedTokenAttributes", "other", "a", "b", "existingTokenAttributes", "basicScopeAttributes", "styleAttributes", "fontStyle", "foreground", "background", "target", "rawMetadata", "newPath", "scopeThemeMatchResult", "metadata", "self", "_StateStackImpl", "enterPos", "anchorPos", "beginRuleCapturedEOL", "endRule", "el", "res", "outIndex", "contentNameScopeStack", "BalancedBracketSelectors", "balancedBracketScopes", "unbalancedBracketScopes", "excluder", "includer", "tokenTypeOverrides", "endIndex", "scopesList", "containsBalancedBrackets", "scopes2", "SyncRegistry", "theme", "targetScope", "rawGrammar", "Registry", "Theme", "colorMap", "initialScopeName", "configuration", "dependencyProcessor", "ScopeDependencyProcessor", "request", "INITIAL", "resolveColorReplacements", "theme", "options", "replacements", "themeName", "key", "value", "applyColorReplacements", "color", "toArray", "x", "normalizeGetter", "p", "r", "isPlainLang", "lang", "isSpecialLang", "isNoneTheme", "isSpecialTheme", "splitLines", "code", "preserveEnding", "parts", "index", "lines", "line", "VSCODE_FALLBACK_EDITOR_FG", "VSCODE_FALLBACK_EDITOR_BG", "RESOLVED_KEY", "normalizeTheme", "rawTheme", "bg", "fg", "globalSetting", "s", "replacementCount", "replacementMap", "getReplacementColor", "hex", "setting", "replaceFg", "replaceBg", "clone", "replacement", "resolveLangs", "langs", "l", "resolveThemes", "themes", "i", "resolveLangAlias", "name", "alias", "resolved", "ShikiError", "Registry", "_resolver", "_themes", "_langs", "_alias", "t", "_theme", "textmateTheme", "Theme", "embeddedLazilyBy", "grammarConfig", "g", "e", "langsGraphArray", "missingLangs", "_", "dependents", "embedded", "embeddedLang", "Resolver", "engine", "patterns", "langIdOrAlias", "scopeName", "a", "scopeParts", "injections", "subScopeName", "instancesCount", "createShikiPrimitive", "isDisposed", "_registry", "_lastTheme", "resolveLangAlias$1", "getLanguage", "ensureNotDisposed", "_lang", "getTheme", "setTheme", "getLoadedThemes", "getLoadedLanguages", "loadLanguageSync", "loadLanguage", "loadThemeSync", "loadTheme", "dispose", "createShikiPrimitiveAsync", "options", "themes", "langs", "engine", "resolveThemes", "resolveLangs", "createShikiPrimitive", "_grammarStateMap", "setLastGrammarStateToMap", "keys", "state", "getLastGrammarStateFromMap", "GrammarState", "lang", "themes", "toArray", "theme", "INITIAL", "args", "stacksMap", "stack", "getScopes", "scopes", "visited", "pushScope", "name", "getGrammarStack", "ShikiError", "codeToTokensBase", "primitive", "code", "options", "themeName", "isPlainLang", "isNoneTheme", "splitLines", "line", "colorMap", "_grammar", "tokenizeWithTheme", "getLastGrammarState", "_tokenizeWithTheme", "grammar", "result", "grammarState", "colorReplacements", "resolveColorReplacements", "tokenizeMaxLineLength", "tokenizeTimeLimit", "lines", "stateStack", "actual", "final", "i", "len", "lineOffset", "resultWithScopes", "tokensWithScopes", "tokensWithScopesIndex", "tokensLength", "j", "startIndex", "nextStartIndex", "metadata", "color", "applyColorReplacements", "EncodedTokenMetadata", "fontStyle", "token", "themeSettingsSelectors", "setting", "selectors", "scope", "selector", "offset", "tokenWithScopes", "tokenWithScopesText", "explainThemeScopesNameOnly", "explainThemeScopesFull", "themeSelectors", "explainThemeScope", "matchesOne", "matches", "parentScopes", "selectorParentIndex", "parentIndex", "settings", "selectorPieces", "codeToTokensWithThemes", "codeToTokensBaseFn", "themedTokens", "t", "tokens", "alignThemesTokenization", "mergedTokens", "lineIdx", "_token", "tokenIdx", "mergedToken", "themeIdx", "_", "__", "___", "styles", "mergedGrammarState", "s", "outThemes", "count", "outLines", "indexes", "current", "minLength", "n", "htmlVoidElements", "Schema", "property", "normal", "space", "merge", "definitions", "space", "property", "normal", "definition", "Schema", "normalize", "value", "Info", "property", "attribute", "types_exports", "__export", "boolean", "booleanish", "commaOrSpaceSeparated", "commaSeparated", "number", "overloadedBoolean", "spaceSeparated", "powers", "increment", "checks", "types_exports", "DefinedInfo", "Info", "property", "attribute", "mask", "space", "index", "mark", "check", "values", "key", "value", "create", "definition", "properties", "normals", "property", "value", "info", "DefinedInfo", "normalize", "Schema", "aria", "create", "booleanish", "number", "spaceSeparated", "_", "property", "caseSensitiveTransform", "attributes", "attribute", "caseInsensitiveTransform", "attributes", "property", "caseSensitiveTransform", "html", "create", "commaSeparated", "spaceSeparated", "boolean", "number", "booleanish", "overloadedBoolean", "caseInsensitiveTransform", "svg", "create", "commaOrSpaceSeparated", "number", "spaceSeparated", "boolean", "commaSeparated", "caseSensitiveTransform", "xlink", "create", "_", "property", "xmlns", "create", "caseInsensitiveTransform", "xml", "create", "_", "property", "cap", "dash", "valid", "find", "schema", "value", "normal", "normalize", "property", "Type", "Info", "rest", "camelcase", "dashes", "kebab", "DefinedInfo", "$0", "html", "merge", "aria", "xlink", "xmlns", "xml", "svg", "defaultSubsetRegex", "surrogatePairsRegex", "controlCharactersRegex", "regexEscapeRegex", "subsetToRegexCache", "core", "value", "options", "charactersToExpressionCached", "basic", "surrogate", "pair", "index", "all", "character", "subset", "cached", "charactersToExpression", "groups", "hexadecimalRegex", "toHexadecimal", "code", "next", "omit", "value", "decimalRegex", "toDecimal", "code", "next", "omit", "value", "characterEntitiesLegacy", "characterEntitiesHtml4", "dangerous", "own", "characters", "key", "characterEntitiesHtml4", "notAlphanumericRegex", "toNamed", "code", "next", "omit", "attribute", "character", "name", "value", "characterEntitiesLegacy", "dangerous", "formatSmart", "code", "next", "options", "numeric", "toHexadecimal", "named", "toNamed", "decimal", "toDecimal", "stringifyEntities", "value", "options", "core", "formatSmart", "htmlCommentRegex", "bogusCommentEntitySubset", "commentEntitySubset", "comment", "node", "_1", "_2", "state", "stringifyEntities", "encode", "$0", "doctype", "_1", "_2", "_3", "state", "stringify", "values", "options", "settings", "stringify", "values", "re", "whitespace", "thing", "empty", "value", "siblingAfter", "siblings", "siblingBefore", "emptyChildren", "increment", "sibling", "parent", "index", "includeWhitespace", "offset", "next", "whitespace", "own", "omission", "handlers", "omit", "node", "index", "parent", "closing", "omission", "body", "headOrColgroupOrCaption", "dd", "dt", "html", "li", "optgroup", "option", "p", "rubyElement", "tbody", "cells", "tfoot", "thead", "tr", "_", "index", "parent", "next", "siblingAfter", "whitespace", "opening", "omission", "body", "colgroup", "head", "html", "tbody", "node", "siblingAfter", "seen", "child", "whitespace", "index", "parent", "previous", "siblingBefore", "closing", "constants", "element", "node", "index", "parent", "state", "schema", "omit", "selfClosing", "parts", "last", "svg", "attributes", "serializeAttributes", "content", "opening", "closing", "properties", "values", "key", "value", "serializeAttribute", "info", "find", "x", "y", "quote", "result", "name", "stringifyEntities", "stringify", "ccount", "textEntitySubset", "text", "node", "_", "parent", "state", "stringifyEntities", "raw", "node", "index", "parent", "state", "text", "root", "node", "_1", "_2", "state", "handle", "zwitch", "invalid", "unknown", "comment", "doctype", "element", "raw", "root", "text", "node", "node_", "emptyOptions", "emptyCharacterReferences", "emptyChildren", "toHtml", "tree", "options", "options_", "quote", "alternative", "one", "all", "htmlVoidElements", "svg", "html", "node", "index", "parent", "handle", "results", "children", "addClassToHast", "node", "className", "targets", "c", "createPositionConverter", "code", "lines", "splitLines", "line", "indexToPos", "index", "character", "lineText", "posToIndex", "i", "DEFAULT_COLOR_LIGHT_DARK", "COLOR_KEYS", "splitToken", "token", "offsets", "lastOffset", "tokens", "offset", "splitTokens", "breakpoints", "sorted", "b", "line", "breakpointsInToken", "i", "a", "flatTokenVariants", "merged", "variantsOrder", "cssVariablePrefix", "defaultColor", "colorsRendering", "styles", "t", "getTokenStyleObject", "styleKeys", "mergedStyles", "varKey", "idx", "key", "keyName", "cur", "value", "lightIndex", "darkIndex", "ShikiError", "FontStyle", "decorations", "stringifyTokenStyle", "transformerDecorations", "map", "getContext", "shiki", "normalizePosition", "p", "converter", "character", "createPositionConverter", "d", "verifyIntersections", "codeEl", "ctx", "lines", "applyLineSection", "start", "end", "decoration", "lineEl", "text", "startIndex", "endIndex", "stringify", "children", "applyDecoration", "wrapper", "applyLine", "el", "type", "properties", "transform", "addClassToHast", "lineApplies", "items", "foo", "j", "bar", "isFooHasBarStart", "isFooHasBarEnd", "isBarHasFooStart", "isBarHasFooEnd", "builtInTransformers", "getTransformers", "options", "transformers", "sortTransformersByEnforcement", "pre", "post", "normal", "transformer", "namedColors", "findSequence", "position", "nextEscape", "nextClose", "parseColor", "sequence", "colorMode", "rgb", "x", "index", "parseSequence", "commands", "code", "codeInt", "color", "createAnsiSequenceParser", "foreground", "background", "decorations2", "findResult", "styleToken", "defaultNamedColorsMap", "createColorPalette", "namedColorsMap", "namedColor", "name", "rgbColor", "colorTable", "getColorTable", "levels", "r", "g", "level", "tableColor", "defaultAnsiColors", "tokenizeAnsiWithTheme", "theme", "fileContents", "colorReplacements", "resolveColorReplacements", "splitLines", "colorPalette", "parser", "bgColor", "applyColorReplacements", "dimColor", "fontStyle", "hexMatch", "hex", "alpha", "cssVarMatch", "codeToTokensBase", "primitive", "lang", "themeName", "isPlainLang", "isNoneTheme", "codeToTokens", "bg", "fg", "rootStyle", "grammarState", "themes", "themeTokens", "codeToTokensWithThemes", "getLastGrammarStateFromMap", "themeRegs", "themesOrder", "setLastGrammarStateToMap", "themeColorReplacements", "mapThemeColors", "_theme", "property", "cssVar", "codeToHast", "transformerContext", "_code", "_options", "input", "mergeWhitespaces", "mergeSameStyleTokens", "mergeWhitespaceTokens", "splitWhitespaceTokens", "mergeAdjacentStyledTokens", "contextSource", "tokensToHast", "root", "structure", "tabindex", "preNode", "codeNode", "lineNodes", "context", "lineNode", "col", "tokenNode", "style", "syntheticLines", "currentLine", "child", "transformedCode", "result", "newLine", "carryOnContent", "firstOffset", "couldMerge", "match", "leading", "content", "trailing", "expanded", "prevToken", "prevStyle", "currentStyle", "isPrevDecorated", "isDecorated", "hastToHtml", "toHtml", "codeToHtml", "createHighlighterCore", "createShikiPrimitiveAsync", "args", "getLastGrammarState", "JavaScriptScanner", "patterns", "options", "forgiving", "cache", "regexConstructor", "p", "cached", "regex", "e", "string", "startPosition", "_options", "str", "pending", "toResult", "index", "match", "offset", "indice", "i", "regexp", "minIndex", "m", "cpOf", "char", "getOrInsert", "map", "key", "defaultValue", "PosixClassNames", "r", "throwIfNullish", "value", "msg", "charClassOpenPattern", "r", "sharedEscapesPattern", "quantifierRe", "tokenRe", "charClassTokenRe", "tokenize", "pattern", "options", "opts", "flagProperties", "getFlagProperties", "xStack", "context", "isXOn", "tokens", "match", "result", "getTokenWithDetails", "potentialUnnamedCaptureTokens", "numNamedAndOptInUnnamedCaptures", "t", "i", "numCaptures", "splitEscapedNumberToken", "m", "lastIndex", "m0", "m1", "getAllTokensForCharClass", "createAssertionToken", "createSubroutineToken", "createBackreferenceToken", "createDirectiveToken", "createCharacterSetToken", "tokenizeSharedEscape", "tokenizeNamedCallout", "tokenizeFlagModifier", "createGroupOpenToken", "createGroupCloseToken", "end", "re", "kind", "createAlternatorToken", "splitQuantifierMatch", "createCharacterToken", "cpOf", "opener", "createCharacterClassOpenToken", "numCharClassesOpen", "createCharacterClassCloseToken", "tokenizeAnyTokenWithinCharClass", "raw", "posix", "PosixClassNames", "createCharacterClassHyphenToken", "createCharacterClassIntersectorToken", "inCharClass", "char1", "tokenizeControlCharacter", "tokenizeShorthand", "tokenizeUnicodeProperty", "bytes", "hex", "decoded", "encoder", "char", "byte", "getValidatedHexCharCode", "EscapeCharCodes", "createEscapedNumberToken", "value", "negate", "throwIfNullish", "createNamedCalloutToken", "tag", "args", "createQuantifierToken", "min", "max", "CalloutNames", "on", "off", "enabledFlags", "getFlagGroupSwitches", "disabledFlags", "flagChanges", "callout", "name", "argsArray", "arg", "arg0", "arg1", "arg2", "tokenizeQuantifier", "minStr", "maxStr", "limit", "lower", "p", "neg", "flags", "obj", "token", "matches", "str", "withG", "parts", "hasOnlyChild", "node", "props", "kid", "key", "isQuantifiable", "node", "quantifiableTypes", "parse", "pattern", "options", "opts", "tokenized", "tokenize", "walk", "parent", "state", "token", "context", "createAlternative", "parseAssertion", "parseBackreference", "createCharacter", "parseCharacterClassHyphen", "parseCharacterClassOpen", "parseCharacterSet", "createDirective", "parseGroupOpen", "createNamedCallout", "parseQuantifier", "parseSubroutine", "ast", "createRegex", "createFlags", "top", "node", "capturingGroups", "hasNumberedRef", "namedGroupsByName", "subroutines", "ref", "r", "kind", "createAssertion", "throwIfNullish", "raw", "hasKWrapper", "fromNum", "num", "isRelative", "numCapturesToLeft", "orphan", "createBackreference", "numberedRef", "_", "tokens", "prevSiblingNode", "nextToken", "nextNode", "createCharacterClassRange", "cpOf", "negate", "intersections", "createCharacterClass", "ccFirstToken", "throwIfUnclosedCharacterClass", "cc", "value", "normalizeUnknownPropertyNames", "skipPropertyNameValidation", "unicodePropertyMap", "normalized", "slug", "PosixClassNames", "createUnicodeProperty", "createPosixClass", "createCharacterSet", "skipLookbehindValidation", "createByGroupKind", "isThisAbsenceFunction", "isThisLookbehind", "isLookbehind", "isThisNegLookbehind", "getOrInsert", "throwIfUnclosedGroup", "alt", "child", "msg", "isLookahead", "min", "max", "quantifiedNode", "isQuantifiable", "createQuantifier", "createSubroutine", "createAbsenceFunction", "getBodyForAlternativeContainer", "getBodyForElementContainer", "createCapturingGroup", "number", "isValidGroupName", "charCode", "hex", "flags", "createGroup", "atomic", "createLookaroundAssertion", "tag", "args", "name", "body", "normalizeUnicodePropertyName", "m", "first", "traverse", "root", "visitor", "state", "traverseArray", "array", "parent", "i", "keyShift", "traverseNode", "node", "key", "container", "skipTraversingKidsOfPath", "path", "arrayContainer", "numericKey", "shifted", "newNode", "options", "traverseNew", "throwIfNullish", "newNodes", "keyShiftInLoop", "type", "anyTypeVisitor", "thisTypeVisitor", "enterAllFn", "enterThisFn", "value", "noncapturingDelim", "incrementIfAtLeast", "arr", "threshold", "i", "spliceStr", "str", "pos", "oldValue", "newValue", "Context", "replaceUnescaped", "expression", "needle", "replacement", "context", "re", "negated", "numCharClassesOpen", "result", "match", "m", "$skip", "forEachUnescaped", "callback", "execUnescaped", "pos", "hasUnescaped", "getGroupContents", "contentsStartPos", "token", "contentsEndPos", "numGroupsOpen", "atomicPluginToken", "noncapturingDelim", "atomic", "expression", "data", "hiddenCaptures", "captureTransfers", "aGDelim", "emulatedAGDelim", "captureNumMap", "addedHiddenCaptures", "numCapturesBeforeAG", "numAGs", "aGPos", "hasProcessedAG", "numCharClassesOpen", "numGroupsOpenInAG", "inAG", "match", "m", "index", "capturingStart", "noncapturingStart", "addedCaptureNum", "incrementIfAtLeast", "newCaptureTransfers", "from", "to", "f", "replaceUnescaped", "backrefNum", "wrappedBackrefNum", "bNum", "Context", "baseQuantifier", "possessivePluginToken", "possessive", "openGroupIndices", "lastGroupIndex", "lastCharClassIndex", "lastToken", "qBase", "qMod", "invalidQ", "charsAdded", "spliceStr", "nodeIndex", "r", "gRToken", "recursiveToken", "namedCaptureDelim", "captureDelim", "token", "overlappingRecursionMsg", "recursion", "pattern", "data", "hiddenCaptures", "mode", "captureTransfers", "hasUnescaped", "Context", "addedHiddenCaptures", "hasNumberedBackref", "groupContentsStartPos", "openGroups", "hasRecursed", "numCharClassesOpen", "numCapturesPassed", "match", "captureName", "rDepth", "gRNameOrNum", "gRDepth", "assertMaxInBounds", "left", "right", "reps", "makeRecursive", "mapCaptureTransfers", "isWithinReffedGroup", "g", "startPos", "groupContents", "getGroupContents", "groupContentsLeft", "groupContentsRight", "numAddedHiddenCapturesPreExpansion", "expansion", "pre", "post", "isUnnamedCapture", "max", "errMsg", "isSubpattern", "namesInRecursed", "forEachUnescaped", "rest", "repeatWithDepth", "direction", "getDepthNum", "i", "result", "depthNum", "replaceUnescaped", "m", "unnamed", "backref", "suffix", "addedCaptureNum", "incrementIfAtLeast", "arr", "threshold", "numCapturesAddedInExpansion", "numCapturesInLeft", "recursionDelimCaptureNum", "newCaptureTransfers", "from", "to", "numCapturesInRight", "numCapturesAddedInLeft", "newTo", "newFrom", "f", "cp", "r", "envFlags", "globalRegExp", "getNewCurrentFlags", "current", "enable", "disable", "getOrInsert", "map", "key", "defaultValue", "isMinTarget", "target", "min", "EsVersion", "throwIfNullish", "value", "msg", "Target", "getOptions", "options", "opts", "asciiSpaceChar", "CharsWithoutIgnoreCaseExpansion", "defaultWordChar", "getIgnoreCaseMatchChars", "char", "set", "lower", "upper", "title", "LowerToTitleCaseMap", "altLower", "LowerToAlternativeLowerCaseMap", "altUpper", "LowerToAlternativeUpperCaseMap", "JsUnicodePropertyMap", "p", "w", "titleEntry", "titleRange", "PosixClassMap", "range", "start", "end", "i", "codePoint", "UnicodePropertiesWithSpecificCase", "transform", "ast", "addParentProperties", "firstPassState", "S", "FirstPassVisitor", "globalFlags", "secondPassState", "SecondPassVisitor", "thirdPassState", "ThirdPassVisitor", "node", "parent", "replaceWith", "body", "kind", "innerGroup", "A", "K", "Q", "outerGroup", "_", "setParentDeep", "flagDirectivesByAlt", "flagDirectives", "el", "forwardSiblingAlt", "flags", "getCombinedFlagModsFromFlagNodes", "flagGroup", "container", "root", "remove", "state", "negate", "asciiWordBoundaries", "avoidSubclass", "supportedGNodes", "wordIsAscii", "b", "F", "m", "parseFragment", "prev", "isAlwaysNonZeroLength", "setParent", "B", "jsGroupNameMap", "ref", "isValidJsGroupName", "getAndStoreJsGroupName", "subroutineRefMap", "name", "cc", "C", "accuracy", "minTargetEs2024", "digitIsAscii", "spaceIsAscii", "E", "setNegate", "eBase", "emoji", "ascii", "slug", "removeAllPrevSiblings", "removeAllNextSiblings", "firstAlt", "topLevel", "o", "lookbehind", "f", "group", "leadingGs", "hasAltWithLeadG", "hasAltWithoutLeadG", "alt", "leadingG", "getLeadingG", "g", "passedLookbehind", "strategy", "multiplexCapturesToLeftByRef", "reffedNodesByReferencer", "orphan", "skip", "groupOriginByCopy", "groupsByName", "openRefs", "origin", "recursion", "createRecursion", "multiplexNodes", "multiplex", "groupsWithSameName", "hasDuplicateNameToRemove", "groupInfo", "isRecursive", "reffed", "reffedGroupNode", "isGlobalRecursion", "expandedSubroutine", "cloneCapturingGroup", "replacement", "reffedGroupFlagMods", "getAllParents", "reffedGroupFlags", "areFlagsEqual", "getFlagModsFromFlags", "participants", "canParticipateWithNode", "k", "numCapsNeeded", "emptyCapture", "P", "a", "capture", "rightmostPoint", "kidsOfParent", "getKids", "kid", "isAncestorOf", "obj", "originMap", "up", "up2", "store", "O", "filterFn", "results", "jsName", "flagNodes", "flagProps", "combinedFlags", "prop", "dotAll", "ignoreCase", "mods", "els", "firstToConsider", "isLoneGLookaround", "isAlwaysZeroLength", "gNodesForGroup", "descendant", "kids", "type", "types", "pattern", "alts", "J", "generate", "minTargetEs2025", "recursionLimit", "hasCaseInsensitiveNode", "hasCaseSensitiveNode", "iStack", "traverse", "FlagModifierVisitor", "isIOn", "appliedGlobalFlags", "lastNode", "gen", "generator", "result", "isAnyGroup", "currentModI", "charHasCase", "getCasesOutsideCharClassRange", "number", "data", "escaped", "getCharEscape", "cases", "isLiteralHyphen", "createCharacter", "genClass", "negatedChildClasses", "createGroup", "groupFirstAlt", "newAlt", "createAlternative", "firstEl", "max", "escOpts", "minStr", "maxStr", "extraChars", "charsOutsideRange", "getCodePointRangesFromChars", "atomic", "currentFlags", "contents", "getGroupPrefix", "getQuantifierStr", "limit", "BaseEscapeChars", "CharClassEscapeChars", "CharClassEscapeCharsFlagV", "CharCodeEscapeMap", "casedRe", "firstOnly", "found", "caseOfChar", "num", "escDigit", "inCharClass", "useFlagV", "isDigitCharCode", "escapeChars", "chars", "codePoints", "values", "flagMods", "useFlagMods", "base", "EmulatedRegExp", "_EmulatedRegExp", "#captureMap", "#compiled", "#pattern", "#nameMap", "#strategy", "lazyCompile", "re", "createCaptureMap", "str", "rest", "useLastIndex", "pos", "match", "#execCore", "adjustMatchDetailsForOffset", "matchCopy", "indicesCopy", "mappedNums", "hidden", "transferTo", "to", "createNameMap", "offset", "input", "hasIndices", "indices", "arr", "groupIndices", "hiddenCaptures", "transfers", "captureMap", "from", "numCharClassesOpen", "numCaptures", "toRegExp", "d", "toRegExpDetails", "onigurumaAst", "parse", "regexPlusAst", "generated", "recursionResult", "possessiveResult", "possessive", "atomicResult", "details", "defaultJavaScriptRegexConstructor", "pattern", "options", "toRegExp", "createJavaScriptRegexEngine", "_options", "patterns", "JavaScriptScanner", "s", "lang", "css_default", "lang", "go_default", "lang", "javascript_default", "lang", "html_default", "javascript_default", "css_default", "lang", "json_default", "lang", "jsx_default", "lang", "markdown_default", "lang", "python_default", "lang", "shellscript_default", "lang", "sql_default", "lang", "tsx_default", "lang", "typescript_default", "lang", "yaml_default", "dark_plus_default", "light_plus_default", "SHIKI_LIGHT_THEME", "SHIKI_DARK_THEME", "LANGUAGE_ALIASES", "SUPPORTED_LANGUAGES", "normalizeCodeLanguage", "language", "raw", "normalized", "highlighterPromise", "highlightCodeBlockHtml", "code", "language", "normalizedLanguage", "normalizeCodeLanguage", "html", "getHighlighter", "SHIKI_LIGHT_THEME", "SHIKI_DARK_THEME", "extractCodeHtml", "renderPlainCodeLinesHtml", "line", "escapeHtml", "highlighterPromise", "createHighlighterCore", "light_plus_default", "dark_plus_default", "css_default", "go_default", "html_default", "javascript_default", "json_default", "jsx_default", "markdown_default", "python_default", "shellscript_default", "sql_default", "tsx_default", "typescript_default", "yaml_default", "createJavaScriptRegexEngine", "fallbackCode", "match", "TOOLBAR_GROUPS", "HEADING_MENU_ACTIONS", "MORE_MENU_ACTIONS", "SUPER_MARKDOWN_ISSUES_URL", "TOOLBAR_CODICON_ACTIONS", "TOOLBAR_CUSTOM_ICONS", "customSvg", "renderToolbarIcon", "action", "customIcon", "content", "vscode", "payloadElement", "templatePayload", "payloadText", "payload", "translations", "toolbarText", "codeCopyLabels", "codeToneLabels", "visualLabels", "mathRenderOptions", "sourceEditor", "mustElement", "visualEditor", "previewElement", "toolbarElement", "sidePanelElement", "sidePanelToggleElement", "sidePanelCollapseElement", "outlineCurrentElement", "outlineElement", "searchElement", "editorPanelElement", "previewPanelElement", "splitResizerElement", "initialRuntimeState", "readRuntimeState", "DEFAULT_SPLIT_RATIO", "SPLIT_KEYBOARD_STEP", "SPLIT_MIN_PANE_WIDTH", "currentMarkdown", "currentMode", "normalizeMode", "currentLayout", "normalizeLayout", "splitRatio", "normalizeSplitRatio", "previewState", "normalizePreviewState", "imageResources", "normalizeImageResources", "milkdownEditor", "milkdownReady", "milkdownReadyPromise", "visualImageObserver", "mermaidRuntimePromise", "mermaidRenderQueue", "applyingHostUpdate", "applyingMilkdownUpdate", "scrollSyncSuppressTarget", "editorScrollFrame", "scrollSyncReleaseTimer", "activeSourceSelection", "sidePanelOpen", "currentOutlineHeadings", "activeOutlineId", "hoverTooltipTimer", "hoverTooltipElement", "hoverTooltipTarget", "splitResizePointerId", "HOVER_TOOLTIP_TARGET_SELECTOR", "CODE_BLOCK_CLASSES", "pendingImageUploads", "boot", "renderToolbar", "renderPreview", "renderSidePanels", "bindEvents", "applySplitRatio", "applyLayout", "setScriptState", "post", "error", "setScriptError", "getErrorMessage", "id", "element", "type", "body", "debounce", "fn", "delay", "timer", "args", "syncToHost", "mode", "layout", "state", "saveRuntimeState", "update", "value", "clamp", "min", "max", "candidate", "item", "diag", "message", "parts", "label", "name", "fallback", "escapeHtml", "escapeAttribute", "closestElement", "target", "selector", "TOOLBAR_GROUPS", "group", "renderToolbarItem", "action", "toolbarMenu", "toolbarTitle", "toolbarIcon", "HEADING_MENU_ACTIONS", "MORE_MENU_ACTIONS", "toolbarButton", "title", "icon", "menuActions", "className", "toolbarMenuButton", "renderToolbarIcon", "heading", "rememberSourceSelection", "syncMilkdownFromMarkdown", "event", "handleSourceImagePaste", "handleSourceImageDragOver", "handleSourceImageDrop", "eventName", "menuToggle", "toggleToolbarMenu", "buttonElement", "closeToolbarMenus", "handleToolbarAction", "handleCodeBlockActionClick", "handleVisualImagePaste", "handleVisualImageDragOver", "handleVisualImageDrop", "toggleSidePanelFromEvent", "setSidePanelOpen", "revealActiveOutlineItem", "handleOutlineClick", "bindHoverTooltips", "bindSplitResizer", "handleHostMessage", "getHoverTooltipTarget", "scheduleHoverTooltip", "hideHoverTooltip", "text", "showHoverTooltip", "tooltip", "ensureHoverTooltip", "targetRect", "tooltipRect", "gap", "viewportPadding", "maxLeft", "left", "bottomTop", "top", "beginSplitResize", "handleSplitResizePointerMove", "endSplitResize", "setSplitRatio", "handleSplitResizeKeydown", "isSplitResizeAvailable", "updateSplitRatioFromClientX", "clientX", "bounds", "getSplitResizeBounds", "editorRect", "previewRect", "width", "nextRatio", "persist", "availableWidth", "clampSplitRatio", "editorSize", "previewSize", "percentage", "minimumRatio", "setMarkdown", "handleUploadImagesResult", "requestId", "pending", "normalizeUploadedMarkdownImages", "insertMarkdown", "markdownFromUploadedImages", "images", "image", "createImageNodeFromMarkdown", "markdown", "imageNode", "parsed", "parseUploadedImageMarkdown", "match", "uploadImageFiles", "files", "isImageFile", "createUploadRequestId", "payloadImages", "readImageFileData", "result", "resolve", "reject", "file", "getImageFilesFromTransfer", "dataTransfer", "seen", "addFile", "key", "uploadAndInsertSourceImages", "uploaded", "insertSourceBlockSnippet", "uploadAndInsertVisualImages", "preview", "nextImageResources", "resolveVisualImagesSoon", "runMermaid", "bindEditorScrollSync", "resolveVisualImages", "resources", "resource", "imageSourceKeys", "rawSource", "resolved", "resolveImageResource", "source", "candidates", "normalized", "stripHashAndQuery", "decoded", "decodeUriSafe", "componentDecoded", "decodeUriComponentSafe", "encoded", "withoutDot", "startVisualImageObserver", "mutations", "mutation", "node", "createCodeBlockCopyButton", "button", "createCodeBlockToneButton", "tone", "normalizedTone", "normalizeCodeBlockTone", "codeBlockToneLabel", "updateToneButtonTitle", "createCodeBlockNodeView", "view", "getPos", "currentNode", "highlightVersion", "mermaidVersion", "dom", "caption", "languageField", "language", "languageInput", "actions", "copyButton", "toneButton", "bindCodeBlockActionButton", "copyCodeFromButton", "cycleCodeBlockTone", "pre", "code", "highlightPre", "highlightCode", "codeFrame", "mermaidPreview", "mermaidSource", "updateLanguage", "nextNode", "rawLanguage", "getCodeBlockLanguage", "isMermaid", "isMermaidCodeBlock", "nextLanguage", "normalizeCodeLanguage", "displayLanguage", "toLanguageClassName", "updateHighlight", "version", "codeText", "codeLanguage", "highlightCodeBlockHtml", "html", "updateMermaidPreview", "resetMermaidElement", "queueMermaidElementRender", "openMermaidSource", "closeLanguageEditor", "commit", "updateNodeAttrs", "syncCurrentMarkdownFromMilkdownSoon", "stopCodeBlockActionEvent", "handler", "remarkMathPlugin", "$remark", "remarkMath", "remarkSafeInlineHtmlPlugin", "tree", "transformSafeInlineHtmlTree", "mathInlineSchema", "$nodeSchema", "mathBlockSchema", "safeHtmlInlineSchema", "tag", "normalizeSafeHtmlTag", "transformSafeInlineHtmlChildren", "children", "next", "index", "child", "getOpeningSafeHtmlTag", "closeIndex", "findClosingSafeHtmlTag", "isSafeInlineHtmlTag", "startIndex", "depth", "openPattern", "closePattern", "createMathInlineNodeView", "input", "setEditing", "editing", "getNodeTextAttribute", "commitInlineMath", "handleInlineMathKey", "renderKatexHtml", "createMathBlockNodeView", "updateTimer", "controls", "editButton", "doneButton", "showEditor", "hideEditor", "createFootnoteReferenceNodeView", "model", "resolveFootnoteReference", "createFootnoteDefinitionNodeView", "content", "createHtmlNodeView", "renderInertInlineHtml", "createSafeHtmlInlineNodeView", "nextTag", "createBlockquoteNodeView", "renderedBody", "renderAdmonitionBody", "paragraph", "admonition", "detectBlockquoteAdmonition", "attrs", "pos", "transaction", "registerVisualNodeViews", "views", "visualNodeViews", "ids", "nodeId", "nodes", "render", "mermaid", "loadMermaid", "markMermaidRenderError", "renderMermaidNode", "src", "script", "setMode", "applyMode", "notify", "ensureMilkdown", "Editor", "ctx", "rootCtx", "defaultValueCtx", "listenerCtx", "_ctx", "nodeViewCtx", "uploadConfig", "config", "schema", "commonmark", "gfm", "listener", "clipboard", "upload", "history", "trailing", "replaceAll", "SUPER_MARKDOWN_ISSUES_URL", "chooseImagesForInsert", "applySourceToolbarAction", "applyMilkdownToolbarAction", "callCommand", "wrapInHeadingCommand", "commands", "toggleStrongCommand", "toggleEmphasisCommand", "toggleStrikethroughCommand", "toggleInlineCodeCommand", "toggleLinkCommand", "insertHrCommand", "wrapInBlockquoteCommand", "wrapInBulletListCommand", "wrapInOrderedListCommand", "createCodeBlockCommand", "insertTableCommand", "surroundMilkdownSelection", "prefix", "suffix", "domSelection", "replaceMarkdownTextSelection", "editorViewCtx", "from", "to", "empty", "selected", "getMarkdown", "replaceRange", "insertMarkdownSnippetFromVisualSelection", "insertSourceSnippet", "snippet", "selectedIndex", "trimmed", "replaceSourceSelection", "wrappers", "snippets", "selection", "getSourceSelection", "insertion", "needsBlockPadding", "getBlockInsertionPrefix", "position", "before", "reader", "wrapper", "open", "menu", "toggle", "positionToolbarMenu", "rect", "menuWidth", "alignedLeft", "headings", "extractHeadings", "renderOutline", "inFence", "line", "baseSlug", "query", "filtered", "getOutlineId", "updateActiveOutlineFromScroll", "scrollVisualEditorToHeading", "previewTarget", "findPreviewElementForLine", "scrollElementIntoContainer", "scrollToLine", "setActiveOutlineId", "origin", "getFirstVisiblePreviewSourceLine", "getFirstVisibleVisualHeadingLine", "getFirstVisibleSourceLine", "active", "cssEscape", "safeLine", "clampSourceLine", "scrollSourceEditorToLine", "isSplitSyncMode", "scheduleScrollSync", "syncPreviewToSourceLine", "syncSourceToPreviewLine", "callback", "runSyncedScroll", "nextTop", "findVisualHeadingForLine", "headingIndex", "outlineHeading", "tagName", "container", "containerRect", "elements", "elementLine", "getPreviewSourceLine", "bestLine", "bestDistance", "distance", "visualRect", "bestIndex", "lineHeight", "getSourceLineHeight", "maxScrollTop", "style", "fontSize", "lines", "block", "nextTone", "nextCodeBlockTone", "renderedBlock", "getCodeBlockText", "copySource", "clone"] } diff --git a/package.json b/package.json index 804269a..a5d74a9 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,14 @@ "onCommand:superMarkdown.openSyntaxGuide", "onCommand:superMarkdown.copyTableAsJson", "onCommand:superMarkdown.copyJsonAsTable", + "onCommand:superMarkdown.markdownLibrary.refresh", + "onCommand:superMarkdown.markdownLibrary.openEditor", + "onCommand:superMarkdown.markdownLibrary.openPreview", + "onCommand:superMarkdown.markdownLibrary.openSplitEditMode", + "onCommand:superMarkdown.markdownLibrary.openWysiwygEditor", + "onCommand:superMarkdown.markdownLibrary.openNativeTextEditor", + "onCommand:superMarkdown.markdownLibrary.organizeMarkdown", + "onCommand:superMarkdown.markdownLibrary.export", "onCustomEditor:superMarkdown.editor", "onCommand:superMarkdown.en.openEditor", "onCommand:superMarkdown.zhCN.openEditor", @@ -78,7 +86,9 @@ "onCommand:superMarkdown.en.refreshPreview", "onCommand:superMarkdown.zhCN.refreshPreview", "onCommand:superMarkdown.en.organizeMarkdown", - "onCommand:superMarkdown.zhCN.organizeMarkdown" + "onCommand:superMarkdown.zhCN.organizeMarkdown", + "onView:superMarkdown.markdownLibrary", + "onView:superMarkdown.workspaceSummary" ], "main": "./out/extension.js", "files": [ @@ -143,6 +153,46 @@ "title": "%superMarkdown.command.refreshPreview%", "icon": "$(refresh)" }, + { + "command": "superMarkdown.markdownLibrary.refresh", + "title": "%superMarkdown.command.markdownLibrary.refresh%", + "icon": "$(refresh)" + }, + { + "command": "superMarkdown.markdownLibrary.openEditor", + "title": "%superMarkdown.command.openEditor%", + "icon": "$(edit)" + }, + { + "command": "superMarkdown.markdownLibrary.openPreview", + "title": "%superMarkdown.command.previewMode%", + "icon": "$(markdown)" + }, + { + "command": "superMarkdown.markdownLibrary.openSplitEditMode", + "title": "%superMarkdown.command.splitEditMode%", + "icon": "$(split-horizontal)" + }, + { + "command": "superMarkdown.markdownLibrary.openWysiwygEditor", + "title": "%superMarkdown.command.openWysiwygEditor%", + "icon": "$(notebook-edit)" + }, + { + "command": "superMarkdown.markdownLibrary.openNativeTextEditor", + "title": "%superMarkdown.command.openNativeTextEditor%", + "icon": "$(file-code)" + }, + { + "command": "superMarkdown.markdownLibrary.organizeMarkdown", + "title": "%superMarkdown.command.organizeMarkdown%", + "icon": "$(wand)" + }, + { + "command": "superMarkdown.markdownLibrary.export", + "title": "%superMarkdown.command.export.choose%", + "icon": "$(export)" + }, { "command": "superMarkdown.organizeMarkdown", "title": "%superMarkdown.command.organizeMarkdown%", @@ -310,6 +360,28 @@ "priority": "default" } ], + "viewsContainers": { + "activitybar": [ + { + "id": "superMarkdown", + "title": "%superMarkdown.views.container%", + "icon": "images/activity-bar-fold-m.svg" + } + ] + }, + "views": { + "superMarkdown": [ + { + "id": "superMarkdown.markdownLibrary", + "name": "%superMarkdown.views.markdownLibrary%" + }, + { + "id": "superMarkdown.workspaceSummary", + "name": "%superMarkdown.views.workspaceSummary%", + "type": "webview" + } + ] + }, "keybindings": [ { "command": "superMarkdown.openSplitEditMode", @@ -441,6 +513,55 @@ "group": "navigation@23" } ], + "view/title": [ + { + "command": "superMarkdown.markdownLibrary.refresh", + "when": "view == superMarkdown.markdownLibrary", + "group": "navigation" + }, + { + "command": "superMarkdown.markdownLibrary.refresh", + "when": "view == superMarkdown.workspaceSummary", + "group": "navigation" + } + ], + "view/item/context": [ + { + "command": "superMarkdown.markdownLibrary.openEditor", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "navigation@10" + }, + { + "command": "superMarkdown.markdownLibrary.openPreview", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "navigation@20" + }, + { + "command": "superMarkdown.markdownLibrary.openSplitEditMode", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "navigation@21" + }, + { + "command": "superMarkdown.markdownLibrary.openWysiwygEditor", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "navigation@22" + }, + { + "command": "superMarkdown.markdownLibrary.openNativeTextEditor", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "navigation@30" + }, + { + "command": "superMarkdown.markdownLibrary.organizeMarkdown", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "2_document@10" + }, + { + "command": "superMarkdown.markdownLibrary.export", + "when": "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile", + "group": "2_document@20" + } + ], "commandPalette": [ { "command": "superMarkdown.openEditor", @@ -478,6 +599,34 @@ "command": "superMarkdown.organizeMarkdown", "when": "false" }, + { + "command": "superMarkdown.markdownLibrary.openEditor", + "when": "false" + }, + { + "command": "superMarkdown.markdownLibrary.openPreview", + "when": "false" + }, + { + "command": "superMarkdown.markdownLibrary.openSplitEditMode", + "when": "false" + }, + { + "command": "superMarkdown.markdownLibrary.openWysiwygEditor", + "when": "false" + }, + { + "command": "superMarkdown.markdownLibrary.openNativeTextEditor", + "when": "false" + }, + { + "command": "superMarkdown.markdownLibrary.organizeMarkdown", + "when": "false" + }, + { + "command": "superMarkdown.markdownLibrary.export", + "when": "false" + }, { "command": "superMarkdown.en.openEditor", "when": "!superMarkdown.runtimeLanguageZhCN" diff --git a/package.nls.json b/package.nls.json index 1ead838..8775c26 100644 --- a/package.nls.json +++ b/package.nls.json @@ -7,6 +7,7 @@ "superMarkdown.command.switchDisplayLanguage": "Super Markdown: Switch Display Language", "superMarkdown.command.switchBackgroundTheme": "Super Markdown: Switch Reading Theme", "superMarkdown.command.refreshPreview": "Super Markdown: Refresh Preview", + "superMarkdown.command.markdownLibrary.refresh": "Super Markdown: Refresh Markdown Library", "superMarkdown.command.organizeMarkdown": "Super Markdown: Organize Markdown", "superMarkdown.command.export.settings": "Super Markdown: Export (Settings)", "superMarkdown.command.export.html": "Super Markdown: Export HTML", @@ -19,6 +20,10 @@ "superMarkdown.command.copyTableAsJson": "Super Markdown: Copy Markdown Table as JSON", "superMarkdown.command.copyJsonAsTable": "Super Markdown: Copy JSON as Markdown Table", "superMarkdown.submenu.editorTitle": "Super Markdown", + "superMarkdown.views.container": "Super Markdown", + "superMarkdown.views.imageStorage": "Image Storage", + "superMarkdown.views.markdownLibrary": "Document Library", + "superMarkdown.views.workspaceSummary": "Workspace Summary", "superMarkdown.configuration.preview.theme.description": "Preview reading theme.", "superMarkdown.configuration.preview.theme.system": "Follow the current VS Code color theme.", "superMarkdown.configuration.preview.theme.light": "Use a neutral light reading theme.", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 54d1aa8..6eeddd6 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -7,6 +7,7 @@ "superMarkdown.command.switchDisplayLanguage": "Super Markdown:切换界面语言", "superMarkdown.command.switchBackgroundTheme": "Super Markdown:切换阅读主题", "superMarkdown.command.refreshPreview": "Super Markdown:刷新预览", + "superMarkdown.command.markdownLibrary.refresh": "Super Markdown:刷新 Markdown 文档库", "superMarkdown.command.organizeMarkdown": "Super Markdown:整理 Markdown", "superMarkdown.command.export.settings": "Super Markdown:按设置导出", "superMarkdown.command.export.html": "Super Markdown:导出 HTML", @@ -19,6 +20,10 @@ "superMarkdown.command.copyTableAsJson": "Super Markdown:复制 Markdown 表格为 JSON", "superMarkdown.command.copyJsonAsTable": "Super Markdown:复制 JSON 为 Markdown 表格", "superMarkdown.submenu.editorTitle": "Super Markdown", + "superMarkdown.views.container": "Super Markdown", + "superMarkdown.views.imageStorage": "图片保存", + "superMarkdown.views.markdownLibrary": "文档库", + "superMarkdown.views.workspaceSummary": "工作区摘要", "superMarkdown.configuration.preview.theme.description": "预览阅读主题。", "superMarkdown.configuration.preview.theme.system": "跟随当前 VS Code 配色主题。", "superMarkdown.configuration.preview.theme.light": "使用中性的浅色阅读主题。", diff --git a/src/extension.ts b/src/extension.ts index b197806..4df41ac 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -22,6 +22,16 @@ import { fileExistsNearDocument, resolveMarkdownDocument, } from "./preview/document"; +import { + MarkdownLibraryTreeProvider, + SUPER_MARKDOWN_MARKDOWN_LIBRARY_VIEW_ID +} from "./sidebar/MarkdownLibraryTreeProvider"; +import { MarkdownWorkspaceIndex } from "./sidebar/MarkdownWorkspaceIndex"; +import { isMarkdownWorkspacePath } from "./sidebar/markdownWorkspace"; +import { + SUPER_MARKDOWN_WORKSPACE_SUMMARY_VIEW_ID, + WorkspaceSummaryViewProvider +} from "./sidebar/WorkspaceSummaryViewProvider"; import { SUPER_MARKDOWN_EDITOR_VIEW_TYPE, SUPER_MARKDOWN_TOOLBAR_COMMAND, @@ -34,13 +44,31 @@ export function activate(context: vscode.ExtensionContext): void { const organizedProvider = new OrganizedDocumentProvider(); const organizeOutput = vscode.window.createOutputChannel("Super Markdown"); const superMarkdownEditorProvider = new SuperMarkdownWysiwygEditorProvider(context); + const markdownWorkspaceIndex = new MarkdownWorkspaceIndex(); + const markdownLibraryTreeProvider = new MarkdownLibraryTreeProvider(markdownWorkspaceIndex); + const workspaceSummaryViewProvider = new WorkspaceSummaryViewProvider(markdownWorkspaceIndex); + const markdownLibraryTreeView = vscode.window.createTreeView(SUPER_MARKDOWN_MARKDOWN_LIBRARY_VIEW_ID, { + treeDataProvider: markdownLibraryTreeProvider, + showCollapseAll: true + }); + const updateMarkdownLibraryView = () => { + markdownLibraryTreeView.title = t("sidebar.markdownLibrary.title"); + markdownLibraryTreeView.message = markdownLibraryTreeProvider.getEmptyMessage(); + }; void migratePreviewThemeConfiguration(); void updateDisplayLanguageContexts(); + updateMarkdownLibraryView(); + void markdownWorkspaceIndex.refresh().then(updateMarkdownLibraryView); context.subscriptions.push( displayLanguageChanged, organizedProvider, organizeOutput, + markdownWorkspaceIndex, + markdownLibraryTreeProvider, + workspaceSummaryViewProvider, + markdownLibraryTreeView, + markdownWorkspaceIndex.onDidChange(updateMarkdownLibraryView), ...registerLocalizedCommandAliases(), vscode.languages.registerDocumentFormattingEditProvider("markdown", { provideDocumentFormattingEdits(document) { @@ -61,6 +89,7 @@ export function activate(context: vscode.ExtensionContext): void { } } ), + vscode.window.registerWebviewViewProvider(SUPER_MARKDOWN_WORKSPACE_SUMMARY_VIEW_ID, workspaceSummaryViewProvider), vscode.commands.registerCommand("superMarkdown.openPreview", async (resource?: vscode.Uri) => { const document = await requireMarkdownDocument(resource); if (document) { @@ -124,29 +153,74 @@ export function activate(context: vscode.ExtensionContext): void { }); } }), - vscode.commands.registerCommand("superMarkdown.organizeMarkdown", async () => { - await organizeActiveMarkdownDocument(organizedProvider, organizeOutput); + vscode.commands.registerCommand("superMarkdown.organizeMarkdown", async (resource?: vscode.Uri) => { + await organizeActiveMarkdownDocument(organizedProvider, organizeOutput, resource); + }), + vscode.commands.registerCommand("superMarkdown.export.settings", async (resource?: vscode.Uri) => { + await exportActiveMarkdown(context, "settings", resource); + }), + vscode.commands.registerCommand("superMarkdown.export.html", async (resource?: vscode.Uri) => { + await exportActiveMarkdown(context, "html", resource); + }), + vscode.commands.registerCommand("superMarkdown.export.pdf", async (resource?: vscode.Uri) => { + await exportActiveMarkdown(context, "pdf", resource); + }), + vscode.commands.registerCommand("superMarkdown.export.png", async (resource?: vscode.Uri) => { + await exportActiveMarkdown(context, "png", resource); + }), + vscode.commands.registerCommand("superMarkdown.export.jpeg", async (resource?: vscode.Uri) => { + await exportActiveMarkdown(context, "jpeg", resource); }), - vscode.commands.registerCommand("superMarkdown.export.settings", async () => { - await exportActiveMarkdown(context, "settings"); + vscode.commands.registerCommand("superMarkdown.export.all", async (resource?: vscode.Uri) => { + await exportActiveMarkdown(context, "all", resource); }), - vscode.commands.registerCommand("superMarkdown.export.html", async () => { - await exportActiveMarkdown(context, "html"); + vscode.commands.registerCommand("superMarkdown.export.choose", async (resource?: vscode.Uri) => { + await chooseExportFormat(context, resource); }), - vscode.commands.registerCommand("superMarkdown.export.pdf", async () => { - await exportActiveMarkdown(context, "pdf"); + vscode.commands.registerCommand("superMarkdown.markdownLibrary.refresh", async () => { + await markdownWorkspaceIndex.refresh(); }), - vscode.commands.registerCommand("superMarkdown.export.png", async () => { - await exportActiveMarkdown(context, "png"); + vscode.commands.registerCommand("superMarkdown.markdownLibrary.openEditor", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await vscode.commands.executeCommand("superMarkdown.openEditor", uri); + } + }), + vscode.commands.registerCommand("superMarkdown.markdownLibrary.openPreview", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await vscode.commands.executeCommand("superMarkdown.openPreview", uri); + } + }), + vscode.commands.registerCommand("superMarkdown.markdownLibrary.openSplitEditMode", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await vscode.commands.executeCommand("superMarkdown.openSplitEditMode", uri); + } + }), + vscode.commands.registerCommand("superMarkdown.markdownLibrary.openWysiwygEditor", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await vscode.commands.executeCommand("superMarkdown.openWysiwygEditor", uri); + } }), - vscode.commands.registerCommand("superMarkdown.export.jpeg", async () => { - await exportActiveMarkdown(context, "jpeg"); + vscode.commands.registerCommand("superMarkdown.markdownLibrary.openNativeTextEditor", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await vscode.commands.executeCommand("superMarkdown.openNativeTextEditor", uri); + } }), - vscode.commands.registerCommand("superMarkdown.export.all", async () => { - await exportActiveMarkdown(context, "all"); + vscode.commands.registerCommand("superMarkdown.markdownLibrary.organizeMarkdown", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await vscode.commands.executeCommand("superMarkdown.organizeMarkdown", uri); + } }), - vscode.commands.registerCommand("superMarkdown.export.choose", async () => { - await chooseExportFormat(context); + vscode.commands.registerCommand("superMarkdown.markdownLibrary.export", async (node?: unknown) => { + const uri = resolveMarkdownLibraryUri(node); + if (uri) { + await chooseExportFormat(context, uri); + } }), vscode.commands.registerCommand("superMarkdown.openSyntaxGuide", async () => { await openSyntaxGuide(context); @@ -161,8 +235,17 @@ export function activate(context: vscode.ExtensionContext): void { if (event.affectsConfiguration("superMarkdown.displayLanguage")) { void updateDisplayLanguageContexts(); displayLanguageChanged.fire(); + markdownLibraryTreeProvider.refresh(); + updateMarkdownLibraryView(); } + if (event.affectsConfiguration("superMarkdown.toc.levels")) { + void markdownWorkspaceIndex.refresh(); + } + }), + vscode.workspace.onDidChangeWorkspaceFolders(() => { + void markdownWorkspaceIndex.refresh(); }), + ...createMarkdownWorkspaceWatchers(markdownWorkspaceIndex), vscode.workspace.onWillSaveTextDocument((event) => { const settings = getPreviewSettings(); if (!settings.updateTocOnSave || event.document.languageId !== "markdown") { @@ -176,6 +259,9 @@ export function activate(context: vscode.ExtensionContext): void { }), vscode.workspace.onDidSaveTextDocument((document) => { void exportOnSave(context, document); + if (document.uri.scheme === "file" && isMarkdownWorkspacePath(document.uri.fsPath)) { + void markdownWorkspaceIndex.refreshFile(document.uri); + } }) ); } @@ -184,11 +270,46 @@ export function deactivate(): void { // VS Code disposes registered subscriptions for this extension. } +function createMarkdownWorkspaceWatchers(index: MarkdownWorkspaceIndex): vscode.Disposable[] { + return [".md", ".markdown", ".mdown", ".mkdn"].map((extension) => { + const watcher = vscode.workspace.createFileSystemWatcher(`**/*${extension}`); + watcher.onDidCreate((uri) => { + void index.refreshFile(uri); + }); + watcher.onDidChange((uri) => { + void index.refreshFile(uri); + }); + watcher.onDidDelete((uri) => { + index.removeFile(uri); + }); + return watcher; + }); +} + +function resolveMarkdownLibraryUri(node: unknown): vscode.Uri | undefined { + if (node instanceof vscode.Uri) { + return node; + } + + if (typeof node !== "object" || node === null) { + return undefined; + } + + const maybeFile = "file" in node ? (node as { file?: { uriString?: unknown } }).file : undefined; + if (maybeFile && typeof maybeFile.uriString === "string") { + return vscode.Uri.parse(maybeFile.uriString); + } + + const maybeResourceUri = "resourceUri" in node ? (node as { resourceUri?: unknown }).resourceUri : undefined; + return maybeResourceUri instanceof vscode.Uri ? maybeResourceUri : undefined; +} + async function organizeActiveMarkdownDocument( provider: OrganizedDocumentProvider, - output: vscode.OutputChannel + output: vscode.OutputChannel, + resource?: vscode.Uri ): Promise<void> { - const document = await requireMarkdownDocument(); + const document = await requireMarkdownDocument(resource); if (!document) { return; } @@ -394,8 +515,8 @@ function registerLocalizedCommandAliases(): vscode.Disposable[] { ); } -async function exportActiveMarkdown(context: vscode.ExtensionContext, type: ExportCommandType): Promise<void> { - const document = await requireMarkdownDocument(); +async function exportActiveMarkdown(context: vscode.ExtensionContext, type: ExportCommandType, resource?: vscode.Uri): Promise<void> { + const document = await requireMarkdownDocument(resource); if (!document) { return; } @@ -413,7 +534,7 @@ async function exportActiveMarkdown(context: vscode.ExtensionContext, type: Expo } } -async function chooseExportFormat(context: vscode.ExtensionContext): Promise<void> { +async function chooseExportFormat(context: vscode.ExtensionContext, resource?: vscode.Uri): Promise<void> { const items: Array<vscode.QuickPickItem & { type: ExportCommandType }> = [ { label: t("export.settings.label"), @@ -451,7 +572,7 @@ async function chooseExportFormat(context: vscode.ExtensionContext): Promise<voi placeHolder: t("export.quickPickPlaceholder") }); if (selected) { - await exportActiveMarkdown(context, selected.type); + await exportActiveMarkdown(context, selected.type, resource); } } diff --git a/src/i18n.ts b/src/i18n.ts index 6c9e0d2..01d7be6 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -60,6 +60,10 @@ type TranslationKey = | "webview.showOutline" | "webview.hideOutline" | "webview.resizeOutline" + | "webview.resizeSplit" + | "webview.revealCurrentHeading" + | "webview.collapseOutline" + | "webview.footnote" | "webview.copy" | "webview.copied" | "webview.copyCode" @@ -68,6 +72,43 @@ type TranslationKey = | "webview.codeThemeLight" | "webview.codeThemeDark" | "webview.save" + | "sidebar.imageStorage.title" + | "sidebar.imageStorage.directory" + | "sidebar.imageStorage.saving" + | "sidebar.imageStorage.saved" + | "sidebar.imageStorage.failed" + | "sidebar.markdownLibrary.title" + | "sidebar.markdownLibrary.noWorkspace" + | "sidebar.markdownLibrary.noFiles" + | "sidebar.markdownLibrary.open" + | "sidebar.markdownLibrary.ok" + | "sidebar.markdownLibrary.headings" + | "sidebar.markdownLibrary.issues" + | "sidebar.markdownLibrary.tasks" + | "sidebar.markdownLibrary.images" + | "sidebar.markdownLibrary.links" + | "sidebar.markdownLibrary.moreIssues" + | "sidebar.workspaceSummary.title" + | "sidebar.workspaceSummary.files" + | "sidebar.workspaceSummary.issues" + | "sidebar.workspaceSummary.missingImages" + | "sidebar.workspaceSummary.missingLinks" + | "sidebar.workspaceSummary.tasks" + | "sidebar.workspaceSummary.staleToc" + | "sidebar.workspaceSummary.images" + | "sidebar.workspaceSummary.links" + | "sidebar.workspaceSummary.actions" + | "sidebar.workspaceSummary.refresh" + | "sidebar.workspaceSummary.syntaxGuide" + | "sidebar.workspaceSummary.theme" + | "sidebar.workspaceSummary.assets" + | "sidebar.workspaceSummary.directory" + | "sidebar.workspaceSummary.noWorkspace" + | "sidebar.workspaceSummary.refreshing" + | "sidebar.workspaceSummary.refreshed" + | "sidebar.workspaceSummary.saving" + | "sidebar.workspaceSummary.saved" + | "sidebar.workspaceSummary.failed" | "webview.copyMarkdown" | "webview.copyHtml" | "export.quickPickTitle" @@ -180,6 +221,10 @@ const EN: Record<TranslationKey, string> = { "webview.showOutline": "Show outline", "webview.hideOutline": "Hide outline", "webview.resizeOutline": "Resize outline", + "webview.resizeSplit": "Resize editor and preview panes", + "webview.revealCurrentHeading": "Reveal current heading", + "webview.collapseOutline": "Collapse outline", + "webview.footnote": "Footnote", "webview.copy": "Copy", "webview.copied": "Copied", "webview.copyCode": "Copy code", @@ -188,6 +233,43 @@ const EN: Record<TranslationKey, string> = { "webview.codeThemeLight": "Light", "webview.codeThemeDark": "Dark", "webview.save": "Save", + "sidebar.imageStorage.title": "Image storage", + "sidebar.imageStorage.directory": "Directory", + "sidebar.imageStorage.saving": "Saving...", + "sidebar.imageStorage.saved": "Saved", + "sidebar.imageStorage.failed": "Save failed", + "sidebar.markdownLibrary.title": "Document Library", + "sidebar.markdownLibrary.noWorkspace": "Open a workspace folder to build the Markdown library.", + "sidebar.markdownLibrary.noFiles": "No Markdown files found in this workspace.", + "sidebar.markdownLibrary.open": "Open Markdown document", + "sidebar.markdownLibrary.ok": "OK", + "sidebar.markdownLibrary.headings": "{0} headings", + "sidebar.markdownLibrary.issues": "{0} issues", + "sidebar.markdownLibrary.tasks": "{0} tasks", + "sidebar.markdownLibrary.images": "{0} images", + "sidebar.markdownLibrary.links": "{0} links", + "sidebar.markdownLibrary.moreIssues": "{0} more issues", + "sidebar.workspaceSummary.title": "Workspace Summary", + "sidebar.workspaceSummary.files": "Files", + "sidebar.workspaceSummary.issues": "Issues", + "sidebar.workspaceSummary.missingImages": "Missing images", + "sidebar.workspaceSummary.missingLinks": "Missing links", + "sidebar.workspaceSummary.tasks": "Tasks", + "sidebar.workspaceSummary.staleToc": "Stale TOC", + "sidebar.workspaceSummary.images": "Images", + "sidebar.workspaceSummary.links": "Links", + "sidebar.workspaceSummary.actions": "Actions", + "sidebar.workspaceSummary.refresh": "Refresh index", + "sidebar.workspaceSummary.syntaxGuide": "Syntax guide", + "sidebar.workspaceSummary.theme": "Reading theme", + "sidebar.workspaceSummary.assets": "Assets", + "sidebar.workspaceSummary.directory": "Image directory", + "sidebar.workspaceSummary.noWorkspace": "Open a workspace folder first.", + "sidebar.workspaceSummary.refreshing": "Refreshing...", + "sidebar.workspaceSummary.refreshed": "Markdown library refreshed.", + "sidebar.workspaceSummary.saving": "Saving...", + "sidebar.workspaceSummary.saved": "Saved", + "sidebar.workspaceSummary.failed": "Save failed", "webview.copyMarkdown": "Copy Markdown", "webview.copyHtml": "Copy HTML", "export.quickPickTitle": "Super Markdown Export", @@ -301,6 +383,10 @@ const ZH_CN: Record<TranslationKey, string> = { "webview.showOutline": "显示大纲", "webview.hideOutline": "隐藏大纲", "webview.resizeOutline": "调整大纲高度", + "webview.resizeSplit": "调整编辑区和预览区宽度", + "webview.revealCurrentHeading": "定位当前标题", + "webview.collapseOutline": "收起目录", + "webview.footnote": "脚注", "webview.copy": "复制", "webview.copied": "已复制", "webview.copyCode": "复制代码", @@ -309,6 +395,43 @@ const ZH_CN: Record<TranslationKey, string> = { "webview.codeThemeLight": "浅色", "webview.codeThemeDark": "深色", "webview.save": "保存", + "sidebar.imageStorage.title": "图片保存", + "sidebar.imageStorage.directory": "保存目录", + "sidebar.imageStorage.saving": "保存中...", + "sidebar.imageStorage.saved": "已保存", + "sidebar.imageStorage.failed": "保存失败", + "sidebar.markdownLibrary.title": "文档库", + "sidebar.markdownLibrary.noWorkspace": "打开工作区文件夹后即可建立 Markdown 文档库。", + "sidebar.markdownLibrary.noFiles": "当前工作区没有找到 Markdown 文件。", + "sidebar.markdownLibrary.open": "打开 Markdown 文档", + "sidebar.markdownLibrary.ok": "正常", + "sidebar.markdownLibrary.headings": "{0} 个标题", + "sidebar.markdownLibrary.issues": "{0} 个问题", + "sidebar.markdownLibrary.tasks": "{0} 个任务", + "sidebar.markdownLibrary.images": "{0} 张图片", + "sidebar.markdownLibrary.links": "{0} 个链接", + "sidebar.markdownLibrary.moreIssues": "还有 {0} 个问题", + "sidebar.workspaceSummary.title": "工作区摘要", + "sidebar.workspaceSummary.files": "文件", + "sidebar.workspaceSummary.issues": "问题", + "sidebar.workspaceSummary.missingImages": "缺失图片", + "sidebar.workspaceSummary.missingLinks": "缺失链接", + "sidebar.workspaceSummary.tasks": "未完成任务", + "sidebar.workspaceSummary.staleToc": "过期目录", + "sidebar.workspaceSummary.images": "图片", + "sidebar.workspaceSummary.links": "链接", + "sidebar.workspaceSummary.actions": "操作", + "sidebar.workspaceSummary.refresh": "刷新索引", + "sidebar.workspaceSummary.syntaxGuide": "语法速查", + "sidebar.workspaceSummary.theme": "阅读主题", + "sidebar.workspaceSummary.assets": "资源", + "sidebar.workspaceSummary.directory": "图片目录", + "sidebar.workspaceSummary.noWorkspace": "请先打开一个工作区文件夹。", + "sidebar.workspaceSummary.refreshing": "刷新中...", + "sidebar.workspaceSummary.refreshed": "Markdown 文档库已刷新。", + "sidebar.workspaceSummary.saving": "保存中...", + "sidebar.workspaceSummary.saved": "已保存", + "sidebar.workspaceSummary.failed": "保存失败", "webview.copyMarkdown": "复制 Markdown", "webview.copyHtml": "复制 HTML", "export.quickPickTitle": "Super Markdown 导出", @@ -498,7 +621,9 @@ export function getWebviewTranslations(): Record<string, string> { codeThemeDark: t("webview.codeThemeDark"), showOutline: t("webview.showOutline"), hideOutline: t("webview.hideOutline"), - resizeOutline: t("webview.resizeOutline") + resizeOutline: t("webview.resizeOutline"), + revealCurrentHeading: t("webview.revealCurrentHeading"), + collapseOutline: t("webview.collapseOutline") }; } diff --git a/src/markdown/codeCopy.ts b/src/markdown/codeCopy.ts index 35aa968..eb01ae0 100644 --- a/src/markdown/codeCopy.ts +++ b/src/markdown/codeCopy.ts @@ -16,11 +16,11 @@ export interface CodeActionsOptions { export function renderCodeCopyButton(labels: CodeCopyLabels, copyText?: string): string { const copyTextAttribute = copyText === undefined ? "" : ` data-copy-text="${escapeAttribute(copyText)}"`; - return `<button type="button" class="${CODE_BLOCK_CLASSES.copyButton}" data-copy-label="${escapeAttribute(labels.copyLabel)}" data-copied-label="${escapeAttribute(labels.copiedLabel)}"${copyTextAttribute}>${escapeHtml(labels.copyLabel)}</button>`; + return `<button type="button" class="${CODE_BLOCK_CLASSES.copyButton}" data-copy-label="${escapeAttribute(labels.copyLabel)}" data-copied-label="${escapeAttribute(labels.copiedLabel)}" data-hover-tooltip="${escapeAttribute(labels.copyLabel)}" aria-label="${escapeAttribute(labels.copyLabel)}"${copyTextAttribute}>${escapeHtml(labels.copyLabel)}</button>`; } export function renderBlockToneToggleButton(labels: BlockToneLabels): string { - return `<button type="button" class="${CODE_BLOCK_CLASSES.toneButton}" data-block-tone="auto" data-tone-label="${escapeAttribute(labels.toneLabel)}" data-tone-auto-label="${escapeAttribute(labels.autoLabel)}" data-tone-light-label="${escapeAttribute(labels.lightLabel)}" data-tone-dark-label="${escapeAttribute(labels.darkLabel)}" title="${escapeAttribute(labels.toneLabel)}" aria-label="${escapeAttribute(labels.toneLabel)}">${escapeHtml(labels.autoLabel)}</button>`; + return `<button type="button" class="${CODE_BLOCK_CLASSES.toneButton}" data-block-tone="auto" data-tone-label="${escapeAttribute(labels.toneLabel)}" data-tone-auto-label="${escapeAttribute(labels.autoLabel)}" data-tone-light-label="${escapeAttribute(labels.lightLabel)}" data-tone-dark-label="${escapeAttribute(labels.darkLabel)}" data-hover-tooltip="${escapeAttribute(labels.toneLabel)}" aria-label="${escapeAttribute(labels.toneLabel)}">${escapeHtml(labels.autoLabel)}</button>`; } export function renderCodeActions(options: CodeActionsOptions): string { @@ -47,7 +47,7 @@ function setRenderBlockTone(block, button, tone) { })[tone] : button.getAttribute("data-tone-auto-label"); button.textContent = label || tone; const title = button.getAttribute("data-tone-label") || "Colors"; - button.setAttribute("title", title + ": " + button.textContent); + button.setAttribute("data-hover-tooltip", title + ": " + button.textContent); button.setAttribute("aria-label", title + ": " + button.textContent); } document.addEventListener("click", async function (event) { diff --git a/src/sidebar/ImageStorageViewProvider.ts b/src/sidebar/ImageStorageViewProvider.ts new file mode 100644 index 0000000..02578f6 --- /dev/null +++ b/src/sidebar/ImageStorageViewProvider.ts @@ -0,0 +1,282 @@ +import * as vscode from "vscode"; +import { getWysiwygSettings } from "../config"; +import { t } from "../i18n"; +import { escapeAttribute, escapeHtml, escapeJsonForScript } from "../utils/html"; + +export const SUPER_MARKDOWN_IMAGE_STORAGE_VIEW_ID = "superMarkdown.imageStorage"; + +type ImageStorageMessage = + | { type: "ready" } + | { type: "saveImageDirectory"; value?: unknown }; + +export class ImageStorageViewProvider implements vscode.WebviewViewProvider, vscode.Disposable { + private view?: vscode.WebviewView; + private readonly disposables: vscode.Disposable[] = []; + private readonly viewDisposables: vscode.Disposable[] = []; + + constructor() { + this.disposables.push( + vscode.workspace.onDidChangeConfiguration((event) => { + if (event.affectsConfiguration("superMarkdown.displayLanguage")) { + this.refresh(); + return; + } + if (event.affectsConfiguration("superMarkdown.wysiwyg.imageDirectory")) { + this.postState(); + } + }) + ); + } + + resolveWebviewView(webviewView: vscode.WebviewView): void { + this.view = webviewView; + this.viewDisposables.splice(0).forEach((disposable) => disposable.dispose()); + webviewView.webview.options = { enableScripts: true }; + webviewView.webview.html = this.render(webviewView.webview); + this.viewDisposables.push( + webviewView.webview.onDidReceiveMessage((message: ImageStorageMessage) => { + if (message.type === "ready") { + this.postState(); + return; + } + if (message.type === "saveImageDirectory") { + void this.saveImageDirectory(message.value); + } + }) + ); + } + + dispose(): void { + this.disposables.splice(0).forEach((disposable) => disposable.dispose()); + this.viewDisposables.splice(0).forEach((disposable) => disposable.dispose()); + } + + private refresh(): void { + if (this.view) { + this.view.webview.html = this.render(this.view.webview); + } + } + + private postState(status?: string, error?: string): void { + void this.view?.webview.postMessage({ + type: "imageDirectoryState", + value: this.getImageDirectory(), + status, + error + }); + } + + private async saveImageDirectory(rawValue: unknown): Promise<void> { + const value = typeof rawValue === "string" ? normalizeImageDirectory(rawValue) : "assets"; + try { + const target = vscode.workspace.workspaceFolders?.length + ? vscode.ConfigurationTarget.Workspace + : vscode.ConfigurationTarget.Global; + await vscode.workspace.getConfiguration("superMarkdown").update("wysiwyg.imageDirectory", value, target); + this.postState(t("sidebar.imageStorage.saved")); + } catch (error) { + this.postState(undefined, `${t("sidebar.imageStorage.failed")}: ${formatError(error)}`); + } + } + + private getImageDirectory(): string { + return normalizeImageDirectory(getWysiwygSettings().imageDirectory); + } + + private render(webview: vscode.Webview): string { + const nonce = createNonce(); + const payload = escapeJsonForScript(JSON.stringify({ + value: this.getImageDirectory(), + labels: { + title: t("sidebar.imageStorage.title"), + directory: t("sidebar.imageStorage.directory"), + placeholder: "assets", + save: t("webview.save"), + saving: t("sidebar.imageStorage.saving") + } + })); + + return `<!doctype html> +<html lang="${escapeAttribute(vscode.env.language || "en")}"> +<head> + <meta charset="utf-8"> + <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src ${webview.cspSource} data:; style-src ${webview.cspSource} 'unsafe-inline'; script-src 'nonce-${nonce}';"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>${escapeHtml(t("sidebar.imageStorage.title"))} + + + +
+

+ +
+ + +
+
+
+ + + +`; + } +} + +function normalizeImageDirectory(value: string): string { + return value.trim() || "assets"; +} + +function formatError(error: unknown): string { + if (error instanceof Error) { + return error.message; + } + return String(error || "Unknown error"); +} + +function createNonce(): string { + const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + let nonce = ""; + for (let index = 0; index < 32; index += 1) { + nonce += alphabet.charAt(Math.floor(Math.random() * alphabet.length)); + } + return nonce; +} diff --git a/src/sidebar/MarkdownLibraryTreeProvider.ts b/src/sidebar/MarkdownLibraryTreeProvider.ts new file mode 100644 index 0000000..82bfd37 --- /dev/null +++ b/src/sidebar/MarkdownLibraryTreeProvider.ts @@ -0,0 +1,129 @@ +import * as vscode from "vscode"; +import { localizeIssue, t } from "../i18n"; +import { + buildMarkdownWorkspaceTree, + MarkdownWorkspaceFile, + MarkdownWorkspaceTreeNode +} from "./markdownWorkspace"; +import { MarkdownWorkspaceIndex } from "./MarkdownWorkspaceIndex"; + +export const SUPER_MARKDOWN_MARKDOWN_LIBRARY_VIEW_ID = "superMarkdown.markdownLibrary"; + +export class MarkdownLibraryTreeProvider implements vscode.TreeDataProvider, vscode.Disposable { + private readonly changeEmitter = new vscode.EventEmitter(); + private readonly disposables: vscode.Disposable[] = []; + + readonly onDidChangeTreeData = this.changeEmitter.event; + + constructor(private readonly index: MarkdownWorkspaceIndex) { + this.disposables.push(this.index.onDidChange(() => this.changeEmitter.fire())); + } + + refresh(): void { + this.changeEmitter.fire(); + } + + getTreeItem(element: MarkdownWorkspaceTreeNode): vscode.TreeItem { + if (element.type === "file") { + return this.getFileTreeItem(element.file); + } + + const item = new vscode.TreeItem(element.name, vscode.TreeItemCollapsibleState.Expanded); + item.id = element.id; + item.contextValue = element.type === "workspace" ? "superMarkdown.workspaceFolder" : "superMarkdown.directory"; + item.iconPath = new vscode.ThemeIcon(element.type === "workspace" ? "root-folder" : "folder"); + return item; + } + + getChildren(element?: MarkdownWorkspaceTreeNode): MarkdownWorkspaceTreeNode[] { + if (element) { + return element.children; + } + + const workspaceFolderCount = vscode.workspace.workspaceFolders?.length ?? 0; + return buildMarkdownWorkspaceTree(this.index.getFiles(), { multiRoot: workspaceFolderCount > 1 }); + } + + getEmptyMessage(): string { + if ((vscode.workspace.workspaceFolders?.length ?? 0) === 0) { + return t("sidebar.markdownLibrary.noWorkspace"); + } + if (this.index.getFiles().length === 0) { + return t("sidebar.markdownLibrary.noFiles"); + } + return ""; + } + + dispose(): void { + this.disposables.splice(0).forEach((disposable) => disposable.dispose()); + this.changeEmitter.dispose(); + } + + private getFileTreeItem(file: MarkdownWorkspaceFile): vscode.TreeItem { + const item = new vscode.TreeItem(file.title || file.filename, vscode.TreeItemCollapsibleState.None); + item.id = file.uriString; + item.resourceUri = vscode.Uri.parse(file.uriString); + item.contextValue = "superMarkdown.markdownFile"; + item.description = this.formatFileDescription(file); + item.tooltip = this.formatFileTooltip(file); + item.iconPath = new vscode.ThemeIcon(this.getFileIcon(file)); + item.command = { + command: "superMarkdown.openEditor", + title: t("sidebar.markdownLibrary.open"), + arguments: [vscode.Uri.parse(file.uriString)] + }; + return item; + } + + private getFileIcon(file: MarkdownWorkspaceFile): string { + if (file.stats.errorCount > 0) { + return "error"; + } + if (file.stats.warningCount > 0) { + return "warning"; + } + return "markdown"; + } + + private formatFileDescription(file: MarkdownWorkspaceFile): string { + const parts: string[] = []; + if (file.stats.issueCount > 0) { + parts.push(t("sidebar.markdownLibrary.issues", file.stats.issueCount)); + } + if (file.stats.uncheckedTaskCount > 0) { + parts.push(t("sidebar.markdownLibrary.tasks", file.stats.uncheckedTaskCount)); + } + if (file.stats.imageCount > 0) { + parts.push(t("sidebar.markdownLibrary.images", file.stats.imageCount)); + } + if (file.stats.linkCount > 0) { + parts.push(t("sidebar.markdownLibrary.links", file.stats.linkCount)); + } + return parts.length > 0 ? parts.join(" · ") : t("sidebar.markdownLibrary.ok"); + } + + private formatFileTooltip(file: MarkdownWorkspaceFile): vscode.MarkdownString { + const lines = [ + `**${file.title || file.filename}**`, + "", + file.relativePath, + "", + `- ${t("sidebar.markdownLibrary.headings", file.stats.headingCount)}`, + `- ${t("sidebar.markdownLibrary.issues", file.stats.issueCount)}`, + `- ${t("sidebar.markdownLibrary.tasks", file.stats.uncheckedTaskCount)}`, + `- ${t("sidebar.markdownLibrary.images", file.stats.imageCount)}`, + `- ${t("sidebar.markdownLibrary.links", file.stats.linkCount)}` + ]; + + for (const issue of file.issues.slice(0, 5)) { + const line = issue.line === undefined ? "" : ` ${t("health.issueLine", issue.line + 1)}`; + lines.push(`- ${issue.severity.toUpperCase()}${line}: ${localizeIssue(issue)}`); + } + + if (file.issues.length > 5) { + lines.push(`- ${t("sidebar.markdownLibrary.moreIssues", file.issues.length - 5)}`); + } + + return new vscode.MarkdownString(lines.join("\n")); + } +} diff --git a/src/sidebar/MarkdownWorkspaceIndex.ts b/src/sidebar/MarkdownWorkspaceIndex.ts new file mode 100644 index 0000000..743925d --- /dev/null +++ b/src/sidebar/MarkdownWorkspaceIndex.ts @@ -0,0 +1,160 @@ +import * as path from "node:path"; +import * as vscode from "vscode"; +import { getPreviewSettings } from "../config"; +import { analyzeMarkdownHealth } from "../markdown/health"; +import { parseMarkdownResourceTarget } from "../markdown/resource"; +import { + aggregateMarkdownWorkspaceSummary, + analyzeMarkdownWorkspaceText, + isExcludedMarkdownWorkspacePath, + isMarkdownWorkspacePath, + MARKDOWN_WORKSPACE_EXTENSIONS, + MarkdownWorkspaceFile, + MarkdownWorkspaceSummary +} from "./markdownWorkspace"; + +const MARKDOWN_FIND_EXCLUDE = "{**/.git/**,**/node_modules/**,**/out/**,**/dist/**}"; + +export class MarkdownWorkspaceIndex implements vscode.Disposable { + private readonly changeEmitter = new vscode.EventEmitter(); + private readonly entries = new Map(); + private refreshVersion = 0; + + readonly onDidChange = this.changeEmitter.event; + + async refresh(): Promise { + const version = ++this.refreshVersion; + const uris = await this.findMarkdownUris(); + const analyzed = await Promise.all(uris.map((uri) => this.analyzeUri(uri))); + + if (version !== this.refreshVersion) { + return; + } + + this.entries.clear(); + for (const entry of analyzed) { + if (entry) { + this.entries.set(entry.uriString, entry); + } + } + this.changeEmitter.fire(); + } + + async refreshFile(uri: vscode.Uri): Promise { + if (!this.shouldIncludeUri(uri)) { + this.removeFile(uri); + return; + } + + const entry = await this.analyzeUri(uri); + if (entry) { + this.entries.set(entry.uriString, entry); + } else { + this.entries.delete(uri.toString()); + } + this.changeEmitter.fire(); + } + + removeFile(uri: vscode.Uri): void { + if (this.entries.delete(uri.toString())) { + this.changeEmitter.fire(); + } + } + + getFiles(): MarkdownWorkspaceFile[] { + return Array.from(this.entries.values()).sort((a, b) => + `${a.workspaceFolderName}/${a.relativePath}`.localeCompare(`${b.workspaceFolderName}/${b.relativePath}`, undefined, { + sensitivity: "base" + }) + ); + } + + getSummary(): MarkdownWorkspaceSummary { + return aggregateMarkdownWorkspaceSummary(this.getFiles()); + } + + dispose(): void { + this.changeEmitter.dispose(); + } + + private async findMarkdownUris(): Promise { + const found = await Promise.all( + MARKDOWN_WORKSPACE_EXTENSIONS.map((extension) => + vscode.workspace.findFiles(`**/*${extension}`, MARKDOWN_FIND_EXCLUDE) + ) + ); + const seen = new Set(); + return found + .flat() + .filter((uri) => { + const key = uri.toString(); + if (seen.has(key) || !this.shouldIncludeUri(uri)) { + return false; + } + seen.add(key); + return true; + }); + } + + private shouldIncludeUri(uri: vscode.Uri): boolean { + if (!isMarkdownWorkspacePath(uri.fsPath)) { + return false; + } + const folder = vscode.workspace.getWorkspaceFolder(uri); + if (!folder) { + return false; + } + const relativePath = path.relative(folder.uri.fsPath, uri.fsPath); + return !isExcludedMarkdownWorkspacePath(relativePath); + } + + private async analyzeUri(uri: vscode.Uri): Promise { + const folder = vscode.workspace.getWorkspaceFolder(uri); + if (!folder || !this.shouldIncludeUri(uri)) { + return undefined; + } + + try { + const bytes = await vscode.workspace.fs.readFile(uri); + const text = new TextDecoder("utf-8").decode(bytes); + const relativePath = path.relative(folder.uri.fsPath, uri.fsPath).replace(/\\/g, "/"); + const filename = path.basename(uri.fsPath); + const issues = await analyzeMarkdownHealth(text, { + levels: getPreviewSettings().tocLevels, + fileExists: async (target) => this.fileExistsNear(uri, target) + }); + const analyzed = analyzeMarkdownWorkspaceText(text, filename, issues); + + return { + uriString: uri.toString(), + workspaceFolderName: folder.name, + relativePath, + filename, + title: analyzed.title, + stats: analyzed.stats, + issues, + updatedAt: Date.now() + }; + } catch { + return undefined; + } + } + + private async fileExistsNear(documentUri: vscode.Uri, target: string): Promise { + if (documentUri.scheme !== "file") { + return false; + } + + const resource = parseMarkdownResourceTarget(target, documentUri.fsPath); + const absolutePath = resource.absolutePath ?? (path.isAbsolute(resource.decodedPath) + ? resource.decodedPath + : path.resolve(path.dirname(documentUri.fsPath), resource.decodedPath)); + + try { + await vscode.workspace.fs.stat(vscode.Uri.file(absolutePath)); + return true; + } catch { + return false; + } + } +} diff --git a/src/sidebar/WorkspaceSummaryViewProvider.ts b/src/sidebar/WorkspaceSummaryViewProvider.ts new file mode 100644 index 0000000..9b9bca4 --- /dev/null +++ b/src/sidebar/WorkspaceSummaryViewProvider.ts @@ -0,0 +1,413 @@ +import * as vscode from "vscode"; +import { getWysiwygSettings } from "../config"; +import { t } from "../i18n"; +import { escapeAttribute, escapeHtml, escapeJsonForScript } from "../utils/html"; +import { MarkdownWorkspaceIndex } from "./MarkdownWorkspaceIndex"; + +export const SUPER_MARKDOWN_WORKSPACE_SUMMARY_VIEW_ID = "superMarkdown.workspaceSummary"; + +type WorkspaceSummaryMessage = + | { type: "ready" } + | { type: "refresh" } + | { type: "openSyntaxGuide" } + | { type: "switchBackgroundTheme" } + | { type: "saveImageDirectory"; value?: unknown }; + +export class WorkspaceSummaryViewProvider implements vscode.WebviewViewProvider, vscode.Disposable { + private view?: vscode.WebviewView; + private readonly disposables: vscode.Disposable[] = []; + private readonly viewDisposables: vscode.Disposable[] = []; + + constructor(private readonly index: MarkdownWorkspaceIndex) { + this.disposables.push( + this.index.onDidChange(() => this.postState()), + vscode.workspace.onDidChangeConfiguration((event) => { + if (event.affectsConfiguration("superMarkdown.displayLanguage")) { + this.refresh(); + return; + } + if (event.affectsConfiguration("superMarkdown.wysiwyg.imageDirectory")) { + this.postState(); + } + }) + ); + } + + resolveWebviewView(webviewView: vscode.WebviewView): void { + this.view = webviewView; + this.viewDisposables.splice(0).forEach((disposable) => disposable.dispose()); + this.updateTitle(); + webviewView.webview.options = { enableScripts: true }; + webviewView.webview.html = this.render(webviewView.webview); + this.viewDisposables.push( + webviewView.webview.onDidReceiveMessage((message: WorkspaceSummaryMessage) => { + switch (message.type) { + case "ready": + this.postState(); + break; + case "refresh": + void this.refreshIndex(); + break; + case "openSyntaxGuide": + void vscode.commands.executeCommand("superMarkdown.openSyntaxGuide"); + break; + case "switchBackgroundTheme": + void vscode.commands.executeCommand("superMarkdown.switchBackgroundTheme"); + break; + case "saveImageDirectory": + void this.saveImageDirectory(message.value); + break; + } + }) + ); + } + + dispose(): void { + this.disposables.splice(0).forEach((disposable) => disposable.dispose()); + this.viewDisposables.splice(0).forEach((disposable) => disposable.dispose()); + } + + private refresh(): void { + if (this.view) { + this.updateTitle(); + this.view.webview.html = this.render(this.view.webview); + this.postState(); + } + } + + private updateTitle(): void { + if (this.view) { + this.view.title = t("sidebar.workspaceSummary.title"); + } + } + + private async refreshIndex(): Promise { + this.postState(t("sidebar.workspaceSummary.refreshing")); + await this.index.refresh(); + this.postState(t("sidebar.workspaceSummary.refreshed")); + } + + private postState(status?: string, error?: string): void { + void this.view?.webview.postMessage({ + type: "workspaceSummaryState", + summary: this.index.getSummary(), + imageDirectory: this.getImageDirectory(), + hasWorkspace: (vscode.workspace.workspaceFolders?.length ?? 0) > 0, + status, + error + }); + } + + private async saveImageDirectory(rawValue: unknown): Promise { + const value = typeof rawValue === "string" ? normalizeImageDirectory(rawValue) : "assets"; + try { + const target = vscode.workspace.workspaceFolders?.length + ? vscode.ConfigurationTarget.Workspace + : vscode.ConfigurationTarget.Global; + await vscode.workspace.getConfiguration("superMarkdown").update("wysiwyg.imageDirectory", value, target); + this.postState(t("sidebar.workspaceSummary.saved")); + } catch (error) { + this.postState(undefined, `${t("sidebar.workspaceSummary.failed")}: ${formatError(error)}`); + } + } + + private getImageDirectory(): string { + return normalizeImageDirectory(getWysiwygSettings().imageDirectory); + } + + private render(webview: vscode.Webview): string { + const nonce = createNonce(); + const payload = escapeJsonForScript(JSON.stringify({ + labels: { + title: t("sidebar.workspaceSummary.title"), + files: t("sidebar.workspaceSummary.files"), + issues: t("sidebar.workspaceSummary.issues"), + missingImages: t("sidebar.workspaceSummary.missingImages"), + missingLinks: t("sidebar.workspaceSummary.missingLinks"), + tasks: t("sidebar.workspaceSummary.tasks"), + staleToc: t("sidebar.workspaceSummary.staleToc"), + images: t("sidebar.workspaceSummary.images"), + links: t("sidebar.workspaceSummary.links"), + actions: t("sidebar.workspaceSummary.actions"), + refresh: t("sidebar.workspaceSummary.refresh"), + refreshing: t("sidebar.workspaceSummary.refreshing"), + syntaxGuide: t("sidebar.workspaceSummary.syntaxGuide"), + theme: t("sidebar.workspaceSummary.theme"), + assets: t("sidebar.workspaceSummary.assets"), + directory: t("sidebar.workspaceSummary.directory"), + placeholder: "assets", + save: t("webview.save"), + saving: t("sidebar.workspaceSummary.saving"), + noWorkspace: t("sidebar.workspaceSummary.noWorkspace") + } + })); + + return ` + + + + + + ${escapeHtml(t("sidebar.workspaceSummary.title"))} + + + +
+

+
+
+

+ + + +
+
+

+ +
+ + +
+
+
+
+ + + +`; + } +} + +function normalizeImageDirectory(value: string): string { + const trimmed = value.trim().replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, ""); + return trimmed || "assets"; +} + +function formatError(error: unknown): string { + return error instanceof Error ? error.message : String(error); +} + +function createNonce(): string { + const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + return Array.from({ length: 32 }, () => chars[Math.floor(Math.random() * chars.length)]).join(""); +} diff --git a/src/sidebar/markdownWorkspace.ts b/src/sidebar/markdownWorkspace.ts new file mode 100644 index 0000000..02b731f --- /dev/null +++ b/src/sidebar/markdownWorkspace.ts @@ -0,0 +1,242 @@ +import * as path from "node:path"; +import { DocumentIssue } from "../types"; +import { countUncheckedTasks } from "../markdown/health"; +import { extractInlineLinks } from "../markdown/inline"; +import { extractHeadings } from "../markdown/outline"; + +export const MARKDOWN_WORKSPACE_EXTENSIONS = [".md", ".markdown", ".mdown", ".mkdn"] as const; +export const MARKDOWN_WORKSPACE_EXCLUDED_DIRECTORIES = [".git", "node_modules", "out", "dist"] as const; + +export interface MarkdownWorkspaceFileStats { + headingCount: number; + issueCount: number; + errorCount: number; + warningCount: number; + infoCount: number; + uncheckedTaskCount: number; + imageCount: number; + linkCount: number; + brokenImageCount: number; + brokenLinkCount: number; + staleToc: boolean; +} + +export interface MarkdownWorkspaceFile { + uriString: string; + workspaceFolderName: string; + relativePath: string; + filename: string; + title: string; + stats: MarkdownWorkspaceFileStats; + issues: DocumentIssue[]; + updatedAt: number; +} + +export interface MarkdownWorkspaceSummary { + fileCount: number; + issueCount: number; + errorCount: number; + warningCount: number; + infoCount: number; + uncheckedTaskCount: number; + imageCount: number; + linkCount: number; + brokenImageCount: number; + brokenLinkCount: number; + staleTocFileCount: number; +} + +export type MarkdownWorkspaceTreeNode = + | { + type: "workspace" | "directory"; + id: string; + name: string; + children: MarkdownWorkspaceTreeNode[]; + } + | { + type: "file"; + id: string; + name: string; + file: MarkdownWorkspaceFile; + children: []; + }; + +export function isMarkdownWorkspacePath(filename: string): boolean { + return MARKDOWN_WORKSPACE_EXTENSIONS.includes(path.extname(filename).toLowerCase() as typeof MARKDOWN_WORKSPACE_EXTENSIONS[number]); +} + +export function isExcludedMarkdownWorkspacePath(relativePath: string): boolean { + const segments = normalizeRelativePath(relativePath).split("/").filter(Boolean); + return segments.some((segment) => MARKDOWN_WORKSPACE_EXCLUDED_DIRECTORIES.includes(segment as typeof MARKDOWN_WORKSPACE_EXCLUDED_DIRECTORIES[number])); +} + +export function analyzeMarkdownWorkspaceText( + text: string, + fallbackTitle: string, + issues: readonly DocumentIssue[] +): { title: string; stats: MarkdownWorkspaceFileStats } { + const headings = extractHeadings(text, { levels: new Set([1, 2, 3, 4, 5, 6]) }); + const h1 = headings.find((heading) => heading.level === 1); + const firstHeading = h1 ?? headings[0]; + const resources = countMarkdownResources(text); + const issueCounts = countIssues(issues); + + return { + title: firstHeading?.text || fallbackTitle, + stats: { + headingCount: headings.length, + issueCount: issues.length, + ...issueCounts, + uncheckedTaskCount: countUncheckedTasks(text), + imageCount: resources.imageCount, + linkCount: resources.linkCount, + brokenImageCount: issues.filter((issue) => issue.code === "broken-image").length, + brokenLinkCount: issues.filter((issue) => issue.code === "broken-link").length, + staleToc: issues.some((issue) => issue.code === "stale-toc") + } + }; +} + +export function aggregateMarkdownWorkspaceSummary(files: readonly MarkdownWorkspaceFile[]): MarkdownWorkspaceSummary { + return files.reduce( + (summary, file) => ({ + fileCount: summary.fileCount + 1, + issueCount: summary.issueCount + file.stats.issueCount, + errorCount: summary.errorCount + file.stats.errorCount, + warningCount: summary.warningCount + file.stats.warningCount, + infoCount: summary.infoCount + file.stats.infoCount, + uncheckedTaskCount: summary.uncheckedTaskCount + file.stats.uncheckedTaskCount, + imageCount: summary.imageCount + file.stats.imageCount, + linkCount: summary.linkCount + file.stats.linkCount, + brokenImageCount: summary.brokenImageCount + file.stats.brokenImageCount, + brokenLinkCount: summary.brokenLinkCount + file.stats.brokenLinkCount, + staleTocFileCount: summary.staleTocFileCount + (file.stats.staleToc ? 1 : 0) + }), + { + fileCount: 0, + issueCount: 0, + errorCount: 0, + warningCount: 0, + infoCount: 0, + uncheckedTaskCount: 0, + imageCount: 0, + linkCount: 0, + brokenImageCount: 0, + brokenLinkCount: 0, + staleTocFileCount: 0 + } + ); +} + +export function buildMarkdownWorkspaceTree( + files: readonly MarkdownWorkspaceFile[], + options: { multiRoot: boolean } +): MarkdownWorkspaceTreeNode[] { + const roots = new Map(); + + for (const file of files) { + const rootKey = options.multiRoot ? file.workspaceFolderName : ""; + const root = getOrCreateNode(roots, `workspace:${rootKey}`, rootKey, "workspace"); + let children = options.multiRoot ? root.children : getVirtualSingleRoot(roots).children; + const segments = normalizeRelativePath(file.relativePath).split("/").filter(Boolean); + + for (const segment of segments.slice(0, -1)) { + const id = `${root.id}/${segment}`; + const directory = getOrCreateDirectoryNode(children, id, segment); + children = directory.children; + } + + const filename = segments[segments.length - 1] || file.filename; + children.push({ + type: "file", + id: `${root.id}/${file.relativePath}`, + name: filename, + file, + children: [] + }); + } + + const nodes = options.multiRoot + ? Array.from(roots.values()) + : getVirtualSingleRoot(roots).children; + return sortTreeNodes(nodes); +} + +export function normalizeRelativePath(value: string): string { + return value.replace(/\\/g, "/").replace(/^\/+/, "").replace(/\/+$/, ""); +} + +function countMarkdownResources(text: string): { imageCount: number; linkCount: number } { + const links = text.split(/\r?\n/).flatMap((line) => extractInlineLinks(line)); + return { + imageCount: links.filter((link) => link.image).length, + linkCount: links.filter((link) => !link.image).length + }; +} + +function countIssues(issues: readonly DocumentIssue[]): Pick { + return { + errorCount: issues.filter((issue) => issue.severity === "error").length, + warningCount: issues.filter((issue) => issue.severity === "warning").length, + infoCount: issues.filter((issue) => issue.severity === "info").length + }; +} + +function getVirtualSingleRoot(roots: Map): MarkdownWorkspaceTreeNode { + return getOrCreateNode(roots, "workspace:", "", "workspace"); +} + +function getOrCreateNode( + nodes: Map, + id: string, + name: string, + type: "workspace" | "directory" +): Extract { + const existing = nodes.get(id); + if (existing && existing.type !== "file") { + return existing; + } + + const node: Extract = { + type, + id, + name, + children: [] + }; + nodes.set(id, node); + return node; +} + +function getOrCreateDirectoryNode( + children: MarkdownWorkspaceTreeNode[], + id: string, + name: string +): Extract { + const existing = children.find((child) => child.id === id); + if (existing && existing.type !== "file") { + return existing; + } + + const node: Extract = { + type: "directory", + id, + name, + children: [] + }; + children.push(node); + return node; +} + +function sortTreeNodes(nodes: MarkdownWorkspaceTreeNode[]): MarkdownWorkspaceTreeNode[] { + return nodes + .map((node) => node.type === "file" ? node : { ...node, children: sortTreeNodes(node.children) }) + .sort((a, b) => { + if (a.type === "file" && b.type !== "file") { + return 1; + } + if (a.type !== "file" && b.type === "file") { + return -1; + } + return a.name.localeCompare(b.name, undefined, { sensitivity: "base" }); + }); +} diff --git a/src/test/manifest.test.ts b/src/test/manifest.test.ts index bafc5c2..16d278b 100644 --- a/src/test/manifest.test.ts +++ b/src/test/manifest.test.ts @@ -26,6 +26,66 @@ suite("extension manifest", () => { }); }); + test("contributes the Markdown workspace library to the VS Code activity bar", () => { + const extensionSource = fs.readFileSync(path.join(root, "src", "extension.ts"), "utf8"); + const summaryProviderSource = fs.readFileSync(path.join(root, "src", "sidebar", "WorkspaceSummaryViewProvider.ts"), "utf8"); + const i18nSource = fs.readFileSync(path.join(root, "src", "i18n.ts"), "utf8"); + + assert.equal(manifest.activationEvents.includes("onView:superMarkdown.markdownLibrary"), true); + assert.equal(manifest.activationEvents.includes("onView:superMarkdown.workspaceSummary"), true); + assert.equal(manifest.activationEvents.includes("onCommand:superMarkdown.markdownLibrary.refresh"), true); + assert.deepEqual(manifest.contributes.viewsContainers.activitybar, [ + { + id: "superMarkdown", + title: "%superMarkdown.views.container%", + icon: "images/activity-bar-fold-m.svg" + } + ]); + assert.deepEqual(manifest.contributes.views.superMarkdown, [ + { + id: "superMarkdown.markdownLibrary", + name: "%superMarkdown.views.markdownLibrary%" + }, + { + id: "superMarkdown.workspaceSummary", + name: "%superMarkdown.views.workspaceSummary%", + type: "webview" + } + ]); + assert.equal(extensionSource.includes("markdownLibraryTreeView.title = t(\"sidebar.markdownLibrary.title\")"), true); + assert.equal(summaryProviderSource.includes("this.view.title = t(\"sidebar.workspaceSummary.title\")"), true); + assert.equal(i18nSource.includes("sidebar.markdownLibrary.title"), true); + assert.equal(i18nSource.includes("sidebar.workspaceSummary.title"), true); + }); + + test("wires Markdown library view menus to dedicated wrapper commands", () => { + const commandIds = manifest.contributes.commands.map((item: { command: string }) => item.command); + const viewTitleCommands = manifest.contributes.menus["view/title"] as Array<{ command?: string; when?: string }>; + const viewItemCommands = manifest.contributes.menus["view/item/context"] as Array<{ command?: string; when?: string }>; + + for (const command of [ + "superMarkdown.markdownLibrary.refresh", + "superMarkdown.markdownLibrary.openEditor", + "superMarkdown.markdownLibrary.openPreview", + "superMarkdown.markdownLibrary.openSplitEditMode", + "superMarkdown.markdownLibrary.openWysiwygEditor", + "superMarkdown.markdownLibrary.openNativeTextEditor", + "superMarkdown.markdownLibrary.organizeMarkdown", + "superMarkdown.markdownLibrary.export" + ]) { + assert.equal(commandIds.includes(command), true); + } + + assert.deepEqual( + viewTitleCommands.map((item) => item.when), + ["view == superMarkdown.markdownLibrary", "view == superMarkdown.workspaceSummary"] + ); + assert.equal( + viewItemCommands.every((item) => item.when === "view == superMarkdown.markdownLibrary && viewItem == superMarkdown.markdownFile"), + true + ); + }); + test("declares limited Restricted Mode support for webview editing", () => { assert.deepEqual(manifest.capabilities.untrustedWorkspaces.supported, "limited"); assert.match(manifest.capabilities.untrustedWorkspaces.description, /split scroll sync/); @@ -90,6 +150,29 @@ suite("extension manifest", () => { } }); + test("declares display language switching consistently", () => { + const commandIds = manifest.contributes.commands.map((item: { command: string }) => item.command); + const packageNls = JSON.parse(fs.readFileSync(path.join(root, "package.nls.json"), "utf8")); + const packageZhNls = JSON.parse(fs.readFileSync(path.join(root, "package.nls.zh-cn.json"), "utf8")); + const i18nSource = fs.readFileSync(path.join(root, "src", "i18n.ts"), "utf8"); + const extensionSource = fs.readFileSync(path.join(root, "src", "extension.ts"), "utf8"); + + for (const command of [ + "superMarkdown.switchDisplayLanguage", + "superMarkdown.en.switchDisplayLanguage", + "superMarkdown.zhCN.switchDisplayLanguage" + ]) { + assert.equal(manifest.activationEvents.includes(`onCommand:${command}`), true); + assert.equal(commandIds.includes(command), true); + } + assert.equal(packageNls["superMarkdown.command.switchDisplayLanguage"] !== undefined, true); + assert.equal(packageZhNls["superMarkdown.command.switchDisplayLanguage"] !== undefined, true); + assert.equal(i18nSource.includes("language.auto.label"), true); + assert.equal(i18nSource.includes("language.zhCN.label"), true); + assert.equal(i18nSource.includes("language.en.label"), true); + assert.equal(extensionSource.includes("superMarkdown.switchDisplayLanguage"), true); + }); + test("keeps the editor title context menu aligned with Markdown mode actions", () => { const titleContextItems = manifest.contributes.menus["editor/title/context"] as Array<{ command?: string; diff --git a/src/test/markdownWorkspace.test.ts b/src/test/markdownWorkspace.test.ts new file mode 100644 index 0000000..7141447 --- /dev/null +++ b/src/test/markdownWorkspace.test.ts @@ -0,0 +1,105 @@ +import * as assert from "node:assert/strict"; +import { + aggregateMarkdownWorkspaceSummary, + analyzeMarkdownWorkspaceText, + buildMarkdownWorkspaceTree, + isExcludedMarkdownWorkspacePath, + isMarkdownWorkspacePath, + MarkdownWorkspaceFile +} from "../sidebar/markdownWorkspace"; +import { DocumentIssue } from "../types"; + +suite("markdown workspace sidebar", () => { + test("matches Markdown extensions and excludes common generated directories", () => { + assert.equal(isMarkdownWorkspacePath("README.md"), true); + assert.equal(isMarkdownWorkspacePath("guide.MARKDOWN"), true); + assert.equal(isMarkdownWorkspacePath("notes.txt"), false); + assert.equal(isExcludedMarkdownWorkspacePath("docs/readme.md"), false); + assert.equal(isExcludedMarkdownWorkspacePath("node_modules/pkg/readme.md"), true); + assert.equal(isExcludedMarkdownWorkspacePath("packages/app/dist/readme.md"), true); + }); + + test("analyzes document title, resources, tasks, and issue counts", () => { + const issues: DocumentIssue[] = [ + { severity: "warning", code: "stale-toc", message: "stale" }, + { severity: "error", code: "broken-image", message: "missing", target: "missing.png" } + ]; + const result = analyzeMarkdownWorkspaceText( + "# Product Guide\n\n![Logo](missing.png)\n[Home](../README.md)\n- [ ] ship it", + "fallback.md", + issues + ); + + assert.equal(result.title, "Product Guide"); + assert.equal(result.stats.headingCount, 1); + assert.equal(result.stats.issueCount, 2); + assert.equal(result.stats.errorCount, 1); + assert.equal(result.stats.warningCount, 1); + assert.equal(result.stats.uncheckedTaskCount, 1); + assert.equal(result.stats.imageCount, 1); + assert.equal(result.stats.linkCount, 1); + assert.equal(result.stats.brokenImageCount, 1); + assert.equal(result.stats.staleToc, true); + }); + + test("aggregates workspace summary and builds single-root directory trees", () => { + const files: MarkdownWorkspaceFile[] = [ + workspaceFile("docs/a.md", "A", { issueCount: 1, uncheckedTaskCount: 2, imageCount: 1 }), + workspaceFile("docs/nested/b.md", "B", { brokenLinkCount: 1, staleToc: true }), + workspaceFile("README.md", "Readme", { linkCount: 3 }) + ]; + + const summary = aggregateMarkdownWorkspaceSummary(files); + const tree = buildMarkdownWorkspaceTree(files, { multiRoot: false }); + + assert.equal(summary.fileCount, 3); + assert.equal(summary.issueCount, 1); + assert.equal(summary.uncheckedTaskCount, 2); + assert.equal(summary.brokenLinkCount, 1); + assert.equal(summary.staleTocFileCount, 1); + assert.deepEqual(tree.map((node) => node.name), ["docs", "README.md"]); + assert.equal(tree[0].type, "directory"); + assert.deepEqual(tree[0].children.map((node) => node.name), ["nested", "a.md"]); + }); + + test("groups tree roots by workspace folder when multiple roots are open", () => { + const files = [ + workspaceFile("a.md", "A", {}, "docs"), + workspaceFile("b.md", "B", {}, "notes") + ]; + const tree = buildMarkdownWorkspaceTree(files, { multiRoot: true }); + + assert.deepEqual(tree.map((node) => node.name), ["docs", "notes"]); + }); +}); + +function workspaceFile( + relativePath: string, + title: string, + stats: Partial, + workspaceFolderName = "workspace" +): MarkdownWorkspaceFile { + return { + uriString: `file:///${relativePath}`, + workspaceFolderName, + relativePath, + filename: relativePath.split("/").pop() || relativePath, + title, + issues: [], + updatedAt: 0, + stats: { + headingCount: 0, + issueCount: 0, + errorCount: 0, + warningCount: 0, + infoCount: 0, + uncheckedTaskCount: 0, + imageCount: 0, + linkCount: 0, + brokenImageCount: 0, + brokenLinkCount: 0, + staleToc: false, + ...stats + } + }; +} diff --git a/src/test/wysiwygAssets.test.ts b/src/test/wysiwygAssets.test.ts index 37974f2..217d2bc 100644 --- a/src/test/wysiwygAssets.test.ts +++ b/src/test/wysiwygAssets.test.ts @@ -94,6 +94,7 @@ suite("visual editor assets", () => { "help", "organizeMarkdown", "switchBackgroundTheme", + "switchDisplayLanguage", "toc" ]); assert.equal(SUPER_MARKDOWN_ISSUES_URL, "https://github.com/SivanCola/super-markdown/issues"); @@ -105,6 +106,7 @@ suite("visual editor assets", () => { assert.match(renderToolbarIcon("inline-code"), /codicon-code/); assert.match(renderToolbarIcon("switchBackgroundTheme"), /codicon-color-mode/); + assert.match(renderToolbarIcon("switchDisplayLanguage"), /codicon-globe/); assert.match(renderToolbarIcon("underline"), /toolbar-custom-icon/); assert.match(renderToolbarIcon("math"), /toolbar-custom-icon/); assert.match(renderToolbarIcon("mermaid"), /toolbar-custom-icon/); diff --git a/src/wysiwyg/SuperMarkdownWysiwygEditorProvider.ts b/src/wysiwyg/SuperMarkdownWysiwygEditorProvider.ts index 6bf9c18..e605d92 100644 --- a/src/wysiwyg/SuperMarkdownWysiwygEditorProvider.ts +++ b/src/wysiwyg/SuperMarkdownWysiwygEditorProvider.ts @@ -258,6 +258,9 @@ export class SuperMarkdownWysiwygEditorProvider implements vscode.CustomTextEdit const initialMode = normalizeEditorMode(normalizedOptions.mode ?? settings.defaultMode); const initialLayout = normalizeEditorLayout(normalizedOptions.layout ?? settings.layout); const isZhCn = previewSettings.activeLanguage === "zh-CN"; + const outlineRevealCurrentLabel = t("webview.revealCurrentHeading"); + const outlineCollapseLabel = t("webview.collapseOutline"); + const splitResizeLabel = t("webview.resizeSplit"); const payload = escapeJsonForScript(JSON.stringify({ text: document.getText(), mode: initialMode, @@ -280,9 +283,12 @@ export class SuperMarkdownWysiwygEditorProvider implements vscode.CustomTextEdit mathEdit: isZhCn ? "编辑" : "Edit", mathDone: isZhCn ? "完成" : "Done", rawHtmlEscaped: isZhCn ? "原始 HTML 已转义" : "Raw HTML escaped", + footnote: t("webview.footnote"), outline: t("webview.headings"), preview: t("webview.markdownPreview"), noHeadings: t("webview.noHeadings"), + outlineRevealCurrent: outlineRevealCurrentLabel, + outlineCollapse: outlineCollapseLabel, toolbar: { heading: isZhCn ? "标题" : "Heading", bold: isZhCn ? "加粗" : "Bold", @@ -308,6 +314,7 @@ export class SuperMarkdownWysiwygEditorProvider implements vscode.CustomTextEdit all: isZhCn ? "全部" : "All", more: isZhCn ? "更多" : "More", switchBackgroundTheme: isZhCn ? "切换阅读主题" : "Switch Reading Theme", + switchDisplayLanguage: isZhCn ? "切换界面语言" : "Switch display language", help: isZhCn ? "反馈问题" : "Report issue", organizeMarkdown: isZhCn ? "整理 Markdown" : "Organize Markdown" } @@ -337,14 +344,14 @@ export class SuperMarkdownWysiwygEditorProvider implements vscode.CustomTextEdit
-